diff options
Diffstat (limited to 'sway/config.c')
-rw-r--r-- | sway/config.c | 19 |
1 files changed, 7 insertions, 12 deletions
diff --git a/sway/config.c b/sway/config.c index edb10bd7..88cc6843 100644 --- a/sway/config.c +++ b/sway/config.c @@ -518,21 +518,20 @@ static int detect_brace_on_following_line(FILE *file, char *line, int lines = 0; if (line[strlen(line) - 1] != '{' && line[strlen(line) - 1] != '}') { char *peeked = NULL; + long position = 0; do { wlr_log(L_DEBUG, "Peeking line %d", line_number + lines + 1); free(peeked); - peeked = peek_line(file, lines); + peeked = peek_line(file, lines, &position); if (peeked) { peeked = strip_whitespace(peeked); } + wlr_log(L_DEBUG, "Peeked line: `%s`", peeked); lines++; } while (peeked && strlen(peeked) == 0); if (peeked && strlen(peeked) == 1 && peeked[0] == '{') { - for (int i = 0; i < lines; i++) { - free(peeked); - peeked = read_line(file); - } + fseek(file, position, SEEK_SET); } else { lines = 0; } @@ -541,7 +540,7 @@ static int detect_brace_on_following_line(FILE *file, char *line, return lines; } -static char *expand_line(char *block, char *line, bool add_brace) { +static char *expand_line(const char *block, const char *line, bool add_brace) { int size = (block ? strlen(block) + 1 : 0) + strlen(line) + (add_brace ? 2 : 0) + 1; char *expanded = calloc(1, size); @@ -549,10 +548,8 @@ static char *expand_line(char *block, char *line, bool add_brace) { wlr_log(L_ERROR, "Cannot allocate expanded line buffer"); return NULL; } - strcat(expanded, block ? block : ""); - strcat(expanded, block ? " " : ""); - strcat(expanded, line); - strcat(expanded, add_brace ? " {" : ""); + snprintf(expanded, size, "%s%s%s%s", block ? block : "", + block ? " " : "", line, add_brace ? " {" : ""); return expanded; } @@ -594,9 +591,7 @@ bool read_config(FILE *file, struct sway_config *config) { // Special case res = config_commands_command(expanded); } else { - wlr_log(L_DEBUG, "Entering c_c"); res = config_command(expanded); - wlr_log(L_DEBUG, "Exiting c_c"); } free(expanded); switch(res->status) { |