tServer Unix socket now includes the port number (for running multiple servers on one machine) - vaccinewars - be a doctor and try to vaccinate the world
 (HTM) git clone git://src.adamsgaard.dk/vaccinewars
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
 (DIR) commit 8f75f1bd80b636b71b665bf2b93d10c5adcdd511
 (DIR) parent a5c069e284df893a0023bf42591d3776fc34731a
 (HTM) Author: Ben Webb <ben@salilab.org>
       Date:   Thu,  8 Nov 2001 17:46:52 +0000
       
       Server Unix socket now includes the port number (for running multiple
       servers on one machine)
       
       
       Diffstat:
         M src/serverside.c                    |      25 ++++++++++++++++++++-----
       
       1 file changed, 20 insertions(+), 5 deletions(-)
       ---
 (DIR) diff --git a/src/serverside.c b/src/serverside.c
       t@@ -890,15 +890,27 @@ void RemovePlayerFromServer(Player *Play) {
        }
        
        #ifndef CYGWIN
       +static gchar sockdir[] = "/tmp/.dopewars/";
       +
       +static gchar *GetLocalSocket(void) {
       +  return g_strdup_printf("%ssocket-%u",sockdir,Port);
       +}
       +
        static void CloseLocalSocket(int localsock) {
       +  gchar *sockname;
       +
          if (localsock>=0) close(localsock);
       -  unlink("/tmp/.dopewars/socket");
       -  rmdir("/tmp/.dopewars");
       +
       +  sockname=GetLocalSocket();
       +  unlink(sockname);
       +  rmdir(sockdir);
       +  g_free(sockname);
        }
        
        static int SetupLocalSocket(void) {
          int sock;
          struct sockaddr_un addr;
       +  gchar *sockname;
        
          CloseLocalSocket(-1);
        
       t@@ -907,17 +919,20 @@ static int SetupLocalSocket(void) {
        
          SetBlocking(sock,FALSE);
        
       -  mkdir("/tmp/.dopewars",S_IRUSR|S_IWUSR|S_IXUSR);
       +  sockname=GetLocalSocket();
       +  mkdir(sockdir,S_IRUSR|S_IWUSR|S_IXUSR);
        
          addr.sun_family = AF_UNIX;
       -  strncpy(addr.sun_path,"/tmp/.dopewars/socket",sizeof(addr.sun_path));
       +  strncpy(addr.sun_path,sockname,sizeof(addr.sun_path));
          addr.sun_path[sizeof(addr.sun_path)-1]='\0';
        
          bind(sock,(struct sockaddr *)&addr,sizeof(struct sockaddr_un));
        
       -  chmod("/tmp/.dopewars/socket",S_IRUSR|S_IWUSR);
       +  chmod(sockname,S_IRUSR|S_IWUSR);
        
          listen(sock,10);
       +
       +  g_free(sockname);
          
          return sock;
        }