git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH v3 11/12] sha1_file.c: expose helpers to read loose objects

From
Junio C Hamano <gitster@pobox.com>
Date
May 21, 2011, 06:56 UTC
Message-ID
<1305960995-25738-12-git-send-email-gitster@pobox.com>
In-Reply-To
<1305960995-25738-1-git-send-email-gitster@pobox.com>

Make map_sha1_file(), parse_sha1_header() and unpack_sha1_header() available to the streaming read API by exporting them via cache.h header file.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
---
 cache.h     |    3 +++
 sha1_file.c |    6 +++---
 2 files changed, 6 insertions(+), 3 deletions(-)
diff --git a/cache.h b/cache.h
index 2a7a77f..a5067ba 100644
--- a/cache.h
+++ b/cache.h
@@ -780,6 +780,9 @@ extern int hash_sha1_file(const void *buf, unsigned long len, const char *type,
 extern int write_sha1_file(const void *buf, unsigned long len, const char *type, unsigned char *return_sha1);
 extern int pretend_sha1_file(void *, unsigned long, enum object_type, unsigned char *);
 extern int force_object_loose(const unsigned char *sha1, time_t mtime);
+extern void *map_sha1_file(const unsigned char *sha1, unsigned long *size);
+extern int unpack_sha1_header(z_stream *stream, unsigned char *map, unsigned long mapsize, void *buffer, unsigned long bufsiz);
+extern int parse_sha1_header(const char *hdr, unsigned long *sizep);
 
 /* global flag to enable extra checks when accessing packed objects */
 extern int do_check_packed_object_crc;
diff --git a/sha1_file.c b/sha1_file.c
index a28683a..5fc877f 100644
--- a/sha1_file.c
+++ b/sha1_file.c
@@ -1186,7 +1186,7 @@ static int open_sha1_file(const unsigned char *sha1)
 	return -1;
 }
 
-static void *map_sha1_file(const unsigned char *sha1, unsigned long *size)
+void *map_sha1_file(const unsigned char *sha1, unsigned long *size)
 {
 	void *map;
 	int fd;
@@ -1245,7 +1245,7 @@ unsigned long unpack_object_header_buffer(const unsigned char *buf,
 	return used;
 }
 
-static int unpack_sha1_header(z_stream *stream, unsigned char *map, unsigned long mapsize, void *buffer, unsigned long bufsiz)
+int unpack_sha1_header(z_stream *stream, unsigned char *map, unsigned long mapsize, void *buffer, unsigned long bufsiz)
 {
 	unsigned long size, used;
 	static const char valid_loose_object_type[8] = {
@@ -1342,7 +1342,7 @@ static void *unpack_sha1_rest(z_stream *stream, void *buffer, unsigned long size
  * too permissive for what we want to check. So do an anal
  * object header parse by hand.
  */
-static int parse_sha1_header(const char *hdr, unsigned long *sizep)
+int parse_sha1_header(const char *hdr, unsigned long *sizep)
 {
 	char type[10];
 	int i;
-- 
1.7.5.2.369.g8fc017
Previous: Junio C HamanoNext: Junio C Hamano
Message 12 of 13 in “writing out a huge blob to working tree”
  1. 00/12 writing out a huge blob to working treeJunio C Hamano, May 21, 2011
  2. 01/12 packed_object_info_detail(): do not return a stringJunio C Hamano, May 21, 2011
  3. 02/12 sha1_object_info_extended(): expose a bit more infoJunio C Hamano, May 21, 2011
  4. 03/12 sha1_object_info_extended(): hint about objects in delta-base cacheJunio C Hamano, May 21, 2011
  5. 04/12 unpack_object_header(): make it publicJunio C Hamano, May 21, 2011
  6. 05/12 write_entry(): separate two helper functions outJunio C Hamano, May 21, 2011
  7. 06/12 streaming: a new API to read from the object storeJunio C Hamano, May 21, 2011
  8. 07/12 streaming_write_entry(): use streaming API in write_entry()Junio C Hamano, May 21, 2011
  9. 08/12 convert: CRLF_INPUT is a no-op in the output codepathJunio C Hamano, May 21, 2011
  10. 09/12 streaming_write_entry(): support files with holesJunio C Hamano, May 21, 2011
  11. 10/12 streaming: read non-delta incrementally from a packJunio C Hamano, May 21, 2011
  12. 11/12 sha1_file.c: expose helpers to read loose objectsJunio C Hamano, May 21, 2011
  13. 12/12 streaming: read loose objects incrementallyJunio C Hamano, May 21, 2011

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.