tolerate additional IPv4 address now available for gnunet.org
[oweals/gnunet.git] / src / util / getopt_helpers.c
index c55b22fb622f2a1c53adbad8fbec1b37e68c5701..77032e5015ffac6b08a2a61a808fda510d1461c4 100644 (file)
@@ -14,6 +14,8 @@
     
      You should have received a copy of the GNU Affero General Public License
      along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+     SPDX-License-Identifier: AGPL3.0-or-later
 */
 
 /**
@@ -108,9 +110,10 @@ format_help (struct GNUNET_GETOPT_CommandLineProcessorContext *ctx,
   (void) value;
   if (NULL != about)
   {
-    printf ("%s\n%s\n", ctx->binaryOptions, gettext (about));
-    printf (_
-           ("Arguments mandatory for long options are also mandatory for short options.\n"));
+    printf ("%s\n%s\n",
+           ctx->binaryOptions,
+           gettext (about));
+    printf (_("Arguments mandatory for long options are also mandatory for short options.\n"));
   }
   i = 0;
   opt = ctx->allOptions;
@@ -549,11 +552,13 @@ set_ulong (struct GNUNET_GETOPT_CommandLineProcessorContext *ctx,
            const char *value)
 {
   unsigned long long *val = scls;
+  char dummy[2];
 
   (void) ctx;
   if (1 != SSCANF (value,
-                   "%llu",
-                   val))
+                   "%llu%1s",
+                   val,
+                  dummy))
   {
     FPRINTF (stderr,
              _("You must pass a number to the `%s' option.\n"),
@@ -746,11 +751,20 @@ set_uint (struct GNUNET_GETOPT_CommandLineProcessorContext *ctx,
           const char *value)
 {
   unsigned int *val = scls;
+  char dummy[2];
 
   (void) ctx;
+  if('-' == *value)
+  {
+       FPRINTF (stderr,
+               _("Your input for the '%s' option has to be a non negative number \n"),
+               option);
+       return GNUNET_SYSERR;
+  }
   if (1 != SSCANF (value,
-                   "%u",
-                   val))
+                   "%u%1s",
+                   val,
+                  dummy))
   {
     FPRINTF (stderr,
              _("You must pass a number to the `%s' option.\n"),
@@ -813,11 +827,13 @@ set_uint16 (struct GNUNET_GETOPT_CommandLineProcessorContext *ctx,
 {
   uint16_t *val = scls;
   unsigned int v;
+  char dummy[2];
   
   (void) ctx;
   if (1 != SSCANF (value,
-                   "%u",
-                   &v))
+                   "%u%1s",
+                   &v,
+                  dummy))
   {
     FPRINTF (stderr,
              _("You must pass a number to the `%s' option.\n"),