diff options
author | Nick Alcock <nix@esperi.org.uk> | 2011-11-02 15:46:22 +0000 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2011-11-02 13:06:30 -0700 |
commit | e3eed7f8d238e895922851315447f5df9c475f11 (patch) | |
tree | 23a236f94d6d13c52fc022530702db0696463d2f | |
parent | f696543dad6c7ba27b0c4fab167a5687263a9ba0 (diff) | |
download | git-e3eed7f8d238e895922851315447f5df9c475f11.tar.gz git-e3eed7f8d238e895922851315447f5df9c475f11.tar.xz |
Add strtoimax() compatibility function.
Since systems that omit strtoumax() will likely omit strtomax() too, and
likewise for strtoull() and strtoll(), we arrange for the make variables
NO_STRTOUMAX and NO_STRTOULL to cover both the signed and unsigned
functions, and define compatibility implementations for them.
Signed-off-by: Nick Alcock <nix@esperi.org.uk>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rw-r--r-- | Makefile | 6 | ||||
-rw-r--r-- | compat/strtoimax.c | 10 |
2 files changed, 13 insertions, 3 deletions
@@ -57,8 +57,8 @@ all:: # # Define NO_STRLCPY if you don't have strlcpy. # -# Define NO_STRTOUMAX if you don't have strtoumax in the C library. -# If your compiler also does not support long long or does not have +# Define NO_STRTOUMAX if you don't have both strtoimax and strtoumax in the +# C library. If your compiler also does not support long long or does not have # strtoull, define NO_STRTOULL. # # Define NO_SETENV if you don't have setenv in the C library. @@ -1402,7 +1402,7 @@ ifdef NO_STRLCPY endif ifdef NO_STRTOUMAX COMPAT_CFLAGS += -DNO_STRTOUMAX - COMPAT_OBJS += compat/strtoumax.o + COMPAT_OBJS += compat/strtoumax.o compat/strtoimax.o endif ifdef NO_STRTOULL COMPAT_CFLAGS += -DNO_STRTOULL diff --git a/compat/strtoimax.c b/compat/strtoimax.c new file mode 100644 index 000000000..ac09ed89e --- /dev/null +++ b/compat/strtoimax.c @@ -0,0 +1,10 @@ +#include "../git-compat-util.h" + +intmax_t gitstrtoimax (const char *nptr, char **endptr, int base) +{ +#if defined(NO_STRTOULL) + return strtol(nptr, endptr, base); +#else + return strtoll(nptr, endptr, base); +#endif +} |