diff --git a/watchquagga/ChangeLog b/watchquagga/ChangeLog
index d3c4b72..3e3017e 100644
--- a/watchquagga/ChangeLog
+++ b/watchquagga/ChangeLog
@@ -1,5 +1,10 @@
 2004-12-22 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
 
+	* watchquagga.c: Try for gcc 2.95 compatibility (avoid %z and a tricky
+	  initialization).
+
+2004-12-22 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
+
 	* watchquagga.c: Add -b option to circumvent difficulties passing
 	  embedded spaces in command-line arguments.  This is an ugly hack,
 	  we should probably use a config file instead.
diff --git a/watchquagga/watchquagga.c b/watchquagga/watchquagga.c
index 6db2f56..efc2907 100644
--- a/watchquagga/watchquagga.c
+++ b/watchquagga/watchquagga.c
@@ -1,5 +1,5 @@
 /*
-    $Id: watchquagga.c,v 1.4 2004/12/22 16:17:16 ajs Exp $
+    $Id: watchquagga.c,v 1.5 2004/12/22 17:00:46 ajs Exp $
 
     Monitor status of quagga daemons and restart if necessary.
 
@@ -31,6 +31,7 @@
 #include <fcntl.h>
 #include <errno.h>
 #include <time.h>
+#include <string.h>
 #include <sys/time.h>
 #include <sys/wait.h>
 
@@ -113,7 +114,19 @@
 
 #define PHASE_TIMEOUT (3*gs.restart_timeout)
 
-static struct global_state {
+struct restart_info
+{
+  const char *name;
+  const char *what;
+  pid_t pid;
+  struct timeval time;
+  long interval;
+  struct thread *t_kill;
+  int kills;
+};
+
+static struct global_state
+{
   watch_mode_t mode;
   restart_phase_t phase;
   struct thread *t_phase_hanging;
@@ -128,16 +141,7 @@
   const char *restart_command;
   const char *start_command;
   const char *stop_command;
-  struct restart_info
-    {
-      const char *name;
-      const char *what;
-      pid_t pid;
-      struct timeval time;
-      long interval;
-      struct thread *t_kill;
-      int kills;
-    } restart;
+  struct restart_info restart;
   int unresponsive_restart;
   int loglevel;
   struct daemon *special;	/* points to zebra when doing phased restart */
@@ -155,7 +159,6 @@
   .min_restart_interval = DEFAULT_MIN_RESTART,
   .max_restart_interval = DEFAULT_MAX_RESTART,
   .do_ping = 1,
-  .restart.name = "all",
 };
 
 typedef enum
@@ -637,8 +640,8 @@
   if (!dmn->echo_sent.tv_sec)
     {
       char why[sizeof(buf)+100];
-      snprintf(why,sizeof(why),"unexpected read returns %zd bytes: %.*s",
-	       rc,rc,buf);
+      snprintf(why,sizeof(why),"unexpected read returns %d bytes: %.*s",
+	       (int)rc,(int)rc,buf);
       daemon_down(dmn,why);
       return 0;
     }
@@ -649,9 +652,9 @@
   if ((rc != sizeof(resp)) || memcmp(buf,resp,sizeof(resp)))
     {
       char why[100+sizeof(buf)];
-      snprintf(why,sizeof(why),"read returned bad echo response of %zd bytes "
-			       "(expecting %zu): %.*s",
-	       rc,sizeof(resp),rc,buf);
+      snprintf(why,sizeof(why),"read returned bad echo response of %d bytes "
+			       "(expecting %u): %.*s",
+	       (int)rc,(u_int)sizeof(resp),(int)rc,buf);
       daemon_down(dmn,why);
       return 0;
     }
@@ -993,8 +996,8 @@
       ((size_t)rc != sizeof(echocmd)))
     {
       char why[100+sizeof(echocmd)];
-      snprintf(why,sizeof(why),"write '%s' returned %zd instead of %zu",
-               echocmd,rc,sizeof(echocmd));
+      snprintf(why,sizeof(why),"write '%s' returned %d instead of %u",
+               echocmd,(int)rc,(u_int)sizeof(echocmd));
       daemon_down(dmn,why);
     }
   else
@@ -1073,6 +1076,7 @@
   else
     progname = argv[0];
 
+  gs.restart.name = "all";
   while ((opt = getopt_long(argc, argv, "aAb:dek:l:m:M:i:p:r:R:S:s:t:T:zvh",
 			    longopts, 0)) != EOF)
     {
@@ -1311,8 +1315,8 @@
 
 	if (!(dmn = (struct daemon *)calloc(1,sizeof(*dmn))))
 	  {
-	    fprintf(stderr,"calloc(1,%zu) failed: %s\n",
-		    sizeof(*dmn), safe_strerror(errno));
+	    fprintf(stderr,"calloc(1,%u) failed: %s\n",
+		    (u_int)sizeof(*dmn), safe_strerror(errno));
 	    return 1;
 	  }
 	dmn->name = dmn->restart.name = argv[i];
