allow passing of fancy time to timetravel option
authorChristian Grothoff <christian@grothoff.org>
Sun, 29 Mar 2020 10:51:26 +0000 (12:51 +0200)
committerChristian Grothoff <christian@grothoff.org>
Sun, 29 Mar 2020 10:51:26 +0000 (12:51 +0200)
src/pq/pq_connect.c
src/util/common_logging.c
src/util/getopt_helpers.c

index a7a57f98a75b216526f67756b323bd7612238f75..8da273b2bbcd87918515fd71b8868487fad6674d 100644 (file)
@@ -190,7 +190,7 @@ apply_patch (struct GNUNET_PQ_Context *db,
        (0 != code) )
   {
     GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
-                "Could not run PSQL on file %s: %d",
+                "Could not run PSQL on file %s: %d\n",
                 buf,
                 (int) code);
     return GNUNET_SYSERR;
index 27ac88a05e351f2bca9a751ec2b64c6ebb2a90c3..527dffc025462d07a7a49e7d6bd58e69fcc3bb76 100644 (file)
@@ -705,7 +705,9 @@ parse_all_definitions ()
  * @return #GNUNET_OK on success
  */
 int
-GNUNET_log_setup (const char *comp, const char *loglevel, const char *logfile)
+GNUNET_log_setup (const char *comp,
+                  const char *loglevel,
+                  const char *logfile)
 {
   const char *env_logfile;
 
index a2572ccab0803ced67453e1b0bf095dc890508ce..f053158ae3a2560855af560072ee652f9f114796 100644 (file)
@@ -623,18 +623,42 @@ set_timetravel_time (struct GNUNET_GETOPT_CommandLineProcessorContext *ctx,
                      const char *value)
 {
   long long delta;
+  long long minus;
+  struct GNUNET_TIME_Relative rt;
 
   (void) scls;
   (void) ctx;
-  if (1 != sscanf (value,
-                   "%lld",
-                   &delta))
+  while (isspace (value[0]))
+    value++;
+  minus = 1;
+  if (value[0] == '-')
+  {
+    minus = -1;
+    value++;
+  }
+  else if (value[0] == '+')
+  {
+    value++;
+  }
+  if (GNUNET_OK !=
+      GNUNET_STRINGS_fancy_time_to_relative (value,
+                                             &rt))
   {
     fprintf (stderr,
-             _ ("You must pass a number to the `%s' option.\n"),
+             _ (
+               "You must pass a relative time (optionally with sign) to the `%s' option.\n"),
+             option);
+    return GNUNET_SYSERR;
+  }
+  if (rt.rel_value_us > LONG_LONG_MAX)
+  {
+    fprintf (stderr,
+             _ ("Value given for time travel `%s' option is too big.\n"),
              option);
     return GNUNET_SYSERR;
   }
+  delta = (long long) rt.rel_value_us;
+  delta *= minus;
   GNUNET_TIME_set_offset (delta);
   return GNUNET_OK;
 }