[SV 35248] Add --debug "n" flag to turn off current debug options.
authorPaul Smith <psmith@gnu.org>
Sun, 15 Sep 2013 01:01:10 +0000 (21:01 -0400)
committerPaul Smith <psmith@gnu.org>
Sun, 15 Sep 2013 01:01:10 +0000 (21:01 -0400)
ChangeLog
NEWS
doc/make.texi
main.c
make.1
output.c

index 68c771d25fdd8074c844e8714ad994bf94d52dd9..16cf70fea3df0054a42e22e2a63518eecfc4028d 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,13 @@
 2013-09-14  Paul Smith  <psmith@gnu.org>
 
+       Fix Savannah bug #35248.
+
+       * main.c (decode_debug_flags): Add support for the "n" flag to
+       disable all debugging.
+       * make.1: Document the "n" (none) flag.
+       * doc/make.texi (Options Summary): Ditto.
+       * NEWS: Ditto.
+
        Fix Savannah bug #33134.  Suggested by David Boyce <dsb@boyski.com>.
 
        * misc.c (close_stdout): Move to output.c.
diff --git a/NEWS b/NEWS
index cf234b702ce7c88db47f8c2f78399e49feee60b0..c36dab0aaff5ef823bb225a9c241720cf8e2e469 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -34,9 +34,10 @@ http://sv.gnu.org/bugs/index.php?group=make&report_id=111&fix_release_id=101&set
   the recipe to be invoked is printed even if it would otherwise be suppressed
   by .SILENT or a "@" prefix character.  Also before each recipe is run the
   makefile name and linenumber where it was defined are shown as well as the
-  prerequisites that caused the target to be considered out of date.  If the
-  "dir" option argument is given, it will display directory enter/leave
-  logging around each block of synchronized output.
+  prerequisites that caused the target to be considered out of date.
+
+* New command line option argument: --debug now accepts a "n" (none) flag
+  which disables all debugging settings that are currently enabled.
 
 * New feature: The "job server" capability is now supported on Windows.
   Implementation contributed by Troy Runkel <Troy.Runkel@mathworks.com>
index 975f0b372d3b2ffedb1fdea78c7a34415faa19c8..169f8fa02e636654bea3a25268fb1ff7a910f180 100644 (file)
@@ -8595,6 +8595,10 @@ By default, the above messages are not enabled while trying to remake
 the makefiles.  This option enables messages while rebuilding makefiles,
 too.  Note that the @samp{all} option does enable this option.  This
 option also enables @samp{basic} messages.
+
+@item n (@i{none})
+Disable all debugging currently enabled.  If additional debugging
+flags are encountered after this they will still take effect.
 @end table
 
 @item -e
diff --git a/main.c b/main.c
index eacab286d5d79535b7933987255ac96dc3853c3f..575ca92f009aac49553bb03eef83fd6c6c64b2a8 100644 (file)
--- a/main.c
+++ b/main.c
@@ -714,6 +714,9 @@ decode_debug_flags (void)
               case 'm':
                 db_level |= DB_BASIC | DB_MAKEFILES;
                 break;
+              case 'n':
+                db_level = 0;
+                break;
               case 'v':
                 db_level |= DB_BASIC | DB_VERBOSE;
                 break;
@@ -723,7 +726,10 @@ decode_debug_flags (void)
 
             while (*(++p) != '\0')
               if (*p == ',' || *p == ' ')
-                break;
+                {
+                  ++p;
+                  break;
+                }
 
             if (*p == '\0')
               break;
@@ -732,6 +738,9 @@ decode_debug_flags (void)
 
   if (db_level)
     verify_flag = 1;
+
+  if (! db_level)
+    debug_flag = 0;
 }
 
 static void
diff --git a/make.1 b/make.1
index 87ee42edb33b4af94ba173b9a995bf82c81473ae..94536fe6fe754c941c86d2934983881ed78d703a 100644 (file)
--- a/make.1
+++ b/make.1
@@ -143,7 +143,9 @@ for showing implicit rules,
 .I j
 for details on invocation of commands, and
 .I m
-for debugging while remaking makefiles.
+for debugging while remaking makefiles.  Use
+.I n
+to disable all previous debugging flags.
 .TP 0.5i
 \fB\-e\fR, \fB\-\-environment\-overrides\fR
 Give variables taken from the environment precedence
index 646343253c450113fb9d3118791b378bb93f8175..c9e19099781fd127d0513c4533af952e02b4be14 100644 (file)
--- a/output.c
+++ b/output.c
@@ -186,7 +186,7 @@ static sync_handle_t sync_handle = -1;
 static int
 sync_init ()
 {
-  int combined_output;
+  int combined_output = 0;
 
 #ifdef WINDOWS32
   if ((!STREAM_OK (stdout) && !STREAM_OK (stderr))