aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--colorize.c18
-rwxr-xr-xtest.pl2
2 files changed, 14 insertions, 6 deletions
diff --git a/colorize.c b/colorize.c
index 319c799..4303eb7 100644
--- a/colorize.c
+++ b/colorize.c
@@ -262,13 +262,21 @@ main (int argc, char **argv)
clean_all = true;
break;
case OPT_EXCLUDE_RANDOM: {
- char *p;
+ bool valid = false;
+ unsigned int i;
exclude = xstrdup (optarg);
STACK_VAR (exclude);
- for (p = exclude; *p; p++)
- *p = tolower (*p);
- if (streq (exclude, "random"))
- vfprintf_fail (formats[FMT_GENERIC], "--exclude-random switch must be provided a color");
+ for (i = 1; i < tables[FOREGROUND].count - 1; i++) /* skip color none and default */
+ {
+ const struct color *entry = &tables[FOREGROUND].entries[i];
+ if (streq (exclude, entry->name))
+ {
+ valid = true;
+ break;
+ }
+ }
+ if (!valid)
+ vfprintf_fail (formats[FMT_GENERIC], "--exclude-random switch must be provided a plain color");
break;
}
case OPT_HELP:
diff --git a/test.pl b/test.pl
index 7968097..49a0cf3 100755
--- a/test.pl
+++ b/test.pl
@@ -61,7 +61,7 @@ SKIP: {
my $file = $write_to_tmpfile->('abc');
- $ok &= $run_program_fail->($program, '--exclude-random=random', 'must be provided a color');
+ $ok &= $run_program_fail->($program, '--exclude-random=random', 'must be provided a plain color');
$ok &= $run_program_fail->($program, '--clean --clean-all', 'mutually exclusive');
$ok &= $run_program_fail->($program, '--clean file1 file2', 'more than one file');
$ok &= $run_program_fail->($program, '--clean-all file1 file2', 'more than one file');