From afc343d528e9adeaa1c4c1c403abf00e260aee79 Mon Sep 17 00:00:00 2001 From: Peter Colberg Date: Sun, 3 Jan 2021 14:08:25 -0500 Subject: [PATCH] Require trailing comment to be preceded by a space or tab Fixes `word-delimiters` option to not ignore `#` and subsequent characters. Closes #270 --- CHANGELOG.md | 4 ++++ config.c | 15 ++++++++++++--- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6623242f..7324547a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -30,6 +30,8 @@ instead of needing to be manually cloned. * Box drawing characters are now rendered by foot, instead of using font glyphs (https://codeberg.org/dnkl/foot/issues/198) +* Trailing comments in `foot.ini` must now be preceded by a space or tab + (https://codeberg.org/dnkl/foot/issues/270) ### Deprecated @@ -43,6 +45,8 @@ * Erased, overflowing glyphs (when `tweak.allow-overflowing-double-width-glyphs=yes` - the default) not properly erasing the cell overflowed **into**. +* `word-delimiters` option ignores `#` and subsequent characters + (https://codeberg.org/dnkl/foot/issues/270) ### Security diff --git a/config.c b/config.c index bf184a16..883cf27c 100644 --- a/config.c +++ b/config.c @@ -1731,9 +1731,18 @@ parse_config_file(FILE *f, struct config *conf, const char *path, bool errors_ar if (line[0] == '\0' || line[0] == '#') continue; - /* Split up into key/value pair + trailing comment */ - char *key_value = strtok(line, "#"); - char UNUSED *comment = strtok(NULL, "\n"); + /* Split up into key/value pair + trailing comment separated by blank */ + char *key_value = line; + char *comment = line; + while (comment[0] != '\0') { + const char c = comment[0]; + comment++; + if (isblank(c) && comment[0] == '#') { + comment[0] = '\0'; /* Terminate key/value pair */ + comment++; + break; + } + } /* Check for new section */ if (key_value[0] == '[') {