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 <sys/types.h> /* 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 <sys/select.h>
 #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 <Xm/Separator.h>
 #include <Xm/TextF.h>
 
+#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 <gigs.h>
+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 <gigs.h>
+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,
