Add a new variant for --gen-suppressions: --gen-suppressions=all,
which just prints a suppression for all reported errors without asking
questions.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@3219 a5019735-40e9-0310-863c-91ae7b9d1cf9
diff --git a/coregrind/vg_main.c b/coregrind/vg_main.c
index dffdbff..da36f4d 100644
--- a/coregrind/vg_main.c
+++ b/coregrind/vg_main.c
@@ -1464,7 +1464,7 @@
 Bool   VG_(clo_error_limit)    = True;
 Bool   VG_(clo_db_attach)      = False;
 Char*  VG_(clo_db_command)     = VG_CLO_DEFAULT_DBCOMMAND;
-Bool   VG_(clo_gen_suppressions) = False;
+Int    VG_(clo_gen_suppressions) = 0;
 Int    VG_(clo_sanity_level)   = 1;
 Int    VG_(clo_verbosity)      = 1;
 Bool   VG_(clo_demangle)       = True;
@@ -1547,7 +1547,7 @@
 "    --error-limit=no|yes      stop showing new errors if too many? [yes]\n"
 "    --show-below-main=no|yes  continue stack traces below main() [no]\n"
 "    --suppressions=<filename> suppress errors described in <filename>\n"
-"    --gen-suppressions=no|yes print suppressions for errors detected [no]\n"
+"    --gen-suppressions=no|yes|all    print suppressions for errors? [no]\n"
 "    --db-attach=no|yes        start debugger when errors detected? [no]\n"
 "    --db-command=<command>    command to start debugger [gdb -nw %%f %%p]\n"
 "    --input-fd=<number>       file descriptor for input [0=stdin]\n"
@@ -1746,7 +1746,6 @@
       else VG_BOOL_CLO("--db-attach",        VG_(clo_db_attach))
       else VG_BOOL_CLO("--demangle",         VG_(clo_demangle))
       else VG_BOOL_CLO("--error-limit",      VG_(clo_error_limit))
-      else VG_BOOL_CLO("--gen-suppressions", VG_(clo_gen_suppressions))
       else VG_BOOL_CLO("--lowlat-signals",   VG_(clo_lowlat_signals))
       else VG_BOOL_CLO("--lowlat-syscalls",  VG_(clo_lowlat_syscalls))
       else VG_BOOL_CLO("--pointercheck",     VG_(clo_pointercheck))
@@ -1860,6 +1859,13 @@
       else if (VG_CLO_STREQ(arg, "--trace-pthread=all"))
          VG_(clo_trace_pthread_level) = 2;
 
+      else if (VG_CLO_STREQ(arg, "--gen-suppressions=no"))
+         VG_(clo_gen_suppressions) = 0;
+      else if (VG_CLO_STREQ(arg, "--gen-suppressions=yes"))
+         VG_(clo_gen_suppressions) = 1;
+      else if (VG_CLO_STREQ(arg, "--gen-suppressions=all"))
+         VG_(clo_gen_suppressions) = 2;
+
       else if ( ! VG_(needs).command_line_options
              || ! TL_(process_cmd_line_option)(arg) ) {
          VG_(bad_option)(arg);
@@ -2069,13 +2075,13 @@
       VG_(clo_n_suppressions)++;
    }
 
-   if (VG_(clo_gen_suppressions) && 
+   if (VG_(clo_gen_suppressions) > 0 && 
        !VG_(needs).core_errors && !VG_(needs).tool_errors) {
       VG_(message)(Vg_UserMsg, 
-                   "Can't use --gen-suppressions=yes with this tool,");
+                   "Can't use --gen-suppressions= with this tool,");
       VG_(message)(Vg_UserMsg, 
                    "as it doesn't generate errors.");
-      VG_(bad_option)("--gen-suppressions=yes");
+      VG_(bad_option)("--gen-suppressions=");
    }
 }