mirror of
https://github.com/tmux/tmux.git
synced 2025-01-06 07:48:48 +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:
parent
f5a73c5433
commit
5ed3daf28b
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user