X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=logger.c;h=b8aae3d28d9b0bf518c3dc492db3e98954f8dca0;hb=3a6da8c183142a2681a2382b63e970f457cf807b;hp=1c454e5af8594ed70bb9b892be482ad4cbd5f3d5;hpb=9cff4fbac91bdd63acbed23b732d76c56177ca62;p=oweals%2Fbusybox.git diff --git a/logger.c b/logger.c index 1c454e5af..b8aae3d28 100644 --- a/logger.c +++ b/logger.c @@ -2,7 +2,7 @@ /* * Mini logger implementation for busybox * - * Copyright (C) 1999,2000 by Lineo, inc. + * Copyright (C) 1999,2000,2001 by Lineo, inc. * Written by Erik Andersen , * * This program is free software; you can redistribute it and/or modify @@ -21,13 +21,15 @@ * */ -#include "busybox.h" #include #include #include #include #include +#include +#include +#include "busybox.h" #if !defined BB_SYSLOGD #define SYSLOG_NAMES @@ -35,9 +37,10 @@ #else /* We have to do this since the header file defines static - * structues. Argh.... bad libc, bad, bad... + * structures. Argh.... bad libc, bad, bad... */ #include + typedef struct _code { char *c_name; int c_val; @@ -85,14 +88,14 @@ static int pencode(char *s) *s = '\0'; fac = decode(save, facilitynames); if (fac < 0) - error_msg_and_die("unknown facility name: %s\n", save); + error_msg_and_die("unknown facility name: %s", save); *s++ = '.'; } else { s = save; } lev = decode(s, prioritynames); if (lev < 0) - error_msg_and_die("unknown priority name: %s\n", save); + error_msg_and_die("unknown priority name: %s", save); return ((lev & LOG_PRIMASK) | (fac & LOG_FACMASK)); } @@ -101,73 +104,54 @@ 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); - } + show_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; } + buf[i++] = '\0'; message = buf; } else { - if (argc >= 1) { - int len = 1; /* for the '\0' */ - 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)); + /*openlog(name, option, (pri | LOG_FACMASK)); syslog(pri, "%s", message); - closelog(); - + closelog();*/ + syslog_msg_with_name(name,(pri | LOG_FACMASK),pri,message); return EXIT_SUCCESS; }