$NetBSD: patch-ef,v 1.3 2011/09/19 07:15:52 dholland Exp $

- use modern C
- use stdarg.h for printf wrappers instead of ancient-style fake varargs
- declare printf functions as such for format checking
- mark functions not returning values as void; otherwise clang belches
- remove uses of implicit int to avoid warning noise 
- silence warnings about assignment within an if conditional

--- clients/xmxinit/xmxinit.c.orig	1995-04-20 03:05:04.000000000 +0000
+++ clients/xmxinit/xmxinit.c
@@ -24,13 +24,13 @@ Modified from X11R6 MIT source for xinit
 #include <X11/Xos.h>
 #include <X11/Xmu/SysUtil.h>
 #include <stdio.h>
+#include <stdarg.h>
 #include <ctype.h>
 #include <signal.h>
 #ifndef SYSV
 #include <sys/wait.h>
 #endif
 #include <errno.h>
-extern int sys_nerr;
 #include <setjmp.h>
 
 #ifndef X_NOT_STDC_ENV
@@ -41,6 +41,12 @@ extern char *getenv();
 extern char **environ;
 char **newenviron = NULL;
 
+#if defined(__GNUC__) || defined(__CLANG__)
+#define PF(a, b) __attribute__((__format__(__printf__, a, b)))
+#else
+#define PF(a, b)
+#endif
+
 #ifndef SHELL
 #define SHELL "sh"
 #endif
@@ -59,6 +65,15 @@ char **newenviron = NULL;
 #define setpgrp setpgid
 #endif
 
+static void shutdown(void);
+int processTimeout(int timeout, char *string);
+void set_environment(void);
+void Fatal(const char *fmt, ...) PF(1, 2);
+void Error(const char *fmt, ...) PF(1, 2);
+void vError(const char *fmt, va_list ap) PF(1, 0);
+int startServer(char *server[]);
+pid_t startClient(char *client[]);
+
 char *bindir = BINDIR;
 
 #ifndef XMXINITRC
@@ -86,8 +101,8 @@ char **client = clientargv + 2;		/* make
 char *displayNum;
 char *program;
 Display *xd;			/* server connection */
-#ifndef SYSV
-#if defined(SVR4) || defined(_POSIX_SOURCE)
+#if 1 /*ndef SYSV*/
+#if 1 /*defined(SVR4) || defined(_POSIX_SOURCE)*/
 int status;
 #else
 union wait	status;
@@ -95,9 +110,6 @@ union wait	status;
 #endif /* SYSV */
 int serverpid = -1;
 int clientpid = -1;
-extern int	errno;
-
-static shutdown();
 
 #ifdef SIGNALRETURNSINT
 #define SIGVAL int
@@ -146,6 +158,7 @@ static Execute (vec)
     return;
 }
 
+int
 main(argc, argv)
 int argc;
 register char **argv;
@@ -197,7 +210,7 @@ register char **argv;
 	 */
 	if (argc == 0 ||
 	    (**argv != '/' && **argv != '.')) {
-                if (*sptr = getenv("XMX"))
+                if ((*sptr = getenv("XMX")) != NULL)
                    sptr++;
                 else
 		   *sptr++ = default_server;
@@ -312,13 +325,14 @@ register char **argv;
  *	waitforserver - wait for X server to start up
  */
 
-waitforserver()
+int
+waitforserver(void)
 {
 	int	ncycles	 = 120;		/* # of cycles to wait */
 	int	cycles;			/* Wait cycle count */
 
 	for (cycles = 0; cycles < ncycles; cycles++) {
-		if (xd = XOpenDisplay(displayNum)) {
+		if ((xd = XOpenDisplay(displayNum)) != NULL) {
 			return(TRUE);
 		}
 		else {
@@ -336,6 +350,7 @@ waitforserver()
 /*
  * return TRUE if we timeout waiting for pid to exit, FALSE otherwise.
  */
+int
 processTimeout(timeout, string)
 	int	timeout;
 	char	*string;
@@ -350,7 +365,7 @@ processTimeout(timeout, string)
 			break;
 		alarm(0);
 #else /* SYSV */
-#if defined(SVR4) || defined(_POSIX_SOURCE)
+#if 1 /*defined(SVR4) || defined(_POSIX_SOURCE)*/
 		if ((pidfound = waitpid(serverpid, &status, WNOHANG)) == serverpid)
 			break;
 #else
@@ -375,6 +390,7 @@ processTimeout(timeout, string)
 	return( serverpid != pidfound );
 }
 
+int
 startServer(server)
 	char *server[];
 {
@@ -457,6 +473,7 @@ startServer(server)
 	return(serverpid);
 }
 
+pid_t
 startClient(client)
 	char *client[];
 {
@@ -490,8 +507,8 @@ static int ignorexio (dpy)
     /*NOTREACHED*/
 }
 
-static
-shutdown()
+static void
+shutdown(void)
 {
 	/* have kept display opened, so close it now */
 	if (clientpid > 0) {
@@ -544,7 +561,8 @@ shutdown()
  * make a new copy of environment that has room for DISPLAY
  */
 
-set_environment ()
+void
+set_environment(void)
 {
     int nenvvars;
     char **newPtr, **oldPtr;
@@ -578,20 +596,32 @@ set_environment ()
     return;
 }
 
-Fatal(fmt, x0,x1,x2,x3,x4,x5,x6,x7,x8,x9)
-	char	*fmt;
+void
+Fatal(const char *fmt, ...)
 {
-	Error(fmt, x0,x1,x2,x3,x4,x5,x6,x7,x8,x9);
+	va_list ap;
+
+	va_start(ap, fmt);
+	vError(fmt, ap);
+	va_end(ap);
 	exit(ERR_EXIT);
 }
 
-Error(fmt, x0,x1,x2,x3,x4,x5,x6,x7,x8,x9)
-	char	*fmt;
+void
+Error(const char *fmt, ...)
 {
-	extern char	*sys_errlist[];
+	va_list ap;
 
+	va_start(ap, fmt);
+	vError(fmt, ap);
+	va_end(ap);
+}
+
+void
+vError(const char *fmt, va_list ap)
+{
 	fprintf(stderr, "%s:  ", program);
 	if (errno > 0 && errno < sys_nerr)
-	  fprintf (stderr, "%s (errno %d):  ", sys_errlist[errno], errno);
-	fprintf(stderr, fmt, x0,x1,x2,x3,x4,x5,x6,x7,x8,x9);
+	  fprintf (stderr, "%s (errno %d):  ", strerror(errno), errno);
+	vfprintf(stderr, fmt, ap);
 }
