* add required build options to Makefile. * introduce new NO_INTTYPES_H for systems lacking inttypes; code includes stdint.h instead, if this is set. * introduce new NO_SYS_POLL_H for systems lacking sys/poll.h; code includes poll.h instead, if this is set. * introduce NO_INITGROUPS. initgroups() call is simply omitted. Signed-off-by: Markus Duft <mduft@xxxxxxxxxx> --- Makefile | 28 ++++++++++++++++++++++++++++ daemon.c | 6 +++++- git-compat-util.h | 8 ++++++++ 3 files changed, 41 insertions(+), 1 deletions(-) diff --git a/Makefile b/Makefile index 1f1ce04..c9d8c9e 100644 --- a/Makefile +++ b/Makefile @@ -1096,6 +1096,25 @@ else endif X = .exe endif +ifeq ($(uname_S),Interix) + NO_SYS_POLL_H = YesPlease + NO_INTTYPES_H = YesPlease + NO_INITGROUPS = YesPlease + NO_IPV6 = YesPlease + NO_MEMMEM = YesPlease + NO_MKDTEMP = YesPlease + NO_STRTOUMAX = YesPlease + NO_NSEC = YesPlease + NO_MKSTEMPS = YesPlease + ifeq ($(uname_R),3.5) + NO_INET_NTOP = YesPlease + NO_INET_PTON = YesPlease + endif + ifeq ($(uname_R),5.2) + NO_INET_NTOP = YesPlease + NO_INET_PTON = YesPlease + endif +endif ifneq (,$(findstring MINGW,$(uname_S))) pathsep = ; NO_PREAD = YesPlease @@ -1360,6 +1379,15 @@ endif ifdef NO_SYS_SELECT_H BASIC_CFLAGS += -DNO_SYS_SELECT_H endif +ifdef NO_SYS_POLL_H + BASIC_CFLAGS += -DNO_SYS_POLL_H +endif +ifdef NO_INTTYPES_H + BASIC_CFLAGS += -DNO_INTTYPES_H +endif +ifdef NO_INITGROUPS + BASIC_CFLAGS += -DNO_INITGROUPS +endif ifdef NO_MMAP COMPAT_CFLAGS += -DNO_MMAP COMPAT_OBJS += compat/mmap.o diff --git a/daemon.c b/daemon.c index 9326d3a..d68a31f 100644 --- a/daemon.c +++ b/daemon.c @@ -956,7 +956,11 @@ static int serve(char *listen_addr, int listen_port, struct passwd *pass, gid_t listen_addr, listen_port); if (pass && gid && - (initgroups(pass->pw_name, gid) || setgid (gid) || + ( +#ifndef NO_INITGROUPS + initgroups(pass->pw_name, gid) || +#endif + setgid (gid) || setuid(pass->pw_uid))) die("cannot drop privileges"); diff --git a/git-compat-util.h b/git-compat-util.h index 2af8d3e..625b2e4 100644 --- a/git-compat-util.h +++ b/git-compat-util.h @@ -106,7 +106,11 @@ #include <utime.h> #ifndef __MINGW32__ #include <sys/wait.h> +#ifndef NO_SYS_POLL_H #include <sys/poll.h> +#else +#include <poll.h> +#endif #include <sys/socket.h> #include <sys/ioctl.h> #include <termios.h> @@ -118,7 +122,11 @@ #include <arpa/inet.h> #include <netdb.h> #include <pwd.h> +#ifndef NO_INTTYPES_H #include <inttypes.h> +#else +#include <stdint.h> +#endif #if defined(__CYGWIN__) #undef _XOPEN_SOURCE #include <grp.h> -- 1.7.2.2 -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html