From ff36682505dfb580172306fe1b265b860f89bcea Mon Sep 17 00:00:00 2001 From: Lukas Fleischer Date: Sat, 13 Apr 2013 15:28:31 +0200 Subject: [PATCH] read_blob_data_from_index(): optionally return the size of blob data This allows for optionally getting the size of the returned data and will be used in a follow-up patch. Signed-off-by: Lukas Fleischer Signed-off-by: Junio C Hamano --- attr.c | 2 +- cache.h | 4 ++-- read-cache.c | 4 +++- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/attr.c b/attr.c index 243d60ffa9..09e7e50d3e 100644 --- a/attr.c +++ b/attr.c @@ -387,7 +387,7 @@ static struct attr_stack *read_attr_from_index(const char *path, int macro_ok) char *buf, *sp; int lineno = 0; - buf = read_blob_data_from_index(use_index ? use_index : &the_index, path); + buf = read_blob_data_from_index(use_index ? use_index : &the_index, path, NULL); if (!buf) return NULL; diff --git a/cache.h b/cache.h index 5d66c74f6a..627776b5e6 100644 --- a/cache.h +++ b/cache.h @@ -307,7 +307,7 @@ extern void free_name_hash(struct index_state *istate); #define resolve_undo_clear() resolve_undo_clear_index(&the_index) #define unmerge_cache_entry_at(at) unmerge_index_entry_at(&the_index, at) #define unmerge_cache(pathspec) unmerge_index(&the_index, pathspec) -#define read_blob_data_from_cache(path) read_blob_data_from_index(&the_index, (path)) +#define read_blob_data_from_cache(path, sz) read_blob_data_from_index(&the_index, (path), (sz)) #endif enum object_type { @@ -453,7 +453,7 @@ extern int add_file_to_index(struct index_state *, const char *path, int flags); extern struct cache_entry *make_cache_entry(unsigned int mode, const unsigned char *sha1, const char *path, int stage, int refresh); extern int ce_same_name(struct cache_entry *a, struct cache_entry *b); extern int index_name_is_other(const struct index_state *, const char *, int); -extern void *read_blob_data_from_index(struct index_state *, const char *); +extern void *read_blob_data_from_index(struct index_state *, const char *, unsigned long *); /* do stat comparison even if CE_VALID is true */ #define CE_MATCH_IGNORE_VALID 01 diff --git a/read-cache.c b/read-cache.c index 48d87e83ed..8c27ed2c66 100644 --- a/read-cache.c +++ b/read-cache.c @@ -1896,7 +1896,7 @@ int index_name_is_other(const struct index_state *istate, const char *name, return 1; } -void *read_blob_data_from_index(struct index_state *istate, const char *path) +void *read_blob_data_from_index(struct index_state *istate, const char *path, unsigned long *size) { int pos, len; unsigned long sz; @@ -1925,5 +1925,7 @@ void *read_blob_data_from_index(struct index_state *istate, const char *path) free(data); return NULL; } + if (size) + *size = sz; return data; } -- GitLab