read_blob_data_from_index(): optionally return the size of blob data
authorLukas Fleischer <git@cryptocrack.de>
Sat, 13 Apr 2013 13:28:31 +0000 (15:28 +0200)
committerJunio C Hamano <gitster@pobox.com>
Wed, 17 Apr 2013 16:51:47 +0000 (09:51 -0700)
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 <git@cryptocrack.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
attr.c
cache.h
read-cache.c

diff --git a/attr.c b/attr.c
index 243d60f..09e7e50 100644 (file)
--- 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 5d66c74..627776b 100644 (file)
--- 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
index 48d87e8..8c27ed2 100644 (file)
@@ -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;
 }