aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJunio C Hamano <junkio@cox.net>2006-01-19 17:13:57 -0800
committerJunio C Hamano <junkio@cox.net>2006-01-21 19:33:22 -0800
commit63be37b06fa873348c3de0becea201796bc88610 (patch)
tree59ee28700b7e7ae994717408e543a9f98fb9802f
parent35a730f01c6caba93d452fa938e7d93ffcc4cf25 (diff)
downloadgit-63be37b06fa873348c3de0becea201796bc88610.tar.gz
git-63be37b06fa873348c3de0becea201796bc88610.tar.xz
DT_UNKNOWN: do not fully trust existence of DT_UNKNOWN
The recent Cygwin defines DT_UNKNOWN although it does not have d_type in struct dirent. Give an option to tell us not to use d_type on such platforms. Hopefully this problem will be transient. Signed-off-by: Junio C Hamano <junkio@cox.net>
-rw-r--r--Makefile7
-rw-r--r--cache.h2
2 files changed, 8 insertions, 1 deletions
diff --git a/Makefile b/Makefile
index 334fe4ec4..304605602 100644
--- a/Makefile
+++ b/Makefile
@@ -21,6 +21,9 @@ all:
#
# Define NO_D_INO_IN_DIRENT if you don't have d_ino in your struct dirent.
#
+# Define NO_D_TYPE_IN_DIRENT if your platform defines DT_UNKNOWN but lacks
+# d_type in struct dirent (latest Cygwin -- will be fixed soonish).
+#
# Define NO_STRCASESTR if you don't have strcasestr.
#
# Define NO_SETENV if you don't have setenv in the C library.
@@ -236,6 +239,7 @@ ifeq ($(uname_S),SunOS)
ALL_CFLAGS += -D__EXTENSIONS__
endif
ifeq ($(uname_O),Cygwin)
+ NO_D_TYPE_IN_DIRENT = YesPlease
NO_D_INO_IN_DIRENT = YesPlease
NO_STRCASESTR = YesPlease
NEEDS_LIBICONV = YesPlease
@@ -337,6 +341,9 @@ ifdef NEEDS_NSL
LIBS += -lnsl
SIMPLE_LIB += -lnsl
endif
+ifdef NO_D_TYPE_IN_DIRENT
+ ALL_CFLAGS += -DNO_D_TYPE_IN_DIRENT
+endif
ifdef NO_D_INO_IN_DIRENT
ALL_CFLAGS += -DNO_D_INO_IN_DIRENT
endif
diff --git a/cache.h b/cache.h
index 29c9e819d..3d79c55a2 100644
--- a/cache.h
+++ b/cache.h
@@ -10,7 +10,7 @@
#define deflateBound(c,s) ((s) + (((s) + 7) >> 3) + (((s) + 63) >> 6) + 11)
#endif
-#ifdef DT_UNKNOWN
+#if defined(DT_UNKNOWN) && !NO_D_TYPE_IN_DIRENT
#define DTYPE(de) ((de)->d_type)
#else
#define DT_UNKNOWN 0