{"thread":{"id":"7803","subject":"[PATCH] add get_sha1_with_mode","startedAt":"2007-04-23T20:55:05Z","lastAt":"2007-04-23T21:19:13Z","messageCount":2,"participants":["Martin Koegler","Junio C Hamano"],"isPatch":true,"patchVersion":1,"patchTotal":null},"messages":[{"id":"40237","messageId":"11773617051833-git-send-email-mkoegler@auto.tuwien.ac.at","threadId":"7803","inReplyTo":null,"subject":"[PATCH] add get_sha1_with_mode","fromName":"Martin Koegler","fromEmail":"mkoegler@auto.tuwien.ac.at","sentAt":"2007-04-23T20:55:05Z","receivedAt":"2007-04-23T20:55:05Z","isPatch":true,"sender":{"key":"mkoegler@auto.tuwien.ac.at","avatar":null},"body":"get_sha1_with_mode basically behaves as get_sha1. It has an additional\nparameter for storing the mode of the object.\n\nIf the mode can not be determined, it stores S_IFINVALID.\n\nSigned-off-by: Martin Koegler <mkoegler@auto.tuwien.ac.at>\n---\n cache.h     |    1 +\n sha1_name.c |   11 +++++++++--\n 2 files changed, 10 insertions(+), 2 deletions(-)\n\ndiff --git a/cache.h b/cache.h\nindex b1adbe7..23e8f24 100644\n--- a/cache.h\n+++ b/cache.h\n@@ -342,6 +342,7 @@ static inline unsigned int hexval(unsigned int c)\n #define DEFAULT_ABBREV 7\n \n extern int get_sha1(const char *str, unsigned char *sha1);\n+extern int get_sha1_with_mode(const char *str, unsigned char *sha1, unsigned *mode);\n extern int get_sha1_hex(const char *hex, unsigned char *sha1);\n extern char *sha1_to_hex(const unsigned char *sha1);\t/* static buffer result! */\n extern int read_ref(const char *filename, unsigned char *sha1);\ndiff --git a/sha1_name.c b/sha1_name.c\nindex b0b12bb..55f25a2 100644\n--- a/sha1_name.c\n+++ b/sha1_name.c\n@@ -643,11 +643,17 @@ static int get_sha1_oneline(const char *prefix, unsigned char *sha1)\n  */\n int get_sha1(const char *name, unsigned char *sha1)\n {\n-\tint ret, bracket_depth;\n \tunsigned unused;\n+\treturn get_sha1_with_mode(name, sha1, &unused);\n+}\n+\n+int get_sha1_with_mode(const char *name, unsigned char *sha1, unsigned *mode)\n+{\n+\tint ret, bracket_depth;\n \tint namelen = strlen(name);\n \tconst char *cp;\n \n+\t*mode = S_IFINVALID;\n \tprepare_alt_odb();\n \tret = get_sha1_1(name, namelen, sha1);\n \tif (!ret)\n@@ -685,6 +691,7 @@ int get_sha1(const char *name, unsigned char *sha1)\n \t\t\t\tbreak;\n \t\t\tif (ce_stage(ce) == stage) {\n \t\t\t\thashcpy(sha1, ce->sha1);\n+\t\t\t\t*mode = ntohl(ce->ce_mode);\n \t\t\t\treturn 0;\n \t\t\t}\n \t\t\tpos++;\n@@ -703,7 +710,7 @@ int get_sha1(const char *name, unsigned char *sha1)\n \t\tunsigned char tree_sha1[20];\n \t\tif (!get_sha1_1(name, cp-name, tree_sha1))\n \t\t\treturn get_tree_entry(tree_sha1, cp+1, sha1,\n-\t\t\t\t\t      &unused);\n+\t\t\t\t\t      mode);\n \t}\n \treturn ret;\n }\n-- \n1.5.1.1.199.g1a18-dirty\n"},{"id":"40242","messageId":"7vr6qaeqlq.fsf@assigned-by-dhcp.cox.net","threadId":"7803","inReplyTo":"11773617051833-git-send-email-mkoegler@auto.tuwien.ac.at","subject":"Re: [PATCH] add get_sha1_with_mode","fromName":"Junio C Hamano","fromEmail":"junkio@cox.net","sentAt":"2007-04-23T21:19:13Z","receivedAt":"2007-04-23T21:19:13Z","isPatch":true,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"I queued your previous one in 'pu' (proposed updates) already.\nI'll replace it with this; thanks.\n\nThere in the 'pu' branch, I also have a fix-up patch on top of\nyour series to actually make \"git diff tree1:path tree2:path\"\nwork when there is only mode change between the blobs.\n"}]}