}
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
char *p;
cnt++;
+ if ((p = strchr (line, '\r')) && *(p + 1) != '\n')
+ vfprintf_fail ("%s: CR ending of line %u is not supported, switch to CRLF/LF instead", conf_file, cnt);
if (strlen (line) > (sizeof (line) - 2))
vfprintf_fail ("%s: line %u exceeds maximum of %u characters", conf_file, cnt, (unsigned int)(sizeof (line) - 2));
- if ((p = strrchr (line, '\n')))
+ if ((p = strpbrk (line, "\n\r")))
*p = '\0';
/* NAME PARSING (start) */
p = line;
opt = p;
if (!(assign = strchr (opt, '='))) /* check for = */
{
- char *space;
- if ((space = strchr (opt, ' ')))
- *space = '\0';
+ char *s;
+ if ((s = strpbrk (opt, "# ")))
+ *s = '\0';
vfprintf_fail (formats[FMT_CONF], conf_file, opt, "not followed by =");
}
p = assign;
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;
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;
break;
case BACKGROUND:
vfprintf_fail (formats[FMT_COLOR], tables[BACKGROUND].desc, color, "cannot be bold");
+ break;
default: /* never reached */
ABORT_TRACE ();
}