X-Git-Url: http://git.refcnt.org/?a=blobdiff_plain;f=colorize.c;h=189040b0dc74f7fae203430f6b7b511c3e2a123d;hb=dda0a5b10e4e29bc22672162f95cd053300c333f;hp=753f7490ca0712a0770c0251a6e7ee426184bb62;hpb=9082b6aa7b7bd32db92ed1bd8ebe31e836147704;p=colorize.git diff --git a/colorize.c b/colorize.c index 753f749..189040b 100644 --- a/colorize.c +++ b/colorize.c @@ -643,7 +643,7 @@ process_opt_exclude_random (const char *s, const bool is_opt) } if (!valid) vfprintf_fail ("%s must be provided a plain color", - is_opt ? "--exlude-random switch" : "exclude-random conf option"); + is_opt ? "--exclude-random switch" : "exclude-random conf option"); } static void @@ -956,7 +956,7 @@ free_conf (struct conf *config) static void process_args (unsigned int arg_cnt, char **arg_strings, char *attr, const struct color **colors, const char **file, FILE **stream, struct conf *config) { - bool use_conf_color; + bool has_hyphen, use_conf_color; int ret; char *p; struct stat sb; @@ -971,23 +971,27 @@ process_args (unsigned int arg_cnt, char **arg_strings, char *attr, const struct assert (color_string != NULL); - if (streq (color_string, "-")) + has_hyphen = streq (color_string, "-"); + + if (has_hyphen) { if (file_string) vfprintf_fail (formats[FMT_GENERIC], "hyphen cannot be used as color string"); - else + else if (!config->color) vfprintf_fail (formats[FMT_GENERIC], "hyphen must be preceded by color string"); } - if ((ret = lstat (color_string, &sb)) == 0) /* exists */ + if (!has_hyphen && (ret = lstat (color_string, &sb)) == 0) /* exists */ /* Ensure that we don't fail if there's a file with one or more color names in its path. */ use_conf_color = skip_path_colors (color_string, file_string, &sb, !!config->color); + else if (has_hyphen) + use_conf_color = true; + else + use_conf_color = false; /* Use color from config file. */ - if (arg_cnt == 1 - && (access (color_string, F_OK) != -1) - && use_conf_color) + if (arg_cnt == 1 && use_conf_color) { file_string = color_string; color_string = config->color; @@ -1170,6 +1174,7 @@ gather_color_names (const char *color_string, char *attr, struct color_name **co break; case BACKGROUND: vfprintf_fail (formats[FMT_COLOR], tables[BACKGROUND].desc, color, "cannot be bold"); + break; default: /* never reached */ ABORT_TRACE (); }