summaryrefslogtreecommitdiff
path: root/usr.bin/tmux/tmux.h
diff options
context:
space:
mode:
authorNicholas Marriott <nicm@cvs.openbsd.org>2021-08-21 18:39:08 +0000
committerNicholas Marriott <nicm@cvs.openbsd.org>2021-08-21 18:39:08 +0000
commit916e63bc6665792fa593d648dcd6150f2d711adb (patch)
tree83e1f1cc1dd774c83d159b250dd6b5872ee6fb0d /usr.bin/tmux/tmux.h
parent1e7efad59e5014eb61567f9e6a9564e48c20f77c (diff)
Pass typed arguments out of the parser into the arguments list and let
it convert them into strings.
Diffstat (limited to 'usr.bin/tmux/tmux.h')
-rw-r--r--usr.bin/tmux/tmux.h22
1 files changed, 18 insertions, 4 deletions
diff --git a/usr.bin/tmux/tmux.h b/usr.bin/tmux/tmux.h
index 01c574fade7..4130c2a6633 100644
--- a/usr.bin/tmux/tmux.h
+++ b/usr.bin/tmux/tmux.h
@@ -1,4 +1,4 @@
-/* $OpenBSD: tmux.h,v 1.1132 2021/08/21 17:25:32 nicm Exp $ */
+/* $OpenBSD: tmux.h,v 1.1133 2021/08/21 18:39:07 nicm Exp $ */
/*
* Copyright (c) 2007 Nicholas Marriott <nicholas.marriott@gmail.com>
@@ -1355,9 +1355,20 @@ struct message_entry {
};
TAILQ_HEAD(message_list, message_entry);
+/* Argument type. */
+enum args_type {
+ ARGS_NONE,
+ ARGS_STRING,
+ ARGS_COMMANDS
+};
+
/* Argument value. */
struct args_value {
- char *string;
+ enum args_type type;
+ union {
+ char *string;
+ struct cmd_list *cmdlist;
+ };
TAILQ_ENTRY(args_value) entry;
};
@@ -2187,8 +2198,10 @@ int tty_keys_next(struct tty *);
/* arguments.c */
void args_set(struct args *, u_char, const char *);
struct args *args_create(void);
-struct args *args_parse(const struct args_parse *, int, char **);
+struct args *args_parse(const struct args_parse *, struct args_value *,
+ u_int);
void args_vector(struct args *, int *, char ***);
+void args_free_value(struct args_value *);
void args_free(struct args *);
char *args_print(struct args *);
char *args_escape(const char *);
@@ -2250,7 +2263,8 @@ const struct cmd_entry *cmd_get_entry(struct cmd *);
struct args *cmd_get_args(struct cmd *);
u_int cmd_get_group(struct cmd *);
void cmd_get_source(struct cmd *, const char **, u_int *);
-struct cmd *cmd_parse(int, char **, const char *, u_int, char **);
+struct cmd *cmd_parse(struct args_value *, u_int, const char *, u_int,
+ char **);
void cmd_free(struct cmd *);
char *cmd_print(struct cmd *);
struct cmd_list *cmd_list_new(void);