diff options
author | Sami Kerola | 2015-02-20 20:42:34 +0100 |
---|---|---|
committer | Karel Zak | 2015-03-05 10:31:18 +0100 |
commit | 3f51c10b39920bd22a2760bd57cb5a5703b0ec2c (patch) | |
tree | a51de75050abde97cff38f5b1b9615b8d88517e2 /misc-utils/logger.c | |
parent | tailf: ensure file argument really is a file (diff) | |
download | kernel-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.c | 13 |
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; |