From: Jason Riedy <ejr@EECS.Berkeley.EDU>
To: git <git@vger.kernel.org>
Subject: [PATCH] Add a compat/strtoumax.c for Solaris 8.
Date: Mon, 19 Feb 2007 16:22:56 -0800 [thread overview]
Message-ID: <17777.1171930976@lotus.CS.Berkeley.EDU> (raw)
Solaris 8 was pre-c99, and they weren't willing to commit to
the strtoumax definition according to /usr/include/inttypes.h.
This adds NO_STRTOUMAX and NO_STRTOULL for ancient systems.
If NO_STRTOUMAX is defined, the routine in compat/strtoumax.c
will be used instead. That routine passes its arguments to
strtoull unless NO_STRTOULL is defined. If NO_STRTOULL, then
the routine uses strtoul (unsigned long).
Signed-off-by: Jason Riedy <ejr@cs.berkeley.edu>
---
I suppose the Sun libc folks were so burnt on the math additions
that they decided not to support *any* potential C99 bits on
Solaris 8. sigh. (Solaris 8 is slated to reach EOL on 2012, so
it'll be around a while.)
This alone won't pass tests on Solaris 8. The next patch fixes
fast-import.c to avoid C99 formats when necessary.
Makefile | 12 ++++++++++++
compat/strtoumax.c | 10 ++++++++++
git-compat-util.h | 5 +++++
3 files changed, 27 insertions(+), 0 deletions(-)
create mode 100644 compat/strtoumax.c
diff --git a/Makefile b/Makefile
index ebecbbd..5ae509f 100644
--- a/Makefile
+++ b/Makefile
@@ -28,6 +28,10 @@ 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
+# strtoull, define NO_STRTOULL.
+#
# Define NO_SETENV if you don't have setenv in the C library.
#
# Define NO_SYMLINK_HEAD if you never want .git/HEAD to be a symbolic link.
@@ -353,6 +357,7 @@ ifeq ($(uname_S),SunOS)
NO_UNSETENV = YesPlease
NO_SETENV = YesPlease
NO_C99_FORMAT = YesPlease
+ NO_STRTOUMAX = YesPlease
endif
ifeq ($(uname_R),5.9)
NO_UNSETENV = YesPlease
@@ -517,6 +522,13 @@ ifdef NO_STRLCPY
COMPAT_CFLAGS += -DNO_STRLCPY
COMPAT_OBJS += compat/strlcpy.o
endif
+ifdef NO_STRTOUMAX
+ COMPAT_CFLAGS += -DNO_STRTOUMAX
+ COMPAT_OBJS += compat/strtoumax.o
+endif
+ifdef NO_STRTOULL
+ COMPAT_CFLAGS += -DNO_STRTOULL
+endif
ifdef NO_SETENV
COMPAT_CFLAGS += -DNO_SETENV
COMPAT_OBJS += compat/setenv.o
diff --git a/compat/strtoumax.c b/compat/strtoumax.c
new file mode 100644
index 0000000..f97bd08
--- /dev/null
+++ b/compat/strtoumax.c
@@ -0,0 +1,10 @@
+#include "../git-compat-util.h"
+
+uintmax_t gitstrtoumax (const char *nptr, char **endptr, int base)
+{
+#if defined(NO_STRTOULL)
+ return strtoul(nptr, endptr, base);
+#else
+ return strtoull(nptr, endptr, base);
+#endif
+}
diff --git a/git-compat-util.h b/git-compat-util.h
index 105ac28..9863cf6 100644
--- a/git-compat-util.h
+++ b/git-compat-util.h
@@ -139,6 +139,11 @@ extern char *gitstrcasestr(const char *haystack, const char *needle);
extern size_t gitstrlcpy(char *, const char *, size_t);
#endif
+#ifdef NO_STRTOUMAX
+#define strtoumax gitstrtoumax
+extern uintmax_t gitstrtoumax(const char *, char **, int);
+#endif
+
extern void release_pack_memory(size_t);
static inline char* xstrdup(const char *str)
--
1.5.0.1.28.g7b18f
next reply other threads:[~2007-02-20 0:26 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-02-20 0:22 Jason Riedy [this message]
2007-02-20 0:35 ` [PATCH] Add a compat/strtoumax.c for Solaris 8 Shawn O. Pearce
2007-02-20 0:53 ` Junio C Hamano
2007-02-20 0:58 ` Shawn O. Pearce
2007-02-20 1:29 ` Junio C Hamano
2007-02-20 2:20 ` Junio C Hamano
2007-02-20 2:51 ` Shawn O. Pearce
2007-02-20 3:00 ` Junio C Hamano
2007-02-20 20:16 ` Jason Riedy
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=17777.1171930976@lotus.CS.Berkeley.EDU \
--to=ejr@eecs.berkeley.edu \
--cc=git@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.