For reasons unknown, cygwin decided to use our sockaddr_storage. As it is redefined to sockaddr_in it'd cause compilation errors in cygwin headers. Fixed by first patch, which uses a more git-related name (can we claim rights for the symbol, being first to use it? :-)
For the other, probably unrelated, reasons, they decided to leave declarations of DT_* macros in dirent.h without providing dirent->d_type. This is what NO_DTYPE in the 0002-patch is all about.
And on top of that, they removed dirent->d_ino (or probably replaced it by __ino32, if at all). BTW, can we somehow avoid using d_ino? It is referenced only in fsck-objects.c Anyway, to workaround this I put
COMPAT_CFLAGS += -Dd_ino=__ino32
It helps, but surely is not the solution.
P.S. For all you poor souls on Win2k, my config.mak contains:
NO_MMAP = YesPlease NO_DTYPE = YesPlease COMPAT_CFLAGS += -Dd_ino=__ino32
Just to make it work (at least it's enough for me, even the tests run...)
>From nobody Mon Sep 17 00:00:00 2001
From: Alex Riesen <raa.lkml@gmail.com> Date: Wed Jan 18 14:02:54 2006 +0100 Subject: fix compilation of sockaddr_storage
---
Makefile | 2 +- daemon.c | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-)
59379c380a6c2829c5614aadd4a5492abb8d14c8
diff --git a/Makefile b/Makefile index f6d9e0a..5782e2a 100644 --- a/Makefile +++ b/Makefile @@ -342,7 +342,7 @@ ifdef NO_MMAP COMPAT_OBJS += compat/mmap.o endif ifdef NO_IPV6 - ALL_CFLAGS += -DNO_IPV6 -Dsockaddr_storage=sockaddr_in + ALL_CFLAGS += -DNO_IPV6 -Dsockaddr_stg_git=sockaddr_in endif ifdef PPC_SHA1 diff --git a/daemon.c b/daemon.c index bb014fa..b424e5e 100644 --- a/daemon.c +++ b/daemon.c @@ -277,7 +277,7 @@ static unsigned int children_deleted = 0 static struct child { pid_t pid; int addrlen; - struct sockaddr_storage address; + struct sockaddr_stg_git address; } live_child[MAX_CHILDREN]; static void add_child(int idx, pid_t pid, struct sockaddr *addr, int addrlen) @@ -578,7 +578,7 @@ static int service_loop(int socknum, int for (i = 0; i < socknum; i++) { if (pfd[i].revents & POLLIN) { - struct sockaddr_storage ss; + struct sockaddr_stg_git ss; unsigned int sslen = sizeof(ss); int incoming = accept(pfd[i].fd, (struct sockaddr *)&ss, &sslen); if (incoming < 0) {
-- 1.1.2-ge577 >From nobody Mon Sep 17 00:00:00 2001 From: Alex Riesen <raa.lkml@gmail.com> Date: Wed Jan 18 14:04:34 2006 +0100 Subject: fix compilation of dirent->d_type --- Makefile | 3 +++ cache.h | 10 +++++++++- 2 files changed, 12 insertions(+), 1 deletions(-) 5232f9128ad9d10368525fe709954acc2d6f49b3 diff --git a/Makefile b/Makefile index 5782e2a..c3bae0f 100644 --- a/Makefile +++ b/Makefile @@ -329,6 +329,9 @@ ifdef NEEDS_NSL LIBS += -lnsl SIMPLE_LIB += -lnsl endif +ifdef NO_DTYPE + COMPAT_CFLAGS += -DNO_DTYPE +endif ifdef NO_STRCASESTR COMPAT_CFLAGS += -DNO_STRCASESTR COMPAT_OBJS += compat/strcasestr.o diff --git a/cache.h b/cache.h index 29c9e81..3846fb9 100644 --- a/cache.h +++ b/cache.h @@ -10,13 +10,21 @@ #define deflateBound(c,s) ((s) + (((s) + 7) >> 3) + (((s) + 63) >> 6) + 11) #endif -#ifdef DT_UNKNOWN +#ifndef NO_DTYPE #define DTYPE(de) ((de)->d_type) #else +#ifndef DT_UNKNOWN #define DT_UNKNOWN 0 +#endif +#ifndef DT_DIR #define DT_DIR 1 +#endif +#ifndef DT_REG #define DT_REG 2 +#endif +#ifndef DT_LNK #define DT_LNK 3 +#endif #define DTYPE(de) DT_UNKNOWN #endif -- 1.1.2-ge577