diff -u -r -N original/src/skels/c_source.cc patched/src/skels/c_source.cc
--- original/src/skels/c_source.cc	2007-07-28 06:29:25.000000000 -0400
+++ patched/src/skels/c_source.cc	2007-10-08 15:15:29.000000000 -0400
@@ -617,6 +617,9 @@
   stream << "      params->check_ambiguity = 0;";
   stream << "\n";
   stream << indent_str;
+  stream << "      params->print_errors = 0;";
+  stream << "\n";
+  stream << indent_str;
   stream << "    }";
   stream << "\n";
   stream << indent_str;
@@ -1401,6 +1404,9 @@
   stream << "  params.check_ambiguity = 0;";
   stream << "\n";
   stream << indent_str;
+  stream << "  params.print_errors = 1;";
+  stream << "\n";
+  stream << indent_str;
   stream << "\n";
   stream << indent_str;
   stream << "  result = ";
@@ -1635,7 +1641,7 @@
   stream << "  optind = 0;";
   stream << "\n";
   stream << indent_str;
-  stream << "  opterr = 1;";
+  stream << "  opterr = params->print_errors;";
   stream << "\n";
   stream << indent_str;
   stream << "  optopt = '?';";
@@ -2451,6 +2457,9 @@
       stream << "  params.check_ambiguity = 0;";
       stream << "\n";
       stream << indent_str;
+      stream << "  params.print_errors = 1;";
+      stream << "\n";
+      stream << indent_str;
       indent = 2;
       stream << "  ";
       indent = 0;
@@ -2837,6 +2846,9 @@
       stream << "  params.check_ambiguity = 0;";
       stream << "\n";
       stream << indent_str;
+      stream << "  params.print_errors = 1;";
+      stream << "\n";
+      stream << indent_str;
       stream << "\n";
       stream << indent_str;
       stream << "  return ";
diff -u -r -N original/src/skels/c_source.h_skel patched/src/skels/c_source.h_skel
--- original/src/skels/c_source.h_skel	2007-07-28 06:29:19.000000000 -0400
+++ patched/src/skels/c_source.h_skel	2007-10-08 15:15:06.000000000 -0400
@@ -172,6 +172,7 @@
       params->initialize = 0;
       params->check_required = 0;
       params->check_ambiguity = 0;
+      params->print_errors = 0;
     }
     
   return params;
@@ -432,6 +433,7 @@
   params.initialize = initialize;
   params.check_required = check_required;
   params.check_ambiguity = 0;
+  params.print_errors = 1;
 
   result = @parser_name@_internal (argc, argv, args_info, &params, NULL);
 
@@ -500,7 +502,7 @@
 
   optarg = 0;
   optind = 0;
-  opterr = 1;
+  opterr = params->print_errors;
   optopt = '?';
 
   while (1)
@@ -766,6 +768,7 @@
   params.initialize = initialize;
   params.check_required = check_required;
   params.check_ambiguity = 0;
+  params.print_errors = 1;
   
   return @parser_name@_config_file (filename, args_info, &params);
 }
@@ -893,6 +896,7 @@
   params.initialize = initialize;
   params.check_required = check_required;
   params.check_ambiguity = 0;
+  params.print_errors = 1;
 
   return @parser_name@_string_ext(cmdline, args_info, prog_name, &params);
 }
diff -u -r -N original/src/skels/header.cc patched/src/skels/header.cc
--- original/src/skels/header.cc	2007-07-28 05:32:39.000000000 -0400
+++ patched/src/skels/header.cc	2007-10-08 15:15:14.000000000 -0400
@@ -198,6 +198,11 @@
   stream << " (default 0) */";
   stream << "\n";
   stream << indent_str;
+  stream << "  int print_errors; /**< ";
+  stream << "@";
+  stream << "brief whether getopt_long should print an error message for a bad option (default 0) */";
+  stream << "\n";
+  stream << indent_str;
   stream << "} ;";
   stream << "\n";
   stream << indent_str;
diff -u -r -N original/src/skels/header.h_skel patched/src/skels/header.h_skel
--- original/src/skels/header.h_skel	2007-07-28 05:32:37.000000000 -0400
+++ patched/src/skels/header.h_skel	2007-10-08 15:14:44.000000000 -0400
@@ -42,6 +42,7 @@
   int initialize; /**< @@brief whether to initialize the option structure @args_info@ (default 0) */
   int check_required; /**< @@brief whether to check that all required options were provided (default 0) */
   int check_ambiguity; /**< @@brief whether to check for options already specified in the option structure @args_info@ (default 0) */
+  int print_errors; /**< @@brief whether getopt_long should print an error message for a bad option (default 0) */
 } ;
 
 /** @@brief the purpose string of the program */
