summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorEric Andersen <andersen@codepoet.org>2000-12-11 16:48:50 +0000
committerEric Andersen <andersen@codepoet.org>2000-12-11 16:48:50 +0000
commit394cf226682925384f24c6d0814df80f0be82bd0 (patch)
tree2644b0068e7355558bfc1f38f445d2a3cadb4292
parentcf7982e908f98e1ab7e90ffb039ed5968589ae24 (diff)
Fix the option parsing to use getopt, which seems to fix bug #1050
-rw-r--r--sysklogd/syslogd.c44
-rw-r--r--syslogd.c44
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, '.'))) {
diff --git a/syslogd.c b/syslogd.c
index 9e174e6e8..2d5e52f25 100644
--- a/syslogd.c
+++ b/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, '.'))) {