summaryrefslogtreecommitdiffstats
path: root/cmd.c
diff options
context:
space:
mode:
authorThomas Adam <thomas@xteddy.org>2016-10-16 20:01:10 +0100
committerThomas Adam <thomas@xteddy.org>2016-10-16 20:01:10 +0100
commitc67b7025882ee6bc2b3d5112dbc630c191f1fa2a (patch)
tree4c36124e376eac0235accd523be6545ccdccf6af /cmd.c
parent3d8efdf310f475a6b9ed83814182c966de2bdab3 (diff)
parentddc4512d2e0eda6c705e002cb5dbf80719d709e1 (diff)
Merge branch 'obsd-master'
Diffstat (limited to 'cmd.c')
-rw-r--r--cmd.c51
1 files changed, 21 insertions, 30 deletions
diff --git a/cmd.c b/cmd.c
index 14ef7f21..a7de1f58 100644
--- a/cmd.c
+++ b/cmd.c
@@ -389,12 +389,11 @@ usage:
static int
cmd_prepare_state_flag(char c, const char *target, enum cmd_entry_flag flag,
- struct cmd_q *cmdq, struct cmd_q *parent)
+ struct cmd_q *cmdq)
{
int targetflags, error;
struct cmd_find_state *fs = NULL;
- struct cmd_find_state *current = NULL;
- struct cmd_find_state tmp;
+ struct cmd_find_state current;
if (flag == CMD_NONE ||
flag == CMD_CLIENT ||
@@ -448,21 +447,12 @@ cmd_prepare_state_flag(char c, const char *target, enum cmd_entry_flag flag,
default:
fatalx("unknown %cflag %d", c, flag);
}
-
log_debug("%s: flag %c %d %#x", __func__, c, flag, targetflags);
- if (parent != NULL) {
- if (c == 't')
- current = &parent->state.tflag;
- else if (c == 's')
- current = &parent->state.sflag;
- }
- if (current == NULL || !cmd_find_valid_state(current)) {
- error = cmd_find_current(&tmp, cmdq, targetflags);
- if (error != 0 && ~targetflags & CMD_FIND_QUIET)
- return (-1);
- current = &tmp;
- }
- if (!cmd_find_empty_state(current) && !cmd_find_valid_state(current))
+
+ error = cmd_find_current(&current, cmdq, targetflags);
+ if (error != 0 && ~targetflags & CMD_FIND_QUIET)
+ return (-1);
+ if (!cmd_find_empty_state(&current) && !cmd_find_valid_state(&current))
fatalx("invalid current state");
switch (flag) {
@@ -474,13 +464,13 @@ cmd_prepare_state_flag(char c, const char *target, enum cmd_entry_flag flag,
case CMD_SESSION_CANFAIL:
case CMD_SESSION_PREFERUNATTACHED:
case CMD_SESSION_WITHPANE:
- error = cmd_find_target(fs, current, cmdq, target,
+ error = cmd_find_target(fs, &current, cmdq, target,
CMD_FIND_SESSION, targetflags);
if (error != 0 && ~targetflags & CMD_FIND_QUIET)
return (-1);
break;
case CMD_MOVEW_R:
- error = cmd_find_target(fs, current, cmdq, target,
+ error = cmd_find_target(fs, &current, cmdq, target,
CMD_FIND_SESSION, CMD_FIND_QUIET);
if (error == 0)
break;
@@ -489,7 +479,7 @@ cmd_prepare_state_flag(char c, const char *target, enum cmd_entry_flag flag,
case CMD_WINDOW_CANFAIL:
case CMD_WINDOW_MARKED:
case CMD_WINDOW_INDEX:
- error = cmd_find_target(fs, current, cmdq, target,
+ error = cmd_find_target(fs, &current, cmdq, target,
CMD_FIND_WINDOW, targetflags);
if (error != 0 && ~targetflags & CMD_FIND_QUIET)
return (-1);
@@ -497,7 +487,7 @@ cmd_prepare_state_flag(char c, const char *target, enum cmd_entry_flag flag,
case CMD_PANE:
case CMD_PANE_CANFAIL:
case CMD_PANE_MARKED:
- error = cmd_find_target(fs, current, cmdq, target,
+ error = cmd_find_target(fs, &current, cmdq, target,
CMD_FIND_PANE, targetflags);
if (error != 0 && ~targetflags & CMD_FIND_QUIET)
return (-1);
@@ -509,14 +499,14 @@ cmd_prepare_state_flag(char c, const char *target, enum cmd_entry_flag flag,
}
int
-cmd_prepare_state(struct cmd *cmd, struct cmd_q *cmdq, struct cmd_q *parent)
+cmd_prepare_state(struct cmd *cmd, struct cmd_q *cmdq)
{
- const struct cmd_entry *entry = cmd->entry;
- struct cmd_state *state = &cmdq->state;
- char *tmp;
- enum cmd_entry_flag flag;
- const char *s;
- int error;
+ const struct cmd_entry *entry = cmd->entry;
+ struct cmd_state *state = &cmdq->state;
+ char *tmp;
+ enum cmd_entry_flag flag;
+ const char *s;
+ int error;
tmp = cmd_print(cmd);
log_debug("preparing state for %s (client %p)", tmp, cmdq->client);
@@ -545,18 +535,19 @@ cmd_prepare_state(struct cmd *cmd, struct cmd_q *cmdq, struct cmd_q *parent)
state->c = cmd_find_client(cmdq, s, 1);
break;
}
+ log_debug("using client %p", state->c);
s = args_get(cmd->args, 't');
log_debug("preparing -t state: target %s", s == NULL ? "none" : s);
- error = cmd_prepare_state_flag('t', s, entry->tflag, cmdq, parent);
+ error = cmd_prepare_state_flag('t', s, entry->tflag, cmdq);
if (error != 0)
return (error);
s = args_get(cmd->args, 's');
log_debug("preparing -s state: target %s", s == NULL ? "none" : s);
- error = cmd_prepare_state_flag('s', s, entry->sflag, cmdq, parent);
+ error = cmd_prepare_state_flag('s', s, entry->sflag, cmdq);
if (error != 0)
return (error);