tFixes for new networking code with Windows Sockets - vaccinewars - be a doctor… | |
git clone git://src.adamsgaard.dk/vaccinewars | |
Log | |
Files | |
Refs | |
README | |
LICENSE | |
--- | |
commit 275f3dd7e8490d3e45d805a7ce1736d5d17f5d7d | |
parent df1ddce3e211ed4a7aa28dde40ef79dc44bd53b1 | |
Author: Ben Webb <[email protected]> | |
Date: Sun, 12 Nov 2000 15:16:29 +0000 | |
Fixes for new networking code with Windows Sockets | |
Diffstat: | |
M config.h.in | 3 +++ | |
M src/dopeos.c | 2 ++ | |
M src/dopeos.h | 5 +++++ | |
M src/message.c | 15 +++++++++++---- | |
M src/win32_client.c | 12 +++++++----- | |
5 files changed, 28 insertions(+), 9 deletions(-) | |
--- | |
diff --git a/config.h.in b/config.h.in | |
t@@ -99,6 +99,9 @@ | |
/* Define if you have the getcwd function. */ | |
#undef HAVE_GETCWD | |
+/* Define if you have the gethostbyname function. */ | |
+#undef HAVE_GETHOSTBYNAME | |
+ | |
/* Define if you have the getpagesize function. */ | |
#undef HAVE_GETPAGESIZE | |
diff --git a/src/dopeos.c b/src/dopeos.c | |
t@@ -274,6 +274,7 @@ int bselect(int nfds,fd_set *readfds,fd_set *writefds,fd_s… | |
} | |
#if NETWORKING | |
+int GetSocketError() { return WSAGetLastError(); } | |
void fcntl(SOCKET s,int fsetfl,long cmd) { | |
unsigned long param=1; | |
ioctlsocket(s,cmd,¶m); | |
t@@ -323,6 +324,7 @@ int bgetch() { | |
#endif | |
#if NETWORKING | |
+int GetSocketError() { return errno; } | |
void StartNetworking() {} | |
void StopNetworking() {} | |
void SetReuse(int sock) { | |
diff --git a/src/dopeos.h b/src/dopeos.h | |
t@@ -116,6 +116,7 @@ int bselect(int nfds,fd_set *readfds,fd_set *writefds,fd_s… | |
struct timeval *tm); | |
#if NETWORKING | |
+int GetSocketError(); | |
void fcntl(SOCKET s,int fsetfl,long cmd); | |
#define CloseSocket(sock) closesocket(sock) | |
void StartNetworking(); | |
t@@ -133,6 +134,7 @@ void SetReuse(SOCKET sock); | |
#include <arpa/inet.h> | |
#include <netdb.h> | |
#include <unistd.h> | |
+#include <errno.h> | |
#endif /* NETWORKING */ | |
/* Only include sys/wait.h on those systems which support it */ | |
t@@ -172,9 +174,12 @@ int bgetch(); | |
#if NETWORKING | |
#define CloseSocket(sock) close(sock) | |
+int GetSocketError(); | |
void StartNetworking(); | |
void StopNetworking(); | |
void SetReuse(int sock); | |
+#define WSAECONNRESET EPIPE | |
+#define WSAEWOULDBLOCK EINPROGRESS | |
#endif /* NETWORKING */ | |
#endif /* CYGWIN */ | |
diff --git a/src/message.c b/src/message.c | |
t@@ -29,12 +29,14 @@ | |
#include <fcntl.h> | |
#endif | |
+#ifndef CYGWIN | |
#include <sys/types.h> | |
#include <sys/socket.h> | |
+#endif | |
+ | |
#include <string.h> | |
#include <stdlib.h> | |
#include <glib.h> | |
-#include <errno.h> | |
#include "dopeos.h" | |
#include "dopewars.h" | |
#include "serverside.h" | |
t@@ -370,7 +372,7 @@ gboolean WriteConnectionBufferToWire(Player *Play) { | |
BytesSent=send(Play->fd,&conn->Data[CurrentPosition], | |
conn->DataPresent-CurrentPosition,0); | |
if (BytesSent==SOCKET_ERROR) { | |
- if (errno==EPIPE) return FALSE; | |
+ if (GetSocketError()==WSAECONNRESET) return FALSE; | |
break; | |
} else { | |
CurrentPosition+=BytesSent; | |
t@@ -704,7 +706,7 @@ char *SetupNetwork(gboolean NonBlocking) { | |
if (NonBlocking) fcntl(ClientSock,F_SETFL,O_NONBLOCK); | |
if (connect(ClientSock,(struct sockaddr *)&ClientAddr, | |
sizeof(struct sockaddr))==-1) { | |
- if (errno==EINPROGRESS) return NULL; | |
+ if (GetSocketError()==WSAEWOULDBLOCK) return NULL; | |
CloseSocket(ClientSock); | |
return NoConnect; | |
} else { | |
t@@ -715,9 +717,13 @@ char *SetupNetwork(gboolean NonBlocking) { | |
} | |
char *FinishSetupNetwork() { | |
- socklen_t optlen; | |
+#ifdef CYGWIN | |
+ Client=Network=TRUE; | |
+ return NULL; | |
+#else | |
int optval; | |
static char NoConnect[]= N_("Connection refused or no server present"); | |
+ socklen_t optlen; | |
optlen=sizeof(optval); | |
if (getsockopt(ClientSock,SOL_SOCKET,SO_ERROR,&optval,&optlen)==-1) { | |
t@@ -729,6 +735,7 @@ char *FinishSetupNetwork() { | |
} else { | |
return NoConnect; | |
} | |
+#endif | |
} | |
#endif /* NETWORKING */ | |
diff --git a/src/win32_client.c b/src/win32_client.c | |
t@@ -32,6 +32,7 @@ | |
#include "dopeos.h" | |
#include "dopewars.h" | |
+#include "tstring.h" | |
#include "curses_client.h" | |
#include "win32_client.h" | |
#include "message.h" | |
t@@ -95,6 +96,8 @@ static void DisplaySpyReports(Player *Play); | |
static void CreateStats(HWND hwnd,struct STATS *Stats, | |
gboolean CreateEdit,gboolean CreateButtons); | |
static void SizeStats(HWND hwnd,struct STATS *Stats,RECT *rect); | |
+static void SizeStats(HWND hwnd,struct STATS *Stats,RECT *rect); | |
+static void SizeStats(HWND hwnd,struct STATS *Stats,RECT *rect); | |
static void ShowStats(struct STATS *Stats,int State); | |
static void LogMessage(const gchar *log_domain,GLogLevelFlags log_level, | |
t@@ -104,7 +107,6 @@ static void LogMessage(const gchar *log_domain,GLogLevelFl… | |
} | |
static void DisplayStats(Player *Play,struct STATS *Stats) { | |
- gchar *prstr,*caps; | |
GString *text; | |
text=g_string_new(""); | |
t@@ -166,8 +168,8 @@ void UpdateInventory(HWND HereList,HWND CarriedList, | |
Player *Play; | |
gint i; | |
price_t price; | |
- gchar *name,*prstr,*text; | |
LRESULT addresult; | |
+ gchar *name,*text; | |
gboolean CanBuy=FALSE,CanSell=FALSE,CanDrop=FALSE; | |
Play=ClientData.Play; | |
t@@ -754,14 +756,15 @@ BOOL CALLBACK TransferWndProc(HWND hwnd,UINT msg,UINT wP… | |
static char Type; | |
HWND MoneyWnd; | |
int buflen; | |
+ gchar *prstr; | |
price_t money; | |
- gchar *text,*prstr; | |
+ gchar *text; | |
switch(msg) { | |
case WM_INITDIALOG: | |
Type=(char)lParam; | |
text=dpg_strdup_printf("Cash: %P",ClientData.Play->Cash); | |
SetDlgItemText(hwnd,ST_MONEY,text); | |
- g_free(text); g_free(prstr); | |
+ g_free(text); | |
if (Type==C_BANK) { | |
CheckDlgButton(hwnd,RB_WITHDRAW,BST_CHECKED); | |
text=dpg_strdup_printf("Bank: %P",ClientData.Play->Bank); | |
t@@ -1775,7 +1778,6 @@ int APIENTRY Win32Loop(HINSTANCE hInstance,HINSTANCE hPr… | |
while(GetMessage(&msg,NULL,0,0)) { | |
if ((!PlayerListWnd || !IsDialogMessage(PlayerListWnd,&msg)) && | |
(!TalkWnd || !IsDialogMessage(TalkWnd,&msg)) && | |
- (!InventoryWnd || !IsDialogMessage(InventoryWnd,&msg)) && | |
(!FightWnd || !IsDialogMessage(FightWnd,&msg)) && | |
(!GunShopWnd || !IsDialogMessage(GunShopWnd,&msg)) && | |
(!SpyReportsWnd || !IsDialogMessage(SpyReportsWnd,&msg)) && |