|
|
d72f5af |
From da4dd38a7216f6794886b9e8c310273869fcb324 Mon Sep 17 00:00:00 2001
|
|
|
d72f5af |
From: Ryan O'Hara <rohara@redhat.com>
|
|
|
d72f5af |
Date: Tue, 30 Oct 2012 10:42:26 -0500
|
|
|
d72f5af |
Subject: [PATCH 02/10] Remove duplicate command-line option code
|
|
|
d72f5af |
|
|
|
d72f5af |
This patch removes unnecessary code to process command-line
|
|
|
d72f5af |
options. All options can be processed with a single while loop that
|
|
|
d72f5af |
calls poptGetNextOpt. This patch also adds code to check for errors
|
|
|
d72f5af |
while processing options. Note that errors encountered while
|
|
|
d72f5af |
processing command-line options are fatal.
|
|
|
d72f5af |
|
|
|
d72f5af |
Signed-off-by: Ryan O'Hara <rohara@redhat.com>
|
|
|
d72f5af |
---
|
|
|
d72f5af |
keepalived/core/main.c | 83 +++++++++--------------------------------------
|
|
|
d72f5af |
1 files changed, 16 insertions(+), 67 deletions(-)
|
|
|
d72f5af |
|
|
|
d72f5af |
diff --git a/keepalived/core/main.c b/keepalived/core/main.c
|
|
|
d72f5af |
index 9445a4c..ef4bbb9 100644
|
|
|
d72f5af |
--- a/keepalived/core/main.c
|
|
|
d72f5af |
+++ b/keepalived/core/main.c
|
|
|
d72f5af |
@@ -200,75 +200,18 @@ parse_cmdline(int argc, char **argv)
|
|
|
d72f5af |
{NULL, 0, 0, NULL, 0}
|
|
|
d72f5af |
};
|
|
|
d72f5af |
|
|
|
d72f5af |
- context =
|
|
|
d72f5af |
- poptGetContext(PROG, argc, (const char **) argv, options_table, 0);
|
|
|
d72f5af |
- if ((c = poptGetNextOpt(context)) < 0) {
|
|
|
d72f5af |
- return;
|
|
|
d72f5af |
- }
|
|
|
d72f5af |
-
|
|
|
d72f5af |
- /* The first option car */
|
|
|
d72f5af |
- switch (c) {
|
|
|
d72f5af |
- case 'v':
|
|
|
d72f5af |
- fprintf(stderr, VERSION_STRING);
|
|
|
d72f5af |
- exit(0);
|
|
|
d72f5af |
- break;
|
|
|
d72f5af |
- case 'h':
|
|
|
d72f5af |
- usage(argv[0]);
|
|
|
d72f5af |
- exit(0);
|
|
|
d72f5af |
- break;
|
|
|
d72f5af |
- case 'l':
|
|
|
d72f5af |
- debug |= 1;
|
|
|
d72f5af |
- break;
|
|
|
d72f5af |
- case 'n':
|
|
|
d72f5af |
- debug |= 2;
|
|
|
d72f5af |
- break;
|
|
|
d72f5af |
- case 'd':
|
|
|
d72f5af |
- debug |= 4;
|
|
|
d72f5af |
- break;
|
|
|
d72f5af |
- case 'V':
|
|
|
d72f5af |
- debug |= 8;
|
|
|
d72f5af |
- break;
|
|
|
d72f5af |
- case 'I':
|
|
|
d72f5af |
- debug |= 16;
|
|
|
d72f5af |
- break;
|
|
|
d72f5af |
- case 'D':
|
|
|
d72f5af |
- debug |= 32;
|
|
|
d72f5af |
- break;
|
|
|
d72f5af |
- case 'R':
|
|
|
d72f5af |
- debug |= 64;
|
|
|
d72f5af |
- break;
|
|
|
d72f5af |
- case 'S':
|
|
|
d72f5af |
- log_facility = LOG_FACILITY[atoi(option_arg)].facility;
|
|
|
d72f5af |
- break;
|
|
|
d72f5af |
- case 'f':
|
|
|
d72f5af |
- conf_file = option_arg;
|
|
|
d72f5af |
- break;
|
|
|
d72f5af |
- case 'P':
|
|
|
d72f5af |
- daemon_mode |= 1;
|
|
|
d72f5af |
- break;
|
|
|
d72f5af |
- case 'C':
|
|
|
d72f5af |
- daemon_mode |= 2;
|
|
|
d72f5af |
- break;
|
|
|
d72f5af |
- case 'p':
|
|
|
d72f5af |
- main_pidfile = option_arg;
|
|
|
d72f5af |
- break;
|
|
|
d72f5af |
- case 'c':
|
|
|
d72f5af |
- checkers_pidfile = option_arg;
|
|
|
d72f5af |
- break;
|
|
|
d72f5af |
- case 'r':
|
|
|
d72f5af |
- vrrp_pidfile = option_arg;
|
|
|
d72f5af |
- break;
|
|
|
d72f5af |
-#ifdef _WITH_SNMP_
|
|
|
d72f5af |
- case 'x':
|
|
|
d72f5af |
- snmp = 1;
|
|
|
d72f5af |
- break;
|
|
|
d72f5af |
-#endif
|
|
|
d72f5af |
- }
|
|
|
d72f5af |
+ context = poptGetContext(PROG, argc, (const char **) argv, options_table, 0);
|
|
|
d72f5af |
|
|
|
d72f5af |
- /* the others */
|
|
|
d72f5af |
- /* fixme: why is this duplicated? */
|
|
|
d72f5af |
while ((c = poptGetNextOpt(context)) >= 0) {
|
|
|
d72f5af |
switch (c) {
|
|
|
d72f5af |
+ case 'v':
|
|
|
d72f5af |
+ fprintf(stderr, VERSION_STRING);
|
|
|
d72f5af |
+ exit(0);
|
|
|
d72f5af |
+ break;
|
|
|
d72f5af |
+ case 'h':
|
|
|
d72f5af |
+ usage(argv[0]);
|
|
|
d72f5af |
+ exit(0);
|
|
|
d72f5af |
+ break;
|
|
|
d72f5af |
case 'l':
|
|
|
d72f5af |
debug |= 1;
|
|
|
d72f5af |
break;
|
|
|
d72f5af |
@@ -319,10 +262,16 @@ parse_cmdline(int argc, char **argv)
|
|
|
d72f5af |
}
|
|
|
d72f5af |
}
|
|
|
d72f5af |
|
|
|
d72f5af |
+ if (c < -1) {
|
|
|
d72f5af |
+ fprintf(stderr, "%s '%s'\n", poptStrerror(c),
|
|
|
d72f5af |
+ poptBadOption(context, POPT_BADOPTION_NOALIAS));
|
|
|
d72f5af |
+ poptFreeContext(context);
|
|
|
d72f5af |
+ exit(1);
|
|
|
d72f5af |
+ }
|
|
|
d72f5af |
+
|
|
|
d72f5af |
/* check unexpected arguments */
|
|
|
d72f5af |
if ((option_arg = (char *) poptGetArg(context))) {
|
|
|
d72f5af |
fprintf(stderr, "unexpected argument %s\n", option_arg);
|
|
|
d72f5af |
- return;
|
|
|
d72f5af |
}
|
|
|
d72f5af |
|
|
|
d72f5af |
/* free the allocated context */
|
|
|
d72f5af |
--
|
|
|
d72f5af |
1.7.1
|
|
|
d72f5af |
|