summaryrefslogtreecommitdiffstats
path: root/format.c
diff options
context:
space:
mode:
authorThomas Adam <thomas@xteddy.org>2021-01-20 08:01:22 +0000
committerThomas Adam <thomas@xteddy.org>2021-01-20 08:01:22 +0000
commit9ff017e908243f3e24e0e26769c8e5aadfa3cb57 (patch)
tree19606afd862a056fa0ecc3babf978877d6da0703 /format.c
parent82423975df8b8de859c58e84a4248f4749cb8b16 (diff)
parentfb774b77d0f5ccb988b508b8a794633d4c9a5962 (diff)
Merge branch 'obsd-master' into master
Diffstat (limited to 'format.c')
-rw-r--r--format.c30
1 files changed, 16 insertions, 14 deletions
diff --git a/format.c b/format.c
index a1716f13..cc4d2dfe 100644
--- a/format.c
+++ b/format.c
@@ -89,7 +89,7 @@ format_job_cmp(struct format_job *fj1, struct format_job *fj2)
#define FORMAT_TIMESTRING 0x1
#define FORMAT_BASENAME 0x2
#define FORMAT_DIRNAME 0x4
-#define FORMAT_QUOTE 0x8
+#define FORMAT_QUOTE_SHELL 0x8
#define FORMAT_LITERAL 0x10
#define FORMAT_EXPAND 0x20
#define FORMAT_EXPANDTIME 0x40
@@ -99,7 +99,7 @@ format_job_cmp(struct format_job *fj1, struct format_job *fj2)
#define FORMAT_PRETTY 0x400
#define FORMAT_LENGTH 0x800
#define FORMAT_WIDTH 0x1000
-#define FORMAT_ESCAPE 0x2000
+#define FORMAT_QUOTE_STYLE 0x2000
/* Limit on recursion. */
#define FORMAT_LOOP_LIMIT 10
@@ -1378,9 +1378,9 @@ format_add_cb(struct format_tree *ft, const char *key, format_cb cb)
fe->value = NULL;
}
-/* Quote special characters in string. */
+/* Quote shell special characters in string. */
static char *
-format_quote(const char *s)
+format_quote_shell(const char *s)
{
const char *cp;
char *out, *at;
@@ -1395,9 +1395,9 @@ format_quote(const char *s)
return (out);
}
-/* Escape #s in string. */
+/* Quote #s in string. */
static char *
-format_escape(const char *s)
+format_quote_style(const char *s)
{
const char *cp;
char *out, *at;
@@ -1552,14 +1552,14 @@ found:
found = xstrdup(dirname(saved));
free(saved);
}
- if (modifiers & FORMAT_QUOTE) {
+ if (modifiers & FORMAT_QUOTE_SHELL) {
saved = found;
- found = xstrdup(format_quote(saved));
+ found = xstrdup(format_quote_shell(saved));
free(saved);
}
- if (modifiers & FORMAT_ESCAPE) {
+ if (modifiers & FORMAT_QUOTE_STYLE) {
saved = found;
- found = xstrdup(format_escape(saved));
+ found = xstrdup(format_quote_style(saved));
free(saved);
}
return (found);
@@ -2240,9 +2240,10 @@ format_replace(struct format_expand_state *es, const char *key, size_t keylen,
break;
case 'q':
if (fm->argc < 1)
- modifiers |= FORMAT_QUOTE;
- else if (strchr(fm->argv[0], 'e') != NULL)
- modifiers |= FORMAT_ESCAPE;
+ modifiers |= FORMAT_QUOTE_SHELL;
+ else if (strchr(fm->argv[0], 'e') != NULL ||
+ strchr(fm->argv[0], 'h') != NULL)
+ modifiers |= FORMAT_QUOTE_STYLE;
break;
case 'E':
modifiers |= FORMAT_EXPAND;
@@ -2980,7 +2981,8 @@ format_defaults_winlink(struct format_tree *ft, struct winlink *wl)
format_add(ft, "window_index", "%d", wl->idx);
format_add_cb(ft, "window_stack_index", format_cb_window_stack_index);
- format_add(ft, "window_flags", "%s", window_printable_flags(wl));
+ format_add(ft, "window_flags", "%s", window_printable_flags(wl, 1));
+ format_add(ft, "window_raw_flags", "%s", window_printable_flags(wl, 0));
format_add(ft, "window_active", "%d", wl == s->curw);
format_add_cb(ft, "window_active_sessions",
format_cb_window_active_sessions);