summaryrefslogtreecommitdiff
path: root/src/shuffle.c
diff options
context:
space:
mode:
authorPaul Smith <psmith@gnu.org>2022-09-11 14:04:58 -0400
committerPaul Smith <psmith@gnu.org>2022-09-11 14:04:58 -0400
commitaac40044444ffdb194da3598a611260bb0e599f9 (patch)
tree28e6e5eb348ade760db831e68fc7948a60ff2c38 /src/shuffle.c
parent86fc644dcc99c1bbf4764d9b324b723f7ea5ce04 (diff)
downloadmake-git-aac40044444ffdb194da3598a611260bb0e599f9.tar.gz
* src/shuffle.c: Minor coding changes.
Diffstat (limited to 'src/shuffle.c')
-rw-r--r--src/shuffle.c58
1 files changed, 25 insertions, 33 deletions
diff --git a/src/shuffle.c b/src/shuffle.c
index ea6e836d..d78bfd8f 100644
--- a/src/shuffle.c
+++ b/src/shuffle.c
@@ -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;
}
}