diff options
author | Alex Riesen <raa.lkml@gmail.com> | 2008-03-05 00:15:39 +0100 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2008-03-05 12:22:26 -0800 |
commit | 81a24b52c164b96d37c8c50799a624e2e8ce8a57 (patch) | |
tree | 80f85f976b10ac072049b48b01a9242f2ee86fc8 | |
parent | ce2cf27adc434c11cd1e91bcacf00297efd8cc92 (diff) | |
download | git-81a24b52c164b96d37c8c50799a624e2e8ce8a57.tar.gz |
Do not use GUID on dir in git init --shared=all on FreeBSD
It does not allow changing the bit to a non-root user.
This fixes t1301-shared-repo.sh on the platform.
Signed-off-by: Alex Riesen <raa.lkml@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rw-r--r-- | Makefile | 4 | ||||
-rw-r--r-- | git-compat-util.h | 6 | ||||
-rw-r--r-- | path.c | 2 |
3 files changed, 11 insertions, 1 deletions
@@ -478,6 +478,7 @@ ifeq ($(uname_S),FreeBSD) NO_MEMMEM = YesPlease BASIC_CFLAGS += -I/usr/local/include BASIC_LDFLAGS += -L/usr/local/lib + DIR_HAS_BSD_GROUP_SEMANTICS = YesPlease endif ifeq ($(uname_S),OpenBSD) NO_STRCASESTR = YesPlease @@ -747,6 +748,9 @@ ifdef THREADED_DELTA_SEARCH EXTLIBS += -lpthread LIB_OBJS += thread-utils.o endif +ifdef DIR_HAS_BSD_GROUP_SEMANTICS + COMPAT_CFLAGS += -DDIR_HAS_BSD_GROUP_SEMANTICS +endif ifeq ($(TCLTK_PATH),) NO_TCLTK=NoThanks diff --git a/git-compat-util.h b/git-compat-util.h index 2a40703c85..591244351e 100644 --- a/git-compat-util.h +++ b/git-compat-util.h @@ -437,4 +437,10 @@ void git_qsort(void *base, size_t nmemb, size_t size, #define qsort git_qsort #endif +#ifndef DIR_HAS_BSD_GROUP_SEMANTICS +# define FORCE_DIR_SET_GID S_ISGID +#else +# define FORCE_DIR_SET_GID 0 +#endif + #endif @@ -283,7 +283,7 @@ int adjust_shared_perm(const char *path) ? (S_IXGRP|S_IXOTH) : 0)); if (S_ISDIR(mode)) - mode |= S_ISGID; + mode |= FORCE_DIR_SET_GID; if ((mode & st.st_mode) != mode && chmod(path, mode) < 0) return -2; return 0; |