summaryrefslogtreecommitdiffstats
path: root/multimedia/vitunes-mplayer/multiuser.diff
blob: cb0b5eedf261309fdc97d9d37edd49b1dc46f7a3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
diff -Naur vitunes-2.3/socket.c vitunes-2.3.patched/socket.c
--- vitunes-2.3/socket.c	2012-01-02 16:02:11.000000000 -0500
+++ vitunes-2.3.patched/socket.c	2012-11-25 12:12:05.000000000 -0500
@@ -19,13 +19,23 @@
 #include <sys/socket.h>
 #include <sys/un.h>
 #include <unistd.h>
+#include <pwd.h>
 
 #include "socket.h"
 #include "commands.h"
 
-#define VITUNES_SOCK    "/tmp/.vitunes"
+#define VITUNES_SOCK    "/tmp/.vitunes-%s"
 
 
+static char *get_user_name(void) {
+	struct passwd *ent;
+	ent = getpwuid(getuid());
+	if(ent)
+		return ent->pw_name;
+	else
+		return "unknown-user"; /* just in case */
+}
+
 int
 sock_send_msg(const char *msg)
 {
@@ -38,8 +48,8 @@
       return -1;
 
    addr.sun_family = AF_UNIX;
-   strcpy(addr.sun_path, VITUNES_SOCK);
-   addr_len = sizeof(addr.sun_family) + strlen(VITUNES_SOCK) + 1;
+   sprintf(addr.sun_path, VITUNES_SOCK, get_user_name());
+   addr_len = sizeof(addr.sun_family) + strlen(addr.sun_path) + 1;
 
    if(sendto(ret, msg, strlen(msg), 0, (struct sockaddr *) &addr, addr_len) == -1) {
       close(ret);
@@ -58,14 +68,14 @@
    socklen_t            addr_len;
    int                  coe = 1;
 
-   unlink(VITUNES_SOCK);
+   sprintf(addr.sun_path, VITUNES_SOCK, get_user_name());
+   unlink(addr.sun_path);
 
    if((ret = socket(AF_UNIX, SOCK_DGRAM, 0)) == -1)
       return -1;
 
    addr.sun_family = AF_UNIX;
-   strcpy(addr.sun_path, VITUNES_SOCK);
-   addr_len = sizeof(addr.sun_family) + strlen(VITUNES_SOCK) + 1;
+   addr_len = sizeof(addr.sun_family) + strlen(addr.sun_path) + 1;
 
    if(bind(ret, (struct sockaddr *) &addr, addr_len) == -1)
       return -1;