b44619b
--- esound-0.2.36.orig/util.c
b44619b
+++ esound-0.2.36/util.c
b44619b
@@ -5,6 +5,7 @@
b44619b
 #include <stdlib.h>
b44619b
 #include <string.h>
b44619b
 #include <unistd.h>
b44619b
+#include <stdio.h>
b44619b
 
b44619b
 /* Run-time check for IPv6 support */
b44619b
 int 
b44619b
@@ -23,22 +24,18 @@
b44619b
 const char*
b44619b
 esd_get_socket_dirname (void) 
b44619b
 {
b44619b
-	const char *audiodev;
b44619b
+	const char *audiodev = NULL;
b44619b
 	static char *dirname = NULL;
b44619b
 
b44619b
-	if (dirname == NULL) {
b44619b
-		if (!(audiodev = getenv("AUDIODEV"))) {
b44619b
-			audiodev = "";
b44619b
-		} else {
b44619b
-			char *newdev = strrchr(audiodev, '/');
b44619b
-			if (newdev != NULL) {
b44619b
-				audiodev = newdev++;
b44619b
-			}
b44619b
-		}
b44619b
-		dirname = malloc(strlen(audiodev) + sizeof("/tmp/.esd"));
b44619b
-		strcpy(dirname, "/tmp/.esd");
b44619b
-		strcat(dirname, audiodev);
b44619b
-	}
b44619b
+        if ((audiodev = getenv("AUDIODEV"))) {
b44619b
+                char *newdev = strrchr(audiodev, '/');
b44619b
+                if (newdev != NULL) {
b44619b
+                        audiodev = newdev++;
b44619b
+                }
b44619b
+        } else
b44619b
+            audiodev = "";
b44619b
+        dirname = malloc(strlen(audiodev) +  40);
b44619b
+        sprintf (dirname, "/tmp/.esd%s-%i", audiodev, getuid());
b44619b
 
b44619b
 	return dirname;
b44619b
 }