fix
[oweals/gnunet.git] / src / util / getopt_helpers.c
index d050ec99c18667032aa4b37646cfe56b4cc461e8..8564d591f151cc48f9f60ddf58477e15a46af018 100644 (file)
@@ -28,6 +28,8 @@
 #include "gnunet_common.h"
 #include "gnunet_getopt_lib.h"
 
+#define LOG(kind,...) GNUNET_log_from (kind, "util", __VA_ARGS__)
+
 
 /**
  * Print out program version (implements --version).
@@ -40,8 +42,8 @@
  */
 int
 GNUNET_GETOPT_print_version_ (struct GNUNET_GETOPT_CommandLineProcessorContext
-                              *ctx, void *scls, const char *option,
-                              const char *value)
+                             *ctx, void *scls, const char *option,
+                             const char *value)
 {
   const char *version = scls;
 
@@ -64,8 +66,8 @@ GNUNET_GETOPT_print_version_ (struct GNUNET_GETOPT_CommandLineProcessorContext
  */
 int
 GNUNET_GETOPT_format_help_ (struct GNUNET_GETOPT_CommandLineProcessorContext
-                            *ctx, void *scls, const char *option,
-                            const char *value)
+                           *ctx, void *scls, const char *option,
+                           const char *value)
 {
   const char *about = scls;
   size_t slen;
@@ -79,74 +81,74 @@ GNUNET_GETOPT_format_help_ (struct GNUNET_GETOPT_CommandLineProcessorContext
 
   printf ("%s\n%s\n", ctx->binaryOptions, gettext (about));
   printf (_
-          ("Arguments mandatory for long options are also mandatory for short options.\n"));
+         ("Arguments mandatory for long options are also mandatory for short options.\n"));
   i = 0;
   opt = ctx->allOptions;
   while (opt[i].description != NULL)
-  {
-    if (opt[i].shortName == '\0')
-      printf ("      ");
-    else
-      printf ("  -%c, ", opt[i].shortName);
-    printf ("--%s", opt[i].name);
-    slen = 8 + strlen (opt[i].name);
-    if (opt[i].argumentHelp != NULL)
-    {
-      printf ("=%s", opt[i].argumentHelp);
-      slen += 1 + strlen (opt[i].argumentHelp);
-    }
-    if (slen > BORDER)
     {
-      printf ("\n%*s", BORDER, "");
-      slen = BORDER;
+      if (opt[i].shortName == '\0')
+       printf ("      ");
+      else
+       printf ("  -%c, ", opt[i].shortName);
+      printf ("--%s", opt[i].name);
+      slen = 8 + strlen (opt[i].name);
+      if (opt[i].argumentHelp != NULL)
+       {
+         printf ("=%s", opt[i].argumentHelp);
+         slen += 1 + strlen (opt[i].argumentHelp);
+       }
+      if (slen > BORDER)
+       {
+         printf ("\n%*s", BORDER, "");
+         slen = BORDER;
+       }
+      if (slen < BORDER)
+       {
+         printf ("%*s", (int) (BORDER - slen), "");
+         slen = BORDER;
+       }
+      if (0 < strlen (opt[i].description))
+       trans = gettext (opt[i].description);
+      else
+       trans = "";
+      ml = strlen (trans);
+      p = 0;
+    OUTER:
+      while (ml - p > 78 - slen)
+       {
+         for (j = p + 78 - slen; j > p; j--)
+           {
+             if (isspace ((unsigned char) trans[j]))
+               {
+                 scp = GNUNET_malloc (j - p + 1);
+                 memcpy (scp, &trans[p], j - p);
+                 scp[j - p] = '\0';
+                 printf ("%s\n%*s", scp, BORDER + 2, "");
+                 GNUNET_free (scp);
+                 p = j + 1;
+                 slen = BORDER + 2;
+                 goto OUTER;
+               }
+           }
+         /* could not find space to break line */
+         scp = GNUNET_malloc (78 - slen + 1);
+         memcpy (scp, &trans[p], 78 - slen);
+         scp[78 - slen] = '\0';
+         printf ("%s\n%*s", scp, BORDER + 2, "");
+         GNUNET_free (scp);
+         slen = BORDER + 2;
+         p = p + 78 - slen;
+       }
+      /* print rest */
+      if (p < ml)
+       printf ("%s\n", &trans[p]);
+      if (strlen (trans) == 0)
+       printf ("\n");
+      i++;
     }
-    if (slen < BORDER)
-    {
-      printf ("%*s", (int) (BORDER - slen), "");
-      slen = BORDER;
-    }
-    if (0 < strlen (opt[i].description))
-      trans = gettext (opt[i].description);
-    else
-      trans = "";
-    ml = strlen (trans);
-    p = 0;
-OUTER:
-    while (ml - p > 78 - slen)
-    {
-      for (j = p + 78 - slen; j > p; j--)
-      {
-        if (isspace ((unsigned char) trans[j]))
-        {
-          scp = GNUNET_malloc (j - p + 1);
-          memcpy (scp, &trans[p], j - p);
-          scp[j - p] = '\0';
-          printf ("%s\n%*s", scp, BORDER + 2, "");
-          GNUNET_free (scp);
-          p = j + 1;
-          slen = BORDER + 2;
-          goto OUTER;
-        }
-      }
-      /* could not find space to break line */
-      scp = GNUNET_malloc (78 - slen + 1);
-      memcpy (scp, &trans[p], 78 - slen);
-      scp[78 - slen] = '\0';
-      printf ("%s\n%*s", scp, BORDER + 2, "");
-      GNUNET_free (scp);
-      slen = BORDER + 2;
-      p = p + 78 - slen;
-    }
-    /* print rest */
-    if (p < ml)
-      printf ("%s\n", &trans[p]);
-    if (strlen (trans) == 0)
-      printf ("\n");
-    i++;
-  }
   printf ("Report bugs to gnunet-developers@gnu.org.\n"
-          "GNUnet home page: http://www.gnu.org/software/gnunet/\n"
-          "General help using GNU software: http://www.gnu.org/gethelp/\n");
+         "GNUnet home page: http://www.gnu.org/software/gnunet/\n"
+         "General help using GNU software: http://www.gnu.org/gethelp/\n");
   return GNUNET_SYSERR;
 }
 
@@ -166,9 +168,10 @@ OUTER:
  * @return GNUNET_OK
  */
 int
-GNUNET_GETOPT_increment_value (struct GNUNET_GETOPT_CommandLineProcessorContext
-                               *ctx, void *scls, const char *option,
-                               const char *value)
+GNUNET_GETOPT_increment_value (struct
+                              GNUNET_GETOPT_CommandLineProcessorContext *ctx,
+                              void *scls, const char *option,
+                              const char *value)
 {
   int *val = scls;
 
@@ -193,7 +196,7 @@ GNUNET_GETOPT_increment_value (struct GNUNET_GETOPT_CommandLineProcessorContext
  */
 int
 GNUNET_GETOPT_set_one (struct GNUNET_GETOPT_CommandLineProcessorContext *ctx,
-                       void *scls, const char *option, const char *value)
+                      void *scls, const char *option, const char *value)
 {
   int *val = scls;
 
@@ -217,14 +220,14 @@ GNUNET_GETOPT_set_one (struct GNUNET_GETOPT_CommandLineProcessorContext *ctx,
  * @return GNUNET_OK
  */
 int
-GNUNET_GETOPT_set_string (struct GNUNET_GETOPT_CommandLineProcessorContext *ctx,
-                          void *scls, const char *option, const char *value)
+GNUNET_GETOPT_set_string (struct GNUNET_GETOPT_CommandLineProcessorContext
+                         *ctx, void *scls, const char *option,
+                         const char *value)
 {
   char **val = scls;
 
   GNUNET_assert (value != NULL);
-  if (NULL != *val)
-    GNUNET_free (*val);
+  GNUNET_free_non_null (*val);
   *val = GNUNET_strdup (value);
   return GNUNET_OK;
 }
@@ -244,16 +247,18 @@ GNUNET_GETOPT_set_string (struct GNUNET_GETOPT_CommandLineProcessorContext *ctx,
  * @return GNUNET_OK if parsing the value worked
  */
 int
-GNUNET_GETOPT_set_ulong (struct GNUNET_GETOPT_CommandLineProcessorContext *ctx,
-                         void *scls, const char *option, const char *value)
+GNUNET_GETOPT_set_ulong (struct GNUNET_GETOPT_CommandLineProcessorContext
+                        *ctx, void *scls, const char *option,
+                        const char *value)
 {
   unsigned long long *val = scls;
 
   if (1 != SSCANF (value, "%llu", val))
-  {
-    fprintf (stderr, _("You must pass a number to the `%s' option.\n"), option);
-    return GNUNET_SYSERR;
-  }
+    {
+      fprintf (stderr, _("You must pass a number to the `%s' option.\n"),
+              option);
+      return GNUNET_SYSERR;
+    }
   return GNUNET_OK;
 }
 
@@ -273,15 +278,16 @@ GNUNET_GETOPT_set_ulong (struct GNUNET_GETOPT_CommandLineProcessorContext *ctx,
  */
 int
 GNUNET_GETOPT_set_uint (struct GNUNET_GETOPT_CommandLineProcessorContext *ctx,
-                        void *scls, const char *option, const char *value)
+                       void *scls, const char *option, const char *value)
 {
   unsigned int *val = scls;
 
   if (1 != SSCANF (value, "%u", val))
-  {
-    fprintf (stderr, _("You must pass a number to the `%s' option.\n"), option);
-    return GNUNET_SYSERR;
-  }
+    {
+      fprintf (stderr, _("You must pass a number to the `%s' option.\n"),
+              option);
+      return GNUNET_SYSERR;
+    }
   return GNUNET_OK;
 }