]> git.ipfire.org Git - thirdparty/make.git/commitdiff
* src/shuffle.c: Minor coding changes.
authorPaul Smith <psmith@gnu.org>
Sun, 11 Sep 2022 18:04:58 +0000 (14:04 -0400)
committerPaul Smith <psmith@gnu.org>
Sun, 11 Sep 2022 18:04:58 +0000 (14:04 -0400)
src/shuffle.c

index ea6e836d9bb491d516f651d21a10685249d5f0f4..d78bfd8fc5892cc77a3b4faf4f04f0e24df2104d 100644 (file)
@@ -46,7 +46,7 @@ static struct
     enum shuffle_mode mode;
     unsigned int seed;
     void (*shuffler) (void **a, size_t len);
-    char strval[INTSTR_LENGTH];
+    char strval[INTSTR_LENGTH + 1];
   } config = { sm_none, 0, NULL, "" };
 
 /* Return string value of --shuffle= option passed.
@@ -55,55 +55,47 @@ static struct
 const char *
 shuffle_get_mode ()
 {
-  return config.strval[0] ? config.strval : NULL;
+  return config.strval[0] == '\0' ? NULL : config.strval;
 }
 
 void
 shuffle_set_mode (const char *cmdarg)
 {
   /* Parse supported '--shuffle' mode.  */
-  if (strcasecmp (cmdarg, "random") == 0)
+  if (strcasecmp (cmdarg, "reverse") == 0)
     {
-      config.mode = sm_random;
-      config.seed = (unsigned int) (time (NULL) ^ make_pid ());
+      config.mode = sm_reverse;
+      config.shuffler = reverse_shuffle_array;
+      strcpy (config.strval, "reverse");
     }
-  else if (strcasecmp (cmdarg, "reverse") == 0)
-    config.mode = sm_reverse;
   else if (strcasecmp (cmdarg, "identity") == 0)
-    config.mode = sm_identity;
+    {
+      config.mode = sm_identity;
+      config.shuffler = identity_shuffle_array;
+      strcpy (config.strval, "identity");
+    }
   else if (strcasecmp (cmdarg, "none") == 0)
-    config.mode = sm_none;
-  /* Assume explicit seed if starts from a digit.  */
+    {
+      config.mode = sm_none;
+      config.shuffler = NULL;
+      config.strval[0] = '\0';
+    }
   else
     {
-      const char *err;
-      config.mode = sm_random;
-      config.seed = make_toui (cmdarg, &err);
-
-      if (err)
+      if (strcasecmp (cmdarg, "random") == 0)
+        config.seed = (unsigned int) (time (NULL) ^ make_pid ());
+      else
         {
-          OS (error, NILF, _("invalid shuffle mode: '%s'"), cmdarg);
-          die (MAKE_FAILURE);
+          /* Assume explicit seed.  */
+          const char *err;
+          config.seed = make_toui (cmdarg, &err);
+          if (err)
+            OSS (fatal, NILF, _("invalid shuffle mode: %s: '%s'"), err, cmdarg);
         }
-    }
 
-  switch (config.mode)
-    {
-    case sm_random:
+      config.mode = sm_random;
       config.shuffler = random_shuffle_array;
       sprintf (config.strval, "%u", config.seed);
-      break;
-    case sm_reverse:
-      config.shuffler = reverse_shuffle_array;
-      strcpy (config.strval, "reverse");
-      break;
-    case sm_identity:
-      config.shuffler = identity_shuffle_array;
-      strcpy (config.strval, "identity");
-      break;
-    case sm_none:
-      config.strval[0] = '\0';
-      break;
     }
 }