We would Wget to silently ignore the --debug flag if it is passed to it and
the executable was compiled without debugging support.

This is required so that existing commands / scripts that call the --debug
flag will still work.

I am attaching a patch which will cause Wget to turn the --debug flag into
a no-op on non-debugging systems.

-- 
Thanking You,
Darshit Shah
From 5123b7e73912d18355eddea40b7b49ba3fa1ab2d Mon Sep 17 00:00:00 2001
From: Darshit Shah <[email protected]>
Date: Wed, 29 Jan 2014 00:41:46 +0530
Subject: [PATCH] Turn --debug into no-op if compiled without debug support

---
 src/ChangeLog | 10 ++++++++++
 src/init.c    |  2 --
 src/main.c    | 19 ++++++++++---------
 src/options.h |  2 --
 4 files changed, 20 insertions(+), 13 deletions(-)

diff --git a/src/ChangeLog b/src/ChangeLog
index 199b480..7c2130e 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,13 @@
+2014-01-29  Darshit Shah  <[email protected]>
+
+	* main.c: Remove pre-processor variable WHEN_DEBUG
+	(option_data[]): Do not fail on --debug even if debug support is not
+	compiled in.
+	(main): Explicitly set opt.debug to false in case debugging support was not
+	compiled.
+	* init.c (commands[]): Support --debug wven when support is not compiled in.
+	* options.h: Same
+
 2014-01-17  Darshit Shah  <[email protected]>
 
 	* init.c (commands[]): Add --no-config.
diff --git a/src/init.c b/src/init.c
index 43d5ae9..56fef50 100644
--- a/src/init.c
+++ b/src/init.c
@@ -157,9 +157,7 @@ static const struct {
   { "convertlinks",     &opt.convert_links,     cmd_boolean },
   { "cookies",          &opt.cookies,           cmd_boolean },
   { "cutdirs",          &opt.cut_dirs,          cmd_number },
-#ifdef ENABLE_DEBUG
   { "debug",            &opt.debug,             cmd_boolean },
-#endif
   { "defaultpage",      &opt.default_page,      cmd_string },
   { "deleteafter",      &opt.delete_after,      cmd_boolean },
   { "dirprefix",        &opt.dir_prefix,        cmd_directory },
diff --git a/src/main.c b/src/main.c
index 64793d8..beece6a 100644
--- a/src/main.c
+++ b/src/main.c
@@ -128,12 +128,6 @@ static void print_version (void);
 # define IF_SSL(x) NULL
 #endif
 
-#ifdef ENABLE_DEBUG
-# define WHEN_DEBUG(x) x
-#else
-# define WHEN_DEBUG(x) NULL
-#endif
-
 struct cmdline_option {
   const char *long_name;
   char short_name;
@@ -184,7 +178,7 @@ static struct cmdline_option option_data[] =
     { "content-on-error", 0, OPT_BOOLEAN, "contentonerror", -1 },
     { "cookies", 0, OPT_BOOLEAN, "cookies", -1 },
     { "cut-dirs", 0, OPT_VALUE, "cutdirs", -1 },
-    { WHEN_DEBUG ("debug"), 'd', OPT_BOOLEAN, "debug", -1 },
+    { "debug", 'd', OPT_BOOLEAN, "debug", -1 },
     { "default-page", 0, OPT_VALUE, "defaultpage", -1 },
     { "delete-after", 0, OPT_BOOLEAN, "deleteafter", -1 },
     { "directories", 0, OPT_BOOLEAN, "dirstruct", -1 },
@@ -312,7 +306,6 @@ static struct cmdline_option option_data[] =
 #endif
   };
 
-#undef WHEN_DEBUG
 #undef IF_SSL
 
 /* Return a string that contains S with "no-" prepended.  The string
@@ -1215,9 +1208,17 @@ main (int argc, char **argv)
 
   nurl = argc - optind;
 
+  /* If we do not have Debug support compiled in AND Wget is invoked with the
+   * --debug switch, instead of failing, we silently turn it into a no-op. For
+   *  this no-op, we explicitly set opt.debug to false and hence none of the
+   *  Debug output messages will be priinted.
+   */
+#ifndef ENABLE_DEBUG
+  opt.debug = false;
+#endif
+
   /* All user options have now been processed, so it's now safe to do
      interoption dependency checks. */
-
   if (opt.noclobber && opt.convert_links)
     {
       fprintf (stderr,
diff --git a/src/options.h b/src/options.h
index 9728202..368410d 100644
--- a/src/options.h
+++ b/src/options.h
@@ -156,9 +156,7 @@ struct options
   bool content_on_error;	/* Do we output the content when the HTTP
 				   status code indicates a server error */
 
-#ifdef ENABLE_DEBUG
   bool debug;			/* Debugging on/off */
-#endif
 
 #ifdef USE_WATT32
   bool wdebug;                  /* Watt-32 tcp/ip debugging on/off */
-- 
1.8.5.3

Reply via email to