Merge branch 'ar/sgid-bsd'
* ar/sgid-bsd: Do not use GUID on dir in git init --shared=all on FreeBSD
This commit is contained in:
commit
e3172d80d5
4
Makefile
4
Makefile
@ -478,6 +478,7 @@ ifeq ($(uname_S),FreeBSD)
|
|||||||
NO_MEMMEM = YesPlease
|
NO_MEMMEM = YesPlease
|
||||||
BASIC_CFLAGS += -I/usr/local/include
|
BASIC_CFLAGS += -I/usr/local/include
|
||||||
BASIC_LDFLAGS += -L/usr/local/lib
|
BASIC_LDFLAGS += -L/usr/local/lib
|
||||||
|
DIR_HAS_BSD_GROUP_SEMANTICS = YesPlease
|
||||||
endif
|
endif
|
||||||
ifeq ($(uname_S),OpenBSD)
|
ifeq ($(uname_S),OpenBSD)
|
||||||
NO_STRCASESTR = YesPlease
|
NO_STRCASESTR = YesPlease
|
||||||
@ -747,6 +748,9 @@ ifdef THREADED_DELTA_SEARCH
|
|||||||
EXTLIBS += -lpthread
|
EXTLIBS += -lpthread
|
||||||
LIB_OBJS += thread-utils.o
|
LIB_OBJS += thread-utils.o
|
||||||
endif
|
endif
|
||||||
|
ifdef DIR_HAS_BSD_GROUP_SEMANTICS
|
||||||
|
COMPAT_CFLAGS += -DDIR_HAS_BSD_GROUP_SEMANTICS
|
||||||
|
endif
|
||||||
|
|
||||||
ifeq ($(TCLTK_PATH),)
|
ifeq ($(TCLTK_PATH),)
|
||||||
NO_TCLTK=NoThanks
|
NO_TCLTK=NoThanks
|
||||||
|
@ -437,4 +437,10 @@ void git_qsort(void *base, size_t nmemb, size_t size,
|
|||||||
#define qsort git_qsort
|
#define qsort git_qsort
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifndef DIR_HAS_BSD_GROUP_SEMANTICS
|
||||||
|
# define FORCE_DIR_SET_GID S_ISGID
|
||||||
|
#else
|
||||||
|
# define FORCE_DIR_SET_GID 0
|
||||||
|
#endif
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
2
path.c
2
path.c
@ -283,7 +283,7 @@ int adjust_shared_perm(const char *path)
|
|||||||
? (S_IXGRP|S_IXOTH)
|
? (S_IXGRP|S_IXOTH)
|
||||||
: 0));
|
: 0));
|
||||||
if (S_ISDIR(mode))
|
if (S_ISDIR(mode))
|
||||||
mode |= S_ISGID;
|
mode |= FORCE_DIR_SET_GID;
|
||||||
if ((mode & st.st_mode) != mode && chmod(path, mode) < 0)
|
if ((mode & st.st_mode) != mode && chmod(path, mode) < 0)
|
||||||
return -2;
|
return -2;
|
||||||
return 0;
|
return 0;
|
||||||
|
Loading…
Reference in New Issue
Block a user