From 05fb4c6e274589794f3737059dd640ca932fd505 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Fri, 28 Aug 2026 13:10:00 +0200 Subject: [PATCH] Ignore $SYSTEMD_INVOKED_AS if empty Let's treat unset SYSTEMD_INVOKED_AS and SYSTEMD_INVOKED_AS='' the same. I encountered this when testing various --help outputs. It is often more convenient to override a variable with VAR= instead of removing it, in particular on the commandline. But we'd then print help with the program name missing. We look at the variable in two places, so adjust both as in $subject. --- src/basic/argv-util.c | 2 +- src/shared/verbs.c | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/basic/argv-util.c b/src/basic/argv-util.c index b0381a6096..2796d5c0b6 100644 --- a/src/basic/argv-util.c +++ b/src/basic/argv-util.c @@ -28,7 +28,7 @@ void save_argc_argv(int argc, char **argv) { } bool invoked_as(char *argv[], const char *token) { - const char *progname = secure_getenv("SYSTEMD_INVOKED_AS"); + const char *progname = empty_to_null(secure_getenv("SYSTEMD_INVOKED_AS")); if (!progname && argv) progname = argv[0]; diff --git a/src/shared/verbs.c b/src/shared/verbs.c index 1a1a2d9e59..d152fdb7d9 100644 --- a/src/shared/verbs.c +++ b/src/shared/verbs.c @@ -514,12 +514,12 @@ static const Verb* verbs_find_cmd_verbs(const Verb *cmdverb, const Verb verbs_en } static void help_cmdline(const char *arguments) { - const char *progname = - last_path_component(secure_getenv("SYSTEMD_INVOKED_AS")) - ?: program_invocation_short_name; - assert(arguments); + const char *progname = + empty_to_null(last_path_component(secure_getenv("SYSTEMD_INVOKED_AS"))) + ?: program_invocation_short_name; + printf("%s>%s %s %s\n", ansi_grey(), ansi_normal(),