From 8660ae4e1244cd4411bcf47391f675315da91449 Mon Sep 17 00:00:00 2001 From: Michael Stapelberg Date: Tue, 25 Oct 2011 20:50:57 +0100 Subject: [PATCH] bar config: fall back to the i3 font (Thanks pl) --- src/cfgparse.y | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/cfgparse.y b/src/cfgparse.y index 2d8bdba3..7cd0ce9b 100644 --- a/src/cfgparse.y +++ b/src/cfgparse.y @@ -15,6 +15,10 @@ static pid_t configerror_pid = -1; static Match current_match; static Barconfig current_bar; +/* The pattern which was specified by the user, for example -misc-fixed-*. We + * store this in a separate variable because in the i3 config struct we just + * store the i3Font. */ +static char *font_pattern; typedef struct yy_buffer_state *YY_BUFFER_STATE; extern int yylex(struct context *context); @@ -611,6 +615,7 @@ void parse_file(const char *f) { yylex_destroy(); FREE(context->line_copy); free(context); + FREE(font_pattern); free(new); free(buf); @@ -996,6 +1001,10 @@ bar: *(x++) = (rand() % 26) + 'a'; } + /* If no font was explicitly set, we use the i3 font as default */ + if (!current_bar.font) + current_bar.font = sstrdup(font_pattern); + /* Copy the current (static) structure into a dynamically allocated * one, then cleanup our static one. */ Barconfig *bar_config = scalloc(sizeof(Barconfig)); @@ -1526,7 +1535,8 @@ font: { config.font = load_font($2, true); printf("font %s\n", $2); - free($2); + FREE(font_pattern); + font_pattern = $2; } ;