author | Lorenzo Bettini <bettini@bettini-prog-karmic.(none)> | 2009年12月23日 11:12:44 +0100 |
---|---|---|
committer | Lorenzo Bettini <bettini@bettini-prog-karmic.(none)> | 2009年12月23日 11:12:44 +0100 |
commit | d5c7738ea60edec52a5071d583636e4aaf085cc5 (patch) | |
tree | 3ffa653dc50c343c0399e0757c5a740bd42910e1 /src/check-regexp_cmd.c | |
parent | 9dfd758aca0ce73107d2f6591f3cbea8aaa595ee (diff) | |
download | src-highlite-d5c7738ea60edec52a5071d583636e4aaf085cc5.tar.gz |
-rw-r--r-- | src/check-regexp_cmd.c | 180 |
diff --git a/src/check-regexp_cmd.c b/src/check-regexp_cmd.c index f20ab59..9b28574 100644 --- a/src/check-regexp_cmd.c +++ b/src/check-regexp_cmd.c @@ -1,7 +1,7 @@ /* - File autogenerated by gengetopt version 2.19.2 + File autogenerated by gengetopt version 2.22.3 generated with the following command: - /home/bettini/usr/local/bin/gengetopt --input ./check-regexp_cmd.ggo --unamed-opts -F check-regexp_cmd + /home/bettini/usr/local/bin/gengetopt --input ../../src/check-regexp_cmd.ggo --unamed-opts -F check-regexp_cmd --output-dir=../../src The developers of gengetopt consider the fixed text that goes in all gengetopt output files to be in the public domain: @@ -17,7 +17,11 @@ #include <stdlib.h> #include <string.h> -#include "getopt.h" +#ifndef FIX_UNUSED +#define FIX_UNUSED(X) (void) (X) /* avoid warnings for unused params */ +#endif + +#include <getopt.h> #include "check-regexp_cmd.h" @@ -33,13 +37,17 @@ const char *gengetopt_args_info_help[] = { 0 }; +typedef enum {ARG_NO +} cmdline_parser_arg_type; + static void clear_given (struct gengetopt_args_info *args_info); static void clear_args (struct gengetopt_args_info *args_info); static int -cmdline_parser_internal (int argc, char * const *argv, struct gengetopt_args_info *args_info, int override, int initialize, int check_required, const char *additional_error); +cmdline_parser_internal (int argc, char **argv, struct gengetopt_args_info *args_info, + struct cmdline_parser_params *params, const char *additional_error); static char * @@ -55,12 +63,15 @@ void clear_given (struct gengetopt_args_info *args_info) static void clear_args (struct gengetopt_args_info *args_info) { + FIX_UNUSED (args_info); } static void init_args_info(struct gengetopt_args_info *args_info) { + + args_info->help_help = gengetopt_args_info_help[0] ; args_info->version_help = gengetopt_args_info_help[1] ; @@ -69,23 +80,31 @@ void init_args_info(struct gengetopt_args_info *args_info) void cmdline_parser_print_version (void) { - printf ("%s %s\n", CMDLINE_PARSER_PACKAGE, CMDLINE_PARSER_VERSION); + printf ("%s %s\n", + (strlen(CMDLINE_PARSER_PACKAGE_NAME) ? CMDLINE_PARSER_PACKAGE_NAME : CMDLINE_PARSER_PACKAGE), + CMDLINE_PARSER_VERSION); } -void -cmdline_parser_print_help (void) -{ - int i = 0; +static void print_help_common(void) { cmdline_parser_print_version (); if (strlen(gengetopt_args_info_purpose) > 0) printf("\n%s\n", gengetopt_args_info_purpose); - printf("\n%s\n\n", gengetopt_args_info_usage); + if (strlen(gengetopt_args_info_usage) > 0) + printf("\n%s\n", gengetopt_args_info_usage); + + printf("\n"); if (strlen(gengetopt_args_info_description) > 0) - printf("%s\n", gengetopt_args_info_description); + printf("%s\n\n", gengetopt_args_info_description); +} +void +cmdline_parser_print_help (void) +{ + int i = 0; + print_help_common(); while (gengetopt_args_info_help[i]) printf("%s\n", gengetopt_args_info_help[i++]); } @@ -97,25 +116,83 @@ cmdline_parser_init (struct gengetopt_args_info *args_info) clear_args (args_info); init_args_info (args_info); - args_info->inputs = NULL; + args_info->inputs = 0; args_info->inputs_num = 0; } +void +cmdline_parser_params_init(struct cmdline_parser_params *params) +{ + if (params) + { + params->override = 0; + params->initialize = 1; + params->check_required = 1; + params->check_ambiguity = 0; + params->print_errors = 1; + } +} + +struct cmdline_parser_params * +cmdline_parser_params_create(void) +{ + struct cmdline_parser_params *params = + (struct cmdline_parser_params *)malloc(sizeof(struct cmdline_parser_params)); + cmdline_parser_params_init(params); + return params; +} + + + static void cmdline_parser_release (struct gengetopt_args_info *args_info) { - unsigned int i; + for (i = 0; i < args_info->inputs_num; ++i) free (args_info->inputs [i]); - + if (args_info->inputs_num) free (args_info->inputs); - + clear_given (args_info); } + +static void +write_into_file(FILE *outfile, const char *opt, const char *arg, const char *values[]) +{ + FIX_UNUSED (values); + if (arg) { + fprintf(outfile, "%s=\"%s\"\n", opt, arg); + } else { + fprintf(outfile, "%s\n", opt); + } +} + + +int +cmdline_parser_dump(FILE *outfile, struct gengetopt_args_info *args_info) +{ + int i = 0; + + if (!outfile) + { + fprintf (stderr, "%s: cannot dump options to stream\n", CMDLINE_PARSER_PACKAGE); + return EXIT_FAILURE; + } + + if (args_info->help_given) + write_into_file(outfile, "help", 0, 0 ); + if (args_info->version_given) + write_into_file(outfile, "version", 0, 0 ); + + + i = EXIT_SUCCESS; + return i; +} + int cmdline_parser_file_save(const char *filename, struct gengetopt_args_info *args_info) { @@ -130,16 +207,9 @@ cmdline_parser_file_save(const char *filename, struct gengetopt_args_info *args_ return EXIT_FAILURE; } - if (args_info->help_given) { - fprintf(outfile, "%s\n", "help"); - } - if (args_info->version_given) { - fprintf(outfile, "%s\n", "version"); - } - + i = cmdline_parser_dump(outfile, args_info); fclose (outfile); - i = EXIT_SUCCESS; return i; } @@ -149,13 +219,11 @@ cmdline_parser_free (struct gengetopt_args_info *args_info) cmdline_parser_release (args_info); } - -/* gengetopt_strdup() */ -/* strdup.c replacement of strdup, which is not standard */ +/** @brief replacement of strdup, which is not standard */ char * gengetopt_strdup (const char *s) { - char *result = NULL; + char *result = 0; if (!s) return result; @@ -167,17 +235,40 @@ gengetopt_strdup (const char *s) } int -cmdline_parser (int argc, char * const *argv, struct gengetopt_args_info *args_info) +cmdline_parser (int argc, char **argv, struct gengetopt_args_info *args_info) { return cmdline_parser2 (argc, argv, args_info, 0, 1, 1); } int -cmdline_parser2 (int argc, char * const *argv, struct gengetopt_args_info *args_info, int override, int initialize, int check_required) +cmdline_parser_ext (int argc, char **argv, struct gengetopt_args_info *args_info, + struct cmdline_parser_params *params) { int result; + result = cmdline_parser_internal (argc, argv, args_info, params, 0); - result = cmdline_parser_internal (argc, argv, args_info, override, initialize, check_required, NULL); + if (result == EXIT_FAILURE) + { + cmdline_parser_free (args_info); + exit (EXIT_FAILURE); + } + + return result; +} + +int +cmdline_parser2 (int argc, char **argv, struct gengetopt_args_info *args_info, int override, int initialize, int check_required) +{ + int result; + struct cmdline_parser_params params; + + params.override = override; + params.initialize = initialize; + params.check_required = check_required; + params.check_ambiguity = 0; + params.print_errors = 1; + + result = cmdline_parser_internal (argc, argv, args_info, ¶ms, 0); if (result == EXIT_FAILURE) { @@ -191,16 +282,37 @@ cmdline_parser2 (int argc, char * const *argv, struct gengetopt_args_info *args_ int cmdline_parser_required (struct gengetopt_args_info *args_info, const char *prog_name) { + FIX_UNUSED (args_info); + FIX_UNUSED (prog_name); return EXIT_SUCCESS; } + +static char *package_name = 0; + + + int -cmdline_parser_internal (int argc, char * const *argv, struct gengetopt_args_info *args_info, int override, int initialize, int check_required, const char *additional_error) +cmdline_parser_internal ( + int argc, char **argv, struct gengetopt_args_info *args_info, + struct cmdline_parser_params *params, const char *additional_error) { int c; /* Character of the parsed option. */ int error = 0; struct gengetopt_args_info local_args_info; + + int override; + int initialize; + int check_required; + int check_ambiguity; + + package_name = argv[0]; + + override = params->override; + initialize = params->initialize; + check_required = params->check_required; + check_ambiguity = params->check_ambiguity; if (initialize) cmdline_parser_init (args_info); @@ -209,21 +321,19 @@ cmdline_parser_internal (int argc, char * const *argv, struct gengetopt_args_inf optarg = 0; optind = 0; - opterr = 1; + opterr = params->print_errors; optopt = '?'; while (1) { int option_index = 0; - char *stop_char; static struct option long_options[] = { { "help", 0, NULL, 'h' }, { "version", 0, NULL, 'V' }, - { NULL, 0, NULL, 0 } + { 0, 0, 0, 0 } }; - stop_char = 0; c = getopt_long (argc, argv, "hV", long_options, &option_index); if (c == -1) break; /* Exit from `while (1)' loop. */ |