summaryrefslogtreecommitdiffstats
path: root/misc-utils/logger.c
diff options
context:
space:
mode:
authorSami Kerola2015-02-20 20:42:34 +0100
committerKarel Zak2015-03-05 10:31:18 +0100
commit3f51c10b39920bd22a2760bd57cb5a5703b0ec2c (patch)
treea51de75050abde97cff38f5b1b9615b8d88517e2 /misc-utils/logger.c
parenttailf: ensure file argument really is a file (diff)
downloadkernel-qcow2-util-linux-3f51c10b39920bd22a2760bd57cb5a5703b0ec2c.tar.gz
kernel-qcow2-util-linux-3f51c10b39920bd22a2760bd57cb5a5703b0ec2c.tar.xz
kernel-qcow2-util-linux-3f51c10b39920bd22a2760bd57cb5a5703b0ec2c.zip
logger: fix -i argument parsing regression
With earlier logger it's possible to combine the option -i with other options, such as -s. But currently: $:~> logger -is logger: failed to parse id: 's' The changed behaviour breaks existing scripts like dhcpcd-run-hooks from dhcpcd. Broken-since: aab5b44405b9a6ada92e419e5a84cc0d1d4afee9 Reference: http://comments.gmane.org/gmane.linux.utilities.util-linux-ng/9683 Reported-by: Juergen Daubert <jue@jue.li> Reviewed-by: Benno Schulenberg <bensberg@justemail.net> Signed-off-by: Sami Kerola <kerolasa@iki.fi>
Diffstat (limited to 'misc-utils/logger.c')
-rw-r--r--misc-utils/logger.c13
1 files changed, 9 insertions, 4 deletions
diff --git a/misc-utils/logger.c b/misc-utils/logger.c
index db6fd448a..0604e6109 100644
--- a/misc-utils/logger.c
+++ b/misc-utils/logger.c
@@ -89,7 +89,8 @@ enum {
OPT_JOURNALD,
OPT_RFC3164,
OPT_RFC5424,
- OPT_SOCKET_ERRORS
+ OPT_SOCKET_ERRORS,
+ OPT_ID
};
struct logger_ctl {
@@ -548,7 +549,8 @@ static void __attribute__ ((__noreturn__)) usage(FILE *out)
fputs(_("Enter messages into the system log.\n"), out);
fputs(USAGE_OPTIONS, out);
- fputs(_(" -i, --id[=<id>] log <id> (default is PID)\n"), out);
+ fputs(_(" -i log the logger command's PID\n"), out);
+ fputs(_(" --id[=<id>] log the given <id>, or otherwise the PID\n"), out);
fputs(_(" -f, --file <file> log the contents of this file\n"), out);
fputs(_(" -p, --priority <prio> mark given message with this priority\n"), out);
fputs(_(" --prio-prefix look for a prefix on every line read from stdin\n"), out);
@@ -606,7 +608,7 @@ int main(int argc, char **argv)
FILE *jfd = NULL;
#endif
static const struct option longopts[] = {
- { "id", optional_argument, 0, 'i' },
+ { "id", optional_argument, 0, OPT_ID },
{ "stderr", no_argument, 0, 's' },
{ "file", required_argument, 0, 'f' },
{ "priority", required_argument, 0, 'p' },
@@ -633,7 +635,7 @@ int main(int argc, char **argv)
textdomain(PACKAGE);
atexit(close_stdout);
- while ((ch = getopt_long(argc, argv, "f:i::p:st:u:dTn:P:Vh",
+ while ((ch = getopt_long(argc, argv, "f:ip:st:u:dTn:P:Vh",
longopts, NULL)) != -1) {
switch (ch) {
case 'f': /* file to log */
@@ -642,6 +644,9 @@ int main(int argc, char **argv)
stdout_reopened = 1;
break;
case 'i': /* log process id also */
+ ctl.pid = getpid();
+ break;
+ case OPT_ID:
if (optarg) {
const char *p = optarg;