diff options
author | Lennart Poettering <lennart@poettering.net> | 2009-09-17 20:58:36 +0200 |
---|---|---|
committer | Lennart Poettering <lennart@poettering.net> | 2009-09-17 20:58:36 +0200 |
commit | 2d9168ceb388cbb6dba49cc3a531921f78ec3295 (patch) | |
tree | 7aeae7015c8da1d23b5d72a1af56dc3cbd9d8159 /src/utils/padsp.c | |
parent | 3de5c49e4289bb646919bdced6fccb82ced51ad0 (diff) |
Improve TMPDIR handling
Patch from 'jnelson',
http://pulseaudio.org/ticket/653
Diffstat (limited to 'src/utils/padsp.c')
-rw-r--r-- | src/utils/padsp.c | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/src/utils/padsp.c b/src/utils/padsp.c index 41bfd741..c8c0874d 100644 --- a/src/utils/padsp.c +++ b/src/utils/padsp.c @@ -1394,10 +1394,21 @@ static int sndstat_open(int flags, int *_errno) { "Mixers:\n" "0: PulseAudio Virtual OSS\n"; - char fn[] = "/tmp/padsp-sndstat-XXXXXX"; + char *fn; mode_t u; int fd = -1; int e; + const char *tmpdir; + + if (!(tmpdir = getenv("TMPDIR"))) + if (!(tmpdir = getenv("TMP"))) + if (!(tmpdir = getenv("TEMP"))) + tmpdir = getenv("TEMPDIR"); + + if (!tmpdir || !pa_is_path_absolute(tmpdir)) + tmpdir = "/tmp"; + + fn = pa_sprintf_malloc("%s" PA_PATH_SEP "padsp-sndstat-XXXXXX", tmpdir); debug(DEBUG_LEVEL_NORMAL, __FILE__": sndstat_open()\n"); @@ -1423,6 +1434,7 @@ static int sndstat_open(int flags, int *_errno) { } unlink(fn); + pa_xfree(fn); if (write(fd, sndstat, sizeof(sndstat) -1) != sizeof(sndstat)-1) { *_errno = errno; @@ -1439,6 +1451,7 @@ static int sndstat_open(int flags, int *_errno) { return fd; fail: + pa_xfree(fn); if (fd >= 0) close(fd); return -1; |