diff options
Diffstat (limited to 'multimedia/vitunes-mplayer/multiuser.diff')
-rw-r--r-- | multimedia/vitunes-mplayer/multiuser.diff | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/multimedia/vitunes-mplayer/multiuser.diff b/multimedia/vitunes-mplayer/multiuser.diff new file mode 100644 index 0000000000000..cb0b5eedf2613 --- /dev/null +++ b/multimedia/vitunes-mplayer/multiuser.diff @@ -0,0 +1,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; |