summaryrefslogtreecommitdiff
path: root/sway/config.c
diff options
context:
space:
mode:
Diffstat (limited to 'sway/config.c')
-rw-r--r--sway/config.c19
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) {