Skip to content

Commit 0a1fe88

Browse files
committed
nad: refactor argument processor to use enum and switch
1 parent fb23bf5 commit 0a1fe88

File tree

1 file changed

+63
-11
lines changed

1 file changed

+63
-11
lines changed

bin/nad/nad.c

Lines changed: 63 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,50 @@
3434

3535
#include "nad.h"
3636

37+
typedef enum {
38+
CMD_UNKNOWN = -1,
39+
CMD_LS,
40+
CMD_CP,
41+
CMD_RM,
42+
CMD_MV,
43+
CMD_SET,
44+
CMD_FIND,
45+
CMD_VERSION
46+
} nad_command_t;
47+
48+
static nad_command_t get_command(const char *cmd)
49+
{
50+
if (STRCMP(cmd, ==, "ls")) {
51+
return CMD_LS;
52+
}
53+
54+
if (STRCMP(cmd, ==, "cp")) {
55+
return CMD_CP;
56+
}
57+
58+
if (STRCMP(cmd, ==, "rm")) {
59+
return CMD_RM;
60+
}
61+
62+
if (STRCMP(cmd, ==, "mv")) {
63+
return CMD_MV;
64+
}
65+
66+
if (STRCMP(cmd, ==, "set")) {
67+
return CMD_SET;
68+
}
69+
70+
if (STRCMP(cmd, ==, "find")) {
71+
return CMD_FIND;
72+
}
73+
74+
if (STRCMP(cmd, ==, "-v") || STRCMP(cmd, ==, "--version")) {
75+
return CMD_VERSION;
76+
}
77+
78+
return CMD_UNKNOWN;
79+
}
80+
3781
static void usage_main(void)
3882
{
3983
printf("Usage: nad ls|cp|rm|mv|set|find [file|dir, ...]\n");
@@ -64,25 +108,33 @@ int main(int argc, char **argv)
64108
return 1;
65109
}
66110

67-
if (STRCMP(argv[1], ==, "ls")) {
111+
nad_command_t cmd = get_command(argv[1]);
112+
113+
switch (cmd) {
114+
case CMD_LS:
68115
return ad_ls(argc - 1, argv + 1, &obj);
69-
} else if (STRCMP(argv[1], ==, "cp")) {
116+
117+
case CMD_CP:
70118
return ad_cp(argc - 1, argv + 1, &obj);
71-
} else if (STRCMP(argv[1], ==, "rm")) {
119+
120+
case CMD_RM:
72121
return ad_rm(argc - 1, argv + 1, &obj);
73-
} else if (STRCMP(argv[1], ==, "mv")) {
122+
123+
case CMD_MV:
74124
return ad_mv(argc, argv, &obj);
75-
} else if (STRCMP(argv[1], ==, "set")) {
125+
126+
case CMD_SET:
76127
return ad_set(argc - 1, argv + 1, &obj);
77-
} else if (STRCMP(argv[1], ==, "find")) {
128+
129+
case CMD_FIND:
78130
return ad_find(argc, argv, &obj);
79-
} else if (STRCMP(argv[1], ==, "-v")) {
80-
show_version();
81-
return 1;
82-
} else if (STRCMP(argv[1], ==, "--version")) {
131+
132+
case CMD_VERSION:
83133
show_version();
84134
return 1;
85-
} else {
135+
136+
case CMD_UNKNOWN:
137+
default:
86138
usage_main();
87139
return 1;
88140
}

0 commit comments

Comments
 (0)