index_fd(): pass optional path parameter as hint for blob conversion

Signed-off-by: Junio C Hamano <junkio@cox.net>
This commit is contained in:
Junio C Hamano 2007-02-28 11:52:04 -08:00
parent edaec3fbe8
commit 53bca91a7d
4 changed files with 6 additions and 6 deletions

View File

@ -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_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_modified(struct cache_entry *ce, struct stat *st, int);
extern int ce_path_match(const struct cache_entry *ce, const char **pathspec); 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 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_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); extern int index_path(unsigned char *sha1, const char *path, struct stat *st, int write_object);

View File

@ -15,7 +15,7 @@ static void hash_object(const char *path, enum object_type type, int write_objec
fd = open(path, O_RDONLY); fd = open(path, O_RDONLY);
if (fd < 0 || if (fd < 0 ||
fstat(fd, &st) < 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 die(write_object
? "Unable to add %s to database" ? "Unable to add %s to database"
: "Unable to hash %s", path); : "Unable to hash %s", path);

View File

@ -59,7 +59,7 @@ static int ce_compare_data(struct cache_entry *ce, struct stat *st)
if (fd >= 0) { if (fd >= 0) {
unsigned char sha1[20]; 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); match = hashcmp(sha1, ce->sha1);
/* index_fd() closed the file descriptor already */ /* index_fd() closed the file descriptor already */
} }

View File

@ -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, 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; unsigned long size = st->st_size;
void *buf; void *buf;
@ -2074,7 +2074,7 @@ int index_fd(unsigned char *sha1, int fd, struct stat *st, int write_object,
if (type == OBJ_BLOB) { if (type == OBJ_BLOB) {
unsigned long nsize = size; unsigned long nsize = size;
char *nbuf = buf; char *nbuf = buf;
if (convert_to_git(NULL, &nbuf, &nsize)) { if (convert_to_git(path, &nbuf, &nsize)) {
if (size) if (size)
munmap(buf, size); munmap(buf, size);
size = nsize; size = nsize;
@ -2107,7 +2107,7 @@ int index_path(unsigned char *sha1, const char *path, struct stat *st, int write
if (fd < 0) if (fd < 0)
return error("open(\"%s\"): %s", path, return error("open(\"%s\"): %s", path,
strerror(errno)); 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", return error("%s: failed to insert into database",
path); path);
break; break;