From f006116bac736b1b4500b05584056d572922155d Mon Sep 17 00:00:00 2001 From: nicm Date: Thu, 23 May 2019 18:22:13 +0000 Subject: Environment variables can start with { also. --- utf8.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/utf8.c b/utf8.c index 29bbfa9e..fc01cddb 100644 --- a/utf8.c +++ b/utf8.c @@ -184,7 +184,9 @@ utf8_strvis(char *dst, const char *src, size_t len, int flag) src -= ud.have; } if (src[0] == '$' && src < end - 1) { - if (isalpha((u_char)src[1]) || src[1] == '_') + if (isalpha((u_char)src[1]) || + src[1] == '_' || + src[1] == '{') *dst++ = '\\'; *dst++ = '$'; } else if (src < end - 1) -- cgit From 6c260af56db8a71747c1dc51fe6bba2f51c47f4d Mon Sep 17 00:00:00 2001 From: nicm Date: Thu, 23 May 2019 18:33:53 +0000 Subject: Use the same argument escaping code for options as well. --- cmd-show-options.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cmd-show-options.c b/cmd-show-options.c index 2b4651b9..6e3eca0d 100644 --- a/cmd-show-options.c +++ b/cmd-show-options.c @@ -209,8 +209,8 @@ cmd_show_options_print(struct cmd *self, struct cmdq_item *item, if (args_has(self->args, 'v')) cmdq_print(item, "%s", value); else if (options_isstring(o)) { - utf8_stravis(&escaped, value, VIS_OCTAL|VIS_TAB|VIS_NL|VIS_DQ); - cmdq_print(item, "%s \"%s\"", name, escaped); + escaped = args_escape(value); + cmdq_print(item, "%s %s", name, escaped); free(escaped); } else cmdq_print(item, "%s %s", name, value); -- cgit From f3e01ecc42e34a914ee390658625e920d321734a Mon Sep 17 00:00:00 2001 From: nicm Date: Thu, 23 May 2019 18:39:00 +0000 Subject: Fix line numbers - commands are added after the line ends so they need to get line - 1. --- cfg.c | 1 + cmd-parse.y | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/cfg.c b/cfg.c index aa5c13b7..d6435980 100644 --- a/cfg.c +++ b/cfg.c @@ -126,6 +126,7 @@ load_cfg(const char *path, struct client *c, struct cmdq_item *item, int flags, memset(&pi, 0, sizeof pi); pi.flags = flags; pi.file = path; + pi.line = 1; pr = cmd_parse_from_file(f, &pi); fclose(f); diff --git a/cmd-parse.y b/cmd-parse.y index e576d776..e9ca376c 100644 --- a/cmd-parse.y +++ b/cmd-parse.y @@ -356,7 +356,7 @@ command : assignment TOKEN $$ = xcalloc(1, sizeof *$$); $$->name = $2; - $$->line = ps->input->line; + $$->line = ps->input->line - 1; } | assignment TOKEN arguments @@ -365,7 +365,7 @@ command : assignment TOKEN $$ = xcalloc(1, sizeof *$$); $$->name = $2; - $$->line = ps->input->line; + $$->line = ps->input->line - 1; $$->argc = $3.argc; $$->argv = $3.argv; -- cgit