]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
main-func: send main exit code to parent via sd_notify() on exit 14218/head
authorLennart Poettering <lennart@poettering.net>
Fri, 17 May 2019 08:17:06 +0000 (10:17 +0200)
committerLennart Poettering <lennart@poettering.net>
Wed, 4 Dec 2019 09:59:59 +0000 (10:59 +0100)
So far we silently convert negative return values from run() as
EXIT_FAILURE, which is how UNIX expects it. In many cases it would be
very useful for the caller to retrieve the actual error number we exit
with. Let's generically return that via sd_notify()'s ERRNO= attribute.
This means callers can set $NOTIFY_SOCKET and get the actual error
number delivered at their doorstep just like that.

src/shared/main-func.h

index 6c26cb9fb5673d62eac07cbdbe20216288ca6b04..cf23ad450c5ceb49b66fa9efd14604e77f4483b6 100644 (file)
@@ -3,6 +3,8 @@
 
 #include <stdlib.h>
 
+#include "sd-daemon.h"
+
 #include "pager.h"
 #include "selinux-util.h"
 #include "spawn-ask-password-agent.h"
@@ -16,6 +18,8 @@
                 save_argc_argv(argc, argv);                             \
                 intro;                                                  \
                 r = impl;                                               \
+                if (r < 0)                                              \
+                        (void) sd_notifyf(0, "ERRNO=%i", -r);           \
                 ask_password_agent_close();                             \
                 polkit_agent_close();                                   \
                 pager_close();                                          \