summaryrefslogtreecommitdiffstats
path: root/parse.c
diff options
context:
space:
mode:
authorTavian Barnes <tavianator@tavianator.com>2020-10-04 13:22:23 -0400
committerTavian Barnes <tavianator@tavianator.com>2020-10-04 13:22:23 -0400
commitb3312002a5d96cd486156a711d3c1861c150b7c6 (patch)
treeadf8ce0d8d3984bb54c7b82af89f9aa3d90d294a /parse.c
parentb0282202ce8b361110ef32b18e7159edc604929d (diff)
downloadbfs-b3312002a5d96cd486156a711d3c1861c150b7c6.tar.xz
parse: Fail if -color is passed and the colors couldn't be parsed
Diffstat (limited to 'parse.c')
-rw-r--r--parse.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/parse.c b/parse.c
index fadf0c5..c0c345c 100644
--- a/parse.c
+++ b/parse.c
@@ -962,7 +962,13 @@ static struct expr *parse_capable(struct parser_state *state, int flag, int arg2
static struct expr *parse_color(struct parser_state *state, int color, int arg2) {
struct bfs_ctx *ctx = state->ctx;
struct colors *colors = ctx->colors;
+
if (color) {
+ if (!colors) {
+ parse_error(state, "${blu}%s${rs}: %s.\n", state->argv[0], strerror(ctx->colors_error));
+ return NULL;
+ }
+
state->use_color = COLOR_ALWAYS;
ctx->cout->colors = colors;
ctx->cerr->colors = colors;
@@ -971,6 +977,7 @@ static struct expr *parse_color(struct parser_state *state, int color, int arg2)
ctx->cout->colors = NULL;
ctx->cerr->colors = NULL;
}
+
return parse_nullary_option(state);
}
@@ -3479,6 +3486,9 @@ struct bfs_ctx *bfs_parse_cmdline(int argc, char *argv[]) {
}
ctx->colors = parse_colors(getenv("LS_COLORS"));
+ if (!ctx->colors) {
+ ctx->colors_error = errno;
+ }
ctx->cout = cfdup(stdout, use_color ? ctx->colors : NULL);
if (!ctx->cout) {