|
34 | 34 |
|
35 | 35 | #include "nad.h"
|
36 | 36 |
|
| 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 | + |
37 | 81 | static void usage_main(void)
|
38 | 82 | {
|
39 | 83 | printf("Usage: nad ls|cp|rm|mv|set|find [file|dir, ...]\n");
|
@@ -64,25 +108,33 @@ int main(int argc, char **argv)
|
64 | 108 | return 1;
|
65 | 109 | }
|
66 | 110 |
|
67 |
| - if (STRCMP(argv[1], ==, "ls")) { |
| 111 | + nad_command_t cmd = get_command(argv[1]); |
| 112 | + |
| 113 | + switch (cmd) { |
| 114 | + case CMD_LS: |
68 | 115 | return ad_ls(argc - 1, argv + 1, &obj);
|
69 |
| - } else if (STRCMP(argv[1], ==, "cp")) { |
| 116 | + |
| 117 | + case CMD_CP: |
70 | 118 | return ad_cp(argc - 1, argv + 1, &obj);
|
71 |
| - } else if (STRCMP(argv[1], ==, "rm")) { |
| 119 | + |
| 120 | + case CMD_RM: |
72 | 121 | return ad_rm(argc - 1, argv + 1, &obj);
|
73 |
| - } else if (STRCMP(argv[1], ==, "mv")) { |
| 122 | + |
| 123 | + case CMD_MV: |
74 | 124 | return ad_mv(argc, argv, &obj);
|
75 |
| - } else if (STRCMP(argv[1], ==, "set")) { |
| 125 | + |
| 126 | + case CMD_SET: |
76 | 127 | return ad_set(argc - 1, argv + 1, &obj);
|
77 |
| - } else if (STRCMP(argv[1], ==, "find")) { |
| 128 | + |
| 129 | + case CMD_FIND: |
78 | 130 | 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: |
83 | 133 | show_version();
|
84 | 134 | return 1;
|
85 |
| - } else { |
| 135 | + |
| 136 | + case CMD_UNKNOWN: |
| 137 | + default: |
86 | 138 | usage_main();
|
87 | 139 | return 1;
|
88 | 140 | }
|
|
0 commit comments