From 53bca91a7d337ea648197b9642b41a92704c17f7 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Wed, 28 Feb 2007 11:52:04 -0800 Subject: index_fd(): pass optional path parameter as hint for blob conversion Signed-off-by: Junio C Hamano diff --git a/cache.h b/cache.h index 9f30ad6..b84e3de 100644 --- a/cache.h +++ b/cache.h @@ -190,7 +190,7 @@ extern int ce_same_name(struct cache_entry *a, struct cache_entry *b); extern int ce_match_stat(struct cache_entry *ce, struct stat *st, int); extern int ce_modified(struct cache_entry *ce, struct stat *st, int); extern int ce_path_match(const struct cache_entry *ce, const char **pathspec); -extern int index_fd(unsigned char *sha1, int fd, struct stat *st, int write_object, enum object_type type); +extern int index_fd(unsigned char *sha1, int fd, struct stat *st, int write_object, enum object_type type, const char *path); extern int read_pipe(int fd, char** return_buf, unsigned long* return_size); extern int index_pipe(unsigned char *sha1, int fd, const char *type, int write_object); extern int index_path(unsigned char *sha1, const char *path, struct stat *st, int write_object); diff --git a/hash-object.c b/hash-object.c index 1e6f6bf..18f5017 100644 --- a/hash-object.c +++ b/hash-object.c @@ -15,7 +15,7 @@ static void hash_object(const char *path, enum object_type type, int write_objec fd = open(path, O_RDONLY); if (fd < 0 || fstat(fd, &st) < 0 || - index_fd(sha1, fd, &st, write_object, type)) + index_fd(sha1, fd, &st, write_object, type, path)) die(write_object ? "Unable to add %s to database" : "Unable to hash %s", path); diff --git a/read-cache.c b/read-cache.c index 6bfd411..7a104e3 100644 --- a/read-cache.c +++ b/read-cache.c @@ -59,7 +59,7 @@ static int ce_compare_data(struct cache_entry *ce, struct stat *st) if (fd >= 0) { unsigned char sha1[20]; - if (!index_fd(sha1, fd, st, 0, OBJ_BLOB)) + if (!index_fd(sha1, fd, st, 0, OBJ_BLOB, ce->name)) match = hashcmp(sha1, ce->sha1); /* index_fd() closed the file descriptor already */ } diff --git a/sha1_file.c b/sha1_file.c index 38ccf1b..fe73904 100644 --- a/sha1_file.c +++ b/sha1_file.c @@ -2054,7 +2054,7 @@ int index_pipe(unsigned char *sha1, int fd, const char *type, int write_object) } int index_fd(unsigned char *sha1, int fd, struct stat *st, int write_object, - enum object_type type) + enum object_type type, const char *path) { unsigned long size = st->st_size; void *buf; @@ -2074,7 +2074,7 @@ int index_fd(unsigned char *sha1, int fd, struct stat *st, int write_object, if (type == OBJ_BLOB) { unsigned long nsize = size; char *nbuf = buf; - if (convert_to_git(NULL, &nbuf, &nsize)) { + if (convert_to_git(path, &nbuf, &nsize)) { if (size) munmap(buf, size); size = nsize; @@ -2107,7 +2107,7 @@ int index_path(unsigned char *sha1, const char *path, struct stat *st, int write if (fd < 0) return error("open(\"%s\"): %s", path, strerror(errno)); - if (index_fd(sha1, fd, st, write_object, OBJ_BLOB) < 0) + if (index_fd(sha1, fd, st, write_object, OBJ_BLOB, path) < 0) return error("%s: failed to insert into database", path); break; -- cgit v0.10.2-6-g49f6