aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sway/config.c1
-rw-r--r--sway/stringop.c23
2 files changed, 15 insertions, 9 deletions
diff --git a/sway/config.c b/sway/config.c
index 119730ca..95cd8b0d 100644
--- a/sway/config.c
+++ b/sway/config.c
@@ -230,6 +230,7 @@ bool read_config(FILE *file, bool is_active) {
char *line;
while (!feof(file)) {
line = read_line(file);
+ line = strip_whitespace(line);
line = strip_comments(line);
if (line[0] == '\0') {
goto _continue;
diff --git a/sway/stringop.c b/sway/stringop.c
index d2b74655..77faf3f1 100644
--- a/sway/stringop.c
+++ b/sway/stringop.c
@@ -11,16 +11,21 @@ const char *whitespace = " \f\n\r\t\v";
/* Note: This returns 8 characters for trimmed_start per tab character. */
char *strip_whitespace(char *_str) {
- int ws = strspn(_str, whitespace);
- int len = strlen(_str) - ws + 1;
- sway_log(L_DEBUG,"%d, %d..",ws,len);
- char *str = malloc(len);
- strcpy(str, _str+ws);
- free(_str);
+ if (*_str == '\0')
+ return _str;
+ char *strold = _str;
+ while (*_str == ' ' || *_str == '\t') {
+ _str++;
+ }
+ char *str = malloc(strlen(_str) + 1);
+ strcpy(str, _str);
+ free(strold);
+ int i;
+ for (i = 0; str[i] != '\0'; ++i);
do {
- len--;
- } while (len >= 0 && (str[len] == ' ' || str[len] == '\t'));
- str[len + 1] = '\0';
+ i--;
+ } while (i >= 0 && (str[i] == ' ' || str[i] == '\t'));
+ str[i + 1] = '\0';
return str;
}