From 1c25498492b816e49086d4ca20ffd3e4699e12c9 Mon Sep 17 00:00:00 2001
From: Ronnie Lazar <ronnie@compass-eos.com>
Date: Mon, 23 Apr 2012 18:00:00 +0300
Subject: [PATCH] updated gitignore and adapted to support ignored params

---
 .gitignore                       |    7 +
 doc/gengetopt.info               |  772 ++++++--------------------------------
 doc/stamp-vti                    |    4 +-
 doc/version.texi                 |    4 +-
 src/skels/c_source.cc            |  125 ++++++-
 src/skels/c_source.h             |    2 +-
 src/skels/c_source.h_skel        |   46 ++-
 src/skels/check_modes.cc         |    2 +-
 src/skels/check_modes.h          |    2 +-
 src/skels/clear_arg.cc           |    2 +-
 src/skels/clear_arg.h            |    2 +-
 src/skels/clear_given.cc         |    2 +-
 src/skels/clear_given.h          |    2 +-
 src/skels/copyright.cc           |    2 +-
 src/skels/copyright.h            |    2 +-
 src/skels/custom_getopt_gen.cc   |    2 +-
 src/skels/custom_getopt_gen.h    |    2 +-
 src/skels/dependant_option.cc    |    2 +-
 src/skels/dependant_option.h     |    2 +-
 src/skels/enum_decl.cc           |    2 +-
 src/skels/enum_decl.h            |    2 +-
 src/skels/exit_failure.cc        |    2 +-
 src/skels/exit_failure.h         |    2 +-
 src/skels/file_save.cc           |    2 +-
 src/skels/file_save.h            |    2 +-
 src/skels/file_save_multiple.cc  |    2 +-
 src/skels/file_save_multiple.h   |    2 +-
 src/skels/free_list.cc           |    2 +-
 src/skels/free_list.h            |    2 +-
 src/skels/free_multiple.cc       |    2 +-
 src/skels/free_multiple.h        |    2 +-
 src/skels/free_string.cc         |    2 +-
 src/skels/free_string.h          |    2 +-
 src/skels/generic_option.cc      |    2 +-
 src/skels/generic_option.h       |    2 +-
 src/skels/given_field.cc         |    2 +-
 src/skels/given_field.h          |    2 +-
 src/skels/group_counter.cc       |    2 +-
 src/skels/group_counter.h        |    2 +-
 src/skels/group_option.cc        |    2 +-
 src/skels/group_option.h         |    2 +-
 src/skels/handle_help.cc         |    2 +-
 src/skels/handle_help.h          |    2 +-
 src/skels/handle_version.cc      |    2 +-
 src/skels/handle_version.h       |    2 +-
 src/skels/header.cc              |   26 ++
 src/skels/header.h_skel          |    6 +
 src/skels/init_args_info.cc      |    2 +-
 src/skels/init_args_info.h       |    2 +-
 src/skels/multiple_fill_array.cc |    2 +-
 src/skels/multiple_fill_array.h  |    2 +-
 src/skels/multiple_opt_list.cc   |    2 +-
 src/skels/multiple_opt_list.h    |    2 +-
 src/skels/option_arg.cc          |    2 +-
 src/skels/option_arg.h           |    2 +-
 src/skels/print_help_string.cc   |    2 +-
 src/skels/print_help_string.h    |    2 +-
 src/skels/required_option.cc     |    2 +-
 src/skels/required_option.h      |    2 +-
 src/skels/reset_group.cc         |    2 +-
 src/skels/reset_group.h          |    2 +-
 src/skels/update_given.cc        |    2 +-
 src/skels/update_given.h         |    2 +-
 63 files changed, 362 insertions(+), 738 deletions(-)

diff --git a/.gitignore b/.gitignore
index 6334c86..ed75f8b 100644
--- a/.gitignore
+++ b/.gitignore
@@ -25,3 +25,10 @@ build_mingw
 build
 *.orig
 /build-eclipse
+*.lo
+*.o
+*.la
+*.deps
+*.libs
+doc/
+tests/
diff --git a/doc/gengetopt.info b/doc/gengetopt.info
index cd32b74..c422c03 100644
--- a/doc/gengetopt.info
+++ b/doc/gengetopt.info
@@ -1,7 +1,7 @@
-This is ../../doc/gengetopt.info, produced by makeinfo version 4.13
-from ../../doc/gengetopt.texinfo.
+This is gengetopt.info, produced by makeinfo version 4.11 from
+gengetopt.texinfo.
 
-This manual is for GNU Gengetopt (version 2.22.6, 25 September 2011), a
+This manual is for GNU Gengetopt (version 2.22.6, 18 March 2012), a
 tool to write command line option parsers for C programs.
 
    Copyright (C) 2001 - 2011 Free Software Foundation, Inc.
@@ -36,8 +36,8 @@ programs.
 
    This file documents GNU Gengetopt version 2.22.6.
 
-   This manual is for GNU Gengetopt (version 2.22.6, 25 September 2011),
-a tool to write command line option parsers for C programs.
+   This manual is for GNU Gengetopt (version 2.22.6, 18 March 2012), a
+tool to write command line option parsers for C programs.
 
    Copyright (C) 2001 - 2011 Free Software Foundation, Inc.
 
@@ -554,44 +554,36 @@ the value `"foobar"' will be selected; instead, passing the value
 
    Here's an example of such a file (the file is called `sample1.ggo')
 
-     # Name of your program
-     package "sample1" # don't use package if you're using automake
-     # Version of your program
-     version "2.0"   # don't use version if you're using automake
-
-     # Options
-     option  "str-opt"         s "A string option, for a filename"
-             string typestr="filename"     optional
-     text "\nA brief text description"
-     text " before the other options.\n"
-     option  "my-opt"          m "Another integer option, \
-     this time the description of the option should be \"quite\" long to \
-     require wrapping... possibly more than one wrapping :-) \
-     especially if I\nrequire a line break"      int     optional
-     option  "int-opt"         i "A int option"         int        yes
-     section "more involved options"
-             sectiondesc="the following options\nare more complex"
-     text ""
-     option  "flag-opt"        - "A flag option"        flag       off
-     option  "funct-opt"       F "A function option"    optional
-         details="\nA function option is basically an option with no argument.\
-       It can be used, e.g., to specify a specific behavior for a program.
-
-     Well, this further explanation is quite useless, but it's only to \
-     show an example of an option with details, \
-     which will be printed only when --detailed-help is given \
-     at the command line."
-     section "last option section"
-     option  "long-opt"        - "A long option"        long       optional
-     option  "def-opt"         - "A string option with default"
-             string default="Hello" optional
-     option  "enum-opt"         - "A string option with list of values"
-             values="foo","bar","hello","bye" default="hello" optional
-     option  "secret"         S "hidden option will not appear in --help"
-             int optional hidden
-     option  "dependant"         D
-             "option that depends on str-opt" int optional dependon="str-opt"
-     text "\nAn ending text."
+   # Name of your program package "sample1" # don't use package if
+you're using automake # Version of your program version "2.0"   # don't
+use version if you're using automake
+
+   # Options option  "str-opt"         s "A string option, for a
+filename"         string typestr="filename"     optional text "\nA
+brief text description" text " before the other options.\n" option
+"my-opt"          m "Another integer option, \ this time the
+description of the option should be \"quite\" long to \ require
+wrapping... possibly more than one wrapping :-) \ especially if
+I\nrequire a line break"      int     optional option  "int-opt"
+i "A int option"         int        yes section "more involved options"
+       sectiondesc="the following options\nare more complex" text ""
+option  "flag-opt"        - "A flag option"        flag       off
+option  "funct-opt"       F "A function option"    optional
+details="\nA function option is basically an option with no argument.\
+It can be used, e.g., to specify a specific behavior for a program.
+
+   Well, this further explanation is quite useless, but it's only to \
+show an example of an option with details, \ which will be printed only
+when -detailed-help is given \ at the command line."  section "last
+option section" option  "long-opt"        - "A long option"        long
+     optional option  "def-opt"         - "A string option with default"
+       string default="Hello" optional option  "enum-opt"         - "A
+string option with list of values"
+values="foo","bar","hello","bye" default="hello" optional option
+"secret"         S "hidden option will not appear in -help"         int
+optional hidden option  "dependant"         D         "option that
+depends on str-opt" int optional dependon="str-opt" text "\nAn ending
+text."
 
    The simplest way to use gengetopt is to pass this file as the
 standard input, i.e.:
@@ -612,238 +604,6 @@ these additional names (default is `FILES').
 
    In `cmdline1.h' you'll find the generated C struct:
 
-     /** @file cmdline1.h
-      *  @brief The header file for the command line option parser
-      *  generated by GNU Gengetopt version 2.22.5
-      *  http://www.gnu.org/software/gengetopt.
-      *  DO NOT modify this file, since it can be overwritten
-      *  @author GNU Gengetopt by Lorenzo Bettini */
-
-     #ifndef CMDLINE1_H
-     #define CMDLINE1_H
-
-     /* If we use autoconf.  */
-     #ifdef HAVE_CONFIG_H
-     #include "config.h"
-     #endif
-
-     #include <stdio.h> /* for FILE */
-
-     #ifdef __cplusplus
-     extern "C" {
-     #endif /* __cplusplus */
-
-     #ifndef CMDLINE_PARSER_PACKAGE
-     /** @brief the program name (used for printing errors) */
-     #define CMDLINE_PARSER_PACKAGE "sample1"
-     #endif
-
-     #ifndef CMDLINE_PARSER_PACKAGE_NAME
-     /** @brief the complete program name (used for help and version) */
-     #define CMDLINE_PARSER_PACKAGE_NAME "sample1"
-     #endif
-
-     #ifndef CMDLINE_PARSER_VERSION
-     /** @brief the program version */
-     #define CMDLINE_PARSER_VERSION "2.0"
-     #endif
-
-     /** @brief Where the command line options are stored */
-     struct gengetopt_args_info
-     {
-       const char *help_help; /**< @brief Print help and exit help description.  */
-       const char *detailed_help_help; /**< @brief Print help, including all details and hidden options, and exit help description.  */
-       const char *full_help_help; /**< @brief Print help, including hidden options, and exit help description.  */
-       const char *version_help; /**< @brief Print version and exit help description.  */
-       char * str_opt_arg;       /**< @brief A string option, for a filename.  */
-       char * str_opt_orig;       /**< @brief A string option, for a filename original value given at command line.  */
-       const char *str_opt_help; /**< @brief A string option, for a filename help description.  */
-       int my_opt_arg;       /**< @brief Another integer option, this time the description of the option should be \"quite\" long to require wrapping... possibly more than one wrapping :-) especially if I
-       require a line break.  */
-       char * my_opt_orig;       /**< @brief Another integer option, this time the description of the option should be \"quite\" long to require wrapping... possibly more than one wrapping :-) especially if I
-       require a line break original value given at command line.  */
-       const char *my_opt_help; /**< @brief Another integer option, this time the description of the option should be \"quite\" long to require wrapping... possibly more than one wrapping :-) especially if I
-       require a line break help description.  */
-       int int_opt_arg;       /**< @brief A int option.  */
-       char * int_opt_orig;       /**< @brief A int option original value given at command line.  */
-       const char *int_opt_help; /**< @brief A int option help description.  */
-       int flag_opt_flag;       /**< @brief A flag option (default=off).  */
-       const char *flag_opt_help; /**< @brief A flag option help description.  */
-       const char *funct_opt_help; /**< @brief A function option help description.  */
-       long long_opt_arg;       /**< @brief A long option.  */
-       char * long_opt_orig;       /**< @brief A long option original value given at command line.  */
-       const char *long_opt_help; /**< @brief A long option help description.  */
-       char * def_opt_arg;       /**< @brief A string option with default (default='Hello').  */
-       char * def_opt_orig;       /**< @brief A string option with default original value given at command line.  */
-       const char *def_opt_help; /**< @brief A string option with default help description.  */
-       char * enum_opt_arg;       /**< @brief A string option with list of values (default='hello').  */
-       char * enum_opt_orig;       /**< @brief A string option with list of values original value given at command line.  */
-       const char *enum_opt_help; /**< @brief A string option with list of values help description.  */
-       int secret_arg;       /**< @brief hidden option will not appear in -help.  */
-       char * secret_orig;       /**< @brief hidden option will not appear in -help original value given at command line.  */
-       const char *secret_help; /**< @brief hidden option will not appear in -help help description.  */
-       int dependant_arg;       /**< @brief option that depends on str-opt.  */
-       char * dependant_orig;       /**< @brief option that depends on str-opt original value given at command line.  */
-       const char *dependant_help; /**< @brief option that depends on str-opt help description.  */
-
-       unsigned int help_given ;       /**< @brief Whether help was given.  */
-       unsigned int detailed_help_given ;       /**< @brief Whether detailed-help was given.  */
-       unsigned int full_help_given ;       /**< @brief Whether full-help was given.  */
-       unsigned int version_given ;       /**< @brief Whether version was given.  */
-       unsigned int str_opt_given ;       /**< @brief Whether str-opt was given.  */
-       unsigned int my_opt_given ;       /**< @brief Whether my-opt was given.  */
-       unsigned int int_opt_given ;       /**< @brief Whether int-opt was given.  */
-       unsigned int flag_opt_given ;       /**< @brief Whether flag-opt was given.  */
-       unsigned int funct_opt_given ;       /**< @brief Whether funct-opt was given.  */
-       unsigned int long_opt_given ;       /**< @brief Whether long-opt was given.  */
-       unsigned int def_opt_given ;       /**< @brief Whether def-opt was given.  */
-       unsigned int enum_opt_given ;       /**< @brief Whether enum-opt was given.  */
-       unsigned int secret_given ;       /**< @brief Whether secret was given.  */
-       unsigned int dependant_given ;       /**< @brief Whether dependant was given.  */
-
-       char **inputs ; /**< @brief unamed options (options without names) */
-       unsigned inputs_num ; /**< @brief unamed options number */
-     } ;
-
-     /** @brief The additional parameters to pass to parser functions */
-     struct cmdline_parser_params
-     {
-       int override; /**< @brief whether to override possibly already present options (default 0) */
-       int initialize; /**< @brief whether to initialize the option structure gengetopt_args_info (default 1) */
-       int check_required; /**< @brief whether to check that all required options were provided (default 1) */
-       int check_ambiguity; /**< @brief whether to check for options already specified in the option structure gengetopt_args_info (default 0) */
-       int print_errors; /**< @brief whether getopt_long should print an error message for a bad option (default 1) */
-     } ;
-
-     /** @brief the purpose string of the program */
-     extern const char *gengetopt_args_info_purpose;
-     /** @brief the usage string of the program */
-     extern const char *gengetopt_args_info_usage;
-     /** @brief all the lines making the help output */
-     extern const char *gengetopt_args_info_help[];
-     /** @brief all the lines making the full help output (including hidden options) */
-     extern const char *gengetopt_args_info_full_help[];
-     /** @brief all the lines making the detailed help output (including hidden options and details) */
-     extern const char *gengetopt_args_info_detailed_help[];
-
-     /**
-      * The command line parser
-      * @param argc the number of command line options
-      * @param argv the command line options
-      * @param args_info the structure where option information will be stored
-      * @return 0 if everything went fine, NON 0 if an error took place
-      */
-     int cmdline_parser (int argc, char **argv,
-       struct gengetopt_args_info *args_info);
-
-     /**
-      * The command line parser (version with additional parameters - deprecated)
-      * @param argc the number of command line options
-      * @param argv the command line options
-      * @param args_info the structure where option information will be stored
-      * @param override whether to override possibly already present options
-      * @param initialize whether to initialize the option structure my_args_info
-      * @param check_required whether to check that all required options were provided
-      * @return 0 if everything went fine, NON 0 if an error took place
-      * @deprecated use cmdline_parser_ext() instead
-      */
-     int cmdline_parser2 (int argc, char **argv,
-       struct gengetopt_args_info *args_info,
-       int override, int initialize, int check_required);
-
-     /**
-      * The command line parser (version with additional parameters)
-      * @param argc the number of command line options
-      * @param argv the command line options
-      * @param args_info the structure where option information will be stored
-      * @param params additional parameters for the parser
-      * @return 0 if everything went fine, NON 0 if an error took place
-      */
-     int cmdline_parser_ext (int argc, char **argv,
-       struct gengetopt_args_info *args_info,
-       struct cmdline_parser_params *params);
-
-     /**
-      * Save the contents of the option struct into an already open FILE stream.
-      * @param outfile the stream where to dump options
-      * @param args_info the option struct to dump
-      * @return 0 if everything went fine, NON 0 if an error took place
-      */
-     int cmdline_parser_dump(FILE *outfile,
-       struct gengetopt_args_info *args_info);
-
-     /**
-      * Save the contents of the option struct into a (text) file.
-      * This file can be read by the config file parser (if generated by gengetopt)
-      * @param filename the file where to save
-      * @param args_info the option struct to save
-      * @return 0 if everything went fine, NON 0 if an error took place
-      */
-     int cmdline_parser_file_save(const char *filename,
-       struct gengetopt_args_info *args_info);
-
-     /**
-      * Print the help
-      */
-     void cmdline_parser_print_help(void);
-     /**
-      * Print the full help (including hidden options)
-      */
-     void cmdline_parser_print_full_help(void);
-     /**
-      * Print the detailed help (including hidden options and details)
-      */
-     void cmdline_parser_print_detailed_help(void);
-     /**
-      * Print the version
-      */
-     void cmdline_parser_print_version(void);
-
-     /**
-      * Initializes all the fields a cmdline_parser_params structure
-      * to their default values
-      * @param params the structure to initialize
-      */
-     void cmdline_parser_params_init(struct cmdline_parser_params *params);
-
-     /**
-      * Allocates dynamically a cmdline_parser_params structure and initializes
-      * all its fields to their default values
-      * @return the created and initialized cmdline_parser_params structure
-      */
-     struct cmdline_parser_params *cmdline_parser_params_create(void);
-
-     /**
-      * Initializes the passed gengetopt_args_info structure's fields
-      * (also set default values for options that have a default)
-      * @param args_info the structure to initialize
-      */
-     void cmdline_parser_init (struct gengetopt_args_info *args_info);
-     /**
-      * Deallocates the string fields of the gengetopt_args_info structure
-      * (but does not deallocate the structure itself)
-      * @param args_info the structure to deallocate
-      */
-     void cmdline_parser_free (struct gengetopt_args_info *args_info);
-
-     /**
-      * Checks that all the required options were specified
-      * @param args_info the structure to check
-      * @param prog_name the name of the program that will be used to print
-      *   possible errors
-      * @return
-      */
-     int cmdline_parser_required (struct gengetopt_args_info *args_info,
-       const char *prog_name);
-
-     extern const char *cmdline_parser_enum_opt_values[];  /**< @brief Possible values for enum-opt. */
-
-
-     #ifdef __cplusplus
-     }
-     #endif /* __cplusplus */
-     #endif /* CMDLINE1_H */
-
    First of all, notice that the `argv' parameter (typically
 corresponding to the homonimous argument of your program's `main'
 function) is declared as `char **' and not as `char *const *'(17).
@@ -941,73 +701,6 @@ file name.
 
    And here's how these functions can be used inside the main program:
 
-     /* main1.cc */
-     /* we try to use gengetopt generated file in a C++ program */
-     /* we don't use autoconf and automake vars */
-
-     #include <iostream>
-     #include "stdlib.h"
-
-     #include "cmdline1.h"
-
-     using std::cout;
-     using std::endl;
-
-     int
-     main (int argc, char **argv)
-     {
-       gengetopt_args_info args_info;
-
-       cout << "This one is from a C++ program" << endl ;
-       cout << "Try to launch me with some options" << endl ;
-       cout << "(type sample1 --help for the complete list)" << endl ;
-       cout << "For example: ./sample1 *.* --funct-opt" << endl ;
-
-       /* let's call our cmdline parser */
-       if (cmdline_parser (argc, argv, &args_info) != 0)
-         exit(1) ;
-
-       cout << "Here are the options you passed..." << endl;
-
-       for ( unsigned i = 0 ; i < args_info.inputs_num ; ++i )
-         cout << "file: " << args_info.inputs[i] << endl ;
-
-       if ( args_info.funct_opt_given )
-         cout << "You chose --funct-opt or -F." << endl ;
-
-       if ( args_info.str_opt_given )
-         cout << "You inserted " << args_info.str_opt_arg << " for " <<
-           "--str-opt option." << endl ;
-
-       if ( args_info.int_opt_given )
-         cout << "This is the integer you input: " <<
-           args_info.int_opt_arg << "." << endl;
-
-       if (args_info.flag_opt_given)
-         cout << "The flag option was given!" << endl;
-
-       cout << "The flag is " << ( args_info.flag_opt_flag ? "on" : "off" ) <<
-         "." << endl ;
-
-       if (args_info.enum_opt_given) {
-         cout << "enum-opt value: " << args_info.enum_opt_arg << endl;
-         cout << "enum-opt (original specified) value: "
-             << args_info.enum_opt_orig << endl;
-       }
-
-       if (args_info.secret_given)
-         cout << "Secret option was specified: " << args_info.secret_arg
-             << endl;
-
-       cout << args_info.def_opt_arg << "! ";
-
-       cout << "Have a nice day! :-)" << endl ;
-
-       cmdline_parser_free (&args_info); /* release allocated memory */
-
-       return 0;
-     }
-
    Now you can compile `main1.cc' and the `cmdline1.c' generated by
 gengetopt and link all together to obtain `sample1' executable:
 
@@ -1746,34 +1439,6 @@ options.
 
    For instance, let us consider the file `test_modes_cmd.ggo':
 
-     package "test_modes"
-     version "1.0"
-
-     section "some non mode options"
-
-     option "no-mode" N "a generic option not beloging to any mode" optional
-     option "no-mode2" - "another generic option not beloging to any mode" string optional
-
-     section "some modes just for testing"
-
-     defmode "mode 2"
-     defmode "my mode"
-     defmode "mode1" modedesc="any option of this mode is in contrast with any \
-     option of the other mode\nNotice that this description is quite long so \
-     it may spawn many lines...              \
-     fortunately gengetopt will wrap it for you :-)"
-
-     modeoption "opta" a "string a" multiple mode="mode1" optional
-     modeoption "optA" A "string A" string argoptional mode="mode1" required
-     modeoption "optAmul" M "string M"
-             argoptional string mode="mode1" multiple optional
-     modeoption "optb" b "string b" mode="mode1" optional
-
-     modeoption "optc" - "string c" mode="mode 2" optional
-     modeoption "optd" d "string d" mode="mode 2" required
-
-     modeoption "mopt" m "option of my mode" int optional mode="my mode" optional
-
 Now, we use the program `test_modes' (that uses the generated parser
 for the input file above) to demonstrate how the parser generated by
 gengetopt perform checks on mode options.
@@ -2008,94 +1673,6 @@ other configuration files) in a configuration file, by using the
    For instance here's a program that uses this feature (this is the
 test `test_conf_parser'):
 
-     /* test_conf_parser.c test */
-
-     /* test all kinds of options and the conf file parser */
-
-     #include <stdlib.h>
-     #include <stdio.h>
-
-     #include "test_conf_parser_cmd.h"
-
-     static struct my_args_info args_info;
-
-     int
-     main (int argc, char **argv)
-     {
-       unsigned int i;
-       int result = 0;
-
-       struct test_conf_parser_cmd_parser_params *params;
-
-       /* initialize the parameters structure */
-       params = test_conf_parser_cmd_parser_params_create();
-
-       /* call the command line parser */
-       if (test_conf_parser_cmd_parser (argc, argv, &args_info) != 0) {
-         result = 1;
-         goto stop;
-       }
-
-       /*
-          override command line options,
-          but do not initialize args_info, check for required options.
-          NOTICE: we must NOT skip the 0 assignment to initialize,
-          since its default value is 1 and override defaults to 0
-          while check_required is already set to its default value, 1
-       */
-       params->initialize = 0;
-       params->override = 1;
-
-       /* call the config file parser */
-       if (test_conf_parser_cmd_parser_config_file
-           (args_info.conf_file_arg, &args_info, params) != 0)
-         {
-           result = 1;
-           goto stop;
-         }
-
-       printf ("value of required: %s\n", args_info.required_arg);
-       printf ("value of string: %s\n", args_info.string_arg);
-       printf ("value of no-short_given: %d\n", args_info.no_short_given);
-       printf ("value of int: %d\n", args_info.int_arg);
-       printf ("value of float: %f\n", args_info.float_arg);
-
-       printf ("value of multi-string_given: %d\n", args_info.multi_string_given);
-       for (i = 0; i < args_info.multi_string_given; i++)
-         printf ("  value of multi-string: %s\n", args_info.multi_string_arg [i]);
-
-       printf ("value of multi-string-def_given: %d\n",
-               args_info.multi_string_def_given);
-       for (i = 0; i < args_info.multi_string_def_given; ++i)
-         printf ("  value of multi-string-def: %s\n",
-                 args_info.multi_string_def_arg [i]);
-       if (!args_info.multi_string_def_given && args_info.multi_string_def_arg [0])
-         printf ("default value of multi-string-def: %s\n",
-                 args_info.multi_string_def_arg [0]);
-
-       printf ("value of opta: %s\n", args_info.opta_arg);
-
-       printf ("noarg given %d times\n", args_info.noarg_given);
-       printf ("noarg_noshort given %d times\n", args_info.noarg_noshort_given);
-
-       printf ("opt-arg given: %d\n", args_info.opt_arg_given);
-       printf ("opt-arg value: %s\n", (args_info.opt_arg_arg ? args_info.opt_arg_arg : "not given"));
-
-       if (args_info.file_save_given) {
-         if (test_conf_parser_cmd_parser_file_save (args_info.file_save_arg, &args_info) == EXIT_FAILURE)
-           result = 1;
-         else
-           printf ("saved configuration file %s\n", args_info.file_save_arg);
-       }
-
-      stop:
-       /* deallocate structures */
-       test_conf_parser_cmd_parser_free (&args_info);
-       free (params);
-
-       return result;
-     }
-
    So if we use the following config file
 
      # required option
@@ -2127,63 +1704,6 @@ parser: first call the configuration file parser and then the command
 line parser (the command line options will override the configuration
 file options):
 
-     /* test_conf_parser_ov2.c test */
-
-     /* test all kinds of options and the conf file parser */
-     /* differently from test_conf_parser_ov.c, first scan the conf file and
-        then the command line */
-
-     #include <stdlib.h>
-     #include <stdio.h>
-
-     #include "test_conf_parser_cmd.h"
-
-     static struct my_args_info args_info;
-
-     int
-     main (int argc, char **argv)
-     {
-       struct test_conf_parser_cmd_parser_params *params;
-
-       /* initialize the parameters structure */
-       params = test_conf_parser_cmd_parser_params_create();
-
-       /*
-          initialize args_info, but don't check for required options
-          NOTICE: the other fields are initialized to their default values
-       */
-       params->check_required = 0;
-
-       /* call the config file parser */
-       if (test_conf_parser_cmd_parser_config_file
-           ("../../tests/test_conf2.conf", &args_info, params) != 0)
-         exit(1);
-
-       /*
-          override config file options,
-          do not initialize args_info, check for required options.
-       */
-       params->initialize = 0;
-       params->override = 1;
-       params->check_required = 1;
-
-       /* call the command line parser */
-       if (test_conf_parser_cmd_parser_ext (argc, argv, &args_info, params) != 0)
-         exit(1) ;
-
-       printf ("value of required: %s\n", args_info.required_arg);
-       printf ("value of string: %s\n", args_info.string_arg);
-       printf ("value of no-short_given: %d\n", args_info.no_short_given);
-       printf ("value of int: %d\n", args_info.int_arg);
-       printf ("value of float: %f\n", args_info.float_arg);
-
-       /* release memory */
-       test_conf_parser_cmd_parser_free (&args_info);
-       free (params);
-
-       return 0;
-     }
-
 This is an invocation and its results:
 
      ./test_conf_parser_ov2 -r "bar" --float 2.14 -i 100
@@ -2264,32 +1784,6 @@ Then the command line options can be collected like that
 
 Then if this program is called with the following command line options
 
-     /* test options that can be given more than once */
-
-     #include <stdlib.h>
-     #include <stdio.h>
-
-     #include "test_multiple_cmd.h"
-
-     static struct gengetopt_args_info args_info;
-
-     int
-     main (int argc, char **argv)
-     {
-       int i = 0;
-
-       if (test_multiple_cmd_parser (argc, argv, &args_info) != 0)
-         exit(1) ;
-
-       for (i = 0; i < args_info.string_given; ++i)
-         printf ("passed string: %s\n", args_info.string_arg[i]);
-
-       for (i = 0; i < args_info.int_given; ++i)
-         printf ("passed int: %d\n", args_info.int_arg[i]);
-
-       return 0;
-     }
-
 The output of the program will be
 
      passed string: world
@@ -2430,60 +1924,6 @@ and the second one is:
    These last two files are processed with gengetopt using the
 `--string-parser'.  Let's put everything together in this main file:
 
-     #include <stdio.h>
-     #include <stdlib.h>
-
-     #include "test_main_cmdline_cmd.h"
-     #include "test_first_cmdline_cmd.h"
-     #include "test_second_cmdline_cmd.h"
-
-     int
-     main(int argc, char **argv)
-     {
-       struct gengetopt_args_info main_args_info;
-       struct test_first_cmdline_cmd_struct first_args_info;
-       struct test_second_cmdline_cmd_struct second_args_info;
-       int exit_code = 0;
-       unsigned int i, j;
-
-       if (test_main_cmdline_cmd_parser (argc, argv, &main_args_info) != 0) {
-         exit_code = 1;
-         return exit_code;
-       }
-
-       for (j = 0; j < main_args_info.second_cmd_given; ++j) {
-         printf("second cmdline: %s\n", main_args_info.second_cmd_arg[j]);
-         if (test_second_cmdline_cmd_parser_string
-            (main_args_info.second_cmd_arg[j], &second_args_info, argv[0]) == 0) {
-           if (second_args_info.option_a_given)
-            printf("  --option-a: %s\n", second_args_info.option_a_arg);
-           if (second_args_info.option_b_given)
-            printf("  --option-b: %s\n", second_args_info.option_b_arg);
-           for (i = 0; i < second_args_info.my_multi_given; ++i)
-            printf("  --my-multi: %s\n", second_args_info.my_multi_arg[i]);
-
-           test_second_cmdline_cmd_parser_free (&second_args_info);
-         }
-       }
-
-       for (j = 0; j < main_args_info.first_cmd_given; ++j) {
-         printf("first cmdline: %s\n", main_args_info.first_cmd_arg[j]);
-         if (test_first_cmdline_cmd_parser_string
-            (main_args_info.first_cmd_arg[j], &first_args_info, argv[0]) == 0) {
-           if (first_args_info.option_a_given)
-            printf("  --option-a: %d\n", first_args_info.option_a_arg);
-           for (i = 0; i < first_args_info.multi_given; ++i)
-            printf("  --multi: %s\n", first_args_info.multi_arg[i]);
-
-           test_first_cmdline_cmd_parser_free (&first_args_info);
-         }
-       }
-
-       test_main_cmdline_cmd_parser_free (&main_args_info);
-
-       return exit_code;
-     }
-
    Notice that in the `for' loops we always free the elements of the
 argument structures in order to avoid memory leaks.
 
@@ -2884,7 +2324,7 @@ Index
 * --string-parser:                       Invoking gengetopt.  (line 169)
 * --unamed-opts:                         Invoking gengetopt.  (line 107)
 * -C,--conf-parser:                      Configuration files. (line   6)
-* -h,--detailed-help:                    Basic Usage.         (line 857)
+* -h,--detailed-help:                    Basic Usage.         (line 550)
 * -h,--help:                             Basic Usage.         (line 221)
 * -S,--string-parser:                    String Parsers and Multiple Parsers.
                                                               (line  21)
@@ -2896,7 +2336,7 @@ Index
 * args:                                  Basic Usage.         (line  67)
 * argtype:                               Basic Usage.         (line 104)
 * argument, defined:                     Terminology.         (line   6)
-* argv:                                  Basic Usage.         (line 564)
+* argv:                                  Basic Usage.         (line 324)
 * Audience:                              Audience.            (line   6)
 * autoconf <1>:                          Use getopt_long sources.
                                                               (line  11)
@@ -2953,7 +2393,7 @@ Index
 * multiple parsers:                      String Parsers and Multiple Parsers.
                                                               (line   6)
 * on/off:                                Basic Usage.         (line 179)
-* option without name:                   Basic Usage.         (line 323)
+* option without name:                   Basic Usage.         (line 315)
 * option, defined:                       Terminology.         (line   6)
 * optional:                              Basic Usage.         (line 135)
 * override:                              Parser function additional parameters.
@@ -2963,7 +2403,7 @@ Index
 * PACKAGE:                               Audience.            (line  36)
 * PACKAGE_NAME <1>:                      Basic Usage.         (line  39)
 * PACKAGE_NAME:                          Audience.            (line  36)
-* parameter:                             Basic Usage.         (line 323)
+* parameter:                             Basic Usage.         (line 315)
 * parameter, defined:                    Terminology.         (line   6)
 * parameters:                            Parser function additional parameters.
                                                               (line   6)
@@ -2999,72 +2439,72 @@ Index
 
 
 Tag Table:
-Node: Top1106
-Node: Audience3339
-Node: Copying5110
-Node: Installation5919
-Ref: Installation-Footnote-110746
-Ref: Installation-Footnote-210862
-Ref: Installation-Footnote-310909
-Ref: Installation-Footnote-410956
-Ref: Installation-Footnote-511002
-Node: Basic Usage11047
-Ref: hidden17892
-Ref: fullhelp17892
-Ref: addedoptions19797
-Ref: showrequired46479
-Ref: helpoutput46729
-Ref: Basic Usage-Footnote-152385
-Ref: Basic Usage-Footnote-252413
-Ref: Basic Usage-Footnote-352441
-Ref: Basic Usage-Footnote-452468
-Ref: Basic Usage-Footnote-552496
-Ref: Basic Usage-Footnote-652549
-Ref: Basic Usage-Footnote-752577
-Ref: Basic Usage-Footnote-852605
-Ref: Basic Usage-Footnote-952633
-Ref: Basic Usage-Footnote-1052661
-Ref: Basic Usage-Footnote-1152778
-Ref: Basic Usage-Footnote-1252807
-Ref: Basic Usage-Footnote-1352928
-Ref: Basic Usage-Footnote-1453031
-Ref: Basic Usage-Footnote-1553060
-Ref: Basic Usage-Footnote-1653089
-Ref: Basic Usage-Footnote-1753118
-Ref: Basic Usage-Footnote-1853172
-Ref: Basic Usage-Footnote-1953241
-Ref: Basic Usage-Footnote-2053361
-Ref: Basic Usage-Footnote-2153426
-Ref: Basic Usage-Footnote-2253510
-Ref: Basic Usage-Footnote-2353569
-Node: Invoking gengetopt53628
-Ref: Invoking gengetopt-Footnote-163555
-Ref: Invoking gengetopt-Footnote-263583
-Ref: Invoking gengetopt-Footnote-363613
-Node: Terminology63641
-Node: Options with enumerated values68531
-Node: Group options71352
-Node: Mode options73406
-Node: Parser function additional parameters78775
-Ref: Parser function additional parameters-Footnote-181890
-Ref: Parser function additional parameters-Footnote-281918
-Ref: Parser function additional parameters-Footnote-381953
-Node: Configuration files82710
-Ref: Configuration files-Footnote-193085
-Ref: Configuration files-Footnote-293276
-Node: Multiple Options93442
-Node: String Parsers and Multiple Parsers97049
-Ref: String Parsers and Multiple Parsers-Footnote-1104749
-Node: No getopt_long104922
-Node: Include the getopt_long code into the parser105656
-Node: Use automake/autoconf106925
-Node: Use Gnulib107797
-Ref: Use Gnulib-Footnote-1111928
-Node: Use getopt_long sources111973
-Node: Bugs114158
-Node: Getopt and subsequent calls114956
-Ref: Getopt and subsequent calls-Footnote-1116883
-Node: Mailing Lists117129
-Node: Index117929
+Node: Top1082
+Node: Audience3311
+Node: Copying5082
+Node: Installation5891
+Ref: Installation-Footnote-110718
+Ref: Installation-Footnote-210834
+Ref: Installation-Footnote-310881
+Ref: Installation-Footnote-410928
+Ref: Installation-Footnote-510974
+Node: Basic Usage11019
+Ref: hidden17864
+Ref: fullhelp17864
+Ref: addedoptions19769
+Ref: showrequired32232
+Ref: helpoutput32482
+Ref: Basic Usage-Footnote-138138
+Ref: Basic Usage-Footnote-238166
+Ref: Basic Usage-Footnote-338194
+Ref: Basic Usage-Footnote-438221
+Ref: Basic Usage-Footnote-538249
+Ref: Basic Usage-Footnote-638302
+Ref: Basic Usage-Footnote-738330
+Ref: Basic Usage-Footnote-838358
+Ref: Basic Usage-Footnote-938386
+Ref: Basic Usage-Footnote-1038414
+Ref: Basic Usage-Footnote-1138531
+Ref: Basic Usage-Footnote-1238560
+Ref: Basic Usage-Footnote-1338681
+Ref: Basic Usage-Footnote-1438784
+Ref: Basic Usage-Footnote-1538813
+Ref: Basic Usage-Footnote-1638842
+Ref: Basic Usage-Footnote-1738871
+Ref: Basic Usage-Footnote-1838925
+Ref: Basic Usage-Footnote-1938994
+Ref: Basic Usage-Footnote-2039114
+Ref: Basic Usage-Footnote-2139179
+Ref: Basic Usage-Footnote-2239263
+Ref: Basic Usage-Footnote-2339322
+Node: Invoking gengetopt39381
+Ref: Invoking gengetopt-Footnote-149308
+Ref: Invoking gengetopt-Footnote-249336
+Ref: Invoking gengetopt-Footnote-349366
+Node: Terminology49394
+Node: Options with enumerated values54284
+Node: Group options57105
+Node: Mode options59159
+Node: Parser function additional parameters63418
+Ref: Parser function additional parameters-Footnote-166533
+Ref: Parser function additional parameters-Footnote-266561
+Ref: Parser function additional parameters-Footnote-366596
+Node: Configuration files67353
+Ref: Configuration files-Footnote-172853
+Ref: Configuration files-Footnote-273044
+Node: Multiple Options73210
+Node: String Parsers and Multiple Parsers76211
+Ref: String Parsers and Multiple Parsers-Footnote-181880
+Node: No getopt_long82053
+Node: Include the getopt_long code into the parser82787
+Node: Use automake/autoconf84056
+Node: Use Gnulib84928
+Ref: Use Gnulib-Footnote-189059
+Node: Use getopt_long sources89104
+Node: Bugs91289
+Node: Getopt and subsequent calls92087
+Ref: Getopt and subsequent calls-Footnote-194014
+Node: Mailing Lists94260
+Node: Index95060
 
 End Tag Table
diff --git a/doc/stamp-vti b/doc/stamp-vti
index 6f94819..3c36303 100644
--- a/doc/stamp-vti
+++ b/doc/stamp-vti
@@ -1,4 +1,4 @@
-@set UPDATED 25 September 2011
-@set UPDATED-MONTH September 2011
+@set UPDATED 18 March 2012
+@set UPDATED-MONTH March 2012
 @set EDITION 2.22.6
 @set VERSION 2.22.6
diff --git a/doc/version.texi b/doc/version.texi
index 6f94819..3c36303 100644
--- a/doc/version.texi
+++ b/doc/version.texi
@@ -1,4 +1,4 @@
-@set UPDATED 25 September 2011
-@set UPDATED-MONTH September 2011
+@set UPDATED 18 March 2012
+@set UPDATED-MONTH March 2012
 @set EDITION 2.22.6
 @set VERSION 2.22.6
diff --git a/src/skels/c_source.cc b/src/skels/c_source.cc
index 5120083..9e06ad9 100644
--- a/src/skels/c_source.cc
+++ b/src/skels/c_source.cc
@@ -1,6 +1,6 @@
 /*
  * File automatically generated by
- * gengen 1.4.1 by Lorenzo Bettini 
+ * gengen 1.4 by Lorenzo Bettini 
  * http://www.gnu.org/software/gengen
  */
 
@@ -97,6 +97,17 @@ c_source_gen_class::generate_c_source(ostream &stream, unsigned int indent)
   stream << indent_str;
   stream << "\n";
   stream << indent_str;
+  stream << "static void (*print_extra_options_cb)() = NULL;";
+  stream << "\n";
+  stream << indent_str;
+  stream << "static char *override_package_name = NULL;";
+  stream << "\n";
+  stream << indent_str;
+  stream << "static char *override_version = NULL;";
+  stream << "\n";
+  stream << indent_str;
+  stream << "\n";
+  stream << indent_str;
   stream << "const char *";
   generate_string (args_info, stream, indent + indent_str.length ());
   stream << "_purpose = \"";
@@ -573,20 +584,21 @@ c_source_gen_class::generate_c_source(ostream &stream, unsigned int indent)
   stream << "  printf (\"%s %s\\n\",";
   stream << "\n";
   stream << indent_str;
-  stream << "     (strlen(";
+  stream << "     (override_package_name ? override_package_name :";
+  stream << "\n";
+  stream << indent_str;
+  stream << "       (strlen(";
   generate_string (package_var_name, stream, indent + indent_str.length ());
   stream << "_NAME) ? ";
   generate_string (package_var_name, stream, indent + indent_str.length ());
   stream << "_NAME : ";
   generate_string (package_var_name, stream, indent + indent_str.length ());
-  stream << "),";
+  stream << ")),";
   stream << "\n";
   stream << indent_str;
-  indent = 5;
-  stream << "     ";
+  stream << "     (override_version ? override_version : ";
   generate_string (version_var_name, stream, indent + indent_str.length ());
-  stream << ");";
-  indent = 0;
+  stream << "));";
   stream << "\n";
   stream << indent_str;
   stream << "}";
@@ -676,6 +688,14 @@ c_source_gen_class::generate_c_source(ostream &stream, unsigned int indent)
   stream << "_help[i++]);";
   stream << "\n";
   stream << indent_str;
+  stream << "\n";
+  stream << indent_str;
+  stream << "  if (print_extra_options_cb)";
+  stream << "\n";
+  stream << indent_str;
+  stream << "    print_extra_options_cb();";
+  stream << "\n";
+  stream << indent_str;
   stream << "}";
   stream << "\n";
   stream << indent_str;
@@ -709,6 +729,14 @@ c_source_gen_class::generate_c_source(ostream &stream, unsigned int indent)
       stream << "_full_help[i++]);";
       stream << "\n";
       stream << indent_str;
+      stream << "\n";
+      stream << indent_str;
+      stream << "  if (print_extra_options_cb)";
+      stream << "\n";
+      stream << indent_str;
+      stream << "    print_extra_options_cb();";
+      stream << "\n";
+      stream << indent_str;
       stream << "}";
       stream << "\n";
       stream << indent_str;
@@ -743,6 +771,14 @@ c_source_gen_class::generate_c_source(ostream &stream, unsigned int indent)
       stream << "_detailed_help[i++]);";
       stream << "\n";
       stream << indent_str;
+      stream << "\n";
+      stream << indent_str;
+      stream << "  if (print_extra_options_cb)";
+      stream << "\n";
+      stream << indent_str;
+      stream << "    print_extra_options_cb();";
+      stream << "\n";
+      stream << indent_str;
       stream << "}";
       stream << "\n";
       stream << indent_str;
@@ -819,6 +855,18 @@ c_source_gen_class::generate_c_source(ostream &stream, unsigned int indent)
   stream << "      params->print_errors = 1;";
   stream << "\n";
   stream << indent_str;
+  stream << "      params->ignore_unknowns = 0;";
+  stream << "\n";
+  stream << indent_str;
+  stream << "      params->override_package_name = NULL;";
+  stream << "\n";
+  stream << indent_str;
+  stream << "      params->override_version = NULL;";
+  stream << "\n";
+  stream << indent_str;
+  stream << "      params->print_extra_options_cb = NULL;";
+  stream << "\n";
+  stream << indent_str;
   stream << "    }";
   stream << "\n";
   stream << indent_str;
@@ -2108,6 +2156,18 @@ c_source_gen_class::generate_c_source(ostream &stream, unsigned int indent)
   stream << "  params.print_errors = 1;";
   stream << "\n";
   stream << indent_str;
+  stream << "  params.ignore_unknowns = 0;";
+  stream << "\n";
+  stream << indent_str;
+  stream << "  params.override_package_name = NULL;";
+  stream << "\n";
+  stream << indent_str;
+  stream << "  params.override_version = NULL;";
+  stream << "\n";
+  stream << indent_str;
+  stream << "  params.print_extra_options_cb = NULL;";
+  stream << "\n";
+  stream << indent_str;
   stream << "\n";
   stream << indent_str;
   stream << "  result = ";
@@ -3679,6 +3739,17 @@ c_source_gen_class::generate_c_source(ostream &stream, unsigned int indent)
   stream << " local_args_info;";
   stream << "\n";
   stream << indent_str;
+  stream << "\n";
+  stream << indent_str;
+  stream << "  print_extra_options_cb = params->print_extra_options_cb;";
+  stream << "\n";
+  stream << indent_str;
+  stream << "  override_version = params->override_version;";
+  stream << "\n";
+  stream << indent_str;
+  stream << "  override_package_name = params->override_package_name;";
+  stream << "\n";
+  stream << indent_str;
   indent = 2;
   stream << "  ";
   indent = 0;
@@ -3883,10 +3954,22 @@ c_source_gen_class::generate_c_source(ostream &stream, unsigned int indent)
       stream << "        case '?':	/* Invalid option.  */";
       stream << "\n";
       stream << indent_str;
-      stream << "          /* `getopt_long' already printed an error message.  */";
+      stream << "          if (!params->ignore_unknowns)";
+      stream << "\n";
+      stream << indent_str;
+      stream << "          {";
+      stream << "\n";
+      stream << indent_str;
+      stream << "            /* `getopt_long' already printed an error message.  */";
+      stream << "\n";
+      stream << indent_str;
+      stream << "            goto failure;";
       stream << "\n";
       stream << indent_str;
-      stream << "          goto failure;";
+      stream << "          }";
+      stream << "\n";
+      stream << indent_str;
+      stream << "          break;";
       stream << "\n";
       stream << indent_str;
     }
@@ -4585,6 +4668,18 @@ c_source_gen_class::generate_c_source(ostream &stream, unsigned int indent)
       stream << "  params.print_errors = 1;";
       stream << "\n";
       stream << indent_str;
+      stream << "  params.ignore_unknowns = 0;";
+      stream << "\n";
+      stream << indent_str;
+      stream << "  params.override_package_name = NULL;";
+      stream << "\n";
+      stream << indent_str;
+      stream << "  params.override_version = NULL;";
+      stream << "\n";
+      stream << indent_str;
+      stream << "  params.print_extra_options_cb = NULL;";
+      stream << "\n";
+      stream << indent_str;
       indent = 2;
       stream << "  ";
       indent = 0;
@@ -4974,6 +5069,18 @@ c_source_gen_class::generate_c_source(ostream &stream, unsigned int indent)
       stream << "  params.print_errors = 1;";
       stream << "\n";
       stream << indent_str;
+      stream << "  params.ignore_unknowns = 0;";
+      stream << "\n";
+      stream << indent_str;
+      stream << "  params.override_package_name = NULL;";
+      stream << "\n";
+      stream << indent_str;
+      stream << "  params.override_version = NULL;";
+      stream << "\n";
+      stream << indent_str;
+      stream << "  params.print_extra_options_cb = NULL;";
+      stream << "\n";
+      stream << indent_str;
       stream << "\n";
       stream << indent_str;
       stream << "  return ";
diff --git a/src/skels/c_source.h b/src/skels/c_source.h
index abeb115..79bd76d 100644
--- a/src/skels/c_source.h
+++ b/src/skels/c_source.h
@@ -1,6 +1,6 @@
 /*
  * File automatically generated by
- * gengen 1.4.1 by Lorenzo Bettini 
+ * gengen 1.4 by Lorenzo Bettini 
  * http://www.gnu.org/software/gengen
  */
 
diff --git a/src/skels/c_source.h_skel b/src/skels/c_source.h_skel
index a9a3480..3aa02fe 100644
--- a/src/skels/c_source.h_skel
+++ b/src/skels/c_source.h_skel
@@ -27,6 +27,10 @@
 
 #include "@source_name@.@header_file_ext@"
 
+static void (*print_extra_options_cb)() = NULL;
+static char *override_package_name = NULL;
+static char *override_version = NULL;
+
 const char *@args_info@_purpose = "@purpose@";
 
 const char *@args_info@_usage = "Usage: @if@ no_package @then@" @package_var_name@ "@endif@@usage_string@";
@@ -169,8 +173,9 @@ void
 @parser_name@_print_version (void)
 {
   printf ("%s %s\n",
-     (strlen(@package_var_name@_NAME) ? @package_var_name@_NAME : @package_var_name@),
-     @version_var_name@);
+     (override_package_name ? override_package_name :
+       (strlen(@package_var_name@_NAME) ? @package_var_name@_NAME : @package_var_name@)),
+     (override_version ? override_version : @version_var_name@));
 }
 
 static void print_help_common(void) {
@@ -195,6 +200,9 @@ void
   print_help_common();
   while (@args_info@_help[i])
     printf("%s\n", @args_info@_help[i++]);
+
+  if (print_extra_options_cb)
+    print_extra_options_cb();
 }
 
 @IF@ has_hidden @THEN@
@@ -205,6 +213,9 @@ void
   print_help_common();
   while (@args_info@_full_help[i])
     printf("%s\n", @args_info@_full_help[i++]);
+
+  if (print_extra_options_cb)
+    print_extra_options_cb();
 }
 
 @ENDIF@
@@ -216,6 +227,9 @@ void
   print_help_common();
   while (@args_info@_detailed_help[i])
     printf("%s\n", @args_info@_detailed_help[i++]);
+
+  if (print_extra_options_cb)
+    print_extra_options_cb();
 }
 
 @ENDIF@
@@ -242,6 +256,10 @@ void
       params->check_required = 1;
       params->check_ambiguity = 0;
       params->print_errors = 1;
+      params->ignore_unknowns = 0;
+      params->override_package_name = NULL;
+      params->override_version = NULL;
+      params->print_extra_options_cb = NULL;
     }
 }
 
@@ -680,6 +698,10 @@ int
   params.check_required = check_required;
   params.check_ambiguity = 0;
   params.print_errors = 1;
+  params.ignore_unknowns = 0;
+  params.override_package_name = NULL;
+  params.override_version = NULL;
+  params.print_extra_options_cb = NULL;
 
   result = @parser_name@_internal (argc, argv, args_info, &params, 0);
 
@@ -1236,6 +1258,10 @@ int
   @list_def:method{iteration=true}@
   int error = 0;
   struct @args_info@ local_args_info;
+
+  print_extra_options_cb = params->print_extra_options_cb;
+  override_version = params->override_version;
+  override_package_name = params->override_package_name;
   
   int override;
   int initialize;
@@ -1301,8 +1327,12 @@ int
           @handle_no_short_option:method{iteration=true}@
 @IF@ handle_question_mark @THEN@
         case '?':	/* Invalid option.  */
-          /* `getopt_long' already printed an error message.  */
-          goto failure;
+          if (!params->ignore_unknowns)
+          {
+            /* `getopt_long' already printed an error message.  */
+            goto failure;
+          }
+          break;
 @ENDIF@
 
         default:	/* bug: option not considered.  */
@@ -1529,6 +1559,10 @@ int
   params.check_required = check_required;
   params.check_ambiguity = 0;
   params.print_errors = 1;
+  params.ignore_unknowns = 0;
+  params.override_package_name = NULL;
+  params.override_version = NULL;
+  params.print_extra_options_cb = NULL;
   
   return @parser_name@_config_file (filename, args_info, &params);
 }
@@ -1657,6 +1691,10 @@ int
   params.check_required = check_required;
   params.check_ambiguity = 0;
   params.print_errors = 1;
+  params.ignore_unknowns = 0;
+  params.override_package_name = NULL;
+  params.override_version = NULL;
+  params.print_extra_options_cb = NULL;
 
   return @parser_name@_string_ext(cmdline, args_info, prog_name, &params);
 }
diff --git a/src/skels/check_modes.cc b/src/skels/check_modes.cc
index fd197cd..4fecbeb 100644
--- a/src/skels/check_modes.cc
+++ b/src/skels/check_modes.cc
@@ -1,6 +1,6 @@
 /*
  * File automatically generated by
- * gengen 1.4.1 by Lorenzo Bettini 
+ * gengen 1.4 by Lorenzo Bettini 
  * http://www.gnu.org/software/gengen
  */
 
diff --git a/src/skels/check_modes.h b/src/skels/check_modes.h
index 1ac5449..e75c0c8 100644
--- a/src/skels/check_modes.h
+++ b/src/skels/check_modes.h
@@ -1,6 +1,6 @@
 /*
  * File automatically generated by
- * gengen 1.4.1 by Lorenzo Bettini 
+ * gengen 1.4 by Lorenzo Bettini 
  * http://www.gnu.org/software/gengen
  */
 
diff --git a/src/skels/clear_arg.cc b/src/skels/clear_arg.cc
index 43324d3..7eabc52 100644
--- a/src/skels/clear_arg.cc
+++ b/src/skels/clear_arg.cc
@@ -1,6 +1,6 @@
 /*
  * File automatically generated by
- * gengen 1.2 by Lorenzo Bettini 
+ * gengen 1.4 by Lorenzo Bettini 
  * http://www.gnu.org/software/gengen
  */
 
diff --git a/src/skels/clear_arg.h b/src/skels/clear_arg.h
index bf4bb14..a97c546 100644
--- a/src/skels/clear_arg.h
+++ b/src/skels/clear_arg.h
@@ -1,6 +1,6 @@
 /*
  * File automatically generated by
- * gengen 1.2 by Lorenzo Bettini 
+ * gengen 1.4 by Lorenzo Bettini 
  * http://www.gnu.org/software/gengen
  */
 
diff --git a/src/skels/clear_given.cc b/src/skels/clear_given.cc
index f6d1790..307e094 100644
--- a/src/skels/clear_given.cc
+++ b/src/skels/clear_given.cc
@@ -1,6 +1,6 @@
 /*
  * File automatically generated by
- * gengen 1.4.2 by Lorenzo Bettini 
+ * gengen 1.4 by Lorenzo Bettini 
  * http://www.gnu.org/software/gengen
  */
 
diff --git a/src/skels/clear_given.h b/src/skels/clear_given.h
index a854496..a9e3749 100644
--- a/src/skels/clear_given.h
+++ b/src/skels/clear_given.h
@@ -1,6 +1,6 @@
 /*
  * File automatically generated by
- * gengen 1.4.2 by Lorenzo Bettini 
+ * gengen 1.4 by Lorenzo Bettini 
  * http://www.gnu.org/software/gengen
  */
 
diff --git a/src/skels/copyright.cc b/src/skels/copyright.cc
index d6c4291..e7c2fcd 100644
--- a/src/skels/copyright.cc
+++ b/src/skels/copyright.cc
@@ -1,6 +1,6 @@
 /*
  * File automatically generated by
- * gengen 1.4.2 by Lorenzo Bettini 
+ * gengen 1.4 by Lorenzo Bettini 
  * http://www.gnu.org/software/gengen
  */
 
diff --git a/src/skels/copyright.h b/src/skels/copyright.h
index b5f9f4a..fa8df9a 100644
--- a/src/skels/copyright.h
+++ b/src/skels/copyright.h
@@ -1,6 +1,6 @@
 /*
  * File automatically generated by
- * gengen 1.4.2 by Lorenzo Bettini 
+ * gengen 1.4 by Lorenzo Bettini 
  * http://www.gnu.org/software/gengen
  */
 
diff --git a/src/skels/custom_getopt_gen.cc b/src/skels/custom_getopt_gen.cc
index d0ff3ff..c890133 100644
--- a/src/skels/custom_getopt_gen.cc
+++ b/src/skels/custom_getopt_gen.cc
@@ -1,6 +1,6 @@
 /*
  * File automatically generated by
- * gengen 1.4.1 by Lorenzo Bettini 
+ * gengen 1.4 by Lorenzo Bettini 
  * http://www.gnu.org/software/gengen
  */
 
diff --git a/src/skels/custom_getopt_gen.h b/src/skels/custom_getopt_gen.h
index 0f24834..0d02ac4 100644
--- a/src/skels/custom_getopt_gen.h
+++ b/src/skels/custom_getopt_gen.h
@@ -1,6 +1,6 @@
 /*
  * File automatically generated by
- * gengen 1.4.1 by Lorenzo Bettini 
+ * gengen 1.4 by Lorenzo Bettini 
  * http://www.gnu.org/software/gengen
  */
 
diff --git a/src/skels/dependant_option.cc b/src/skels/dependant_option.cc
index f9396a1..901d079 100644
--- a/src/skels/dependant_option.cc
+++ b/src/skels/dependant_option.cc
@@ -1,6 +1,6 @@
 /*
  * File automatically generated by
- * gengen 1.2 by Lorenzo Bettini 
+ * gengen 1.4 by Lorenzo Bettini 
  * http://www.gnu.org/software/gengen
  */
 
diff --git a/src/skels/dependant_option.h b/src/skels/dependant_option.h
index 4a10656..7e7b111 100644
--- a/src/skels/dependant_option.h
+++ b/src/skels/dependant_option.h
@@ -1,6 +1,6 @@
 /*
  * File automatically generated by
- * gengen 1.2 by Lorenzo Bettini 
+ * gengen 1.4 by Lorenzo Bettini 
  * http://www.gnu.org/software/gengen
  */
 
diff --git a/src/skels/enum_decl.cc b/src/skels/enum_decl.cc
index 2827c2b..65f55cb 100644
--- a/src/skels/enum_decl.cc
+++ b/src/skels/enum_decl.cc
@@ -1,6 +1,6 @@
 /*
  * File automatically generated by
- * gengen 1.4.1 by Lorenzo Bettini 
+ * gengen 1.4 by Lorenzo Bettini 
  * http://www.gnu.org/software/gengen
  */
 
diff --git a/src/skels/enum_decl.h b/src/skels/enum_decl.h
index 3f46c91..08dd4a5 100644
--- a/src/skels/enum_decl.h
+++ b/src/skels/enum_decl.h
@@ -1,6 +1,6 @@
 /*
  * File automatically generated by
- * gengen 1.4.1 by Lorenzo Bettini 
+ * gengen 1.4 by Lorenzo Bettini 
  * http://www.gnu.org/software/gengen
  */
 
diff --git a/src/skels/exit_failure.cc b/src/skels/exit_failure.cc
index 73496ac..65046bb 100644
--- a/src/skels/exit_failure.cc
+++ b/src/skels/exit_failure.cc
@@ -1,6 +1,6 @@
 /*
  * File automatically generated by
- * gengen 1.4.2 by Lorenzo Bettini 
+ * gengen 1.4 by Lorenzo Bettini 
  * http://www.gnu.org/software/gengen
  */
 
diff --git a/src/skels/exit_failure.h b/src/skels/exit_failure.h
index a4192e2..e47c633 100644
--- a/src/skels/exit_failure.h
+++ b/src/skels/exit_failure.h
@@ -1,6 +1,6 @@
 /*
  * File automatically generated by
- * gengen 1.4.2 by Lorenzo Bettini 
+ * gengen 1.4 by Lorenzo Bettini 
  * http://www.gnu.org/software/gengen
  */
 
diff --git a/src/skels/file_save.cc b/src/skels/file_save.cc
index 0f71606..ed11562 100644
--- a/src/skels/file_save.cc
+++ b/src/skels/file_save.cc
@@ -1,6 +1,6 @@
 /*
  * File automatically generated by
- * gengen 1.4.2 by Lorenzo Bettini 
+ * gengen 1.4 by Lorenzo Bettini 
  * http://www.gnu.org/software/gengen
  */
 
diff --git a/src/skels/file_save.h b/src/skels/file_save.h
index bd120b7..57c6948 100644
--- a/src/skels/file_save.h
+++ b/src/skels/file_save.h
@@ -1,6 +1,6 @@
 /*
  * File automatically generated by
- * gengen 1.4.2 by Lorenzo Bettini 
+ * gengen 1.4 by Lorenzo Bettini 
  * http://www.gnu.org/software/gengen
  */
 
diff --git a/src/skels/file_save_multiple.cc b/src/skels/file_save_multiple.cc
index 405be31..bf45c04 100644
--- a/src/skels/file_save_multiple.cc
+++ b/src/skels/file_save_multiple.cc
@@ -1,6 +1,6 @@
 /*
  * File automatically generated by
- * gengen 1.4.1 by Lorenzo Bettini 
+ * gengen 1.4 by Lorenzo Bettini 
  * http://www.gnu.org/software/gengen
  */
 
diff --git a/src/skels/file_save_multiple.h b/src/skels/file_save_multiple.h
index 36a8aba..aa1e6e6 100644
--- a/src/skels/file_save_multiple.h
+++ b/src/skels/file_save_multiple.h
@@ -1,6 +1,6 @@
 /*
  * File automatically generated by
- * gengen 1.4.1 by Lorenzo Bettini 
+ * gengen 1.4 by Lorenzo Bettini 
  * http://www.gnu.org/software/gengen
  */
 
diff --git a/src/skels/free_list.cc b/src/skels/free_list.cc
index 0dc768f..d9a1a5c 100644
--- a/src/skels/free_list.cc
+++ b/src/skels/free_list.cc
@@ -1,6 +1,6 @@
 /*
  * File automatically generated by
- * gengen 1.4.2 by Lorenzo Bettini 
+ * gengen 1.4 by Lorenzo Bettini 
  * http://www.gnu.org/software/gengen
  */
 
diff --git a/src/skels/free_list.h b/src/skels/free_list.h
index de14aa8..b008b1d 100644
--- a/src/skels/free_list.h
+++ b/src/skels/free_list.h
@@ -1,6 +1,6 @@
 /*
  * File automatically generated by
- * gengen 1.4.2 by Lorenzo Bettini 
+ * gengen 1.4 by Lorenzo Bettini 
  * http://www.gnu.org/software/gengen
  */
 
diff --git a/src/skels/free_multiple.cc b/src/skels/free_multiple.cc
index e9403b2..1e4e0cc 100644
--- a/src/skels/free_multiple.cc
+++ b/src/skels/free_multiple.cc
@@ -1,6 +1,6 @@
 /*
  * File automatically generated by
- * gengen 1.4.1 by Lorenzo Bettini 
+ * gengen 1.4 by Lorenzo Bettini 
  * http://www.gnu.org/software/gengen
  */
 
diff --git a/src/skels/free_multiple.h b/src/skels/free_multiple.h
index 64fe58c..ba737df 100644
--- a/src/skels/free_multiple.h
+++ b/src/skels/free_multiple.h
@@ -1,6 +1,6 @@
 /*
  * File automatically generated by
- * gengen 1.4.1 by Lorenzo Bettini 
+ * gengen 1.4 by Lorenzo Bettini 
  * http://www.gnu.org/software/gengen
  */
 
diff --git a/src/skels/free_string.cc b/src/skels/free_string.cc
index 6946f8f..c9c13a9 100644
--- a/src/skels/free_string.cc
+++ b/src/skels/free_string.cc
@@ -1,6 +1,6 @@
 /*
  * File automatically generated by
- * gengen 1.2 by Lorenzo Bettini 
+ * gengen 1.4 by Lorenzo Bettini 
  * http://www.gnu.org/software/gengen
  */
 
diff --git a/src/skels/free_string.h b/src/skels/free_string.h
index 7622617..bc3ba35 100644
--- a/src/skels/free_string.h
+++ b/src/skels/free_string.h
@@ -1,6 +1,6 @@
 /*
  * File automatically generated by
- * gengen 1.2 by Lorenzo Bettini 
+ * gengen 1.4 by Lorenzo Bettini 
  * http://www.gnu.org/software/gengen
  */
 
diff --git a/src/skels/generic_option.cc b/src/skels/generic_option.cc
index fcc192c..4112bec 100644
--- a/src/skels/generic_option.cc
+++ b/src/skels/generic_option.cc
@@ -1,6 +1,6 @@
 /*
  * File automatically generated by
- * gengen 1.4.2 by Lorenzo Bettini 
+ * gengen 1.4 by Lorenzo Bettini 
  * http://www.gnu.org/software/gengen
  */
 
diff --git a/src/skels/generic_option.h b/src/skels/generic_option.h
index c6be9ac..48b1026 100644
--- a/src/skels/generic_option.h
+++ b/src/skels/generic_option.h
@@ -1,6 +1,6 @@
 /*
  * File automatically generated by
- * gengen 1.4.2 by Lorenzo Bettini 
+ * gengen 1.4 by Lorenzo Bettini 
  * http://www.gnu.org/software/gengen
  */
 
diff --git a/src/skels/given_field.cc b/src/skels/given_field.cc
index ac326c5..2557a90 100644
--- a/src/skels/given_field.cc
+++ b/src/skels/given_field.cc
@@ -1,6 +1,6 @@
 /*
  * File automatically generated by
- * gengen 1.4.2 by Lorenzo Bettini 
+ * gengen 1.4 by Lorenzo Bettini 
  * http://www.gnu.org/software/gengen
  */
 
diff --git a/src/skels/given_field.h b/src/skels/given_field.h
index 2b7ccc7..c9de0f9 100644
--- a/src/skels/given_field.h
+++ b/src/skels/given_field.h
@@ -1,6 +1,6 @@
 /*
  * File automatically generated by
- * gengen 1.4.2 by Lorenzo Bettini 
+ * gengen 1.4 by Lorenzo Bettini 
  * http://www.gnu.org/software/gengen
  */
 
diff --git a/src/skels/group_counter.cc b/src/skels/group_counter.cc
index 4c42adb..a5cb654 100644
--- a/src/skels/group_counter.cc
+++ b/src/skels/group_counter.cc
@@ -1,6 +1,6 @@
 /*
  * File automatically generated by
- * gengen 1.3 by Lorenzo Bettini 
+ * gengen 1.4 by Lorenzo Bettini 
  * http://www.gnu.org/software/gengen
  */
 
diff --git a/src/skels/group_counter.h b/src/skels/group_counter.h
index 5cd8f8c..f519c9a 100644
--- a/src/skels/group_counter.h
+++ b/src/skels/group_counter.h
@@ -1,6 +1,6 @@
 /*
  * File automatically generated by
- * gengen 1.3 by Lorenzo Bettini 
+ * gengen 1.4 by Lorenzo Bettini 
  * http://www.gnu.org/software/gengen
  */
 
diff --git a/src/skels/group_option.cc b/src/skels/group_option.cc
index 8db6d66..6cf09fb 100644
--- a/src/skels/group_option.cc
+++ b/src/skels/group_option.cc
@@ -1,6 +1,6 @@
 /*
  * File automatically generated by
- * gengen 1.4.2 by Lorenzo Bettini 
+ * gengen 1.4 by Lorenzo Bettini 
  * http://www.gnu.org/software/gengen
  */
 
diff --git a/src/skels/group_option.h b/src/skels/group_option.h
index 31f5a83..933a16d 100644
--- a/src/skels/group_option.h
+++ b/src/skels/group_option.h
@@ -1,6 +1,6 @@
 /*
  * File automatically generated by
- * gengen 1.4.2 by Lorenzo Bettini 
+ * gengen 1.4 by Lorenzo Bettini 
  * http://www.gnu.org/software/gengen
  */
 
diff --git a/src/skels/handle_help.cc b/src/skels/handle_help.cc
index 5c15c69..1177d88 100644
--- a/src/skels/handle_help.cc
+++ b/src/skels/handle_help.cc
@@ -1,6 +1,6 @@
 /*
  * File automatically generated by
- * gengen 1.4.2 by Lorenzo Bettini 
+ * gengen 1.4 by Lorenzo Bettini 
  * http://www.gnu.org/software/gengen
  */
 
diff --git a/src/skels/handle_help.h b/src/skels/handle_help.h
index 0d1404e..5ad78f6 100644
--- a/src/skels/handle_help.h
+++ b/src/skels/handle_help.h
@@ -1,6 +1,6 @@
 /*
  * File automatically generated by
- * gengen 1.4.2 by Lorenzo Bettini 
+ * gengen 1.4 by Lorenzo Bettini 
  * http://www.gnu.org/software/gengen
  */
 
diff --git a/src/skels/handle_version.cc b/src/skels/handle_version.cc
index a104fac..d01d9e8 100644
--- a/src/skels/handle_version.cc
+++ b/src/skels/handle_version.cc
@@ -1,6 +1,6 @@
 /*
  * File automatically generated by
- * gengen 1.4.2 by Lorenzo Bettini 
+ * gengen 1.4 by Lorenzo Bettini 
  * http://www.gnu.org/software/gengen
  */
 
diff --git a/src/skels/handle_version.h b/src/skels/handle_version.h
index 5b748e7..34ead07 100644
--- a/src/skels/handle_version.h
+++ b/src/skels/handle_version.h
@@ -1,6 +1,6 @@
 /*
  * File automatically generated by
- * gengen 1.4.2 by Lorenzo Bettini 
+ * gengen 1.4 by Lorenzo Bettini 
  * http://www.gnu.org/software/gengen
  */
 
diff --git a/src/skels/header.cc b/src/skels/header.cc
index 92c3d52..1780d7c 100644
--- a/src/skels/header.cc
+++ b/src/skels/header.cc
@@ -266,6 +266,32 @@ header_gen_class::generate_header(ostream &stream, unsigned int indent)
   stream << "brief whether getopt_long should print an error message for a bad option (default 1) */";
   stream << "\n";
   stream << indent_str;
+  stream << "  int ignore_unknowns; /**< ";
+  stream << "@";
+  stream << "brief whether to ignore unknown arguments (default 0) */";
+  stream << "\n";
+  stream << indent_str;
+  stream << "  char *override_package_name; /**< ";
+  stream << "@";
+  stream << "brief ptr package name, to override the";
+  stream << "\n";
+  stream << indent_str;
+  stream << "                                 name from the config file */";
+  stream << "\n";
+  stream << indent_str;
+  stream << "  char *override_version; /**< ";
+  stream << "@";
+  stream << "brief ptr version, to override the";
+  stream << "\n";
+  stream << indent_str;
+  stream << "                                 name from the config file */";
+  stream << "\n";
+  stream << indent_str;
+  stream << "  void (*print_extra_options_cb)(); /**< ";
+  stream << "@";
+  stream << "brief ptr to print more options (default NULL) */";
+  stream << "\n";
+  stream << indent_str;
   stream << "} ;";
   stream << "\n";
   stream << indent_str;
diff --git a/src/skels/header.h_skel b/src/skels/header.h_skel
index a629a3a..087bf80 100644
--- a/src/skels/header.h_skel
+++ b/src/skels/header.h_skel
@@ -60,6 +60,12 @@ struct @parser_name@_params
   int check_required; /**< @@brief whether to check that all required options were provided (default 1) */
   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 1) */
+  int ignore_unknowns; /**< @@brief whether to ignore unknown arguments (default 0) */
+  char *override_package_name; /**< @@brief ptr package name, to override the
+                                 name from the config file */
+  char *override_version; /**< @@brief ptr version, to override the
+                                 name from the config file */
+  void (*print_extra_options_cb)(); /**< @@brief ptr to print more options (default NULL) */
 } ;
 
 /** @@brief the purpose string of the program */
diff --git a/src/skels/init_args_info.cc b/src/skels/init_args_info.cc
index b389dfc..bf615a3 100644
--- a/src/skels/init_args_info.cc
+++ b/src/skels/init_args_info.cc
@@ -1,6 +1,6 @@
 /*
  * File automatically generated by
- * gengen 1.4.2 by Lorenzo Bettini 
+ * gengen 1.4 by Lorenzo Bettini 
  * http://www.gnu.org/software/gengen
  */
 
diff --git a/src/skels/init_args_info.h b/src/skels/init_args_info.h
index 386a076..52b3c2b 100644
--- a/src/skels/init_args_info.h
+++ b/src/skels/init_args_info.h
@@ -1,6 +1,6 @@
 /*
  * File automatically generated by
- * gengen 1.4.2 by Lorenzo Bettini 
+ * gengen 1.4 by Lorenzo Bettini 
  * http://www.gnu.org/software/gengen
  */
 
diff --git a/src/skels/multiple_fill_array.cc b/src/skels/multiple_fill_array.cc
index ab5f06f..9c1c4cf 100644
--- a/src/skels/multiple_fill_array.cc
+++ b/src/skels/multiple_fill_array.cc
@@ -1,6 +1,6 @@
 /*
  * File automatically generated by
- * gengen 1.2 by Lorenzo Bettini 
+ * gengen 1.4 by Lorenzo Bettini 
  * http://www.gnu.org/software/gengen
  */
 
diff --git a/src/skels/multiple_fill_array.h b/src/skels/multiple_fill_array.h
index 9249fd5..7191b18 100644
--- a/src/skels/multiple_fill_array.h
+++ b/src/skels/multiple_fill_array.h
@@ -1,6 +1,6 @@
 /*
  * File automatically generated by
- * gengen 1.2 by Lorenzo Bettini 
+ * gengen 1.4 by Lorenzo Bettini 
  * http://www.gnu.org/software/gengen
  */
 
diff --git a/src/skels/multiple_opt_list.cc b/src/skels/multiple_opt_list.cc
index 0b4e86b..69443e2 100644
--- a/src/skels/multiple_opt_list.cc
+++ b/src/skels/multiple_opt_list.cc
@@ -1,6 +1,6 @@
 /*
  * File automatically generated by
- * gengen 1.4.2 by Lorenzo Bettini 
+ * gengen 1.4 by Lorenzo Bettini 
  * http://www.gnu.org/software/gengen
  */
 
diff --git a/src/skels/multiple_opt_list.h b/src/skels/multiple_opt_list.h
index aef3854..80457ab 100644
--- a/src/skels/multiple_opt_list.h
+++ b/src/skels/multiple_opt_list.h
@@ -1,6 +1,6 @@
 /*
  * File automatically generated by
- * gengen 1.4.2 by Lorenzo Bettini 
+ * gengen 1.4 by Lorenzo Bettini 
  * http://www.gnu.org/software/gengen
  */
 
diff --git a/src/skels/option_arg.cc b/src/skels/option_arg.cc
index 5b02e04..616299a 100644
--- a/src/skels/option_arg.cc
+++ b/src/skels/option_arg.cc
@@ -1,6 +1,6 @@
 /*
  * File automatically generated by
- * gengen 1.3 by Lorenzo Bettini 
+ * gengen 1.4 by Lorenzo Bettini 
  * http://www.gnu.org/software/gengen
  */
 
diff --git a/src/skels/option_arg.h b/src/skels/option_arg.h
index e443b79..7851a1e 100644
--- a/src/skels/option_arg.h
+++ b/src/skels/option_arg.h
@@ -1,6 +1,6 @@
 /*
  * File automatically generated by
- * gengen 1.3 by Lorenzo Bettini 
+ * gengen 1.4 by Lorenzo Bettini 
  * http://www.gnu.org/software/gengen
  */
 
diff --git a/src/skels/print_help_string.cc b/src/skels/print_help_string.cc
index e462008..6a6dc5e 100644
--- a/src/skels/print_help_string.cc
+++ b/src/skels/print_help_string.cc
@@ -1,6 +1,6 @@
 /*
  * File automatically generated by
- * gengen 1.4.2 by Lorenzo Bettini 
+ * gengen 1.4 by Lorenzo Bettini 
  * http://www.gnu.org/software/gengen
  */
 
diff --git a/src/skels/print_help_string.h b/src/skels/print_help_string.h
index 3b7a52b..21ac035 100644
--- a/src/skels/print_help_string.h
+++ b/src/skels/print_help_string.h
@@ -1,6 +1,6 @@
 /*
  * File automatically generated by
- * gengen 1.4.2 by Lorenzo Bettini 
+ * gengen 1.4 by Lorenzo Bettini 
  * http://www.gnu.org/software/gengen
  */
 
diff --git a/src/skels/required_option.cc b/src/skels/required_option.cc
index cefacd7..c3deec7 100644
--- a/src/skels/required_option.cc
+++ b/src/skels/required_option.cc
@@ -1,6 +1,6 @@
 /*
  * File automatically generated by
- * gengen 1.4.2 by Lorenzo Bettini 
+ * gengen 1.4 by Lorenzo Bettini 
  * http://www.gnu.org/software/gengen
  */
 
diff --git a/src/skels/required_option.h b/src/skels/required_option.h
index 6cf28e3..878833d 100644
--- a/src/skels/required_option.h
+++ b/src/skels/required_option.h
@@ -1,6 +1,6 @@
 /*
  * File automatically generated by
- * gengen 1.4.2 by Lorenzo Bettini 
+ * gengen 1.4 by Lorenzo Bettini 
  * http://www.gnu.org/software/gengen
  */
 
diff --git a/src/skels/reset_group.cc b/src/skels/reset_group.cc
index 84497d7..b8b7a41 100644
--- a/src/skels/reset_group.cc
+++ b/src/skels/reset_group.cc
@@ -1,6 +1,6 @@
 /*
  * File automatically generated by
- * gengen 1.2 by Lorenzo Bettini 
+ * gengen 1.4 by Lorenzo Bettini 
  * http://www.gnu.org/software/gengen
  */
 
diff --git a/src/skels/reset_group.h b/src/skels/reset_group.h
index bf51661..c6287c9 100644
--- a/src/skels/reset_group.h
+++ b/src/skels/reset_group.h
@@ -1,6 +1,6 @@
 /*
  * File automatically generated by
- * gengen 1.2 by Lorenzo Bettini 
+ * gengen 1.4 by Lorenzo Bettini 
  * http://www.gnu.org/software/gengen
  */
 
diff --git a/src/skels/update_given.cc b/src/skels/update_given.cc
index cd4710c..ab93dd3 100644
--- a/src/skels/update_given.cc
+++ b/src/skels/update_given.cc
@@ -1,6 +1,6 @@
 /*
  * File automatically generated by
- * gengen 1.4.2 by Lorenzo Bettini 
+ * gengen 1.4 by Lorenzo Bettini 
  * http://www.gnu.org/software/gengen
  */
 
diff --git a/src/skels/update_given.h b/src/skels/update_given.h
index f603653..6a02aef 100644
--- a/src/skels/update_given.h
+++ b/src/skels/update_given.h
@@ -1,6 +1,6 @@
 /*
  * File automatically generated by
- * gengen 1.4.2 by Lorenzo Bettini 
+ * gengen 1.4 by Lorenzo Bettini 
  * http://www.gnu.org/software/gengen
  */
 
-- 
1.7.3.2

