mirror of
				https://github.com/tmux/tmux.git
				synced 2025-11-04 00:56:10 +00:00 
			
		
		
		
	Fix error reporting for client commands by adding a flag to cmd_find_client to
tell it whether or not to show errors, sometimes it's needed and sometimes not.
This commit is contained in:
		@@ -97,7 +97,7 @@ cmd_break_pane_exec(struct cmd *self, struct cmd_ctx *ctx)
 | 
			
		||||
			template = BREAK_PANE_TEMPLATE;
 | 
			
		||||
 | 
			
		||||
		ft = format_create();
 | 
			
		||||
		if ((c = cmd_find_client(ctx, NULL)) != NULL)
 | 
			
		||||
		if ((c = cmd_find_client(ctx, NULL, 1)) != NULL)
 | 
			
		||||
			format_client(ft, c);
 | 
			
		||||
		format_session(ft, s);
 | 
			
		||||
		format_winlink(ft, s, wl);
 | 
			
		||||
 
 | 
			
		||||
@@ -94,7 +94,7 @@ cmd_command_prompt_exec(struct cmd *self, struct cmd_ctx *ctx)
 | 
			
		||||
	char				*prompt, *ptr, *input = NULL;
 | 
			
		||||
	size_t				 n;
 | 
			
		||||
 | 
			
		||||
	if ((c = cmd_find_client(ctx, args_get(args, 't'))) == NULL)
 | 
			
		||||
	if ((c = cmd_find_client(ctx, args_get(args, 't'), 0)) == NULL)
 | 
			
		||||
		return (CMD_RETURN_ERROR);
 | 
			
		||||
 | 
			
		||||
	if (c->prompt_string != NULL)
 | 
			
		||||
 
 | 
			
		||||
@@ -79,7 +79,7 @@ cmd_confirm_before_exec(struct cmd *self, struct cmd_ctx *ctx)
 | 
			
		||||
		return (CMD_RETURN_ERROR);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if ((c = cmd_find_client(ctx, args_get(args, 't'))) == NULL)
 | 
			
		||||
	if ((c = cmd_find_client(ctx, args_get(args, 't'), 0)) == NULL)
 | 
			
		||||
		return (CMD_RETURN_ERROR);
 | 
			
		||||
 | 
			
		||||
	if ((prompt = args_get(args, 'p')) != NULL)
 | 
			
		||||
 
 | 
			
		||||
@@ -61,7 +61,7 @@ cmd_detach_client_exec(struct cmd *self, struct cmd_ctx *ctx)
 | 
			
		||||
				server_write_client(c, msgtype, NULL, 0);
 | 
			
		||||
		}
 | 
			
		||||
	} else {
 | 
			
		||||
		c = cmd_find_client(ctx, args_get(args, 't'));
 | 
			
		||||
		c = cmd_find_client(ctx, args_get(args, 't'), 0);
 | 
			
		||||
		if (c == NULL)
 | 
			
		||||
			return (CMD_RETURN_ERROR);
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -55,8 +55,6 @@ cmd_display_message_exec(struct cmd *self, struct cmd_ctx *ctx)
 | 
			
		||||
	time_t			 t;
 | 
			
		||||
	size_t			 len;
 | 
			
		||||
 | 
			
		||||
	c = cmd_find_client(ctx, args_get(args, 'c'));
 | 
			
		||||
 | 
			
		||||
	if (args_has(args, 't')) {
 | 
			
		||||
		wl = cmd_find_pane(ctx, args_get(args, 't'), &s, &wp);
 | 
			
		||||
		if (wl == NULL)
 | 
			
		||||
@@ -79,7 +77,7 @@ cmd_display_message_exec(struct cmd *self, struct cmd_ctx *ctx)
 | 
			
		||||
		template = DISPLAY_MESSAGE_TEMPLATE;
 | 
			
		||||
 | 
			
		||||
	ft = format_create();
 | 
			
		||||
	if (c != NULL)
 | 
			
		||||
	if ((c = cmd_find_client(ctx, args_get(args, 'c'), 1)) != NULL)
 | 
			
		||||
		format_client(ft, c);
 | 
			
		||||
	format_session(ft, s);
 | 
			
		||||
	format_winlink(ft, s, wl);
 | 
			
		||||
 
 | 
			
		||||
@@ -42,7 +42,7 @@ cmd_display_panes_exec(struct cmd *self, struct cmd_ctx *ctx)
 | 
			
		||||
	struct args	*args = self->args;
 | 
			
		||||
	struct client	*c;
 | 
			
		||||
 | 
			
		||||
	if ((c = cmd_find_client(ctx, args_get(args, 't'))) == NULL)
 | 
			
		||||
	if ((c = cmd_find_client(ctx, args_get(args, 't'), 0)) == NULL)
 | 
			
		||||
		return (CMD_RETURN_ERROR);
 | 
			
		||||
 | 
			
		||||
	server_set_identify(c);
 | 
			
		||||
 
 | 
			
		||||
@@ -74,7 +74,7 @@ cmd_lock_server_exec(struct cmd *self, unused struct cmd_ctx *ctx)
 | 
			
		||||
			return (CMD_RETURN_ERROR);
 | 
			
		||||
		server_lock_session(s);
 | 
			
		||||
	} else {
 | 
			
		||||
		if ((c = cmd_find_client(ctx, args_get(args, 't'))) == NULL)
 | 
			
		||||
		if ((c = cmd_find_client(ctx, args_get(args, 't'), 0)) == NULL)
 | 
			
		||||
			return (CMD_RETURN_ERROR);
 | 
			
		||||
		server_lock_client(c);
 | 
			
		||||
	}
 | 
			
		||||
 
 | 
			
		||||
@@ -126,7 +126,7 @@ cmd_new_window_exec(struct cmd *self, struct cmd_ctx *ctx)
 | 
			
		||||
			template = NEW_WINDOW_TEMPLATE;
 | 
			
		||||
 | 
			
		||||
		ft = format_create();
 | 
			
		||||
		if ((c = cmd_find_client(ctx, NULL)) != NULL)
 | 
			
		||||
		if ((c = cmd_find_client(ctx, NULL, 1)) != NULL)
 | 
			
		||||
		    format_client(ft, c);
 | 
			
		||||
		format_session(ft, s);
 | 
			
		||||
		format_winlink(ft, s, wl);
 | 
			
		||||
 
 | 
			
		||||
@@ -56,7 +56,7 @@ cmd_pipe_pane_exec(struct cmd *self, struct cmd_ctx *ctx)
 | 
			
		||||
 | 
			
		||||
	if (cmd_find_pane(ctx, args_get(args, 't'), NULL, &wp) == NULL)
 | 
			
		||||
		return (CMD_RETURN_ERROR);
 | 
			
		||||
	c = cmd_find_client(ctx, NULL);
 | 
			
		||||
	c = cmd_find_client(ctx, NULL, 1);
 | 
			
		||||
 | 
			
		||||
	/* Destroy the old pipe. */
 | 
			
		||||
	old_fd = wp->pipe_fd;
 | 
			
		||||
 
 | 
			
		||||
@@ -44,7 +44,7 @@ cmd_refresh_client_exec(struct cmd *self, struct cmd_ctx *ctx)
 | 
			
		||||
	const char	*size;
 | 
			
		||||
	u_int		 w, h;
 | 
			
		||||
 | 
			
		||||
	if ((c = cmd_find_client(ctx, args_get(args, 't'))) == NULL)
 | 
			
		||||
	if ((c = cmd_find_client(ctx, args_get(args, 't'), 0)) == NULL)
 | 
			
		||||
		return (CMD_RETURN_ERROR);
 | 
			
		||||
 | 
			
		||||
	if (args_has(args, 'C')) {
 | 
			
		||||
 
 | 
			
		||||
@@ -48,7 +48,7 @@ cmd_show_messages_exec(struct cmd *self, struct cmd_ctx *ctx)
 | 
			
		||||
	char			*tim;
 | 
			
		||||
	u_int			 i;
 | 
			
		||||
 | 
			
		||||
	if ((c = cmd_find_client(ctx, args_get(args, 't'))) == NULL)
 | 
			
		||||
	if ((c = cmd_find_client(ctx, args_get(args, 't'), 0)) == NULL)
 | 
			
		||||
		return (CMD_RETURN_ERROR);
 | 
			
		||||
 | 
			
		||||
	for (i = 0; i < ARRAY_LENGTH(&c->message_log); i++) {
 | 
			
		||||
 
 | 
			
		||||
@@ -151,7 +151,7 @@ cmd_split_window_exec(struct cmd *self, struct cmd_ctx *ctx)
 | 
			
		||||
			template = SPLIT_WINDOW_TEMPLATE;
 | 
			
		||||
 | 
			
		||||
		ft = format_create();
 | 
			
		||||
		if ((c = cmd_find_client(ctx, NULL)) != NULL)
 | 
			
		||||
		if ((c = cmd_find_client(ctx, NULL, 1)) != NULL)
 | 
			
		||||
		    format_client(ft, c);
 | 
			
		||||
		format_session(ft, s);
 | 
			
		||||
		format_winlink(ft, s, wl);
 | 
			
		||||
 
 | 
			
		||||
@@ -45,7 +45,7 @@ cmd_suspend_client_exec(struct cmd *self, struct cmd_ctx *ctx)
 | 
			
		||||
	struct args	*args = self->args;
 | 
			
		||||
	struct client	*c;
 | 
			
		||||
 | 
			
		||||
	if ((c = cmd_find_client(ctx, args_get(args, 't'))) == NULL)
 | 
			
		||||
	if ((c = cmd_find_client(ctx, args_get(args, 't'), 0)) == NULL)
 | 
			
		||||
		return (CMD_RETURN_ERROR);
 | 
			
		||||
 | 
			
		||||
	tty_stop_tty(&c->tty);
 | 
			
		||||
 
 | 
			
		||||
@@ -64,7 +64,7 @@ cmd_switch_client_exec(struct cmd *self, struct cmd_ctx *ctx)
 | 
			
		||||
	struct client	*c;
 | 
			
		||||
	struct session	*s;
 | 
			
		||||
 | 
			
		||||
	if ((c = cmd_find_client(ctx, args_get(args, 'c'))) == NULL)
 | 
			
		||||
	if ((c = cmd_find_client(ctx, args_get(args, 'c'), 0)) == NULL)
 | 
			
		||||
		return (CMD_RETURN_ERROR);
 | 
			
		||||
 | 
			
		||||
	if (args_has(args, 'r')) {
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										12
									
								
								cmd.c
									
									
									
									
									
								
							
							
						
						
									
										12
									
								
								cmd.c
									
									
									
									
									
								
							@@ -516,15 +516,19 @@ cmd_choose_client(struct clients *cc)
 | 
			
		||||
 | 
			
		||||
/* Find the target client or report an error and return NULL. */
 | 
			
		||||
struct client *
 | 
			
		||||
cmd_find_client(struct cmd_ctx *ctx, const char *arg)
 | 
			
		||||
cmd_find_client(struct cmd_ctx *ctx, const char *arg, int quiet)
 | 
			
		||||
{
 | 
			
		||||
	struct client	*c;
 | 
			
		||||
	char		*tmparg;
 | 
			
		||||
	size_t		 arglen;
 | 
			
		||||
 | 
			
		||||
	/* A NULL argument means the current client. */
 | 
			
		||||
	if (arg == NULL)
 | 
			
		||||
		return (cmd_current_client(ctx));
 | 
			
		||||
	if (arg == NULL) {
 | 
			
		||||
		c = cmd_current_client(ctx);
 | 
			
		||||
		if (c == NULL && !quiet)
 | 
			
		||||
			ctx->error(ctx, "no clients");
 | 
			
		||||
		return (c);
 | 
			
		||||
	}
 | 
			
		||||
	tmparg = xstrdup(arg);
 | 
			
		||||
 | 
			
		||||
	/* Trim a single trailing colon if any. */
 | 
			
		||||
@@ -536,7 +540,7 @@ cmd_find_client(struct cmd_ctx *ctx, const char *arg)
 | 
			
		||||
	c = cmd_lookup_client(tmparg);
 | 
			
		||||
 | 
			
		||||
	/* If no client found, report an error. */
 | 
			
		||||
	if (c == NULL)
 | 
			
		||||
	if (c == NULL && !quiet)
 | 
			
		||||
		ctx->error(ctx, "client not found: %s", tmparg);
 | 
			
		||||
 | 
			
		||||
	free(tmparg);
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										2
									
								
								tmux.h
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								tmux.h
									
									
									
									
									
								
							@@ -1728,7 +1728,7 @@ struct cmd	*cmd_parse(int, char **, char **);
 | 
			
		||||
size_t		 cmd_print(struct cmd *, char *, size_t);
 | 
			
		||||
struct session	*cmd_current_session(struct cmd_ctx *, int);
 | 
			
		||||
struct client	*cmd_current_client(struct cmd_ctx *);
 | 
			
		||||
struct client	*cmd_find_client(struct cmd_ctx *, const char *);
 | 
			
		||||
struct client	*cmd_find_client(struct cmd_ctx *, const char *, int);
 | 
			
		||||
struct session	*cmd_find_session(struct cmd_ctx *, const char *, int);
 | 
			
		||||
struct winlink	*cmd_find_window(
 | 
			
		||||
		     struct cmd_ctx *, const char *, struct session **);
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user