]> code.delx.au - pulseaudio/blobdiff - src/utils/padsp.c
Improve TMPDIR handling
[pulseaudio] / src / utils / padsp.c
index 41bfd741e618e8ff20e55d26ae946cc92d32abb6..c8c0874da66b81250ade7e24b02cac5dd3cd44be 100644 (file)
@@ -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;