Having fixed flags for single-character getopt options is a bit hard to

maintain and is only going to get worse as more are used. So instead, add a new
uint64_t member to cmd_entry which is a bitmask of upper and lowercase options
accepted by the command.

This means new single character options can be used without the need to add it
explicitly to the list.
This commit is contained in:
Nicholas Marriott
2009-07-13 23:11:35 +00:00
parent 5d91555c7c
commit 5f108d9df6
73 changed files with 196 additions and 234 deletions

24
tmux.h
View File

@ -861,17 +861,13 @@ struct cmd_entry {
#define CMD_CANTNEST 0x2
#define CMD_ARG1 0x4
#define CMD_ARG01 0x8
#define CMD_AFLAG 0x10
#define CMD_DFLAG 0x20
#define CMD_GFLAG 0x40
#define CMD_KFLAG 0x80
#define CMD_UFLAG 0x100
#define CMD_BIGDFLAG 0x200
#define CMD_BIGUFLAG 0x400
#define CMD_RFLAG 0x800
int flags;
#define CMD_CHFLAG(flag) \
((flag) >= 'a' && (flag) <= 'z' ? 1ULL << ((flag) - 'a') : \
(flag) >= 'A' && (flag) <= 'Z' ? 1ULL << (26 + (flag) - 'A') : 0)
uint64_t chflags;
void (*init)(struct cmd *, int);
int (*parse)(struct cmd *, int, char **, char **);
int (*exec)(struct cmd *, struct cmd_ctx *);
@ -883,34 +879,34 @@ struct cmd_entry {
/* Generic command data. */
struct cmd_target_data {
int flags;
uint64_t chflags;
char *target;
char *arg;
};
struct cmd_srcdst_data {
int flags;
uint64_t chflags;
char *src;
char *dst;
char *arg;
};
struct cmd_buffer_data {
int flags;
uint64_t chflags;
char *target;
int buffer;
char *arg;
};
struct cmd_option_data {
int flags;
uint64_t chflags;
char *target;
char *option;
char *value;
};
struct cmd_pane_data {
int flags;
uint64_t chflags;
char *target;
char *arg;
int pane;