summaryrefslogtreecommitdiff
path: root/git-compat-util.h
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2007-11-20 20:08:06 (GMT)
committerJunio C Hamano <gitster@pobox.com>2007-11-20 23:03:56 (GMT)
commit8e9739914972419baad820e76b44d9720ed885c2 (patch)
treed8d49bb78c146467a202f63a8c681fba7fa1884a /git-compat-util.h
parent137a0d0ef568f0a2468c8c7f053ef113e295842f (diff)
downloadgit-8e9739914972419baad820e76b44d9720ed885c2.zip
git-8e9739914972419baad820e76b44d9720ed885c2.tar.gz
git-8e9739914972419baad820e76b44d9720ed885c2.tar.bz2
git-compat-util.h: auto-adjust to compiler support of FLEX_ARRAY a bit better
When declaring a structure with a flexible array member, instead of defaulting to the c99 syntax for non-gnu compilers (which burned people with older compilers), default to the traditional and more portable "member[1]; /* more */" syntax. At the same time, other c99 compilers should be able to take advantage of the modern syntax to flexible array members without being gcc. Check __STDC_VERSION__ for that. Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'git-compat-util.h')
-rw-r--r--git-compat-util.h22
1 files changed, 18 insertions, 4 deletions
diff --git a/git-compat-util.h b/git-compat-util.h
index 276a437..86c8962 100644
--- a/git-compat-util.h
+++ b/git-compat-util.h
@@ -4,10 +4,24 @@
#define _FILE_OFFSET_BITS 64
#ifndef FLEX_ARRAY
-#if defined(__GNUC__) && (__GNUC__ < 3)
-#define FLEX_ARRAY 0
-#else
-#define FLEX_ARRAY /* empty */
+/*
+ * See if our compiler is known to support flexible array members.
+ */
+#if defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)
+# define FLEX_ARRAY /* empty */
+#elif defined(__GNUC__)
+# if (__GNUC__ >= 3)
+# define FLEX_ARRAY /* empty */
+# else
+# define FLEX_ARRAY 0 /* older GNU extension */
+# endif
+#endif
+
+/*
+ * Otherwise, default to safer but a bit wasteful traditional style
+ */
+#ifndef FLEX_ARRAY
+# define FLEX_ARRAY 1
#endif
#endif