Skip to content

Commit 891b59b

Browse files
authored
Merge pull request #74 from nirs/cli-cleanups
Various cleanups in cli.c
2 parents 5b59d7e + c87cb73 commit 891b59b

File tree

1 file changed

+39
-49
lines changed

1 file changed

+39
-49
lines changed

cli.c

Lines changed: 39 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
#include <limits.h>
12
#include <stdio.h>
23
#include <stdlib.h>
34
#include <string.h>
@@ -62,34 +63,37 @@ static void print_usage(const char *argv0) {
6263

6364
static void print_version() { puts(VERSION); }
6465

65-
#define CLI_OPTIONS_ID_SOCKET_GROUP -42
66-
#define CLI_OPTIONS_ID_VMNET_MODE -43
67-
#define CLI_OPTIONS_ID_VMNET_INTERFACE -44
68-
#define CLI_OPTIONS_ID_VMNET_GATEWAY -45
69-
#define CLI_OPTIONS_ID_VMNET_DHCP_END -46
70-
#define CLI_OPTIONS_ID_VMNET_MASK -47
71-
#define CLI_OPTIONS_ID_VMNET_INTERFACE_ID -48
72-
#define CLI_OPTIONS_ID_VMNET_NAT66_PREFIX -50
66+
enum {
67+
CLI_OPT_SOCKET_GROUP = CHAR_MAX + 1,
68+
CLI_OPT_VMNET_MODE,
69+
CLI_OPT_VMNET_INTERFACE,
70+
CLI_OPT_VMNET_GATEWAY,
71+
CLI_OPT_VMNET_DHCP_END,
72+
CLI_OPT_VMNET_MASK,
73+
CLI_OPT_VMNET_INTERFACE_ID,
74+
CLI_OPT_VMNET_NAT66_PREFIX,
75+
};
76+
7377
struct cli_options *cli_options_parse(int argc, char *argv[]) {
74-
struct cli_options *res = malloc(sizeof(*res));
78+
struct cli_options *res = calloc(1, sizeof(*res));
7579
if (res == NULL) {
76-
goto error;
80+
perror("calloc");
81+
exit(EXIT_FAILURE);
7782
}
78-
memset(res, 0, sizeof(*res));
7983

8084
const struct option longopts[] = {
81-
{"socket-group", required_argument, NULL, CLI_OPTIONS_ID_SOCKET_GROUP},
82-
{"vmnet-mode", required_argument, NULL, CLI_OPTIONS_ID_VMNET_MODE},
85+
{"socket-group", required_argument, NULL, CLI_OPT_SOCKET_GROUP},
86+
{"vmnet-mode", required_argument, NULL, CLI_OPT_VMNET_MODE},
8387
{"vmnet-interface", required_argument, NULL,
84-
CLI_OPTIONS_ID_VMNET_INTERFACE},
85-
{"vmnet-gateway", required_argument, NULL, CLI_OPTIONS_ID_VMNET_GATEWAY},
88+
CLI_OPT_VMNET_INTERFACE},
89+
{"vmnet-gateway", required_argument, NULL, CLI_OPT_VMNET_GATEWAY},
8690
{"vmnet-dhcp-end", required_argument, NULL,
87-
CLI_OPTIONS_ID_VMNET_DHCP_END},
88-
{"vmnet-mask", required_argument, NULL, CLI_OPTIONS_ID_VMNET_MASK},
91+
CLI_OPT_VMNET_DHCP_END},
92+
{"vmnet-mask", required_argument, NULL, CLI_OPT_VMNET_MASK},
8993
{"vmnet-interface-id", required_argument, NULL,
90-
CLI_OPTIONS_ID_VMNET_INTERFACE_ID},
94+
CLI_OPT_VMNET_INTERFACE_ID},
9195
{"vmnet-nat66-prefix", required_argument, NULL,
92-
CLI_OPTIONS_ID_VMNET_NAT66_PREFIX},
96+
CLI_OPT_VMNET_NAT66_PREFIX},
9397
{"pidfile", required_argument, NULL, 'p'},
9498
{"help", no_argument, NULL, 'h'},
9599
{"version", no_argument, NULL, 'v'},
@@ -98,10 +102,10 @@ struct cli_options *cli_options_parse(int argc, char *argv[]) {
98102
int opt = 0;
99103
while ((opt = getopt_long(argc, argv, "hvp", longopts, NULL)) != -1) {
100104
switch (opt) {
101-
case CLI_OPTIONS_ID_SOCKET_GROUP:
105+
case CLI_OPT_SOCKET_GROUP:
102106
res->socket_group = strdup(optarg);
103107
break;
104-
case CLI_OPTIONS_ID_VMNET_MODE:
108+
case CLI_OPT_VMNET_MODE:
105109
if (strcmp(optarg, "host") == 0) {
106110
res->vmnet_mode = VMNET_HOST_MODE;
107111
} else if (strcmp(optarg, "shared") == 0) {
@@ -113,41 +117,37 @@ struct cli_options *cli_options_parse(int argc, char *argv[]) {
113117
goto error;
114118
}
115119
break;
116-
case CLI_OPTIONS_ID_VMNET_INTERFACE:
120+
case CLI_OPT_VMNET_INTERFACE:
117121
res->vmnet_interface = strdup(optarg);
118122
break;
119-
case CLI_OPTIONS_ID_VMNET_GATEWAY:
123+
case CLI_OPT_VMNET_GATEWAY:
120124
res->vmnet_gateway = strdup(optarg);
121125
break;
122-
case CLI_OPTIONS_ID_VMNET_DHCP_END:
126+
case CLI_OPT_VMNET_DHCP_END:
123127
res->vmnet_dhcp_end = strdup(optarg);
124128
break;
125-
case CLI_OPTIONS_ID_VMNET_MASK:
129+
case CLI_OPT_VMNET_MASK:
126130
res->vmnet_mask = strdup(optarg);
127131
break;
128-
case CLI_OPTIONS_ID_VMNET_INTERFACE_ID:
132+
case CLI_OPT_VMNET_INTERFACE_ID:
129133
if (uuid_parse(optarg, res->vmnet_interface_id) < 0) {
130134
fprintf(stderr, "Failed to parse UUID \"%s\"\n", optarg);
131135
goto error;
132136
}
133137
break;
134-
case CLI_OPTIONS_ID_VMNET_NAT66_PREFIX:
138+
case CLI_OPT_VMNET_NAT66_PREFIX:
135139
res->vmnet_nat66_prefix = strdup(optarg);
136140
break;
137141
case 'p':
138142
res->pidfile = strdup(optarg);
139143
break;
140144
case 'h':
141145
print_usage(argv[0]);
142-
cli_options_destroy(res);
143146
exit(EXIT_SUCCESS);
144-
return NULL;
145147
break;
146148
case 'v':
147149
print_version();
148-
cli_options_destroy(res);
149150
exit(EXIT_SUCCESS);
150-
return NULL;
151151
break;
152152
default:
153153
goto error;
@@ -229,29 +229,19 @@ struct cli_options *cli_options_parse(int argc, char *argv[]) {
229229
return res;
230230
error:
231231
print_usage(argv[0]);
232-
cli_options_destroy(res);
233232
exit(EXIT_FAILURE);
234-
return NULL;
235233
}
236234

237235
void cli_options_destroy(struct cli_options *x) {
238236
if (x == NULL)
239237
return;
240-
if (x->socket_group != NULL)
241-
free(x->socket_group);
242-
if (x->socket_path != NULL)
243-
free(x->socket_path);
244-
if (x->vmnet_interface != NULL)
245-
free(x->vmnet_interface);
246-
if (x->vmnet_gateway != NULL)
247-
free(x->vmnet_gateway);
248-
if (x->vmnet_dhcp_end != NULL)
249-
free(x->vmnet_dhcp_end);
250-
if (x->vmnet_mask != NULL)
251-
free(x->vmnet_mask);
252-
if (x->vmnet_nat66_prefix != NULL)
253-
free(x->vmnet_nat66_prefix);
254-
if (x->pidfile != NULL)
255-
free(x->pidfile);
238+
free(x->socket_group);
239+
free(x->socket_path);
240+
free(x->vmnet_interface);
241+
free(x->vmnet_gateway);
242+
free(x->vmnet_dhcp_end);
243+
free(x->vmnet_mask);
244+
free(x->vmnet_nat66_prefix);
245+
free(x->pidfile);
256246
free(x);
257247
}

0 commit comments

Comments
 (0)