diff options
author | Nicholas Marriott <nicm@openbsd.org> | 2009-11-19 10:22:06 +0000 |
---|---|---|
committer | Nicholas Marriott <nicm@openbsd.org> | 2009-11-19 10:22:06 +0000 |
commit | ac5b7d518e78ed21ed8a9757f5ea3f49f407d232 (patch) | |
tree | ce714e131cfbef0f7445ac9b657c34de9323af2d /status.c | |
parent | 8d4eae56626a40b24ce3964e2e2560b23082bde4 (diff) | |
download | rtmux-ac5b7d518e78ed21ed8a9757f5ea3f49f407d232.tar.gz rtmux-ac5b7d518e78ed21ed8a9757f5ea3f49f407d232.tar.bz2 rtmux-ac5b7d518e78ed21ed8a9757f5ea3f49f407d232.zip |
Don't interpret #() for display-message, it usually doesn't make sense and may
leak commands.
Diffstat (limited to 'status.c')
-rw-r--r-- | status.c | 30 |
1 files changed, 22 insertions, 8 deletions
@@ -107,14 +107,14 @@ status_redraw(struct client *c) /* Work out the left and right strings. */ left = status_replace(c, options_get_string( - &s->options, "status-left"), c->status_timer.tv_sec); + &s->options, "status-left"), c->status_timer.tv_sec, 1); llen = options_get_number(&s->options, "status-left-length"); llen2 = screen_write_cstrlen(utf8flag, "%s", left); if (llen2 < llen) llen = llen2; right = status_replace(c, options_get_string( - &s->options, "status-right"), c->status_timer.tv_sec); + &s->options, "status-right"), c->status_timer.tv_sec, 1); rlen = options_get_number(&s->options, "status-right-length"); rlen2 = screen_write_cstrlen(utf8flag, "%s", right); if (rlen2 < rlen) @@ -319,7 +319,7 @@ out: } char * -status_replace(struct client *c, const char *fmt, time_t t) +status_replace(struct client *c, const char *fmt, time_t t, int run_jobs) { struct session *s = c->session; struct winlink *wl = s->curw; @@ -355,11 +355,25 @@ status_replace(struct client *c, const char *fmt, time_t t) ptr = NULL; switch (*iptr++) { case '(': - if (ptr == NULL) { - ptr = status_job(c, &iptr); - if (ptr == NULL) - break; - savedptr = ptr; + if (run_jobs) { + if (ptr == NULL) { + ptr = status_job(c, &iptr); + if (ptr == NULL) + break; + savedptr = ptr; + } + } else { + /* Don't run jobs. Copy to ). */ + *optr++ = '#'; + + iptr--; /* include [ */ + while (*iptr != ')' && *iptr != '\0') { + if (optr >= + out + (sizeof out) - 1) + break; + *optr++ = *iptr++; + } + break; } /* FALLTHROUGH */ case 'H': |