[PATCH 6/8] read-cache.c: add INDEX_FILE_DIRECTORY support
From: Zach Welch <hidden>
Date: 2016-06-15 22:41:53
This patch give read-cache the ability for the index directory to be
overridden by the INDEX_FILE_DIRECTORY environment variable.
This patch applies on top of:
[PATCH 0/8] init-db.c cleanup, add INDEX_FILE_DIRECTORY support
[PATCH 1/8] init-db.c: [RESEND] remove redundant getenv call
[PATCH 2/8] init-db.c: [RESEND] make init-db work with common objects
[PATCH 3/8] init-db.c: refactor directory creation
[PATCH 4/8] init-db.c: add INDEX_FILE_DIRECTORY support
[PATCH 5/8] init-db.c: refactor mkdir logic
read-cache.c | 15 +++++++++++++--
1 files changed, 13 insertions(+), 2 deletions(-)
Signed-Off-By: Zach Welch <redacted>
read-cache.c: edaadf3e1c0714735ca8d80301dd644aa0f9cd2a--- a/read-cache.c
+++ b/read-cache.c@@ -174,22 +174,33 @@ static int verify_hdr(struct cache_heade int read_cache(void) { - int fd, i; + int fd, i, len; struct stat st; unsigned long size, offset; void *map; struct cache_header *hdr; + char *index_path, *index_file; errno = EBUSY; if (active_cache) return error("more than one cachefile"); errno = ENOENT; + sha1_file_directory = getenv(DB_ENVIRONMENT); if (!sha1_file_directory) sha1_file_directory = DEFAULT_DB_ENVIRONMENT; if (access(sha1_file_directory, X_OK) < 0) return error("no access to SHA1 file directory"); - fd = open(".git/index", O_RDONLY); + + index_path = getenv(INDEX_ENVIRONMENT); + if (!index_path) + index_path = DEFAULT_INDEX_ENVIRONMENT; + len = strlen(index_path); + index_file = malloc(len + 7); + if (!index_file) error("out of memory"); + sprintf(index_file, "%s/index", index_path); + + fd = open(index_file, O_RDONLY); if (fd < 0) return (errno == ENOENT) ? 0 : error("open failed");