version 1.17, 2019/05/20 11:34:37 |
version 1.18, 2019/05/23 11:13:30 |
|
|
|
|
#include "tmux.h" |
#include "tmux.h" |
|
|
static struct cmd_list * |
static u_int cmd_list_next_group = 1; |
|
|
|
struct cmd_list * |
cmd_list_new(void) |
cmd_list_new(void) |
{ |
{ |
struct cmd_list *cmdlist; |
struct cmd_list *cmdlist; |
|
|
cmdlist = xcalloc(1, sizeof *cmdlist); |
cmdlist = xcalloc(1, sizeof *cmdlist); |
cmdlist->references = 1; |
cmdlist->references = 1; |
|
cmdlist->group = cmd_list_next_group++; |
TAILQ_INIT(&cmdlist->list); |
TAILQ_INIT(&cmdlist->list); |
return (cmdlist); |
return (cmdlist); |
} |
} |
|
|
|
void |
|
cmd_list_append(struct cmd_list *cmdlist, struct cmd *cmd) |
|
{ |
|
cmd->group = cmdlist->group; |
|
TAILQ_INSERT_TAIL(&cmdlist->list, cmd, qentry); |
|
} |
|
|
|
void |
|
cmd_list_move(struct cmd_list *cmdlist, struct cmd_list *from) |
|
{ |
|
struct cmd *cmd, *cmd1; |
|
|
|
TAILQ_FOREACH_SAFE(cmd, &from->list, qentry, cmd1) { |
|
TAILQ_REMOVE(&from->list, cmd, qentry); |
|
TAILQ_INSERT_TAIL(&cmdlist->list, cmd, qentry); |
|
} |
|
cmdlist->group = cmd_list_next_group++; |
|
} |
|
|
struct cmd_list * |
struct cmd_list * |
cmd_list_parse(int argc, char **argv, const char *file, u_int line, |
cmd_list_parse(int argc, char **argv, const char *file, u_int line, |
char **cause) |
char **cause) |
|
|
|
|
TAILQ_FOREACH_SAFE(cmd, &cmdlist->list, qentry, cmd1) { |
TAILQ_FOREACH_SAFE(cmd, &cmdlist->list, qentry, cmd1) { |
TAILQ_REMOVE(&cmdlist->list, cmd, qentry); |
TAILQ_REMOVE(&cmdlist->list, cmd, qentry); |
args_free(cmd->args); |
cmd_free(cmd); |
free(cmd->file); |
|
free(cmd); |
|
} |
} |
|
|
free(cmdlist); |
free(cmdlist); |