Improve TMPDIR handling
authorLennart Poettering <lennart@poettering.net>
Thu, 17 Sep 2009 18:58:36 +0000 (20:58 +0200)
committerLennart Poettering <lennart@poettering.net>
Thu, 17 Sep 2009 18:58:36 +0000 (20:58 +0200)
Patch from 'jnelson',

http://pulseaudio.org/ticket/653

src/pulsecore/core-util.c
src/utils/padsp.c

index 7a9f458..690f34c 100644 (file)
@@ -1390,7 +1390,7 @@ static char* make_random_dir(mode_t m) {
     if (!tmpdir || !pa_is_path_absolute(tmpdir))
         tmpdir = "/tmp";
 
-    fn = pa_sprintf_malloc("%s/pulse-XXXXXXXXXXXX", tmpdir);
+    fn = pa_sprintf_malloc("%s" PA_PATH_SEP "pulse-XXXXXXXXXXXX", tmpdir);
     pathlen = strlen(fn);
 
     for (;;) {
index 41bfd74..c8c0874 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;