mirror of
				https://github.com/tmux/tmux.git
				synced 2025-11-04 09:26:05 +00:00 
			
		
		
		
	Sync OpenBSD patchset 521:
Don't return 1 unless there was actually a problem (signal/lost server) rather than for all events (normal exit/detach/etc).
This commit is contained in:
		
							
								
								
									
										17
									
								
								client.c
									
									
									
									
									
								
							
							
						
						
									
										17
									
								
								client.c
									
									
									
									
									
								
							@@ -1,4 +1,4 @@
 | 
			
		||||
/* $Id: client.c,v 1.86 2009-11-08 23:07:14 tcunha Exp $ */
 | 
			
		||||
/* $Id: client.c,v 1.87 2009-11-10 23:28:53 tcunha Exp $ */
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
 | 
			
		||||
@@ -37,6 +37,7 @@
 | 
			
		||||
struct imsgbuf	client_ibuf;
 | 
			
		||||
struct event	client_event;
 | 
			
		||||
const char     *client_exitmsg;
 | 
			
		||||
int		client_exitval;
 | 
			
		||||
 | 
			
		||||
void		client_send_identify(int);
 | 
			
		||||
void		client_send_environ(void);
 | 
			
		||||
@@ -215,17 +216,14 @@ client_main(void)
 | 
			
		||||
		goto out;
 | 
			
		||||
 | 
			
		||||
	/* Set the event and dispatch. */
 | 
			
		||||
	client_update_event();	
 | 
			
		||||
	client_update_event();
 | 
			
		||||
	event_dispatch();
 | 
			
		||||
 | 
			
		||||
out:
 | 
			
		||||
	/* Print the exit message, if any, and exit. */
 | 
			
		||||
	if (client_exitmsg != NULL) {
 | 
			
		||||
		if (!login_shell)
 | 
			
		||||
			printf("[%s]\n", client_exitmsg);
 | 
			
		||||
		exit(1);
 | 
			
		||||
	}
 | 
			
		||||
	exit(0);
 | 
			
		||||
	if (client_exitmsg != NULL && !login_shell)
 | 
			
		||||
		printf("[%s]\n", client_exitmsg);
 | 
			
		||||
	exit(client_exitval);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
@@ -236,6 +234,7 @@ client_signal(int sig, unused short events, unused void *data)
 | 
			
		||||
	switch (sig) {
 | 
			
		||||
	case SIGTERM:
 | 
			
		||||
		client_exitmsg = "terminated";
 | 
			
		||||
		client_exitval = 1;
 | 
			
		||||
		client_write_server(MSG_EXITING, NULL, 0);
 | 
			
		||||
		break;
 | 
			
		||||
	case SIGWINCH:
 | 
			
		||||
@@ -279,6 +278,7 @@ client_callback(unused int fd, short events, unused void *data)
 | 
			
		||||
 | 
			
		||||
lost_server:
 | 
			
		||||
	client_exitmsg = "lost server";
 | 
			
		||||
	client_exitval = 1;
 | 
			
		||||
	event_loopexit(NULL);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@@ -325,6 +325,7 @@ client_dispatch(void)
 | 
			
		||||
 | 
			
		||||
			client_write_server(MSG_EXITING, NULL, 0);
 | 
			
		||||
			client_exitmsg = "server exited";
 | 
			
		||||
			client_exitval = 1;
 | 
			
		||||
			break;
 | 
			
		||||
		case MSG_SUSPEND:
 | 
			
		||||
			if (datalen != 0)
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user