Module Name: src
Committed By: rillig
Date: Mon Dec 13 22:26:21 UTC 2021
Modified Files:
src/usr.bin/make: main.c make.h
Log Message:
make: convert debugging flags from enum to bit-field
This gets rid of the magic numbers, making it possible to add another
debug flag without renumbering the others.
No functional change.
To generate a diff of this commit:
cvs rdiff -u -r1.542 -r1.543 src/usr.bin/make/main.c
cvs rdiff -u -r1.271 -r1.272 src/usr.bin/make/make.h
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/usr.bin/make/main.c
diff -u src/usr.bin/make/main.c:1.542 src/usr.bin/make/main.c:1.543
--- src/usr.bin/make/main.c:1.542 Mon Dec 13 05:25:04 2021
+++ src/usr.bin/make/main.c Mon Dec 13 22:26:21 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: main.c,v 1.542 2021/12/13 05:25:04 rillig Exp $ */
+/* $NetBSD: main.c,v 1.543 2021/12/13 22:26:21 rillig Exp $ */
/*
* Copyright (c) 1988, 1989, 1990, 1993
@@ -111,7 +111,7 @@
#include "trace.h"
/* "@(#)main.c 8.3 (Berkeley) 3/19/94" */
-MAKE_RCSID("$NetBSD: main.c,v 1.542 2021/12/13 05:25:04 rillig Exp $");
+MAKE_RCSID("$NetBSD: main.c,v 1.543 2021/12/13 22:26:21 rillig Exp $");
#if defined(MAKE_NATIVE) && !defined(lint)
__COPYRIGHT("@(#) Copyright (c) 1988, 1989, 1990, 1993 "
"The Regents of the University of California. "
@@ -247,79 +247,79 @@ MainParseArgDebug(const char *argvalue)
for (modules = argvalue; *modules != '\0'; modules++) {
switch (*modules) {
case '0': /* undocumented, only intended for tests */
- debug = DEBUG_NONE;
+ memset(&debug, 0, sizeof(debug));
break;
case 'A':
- debug = DEBUG_ALL;
+ memset(&debug, ~0, sizeof(debug));
break;
case 'a':
- debug |= DEBUG_ARCH;
+ debug.DEBUG_ARCH = true;
break;
case 'C':
- debug |= DEBUG_CWD;
+ debug.DEBUG_CWD = true;
break;
case 'c':
- debug |= DEBUG_COND;
+ debug.DEBUG_COND = true;
break;
case 'd':
- debug |= DEBUG_DIR;
+ debug.DEBUG_DIR = true;
break;
case 'e':
- debug |= DEBUG_ERROR;
+ debug.DEBUG_ERROR = true;
break;
case 'f':
- debug |= DEBUG_FOR;
+ debug.DEBUG_FOR = true;
break;
case 'g':
if (modules[1] == '1') {
- debug |= DEBUG_GRAPH1;
+ debug.DEBUG_GRAPH1 = true;
modules++;
} else if (modules[1] == '2') {
- debug |= DEBUG_GRAPH2;
+ debug.DEBUG_GRAPH2 = true;
modules++;
} else if (modules[1] == '3') {
- debug |= DEBUG_GRAPH3;
+ debug.DEBUG_GRAPH3 = true;
modules++;
}
break;
case 'h':
- debug |= DEBUG_HASH;
+ debug.DEBUG_HASH = true;
break;
case 'j':
- debug |= DEBUG_JOB;
+ debug.DEBUG_JOB = true;
break;
case 'L':
opts.strict = true;
break;
case 'l':
- debug |= DEBUG_LOUD;
+ debug.DEBUG_LOUD = true;
break;
case 'M':
- debug |= DEBUG_META;
+ debug.DEBUG_META = true;
break;
case 'm':
- debug |= DEBUG_MAKE;
+ debug.DEBUG_MAKE = true;
break;
case 'n':
- debug |= DEBUG_SCRIPT;
+ debug.DEBUG_SCRIPT = true;
break;
case 'p':
- debug |= DEBUG_PARSE;
+ debug.DEBUG_PARSE = true;
break;
case 's':
- debug |= DEBUG_SUFF;
+ debug.DEBUG_SUFF = true;
break;
case 't':
- debug |= DEBUG_TARG;
+ debug.DEBUG_TARG = true;
break;
case 'V':
opts.debugVflag = true;
break;
case 'v':
- debug |= DEBUG_VAR;
+ debug.DEBUG_VAR = true;
break;
case 'x':
- debug |= DEBUG_SHELL;
+ debug.DEBUG_SHELL = true;
break;
case 'F':
MainParseArgDebugFile(modules + 1);
@@ -1114,7 +1114,7 @@ static void
CmdOpts_Init(void)
{
opts.compatMake = false;
- opts.debug = DEBUG_NONE;
+ memset(&opts.debug, 0, sizeof(opts.debug));
/* opts.debug_file has already been initialized earlier */
opts.strict = false;
opts.debugVflag = false;
Index: src/usr.bin/make/make.h
diff -u src/usr.bin/make/make.h:1.271 src/usr.bin/make/make.h:1.272
--- src/usr.bin/make/make.h:1.271 Mon Dec 13 05:25:04 2021
+++ src/usr.bin/make/make.h Mon Dec 13 22:26:21 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: make.h,v 1.271 2021/12/13 05:25:04 rillig Exp $ */
+/* $NetBSD: make.h,v 1.272 2021/12/13 22:26:21 rillig Exp $ */
/*
* Copyright (c) 1988, 1989, 1990, 1993
@@ -543,34 +543,32 @@ extern pid_t myPid;
# define MAKE_LEVEL_ENV "MAKELEVEL"
#endif
-typedef enum DebugFlags {
- DEBUG_NONE = 0,
- DEBUG_ARCH = 1 << 0,
- DEBUG_COND = 1 << 1,
- DEBUG_CWD = 1 << 2,
- DEBUG_DIR = 1 << 3,
- DEBUG_ERROR = 1 << 4,
- DEBUG_FOR = 1 << 5,
- DEBUG_GRAPH1 = 1 << 6,
- DEBUG_GRAPH2 = 1 << 7,
- DEBUG_GRAPH3 = 1 << 8,
- DEBUG_HASH = 1 << 9,
- DEBUG_JOB = 1 << 10,
- DEBUG_LOUD = 1 << 11,
- DEBUG_MAKE = 1 << 12,
- DEBUG_META = 1 << 13,
- DEBUG_PARSE = 1 << 14,
- DEBUG_SCRIPT = 1 << 15,
- DEBUG_SHELL = 1 << 16,
- DEBUG_SUFF = 1 << 17,
- DEBUG_TARG = 1 << 18,
- DEBUG_VAR = 1 << 19,
- DEBUG_ALL = (1 << 20) - 1
+typedef struct DebugFlags {
+ bool DEBUG_ARCH: 1;
+ bool DEBUG_COND: 1;
+ bool DEBUG_CWD: 1;
+ bool DEBUG_DIR: 1;
+ bool DEBUG_ERROR: 1;
+ bool DEBUG_FOR: 1;
+ bool DEBUG_GRAPH1: 1;
+ bool DEBUG_GRAPH2: 1;
+ bool DEBUG_GRAPH3: 1;
+ bool DEBUG_HASH: 1;
+ bool DEBUG_JOB: 1;
+ bool DEBUG_LOUD: 1;
+ bool DEBUG_MAKE: 1;
+ bool DEBUG_META: 1;
+ bool DEBUG_PARSE: 1;
+ bool DEBUG_SCRIPT: 1;
+ bool DEBUG_SHELL: 1;
+ bool DEBUG_SUFF: 1;
+ bool DEBUG_TARG: 1;
+ bool DEBUG_VAR: 1;
} DebugFlags;
#define CONCAT(a, b) a##b
-#define DEBUG(module) ((opts.debug & CONCAT(DEBUG_, module)) != 0)
+#define DEBUG(module) (opts.debug.CONCAT(DEBUG_, module))
void debug_printf(const char *, ...) MAKE_ATTR_PRINTFLIKE(1, 2);