diff options
author | Ron Yorston | 2017-07-27 13:53:39 +0100 |
---|---|---|
committer | Denys Vlasenko | 2017-07-28 15:39:26 +0200 |
commit | be366e5afac1d9f5b3958bd3899a389308d5d9d3 (patch) | |
tree | 60c41a15eed758d0cee5a637c063fe53eff36046 /include | |
parent | 619d9b5e6848a72350126ea9c1e413fd133181e3 (diff) | |
download | busybox-be366e5afac1d9f5b3958bd3899a389308d5d9d3.zip busybox-be366e5afac1d9f5b3958bd3899a389308d5d9d3.tar.gz |
ash: support platforms that don't have '%m' printf specifier
The '%m' conversion specifier prints an error message based on the
current value of 'errno'. It is available in the GNU C library,
Cygwin (since 2012), uClibc and musl.
It is not available in various BSDs, BSD-derived systems (MacOS,
Android) or Microsoft Windows.
Use a symbol defined in platform.h to control how error messages
can be formatted to display the 'errno' message. On platforms that
support it use '%m'; on other platforms use '%s' and strerror().
On platforms that have '%m' there is essentially no change in the
size of the binary. Otherwise:
function old new delta
redirect 1287 1310 +23
xtcsetpgrp 27 44 +17
dup2_or_raise 34 51 +17
setinputfile 267 275 +8
.rodata 163379 163371 -8
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 4/1 up/down: 65/-8) Total: 57 bytes
Signed-off-by: Ron Yorston <rmy@pobox.com>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Diffstat (limited to 'include')
-rw-r--r-- | include/platform.h | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/include/platform.h b/include/platform.h index ea49c7e..b81c59d 100644 --- a/include/platform.h +++ b/include/platform.h @@ -406,6 +406,7 @@ typedef unsigned smalluint; #define HAVE_MNTENT_H 1 #define HAVE_NET_ETHERNET_H 1 #define HAVE_SYS_STATFS_H 1 +#define HAVE_PRINTF_PERCENTM 1 #if defined(__UCLIBC__) # if UCLIBC_VERSION < KERNEL_VERSION(0, 9, 32) @@ -461,6 +462,7 @@ typedef unsigned smalluint; # undef HAVE_DPRINTF # undef HAVE_UNLOCKED_STDIO # undef HAVE_UNLOCKED_LINE_OPS +# undef HAVE_PRINTF_PERCENTM #endif #if defined(__dietlibc__) @@ -483,6 +485,7 @@ typedef unsigned smalluint; # undef HAVE_STRVERSCMP # undef HAVE_XTABS # undef HAVE_UNLOCKED_LINE_OPS +# undef HAVE_PRINTF_PERCENTM # include <osreldate.h> # if __FreeBSD_version < 1000029 # undef HAVE_STRCHRNUL /* FreeBSD added strchrnul() between 1000028 and 1000029 */ @@ -517,6 +520,7 @@ typedef unsigned smalluint; # undef HAVE_STRVERSCMP # undef HAVE_UNLOCKED_LINE_OPS # undef HAVE_NET_ETHERNET_H +# undef HAVE_PRINTF_PERCENTM #endif /* |