tFixes to compile properly when networking is disabled - 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 19ae1233f9890b07e39fe9b5468a2e0a814967e7
 (DIR) parent 5ea8f28c66b7d3ec785d0779ac9ce41f49754a79
 (HTM) Author: Ben Webb <ben@salilab.org>
       Date:   Sun, 17 Jun 2001 20:40:51 +0000
       
       Fixes to compile properly when networking is disabled
       
       
       Diffstat:
         M src/curses_client.c                 |      14 +++++++++++---
         M src/dopeos.h                        |       3 ++-
         M src/dopewars.c                      |      15 ++++++++++++++-
         M src/gtk_client.c                    |      69 ++++++++++++++++++++++---------
         M src/message.c                       |       4 ++++
         M src/message.h                       |       2 ++
         M src/serverside.c                    |       4 ++++
       
       7 files changed, 87 insertions(+), 24 deletions(-)
       ---
 (DIR) diff --git a/src/curses_client.c b/src/curses_client.c
       t@@ -44,7 +44,11 @@ static void PrintHighScore(char *Data);
        
        static int ResizedFlag;
        static SCREEN *cur_screen;
       +
       +#ifdef NETWORKING
        static char ConnectMethod=CM_SERVER;
       +#endif
       +
        static gboolean CanFire=FALSE,RunHere=FALSE;
        static gchar FightPoint;
        
       t@@ -1495,19 +1499,23 @@ static void Curses_DoGame(Player *Play) {
        /* dopewars is essentially server-driven, so this loop simply has to    */
        /* make the screen look pretty, respond to user keypresses, and react   */
        /* to messages from the server.                                         */
       -   gchar *buf,*OldName,*TalkMsg,*pt;
       +   gchar *buf,*OldName,*TalkMsg;
           GString *text;
           int i,c;
           char IsCarrying;
        #if NETWORKING || HAVE_SELECT
       -   fd_set readfs,writefs;
       +   fd_set readfs;
       +#endif
       +#ifdef NETWORKING
       +   fd_set writefs;
       +   gboolean DoneOK;
       +   gchar *pt;
        #endif
           int NumDrugsHere;
           int MaxSock;
           char HaveWorthless;
           Player *tmp;
           struct sigaction sact;
       -   gboolean DoneOK;
        
           DisplayMode=DM_NONE;
           QuitRequest=FALSE;
 (DIR) diff --git a/src/dopeos.h b/src/dopeos.h
       t@@ -136,9 +136,10 @@ void SetReuse(SOCKET sock);
        #include <arpa/inet.h>
        #include <netdb.h>
        #include <unistd.h>
       -#include <errno.h>
        #endif /* NETWORKING */
        
       +#include <errno.h>
       +
        /* Only include sys/wait.h on those systems which support it */
        #if HAVE_SYS_WAIT_H
        #include <sys/wait.h>
 (DIR) diff --git a/src/dopewars.c b/src/dopewars.c
       t@@ -1751,6 +1751,7 @@ GString *GetLogString(GLogLevelFlags log_level,const gchar *message) {
        
        #ifndef CYGWIN
        
       +#ifdef NETWORKING
        static void ServerLogMessage(const gchar *log_domain,GLogLevelFlags log_level,
                                     const gchar *message,gpointer user_data) {
           GString *text;
       t@@ -1759,6 +1760,7 @@ static void ServerLogMessage(const gchar *log_domain,GLogLevelFlags log_level,
              g_print("%s\n",text->str); g_string_free(text,TRUE);
           }
        }
       +#endif
        
        /* Standard program entry - Win32 uses WinMain() instead, in winmain.c */
        int main(int argc,char *argv[]) {
       t@@ -1771,8 +1773,11 @@ int main(int argc,char *argv[]) {
              if (WantVersion || WantHelp) {
                 HandleHelpTexts();
              } else {
       +#ifdef NETWORKING
                 StartNetworking();
       +#endif
                 if (Server) {
       +#ifdef NETWORKING
        #ifdef GUI_SERVER
                    gtk_set_locale();
                    gtk_init(&argc,&argv);
       t@@ -1781,7 +1786,13 @@ int main(int argc,char *argv[]) {
        /* Deal with dopelog() stuff nicely */
                    g_log_set_handler(NULL,LogMask(),ServerLogMessage,NULL);
                    ServerLoop();
       -#endif
       +#endif /* GUI_SERVER */
       +#else
       +            g_print(_("This binary has been compiled without networking "
       +                      "support, and thus cannot run\nin server mode. "
       +                      "Recompile passing --enable-networking to the "
       +                      "configure script.\n"));
       +#endif /* NETWORKING */
                 } else if (AIPlayer) {
                    AIPlayerLoop();
                 } else switch(WantedClient) {
       t@@ -1793,7 +1804,9 @@ int main(int argc,char *argv[]) {
                    case CLIENT_CURSES:
                       CursesLoop(); break;
                 }
       +#ifdef NETWORKING
                 StopNetworking();
       +#endif
              }
           }
           CloseHighScoreFile();
 (DIR) diff --git a/src/gtk_client.c b/src/gtk_client.c
       t@@ -72,7 +72,12 @@ struct ClientDataStruct {
        };
        
        static struct ClientDataStruct ClientData;
       -static gboolean InGame=FALSE,MetaServerRead=FALSE;
       +static gboolean InGame=FALSE;
       +
       +#ifdef NETWORKING
       +static gboolean MetaServerRead=FALSE;
       +#endif
       +
        static GtkWidget *FightDialog=NULL,*SpyReportsDialog;
        static gboolean IsShowingPlayerList=FALSE,IsShowingTalkList=FALSE,
                        IsShowingInventory=FALSE,IsShowingGunShop=FALSE;
       t@@ -87,9 +92,13 @@ static void NewGameDialog();
        static void StartGame();
        static void EndGame();
        static void UpdateMenus();
       +
       +#ifdef NETWORKING
        static void GetClientMessage(gpointer data,gint socket,
                                     GdkInputCondition condition);
        static void SetSocketWriteTest(Player *Play,gboolean WriteTest);
       +#endif
       +
        static void HandleClientMessage(char *buf,Player *Play);
        static void PrepareHighScoreDialog();
        static void AddScoreToDialog(char *Data);
       t@@ -254,6 +263,7 @@ void ListInventory(GtkWidget *widget,gpointer data) {
           gtk_widget_show_all(window);
        }
        
       +#ifdef NETWORKING
        void GetClientMessage(gpointer data,gint socket,
                              GdkInputCondition condition) {
           gchar *pt;
       t@@ -284,6 +294,7 @@ void SetSocketWriteTest(Player *Play,gboolean WriteTest) {
                                     GetClientMessage,NULL);
           }
        }
       +#endif /* NETWORKING */
        
        void HandleClientMessage(char *pt,Player *Play) {
           char *Data,Code,AICode,DisplayMode;
       t@@ -1508,16 +1519,18 @@ void StartGame() {
           Player *Play;
           Play=ClientData.Play=g_new(Player,1);
           FirstClient=AddPlayer(0,Play,FirstClient);
       +#ifdef NETWORKING
           BindNetworkBufferToSocket(&Play->NetBuf,ClientSock);
       +#endif
           InitAbilities(Play);
           SendAbilities(Play);
           SetPlayerName(Play,ClientData.PlayerName);
           SendNullClientMessage(Play,C_NONE,C_NAME,NULL,ClientData.PlayerName);
           InGame=TRUE;
           UpdateMenus();
       -   if (Network) {
       -      SetSocketWriteTest(Play,TRUE);
       -   }
       +#ifdef NETWORKING
       +   if (Network) SetSocketWriteTest(Play,TRUE);
       +#endif
           gtk_widget_show_all(ClientData.vbox);
           UpdatePlayerLists();
        }
       t@@ -1699,7 +1712,9 @@ char GtkLoop(int *argc,char **argv[],char ReturnOnFail) {
        /* Set up message handlers */
           ClientMessageHandlerPt = HandleClientMessage;
           ClientData.GdkInputTag=0;
       +#ifdef NETWORKING
           SocketWriteTestPt = SetSocketWriteTest;
       +#endif
        
        /* Have the GLib log messages pop up in a nice dialog box */
           g_log_set_handler(NULL,LogMask()|G_LOG_LEVEL_MESSAGE | G_LOG_LEVEL_WARNING,
       t@@ -1869,6 +1884,7 @@ struct StartGameStruct {
           gint ConnectTag;
        };
        
       +#ifdef NETWORKING
        static void FinishServerConnect(gpointer data,gint socket,
                                        GdkInputCondition condition) {
           gchar *text,*NetworkError;
       t@@ -1925,17 +1941,6 @@ static void ConnectToServer(GtkWidget *widget,struct StartGameStruct *widgets) {
           DoConnect(widgets);
        }
        
       -static void StartSinglePlayer(GtkWidget *widget,
       -                              struct StartGameStruct *widgets) {
       -   WantAntique=
       -          gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widgets->antique));
       -   g_free(ClientData.PlayerName);
       -   ClientData.PlayerName=gtk_editable_get_chars(GTK_EDITABLE(widgets->name),
       -                                                0,-1);
       -   StartGame();
       -   gtk_widget_destroy(widgets->dialog);
       -}
       -
        static void FillMetaServerList(struct StartGameStruct *widgets) {
           GtkWidget *metaserv;
           ServerData *ThisServer;
       t@@ -2007,23 +2012,39 @@ static void MetaServerConnect(GtkWidget *widget,
              DoConnect(widgets);
           }
        }
       +#endif /* NETWORKING */
       +
       +static void StartSinglePlayer(GtkWidget *widget,
       +                              struct StartGameStruct *widgets) {
       +   WantAntique=
       +          gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widgets->antique));
       +   g_free(ClientData.PlayerName);
       +   ClientData.PlayerName=gtk_editable_get_chars(GTK_EDITABLE(widgets->name),
       +                                                0,-1);
       +   StartGame();
       +   gtk_widget_destroy(widgets->dialog);
       +}
        
        static void CloseNewGameDia(GtkWidget *widget,
                                    struct StartGameStruct *widgets) {
       +#ifdef NETWORKING
           if (widgets->ConnectTag!=0) {
       -      gdk_input_remove(widgets->ConnectTag); CloseSocket(ClientSock);
       +      gdk_input_remove(widgets->ConnectTag);
       +      CloseSocket(ClientSock);
              widgets->ConnectTag=0;
           }
       +#endif
        }
        
        void NewGameDialog() {
           GtkWidget *vbox,*vbox2,*hbox,*label,*entry,*notebook,*frame,*button;
       -   GtkWidget *table,*clist,*scrollwin,*dialog,*hbbox;
       +   GtkWidget *dialog;
           GtkAccelGroup *accel_group;
       -   gchar *text;
       -   gchar *server_titles[5],*ServerEntry;
           static struct StartGameStruct widgets;
           guint AccelKey;
       +#ifdef NETWORKING
       +   GtkWidget *clist,*scrollwin,*table,*hbbox;
       +   gchar *server_titles[5],*ServerEntry,*text;
           gboolean UpdateMeta=FALSE;
        
        /* Column titles of metaserver information */
       t@@ -2032,6 +2053,7 @@ void NewGameDialog() {
           server_titles[2]=_("Version");
           server_titles[3]=_("Players");
           server_titles[4]=_("Comment");
       +#endif /* NETWORKING */
        
           widgets.ConnectTag=0;
           widgets.dialog=dialog=gtk_window_new(GTK_WINDOW_DIALOG);
       t@@ -2042,7 +2064,9 @@ void NewGameDialog() {
           gtk_window_set_modal(GTK_WINDOW(dialog),TRUE);
           gtk_window_set_transient_for(GTK_WINDOW(dialog),
                                        GTK_WINDOW(ClientData.window));
       +#ifdef NETWORKING
           gtk_window_set_default_size(GTK_WINDOW(dialog),500,300);
       +#endif
           accel_group=gtk_accel_group_new();
        
        /* Title of 'New Game' dialog */
       t@@ -2072,6 +2096,7 @@ void NewGameDialog() {
        
           notebook=gtk_notebook_new();
        
       +#ifdef NETWORKING
           frame=gtk_frame_new(_("Server"));
           gtk_container_set_border_width(GTK_CONTAINER(frame),4);
           vbox2=gtk_vbox_new(FALSE,7);
       t@@ -2125,6 +2150,7 @@ void NewGameDialog() {
        
           label=gtk_label_new(_("Server"));
           gtk_notebook_append_page(GTK_NOTEBOOK(notebook),frame,label);
       +#endif /* NETWORKING */
        
        /* Title of 'New Game' dialog notebook tab for single-player mode */
           frame=gtk_frame_new(_("Single player"));
       t@@ -2152,6 +2178,7 @@ void NewGameDialog() {
           label=gtk_label_new(_("Single player"));
           gtk_notebook_append_page(GTK_NOTEBOOK(notebook),frame,label);
        
       +#ifdef NETWORKING
        /* Title of Metaserver frame in New Game dialog */
           frame=gtk_frame_new(_("Metaserver"));
           gtk_container_set_border_width(GTK_CONTAINER(frame),4);
       t@@ -2192,6 +2219,8 @@ void NewGameDialog() {
        
           label=gtk_label_new(_("Metaserver"));
           gtk_notebook_append_page(GTK_NOTEBOOK(notebook),frame,label);
       +#endif /* NETWORKING */
       +
           gtk_box_pack_start(GTK_BOX(vbox),notebook,TRUE,TRUE,0);
        
        /* Caption of status label in New Game dialog before anything has happened */
       t@@ -2201,11 +2230,13 @@ void NewGameDialog() {
           gtk_container_add(GTK_CONTAINER(widgets.dialog),vbox);
        
           gtk_widget_grab_focus(widgets.name);
       +#ifdef NETWORKING
           if (UpdateMeta) {
              UpdateMetaServerList(NULL,&widgets);
           } else {
              FillMetaServerList(&widgets);
           }
       +#endif
        
           gtk_widget_show_all(widgets.dialog);
           gtk_notebook_set_page(GTK_NOTEBOOK(notebook),NewGameType);
 (DIR) diff --git a/src/message.c b/src/message.c
       t@@ -1004,7 +1004,9 @@ void SwitchToSinglePlayer(Player *Play) {
              FirstClient=RemovePlayer((Player *)g_slist_next(FirstClient)->data,
                                       FirstClient);
           }
       +#ifdef NETWORKING
           CloseSocket(ClientSock);
       +#endif
           CleanUpServer();
           Network=Server=Client=FALSE;
           InitAbilities(Play);
       t@@ -1135,6 +1137,7 @@ gboolean HandleGenericClientMessage(Player *From,char AICode,char Code,
           return TRUE;
        }
        
       +#ifdef NETWORKING
        char *OpenMetaServerConnection(int *HttpSock) {
           static char NoHost[] = N_("Cannot locate metaserver");
           static char NoSocket[] = N_("Cannot create socket");
       t@@ -1218,6 +1221,7 @@ void ReadMetaServerData(int HttpSock) {
              }
           }
        }
       +#endif /* NETWORKING */
        
        void SendFightReload(Player *To) {
           SendFightMessage(To,NULL,0,F_RELOAD,FALSE,FALSE,NULL);
 (DIR) diff --git a/src/message.h b/src/message.h
       t@@ -177,10 +177,12 @@ int ProcessMessage(char *Msg,Player *Play,Player **Other,char *AICode,
        void ReceiveDrugsHere(char *text,Player *To);
        gboolean HandleGenericClientMessage(Player *From,char AICode,char Code,
                                       Player *To,char *Data,char *DisplayMode);
       +#ifdef NETWORKING
        char *OpenMetaServerConnection(int *HttpSock);
        void CloseMetaServerConnection(int HttpSock);
        void ClearServerList();
        void ReadMetaServerData(int HttpSock);
       +#endif
        void InitAbilities(Player *Play);
        void SendAbilities(Player *Play);
        void ReceiveAbilities(Player *Play,gchar *Data);
 (DIR) diff --git a/src/serverside.c b/src/serverside.c
       t@@ -76,7 +76,9 @@ gboolean MetaPlayerPending=FALSE;
        
        GSList *FirstServer=NULL;
        
       +#ifdef NETWORKING
        static GScanner *Scanner;
       +#endif
        
        /* Data waiting to be sent to/read from the metaserver */
        NetworkBuffer MetaNetBuf;
       t@@ -205,6 +207,7 @@ void RegisterWithMetaServer(gboolean Up,gboolean SendData,
        #endif /* NETWORKING */
        }
        
       +#ifdef NETWORKING
        void HandleServerPlayer(Player *Play) {
           gchar *buf;
           gboolean MessageRead=FALSE;
       t@@ -218,6 +221,7 @@ void HandleServerPlayer(Player *Play) {
              Play->IdleTimeout=time(NULL)+(time_t)IdleTimeout;
           }
        }
       +#endif /* NETWORKING */
        
        void SendPlayerDetails(Player *Play,Player *To,char Code) {
        /* Sends details (name, ID) about player "Play" to player "To", using */