diff options
author | Tiago Cunha <tcunha@gmx.com> | 2010-07-17 14:36:41 +0000 |
---|---|---|
committer | Tiago Cunha <tcunha@gmx.com> | 2010-07-17 14:36:41 +0000 |
commit | ad6a528f611bf793f0c3d4f832f34a1c778068e3 (patch) | |
tree | 7cc69a9c6ed4419842ac808a695b568e04b1d918 /tmux.c | |
parent | 46f27eab22f78ec35a11b6e5b4d61e705c96eca1 (diff) | |
download | rtmux-ad6a528f611bf793f0c3d4f832f34a1c778068e3.tar.gz rtmux-ad6a528f611bf793f0c3d4f832f34a1c778068e3.tar.bz2 rtmux-ad6a528f611bf793f0c3d4f832f34a1c778068e3.zip |
Sync OpenBSD patchset 734:
Return the command client return code with MSG_EXIT now that MSG_ERROR and
MSG_PRINT are unused.
New clients should be compatible with old tmux servers but vice versa may print
an error.
Diffstat (limited to 'tmux.c')
-rw-r--r-- | tmux.c | 16 |
1 files changed, 9 insertions, 7 deletions
@@ -1,4 +1,4 @@ -/* $Id: tmux.c,v 1.213 2010-07-02 02:52:13 tcunha Exp $ */ +/* $Id: tmux.c,v 1.214 2010-07-17 14:36:41 tcunha Exp $ */ /* * Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net> @@ -60,7 +60,6 @@ char *makesockpath(const char *); __dead void shell_exec(const char *, const char *); struct imsgbuf *main_ibuf; -int main_exitval; void main_signal(int, short, unused void *); void main_callback(int, short, void *); @@ -565,7 +564,6 @@ main(int argc, char **argv) events |= EV_WRITE; event_once(main_ibuf->fd, events, main_callback, shellcmd, NULL); - main_exitval = 0; event_dispatch(); clear_signals(); @@ -614,6 +612,7 @@ main_dispatch(const char *shellcmd) struct imsg imsg; ssize_t n, datalen; struct msg_shell_data shelldata; + struct msg_exit_data exitdata; if ((n = imsg_read(main_ibuf)) == -1 || n == 0) fatalx("imsg_read failed"); @@ -628,10 +627,13 @@ main_dispatch(const char *shellcmd) switch (imsg.hdr.type) { case MSG_EXIT: case MSG_SHUTDOWN: - if (datalen != 0) - fatalx("bad MSG_EXIT size"); - - exit(main_exitval); + if (datalen != sizeof exitdata) { + if (datalen != 0) + fatalx("bad MSG_EXIT size"); + exit(0); + } + memcpy(&exitdata, imsg.data, sizeof exitdata); + exit(exitdata.retcode); case MSG_READY: if (datalen != 0) fatalx("bad MSG_READY size"); |