mirror of
				https://github.com/tmux/tmux.git
				synced 2025-11-04 00:56:10 +00:00 
			
		
		
		
	Didn't really think the else behaviour through - requiring argv to
contain "else" is silly so just omit that, also some manpage tweaks. From Tiago Cunha.
This commit is contained in:
		@@ -25,10 +25,9 @@
 | 
			
		||||
#include "tmux.h"
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Executes a tmux command if a shell command returns true.
 | 
			
		||||
 * Executes a tmux command if a shell command returns true or false.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
int	cmd_if_shell_check(struct args *);
 | 
			
		||||
int	cmd_if_shell_exec(struct cmd *, struct cmd_ctx *);
 | 
			
		||||
 | 
			
		||||
void	cmd_if_shell_callback(struct job *);
 | 
			
		||||
@@ -36,11 +35,11 @@ void	cmd_if_shell_free(void *);
 | 
			
		||||
 | 
			
		||||
const struct cmd_entry cmd_if_shell_entry = {
 | 
			
		||||
	"if-shell", "if",
 | 
			
		||||
	"", 2, 4,
 | 
			
		||||
	"shell-command command [else command]",
 | 
			
		||||
	"", 2, 3,
 | 
			
		||||
	"shell-command command [command]",
 | 
			
		||||
	0,
 | 
			
		||||
	NULL,
 | 
			
		||||
	cmd_if_shell_check,
 | 
			
		||||
	NULL,
 | 
			
		||||
	cmd_if_shell_exec
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
@@ -50,16 +49,6 @@ struct cmd_if_shell_data {
 | 
			
		||||
	struct cmd_ctx	 ctx;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
int
 | 
			
		||||
cmd_if_shell_check(struct args *args)
 | 
			
		||||
{
 | 
			
		||||
	if (args->argc == 3)
 | 
			
		||||
		return (-1);
 | 
			
		||||
	if (args->argc == 4 && strcmp(args->argv[2], "else") != 0)
 | 
			
		||||
		return (-1);
 | 
			
		||||
	return (0);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int
 | 
			
		||||
cmd_if_shell_exec(struct cmd *self, struct cmd_ctx *ctx)
 | 
			
		||||
{
 | 
			
		||||
@@ -69,8 +58,8 @@ cmd_if_shell_exec(struct cmd *self, struct cmd_ctx *ctx)
 | 
			
		||||
 | 
			
		||||
	cdata = xmalloc(sizeof *cdata);
 | 
			
		||||
	cdata->cmd_if = xstrdup(args->argv[1]);
 | 
			
		||||
	if (args->argc == 4)
 | 
			
		||||
		cdata->cmd_else = xstrdup(args->argv[3]);
 | 
			
		||||
	if (args->argc == 3)
 | 
			
		||||
		cdata->cmd_else = xstrdup(args->argv[2]);
 | 
			
		||||
	else
 | 
			
		||||
		cdata->cmd_else = NULL;
 | 
			
		||||
	memcpy(&cdata->ctx, ctx, sizeof cdata->ctx);
 | 
			
		||||
@@ -91,8 +80,7 @@ cmd_if_shell_callback(struct job *job)
 | 
			
		||||
	struct cmd_if_shell_data	*cdata = job->data;
 | 
			
		||||
	struct cmd_ctx			*ctx = &cdata->ctx;
 | 
			
		||||
	struct cmd_list			*cmdlist;
 | 
			
		||||
	char				*cmd;
 | 
			
		||||
	char				*cause;
 | 
			
		||||
	char				*cause, *cmd;
 | 
			
		||||
 | 
			
		||||
	if (!WIFEXITED(job->status) || WEXITSTATUS(job->status) != 0) {
 | 
			
		||||
		cmd = cdata->cmd_else;
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										8
									
								
								tmux.1
									
									
									
									
									
								
							
							
						
						
									
										8
									
								
								tmux.1
									
									
									
									
									
								
							@@ -2971,13 +2971,15 @@ Miscellaneous commands are as follows:
 | 
			
		||||
.Bl -tag -width Ds
 | 
			
		||||
.It Ic clock-mode Op Fl t Ar target-pane
 | 
			
		||||
Display a large clock.
 | 
			
		||||
.It Ic if-shell Ar shell-command command
 | 
			
		||||
.It Ic if-shell Ar shell-command command Op Ar command
 | 
			
		||||
.D1 (alias: Ic if )
 | 
			
		||||
Execute
 | 
			
		||||
Execute the first
 | 
			
		||||
.Ar command
 | 
			
		||||
if
 | 
			
		||||
.Ar shell-command
 | 
			
		||||
returns success.
 | 
			
		||||
returns success or the second
 | 
			
		||||
.Ar command
 | 
			
		||||
otherwise.
 | 
			
		||||
.It Ic lock-server
 | 
			
		||||
.D1 (alias: Ic lock )
 | 
			
		||||
Lock each client individually by running the command specified by the
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user