diff options
Diffstat (limited to 'coreutils/printf.c')
-rw-r--r-- | coreutils/printf.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/coreutils/printf.c b/coreutils/printf.c index 0b004eaeb..2beea7189 100644 --- a/coreutils/printf.c +++ b/coreutils/printf.c | |||
@@ -78,6 +78,14 @@ static int multiconvert(const char *arg, void *result, converter convert) | |||
78 | static void FAST_FUNC conv_strtoull(const char *arg, void *result) | 78 | static void FAST_FUNC conv_strtoull(const char *arg, void *result) |
79 | { | 79 | { |
80 | *(unsigned long long*)result = bb_strtoull(arg, NULL, 0); | 80 | *(unsigned long long*)result = bb_strtoull(arg, NULL, 0); |
81 | /* both coreutils 6.10 and bash 3.2: | ||
82 | * $ printf '%x\n' -2 | ||
83 | * fffffffffffffffe | ||
84 | * Mimic that: | ||
85 | */ | ||
86 | if (errno) { | ||
87 | *(unsigned long long*)result = bb_strtoll(arg, NULL, 0); | ||
88 | } | ||
81 | } | 89 | } |
82 | static void FAST_FUNC conv_strtoll(const char *arg, void *result) | 90 | static void FAST_FUNC conv_strtoll(const char *arg, void *result) |
83 | { | 91 | { |