From 52051dd84c45c745ca877d8893be6f71aa27bf97 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Mon, 25 Apr 2016 11:57:56 +0200 Subject: [PATCH] journalctl: turn --unit= in combination with --user into --user-unit= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Let's be nice to users, and let's turn the nonsensical "--unit=… --user" into "--user-unit=…" which the user more likely meant. Fixes #1621 --- src/journal/journalctl.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/journal/journalctl.c b/src/journal/journalctl.c index ae62170ae59f0..6de3489e1238e 100644 --- a/src/journal/journalctl.c +++ b/src/journal/journalctl.c @@ -873,6 +873,18 @@ static int parse_argv(int argc, char *argv[]) { return -EINVAL; } + if (!strv_isempty(arg_system_units) && (arg_journal_type == SD_JOURNAL_CURRENT_USER)) { + + /* Specifying --user and --unit= at the same time makes no sense (as the former excludes the user + * journal, but the latter excludes the system journal, thus resulting in empty output). Let's be nice + * to users, and automatically turn --unit= into --user-unit= if combined with --user. */ + r = strv_extend_strv(&arg_user_units, arg_system_units, true); + if (r < 0) + return -ENOMEM; + + arg_system_units = strv_free(arg_system_units); + } + return 1; }