From: Junio C Hamano Date: Sun, 18 Jun 2006 00:08:36 +0000 (-0700) Subject: Merge branch 'js/diff' X-Git-Tag: v1.4.1-rc1~26 X-Git-Url: https://git.lorimer.id.au/gitweb.git/diff_plain/fc5201ac9f17abf8b70b248b17595f3f3d35c056?hp=-c Merge branch 'js/diff' --- fc5201ac9f17abf8b70b248b17595f3f3d35c056 diff --combined cache.h index 1b8e053f28,f630cf4bfa..7fcb6d406a --- a/cache.h +++ b/cache.h @@@ -208,15 -208,9 +208,15 @@@ extern const unsigned char null_sha1[20 int git_mkstemp(char *path, size_t n, const char *template); +enum sharedrepo { + PERM_UMASK = 0, + PERM_GROUP, + PERM_EVERYBODY +}; +int git_config_perm(const char *var, const char *value); int adjust_shared_perm(const char *path); int safe_create_leading_directories(char *path); - char *safe_strncpy(char *, const char *, size_t); + size_t safe_strncpy(char *, const char *, size_t); char *enter_repo(char *path, int strict); /* Read and unpack a sha1 file into memory, write memory to a sha1 file */ diff --combined path.c index 5d82503b6b,194e0b553f..36972fd6df --- a/path.c +++ b/path.c @@@ -83,14 -83,19 +83,19 @@@ int git_mkstemp(char *path, size_t len } - char *safe_strncpy(char *dest, const char *src, size_t n) + size_t safe_strncpy(char *dest, const char *src, size_t size) { - strncpy(dest, src, n); - dest[n - 1] = '\0'; + size_t ret = strlen(src); - return dest; + if (size) { + size_t len = (ret >= size) ? size - 1 : ret; + memcpy(dest, src, len); + dest[len] = '\0'; + } + return ret; } + int validate_symref(const char *path) { struct stat st; @@@ -262,21 -267,11 +267,21 @@@ int adjust_shared_perm(const char *path return -1; mode = st.st_mode; if (mode & S_IRUSR) - mode |= S_IRGRP; + mode |= (shared_repository == PERM_GROUP + ? S_IRGRP + : (shared_repository == PERM_EVERYBODY + ? (S_IRGRP|S_IROTH) + : 0)); + if (mode & S_IWUSR) mode |= S_IWGRP; + if (mode & S_IXUSR) - mode |= S_IXGRP; + mode |= (shared_repository == PERM_GROUP + ? S_IXGRP + : (shared_repository == PERM_EVERYBODY + ? (S_IXGRP|S_IXOTH) + : 0)); if (S_ISDIR(mode)) mode |= S_ISGID; if (chmod(path, mode) < 0)