Sync OpenBSD patchset 951:

Support \ for line continuation in the configuration file, from Julius
Plenz.
This commit is contained in:
Tiago Cunha 2011-08-25 21:14:23 +00:00
parent d390a90bf0
commit 4a01da19df
2 changed files with 32 additions and 9 deletions

35
cfg.c
View File

@ -92,22 +92,37 @@ load_cfg(const char *path, struct cmd_ctx *ctxin, struct causelist *causes)
retval = 0;
while ((buf = fgetln(f, &len))) {
if (buf[len - 1] == '\n')
buf[len - 1] = '\0';
len--;
if (line != NULL)
line = xrealloc(line, 1, strlen(line) + len + 1);
else {
line = xrealloc(line, 1, len + 1);
memcpy(line, buf, len);
line[len] = '\0';
buf = line;
line = xmalloc(len + 1);
*line = '\0';
}
/* Append buffer to line. strncat will terminate. */
strncat(line, buf, len);
n++;
/* Continuation: get next line? */
len = strlen(line);
if (len > 0 && line[len - 1] == '\\') {
line[len - 1] = '\0';
continue;
}
buf = line;
line = NULL;
if (cmd_string_parse(buf, &cmdlist, &cause) != 0) {
xfree(buf);
if (cause == NULL)
continue;
cfg_add_cause(causes, "%s: %u: %s", path, n, cause);
xfree(cause);
continue;
}
} else
xfree(buf);
if (cmdlist == NULL)
continue;
cfg_cause = NULL;
@ -131,12 +146,16 @@ load_cfg(const char *path, struct cmd_ctx *ctxin, struct causelist *causes)
retval = 1;
cmd_list_free(cmdlist);
if (cfg_cause != NULL) {
cfg_add_cause(causes, "%s: %d: %s", path, n, cfg_cause);
cfg_add_cause(
causes, "%s: %d: %s", path, n, cfg_cause);
xfree(cfg_cause);
}
}
if (line != NULL)
if (line != NULL) {
cfg_add_cause(causes,
"%s: %d: line continuation at end of file", path, n);
xfree(line);
}
fclose(f);
return (retval);

6
tmux.1
View File

@ -495,7 +495,8 @@ $ tmux bind-key F1 set-window-option force-width 81
Multiple commands may be specified together as part of a
.Em command sequence .
Each command should be separated by spaces and a semicolon;
commands are executed sequentially from left to right.
commands are executed sequentially from left to right and
lines ending with a backslash continue on to the next line.
A literal semicolon may be included by escaping it with a backslash (for
example, when specifying a command sequence to
.Ic bind-key ) .
@ -511,6 +512,9 @@ rename-session -tfirst newname
set-window-option -t:0 monitor-activity on
new-window ; split-window -d
bind-key R source-file ~/.tmux.conf \e; \e
display-message "source-file done"
.Ed
.Pp
Or from