提交 ff366825 编写于 作者: L Lukas Fleischer 提交者: Junio C Hamano

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: NLukas Fleischer <git@cryptocrack.de>
Signed-off-by: NJunio C Hamano <gitster@pobox.com>
上级 29fb37b2
...@@ -387,7 +387,7 @@ static struct attr_stack *read_attr_from_index(const char *path, int macro_ok) ...@@ -387,7 +387,7 @@ static struct attr_stack *read_attr_from_index(const char *path, int macro_ok)
char *buf, *sp; char *buf, *sp;
int lineno = 0; 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) if (!buf)
return NULL; return NULL;
......
...@@ -307,7 +307,7 @@ extern void free_name_hash(struct index_state *istate); ...@@ -307,7 +307,7 @@ extern void free_name_hash(struct index_state *istate);
#define resolve_undo_clear() resolve_undo_clear_index(&the_index) #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_entry_at(at) unmerge_index_entry_at(&the_index, at)
#define unmerge_cache(pathspec) unmerge_index(&the_index, pathspec) #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 #endif
enum object_type { enum object_type {
...@@ -453,7 +453,7 @@ extern int add_file_to_index(struct index_state *, const char *path, int flags); ...@@ -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 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 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 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 */ /* do stat comparison even if CE_VALID is true */
#define CE_MATCH_IGNORE_VALID 01 #define CE_MATCH_IGNORE_VALID 01
......
...@@ -1896,7 +1896,7 @@ int index_name_is_other(const struct index_state *istate, const char *name, ...@@ -1896,7 +1896,7 @@ int index_name_is_other(const struct index_state *istate, const char *name,
return 1; 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; int pos, len;
unsigned long sz; unsigned long sz;
...@@ -1925,5 +1925,7 @@ void *read_blob_data_from_index(struct index_state *istate, const char *path) ...@@ -1925,5 +1925,7 @@ void *read_blob_data_from_index(struct index_state *istate, const char *path)
free(data); free(data);
return NULL; return NULL;
} }
if (size)
*size = sz;
return data; return data;
} }
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册