From 441b64335590ab91854b997bec07a9578086d895 Mon Sep 17 00:00:00 2001 From: Paul Smith Date: Sun, 28 Apr 2013 17:59:28 -0400 Subject: [PATCH] Remove support for pre-ANSI variadic function calls. We've required support for ANSI C (ISO C 89) or better for quite a while. Get rid of the old varags.h, doprnt() stuff and simply assume ANSI C variadic function capability and basic C runtime library support (vfprintf, vsprintf, etc.) --- ChangeLog | 8 +++++ config.ami.template | 9 ----- config.h-vms.template | 9 ----- config.h.W32.template | 13 -------- configh.dos.template | 7 ---- configure.ac | 5 --- makeint.h | 16 --------- misc.c | 91 ++++++++------------------------------------------- 8 files changed, 22 insertions(+), 136 deletions(-) diff --git a/ChangeLog b/ChangeLog index 91802ae..254f926 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,13 @@ 2013-04-28 Paul Smith + * configure.ac: Remove support for pre-ANSI variadic function calls. + * makeint.h: Ditto. + * misc.c: Ditto. + * config.ami.template: Ditto. + * config.h-vms.template: Ditto. + * config.h.W32.template: Ditto. + * configh.dos.template: Ditto. + Implement a "per-job" output synchronization option. * main.c (decode_output_sync_flags): Recognize the new option. diff --git a/config.ami.template b/config.ami.template index aa3a57e..8fe26bd 100644 --- a/config.ami.template +++ b/config.ami.template @@ -53,9 +53,6 @@ this program. If not, see . */ /* Define if you have and it should be used (not on Ultrix). */ /* #undef HAVE_ALLOCA_H */ -/* Define if you don't have vprintf but do have _doprnt. */ -/* #undef HAVE_DOPRNT */ - /* Define if your system has a working fnmatch function. */ /* #undef HAVE_FNMATCH */ @@ -115,9 +112,6 @@ this program. If not, see . */ /* Define if you have . */ /* #undef HAVE_VFORK_H */ -/* Define if you have the vprintf function. */ -#define HAVE_VPRINTF 1 - /* Define if you have the wait3 system call. */ /* #undef HAVE_WAIT3 */ @@ -303,9 +297,6 @@ this program. If not, see . */ /* Define if you have the header file. */ /* #undef HAVE_NDIR_H */ -/* Define to 1 if you have the header file. */ -#define HAVE_STDARG_H 1 - /* Define if you have the header file. */ /* #undef HAVE_STDLIB_H */ diff --git a/config.h-vms.template b/config.h-vms.template index de7665e..1b99dd4 100644 --- a/config.h-vms.template +++ b/config.h-vms.template @@ -75,9 +75,6 @@ this program. If not, see . */ /* Define to 1 if you have and it should be used (not on Ultrix). */ /* #undef HAVE_ALLOCA_H */ -/* Define to 1 if you don't have vprintf but do have _doprnt. */ -/* #undef HAVE_DOPRNT */ - /* Define to 1 if you have the fdopen function. */ #define HAVE_FDOPEN 1 @@ -144,9 +141,6 @@ this program. If not, see . */ /* Define to 1 if you have . */ /* #undef HAVE_VFORK_H */ -/* Define to 1 if you have the vprintf function. */ -#define HAVE_VPRINTF 1 - /* Define to 1 if you have the wait3 system call. */ /* #undef HAVE_WAIT3 */ @@ -339,9 +333,6 @@ this program. If not, see . */ /* Define to 1 if your compiler conforms to the ANSI C standard. */ #define HAVE_ANSI_COMPILER 1 -/* Define to 1 if you have the header file. */ -#define HAVE_STDARG_H 1 - /* Define to 1 if you have the header file. */ #define HAVE_STDLIB_H 1 diff --git a/config.h.W32.template b/config.h.W32.template index a00e095..8818a76 100644 --- a/config.h.W32.template +++ b/config.h.W32.template @@ -109,9 +109,6 @@ this program. If not, see . */ # define HAVE_DIRECT_H 1 #endif -/* Define to 1 if you don't have 'vprintf' but do have '_doprnt.' */ -/* #undef HAVE_DOPRNT */ - /* Use platform specific coding */ #define HAVE_DOS_PATHS 1 @@ -247,9 +244,6 @@ this program. If not, see . */ /* Define to 1 if you have the 'socket' function. */ /* #undef HAVE_SOCKET */ -/* Define to 1 if you have the header file. */ -#define HAVE_STDARG_H 1 - /* Define to 1 if you have the header file. */ #ifdef __MINGW32__ #define HAVE_STDINT_H 1 @@ -348,19 +342,12 @@ this program. If not, see . */ #define HAVE_UNISTD_H 1 #endif -/* Define to 1 if you have the header file. */ -/* #undef HAVE_VARARGS_H */ - /* Define to 1 if you have the 'vfork' function. */ /* #undef HAVE_VFORK */ /* Define to 1 if you have the header file. */ /* #undef HAVE_VFORK_H */ -/* Define to 1 if you have the 'vprintf' function. */ -#define HAVE_VPRINTF 1 - - /* Define to 1 if you have the 'wait3' function. */ /* #undef HAVE_WAIT3 */ diff --git a/configh.dos.template b/configh.dos.template index 10d848f..61857ab 100644 --- a/configh.dos.template +++ b/configh.dos.template @@ -79,13 +79,6 @@ this program. If not, see . */ /* Define to 1 if your compiler conforms to the ANSI C standard. */ #define HAVE_ANSI_COMPILER 1 -/* Define to 1 if you have the header file. */ -#define HAVE_STDARG_H 1 - -/* Define to 1 if you have the vprintf library function. */ -#undef HAVE_VPRINTF -#define HAVE_VPRINTF 1 - /* Define to 1 if you have the stricmp function. */ #define HAVE_STRICMP 1 diff --git a/configure.ac b/configure.ac index 2ba81ad..d610343 100644 --- a/configure.ac +++ b/configure.ac @@ -70,10 +70,6 @@ AS_IF([test "$ac_cv_prog_cc_stdc" != no], [Define to 1 if your compiler conforms to the ANSI C standard.]) ]) - -# Determine what kind of variadic function calls we support -AC_CHECK_HEADERS([stdarg.h varargs.h], [break]) - AM_PROG_CC_C_O AC_C_CONST AC_TYPE_SIGNAL @@ -164,7 +160,6 @@ AC_FUNC_STRCOLL AC_FUNC_ALLOCA AC_FUNC_FORK([]) -AC_FUNC_VPRINTF AC_FUNC_CLOSEDIR_VOID # See if the user wants to add (or not) GNU Guile support diff --git a/makeint.h b/makeint.h index 8ac3861..3b0336e 100644 --- a/makeint.h +++ b/makeint.h @@ -382,16 +382,6 @@ extern struct rlimit stack_limit; #define STRING_SIZE_TUPLE(_s) (_s), CSTRLEN(_s) -/* We have to have stdarg.h or varargs.h AND v*printf or doprnt to use - variadic versions of these functions. */ - -#if HAVE_STDARG_H || HAVE_VARARGS_H -# if HAVE_VPRINTF || HAVE_DOPRNT -# define USE_VARIADIC 1 -# endif -#endif - -#if HAVE_ANSI_COMPILER && USE_VARIADIC && HAVE_STDARG_H const char *concat (unsigned int, ...); void message (int prefix, const char *fmt, ...) __attribute__ ((__format__ (__printf__, 2, 3))); @@ -399,12 +389,6 @@ void error (const gmk_floc *flocp, const char *fmt, ...) __attribute__ ((__format__ (__printf__, 2, 3))); void fatal (const gmk_floc *flocp, const char *fmt, ...) __attribute__ ((noreturn, __format__ (__printf__, 2, 3))); -#else -const char *concat (); -void message (); -void error (); -void fatal (); -#endif void die (int) __attribute__ ((noreturn)); void log_working_directory (int, int); diff --git a/misc.c b/misc.c index 800e857..366e856 100644 --- a/misc.c +++ b/misc.c @@ -18,36 +18,9 @@ this program. If not, see . */ #include "dep.h" #include "debug.h" -/* Variadic functions. We go through contortions to allow proper function - prototypes for both ANSI and pre-ANSI C compilers, and also for those - which support stdarg.h vs. varargs.h, and finally those which have - vfprintf(), etc. and those who have _doprnt... or nothing. - - This fancy stuff all came from GNU fileutils, except for the VA_PRINTF and - VA_END macros used here since we have multiple print functions. */ - -#if USE_VARIADIC -# if HAVE_STDARG_H -# include -# define VA_START(args, lastarg) va_start(args, lastarg) -# else -# include -# define VA_START(args, lastarg) va_start(args) -# endif -# if HAVE_VPRINTF -# define VA_PRINTF(fp, lastarg, args) vfprintf((fp), (lastarg), (args)) -# else -# define VA_PRINTF(fp, lastarg, args) _doprnt((lastarg), (args), (fp)) -# endif -# define VA_END(args) va_end(args) -#else -/* We can't use any variadic interface! */ -# define va_alist a1, a2, a3, a4, a5, a6, a7, a8 -# define va_dcl char *a1, *a2, *a3, *a4, *a5, *a6, *a7, *a8; -# define VA_START(args, lastarg) -# define VA_PRINTF(fp, lastarg, args) fprintf((fp), (lastarg), va_alist) -# define VA_END(args) -#endif +/* GNU make no longer supports pre-ANSI89 environments. */ + +#include /* Compare strings *S1 and *S2. @@ -164,23 +137,14 @@ print_spaces (unsigned int n) This string lives in static, re-used memory. */ const char * -#if HAVE_ANSI_COMPILER && USE_VARIADIC && HAVE_STDARG_H concat (unsigned int num, ...) -#else -concat (num, va_alist) - unsigned int num; - va_dcl -#endif { static unsigned int rlen = 0; static char *result = NULL; unsigned int ri = 0; - -#if USE_VARIADIC va_list args; -#endif - VA_START (args, num); + va_start (args, num); while (num-- > 0) { @@ -200,7 +164,7 @@ concat (num, va_alist) ri += l; } - VA_END (args); + va_end (args); /* Get some more memory if we don't have enough space for the terminating '\0'. */ @@ -218,18 +182,9 @@ concat (num, va_alist) /* Print a message on stdout. */ void -#if HAVE_ANSI_COMPILER && USE_VARIADIC && HAVE_STDARG_H message (int prefix, const char *fmt, ...) -#else -message (prefix, fmt, va_alist) - int prefix; - const char *fmt; - va_dcl -#endif { -#if USE_VARIADIC va_list args; -#endif log_working_directory (1, 0); @@ -245,9 +200,9 @@ message (prefix, fmt, va_alist) else printf ("%s[%u]: ", program, makelevel); } - VA_START (args, fmt); - VA_PRINTF (stdout, fmt, args); - VA_END (args); + va_start (args, fmt); + vfprintf (stdout, fmt, args); + va_end (args); putchar ('\n'); if (output_sync) @@ -260,18 +215,9 @@ message (prefix, fmt, va_alist) /* Print an error message. */ void -#if HAVE_ANSI_COMPILER && USE_VARIADIC && HAVE_STDARG_H error (const gmk_floc *flocp, const char *fmt, ...) -#else -error (flocp, fmt, va_alist) - const gmk_floc *flocp; - const char *fmt; - va_dcl -#endif { -#if USE_VARIADIC va_list args; -#endif if (output_sync) log_working_directory (1, 1); @@ -285,9 +231,9 @@ error (flocp, fmt, va_alist) else fprintf (stderr, "%s[%u]: ", program, makelevel); - VA_START(args, fmt); - VA_PRINTF (stderr, fmt, args); - VA_END (args); + va_start (args, fmt); + vfprintf (stderr, fmt, args); + va_end (args); putc ('\n', stderr); fflush (stderr); @@ -299,18 +245,9 @@ error (flocp, fmt, va_alist) /* Print an error message and exit. */ void -#if HAVE_ANSI_COMPILER && USE_VARIADIC && HAVE_STDARG_H fatal (const gmk_floc *flocp, const char *fmt, ...) -#else -fatal (flocp, fmt, va_alist) - const gmk_floc *flocp; - const char *fmt; - va_dcl -#endif { -#if USE_VARIADIC va_list args; -#endif if (output_sync) log_working_directory (1, 1); @@ -324,9 +261,9 @@ fatal (flocp, fmt, va_alist) else fprintf (stderr, "%s[%u]: *** ", program, makelevel); - VA_START(args, fmt); - VA_PRINTF (stderr, fmt, args); - VA_END (args); + va_start (args, fmt); + vfprintf (stderr, fmt, args); + va_end (args); fputs (_(". Stop.\n"), stderr); -- 2.7.4