diff -ru imaze-1.3/source/global.h imaze-1.3-my/source/global.h --- imaze-1.3/source/global.h Thu Feb 22 21:34:26 1996 +++ imaze-1.3-my/source/global.h Wed Jan 28 18:45:23 1998 @@ -9,6 +9,13 @@ ** globale Typ- und Funktion-Definitionen */ +#define IMAZE "iMaze" +#define VERSION "1.3" + +#define HAVE_GIGS +#ifdef HAVE_GIGS +extern int current_port; +#endif #include /* fuer u_int... */ diff -ru imaze-1.3/source/ip_server.c imaze-1.3-my/source/ip_server.c --- imaze-1.3/source/ip_server.c Thu Feb 22 21:34:26 1996 +++ imaze-1.3-my/source/ip_server.c Fri Mar 13 14:52:39 1998 @@ -27,6 +27,7 @@ #include #endif +#include "global.h" #include "speicher.h" #include "server_netz.h" #include "system.h" @@ -848,6 +849,9 @@ SO_REUSEADDR, (void *)&eins, sizeof eins)) netzwerk_fehler("Can't enable address reuse on prolog socket:"); } +#ifdef HAVE_GIGS + current_port = server_adresse.sin_port; +#endif /* TCP-Socket an gewuenschte Adresse binden */ if (bind(server_prolog_socket, (struct sockaddr *)&server_adresse, diff -ru imaze-1.3/source/motif_appdefs.c imaze-1.3-my/source/motif_appdefs.c --- imaze-1.3/source/motif_appdefs.c Thu Feb 22 21:34:27 1996 +++ imaze-1.3-my/source/motif_appdefs.c Fri Mar 13 14:50:35 1998 @@ -92,6 +92,10 @@ "IMaze*serverMenu.mnemonic: S", "IMaze*menuBar*connect.labelString: Connect", "IMaze*menuBar*connect.mnemonic: C", +#ifdef HAVE_GIGS + "IMaze*menuBar*querygigs.labelString: Query GIGS", + "IMaze*menuBar*querygigs.mnemonic: Q", +#endif "IMaze*menuBar*disconnect.labelString: Disconnect", "IMaze*menuBar*disconnect.mnemonic: D", diff -ru imaze-1.3/source/motif_fenster.c imaze-1.3-my/source/motif_fenster.c --- imaze-1.3/source/motif_fenster.c Thu Feb 22 21:34:27 1996 +++ imaze-1.3-my/source/motif_fenster.c Fri Mar 13 14:49:13 1998 @@ -25,6 +25,7 @@ #include #include +#include "global.h" #include "grafik.h" #include "signale.h" #include "ereignisse.h" @@ -49,6 +50,10 @@ /* Pfusch! Irix doesn't know XmFONTLIST_DEFAULT_TAG */ #define DEFAULT_FONTLIST_TAG "XmFONTLIST_DEFAULT_TAG_STRING" +#ifdef HAVE_GIGS +#include +static Widget querygigs_button_w; +#endif struct view { @@ -476,6 +481,27 @@ set_pause_mode(0); } +#ifdef HAVE_GIGS +static void querygigs_handler(widget, client_data, call_data) +Widget widget; +caddr_t client_data; +XmAnyCallbackStruct *call_data; +{ + Arg arglist[1]; + char *server = NULL; + int portnum; + + /* Query gigs */ + server = GIGS_chooseServer(IMAZE, &portnum, NULL, GIGS_chooser_X11); + + /* Enter line in edit field */ + if (NULL != server) { + XtSetArg(arglist[0], XmNvalue, server); + XtSetValues(server_field_w, arglist, 1); + } +} +#endif + static void pause_handler(widget, client_data, call_data) Widget widget; @@ -571,6 +597,12 @@ XtAddCallback(connect_button_w = XtCreateManagedWidget("connect", xmPushButtonGadgetClass, menu_w, NULL, 0), XmNactivateCallback, connect_handler, NULL); + +#ifdef HAVE_GIGS + XtAddCallback(querygigs_button_w = XtCreateManagedWidget("querygigs", + xmPushButtonGadgetClass, menu_w, NULL, 0), + XmNactivateCallback, querygigs_handler, NULL); +#endif XtSetArg(arglist[0], XmNsensitive, False); XtAddCallback(disconnect_button_w = XtCreateManagedWidget("disconnect", diff -ru imaze-1.3/source/server.c imaze-1.3-my/source/server.c --- imaze-1.3/source/server.c Thu Feb 22 21:34:28 1996 +++ imaze-1.3-my/source/server.c Wed Jan 28 18:49:47 1998 @@ -23,6 +23,11 @@ #include "server.h" #include "init_spieler.h" +#ifdef HAVE_GIGS +#include +int current_port = -1; +#endif + static char sccsid[] = "@(#)server.c 1.60 10/24/94"; @@ -50,6 +55,11 @@ { char daten; /* Puffer fuer die Nachricht */ +#ifdef HAVE_GIGS + /* Notify GIGS that the server no longer is available to the public */ + GIGS_serverStopped(IMAZE, current_port, VERSION); +#endif + /* Nachricht NT_SPIEL_BEENDEN an Session-Prozess senden */ daten = NT_SPIEL_BEENDEN; nachricht_senden(session_deskriptor, NULL, sizeof daten, &daten); @@ -67,9 +77,19 @@ */ static void server() { +#ifdef HAVE_GIGS + /* Inits sockets */ + GIGS_init(); +#endif /* Endlosschleife, s.o. */ for (;;) { +#ifdef HAVE_GIGS + /* Call this in your handler loop - as often as + * possible. Only notifies GIGS every 3. minute. */ + GIGS_notifySimple(IMAZE, current_port, VERSION, + /* num_clients is unknown */-1); +#endif /* auf Nachrichten von den anderen Prozessen und neue Verbindungen von Clients warten */ if (nachricht_oder_verbindung_erwarten(1,