diff options
author | Paul Smith <psmith@gnu.org> | 2022-09-11 14:04:58 -0400 |
---|---|---|
committer | Paul Smith <psmith@gnu.org> | 2022-09-11 14:04:58 -0400 |
commit | aac40044444ffdb194da3598a611260bb0e599f9 (patch) | |
tree | 28e6e5eb348ade760db831e68fc7948a60ff2c38 /src/shuffle.c | |
parent | 86fc644dcc99c1bbf4764d9b324b723f7ea5ce04 (diff) | |
download | make-git-aac40044444ffdb194da3598a611260bb0e599f9.tar.gz |
* src/shuffle.c: Minor coding changes.
Diffstat (limited to 'src/shuffle.c')
-rw-r--r-- | src/shuffle.c | 58 |
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; } } |