diff --git a/src/sbbs3/sbbscon.c b/src/sbbs3/sbbscon.c index c9b7ca8a527d6d3173e2413142076c3a5aca8589..d17741c5d7e3b1cddf4efeebd13d3bc32d9156ff 100644 --- a/src/sbbs3/sbbscon.c +++ b/src/sbbs3/sbbscon.c @@ -256,6 +256,37 @@ static BOOL do_seteuid(BOOL to_new) } #endif /* __unix__ */ +#ifdef _WINSOCKAPI_ + +WSADATA WSAData; + +static BOOL winsock_startup(void) +{ + int status; /* Status Code */ + + if((status = WSAStartup(MAKEWORD(1,1), &WSAData))==0) + return(TRUE); + + fprintf(stderr,"!WinSock startup ERROR %d\n", status); + return(FALSE); +} + +static BOOL winsock_cleanup(void) +{ + if(WSACleanup()==0) + return(TRUE); + + fprintf(stderr,"!WinSock cleanup ERROR %d\n",ERROR_VALUE); + return(FALSE); +} + +#else /* No WINSOCK */ + +#define winsock_startup() (TRUE) +#define winsock_cleanup() (TRUE) + +#endif + static void thread_up(BOOL up, BOOL setuid) { static pthread_mutex_t mutex; @@ -659,7 +690,7 @@ int main(int argc, char** argv) char* ctrl_dir; char str[MAX_PATH+1]; char ini_file[MAX_PATH+1]; - char host_name[128]; + char host_name[128]=""; BOOL quit=FALSE; FILE* fp=NULL; #ifdef __unix__ @@ -675,8 +706,14 @@ int main(int argc, char** argv) if(ctrl_dir==NULL) ctrl_dir="/sbbs/ctrl"; /* Not set? Use default */ + if(!winsock_startup()) + return(-1); + gethostname(host_name,sizeof(host_name)-1); + if(!winsock_cleanup()) + return(-1); + sprintf(ini_file,"%s%c%s.ini",ctrl_dir,BACKSLASH,host_name); if(!fexist(ini_file)) sprintf(ini_file,"%s%csbbs.ini",ctrl_dir,BACKSLASH);