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.
This commit is contained in:
Tiago Cunha
2010-07-17 14:36:41 +00:00
parent 46f27eab22
commit ad6a528f61
5 changed files with 39 additions and 20 deletions

16
tmux.c
View File

@@ -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");