Rocco Rutte:
authorpdmef <pdmef@e385b8ad-14ed-0310-8656-cc95a2468c6d>
Sat, 27 Aug 2005 17:45:30 +0000 (17:45 +0000)
committerpdmef <pdmef@e385b8ad-14ed-0310-8656-cc95a2468c6d>
Sat, 27 Aug 2005 17:45:30 +0000 (17:45 +0000)
- make debug level tunable at runtime to get better less noisy results
- add missing chunk for main.c in connection with variable dumping

git-svn-id: svn://svn.berlios.de/mutt-ng/trunk@453 e385b8ad-14ed-0310-8656-cc95a2468c6d

UPGRADING
VERSION.svn
init.c
init.h
main.c

index 1677d71..cb0fbf8 100644 (file)
--- a/UPGRADING
+++ b/UPGRADING
@@ -12,6 +12,8 @@ sources of information.
 
 2005-08-27:
 
+  The $debug_level option has been added.
+
   It's now possible to define and use arbitrary self-defined
   variables as long as prefixed with user_.
 
index 8670c73..534b992 100644 (file)
@@ -1 +1 @@
-452
+453
diff --git a/init.c b/init.c
index 419d892..7d2f1e6 100644 (file)
--- a/init.c
+++ b/init.c
@@ -88,6 +88,10 @@ static int check_history    (const char* option, unsigned long val,
 /* this checks that numbers are >= 0 */
 static int check_num        (const char* option, unsigned long val,
                              char* errbuf, size_t errlen);
+#ifdef DEBUG
+static int check_debug      (const char* option, unsigned long val,
+                             char* errbuf, size_t errlen);
+#endif
 
 /* use this to check only */
 static int check_special (const char* option, unsigned long val,
@@ -109,6 +113,9 @@ static struct {
 #endif
   { "history",                  check_history },
   { "pager_index_lines",        check_num },
+#ifdef DEBUG
+  { "debug_level",              check_debug },
+#endif
   /* last */
   { NULL,         NULL }
 };
@@ -1412,6 +1419,19 @@ static int check_num (const char* option, unsigned long p,
   return (1);
 }
 
+#ifdef DEBUG
+static int check_debug (const char* option, unsigned long p,
+                        char* errbuf, size_t errlen) {
+  if ((int) p <= DEBUG_MAX_LEVEL &&
+      (int) p >= DEBUG_MIN_LEVEL)
+    return (1);
+
+  if (errbuf)
+    snprintf (errbuf, errlen, _("'%d' is invalid for $%s"), (int) p, option);
+  return (0);
+}
+#endif
+
 static int check_history (const char* option, unsigned long p,
                           char* errbuf, size_t errlen) {
   if (!check_num ("history", p, errbuf, errlen))
diff --git a/init.h b/init.h
index fd3d191..4398ad0 100644 (file)
--- a/init.h
+++ b/init.h
@@ -18,6 +18,7 @@
 #endif
 
 #include "buffy.h"
+#include "lib/debug.h"
 
 #ifndef _MAKEDOC
 #define DT_MASK         0x0f
@@ -514,6 +515,24 @@ struct option_t MuttVars[] = {
    ** rest of the string are expanded in the \fIC\fP locale (that is in US
    ** English).
    */
+#ifdef DEBUG
+  {"debug_level", DT_NUM, R_NONE, UL &DebugLevel, "0" },
+  /*
+   ** .pp
+   ** Availability: debug
+   **
+   ** .pp
+   ** This variable specifies the current debug level and
+   ** may be used to increase or decrease the verbosity level
+   ** during runtime. It overrides the level given with the
+   ** \fT-d\fP command line option.
+   **
+   ** .pp
+   ** Currently, this number must be >= 0 and <= 5 and muttng
+   ** must be started with \fT-d\fP to enable debugging at all;
+   ** enabling at runtime is not possible.
+   */
+#endif
   {"default_hook", DT_STR, R_NONE, UL &DefaultHook, "~f %s !~P | (~P ~C %s)"},
   /*
    ** .pp
diff --git a/main.c b/main.c
index b8a5a11..090c913 100644 (file)
--- a/main.c
+++ b/main.c
@@ -132,7 +132,8 @@ static void mutt_usage (void)
     ("usage: muttng [ -nRyzZ ] [ -e <cmd> ] [ -F <file> ] [ -m <type> ] [ -f <file> ]\n\
        muttng [ -nR ] [ -e <cmd> ] [ -F <file> ] -Q <query> [ -Q <query> ] [...]\n\
        muttng [ -nR ] [ -e <cmd> ] [ -F <file> ] -A <alias> [ -A <alias> ] [...]\n\
-       muttng [ -nR ] [ -e <cmd> ] [ -F <file> ] -D\n\
+       muttng [ -nR ] [ -e <cmd> ] [ -F <file> ] -t\n\
+       muttng [ -nR ] [ -e <cmd> ] [ -F <file> ] -T\n\
        muttng [ -nx ] [ -e <cmd> ] [ -a <file> ] [ -F <file> ] [ -H <file> ] [ -i <file> ] [ -s <subj> ] [ -b <addr> ] [ -c <addr> ] <addr> [ ... ]\n\
        muttng [ -n ] [ -e <cmd> ] [ -F <file> ] -p\n\
        muttng -v[v]\n\
@@ -141,8 +142,7 @@ options:\n\
   -A <alias>\texpand the given alias\n\
   -a <file>\tattach a file to the message\n\
   -b <address>\tspecify a blind carbon-copy (BCC) address\n\
-  -c <address>\tspecify a carbon-copy (CC) address\n\
-  -D\t\tprint the value of all variables to stdout");
+  -c <address>\tspecify a carbon-copy (CC) address");
 #if DEBUG
   puts _("  -d <level>\tlog debugging output to ~/.muttngdebug0");
 #endif
@@ -161,6 +161,8 @@ options:\n\
   -Q <variable>\tquery a configuration variable\n\
   -R\t\topen mailbox in read-only mode\n\
   -s <subj>\tspecify a subject (must be in quotes if it has spaces)\n\
+  -t\t\tprint the value of all variables to stdout\n\
+  -T\t\tprint the value of all changed variables to stdout\n\
   -v\t\tshow version and compile-time definitions\n\
   -x\t\tsimulate the mailx send mode\n\
   -y\t\tselect a mailbox specified in your `mailboxes' list\n\
@@ -558,7 +560,7 @@ int main (int argc, char **argv)
   int version = 0;
   int i;
   int explicit_folder = 0;
-  int dump_variables = 0;
+  int dump_variables = -1;
   extern char *optarg;
   extern int optind;
 
@@ -592,10 +594,10 @@ int main (int argc, char **argv)
 #ifdef USE_NNTP
   while ((i =
           getopt (argc, argv,
-                  "A:a:b:F:f:c:Dd:e:g:GH:s:i:hm:npQ:RvxyzZ")) != EOF)
+                  "A:a:b:F:f:c:d:e:g:GH:s:i:hm:npQ:RTtvxyzZ")) != EOF)
 #else
   while ((i =
-          getopt (argc, argv, "A:a:b:F:f:c:Dd:e:H:s:i:hm:npQ:RvxyzZ")) != EOF)
+          getopt (argc, argv, "A:a:b:F:f:c:d:e:H:s:i:hm:npQ:RTtvxyzZ")) != EOF)
 #endif
     switch (i) {
     case 'A':
@@ -633,20 +635,16 @@ int main (int argc, char **argv)
 
     case 'd':
       debug_setlevel(atoi(optarg));
-#ifdef DEBUG
-      if (atoi(optarg) <= DEBUG_MAX_LEVEL && atoi(optarg) >= DEBUG_MIN_LEVEL)
-        printf (_("Debugging at level %d.\n"), atoi(optarg));
-      else {
-        printf(_("Please specify a valid debugging level ("
-                 DEBUG_MIN_LEVEL_S "-" DEBUG_MAX_LEVEL_S ").\n"));
-        return 1;
-      }
-#else
+#ifndef DEBUG
       printf _("DEBUG was not defined during compilation.  Ignored.\n");
 #endif
       break;
 
-    case 'D':
+    case 't':
+      dump_variables = 2;
+      break;
+
+    case 'T':
       dump_variables = 1;
       break;
 
@@ -739,7 +737,7 @@ int main (int argc, char **argv)
   }
 
   /* Check for a batch send. */
-  if (!isatty (0) || queries || alias_queries || dump_variables) {
+  if (!isatty (0) || queries || alias_queries || dump_variables > 0) {
     set_option (OPTNOCURSES);
     sendflags = SENDBATCH;
   }
@@ -759,8 +757,8 @@ int main (int argc, char **argv)
 
   if (queries)
     return mutt_query_variables (queries);
-  if (dump_variables)
-    return (mutt_dump_variables ());
+  if (dump_variables > 0)
+    return (mutt_dump_variables (dump_variables-1));
 
   if (alias_queries) {
     int rv = 0;