diff options
Diffstat (limited to 'sysklogd')
-rw-r--r-- | sysklogd/logger.c | 55 |
1 files changed, 17 insertions, 38 deletions
diff --git a/sysklogd/logger.c b/sysklogd/logger.c index f5c776ddf..21906401f 100644 --- a/sysklogd/logger.c +++ b/sysklogd/logger.c @@ -101,68 +101,47 @@ extern int logger_main(int argc, char **argv) { int pri = LOG_USER | LOG_NOTICE; int option = 0; - int fromStdinFlag = FALSE; - int stopLookingAtMeLikeThat = FALSE; + int c, i, len, opt; char *message=NULL, buf[1024], name[128]; - /* Fill out the name string early (may be overwritten later */ + /* Fill out the name string early (may be overwritten later) */ my_getpwuid(name, geteuid()); /* Parse any options */ - while (--argc > 0 && **(++argv) == '-') { - if (*((*argv) + 1) == '\0') { - fromStdinFlag = TRUE; - } - stopLookingAtMeLikeThat = FALSE; - while (*(++(*argv)) && stopLookingAtMeLikeThat == FALSE) { - switch (**argv) { + while ((opt = getopt(argc, argv, "p:st:")) > 0) { + switch (opt) { case 's': option |= LOG_PERROR; break; case 'p': - if (--argc == 0) { - usage(logger_usage); - } - pri = pencode(*(++argv)); - stopLookingAtMeLikeThat = TRUE; + pri = pencode(optarg); break; case 't': - if (--argc == 0) { - usage(logger_usage); - } - strncpy(name, *(++argv), sizeof(name)); - stopLookingAtMeLikeThat = TRUE; + strncpy(name, optarg, sizeof(name)); break; default: usage(logger_usage); - } } } - if (fromStdinFlag == TRUE) { + if (optind == argc) { /* read from stdin */ - int c; - unsigned int i = 0; - + i = 0; while ((c = getc(stdin)) != EOF && i < sizeof(buf)) { buf[i++] = c; } message = buf; } else { - if (argc >= 1) { - int len = 1; /* for the '\0' */ - message=xcalloc(1, 1); - for (; *argv != NULL; argv++) { - len += strlen(*argv); - len += 1; /* for the space between the args */ - message = xrealloc(message, len); - strcat(message, *argv); - strcat(message, " "); - } - message[strlen(message)-1] = '\0'; - } else { - error_msg_and_die("No message\n"); + len = 1; /* for the '\0' */ + message=xcalloc(1, 1); + for (i = optind; i < argc; i++) { + len += strlen(argv[i]); + len += 1; /* for the space between the args */ + message = xrealloc(message, len); + strcat(message, argv[i]); + strcat(message, " "); } + message[strlen(message)-1] = '\0'; } openlog(name, option, (pri | LOG_FACMASK)); |