diff options
author | Roosembert Palacios <roosembert.palacios@epfl.ch> | 2016-06-06 00:17:27 +0200 |
---|---|---|
committer | Roosembert Palacios <roosembert.palacios@epfl.ch> | 2016-06-06 00:17:27 +0200 |
commit | 230591fa4e4911ffbb38da2ee79650e62d98415f (patch) | |
tree | c77118e96612dad70c00d4c0528b4f3815105b04 /sway | |
parent | e8c0ef98b1c1068783350c76b44c4e40b7534137 (diff) |
Common: Readline: Ignore newline on '\' escaped line ends.
Escape line return when reading from a file with the '\' character.
Similar to shell scripts.
Signed-off-by: Roosembert Palacios <roosembert.palacios@epfl.ch>
Diffstat (limited to 'sway')
-rw-r--r-- | sway/config.c | 42 |
1 files changed, 1 insertions, 41 deletions
diff --git a/sway/config.c b/sway/config.c index c1eec22f..15108123 100644 --- a/sway/config.c +++ b/sway/config.c @@ -455,11 +455,10 @@ bool load_include_configs(const char *path, struct sway_config *config) { bool read_config(FILE *file, struct sway_config *config) { bool success = true; - bool multiline = false; enum cmd_status block = CMD_BLOCK_END; int line_number = 0; - char *line, *mlinebuf = NULL; + char *line; while (!feof(file)) { line = read_line(file); line_number++; @@ -468,45 +467,6 @@ bool read_config(FILE *file, struct sway_config *config) { free(line); continue; } - size_t length = strlen(line); - if (line[length-1] == '\\') { - // Start of multiline - if (feof(file)){ - sway_log(L_ERROR, "Error on line %i '%s': Unexpected EOF on "\ - "multiline command", line_number, line); - free(line); - continue; - } - line[length-1] = '\0'; - multiline = true; - } else - multiline = false; - - if (multiline || mlinebuf){ - size_t mlinebuf_length; - if (mlinebuf) - mlinebuf_length = strlen(mlinebuf); - else - mlinebuf_length = 0; - - char *tmp = malloc(mlinebuf_length+length+1); // + '\0' - tmp[0]='\0'; // if mlinebuf_length==0 strncpy won't do anything. Make a null string. - strncpy(tmp, mlinebuf, mlinebuf_length); - tmp[mlinebuf_length]='\0'; // strncpy won't add '\0' at the end... - strcat(tmp, line); - if (mlinebuf) - free(mlinebuf); - free(line); - mlinebuf = tmp; - if (multiline) // The following line is part of a multi line config. - continue; - else { // This is the last line of a multi line config. - line = mlinebuf; - sway_log(L_INFO, "Processing parsed multiline command '%s'", line); - mlinebuf = NULL; - } - } - struct cmd_results *res = config_command(line, block); switch(res->status) { case CMD_FAILURE: |