tAdded code to get username (for SOCKS4 CONNECT requests) under Win32 - 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 a281eabbbacadf5343bd655f36a5e5c300e5696b
 (DIR) parent 013c93d79269fed4dfce4b2aa3f6ab1af1d8ba07
 (HTM) Author: Ben Webb <ben@salilab.org>
       Date:   Fri, 12 Oct 2001 16:24:13 +0000
       
       Added code to get username (for SOCKS4 CONNECT requests) under Win32
       
       
       Diffstat:
         M configure                           |       2 +-
         M configure.in                        |       2 +-
         M src/network.c                       |      28 ++++++++++++++++++++++------
       
       3 files changed, 24 insertions(+), 8 deletions(-)
       ---
 (DIR) diff --git a/configure b/configure
       t@@ -3231,7 +3231,7 @@ EOF
        
                 
           CFLAGS="$CFLAGS -mwindows -fnative-struct -mno-cygwin"
       -   LIBS="$LIBS -lwsock32 -lcomctl32"
       +   LIBS="$LIBS -lwsock32 -lcomctl32 -lmpr"
        
              LDFLAGS="$LDFLAGS -lglib-1.3"
        
 (DIR) diff --git a/configure.in b/configure.in
       t@@ -50,7 +50,7 @@ if test "$CYGWIN" = "yes" ; then
           dnl that can happen is that "make" fails later on.
        
           CFLAGS="$CFLAGS -mwindows -fnative-struct -mno-cygwin"
       -   LIBS="$LIBS -lwsock32 -lcomctl32"
       +   LIBS="$LIBS -lwsock32 -lcomctl32 -lmpr"
        
           dnl Glib stuff
           LDFLAGS="$LDFLAGS -lglib-1.3"
 (DIR) diff --git a/src/network.c b/src/network.c
       t@@ -776,7 +776,10 @@ gboolean StartSocksNegotiation(NetworkBuffer *NetBuf,gchar *RemoteHost,
           guint addlen,i;
           struct in_addr *h_addr;
           unsigned short int netport;
       -#ifndef CYGWIN
       +#ifdef CYGWIN
       +   gchar *username=NULL;
       +   DWORD bufsize;
       +#else
           struct passwd *pwd;
        #endif
        
       t@@ -814,16 +817,28 @@ gboolean StartSocksNegotiation(NetworkBuffer *NetBuf,gchar *RemoteHost,
           he = LookupHostname(RemoteHost,&NetBuf->error);
           if (!he) return FALSE;
        
       -#ifndef CYGWIN
       +#ifdef CYGWIN
       +   bufsize=0;
       +   WNetGetUser(NULL,username,&bufsize);
       +   if (GetLastError()!=ERROR_MORE_DATA) {
       +     SetError(&NetBuf->error,ET_WIN32,GetLastError());
       +     return FALSE;
       +   } else {
       +     username=g_malloc(bufsize);
       +     if (WNetGetUser(NULL,username,&bufsize)!=NO_ERROR) {
       +       SetError(&NetBuf->error,ET_WIN32,GetLastError());
       +       return FALSE;
       +     }
       +   }
       +g_print("username %s\n",username);
       +   addlen=9+strlen(username);
       +#else
           pwd = getpwuid(getuid());
           if (!pwd || !pwd->pw_name) return FALSE;
        g_print("username %s\n",pwd->pw_name);
           addlen=9+strlen(pwd->pw_name);
       -#else
       -   addlen=13;
        #endif
        
       -
           h_addr = (struct in_addr *)he->h_addr;
           g_assert(sizeof(struct in_addr)==4);
        
       t@@ -840,7 +855,8 @@ g_print("username %s\n",pwd->pw_name);
           memcpy(&addpt[2],&netport,sizeof(netport));
           memcpy(&addpt[4],h_addr,sizeof(struct in_addr));
        #ifdef CYGWIN
       -   strcpy(&addpt[8],"user");
       +   strcpy(&addpt[8],username);
       +   g_free(username);
        #else
           strcpy(&addpt[8],pwd->pw_name);
        #endif