{"thread":{"id":"5919","subject":"[PATCH 1/2] Add hash_sha1_file()","startedAt":"2006-10-14T10:45:36Z","lastAt":"2006-10-14T10:45:36Z","messageCount":1,"participants":["Rene Scharfe"],"isPatch":true,"patchVersion":1,"patchTotal":2},"messages":[{"id":"28758","messageId":"4530BFD0.6040008@lsrfire.ath.cx","threadId":"5919","inReplyTo":null,"subject":"[PATCH 1/2] Add hash_sha1_file()","fromName":"Rene Scharfe","fromEmail":"rene.scharfe@lsrfire.ath.cx","sentAt":"2006-10-14T10:45:36Z","receivedAt":"2006-10-14T10:45:36Z","isPatch":true,"sender":{"key":"l.s.r@web.de","avatar":"https://avatars.githubusercontent.com/u/26122331?v=4"},"body":"Most callers of write_sha1_file_prepare() are only interested in the\nresulting hash but don't care about the returned file name or the header.\nThis patch adds a simple wrapper named hash_sha1_file() which does just\nthat, and converts potential callers.\n\nSigned-off-by: Rene Scharfe <rene.scharfe@lsrfire.ath.cx>\n---\n builtin-apply.c   |    8 ++------\n cache-tree.c      |    8 ++------\n cache.h           |    1 +\n merge-recursive.c |    5 +----\n sha1_file.c       |   34 ++++++++++++++++------------------\n 5 files changed, 22 insertions(+), 34 deletions(-)\n\ndiff --git a/builtin-apply.c b/builtin-apply.c\nindex e3ef044..cbe5977 100644\n--- a/builtin-apply.c\n+++ b/builtin-apply.c\n@@ -1783,8 +1783,6 @@ static int apply_binary(struct buffer_de\n {\n \tconst char *name = patch->old_name ? patch->old_name : patch->new_name;\n \tunsigned char sha1[20];\n-\tunsigned char hdr[50];\n-\tint hdrlen;\n \n \t/* For safety, we require patch index line to contain\n \t * full 40-byte textual SHA1 for old and new, at least for now.\n@@ -1800,8 +1798,7 @@ static int apply_binary(struct buffer_de\n \t\t/* See if the old one matches what the patch\n \t\t * applies to.\n \t\t */\n-\t\twrite_sha1_file_prepare(desc->buffer, desc->size,\n-\t\t\t\t\tblob_type, sha1, hdr, &hdrlen);\n+\t\thash_sha1_file(desc->buffer, desc->size, blob_type, sha1);\n \t\tif (strcmp(sha1_to_hex(sha1), patch->old_sha1_prefix))\n \t\t\treturn error(\"the patch applies to '%s' (%s), \"\n \t\t\t\t     \"which does not match the \"\n@@ -1846,8 +1843,7 @@ static int apply_binary(struct buffer_de\n \t\t\t\t     name);\n \n \t\t/* verify that the result matches */\n-\t\twrite_sha1_file_prepare(desc->buffer, desc->size, blob_type,\n-\t\t\t\t\tsha1, hdr, &hdrlen);\n+\t\thash_sha1_file(desc->buffer, desc->size, blob_type, sha1);\n \t\tif (strcmp(sha1_to_hex(sha1), patch->new_sha1_prefix))\n \t\t\treturn error(\"binary patch to '%s' creates incorrect result (expecting %s, got %s)\", name, patch->new_sha1_prefix, sha1_to_hex(sha1));\n \t}\ndiff --git a/cache-tree.c b/cache-tree.c\nindex 323c68a..d388848 100644\n--- a/cache-tree.c\n+++ b/cache-tree.c\n@@ -344,12 +344,8 @@ #if DEBUG\n #endif\n \t}\n \n-\tif (dryrun) {\n-\t\tunsigned char hdr[200];\n-\t\tint hdrlen;\n-\t\twrite_sha1_file_prepare(buffer, offset, tree_type, it->sha1,\n-\t\t\t\t\thdr, &hdrlen);\n-\t}\n+\tif (dryrun)\n+\t\thash_sha1_file(buffer, offset, tree_type, it->sha1);\n \telse\n \t\twrite_sha1_file(buffer, offset, tree_type, it->sha1);\n \tfree(buffer);\ndiff --git a/cache.h b/cache.h\nindex 97debd0..aa3a562 100644\n--- a/cache.h\n+++ b/cache.h\n@@ -245,6 +245,7 @@ char *enter_repo(char *path, int strict)\n extern int sha1_object_info(const unsigned char *, char *, unsigned long *);\n extern void * unpack_sha1_file(void *map, unsigned long mapsize, char *type, unsigned long *size);\n extern void * read_sha1_file(const unsigned char *sha1, char *type, unsigned long *size);\n+extern int hash_sha1_file(void *buf, unsigned long len, const char *type, unsigned char *sha1);\n extern int write_sha1_file(void *buf, unsigned long len, const char *type, unsigned char *return_sha1);\n extern char *write_sha1_file_prepare(void *buf,\n \t\t\t\t     unsigned long len,\ndiff --git a/merge-recursive.c b/merge-recursive.c\nindex 611cd95..2ba43ae 100644\n--- a/merge-recursive.c\n+++ b/merge-recursive.c\n@@ -1235,13 +1235,10 @@ int merge(struct commit *h1,\n \tif (merged_common_ancestors == NULL) {\n \t\t/* if there is no common ancestor, make an empty tree */\n \t\tstruct tree *tree = xcalloc(1, sizeof(struct tree));\n-\t\tunsigned char hdr[40];\n-\t\tint hdrlen;\n \n \t\ttree->object.parsed = 1;\n \t\ttree->object.type = OBJ_TREE;\n-\t\twrite_sha1_file_prepare(NULL, 0, tree_type, tree->object.sha1,\n-\t\t\t\t\thdr, &hdrlen);\n+\t\thash_sha1_file(NULL, 0, tree_type, tree->object.sha1);\n \t\tmerged_common_ancestors = make_virtual_commit(tree, \"ancestor\");\n \t}\n \ndiff --git a/sha1_file.c b/sha1_file.c\nindex 27b1ebb..6c64ec4 100644\n--- a/sha1_file.c\n+++ b/sha1_file.c\n@@ -1501,6 +1501,15 @@ static void setup_object_header(z_stream\n \tstream->avail_out -= hdr;\n }\n \n+int hash_sha1_file(void *buf, unsigned long len, const char *type,\n+                   unsigned char *sha1)\n+{\n+\tunsigned char hdr[50];\n+\tint hdrlen;\n+\twrite_sha1_file_prepare(buf, len, type, sha1, hdr, &hdrlen);\n+\treturn 0;\n+}\n+\n int write_sha1_file(void *buf, unsigned long len, const char *type, unsigned char *returnsha1)\n {\n \tint size;\n@@ -1784,8 +1793,6 @@ int index_pipe(unsigned char *sha1, int \n \tunsigned long size = 4096;\n \tchar *buf = xmalloc(size);\n \tint ret;\n-\tunsigned char hdr[50];\n-\tint hdrlen;\n \n \tif (read_pipe(fd, &buf, &size)) {\n \t\tfree(buf);\n@@ -1796,10 +1803,8 @@ int index_pipe(unsigned char *sha1, int \n \t\ttype = blob_type;\n \tif (write_object)\n \t\tret = write_sha1_file(buf, size, type, sha1);\n-\telse {\n-\t\twrite_sha1_file_prepare(buf, size, type, sha1, hdr, &hdrlen);\n-\t\tret = 0;\n-\t}\n+\telse\n+\t\tret = hash_sha1_file(buf, size, type, sha1);\n \tfree(buf);\n \treturn ret;\n }\n@@ -1809,8 +1814,6 @@ int index_fd(unsigned char *sha1, int fd\n \tunsigned long size = st->st_size;\n \tvoid *buf;\n \tint ret;\n-\tunsigned char hdr[50];\n-\tint hdrlen;\n \n \tbuf = \"\";\n \tif (size)\n@@ -1823,10 +1826,8 @@ int index_fd(unsigned char *sha1, int fd\n \t\ttype = blob_type;\n \tif (write_object)\n \t\tret = write_sha1_file(buf, size, type, sha1);\n-\telse {\n-\t\twrite_sha1_file_prepare(buf, size, type, sha1, hdr, &hdrlen);\n-\t\tret = 0;\n-\t}\n+\telse\n+\t\tret = hash_sha1_file(buf, size, type, sha1);\n \tif (size)\n \t\tmunmap(buf, size);\n \treturn ret;\n@@ -1855,12 +1856,9 @@ int index_path(unsigned char *sha1, cons\n \t\t\treturn error(\"readlink(\\\"%s\\\"): %s\", path,\n \t\t\t             errstr);\n \t\t}\n-\t\tif (!write_object) {\n-\t\t\tunsigned char hdr[50];\n-\t\t\tint hdrlen;\n-\t\t\twrite_sha1_file_prepare(target, st->st_size, blob_type,\n-\t\t\t\t\t\tsha1, hdr, &hdrlen);\n-\t\t} else if (write_sha1_file(target, st->st_size, blob_type, sha1))\n+\t\tif (!write_object)\n+\t\t\thash_sha1_file(target, st->st_size, blob_type, sha1);\n+\t\telse if (write_sha1_file(target, st->st_size, blob_type, sha1))\n \t\t\treturn error(\"%s: failed to insert into database\",\n \t\t\t\t     path);\n \t\tfree(target);\n-- \n1.4.3.rc2.gdce3\n"}]}