Add tests for parse-options.c
[gitweb.git] / parse-options.h
index 76d73b299f8fdfb2dcdcf881f4e813cc14ad4db5..3006a769cdd561d8a66c3eaeab3307d2e8273ca3 100644 (file)
@@ -3,6 +3,7 @@
 
 enum parse_opt_type {
        OPTION_END,
+       OPTION_GROUP,
        OPTION_BOOLEAN,
        OPTION_STRING,
        OPTION_INTEGER,
@@ -17,12 +18,15 @@ struct option {
        int short_name;
        const char *long_name;
        void *value;
+       const char *argh;
+       const char *help;
 };
 
 #define OPT_END()                   { OPTION_END }
-#define OPT_BOOLEAN(s, l, v, h)     { OPTION_BOOLEAN, (s), (l), (v) }
-#define OPT_INTEGER(s, l, v, h)     { OPTION_INTEGER, (s), (l), (v) }
-#define OPT_STRING(s, l, v, a, h)   { OPTION_STRING,  (s), (l), (v) }
+#define OPT_GROUP(h)                { OPTION_GROUP, 0, NULL, NULL, NULL, (h) }
+#define OPT_BOOLEAN(s, l, v, h)     { OPTION_BOOLEAN, (s), (l), (v), NULL, (h) }
+#define OPT_INTEGER(s, l, v, h)     { OPTION_INTEGER, (s), (l), (v), NULL, (h) }
+#define OPT_STRING(s, l, v, a, h)   { OPTION_STRING,  (s), (l), (v), (a), (h) }
 
 /* parse_options() will filter out the processed options and leave the
  * non-option argments in argv[].
@@ -30,6 +34,9 @@ struct option {
  */
 extern int parse_options(int argc, const char **argv,
                          const struct option *options,
-                         const char *usagestr, int flags);
+                         const char * const usagestr[], int flags);
+
+extern NORETURN void usage_with_options(const char * const *usagestr,
+                                        const struct option *options);
 
 #endif