From: Karel Zak Date: Thu, 1 Feb 2018 13:58:52 +0000 (+0100) Subject: include/c: add errexec() X-Git-Tag: v2.32-rc1~36 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=cf654e1c3ec8f6f9ac93bf4f6981d560249868d9;p=thirdparty%2Futil-linux.git 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 --- diff --git a/include/c.h b/include/c.h index b0670dcaad..c8bcb375b2 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) {