mirror of
https://github.com/tmux/tmux.git
synced 2024-12-24 18:21:33 +00:00
Merge branch 'obsd-master'
This commit is contained in:
commit
50f4e0fac9
30
format.c
30
format.c
@ -3575,7 +3575,32 @@ found:
|
|||||||
return (found);
|
return (found);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Remove escaped characters from string. */
|
/* Unescape escaped characters. */
|
||||||
|
static char *
|
||||||
|
format_unescape(const char *s)
|
||||||
|
{
|
||||||
|
char *out, *cp;
|
||||||
|
int brackets = 0;
|
||||||
|
|
||||||
|
cp = out = xmalloc(strlen(s) + 1);
|
||||||
|
for (; *s != '\0'; s++) {
|
||||||
|
if (*s == '#' && s[1] == '{')
|
||||||
|
brackets++;
|
||||||
|
if (brackets == 0 &&
|
||||||
|
*s == '#' &&
|
||||||
|
strchr(",#{}:", s[1]) != NULL) {
|
||||||
|
*cp++ = *++s;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if (*s == '}')
|
||||||
|
brackets--;
|
||||||
|
*cp++ = *s;
|
||||||
|
}
|
||||||
|
*cp = '\0';
|
||||||
|
return (out);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Remove escaped characters. */
|
||||||
static char *
|
static char *
|
||||||
format_strip(const char *s)
|
format_strip(const char *s)
|
||||||
{
|
{
|
||||||
@ -4338,7 +4363,8 @@ format_replace(struct format_expand_state *es, const char *key, size_t keylen,
|
|||||||
|
|
||||||
/* Is this a literal string? */
|
/* Is this a literal string? */
|
||||||
if (modifiers & FORMAT_LITERAL) {
|
if (modifiers & FORMAT_LITERAL) {
|
||||||
value = xstrdup(copy);
|
format_log(es, "literal string is '%s'", copy);
|
||||||
|
value = format_unescape(copy);
|
||||||
goto done;
|
goto done;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user