From 1944f547bdb9bd2615acf284366c924fd180f53c Mon Sep 17 00:00:00 2001 From: Matt Kraai Date: Tue, 2 Jan 2001 18:13:58 +0000 Subject: [PATCH] Log stdin when no message given and use getopt. --- applets/usage.c | 2 +- logger.c | 55 +++++++++++++++-------------------------------- sysklogd/logger.c | 55 +++++++++++++++-------------------------------- usage.c | 2 +- 4 files changed, 36 insertions(+), 78 deletions(-) diff --git a/applets/usage.c b/applets/usage.c index c7bc0e8a9..b904e0c7c 100644 --- a/applets/usage.c +++ b/applets/usage.c @@ -586,7 +586,7 @@ const char loadkmap_usage[] = const char logger_usage[] = "logger [OPTION]... [MESSAGE]\n" #ifndef BB_FEATURE_TRIVIAL_HELP - "\nWrite MESSAGE to the system log. If MESSAGE is '-', log stdin.\n\n" + "\nWrite MESSAGE to the system log. If MESSAGE is omitted, log stdin.\n\n" "Options:\n" "\t-s\tLog to stderr as well as the system log.\n" "\t-t\tLog using the specified tag (defaults to user name).\n" diff --git a/logger.c b/logger.c index f5c776ddf..21906401f 100644 --- a/logger.c +++ b/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)); 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)); diff --git a/usage.c b/usage.c index c7bc0e8a9..b904e0c7c 100644 --- a/usage.c +++ b/usage.c @@ -586,7 +586,7 @@ const char loadkmap_usage[] = const char logger_usage[] = "logger [OPTION]... [MESSAGE]\n" #ifndef BB_FEATURE_TRIVIAL_HELP - "\nWrite MESSAGE to the system log. If MESSAGE is '-', log stdin.\n\n" + "\nWrite MESSAGE to the system log. If MESSAGE is omitted, log stdin.\n\n" "Options:\n" "\t-s\tLog to stderr as well as the system log.\n" "\t-t\tLog using the specified tag (defaults to user name).\n" -- 2.25.1