diff options
| -rw-r--r-- | colorize.c | 18 | ||||
| -rwxr-xr-x | test.pl | 2 | 
2 files changed, 14 insertions, 6 deletions
| @@ -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: @@ -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'); | 
