=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/tmux/format.c,v retrieving revision 1.83 retrieving revision 1.84 diff -c -r1.83 -r1.84 *** src/usr.bin/tmux/format.c 2015/09/10 08:58:14 1.83 --- src/usr.bin/tmux/format.c 2015/09/14 10:25:52 1.84 *************** *** 1,4 **** ! /* $OpenBSD: format.c,v 1.83 2015/09/10 08:58:14 nicm Exp $ */ /* * Copyright (c) 2011 Nicholas Marriott --- 1,4 ---- ! /* $OpenBSD: format.c,v 1.84 2015/09/14 10:25:52 nicm Exp $ */ /* * Copyright (c) 2011 Nicholas Marriott *************** *** 104,110 **** struct session *s; struct window_pane *wp; ! int status; RB_HEAD(format_entry_tree, format_entry) tree; }; --- 104,110 ---- struct session *s; struct window_pane *wp; ! int flags; RB_HEAD(format_entry_tree, format_entry) tree; }; *************** *** 216,243 **** format_job_get(struct format_tree *ft, const char *cmd) { struct format_job fj0, *fj; fj0.cmd = cmd; if ((fj = RB_FIND(format_job_tree, &format_jobs, &fj0)) == NULL) { fj = xcalloc(1, sizeof *fj); fj->cmd = xstrdup(cmd); - fj->status = ft->status; xasprintf(&fj->out, "<'%s' not ready>", fj->cmd); RB_INSERT(format_job_tree, &format_jobs, fj); } ! if (fj->job == NULL && fj->last != time(NULL)) { fj->job = job_run(fj->cmd, NULL, -1, format_job_callback, NULL, fj); if (fj->job == NULL) { free(fj->out); xasprintf(&fj->out, "<'%s' didn't start>", fj->cmd); } } - fj->last = time(NULL); return (fj->out); } --- 216,247 ---- format_job_get(struct format_tree *ft, const char *cmd) { struct format_job fj0, *fj; + time_t t; fj0.cmd = cmd; if ((fj = RB_FIND(format_job_tree, &format_jobs, &fj0)) == NULL) { fj = xcalloc(1, sizeof *fj); fj->cmd = xstrdup(cmd); xasprintf(&fj->out, "<'%s' not ready>", fj->cmd); RB_INSERT(format_job_tree, &format_jobs, fj); } ! t = time(NULL); ! if (fj->job == NULL && ((ft->flags & FORMAT_FORCE) || fj->last != t)) { fj->job = job_run(fj->cmd, NULL, -1, format_job_callback, NULL, fj); if (fj->job == NULL) { free(fj->out); xasprintf(&fj->out, "<'%s' didn't start>", fj->cmd); } + fj->last = t; } + if (ft->flags & FORMAT_STATUS) + fj->status = 1; + return (fj->out); } *************** *** 438,449 **** struct format_tree * format_create(void) { ! return (format_create_status(0)); } /* Create a new tree for the status line. */ struct format_tree * ! format_create_status(int status) { struct format_tree *ft; --- 442,453 ---- struct format_tree * format_create(void) { ! return (format_create_flags(0)); } /* Create a new tree for the status line. */ struct format_tree * ! format_create_flags(int flags) { struct format_tree *ft; *************** *** 454,460 **** ft = xcalloc(1, sizeof *ft); RB_INIT(&ft->tree); ! ft->status = status; format_add_cb(ft, "host", format_cb_host); format_add_cb(ft, "host_short", format_cb_host_short); --- 458,464 ---- ft = xcalloc(1, sizeof *ft); RB_INIT(&ft->tree); ! ft->flags = flags; format_add_cb(ft, "host", format_cb_host); format_add_cb(ft, "host_short", format_cb_host_short);