summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authornicm <nicm@openbsd.org>2015-09-14 10:25:52 +0000
committernicm <nicm@openbsd.org>2015-09-14 10:25:52 +0000
commit412d17629db314a5f002f191a46e38e5771c5bb1 (patch)
tree94b7504db6006e08fbba689c547e20e541ad3f88
parentMake isfdtype() and getmntinfo() weak symbols (diff)
downloadwireguard-openbsd-412d17629db314a5f002f191a46e38e5771c5bb1.tar.xz
wireguard-openbsd-412d17629db314a5f002f191a46e38e5771c5bb1.zip
Make refresh-client force update of jobs, from Sina Siadat.
-rw-r--r--usr.bin/tmux/cmd-refresh-client.c9
-rw-r--r--usr.bin/tmux/format.c20
-rw-r--r--usr.bin/tmux/server-client.c5
-rw-r--r--usr.bin/tmux/status.c7
-rw-r--r--usr.bin/tmux/tmux.h7
5 files changed, 31 insertions, 17 deletions
diff --git a/usr.bin/tmux/cmd-refresh-client.c b/usr.bin/tmux/cmd-refresh-client.c
index f1b9504430b..7c31af993dc 100644
--- a/usr.bin/tmux/cmd-refresh-client.c
+++ b/usr.bin/tmux/cmd-refresh-client.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: cmd-refresh-client.c,v 1.14 2015/05/27 13:28:04 nicm Exp $ */
+/* $OpenBSD: cmd-refresh-client.c,v 1.15 2015/09/14 10:25:52 nicm Exp $ */
/*
* Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
@@ -65,10 +65,13 @@ cmd_refresh_client_exec(struct cmd *self, struct cmd_q *cmdq)
}
if (tty_set_size(&c->tty, w, h))
recalculate_sizes();
- } else if (args_has(args, 'S'))
+ } else if (args_has(args, 'S')) {
+ c->flags |= CLIENT_STATUSFORCE;
server_status_client(c);
- else
+ } else {
+ c->flags |= CLIENT_STATUSFORCE;
server_redraw_client(c);
+ }
return (CMD_RETURN_NORMAL);
}
diff --git a/usr.bin/tmux/format.c b/usr.bin/tmux/format.c
index 7361c05b170..21e48f2d277 100644
--- a/usr.bin/tmux/format.c
+++ b/usr.bin/tmux/format.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: format.c,v 1.83 2015/09/10 08:58:14 nicm Exp $ */
+/* $OpenBSD: format.c,v 1.84 2015/09/14 10:25:52 nicm Exp $ */
/*
* Copyright (c) 2011 Nicholas Marriott <nicm@users.sourceforge.net>
@@ -104,7 +104,7 @@ struct format_tree {
struct session *s;
struct window_pane *wp;
- int status;
+ int flags;
RB_HEAD(format_entry_tree, format_entry) tree;
};
@@ -216,27 +216,31 @@ const char *
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);
- 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)) {
+ 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;
}
- fj->last = time(NULL);
+
+ if (ft->flags & FORMAT_STATUS)
+ fj->status = 1;
return (fj->out);
}
@@ -438,12 +442,12 @@ format_cb_pane_tabs(struct format_tree *ft, struct format_entry *fe)
struct format_tree *
format_create(void)
{
- return (format_create_status(0));
+ return (format_create_flags(0));
}
/* Create a new tree for the status line. */
struct format_tree *
-format_create_status(int status)
+format_create_flags(int flags)
{
struct format_tree *ft;
@@ -454,7 +458,7 @@ format_create_status(int status)
ft = xcalloc(1, sizeof *ft);
RB_INIT(&ft->tree);
- ft->status = status;
+ ft->flags = flags;
format_add_cb(ft, "host", format_cb_host);
format_add_cb(ft, "host_short", format_cb_host_short);
diff --git a/usr.bin/tmux/server-client.c b/usr.bin/tmux/server-client.c
index 431eb3c31a3..d6bd2320abc 100644
--- a/usr.bin/tmux/server-client.c
+++ b/usr.bin/tmux/server-client.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: server-client.c,v 1.152 2015/09/01 19:50:09 nicm Exp $ */
+/* $OpenBSD: server-client.c,v 1.153 2015/09/14 10:25:52 nicm Exp $ */
/*
* Copyright (c) 2009 Nicholas Marriott <nicm@users.sourceforge.net>
@@ -937,7 +937,8 @@ server_client_check_redraw(struct client *c)
tty->flags = (tty->flags & ~(TTY_FREEZE|TTY_NOCURSOR)) | flags;
tty_update_mode(tty, tty->mode, NULL);
- c->flags &= ~(CLIENT_REDRAW|CLIENT_STATUS|CLIENT_BORDERS);
+ c->flags &= ~(CLIENT_REDRAW|CLIENT_BORDERS|CLIENT_STATUS|
+ CLIENT_STATUSFORCE);
}
/* Set client title. */
diff --git a/usr.bin/tmux/status.c b/usr.bin/tmux/status.c
index 4d18ad4037e..0283c9f4579 100644
--- a/usr.bin/tmux/status.c
+++ b/usr.bin/tmux/status.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: status.c,v 1.134 2015/08/29 09:25:00 nicm Exp $ */
+/* $OpenBSD: status.c,v 1.135 2015/09/14 10:25:52 nicm Exp $ */
/*
* Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
@@ -503,7 +503,10 @@ status_replace(struct client *c, struct winlink *wl, const char *fmt, time_t t)
if (fmt == NULL)
return (xstrdup(""));
- ft = format_create_status(1);
+ if (c->flags & CLIENT_STATUSFORCE)
+ ft = format_create_flags(FORMAT_STATUS|FORMAT_FORCE);
+ else
+ ft = format_create_flags(FORMAT_STATUS);
format_defaults(ft, c, NULL, wl, NULL);
expanded = format_expand_time(ft, fmt, t);
diff --git a/usr.bin/tmux/tmux.h b/usr.bin/tmux/tmux.h
index 8913f21d8c5..b14b3113542 100644
--- a/usr.bin/tmux/tmux.h
+++ b/usr.bin/tmux/tmux.h
@@ -1,4 +1,4 @@
-/* $OpenBSD: tmux.h,v 1.557 2015/09/13 13:31:40 nicm Exp $ */
+/* $OpenBSD: tmux.h,v 1.558 2015/09/14 10:25:52 nicm Exp $ */
/*
* Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
@@ -1220,6 +1220,7 @@ struct client {
#define CLIENT_UTF8 0x10000
#define CLIENT_256COLOURS 0x20000
#define CLIENT_IDENTIFIED 0x40000
+#define CLIENT_STATUSFORCE 0x80000
int flags;
struct key_table *keytable;
@@ -1442,9 +1443,11 @@ int paste_set(char *, size_t, const char *, char **);
char *paste_make_sample(struct paste_buffer *, int);
/* format.c */
+#define FORMAT_STATUS 0x1
+#define FORMAT_FORCE 0x2
struct format_tree;
struct format_tree *format_create(void);
-struct format_tree *format_create_status(int);
+struct format_tree *format_create_flags(int);
void format_free(struct format_tree *);
void printflike(3, 4) format_add(struct format_tree *, const char *,
const char *, ...);