From 5a369b3132a5f79afb4d65ec87562b473b4b29dd Mon Sep 17 00:00:00 2001 From: Drew DeVault Date: Sun, 29 Nov 2015 14:02:58 -0500 Subject: [PATCH] Only strip comments at the start of a line This is necessary because i3 config files use CSS notation for colors (i.e. #rrggbb). --- common/stringop.c | 20 -------------------- sway/config.c | 8 +++++--- 2 files changed, 5 insertions(+), 23 deletions(-) diff --git a/common/stringop.c b/common/stringop.c index efa3a207..81d9b963 100644 --- a/common/stringop.c +++ b/common/stringop.c @@ -10,7 +10,6 @@ const char whitespace[] = " \f\n\r\t\v"; -/* Note: This returns 8 characters for trimmed_start per tab character. */ char *strip_whitespace(char *_str) { if (*_str == '\0') return _str; @@ -29,25 +28,6 @@ char *strip_whitespace(char *_str) { return str; } -char *strip_comments(char *str) { - int in_string = 0, in_character = 0; - int i = 0; - while (str[i] != '\0') { - if (str[i] == '"' && !in_character) { - in_string = !in_string; - } else if (str[i] == '\'' && !in_string) { - in_character = !in_character; - } else if (!in_character && !in_string) { - if (str[i] == '#') { - str[i] = '\0'; - break; - } - } - ++i; - } - return str; -} - void strip_quotes(char *str) { bool in_str = false; bool in_chr = false; diff --git a/sway/config.c b/sway/config.c index dd466e5b..67b442ad 100644 --- a/sway/config.c +++ b/sway/config.c @@ -207,7 +207,10 @@ bool read_config(FILE *file, bool is_active) { while (!feof(file)) { line = read_line(file); line_number++; - line = strip_comments(line); + line = strip_whitespace(line); + if (line[0] == '#') { + continue; + } struct cmd_results *res = config_command(line); switch(res->status) { case CMD_FAILURE: @@ -261,8 +264,7 @@ bool read_config(FILE *file, bool is_active) { return success; } -int output_name_cmp(const void *item, const void *data) -{ +int output_name_cmp(const void *item, const void *data) { const struct output_config *output = item; const char *name = data;