The new errexec() macro consolidate and unify the way how util-linux
tools react to failed exec()-like functions:
* exit code 126 when program located, but not usable
* exit code 127 when could not find program to exec
The exit codes are compatible with coreutils.
Note that all the change is located in c.h; the file exitcodes.h
contains API specific (mkfs, fsck, ...) codes only.
Addresses: https://github.com/karelzak/util-linux/pull/311
Signed-off-by: Karel Zak <kzak@redhat.com>
exit(eval); \
})
+/* After failed execvp() */
+#define EX_EXEC_FAILED 126 /* Program located, but not usable. */
+#define EX_EXEC_ENOENT 127 /* Could not find program to exec. */
+#define errexec(name) err(errno == ENOENT ? EX_EXEC_ENOENT : EX_EXEC_FAILED, \
+ _("failed to execute %s"), name)
+
static inline __attribute__((const)) int is_power_of_2(unsigned long num)
{