X-Git-Url: https://git.verplant.org/?a=blobdiff_plain;f=read-cache.c;h=53f1da815bc2c23b25894663fa2cac17b08e64b2;hb=4765dd57e6115d6e04e26a652676f02abe9c143d;hp=44a713aed6d5d3f051dd7a709ceb9044869cf783;hpb=94dfb7f2e38fde5014fe50f9e74bde7d2d264184;p=git.git diff --git a/read-cache.c b/read-cache.c index 44a713ae..53f1da81 100644 --- a/read-cache.c +++ b/read-cache.c @@ -87,7 +87,7 @@ int cache_name_pos(const char *name, int namelen) } /* Remove entry, return true if there are more entries to go.. */ -static int remove_entry_at(int pos) +int remove_entry_at(int pos) { active_nr--; if (pos >= active_nr) @@ -106,7 +106,7 @@ int remove_file_from_cache(char *path) return 0; } -static int same_name(struct cache_entry *a, struct cache_entry *b) +int same_name(struct cache_entry *a, struct cache_entry *b) { int len = ce_namelen(a); return ce_namelen(b) == len && !memcmp(a->name, b->name, len); @@ -143,7 +143,7 @@ int add_cache_entry(struct cache_entry *ce, int ok_to_add) /* Make sure the array is big enough .. */ if (active_nr == active_alloc) { active_alloc = alloc_nr(active_alloc); - active_cache = realloc(active_cache, active_alloc * sizeof(struct cache_entry *)); + active_cache = xrealloc(active_cache, active_alloc * sizeof(struct cache_entry *)); } /* Add it in.. */ @@ -188,7 +188,7 @@ int read_cache(void) 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); + fd = open(get_index_file(), O_RDONLY); if (fd < 0) return (errno == ENOENT) ? 0 : error("open failed"); @@ -198,7 +198,7 @@ int read_cache(void) size = st.st_size; errno = EINVAL; if (size >= sizeof(struct cache_header) + 20) - map = mmap(NULL, size, PROT_READ, MAP_PRIVATE, fd, 0); + map = mmap(NULL, size, PROT_READ | PROT_WRITE, MAP_PRIVATE, fd, 0); } close(fd); if (-1 == (int)(long)map)