aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTiago Cunha <tcunha@gmx.com>2009-11-04 22:42:31 +0000
committerTiago Cunha <tcunha@gmx.com>2009-11-04 22:42:31 +0000
commitbbad75fb6c7344528c7f631c2daf09a87bab9744 (patch)
tree48af262594e7f29771a57f1a40b20702821f4b57
parenta090b78e8d5bf43a92d52e8e24b6566ff542c88e (diff)
downloadrtmux-bbad75fb6c7344528c7f631c2daf09a87bab9744.tar.gz
rtmux-bbad75fb6c7344528c7f631c2daf09a87bab9744.tar.bz2
rtmux-bbad75fb6c7344528c7f631c2daf09a87bab9744.zip
Sync OpenBSD patchset 483:
Change session and client activity and creation time members to have more meaningful names. Also, remove the code to try and update the session activity time for the command client when a command message is received as is pointless because it des not have a session.
-rw-r--r--cmd-list-sessions.c4
-rw-r--r--cmd-server-info.c4
-rw-r--r--cmd.c10
-rw-r--r--server-client.c37
-rw-r--r--server.c12
-rw-r--r--session.c6
-rw-r--r--tmux.h10
7 files changed, 44 insertions, 39 deletions
diff --git a/cmd-list-sessions.c b/cmd-list-sessions.c
index e6be3bbc..95db9b8e 100644
--- a/cmd-list-sessions.c
+++ b/cmd-list-sessions.c
@@ -1,4 +1,4 @@
-/* $Id: cmd-list-sessions.c,v 1.22 2009-10-11 23:38:16 tcunha Exp $ */
+/* $Id: cmd-list-sessions.c,v 1.23 2009-11-04 22:42:31 tcunha Exp $ */
/*
* Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
@@ -61,7 +61,7 @@ cmd_list_sessions_exec(unused struct cmd *self, struct cmd_ctx *ctx)
xsnprintf(tmp, sizeof tmp, " (group %u)", idx);
}
- t = s->tv.tv_sec;
+ t = s->creation_time.tv_sec;
tim = ctime(&t);
*strchr(tim, '\n') = '\0';
diff --git a/cmd-server-info.c b/cmd-server-info.c
index 90c3bf60..3f4bac13 100644
--- a/cmd-server-info.c
+++ b/cmd-server-info.c
@@ -1,4 +1,4 @@
-/* $Id: cmd-server-info.c,v 1.32 2009-11-02 21:38:26 tcunha Exp $ */
+/* $Id: cmd-server-info.c,v 1.33 2009-11-04 22:42:31 tcunha Exp $ */
/*
* Copyright (c) 2008 Nicholas Marriott <nicm@users.sourceforge.net>
@@ -105,7 +105,7 @@ cmd_server_info_exec(unused struct cmd *self, struct cmd_ctx *ctx)
if (s == NULL)
continue;
- t = s->tv.tv_sec;
+ t = s->creation_time.tv_sec;
tim = ctime(&t);
*strchr(tim, '\n') = '\0';
diff --git a/cmd.c b/cmd.c
index 0b8e46d6..fd76db3b 100644
--- a/cmd.c
+++ b/cmd.c
@@ -1,4 +1,4 @@
-/* $Id: cmd.c,v 1.127 2009-11-02 21:42:27 tcunha Exp $ */
+/* $Id: cmd.c,v 1.128 2009-11-04 22:42:31 tcunha Exp $ */
/*
* Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
@@ -361,9 +361,9 @@ cmd_newest_session(struct sessions *ss)
if ((s = ARRAY_ITEM(ss, i)) == NULL)
continue;
- if (tv == NULL || timercmp(&s->tv, tv, >)) {
+ if (tv == NULL || timercmp(&s->creation_time, tv, >)) {
snewest = s;
- tv = &s->tv;
+ tv = &s->creation_time;
}
}
@@ -385,9 +385,9 @@ cmd_newest_client(void)
if (c->session == NULL)
continue;
- if (tv == NULL || timercmp(&c->tv, tv, >)) {
+ if (tv == NULL || timercmp(&c->creation_time, tv, >)) {
cnewest = c;
- tv = &c->tv;
+ tv = &c->creation_time;
}
}
diff --git a/server-client.c b/server-client.c
index 9acfa4c9..5a4aff18 100644
--- a/server-client.c
+++ b/server-client.c
@@ -1,4 +1,4 @@
-/* $Id: server-client.c,v 1.10 2009-10-28 23:14:15 tcunha Exp $ */
+/* $Id: server-client.c,v 1.11 2009-11-04 22:42:31 tcunha Exp $ */
/*
* Copyright (c) 2009 Nicholas Marriott <nicm@users.sourceforge.net>
@@ -60,7 +60,7 @@ server_client_create(int fd)
c->references = 0;
imsg_init(&c->ibuf, fd);
- if (gettimeofday(&c->tv, NULL) != 0)
+ if (gettimeofday(&c->creation_time, NULL) != 0)
fatal("gettimeofday failed");
ARRAY_INIT(&c->prompt_hdata);
@@ -260,18 +260,19 @@ server_client_handle_data(struct client *c)
struct window_pane *wp;
struct screen *s;
struct options *oo;
- struct timeval tv;
+ struct timeval tv_add, tv_now;
struct key_binding *bd;
struct keylist *keylist;
struct mouse_event mouse;
int key, status, xtimeout, mode, isprefix;
u_int i;
+ /* Check and update repeat flag. */
+ if (gettimeofday(&tv_now, NULL) != 0)
+ fatal("gettimeofday failed");
xtimeout = options_get_number(&c->session->options, "repeat-time");
if (xtimeout != 0 && c->flags & CLIENT_REPEAT) {
- if (gettimeofday(&tv, NULL) != 0)
- fatal("gettimeofday failed");
- if (timercmp(&tv, &c->repeat_timer, >))
+ if (timercmp(&tv_now, &c->repeat_timer, >))
c->flags &= ~(CLIENT_PREFIX|CLIENT_REPEAT);
}
@@ -280,12 +281,14 @@ server_client_handle_data(struct client *c)
while (tty_keys_next(&c->tty, &key, &mouse) == 0) {
if (c->session == NULL)
return;
-
- c->session->activity = time(NULL);
w = c->session->curw->window;
wp = w->active; /* could die */
oo = &c->session->options;
+ /* Update activity timer. */
+ memcpy(&c->session->activity_time,
+ &tv_now, sizeof c->session->activity_time);
+
/* Special case: number keys jump to pane in identify mode. */
if (c->flags & CLIENT_IDENTIFY && key >= '0' && key <= '9') {
wp = window_pane_at_index(w, key - '0');
@@ -363,11 +366,9 @@ server_client_handle_data(struct client *c)
if (xtimeout != 0 && bd->can_repeat) {
c->flags |= CLIENT_PREFIX|CLIENT_REPEAT;
- tv.tv_sec = xtimeout / 1000;
- tv.tv_usec = (xtimeout % 1000) * 1000L;
- if (gettimeofday(&c->repeat_timer, NULL) != 0)
- fatal("gettimeofday failed");
- timeradd(&c->repeat_timer, &tv, &c->repeat_timer);
+ tv_add.tv_sec = xtimeout / 1000;
+ tv_add.tv_usec = (xtimeout % 1000) * 1000L;
+ timeradd(&tv_now, &tv_add, &c->repeat_timer);
}
/* Dispatch the command. */
@@ -580,11 +581,14 @@ server_client_msg_dispatch(struct client *c)
if (!(c->flags & CLIENT_SUSPENDED))
break;
c->flags &= ~CLIENT_SUSPENDED;
+
+ if (c->session != NULL &&
+ gettimeofday(&c->session->activity_time, NULL) != 0)
+ fatal("gettimeofday failed");
+
tty_start_tty(&c->tty);
server_redraw_client(c);
recalculate_sizes();
- if (c->session != NULL)
- c->session->activity = time(NULL);
break;
case MSG_ENVIRON:
if (datalen != sizeof environdata)
@@ -664,9 +668,6 @@ server_client_msg_command(struct client *c, struct msg_command_data *data)
int argc;
char **argv, *cause;
- if (c->session != NULL)
- c->session->activity = time(NULL);
-
ctx.error = server_client_msg_error;
ctx.print = server_client_msg_print;
ctx.info = server_client_msg_info;
diff --git a/server.c b/server.c
index bea6f5d7..8df12e56 100644
--- a/server.c
+++ b/server.c
@@ -1,4 +1,4 @@
-/* $Id: server.c,v 1.215 2009-11-02 21:39:34 tcunha Exp $ */
+/* $Id: server.c,v 1.216 2009-11-04 22:42:31 tcunha Exp $ */
/*
* Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
@@ -568,12 +568,13 @@ server_lock_server(void)
continue;
if (s->flags & SESSION_UNATTACHED) {
- s->activity = time(NULL);
+ if (gettimeofday(&s->activity_time, NULL) != 0)
+ fatal("gettimeofday failed");
continue;
}
timeout = options_get_number(&s->options, "lock-after-time");
- if (timeout <= 0 || t <= s->activity + timeout)
+ if (timeout <= 0 || t <= s->activity_time.tv_sec + timeout)
return; /* not timed out */
}
@@ -596,12 +597,13 @@ server_lock_sessions(void)
continue;
if (s->flags & SESSION_UNATTACHED) {
- s->activity = time(NULL);
+ if (gettimeofday(&s->activity_time, NULL) != 0)
+ fatal("gettimeofday failed");
continue;
}
timeout = options_get_number(&s->options, "lock-after-time");
- if (timeout > 0 && t > s->activity + timeout) {
+ if (timeout > 0 && t > s->activity_time.tv_sec + timeout) {
server_lock_session(s);
recalculate_sizes();
}
diff --git a/session.c b/session.c
index e4f5055c..6d78f891 100644
--- a/session.c
+++ b/session.c
@@ -1,4 +1,4 @@
-/* $Id: session.c,v 1.69 2009-10-11 23:38:16 tcunha Exp $ */
+/* $Id: session.c,v 1.70 2009-11-04 22:42:31 tcunha Exp $ */
/*
* Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
@@ -125,10 +125,10 @@ session_create(const char *name, const char *cmd, const char *cwd,
s = xmalloc(sizeof *s);
s->references = 0;
s->flags = 0;
- s->activity = time(NULL);
- if (gettimeofday(&s->tv, NULL) != 0)
+ if (gettimeofday(&s->creation_time, NULL) != 0)
fatal("gettimeofday failed");
+ memcpy(&s->activity_time, &s->creation_time, sizeof s->activity_time);
s->curw = NULL;
TAILQ_INIT(&s->lastw);
diff --git a/tmux.h b/tmux.h
index 52fd2a65..dcda730b 100644
--- a/tmux.h
+++ b/tmux.h
@@ -1,4 +1,4 @@
-/* $Id: tmux.h,v 1.493 2009-11-04 22:39:20 tcunha Exp $ */
+/* $Id: tmux.h,v 1.494 2009-11-04 22:42:31 tcunha Exp $ */
/*
* Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
@@ -920,8 +920,9 @@ TAILQ_HEAD(session_groups, session_group);
struct session {
char *name;
- struct timeval tv;
- time_t activity;
+
+ struct timeval creation_time;
+ struct timeval activity_time;
u_int sx;
u_int sy;
@@ -1059,7 +1060,8 @@ struct mouse_event {
/* Client connection. */
struct client {
struct imsgbuf ibuf;
- struct timeval tv;
+
+ struct timeval creation_time;
struct environ environ;