version 1.282, 2021/03/11 07:08:18 |
version 1.283, 2021/04/12 06:50:25 |
|
|
#define FORMAT_QUOTE_STYLE 0x2000 |
#define FORMAT_QUOTE_STYLE 0x2000 |
#define FORMAT_WINDOW_NAME 0x4000 |
#define FORMAT_WINDOW_NAME 0x4000 |
#define FORMAT_SESSION_NAME 0x8000 |
#define FORMAT_SESSION_NAME 0x8000 |
|
#define FORMAT_CHARACTER 0x10000 |
|
|
/* Limit on recursion. */ |
/* Limit on recursion. */ |
#define FORMAT_LOOP_LIMIT 10 |
#define FORMAT_LOOP_LIMIT 10 |
|
|
|
|
/* |
/* |
* Modifiers are a ; separated list of the forms: |
* Modifiers are a ; separated list of the forms: |
* l,m,C,b,d,n,t,w,q,E,T,S,W,P,<,> |
* l,m,C,a,b,d,n,t,w,q,E,T,S,W,P,<,> |
* =a |
* =a |
* =/a |
* =/a |
* =/a/ |
* =/a/ |
|
|
cp++; |
cp++; |
|
|
/* Check single character modifiers with no arguments. */ |
/* Check single character modifiers with no arguments. */ |
if (strchr("lbdnwETSWP<>", cp[0]) != NULL && |
if (strchr("labdnwETSWP<>", cp[0]) != NULL && |
format_is_end(cp[1])) { |
format_is_end(cp[1])) { |
format_add_modifier(&list, count, cp, 1, NULL, 0); |
format_add_modifier(&list, count, cp, 1, NULL, 0); |
cp++; |
cp++; |
|
|
mright = (long long)mright; |
mright = (long long)mright; |
} |
} |
format_log(es, "expression left side is: %.*f", prec, mleft); |
format_log(es, "expression left side is: %.*f", prec, mleft); |
format_log(es, "expression right side is: %.*f", prec, mright); |
format_log(es, "expression right side is: %.*f", prec, mright); |
|
|
switch (operator) { |
switch (operator) { |
case ADD: |
case ADD: |
|
|
{ |
{ |
struct format_tree *ft = es->ft; |
struct format_tree *ft = es->ft; |
struct window_pane *wp = ft->wp; |
struct window_pane *wp = ft->wp; |
const char *errptr, *copy, *cp, *marker = NULL; |
const char *errstr, *copy, *cp, *marker = NULL; |
const char *time_format = NULL; |
const char *time_format = NULL; |
char *copy0, *condition, *found, *new; |
char *copy0, *condition, *found, *new; |
char *value, *left, *right; |
char *value, *left, *right, c; |
size_t valuelen; |
size_t valuelen; |
int modifiers = 0, limit = 0, width = 0; |
int modifiers = 0, limit = 0, width = 0; |
int j; |
int j; |
|
|
if (fm->argc < 1) |
if (fm->argc < 1) |
break; |
break; |
limit = strtonum(fm->argv[0], INT_MIN, INT_MAX, |
limit = strtonum(fm->argv[0], INT_MIN, INT_MAX, |
&errptr); |
&errstr); |
if (errptr != NULL) |
if (errstr != NULL) |
limit = 0; |
limit = 0; |
if (fm->argc >= 2 && fm->argv[1] != NULL) |
if (fm->argc >= 2 && fm->argv[1] != NULL) |
marker = fm->argv[1]; |
marker = fm->argv[1]; |
|
|
if (fm->argc < 1) |
if (fm->argc < 1) |
break; |
break; |
width = strtonum(fm->argv[0], INT_MIN, INT_MAX, |
width = strtonum(fm->argv[0], INT_MIN, INT_MAX, |
&errptr); |
&errstr); |
if (errptr != NULL) |
if (errstr != NULL) |
width = 0; |
width = 0; |
break; |
break; |
case 'w': |
case 'w': |
|
|
case 'l': |
case 'l': |
modifiers |= FORMAT_LITERAL; |
modifiers |= FORMAT_LITERAL; |
break; |
break; |
|
case 'a': |
|
modifiers |= FORMAT_CHARACTER; |
|
break; |
case 'b': |
case 'b': |
modifiers |= FORMAT_BASENAME; |
modifiers |= FORMAT_BASENAME; |
break; |
break; |
|
|
/* Is this a literal string? */ |
/* Is this a literal string? */ |
if (modifiers & FORMAT_LITERAL) { |
if (modifiers & FORMAT_LITERAL) { |
value = xstrdup(copy); |
value = xstrdup(copy); |
|
goto done; |
|
} |
|
|
|
/* Is this a character? */ |
|
if (modifiers & FORMAT_CHARACTER) { |
|
new = format_expand1(es, copy); |
|
c = strtonum(new, 32, 126, &errstr); |
|
if (errstr != NULL) |
|
value = xstrdup(""); |
|
else |
|
xasprintf(&value, "%c", c); |
|
free (new); |
goto done; |
goto done; |
} |
} |
|
|