diff options
author | Eric Andersen <andersen@codepoet.org> | 2000-12-11 16:48:50 +0000 |
---|---|---|
committer | Eric Andersen <andersen@codepoet.org> | 2000-12-11 16:48:50 +0000 |
commit | 394cf226682925384f24c6d0814df80f0be82bd0 (patch) | |
tree | 2644b0068e7355558bfc1f38f445d2a3cadb4292 | |
parent | cf7982e908f98e1ab7e90ffb039ed5968589ae24 (diff) |
Fix the option parsing to use getopt, which seems to fix bug #1050
-rw-r--r-- | sysklogd/syslogd.c | 44 | ||||
-rw-r--r-- | syslogd.c | 44 |
2 files changed, 26 insertions, 62 deletions
diff --git a/sysklogd/syslogd.c b/sysklogd/syslogd.c index 9e174e6e8..2d5e52f25 100644 --- a/sysklogd/syslogd.c +++ b/sysklogd/syslogd.c @@ -478,25 +478,19 @@ static void daemon_init (char **argv, char *dz, void fn (void)) extern int syslogd_main(int argc, char **argv) { - int pid, klogd_pid; + int opt, pid, klogd_pid; int doFork = TRUE; #ifdef BB_FEATURE_KLOGD int startKlogd = TRUE; #endif - int stopDoingThat = FALSE; char *p; - char **argv1 = argv; - while (--argc > 0 && **(++argv1) == '-') { - stopDoingThat = FALSE; - while (stopDoingThat == FALSE && *(++(*argv1))) { - switch (**argv1) { + /* do normal option parsing */ + while ((opt = getopt(argc, argv, "m:nKO:R:L")) > 0) { + switch (opt) { case 'm': - if (--argc == 0) { - usage(syslogd_usage); - } - MarkInterval = atoi(*(++argv1)) * 60; + MarkInterval = atoi(optarg) * 60; break; case 'n': doFork = FALSE; @@ -507,38 +501,26 @@ extern int syslogd_main(int argc, char **argv) break; #endif case 'O': - if (--argc == 0) { - usage(syslogd_usage); - } - logFilePath = *(++argv1); - stopDoingThat = TRUE; + logFilePath = strdup(optarg); break; #ifdef BB_FEATURE_REMOTE_LOG case 'R': - if (--argc == 0) { - usage(syslogd_usage); - } - RemoteHost = *(++argv1); - if ( (p = strchr(RemoteHost, ':'))){ - RemotePort = atoi(p+1); - *p = '\0'; - } - doRemoteLog = TRUE; - stopDoingThat = TRUE; - break; + RemoteHost = strdup(optarg); + if ( (p = strchr(RemoteHost, ':'))){ + RemotePort = atoi(p+1); + *p = '\0'; + } + doRemoteLog = TRUE; + break; case 'L': local_logging = TRUE; break; #endif default: usage(syslogd_usage); - } } } - if (argc > 0) - usage(syslogd_usage); - /* Store away localhost's name before the fork */ gethostname(LocalHostName, sizeof(LocalHostName)); if ((p = strchr(LocalHostName, '.'))) { @@ -478,25 +478,19 @@ static void daemon_init (char **argv, char *dz, void fn (void)) extern int syslogd_main(int argc, char **argv) { - int pid, klogd_pid; + int opt, pid, klogd_pid; int doFork = TRUE; #ifdef BB_FEATURE_KLOGD int startKlogd = TRUE; #endif - int stopDoingThat = FALSE; char *p; - char **argv1 = argv; - while (--argc > 0 && **(++argv1) == '-') { - stopDoingThat = FALSE; - while (stopDoingThat == FALSE && *(++(*argv1))) { - switch (**argv1) { + /* do normal option parsing */ + while ((opt = getopt(argc, argv, "m:nKO:R:L")) > 0) { + switch (opt) { case 'm': - if (--argc == 0) { - usage(syslogd_usage); - } - MarkInterval = atoi(*(++argv1)) * 60; + MarkInterval = atoi(optarg) * 60; break; case 'n': doFork = FALSE; @@ -507,38 +501,26 @@ extern int syslogd_main(int argc, char **argv) break; #endif case 'O': - if (--argc == 0) { - usage(syslogd_usage); - } - logFilePath = *(++argv1); - stopDoingThat = TRUE; + logFilePath = strdup(optarg); break; #ifdef BB_FEATURE_REMOTE_LOG case 'R': - if (--argc == 0) { - usage(syslogd_usage); - } - RemoteHost = *(++argv1); - if ( (p = strchr(RemoteHost, ':'))){ - RemotePort = atoi(p+1); - *p = '\0'; - } - doRemoteLog = TRUE; - stopDoingThat = TRUE; - break; + RemoteHost = strdup(optarg); + if ( (p = strchr(RemoteHost, ':'))){ + RemotePort = atoi(p+1); + *p = '\0'; + } + doRemoteLog = TRUE; + break; case 'L': local_logging = TRUE; break; #endif default: usage(syslogd_usage); - } } } - if (argc > 0) - usage(syslogd_usage); - /* Store away localhost's name before the fork */ gethostname(LocalHostName, sizeof(LocalHostName)); if ((p = strchr(LocalHostName, '.'))) { |