certi-cvs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[certi-cvs] certi/RTIA RTIA.ggo RTIA_cmdline.h RTIA_cmdline.c


From: certi-cvs
Subject: [certi-cvs] certi/RTIA RTIA.ggo RTIA_cmdline.h RTIA_cmdline.c
Date: Mon, 23 Jun 2008 12:48:28 +0000

CVSROOT:        /sources/certi
Module name:    certi
Changes by:     Eric NOULARD <erk>      08/06/23 12:48:27

Modified files:
        RTIA           : RTIA.ggo 
Added files:
        RTIA           : RTIA_cmdline.h RTIA_cmdline.c 

Log message:
        Add gengetopt command line parser for RTIA

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/certi/RTIA/RTIA.ggo?cvsroot=certi&r1=1.1&r2=1.2
http://cvs.savannah.gnu.org/viewcvs/certi/RTIA/RTIA_cmdline.h?cvsroot=certi&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/certi/RTIA/RTIA_cmdline.c?cvsroot=certi&rev=1.1

Patches:
Index: RTIA.ggo
===================================================================
RCS file: /sources/certi/certi/RTIA/RTIA.ggo,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- RTIA.ggo    20 Jun 2008 13:12:34 -0000      1.1
+++ RTIA.ggo    23 Jun 2008 12:48:27 -0000      1.2
@@ -10,5 +10,5 @@
 args "-F RTIA_cmdline"
 
 # Options
-option "port"                  p "tcp port to be used"         short  
-option "verbose"       v "verbose mode"                        short   no
\ No newline at end of file
+option "port"                  p "tcp port to be used to communicate with 
FederateAmbassador"  int     optional
+option "verbose"       v "verbose mode"                        short   optional
\ No newline at end of file

Index: RTIA_cmdline.h
===================================================================
RCS file: RTIA_cmdline.h
diff -N RTIA_cmdline.h
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ RTIA_cmdline.h      23 Jun 2008 12:48:27 -0000      1.1
@@ -0,0 +1,155 @@
+/** @file RTIA_cmdline.h
+ *  @brief The header file for the command line option parser
+ *  generated by GNU Gengetopt version 2.21
+ *  http://www.gnu.org/software/gengetopt.
+ *  DO NOT modify this file, since it can be overwritten
+ *  @author GNU Gengetopt by Lorenzo Bettini */
+
+#ifndef RTIA_CMDLINE_H
+#define RTIA_CMDLINE_H
+
+/* If we use autoconf.  */
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
+#ifndef CMDLINE_PARSER_PACKAGE
+/** @brief the program name */
+#define CMDLINE_PARSER_PACKAGE "RTIA"
+#endif
+
+#ifndef CMDLINE_PARSER_VERSION
+/** @brief the program version */
+#define CMDLINE_PARSER_VERSION "1.1"
+#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 *version_help; /**< @brief Print version and exit help 
description.  */
+  int port_arg;        /**< @brief tcp port to be used to communicate with 
FederateAmbassador.  */
+  char * port_orig;    /**< @brief tcp port to be used to communicate with 
FederateAmbassador original value given at command line.  */
+  const char *port_help; /**< @brief tcp port to be used to communicate with 
FederateAmbassador help description.  */
+  short verbose_arg;   /**< @brief verbose mode.  */
+  char * verbose_orig; /**< @brief verbose mode original value given at 
command line.  */
+  const char *verbose_help; /**< @brief verbose mode help description.  */
+  
+  int help_given ;     /**< @brief Whether help was given.  */
+  int version_given ;  /**< @brief Whether version was given.  */
+  int port_given ;     /**< @brief Whether port was given.  */
+  int verbose_given ;  /**< @brief Whether verbose was given.  */
+
+} ;
+
+/** @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 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 gengetopt_args_info (default 0) */
+} ;
+
+/** @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[];
+
+/**
+ * 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 * const *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 * const *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 * const *argv,
+  struct gengetopt_args_info *args_info,
+  struct cmdline_parser_params *params);
+
+/**
+ * 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 version
+ */
+void cmdline_parser_print_version(void);
+
+/**
+ * Allocates dynamically a cmdline_parser_params structure and initializes
+ * all its fields to 0
+ * @return the initialized cmdline_parser_params structure
+ */
+struct cmdline_parser_params *cmdline_parser_params_init();
+
+/**
+ * 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);
+
+
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+#endif /* RTIA_CMDLINE_H */

Index: RTIA_cmdline.c
===================================================================
RCS file: RTIA_cmdline.c
diff -N RTIA_cmdline.c
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ RTIA_cmdline.c      23 Jun 2008 12:48:27 -0000      1.1
@@ -0,0 +1,384 @@
+/*
+  File autogenerated by gengetopt version 2.21
+  generated with the following command:
+  gengetopt -i RTIA.ggo -F RTIA_cmdline
+
+  The developers of gengetopt consider the fixed text that goes in all
+  gengetopt output files to be in the public domain:
+  we make no copyright claims on it.
+*/
+
+/* If we use autoconf.  */
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "getopt.h"
+
+#include "RTIA_cmdline.h"
+
+const char *gengetopt_args_info_purpose = "RunTime Infrastructure Ambassador";
+
+const char *gengetopt_args_info_usage = "Usage: rtia [-p <tcp_port>] [-v]";
+
+const char *gengetopt_args_info_description = "Launched by the fedarate in 
order to handle RTI<-->Federate communication";
+
+const char *gengetopt_args_info_help[] = {
+  "  -h, --help           Print help and exit",
+  "  -V, --version        Print version and exit",
+  "  -p, --port=INT       tcp port to be used to communicate with \n           
              FederateAmbassador",
+  "  -v, --verbose=SHORT  verbose mode",
+    0
+};
+
+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,
+                        struct cmdline_parser_params *params, const char 
*additional_error);
+
+
+static char *
+gengetopt_strdup (const char *s);
+
+static
+void clear_given (struct gengetopt_args_info *args_info)
+{
+  args_info->help_given = 0 ;
+  args_info->version_given = 0 ;
+  args_info->port_given = 0 ;
+  args_info->verbose_given = 0 ;
+}
+
+static
+void clear_args (struct gengetopt_args_info *args_info)
+{
+  args_info->port_orig = NULL;
+  args_info->verbose_orig = NULL;
+  
+}
+
+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] ;
+  args_info->port_help = gengetopt_args_info_help[2] ;
+  args_info->verbose_help = gengetopt_args_info_help[3] ;
+  
+}
+
+void
+cmdline_parser_print_version (void)
+{
+  printf ("%s %s\n", CMDLINE_PARSER_PACKAGE, CMDLINE_PARSER_VERSION);
+}
+
+void
+cmdline_parser_print_help (void)
+{
+  int i = 0;
+  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_description) > 0)
+    printf("%s\n", gengetopt_args_info_description);
+
+  while (gengetopt_args_info_help[i])
+    printf("%s\n", gengetopt_args_info_help[i++]);
+}
+
+void
+cmdline_parser_init (struct gengetopt_args_info *args_info)
+{
+  clear_given (args_info);
+  clear_args (args_info);
+  init_args_info (args_info);
+}
+
+struct cmdline_parser_params *
+cmdline_parser_params_init()
+{
+  struct cmdline_parser_params *params = 
+    (struct cmdline_parser_params *)malloc(sizeof(struct 
cmdline_parser_params));
+
+  if (params)
+    { 
+      params->override = 0;
+      params->initialize = 0;
+      params->check_required = 0;
+      params->check_ambiguity = 0;
+    }
+    
+  return params;
+}
+
+static void
+cmdline_parser_release (struct gengetopt_args_info *args_info)
+{
+  
+  if (args_info->port_orig)
+    {
+      free (args_info->port_orig); /* free previous argument */
+      args_info->port_orig = 0;
+    }
+  if (args_info->verbose_orig)
+    {
+      free (args_info->verbose_orig); /* free previous argument */
+      args_info->verbose_orig = 0;
+    }
+  
+  clear_given (args_info);
+}
+
+int
+cmdline_parser_file_save(const char *filename, struct gengetopt_args_info 
*args_info)
+{
+  FILE *outfile;
+  int i = 0;
+
+  outfile = fopen(filename, "w");
+
+  if (!outfile)
+    {
+      fprintf (stderr, "%s: cannot open file for writing: %s\n", 
CMDLINE_PARSER_PACKAGE, filename);
+      return EXIT_FAILURE;
+    }
+
+  if (args_info->help_given) {
+    fprintf(outfile, "%s\n", "help");
+  }
+  if (args_info->version_given) {
+    fprintf(outfile, "%s\n", "version");
+  }
+  if (args_info->port_given) {
+    if (args_info->port_orig) {
+      fprintf(outfile, "%s=\"%s\"\n", "port", args_info->port_orig);
+    } else {
+      fprintf(outfile, "%s\n", "port");
+    }
+  }
+  if (args_info->verbose_given) {
+    if (args_info->verbose_orig) {
+      fprintf(outfile, "%s=\"%s\"\n", "verbose", args_info->verbose_orig);
+    } else {
+      fprintf(outfile, "%s\n", "verbose");
+    }
+  }
+  
+  fclose (outfile);
+
+  i = EXIT_SUCCESS;
+  return i;
+}
+
+void
+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 */
+char *
+gengetopt_strdup (const char *s)
+{
+  char *result = NULL;
+  if (!s)
+    return result;
+
+  result = (char*)malloc(strlen(s) + 1);
+  if (result == (char*)0)
+    return (char*)0;
+  strcpy(result, s);
+  return result;
+}
+
+int
+cmdline_parser (int argc, char * const *argv, struct gengetopt_args_info 
*args_info)
+{
+  return cmdline_parser2 (argc, argv, args_info, 0, 1, 1);
+}
+
+int
+cmdline_parser_ext (int argc, char * const *argv, struct gengetopt_args_info 
*args_info,
+                   struct cmdline_parser_params *params)
+{
+  int result;
+  result = cmdline_parser_internal (argc, argv, args_info, params, NULL);
+
+  if (result == EXIT_FAILURE)
+    {
+      cmdline_parser_free (args_info);
+      exit (EXIT_FAILURE);
+    }
+  
+  return result;
+}
+
+int
+cmdline_parser2 (int argc, char * const *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;
+
+  result = cmdline_parser_internal (argc, argv, args_info, &params, NULL);
+
+  if (result == EXIT_FAILURE)
+    {
+      cmdline_parser_free (args_info);
+      exit (EXIT_FAILURE);
+    }
+  
+  return result;
+}
+
+int
+cmdline_parser_required (struct gengetopt_args_info *args_info, const char 
*prog_name)
+{
+  return EXIT_SUCCESS;
+}
+
+int
+cmdline_parser_internal (int argc, char * const *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;
+  
+  override = params->override;
+  initialize = params->initialize;
+  check_required = params->check_required;
+  check_ambiguity = params->check_ambiguity;
+
+  if (initialize)
+    cmdline_parser_init (args_info);
+
+  cmdline_parser_init (&local_args_info);
+
+  optarg = 0;
+  optind = 0;
+  opterr = 1;
+  optopt = '?';
+
+  while (1)
+    {
+      int option_index = 0;
+      char *stop_char;
+
+      static struct option long_options[] = {
+        { "help",      0, NULL, 'h' },
+        { "version",   0, NULL, 'V' },
+        { "port",      1, NULL, 'p' },
+        { "verbose",   1, NULL, 'v' },
+        { NULL,        0, NULL, 0 }
+      };
+
+      stop_char = 0;
+      c = getopt_long (argc, argv, "hVp:v:", long_options, &option_index);
+
+      if (c == -1) break;      /* Exit from `while (1)' loop.  */
+
+      switch (c)
+        {
+        case 'h':      /* Print help and exit.  */
+          cmdline_parser_print_help ();
+          cmdline_parser_free (&local_args_info);
+          exit (EXIT_SUCCESS);
+
+        case 'V':      /* Print version and exit.  */
+          cmdline_parser_print_version ();
+          cmdline_parser_free (&local_args_info);
+          exit (EXIT_SUCCESS);
+
+        case 'p':      /* tcp port to be used to communicate with 
FederateAmbassador.  */
+          if (local_args_info.port_given || (check_ambiguity && 
args_info->port_given))
+            {
+              fprintf (stderr, "%s: `--port' (`-p') option given more than 
once%s\n", argv[0], (additional_error ? additional_error : ""));
+              goto failure;
+            }
+          if (args_info->port_given && ! override)
+            continue;
+          local_args_info.port_given = 1;
+          args_info->port_given = 1;
+          args_info->port_arg = strtol (optarg, &stop_char, 0);
+          if (!(stop_char && *stop_char == '\0')) {
+            fprintf(stderr, "%s: invalid numeric value: %s\n", argv[0], 
optarg);
+            goto failure;
+          }
+          if (args_info->port_orig)
+            free (args_info->port_orig); /* free previous string */
+          args_info->port_orig = gengetopt_strdup (optarg);
+          break;
+
+        case 'v':      /* verbose mode.  */
+          if (local_args_info.verbose_given || (check_ambiguity && 
args_info->verbose_given))
+            {
+              fprintf (stderr, "%s: `--verbose' (`-v') option given more than 
once%s\n", argv[0], (additional_error ? additional_error : ""));
+              goto failure;
+            }
+          if (args_info->verbose_given && ! override)
+            continue;
+          local_args_info.verbose_given = 1;
+          args_info->verbose_given = 1;
+          args_info->verbose_arg = (short)strtol (optarg, &stop_char, 0);
+          if (!(stop_char && *stop_char == '\0')) {
+            fprintf(stderr, "%s: invalid numeric value: %s\n", argv[0], 
optarg);
+            goto failure;
+          }
+          if (args_info->verbose_orig)
+            free (args_info->verbose_orig); /* free previous string */
+          args_info->verbose_orig = gengetopt_strdup (optarg);
+          break;
+
+
+        case 0:        /* Long option with no short option */
+        case '?':      /* Invalid option.  */
+          /* `getopt_long' already printed an error message.  */
+          goto failure;
+
+        default:       /* bug: option not considered.  */
+          fprintf (stderr, "%s: option unknown: %c%s\n", 
CMDLINE_PARSER_PACKAGE, c, (additional_error ? additional_error : ""));
+          abort ();
+        } /* switch */
+    } /* while */
+
+
+
+
+  cmdline_parser_release (&local_args_info);
+
+  if ( error )
+    return (EXIT_FAILURE);
+
+  return 0;
+
+failure:
+  
+  cmdline_parser_release (&local_args_info);
+  return (EXIT_FAILURE);
+}




reply via email to

[Prev in Thread] Current Thread [Next in Thread]