From cf654e1c3ec8f6f9ac93bf4f6981d560249868d9 Mon Sep 17 00:00:00 2001 From: Karel Zak Date: Thu, 1 Feb 2018 14:58:52 +0100 Subject: include/c: add errexec() 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 --- include/c.h | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'include') diff --git a/include/c.h b/include/c.h index b0670dcaa..c8bcb375b 100644 --- a/include/c.h +++ b/include/c.h @@ -216,6 +216,12 @@ errmsg(char doexit, int excode, char adderr, const char *fmt, ...) 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) { -- cgit v1.2.3-55-g7522