diff options
-rw-r--r-- | sway/config.c | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/sway/config.c b/sway/config.c index 26d22842..b14ebba7 100644 --- a/sway/config.c +++ b/sway/config.c | |||
@@ -571,15 +571,18 @@ bool load_include_configs(const char *path, struct sway_config *config, | |||
571 | } | 571 | } |
572 | 572 | ||
573 | // get line, with backslash continuation | 573 | // get line, with backslash continuation |
574 | static ssize_t getline_with_cont(char **lineptr, size_t *line_size, FILE *file) { | 574 | static ssize_t getline_with_cont(char **lineptr, size_t *line_size, FILE *file, |
575 | int *nlines) { | ||
575 | char *next_line = NULL; | 576 | char *next_line = NULL; |
576 | size_t next_line_size = 0; | 577 | size_t next_line_size = 0; |
577 | ssize_t nread = getline(lineptr, line_size, file); | 578 | ssize_t nread = getline(lineptr, line_size, file); |
579 | *nlines = nread == -1 ? 0 : 1; | ||
578 | while (nread >= 2 && strcmp(&(*lineptr)[nread - 2], "\\\n") == 0) { | 580 | while (nread >= 2 && strcmp(&(*lineptr)[nread - 2], "\\\n") == 0) { |
579 | ssize_t next_nread = getline(&next_line, &next_line_size, file); | 581 | ssize_t next_nread = getline(&next_line, &next_line_size, file); |
580 | if (next_nread == -1) { | 582 | if (next_nread == -1) { |
581 | break; | 583 | break; |
582 | } | 584 | } |
585 | (*nlines)++; | ||
583 | 586 | ||
584 | nread += next_nread - 2; | 587 | nread += next_nread - 2; |
585 | if ((ssize_t) *line_size < nread + 1) { | 588 | if ((ssize_t) *line_size < nread + 1) { |
@@ -663,7 +666,8 @@ bool read_config(FILE *file, struct sway_config *config, | |||
663 | ssize_t nread; | 666 | ssize_t nread; |
664 | list_t *stack = create_list(); | 667 | list_t *stack = create_list(); |
665 | size_t read = 0; | 668 | size_t read = 0; |
666 | while ((nread = getline_with_cont(&line, &line_size, file)) != -1) { | 669 | int nlines = 0; |
670 | while ((nread = getline_with_cont(&line, &line_size, file, &nlines)) != -1) { | ||
667 | if (reading_main_config) { | 671 | if (reading_main_config) { |
668 | if (read + nread > config_size) { | 672 | if (read + nread > config_size) { |
669 | wlr_log(WLR_ERROR, "Config file changed during reading"); | 673 | wlr_log(WLR_ERROR, "Config file changed during reading"); |
@@ -679,7 +683,7 @@ bool read_config(FILE *file, struct sway_config *config, | |||
679 | line[nread - 1] = '\0'; | 683 | line[nread - 1] = '\0'; |
680 | } | 684 | } |
681 | 685 | ||
682 | line_number++; | 686 | line_number += nlines; |
683 | wlr_log(WLR_DEBUG, "Read line %d: %s", line_number, line); | 687 | wlr_log(WLR_DEBUG, "Read line %d: %s", line_number, line); |
684 | 688 | ||
685 | strip_whitespace(line); | 689 | strip_whitespace(line); |