Package: busybox
 Version: v1.25.0.git
 Severity: ?

This patch can fix bug #8626, add the "option -i" to the "logger". I have
        tested this on x86 system and it works. I have tested it against the
        GNU counterparts and the outputs are identical.


diff --git a/sysklogd/logger.c b/sysklogd/logger.c
index b3ca857..58f9374 100644
--- a/sysklogd/logger.c
+++ b/sysklogd/logger.c
@@ -103,10 +103,12 @@ int logger_main(int argc UNUSED_PARAM, char **argv)
        str_t = uid2uname_utoa(geteuid());

        /* Parse any options */
-       opt = getopt32(argv, "p:st:", &str_p, &str_t);
+       opt = getopt32(argv, "p:st:i", &str_p, &str_t);

        if (opt & 0x2) /* -s */
                i |= LOG_PERROR;
+       if (opt & 0x8) /* -i */
+               i |= LOG_PID;
        //if (opt & 0x4) /* -t */
        openlog(str_t, i, 0);
        i = LOG_USER | LOG_NOTICE;





I'm new to opensource development, so I don't know the right way to send you patch. Your contributing guidline say to make small steps, but I also create bigger patch for logger.c inspired by syslogd.c (enable menuconfig option for -i and enable extending prameters). This version tested too.




diff --git a/sysklogd/logger.c b/sysklogd/logger.c
index b3ca857..25b82cc 100644
--- a/sysklogd/logger.c
+++ b/sysklogd/logger.c
@@ -15,6 +15,13 @@
 //config:          messages to the system log (i.e. the 'syslogd' utility) so
 //config:          they can be logged. This is generally used to help locate
 //config:          problems that occur within programs and scripts.
+//config:
+//config:config FEATURE_LOG_PID
+//config:       bool "Log PID of logger"
+//config:       default n
+//config:       depends on LOGGER
+//config:       help
+//config:         This enables logger to log process id (PID).

 //applet:IF_LOGGER(APPLET(logger, BB_DIR_USR_BIN, BB_SUID_DROP))

@@ -24,6 +31,9 @@
 //usage:       "[OPTIONS] [MESSAGE]"
 //usage:#define logger_full_usage "\n\n"
 //usage:       "Write MESSAGE (or stdin) to syslog\n"
+//usage:        IF_FEATURE_LOG_PID(
+//usage:     "\n  -i      Log the process ID too"
+//usage:        )
 //usage:     "\n  -s      Log to stderr as well as the system log"
 //usage:     "\n  -t TAG  Log using the specified tag (defaults to user name)"
 //usage:     "\n  -p PRIO Priority (numeric or facility.level pair)"
@@ -39,6 +49,23 @@
 #include <syslog.h>
 */

+/* Options */
+enum {
+        OPTBIT_priority = 0, // -p
+        OPTBIT_stderr, // -s
+        OPTBIT_tag, // -t
+        IF_FEATURE_LOG_PID(OPTBIT_pid   ,)  // -i
+
+        OPT_priority    = 1 << OPTBIT_priority   ,
+        OPT_stderr      = 1 << OPTBIT_stderr     ,
+        OPT_tag         = 1 << OPTBIT_tag        ,
+        OPT_pid         = IF_FEATURE_LOG_PID((1 << OPTBIT_pid   )) + 0,
+};
+#define OPTION_STR "p:st:" \
+        IF_FEATURE_LOG_PID("i:" )
+#define OPTION_DECL *str_p, *str_t
+#define OPTION_PARAM &str_p, &str_t
+
 /* Decode a symbolic name to a numeric value
  * this function is based on code
  * Copyright (c) 1983, 1993
@@ -95,7 +122,7 @@ static int pencode(char *s)
 int logger_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
 int logger_main(int argc UNUSED_PARAM, char **argv)
 {
-       char *str_p, *str_t;
+       char OPTION_DECL;
        int opt;
        int i = 0;

@@ -103,14 +130,19 @@ int logger_main(int argc UNUSED_PARAM, char **argv)
        str_t = uid2uname_utoa(geteuid());

        /* Parse any options */
-       opt = getopt32(argv, "p:st:", &str_p, &str_t);
+       opt = getopt32(argv, OPTION_STR, OPTION_PARAM);
+getopt32(argv, "p:st:i", &str_p, &str_t);

-       if (opt & 0x2) /* -s */
+       if (opt & OPT_stderr) /* -s */
                i |= LOG_PERROR;
-       //if (opt & 0x4) /* -t */
+#if ENABLE_FEATURE_LOG_PID
+       if (opt & OPT_pid) /* -i */
+               i |= LOG_PID;
+#endif
+       //if (opt & OPT_tag) /* -t */
        openlog(str_t, i, 0);
        i = LOG_USER | LOG_NOTICE;
-       if (opt & 0x1) /* -p */
+       if (opt & OPT_priority) /* -p */
                i = pencode(str_p);

        argv += optind;



_______________________________________________
busybox mailing list
[email protected]
http://lists.busybox.net/mailman/listinfo/busybox

Reply via email to