summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Smith <psmith@gnu.org>2022-10-28 13:03:18 -0400
committerPaul Smith <psmith@gnu.org>2022-10-29 13:36:21 -0400
commit1dd52ab472e9dffa0cbdcdc68f196b64ce2abfc4 (patch)
treebe776d0dc6afeebb66cd012daf9319a04ea91618
parent92789aa2e7586450b1a202f0e451445264b5fbbd (diff)
downloadmake-git-1dd52ab472e9dffa0cbdcdc68f196b64ce2abfc4.tar.gz
Avoid C99 constructs
Although gnulib requires C99, most of the code does compile with a C90 compiler (perhaps with a lot of warnings). Reinstate our C90 configuration test, and clean up a few C99 things that crept in. * src/job.c (construct_command_argv_internal): Don't use loop-local variables or C++ comments. * src/read.c (eval_makefile): Don't use loop-local variables.
-rw-r--r--maintMakefile4
-rw-r--r--src/job.c6
-rw-r--r--src/read.c35
3 files changed, 25 insertions, 20 deletions
diff --git a/maintMakefile b/maintMakefile
index fb98a42f..b9f822ad 100644
--- a/maintMakefile
+++ b/maintMakefile
@@ -259,7 +259,8 @@ CFGCHECK_BUILDFLAGS =
# as well, and that will fail.
CFGCHECK_MAKEFLAGS = # CFLAGS='$(AM_CFLAGS)'
-# This test can no longer be run: now that we rely on gnulib we must use C99+
+# We don't support C90 anymore, strictly, but this test still works (with lots
+# of warnings) and it helps us avoid egregious incompatibilities.
checkcfg.strict-c90: CFGCHECK_CONFIGFLAGS = CFLAGS='-std=c90 -pedantic'
checkcfg.strict-c90: CFGCHECK_MAKEFLAGS =
@@ -277,6 +278,7 @@ checkcfg.no-sync: CFGCHECK_CONFIGFLAGS = CPPFLAGS=-DNO_OUTPUT_SYNC
checkcfg.no-archives: CFGCHECK_CONFIGFLAGS = CPPFLAGS=-DNO_ARCHIVES
CONFIG_CHECKS := \
+ checkcfg.strict-c90 \
checkcfg.no-jobserver \
checkcfg.no-load \
checkcfg.no-guile \
diff --git a/src/job.c b/src/job.c
index bebe16e8..ed951026 100644
--- a/src/job.c
+++ b/src/job.c
@@ -3376,12 +3376,12 @@ construct_command_argv_internal (char *line, char **restp, const char *shell,
{
/* Parse shellflags using construct_command_argv_internal to
handle quotes. */
- char **argv;
+ char **argv, **a;
char *f;
- f = alloca (sflags_len + 1); // +1 for null terminator.
+ f = alloca (sflags_len + 1); /* +1 for null terminator. */
memcpy (f, shellflags, sflags_len + 1);
argv = construct_command_argv_internal (f, 0, 0, 0, 0, flags, 0);
- for (char **a = argv; a && *a; ++a)
+ for (a = argv; a && *a; ++a)
new_argv[n++] = *a;
free (argv);
}
diff --git a/src/read.c b/src/read.c
index a7200190..07431240 100644
--- a/src/read.c
+++ b/src/read.c
@@ -375,23 +375,26 @@ eval_makefile (const char *filename, unsigned short flags)
makefile search path for this makefile. */
if (ebuf.fp == NULL && deps->error == ENOENT && (flags & RM_INCLUDED)
&& *filename != '/' && include_directories)
- for (const char **dir = include_directories; *dir != NULL; ++dir)
- {
- const char *included = concat (3, *dir, "/", filename);
+ {
+ const char **dir;
+ for (dir = include_directories; *dir != NULL; ++dir)
+ {
+ const char *included = concat (3, *dir, "/", filename);
- ENULLLOOP(ebuf.fp, fopen (included, "r"));
- if (ebuf.fp)
- {
- filename = included;
- break;
- }
- if (errno != ENOENT)
- {
- filename = included;
- deps->error = errno;
- break;
- }
- }
+ ENULLLOOP(ebuf.fp, fopen (included, "r"));
+ if (ebuf.fp)
+ {
+ filename = included;
+ break;
+ }
+ if (errno != ENOENT)
+ {
+ filename = included;
+ deps->error = errno;
+ break;
+ }
+ }
+ }
/* Enter the final name for this makefile as a goaldep. */
filename = strcache_add (filename);