Merge branch 'jk/eoo'
[gitweb.git] / builtin / patch-id.c
index 366ce5a5d419649dba34f607ed3f54b6a28bd3ea..bd28b80b2d0f3cd5e9f0b451678279198c52d24d 100644 (file)
@@ -1,4 +1,6 @@
 #include "builtin.h"
+#include "config.h"
+#include "diff.h"
 
 static void flush_current_id(int patchlen, struct object_id *id, struct object_id *result)
 {
@@ -53,22 +55,6 @@ static int scan_hunk_header(const char *p, int *p_before, int *p_after)
        return 1;
 }
 
-static void flush_one_hunk(struct object_id *result, git_SHA_CTX *ctx)
-{
-       unsigned char hash[GIT_SHA1_RAWSZ];
-       unsigned short carry = 0;
-       int i;
-
-       git_SHA1_Final(hash, ctx);
-       git_SHA1_Init(ctx);
-       /* 20-byte sum, with carry */
-       for (i = 0; i < GIT_SHA1_RAWSZ; ++i) {
-               carry += result->hash[i] + hash[i];
-               result->hash[i] = carry;
-               carry >>= 8;
-       }
-}
-
 static int get_one_patchid(struct object_id *next_oid, struct object_id *result,
                           struct strbuf *line_buf, int stable)
 {
@@ -81,16 +67,13 @@ static int get_one_patchid(struct object_id *next_oid, struct object_id *result,
 
        while (strbuf_getwholeline(line_buf, stdin, '\n') != EOF) {
                char *line = line_buf->buf;
-               char *p = line;
+               const char *p = line;
                int len;
 
-               if (!memcmp(line, "diff-tree ", 10))
-                       p += 10;
-               else if (!memcmp(line, "commit ", 7))
-                       p += 7;
-               else if (!memcmp(line, "From ", 5))
-                       p += 5;
-               else if (!memcmp(line, "\\ ", 2) && 12 < strlen(line))
+               if (!skip_prefix(line, "diff-tree ", &p) &&
+                   !skip_prefix(line, "commit ", &p) &&
+                   !skip_prefix(line, "From ", &p) &&
+                   starts_with(line, "\\ ") && 12 < strlen(line))
                        continue;
 
                if (!get_oid_hex(p, next_oid)) {
@@ -99,14 +82,14 @@ static int get_one_patchid(struct object_id *next_oid, struct object_id *result,
                }
 
                /* Ignore commit comments */
-               if (!patchlen && memcmp(line, "diff ", 5))
+               if (!patchlen && !starts_with(line, "diff "))
                        continue;
 
                /* Parsing diff header?  */
                if (before == -1) {
-                       if (!memcmp(line, "index ", 6))
+                       if (starts_with(line, "index "))
                                continue;
-                       else if (!memcmp(line, "--- ", 4))
+                       else if (starts_with(line, "--- "))
                                before = after = 1;
                        else if (!isalpha(line[0]))
                                break;
@@ -114,14 +97,14 @@ static int get_one_patchid(struct object_id *next_oid, struct object_id *result,
 
                /* Looking for a valid hunk header?  */
                if (before == 0 && after == 0) {
-                       if (!memcmp(line, "@@ -", 4)) {
+                       if (starts_with(line, "@@ -")) {
                                /* Parse next hunk, but ignore line numbers.  */
                                scan_hunk_header(line, &before, &after);
                                continue;
                        }
 
                        /* Split at the end of the patch.  */
-                       if (memcmp(line, "diff ", 5))
+                       if (!starts_with(line, "diff "))
                                break;
 
                        /* Else we're parsing another header.  */