--- common/argus_util.c	Thu Apr  6 16:24:09 2000
+++ common/argus_util.c	Fri Jul 13 19:03:29 2007
@@ -58,7 +58,11 @@
 
 #include <errno.h>
 #include <ctype.h>
+#if defined(__GNUC__) && (__GNUC__ == 3 && __GNUC_MINOR__ > 2 || __GNUC__ >= 4)
+#include <stdarg.h>
+#else
 #include <varargs.h>
+#endif
 #include <sys/file.h>
 #include <sys/stat.h>
 #ifdef HAVE_SOLARIS
@@ -1051,7 +1055,6 @@
    return(0);
 }
 
-
 #ifdef NOVFPRINTF
 /*
  * Stock 4.3 doesn't have vfprintf. 
@@ -1075,23 +1078,60 @@
 }
 #endif
 
+#if defined(__GNUC__) && (__GNUC__ == 3 && __GNUC_MINOR__ > 2 || __GNUC__ >= 4)
+void
+error(char *fmt, ...)
+{
+   va_list ap;
+
+   (void)fprintf(stderr, "connect: ");
+
+   va_start(ap, fmt);
+   (void)vfprintf(stderr, fmt, ap);
+   va_end(ap);
+   if (*fmt) {
+      fmt += strlen(fmt);
+      if (fmt[-1] != '\n')
+         (void)fputc('\n', stderr);
+   }
+   exit(1);
+   /* NOTREACHED */
+}
+
 /* VARARGS */
 void
-error(va_alist)
+warning(char *fmt, ...)
+{
+   va_list ap;
+
+   (void)fprintf(stderr, "connect: warning: ");
+
+   va_start(ap, fmt);
+   (void)vfprintf(stderr, fmt, ap);
+   va_end(ap);
+   if (*fmt) {
+      fmt += strlen(fmt);
+      if (fmt[-1] != '\n')
+         (void)fputc('\n', stderr);
+   }
+}
+#else
+/* VARARGS */
+void
+error(fmt, va_alist)
+char *fmt;
 va_dcl
 {
-   char *cp;
    va_list ap;
 
    (void)fprintf(stderr, "connect: ");
 
    va_start(ap);
-   cp = va_arg(ap, char *);
-   (void)vfprintf(stderr, cp, ap);
+   (void)vfprintf(stderr, fmt, ap);
    va_end(ap);
-   if (*cp) {
-      cp += strlen(cp);
-      if (cp[-1] != '\n')
+   if (*fmt) {
+      fmt += strlen(fmt);
+      if (fmt[-1] != '\n')
          (void)fputc('\n', stderr);
    }
    exit(1);
@@ -1100,24 +1140,24 @@
 
 /* VARARGS */
 void
-warning(va_alist)
+warning(fmt, va_alist)
+char *fmt;
    va_dcl
 {
-   char *cp;
    va_list ap;
 
    (void)fprintf(stderr, "connect: warning: ");
 
    va_start(ap);
-   cp = va_arg(ap, char *);
-   (void)vfprintf(stderr, cp, ap);
+   (void)vfprintf(stderr, fmt, ap);
    va_end(ap);
-   if (*cp) {
-      cp += strlen(cp);
-      if (cp[-1] != '\n')
+   if (*fmt) {
+      fmt += strlen(fmt);
+      if (fmt[-1] != '\n')
          (void)fputc('\n', stderr);
    }
 }
+#endif
 
 /* A replacement for strdup() that cuts down on malloc() overhead */
 char *
@@ -1551,8 +1591,10 @@
 argus_strerror(int errnum)
 {
 #ifndef HAVE_SYS_ERRLIST
+#if defined(_ANSI_SOURCE) || defined(_POSIX_SOURCE)
    extern int sys_nerr;
    extern char *sys_errlist[];
+#endif
 
    if ((unsigned int)errnum < sys_nerr)
       return ((char *) sys_errlist[errnum]);
--- server/cons_ip.c	Thu Apr 15 20:15:00 1999
+++ server/cons_ip.c	Fri Jul 13 13:56:09 2007
@@ -454,10 +454,10 @@
 
 #include <sys/stat.h>
 #include <sys/errno.h>
- 
+#if defined(_ANSI_SOURCE) || defined(_POSIX_SOURCE) 
 extern int sys_nerr;
 extern int errno;
- 
+#endif 
 extern int clienttags;
 extern int clients[];
  
--- server/cons_sockets.c	Wed Apr  5 23:51:34 2000
+++ server/cons_sockets.c	Fri Jul 13 13:56:55 2007
@@ -64,10 +64,10 @@
 #include <fcntl.h>
 #include <sys/stat.h>
 #include <sys/errno.h>
- 
+#if defined(_ANSI_SOURCE) || defined(_POSIX_SOURCE) 
 extern int sys_nerr;
 extern int errno;
-
+#endif
 #include <compat.h>
 #include <pcap.h>
 #include <interface.h>
--- server/argus_util.c	Wed Apr  5 23:55:07 2000
+++ server/argus_util.c	Fri Jul 13 15:36:42 2007
@@ -73,8 +73,9 @@
 #include <addrtoname.h>
 
 #include <cons_tcp.h>
-
+#if ! __GNUC__
 #include <malloc.h>
+#endif
 #include <string.h>
 
 extern fd_set readmask, writemask, exceptmask;
@@ -842,9 +843,26 @@
    ws->ws_init.now.tv_usec = tvp->tv_usec;
 }
 
+#if defined(__GNUC__) && (__GNUC__ == 3 && __GNUC_MINOR__ > 2 || __GNUC__ >= 4)
+#include <stdarg.h>
+void
+aerror (char *fmt, ...)
+{
+   va_list ap;
 
+   (void) fprintf (stderr, "%s: ", program_name);
+   va_start (ap, fmt);
+   (void) vfprintf (stderr, fmt, ap);
+   va_end (ap);
+   if (*fmt) {
+      fmt += (int) strlen (fmt);
+      if (fmt[-1] != '\n')
+         (void) fputc ('\n', stderr);
+   }
+   exit (1);
+}
+#else
 #include <varargs.h>
-
 void
 aerror (fmt, va_alist)
 char *fmt;
@@ -863,4 +881,4 @@
    }
    exit (1);
 }
-
+#endif
--- include/argus.h	Thu Apr 15 20:15:00 1999
+++ include/argus.h	Fri Jul 13 17:46:33 2007
@@ -66,7 +66,11 @@
 void update_queue_status ();
 char *copy_argv ();
 char *read_infile ();
+#if defined(__GNUC__) && (__GNUC__ == 3 && __GNUC_MINOR__ > 2 || __GNUC__ >= 4)
+void aerror (char *fmt, ...);
+#else
 void aerror ();
+#endif
 void bpf_dump ();
 
 void cons_ether_init ();
--- server/tcp_wrapper.c.orig	Thu Apr 15 20:15:00 1999
+++ server/tcp_wrapper.c	Fri Jul 13 19:08:24 2007
@@ -136,4 +136,4 @@
    return (retn);
 }
 
-#endif TCPWRAPPER
+#endif /* TCPWRAPPER */