-try with finished
[oweals/gnunet.git] / src / util / getopt.c
index 2a35ab278852dcc5004e43143b7af31ef08e4c77..169949821ed2a432299c1fea66552a0e98b66c5e 100644 (file)
@@ -49,6 +49,10 @@ Copyright (C) 2006 Christian Grothoff
 #endif
 #endif
 
+#define LOG(kind,...) GNUNET_log_from (kind, "util", __VA_ARGS__)
+
+#define LOG_STRERROR(kind,syscall) GNUNET_log_from_strerror (kind, "util", syscall)
+
 #if defined (WIN32) && !defined (__CYGWIN32__)
 /* It's not Unix, really.  See?  Capital letters.  */
 #include <windows.h>
@@ -194,7 +198,8 @@ static char *posixly_correct;
 /* Avoid depending on library functions or files
    whose names are inconsistent.  */
 
-char *getenv ();
+char *
+getenv ();
 
 static char *
 my_index (str, chr)
@@ -218,7 +223,8 @@ my_index (str, chr)
 #if !defined (__STDC__) || !__STDC__
 /* gcc with -traditional declares the built-in strlen to return int,
    and has done so at least since version 2.4.5. -- rms.  */
-extern int strlen (const char *);
+extern int
+strlen (const char *);
 #endif /* not __STDC__ */
 #endif /* __GNUC__ */
 
@@ -251,8 +257,8 @@ extern pid_t __libc_pid;
 /* Make sure the environment variable bash 2.0 puts in the environment
    is valid for the getopt call we must make sure that the ARGV passed
    to getopt is that one passed to the process.  */
-static void
-    __attribute__ ((unused)) store_args_and_env (int argc, char *const *argv)
+static void GNUNET_UNUSED
+store_args_and_env (int argc, char *const *argv)
 {
   /* XXX This is no good solution.  We should rather copy the args so
    * that we can compare them later.  But we must not use malloc(3).  */
@@ -283,7 +289,8 @@ text_set_element (__libc_subinit, store_args_and_env);
    the new indices of the non-options in ARGV after they are moved.  */
 
 #if defined (__STDC__) && __STDC__
-static void exchange (char **);
+static void
+exchange (char **);
 #endif
 
 static void
@@ -370,7 +377,8 @@ exchange (argv)
 /* Initialize the internal data when the first call is made.  */
 
 #if defined (__STDC__) && __STDC__
-static const char *_getopt_initialize (int, char *const *, const char *);
+static const char *
+_getopt_initialize (int, char *const *, const char *);
 #endif
 static const char *
 _getopt_initialize (argc, argv, optstring)
@@ -410,8 +418,8 @@ _getopt_initialize (argc, argv, optstring)
   {
     if (nonoption_flags_max_len == 0)
     {
-      if (__getopt_nonoption_flags == NULL
-          || __getopt_nonoption_flags[0] == '\0')
+      if (__getopt_nonoption_flags == NULL ||
+          __getopt_nonoption_flags[0] == '\0')
         nonoption_flags_max_len = -1;
       else
       {
@@ -497,11 +505,9 @@ _getopt_initialize (argc, argv, optstring)
    long-named options.  */
 
 static int
-GN_getopt_internal (int argc,
-                    char *const *argv,
-                    const char *optstring,
-                    const struct GNoption *longopts,
-                    int *longind, int long_only)
+GN_getopt_internal (int argc, char *const *argv, const char *optstring,
+                    const struct GNoption *longopts, int *longind,
+                    int long_only)
 {
   static int __getopt_initialized = 0;
   static int GNopterr = 1;
@@ -600,30 +606,29 @@ GN_getopt_internal (int argc,
     /* We have found another option-ARGV-element.
      * Skip the initial punctuation.  */
 
-    nextchar = (argv[GNoptind] + 1
-                + (longopts != NULL && argv[GNoptind][1] == '-'));
+    nextchar =
+        (argv[GNoptind] + 1 + (longopts != NULL && argv[GNoptind][1] == '-'));
   }
 
   /* Decode the current option-ARGV-element.  */
 
   /* Check whether the ARGV-element is a long option.
-   * 
+   *
    * If long_only and the ARGV-element has the form "-f", where f is
    * a valid short option, don't consider it an abbreviated form of
    * a long option that starts with f.  Otherwise there would be no
    * way to give the -f short option.
-   * 
+   *
    * On the other hand, if there's a long option "fubar" and
    * the ARGV-element is "-fu", do consider that an abbreviation of
    * the long option, just like "--fu", and not "-f" with arg "u".
-   * 
+   *
    * This distinction seems to be the most useful approach.  */
 
-  if (longopts != NULL
-      && (argv[GNoptind][1] == '-'
-          || (long_only
-              && (argv[GNoptind][2]
-                  || !my_index (optstring, argv[GNoptind][1])))))
+  if (longopts != NULL &&
+      (argv[GNoptind][1] == '-' ||
+       (long_only &&
+        (argv[GNoptind][2] || !my_index (optstring, argv[GNoptind][1])))))
   {
     char *nameend;
     const struct GNoption *p;
@@ -641,8 +646,8 @@ GN_getopt_internal (int argc,
     for (p = longopts, option_index = 0; p->name; p++, option_index++)
       if (!strncmp (p->name, nextchar, nameend - nextchar))
       {
-        if ((unsigned int) (nameend - nextchar)
-            == (unsigned int) strlen (p->name))
+        if ((unsigned int) (nameend - nextchar) ==
+            (unsigned int) strlen (p->name))
         {
           /* Exact match found.  */
           pfound = p;
@@ -664,8 +669,8 @@ GN_getopt_internal (int argc,
     if (ambig && !exact)
     {
       if (GNopterr)
-        fprintf (stderr, _("%s: option `%s' is ambiguous\n"),
-                 argv[0], argv[GNoptind]);
+        FPRINTF (stderr, _("%s: option `%s' is ambiguous\n"), argv[0],
+                 argv[GNoptind]);
       nextchar += strlen (nextchar);
       GNoptind++;
       return '?';
@@ -687,15 +692,13 @@ GN_getopt_internal (int argc,
           {
             if (argv[GNoptind - 1][1] == '-')
               /* --option */
-              fprintf (stderr,
-                       _
-                       ("%s: option `--%s' does not allow an argument\n"),
+              FPRINTF (stderr,
+                       _("%s: option `--%s' does not allow an argument\n"),
                        argv[0], pfound->name);
             else
               /* +option or -option */
-              fprintf (stderr,
-                       _
-                       ("%s: option `%c%s' does not allow an argument\n"),
+              FPRINTF (stderr,
+                       _("%s: option `%c%s' does not allow an argument\n"),
                        argv[0], argv[GNoptind - 1][0], pfound->name);
           }
           nextchar += strlen (nextchar);
@@ -712,8 +715,7 @@ GN_getopt_internal (int argc,
         {
           if (GNopterr)
           {
-            fprintf (stderr,
-                     _("%s: option `%s' requires an argument\n"),
+            FPRINTF (stderr, _("%s: option `%s' requires an argument\n"),
                      argv[0], argv[GNoptind - 1]);
           }
           nextchar += strlen (nextchar);
@@ -735,19 +737,19 @@ GN_getopt_internal (int argc,
      * or the option starts with '--' or is not a valid short
      * option, then it's an error.
      * Otherwise interpret it as a short option.  */
-    if (!long_only || argv[GNoptind][1] == '-'
-        || my_index (optstring, *nextchar) == NULL)
+    if (!long_only || argv[GNoptind][1] == '-' ||
+        my_index (optstring, *nextchar) == NULL)
     {
       if (GNopterr)
       {
         if (argv[GNoptind][1] == '-')
           /* --option */
-          fprintf (stderr, _("%s: unrecognized option `--%s'\n"),
-                   argv[0], nextchar);
+          FPRINTF (stderr, _("%s: unrecognized option `--%s'\n"), argv[0],
+                   nextchar);
         else
           /* +option or -option */
-          fprintf (stderr, _("%s: unrecognized option `%c%s'\n"),
-                   argv[0], argv[GNoptind][0], nextchar);
+          FPRINTF (stderr, _("%s: unrecognized option `%c%s'\n"), argv[0],
+                   argv[GNoptind][0], nextchar);
       }
       nextchar = (char *) "";
       GNoptind++;
@@ -771,9 +773,9 @@ GN_getopt_internal (int argc,
       {
         if (posixly_correct)
           /* 1003.2 specifies the format of this message.  */
-          fprintf (stderr, _("%s: illegal option -- %c\n"), argv[0], c);
+          FPRINTF (stderr, _("%s: illegal option -- %c\n"), argv[0], c);
         else
-          fprintf (stderr, _("%s: invalid option -- %c\n"), argv[0], c);
+          FPRINTF (stderr, _("%s: invalid option -- %c\n"), argv[0], c);
       }
       return '?';
     }
@@ -801,7 +803,7 @@ GN_getopt_internal (int argc,
         if (GNopterr)
         {
           /* 1003.2 specifies the format of this message.  */
-          fprintf (stderr, _("%s: option requires an argument -- %c\n"),
+          FPRINTF (stderr, _("%s: option requires an argument -- %c\n"),
                    argv[0], c);
         }
         if (optstring[0] == ':')
@@ -849,8 +851,8 @@ GN_getopt_internal (int argc,
       if (ambig && !exact)
       {
         if (GNopterr)
-          fprintf (stderr, _("%s: option `-W %s' is ambiguous\n"),
-                   argv[0], argv[GNoptind]);
+          FPRINTF (stderr, _("%s: option `-W %s' is ambiguous\n"), argv[0],
+                   argv[GNoptind]);
         nextchar += strlen (nextchar);
         GNoptind++;
         return '?';
@@ -867,7 +869,7 @@ GN_getopt_internal (int argc,
           else
           {
             if (GNopterr)
-              fprintf (stderr, _("\
+              FPRINTF (stderr, _("\
 %s: option `-W %s' does not allow an argument\n"), argv[0], pfound->name);
 
             nextchar += strlen (nextchar);
@@ -881,8 +883,7 @@ GN_getopt_internal (int argc,
           else
           {
             if (GNopterr)
-              fprintf (stderr,
-                       _("%s: option `%s' requires an argument\n"),
+              FPRINTF (stderr, _("%s: option `%s' requires an argument\n"),
                        argv[0], argv[GNoptind - 1]);
             nextchar += strlen (nextchar);
             return optstring[0] == ':' ? ':' : '?';
@@ -930,8 +931,8 @@ GN_getopt_internal (int argc,
           if (GNopterr)
           {
             /* 1003.2 specifies the format of this message.  */
-            fprintf (stderr,
-                     _("%s: option requires an argument -- %c\n"), argv[0], c);
+            FPRINTF (stderr, _("%s: option requires an argument -- %c\n"),
+                     argv[0], c);
           }
           if (optstring[0] == ':')
             c = ':';
@@ -950,9 +951,7 @@ GN_getopt_internal (int argc,
 }
 
 static int
-GNgetopt_long (int argc,
-               char *const *argv,
-               const char *options,
+GNgetopt_long (int argc, char *const *argv, const char *options,
                const struct GNoption *long_options, int *opt_index)
 {
   return GN_getopt_internal (argc, argv, options, long_options, opt_index, 0);
@@ -1028,15 +1027,15 @@ GNUNET_GETOPT_run (const char *binaryOptions,
       clpc.currentArgument = GNoptind - 1;
       if ((char) c == allOptions[i].shortName)
       {
-        cont = allOptions[i].processor (&clpc,
-                                        allOptions[i].scls,
-                                        allOptions[i].name, GNoptarg);
+        cont =
+            allOptions[i].processor (&clpc, allOptions[i].scls,
+                                     allOptions[i].name, GNoptarg);
         break;
       }
     }
     if (i == count)
     {
-      fprintf (stderr, _("Use --help to get a list of options.\n"));
+      FPRINTF (stderr, _("Use %s to get a list of options.\n"), "--help");
       cont = GNUNET_SYSERR;
     }
   }