=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/tmux/session.c,v retrieving revision 1.50 retrieving revision 1.51 diff -u -r1.50 -r1.51 --- src/usr.bin/tmux/session.c 2015/06/05 18:18:32 1.50 +++ src/usr.bin/tmux/session.c 2015/08/28 13:01:03 1.51 @@ -1,4 +1,4 @@ -/* $OpenBSD: session.c,v 1.50 2015/06/05 18:18:32 nicm Exp $ */ +/* $OpenBSD: session.c,v 1.51 2015/08/28 13:01:03 nicm Exp $ */ /* * Copyright (c) 2007 Nicholas Marriott @@ -112,10 +112,6 @@ s->references = 1; s->flags = 0; - if (gettimeofday(&s->creation_time, NULL) != 0) - fatal("gettimeofday failed"); - session_update_activity(s); - s->cwd = dup(cwd); s->curw = NULL; @@ -133,6 +129,10 @@ memcpy(s->tio, tio, sizeof *s->tio); } + if (gettimeofday(&s->creation_time, NULL) != 0) + fatal("gettimeofday failed"); + session_update_activity(s, &s->creation_time); + s->sx = sx; s->sy = sy; @@ -224,12 +224,17 @@ return (*name != '\0' && name[strcspn(name, ":.")] == '\0'); } -/* Update session active time. */ +/* Update activity time. */ void -session_update_activity(struct session *s) +session_update_activity(struct session *s, struct timeval *from) { - if (gettimeofday(&s->activity_time, NULL) != 0) - fatal("gettimeofday"); + struct timeval *last = &s->last_activity_time; + + memcpy(last, &s->activity_time, sizeof *last); + if (from == NULL) + gettimeofday(&s->activity_time, NULL); + else + memcpy(&s->activity_time, from, sizeof s->activity_time); } /* Find the next usable session. */