{"thread":{"id":"10144","subject":"[PATCH 3/3] Change all instances of memcmp(buffer, CONSTANT, strlen(CONSTANT) for prefixcmp()","startedAt":"2007-10-04T21:10:55Z","lastAt":"2007-10-04T21:10:55Z","messageCount":1,"participants":["Andy Parkins"],"isPatch":true,"patchVersion":1,"patchTotal":3},"messages":[{"id":"54874","messageId":"200710042210.55895.andyparkins@gmail.com","threadId":"10144","inReplyTo":null,"subject":"[PATCH 3/3] Change all instances of memcmp(buffer, CONSTANT, strlen(CONSTANT) for prefixcmp()","fromName":"Andy Parkins","fromEmail":"andyparkins@gmail.com","sentAt":"2007-10-04T21:10:55Z","receivedAt":"2007-10-04T21:10:55Z","isPatch":true,"sender":{"key":"andyparkins@gmail.com","avatar":null},"body":"Revision cc44c7655 changed most strncmp() instances for prefixcmp().\nThat patch missed the functionally equivalent memcmp() calls, that were\ncandidates for the same change.\n\nThis patch changes every memcmp() call where one of the compared strings\nis a constant for an appropriate call to prefixcmp().\n\nSigned-off-by: Andy Parkins <andyparkins@gmail.com>\n---\n builtin-apply.c                           |   20 ++++++++++----------\n builtin-cat-file.c                        |    2 +-\n builtin-fetch--tool.c                     |    2 +-\n builtin-fsck.c                            |    6 +++---\n builtin-mailinfo.c                        |   22 +++++++++++-----------\n builtin-mailsplit.c                       |    2 +-\n builtin-tar-tree.c                        |    2 +-\n combine-diff.c                            |    2 +-\n commit.c                                  |   14 +++++++-------\n connect.c                                 |    8 ++++----\n contrib/convert-objects/convert-objects.c |    6 +++---\n convert.c                                 |    4 ++--\n fast-import.c                             |    2 +-\n fetch-pack.c                              |    2 +-\n http-fetch.c                              |    4 ++--\n imap-send.c                               |   10 +++++-----\n mktag.c                                   |    8 ++++----\n patch-id.c                                |   10 +++++-----\n path.c                                    |    8 ++++----\n receive-pack.c                            |    2 +-\n refs.c                                    |    4 ++--\n send-pack.c                               |    8 ++++----\n tag.c                                     |    6 +++---\n xdiff-interface.c                         |    2 +-\n 24 files changed, 78 insertions(+), 78 deletions(-)\n\ndiff --git a/builtin-apply.c b/builtin-apply.c\nindex 05c6bc3..cac5d65 100644\n--- a/builtin-apply.c\n+++ b/builtin-apply.c\n@@ -205,7 +205,7 @@ static unsigned long linelen(const char *buffer, unsigned long size)\n \n static int is_dev_null(const char *str)\n {\n-\treturn !memcmp(\"/dev/null\", str, 9) && isspace(str[9]);\n+\treturn !prefixcmp(str, \"/dev/null\") && isspace(str[9]);\n }\n \n #define TERM_SPACE\t1\n@@ -411,7 +411,7 @@ static char *gitdiff_verify_name(const char *line, int isnull, char *orig_name,\n \t}\n \telse {\n \t\t/* expect \"/dev/null\" */\n-\t\tif (memcmp(\"/dev/null\", line, 9) || line[9] != '\\n')\n+\t\tif (prefixcmp(line, \"/dev/null\") || line[9] != '\\n')\n \t\t\tdie(\"git-apply: bad git-diff - expected /dev/null on line %d\", linenr);\n \t\treturn NULL;\n \t}\n@@ -839,7 +839,7 @@ static int find_header(char *line, unsigned long size, int *hdrsize, struct patc\n \t\t * That's a sign that we didn't find a header, and that a\n \t\t * patch has become corrupted/broken up.\n \t\t */\n-\t\tif (!memcmp(\"@@ -\", line, 4)) {\n+\t\tif (!prefixcmp(line, \"@@ -\")) {\n \t\t\tstruct fragment dummy;\n \t\t\tif (parse_fragment_header(line, len, &dummy) < 0)\n \t\t\t\tcontinue;\n@@ -854,7 +854,7 @@ static int find_header(char *line, unsigned long size, int *hdrsize, struct patc\n \t\t * Git patch? It might not have a real patch, just a rename\n \t\t * or mode change, so we handle that specially\n \t\t */\n-\t\tif (!memcmp(\"diff --git \", line, 11)) {\n+\t\tif (!prefixcmp(line, \"diff --git \")) {\n \t\t\tint git_hdr_len = parse_git_header(line, len, size, patch);\n \t\t\tif (git_hdr_len <= len)\n \t\t\t\tcontinue;\n@@ -869,7 +869,7 @@ static int find_header(char *line, unsigned long size, int *hdrsize, struct patc\n \t\t}\n \n \t\t/** --- followed by +++ ? */\n-\t\tif (memcmp(\"--- \", line,  4) || memcmp(\"+++ \", line + len, 4))\n+\t\tif (prefixcmp(line, \"--- \") || prefixcmp(line + len, \"+++ \"))\n \t\t\tcontinue;\n \n \t\t/*\n@@ -878,7 +878,7 @@ static int find_header(char *line, unsigned long size, int *hdrsize, struct patc\n \t\t * minimum\n \t\t */\n \t\tnextlen = linelen(line + len, size - len);\n-\t\tif (size < nextlen + 14 || memcmp(\"@@ -\", line + len + nextlen, 4))\n+\t\tif (size < nextlen + 14 || prefixcmp(line + len + nextlen, \"@@ -\"))\n \t\t\tcontinue;\n \n \t\t/* Ok, we'll consider it a patch */\n@@ -1003,7 +1003,7 @@ static int parse_fragment(char *line, unsigned long size, struct patch *patch, s\n \t\t * l10n of \"\\ No newline...\" is at least that long.\n \t\t */\n \t\tcase '\\\\':\n-\t\t\tif (len < 12 || memcmp(line, \"\\\\ \", 2))\n+\t\t\tif (len < 12 || prefixcmp(line, \"\\\\ \"))\n \t\t\t\treturn -1;\n \t\t\tbreak;\n \t\t}\n@@ -1017,7 +1017,7 @@ static int parse_fragment(char *line, unsigned long size, struct patch *patch, s\n \t * it in the above loop because we hit oldlines == newlines == 0\n \t * before seeing it.\n \t */\n-\tif (12 < size && !memcmp(line, \"\\\\ \", 2))\n+\tif (12 < size && !prefixcmp(line, \"\\\\ \"))\n \t\toffset += linelen(line, size);\n \n \tpatch->lines_added += added;\n@@ -1036,7 +1036,7 @@ static int parse_single_patch(char *line, unsigned long size, struct patch *patc\n \tunsigned long oldlines = 0, newlines = 0, context = 0;\n \tstruct fragment **fragp = &patch->fragments;\n \n-\twhile (size > 4 && !memcmp(line, \"@@ -\", 4)) {\n+\twhile (size > 4 && !prefixcmp(line, \"@@ -\")) {\n \t\tstruct fragment *fragment;\n \t\tint len;\n \n@@ -1316,7 +1316,7 @@ static int parse_chunk(char *buffer, unsigned long size, struct patch *patch)\n \t\t\telse\n \t\t\t\tpatchsize = 0;\n \t\t}\n-\t\telse if (!memcmp(\" differ\\n\", buffer + hd + llen - 8, 8)) {\n+\t\telse if (!prefixcmp(buffer + hd + llen - 8, \" differ\\n\")) {\n \t\t\tfor (i = 0; binhdr[i]; i++) {\n \t\t\t\tint len = strlen(binhdr[i]);\n \t\t\t\tif (len < size - hd &&\ndiff --git a/builtin-cat-file.c b/builtin-cat-file.c\nindex f132d58..4f91c31 100644\n--- a/builtin-cat-file.c\n+++ b/builtin-cat-file.c\n@@ -19,7 +19,7 @@ static void pprint_tag(const unsigned char *sha1, const char *buf, unsigned long\n \t\tchar c = *cp++;\n \t\tif (c != '\\n')\n \t\t\tcontinue;\n-\t\tif (7 <= endp - cp && !memcmp(\"tagger \", cp, 7)) {\n+\t\tif (7 <= endp - cp && !prefixcmp(cp, \"tagger \")) {\n \t\t\tconst char *tagger = cp;\n \n \t\t\t/* Found the tagger line.  Copy out the contents\ndiff --git a/builtin-fetch--tool.c b/builtin-fetch--tool.c\nindex cdb64cc..3362618 100644\n--- a/builtin-fetch--tool.c\n+++ b/builtin-fetch--tool.c\n@@ -384,7 +384,7 @@ static int expand_refs_wildcard(const char *ls_remote_result, int numrefs,\n \t\t\t\tls++;\n \t\t\tnext = strchr(ls, '\\n');\n \t\t\teol = !next ? (ls + strlen(ls)) : next;\n-\t\t\tif (!memcmp(\"^{}\", eol-3, 3))\n+\t\t\tif (!prefixcmp(eol-3, \"^{}\"))\n \t\t\t\tcontinue;\n \t\t\tif (eol - ls < 40)\n \t\t\t\tcontinue;\ndiff --git a/builtin-fsck.c b/builtin-fsck.c\nindex 83a2d0c..2229ea9 100644\n--- a/builtin-fsck.c\n+++ b/builtin-fsck.c\n@@ -359,17 +359,17 @@ static int fsck_commit(struct commit *commit)\n \t\tfprintf(stderr, \"Checking commit %s\\n\",\n \t\t\tsha1_to_hex(commit->object.sha1));\n \n-\tif (memcmp(buffer, \"tree \", 5))\n+\tif (prefixcmp(buffer, \"tree \"))\n \t\treturn objerror(&commit->object, \"invalid format - expected 'tree' line\");\n \tif (get_sha1_hex(buffer+5, tree_sha1) || buffer[45] != '\\n')\n \t\treturn objerror(&commit->object, \"invalid 'tree' line format - bad sha1\");\n \tbuffer += 46;\n-\twhile (!memcmp(buffer, \"parent \", 7)) {\n+\twhile (!prefixcmp(buffer, \"parent \")) {\n \t\tif (get_sha1_hex(buffer+7, sha1) || buffer[47] != '\\n')\n \t\t\treturn objerror(&commit->object, \"invalid 'parent' line format - bad sha1\");\n \t\tbuffer += 48;\n \t}\n-\tif (memcmp(buffer, \"author \", 7))\n+\tif (prefixcmp(buffer, \"author \"))\n \t\treturn objerror(&commit->object, \"invalid format - expected 'author' line\");\n \tfree(commit->buffer);\n \tcommit->buffer = NULL;\ndiff --git a/builtin-mailinfo.c b/builtin-mailinfo.c\nindex d7cb11d..d2d25f8 100644\n--- a/builtin-mailinfo.c\n+++ b/builtin-mailinfo.c\n@@ -242,7 +242,7 @@ static char *cleanup_subject(char *subject)\n \t\tint len, remove;\n \t\tswitch (*subject) {\n \t\tcase 'r': case 'R':\n-\t\t\tif (!memcmp(\"e:\", subject+1, 2)) {\n+\t\t\tif (!prefixcmp(subject+1, \"e:\")) {\n \t\t\t\tsubject += 3;\n \t\t\t\tcontinue;\n \t\t\t}\n@@ -330,11 +330,11 @@ static int check_header(char *line, unsigned linesize, char **hdr_data, int over\n \t}\n \n \t/* for inbody stuff */\n-\tif (!memcmp(\">From\", line, 5) && isspace(line[5]))\n+\tif (!prefixcmp(line, \">From\") && isspace(line[5]))\n \t\treturn 1;\n-\tif (!memcmp(\"[PATCH]\", line, 7) && isspace(line[7])) {\n+\tif (!prefixcmp(line, \"[PATCH]\") && isspace(line[7])) {\n \t\tfor (i = 0; header[i]; i++) {\n-\t\t\tif (!memcmp(\"Subject: \", header[i], 9)) {\n+\t\t\tif (!prefixcmp(header[i], \"Subject: \")) {\n \t\t\t\tif (! handle_header(line, hdr_data[i], 0)) {\n \t\t\t\t\treturn 1;\n \t\t\t\t}\n@@ -360,7 +360,7 @@ static int is_rfc2822_header(char *line)\n \tchar *cp = line;\n \n \t/* Count mbox From headers as headers */\n-\tif (!memcmp(line, \"From \", 5) || !memcmp(line, \">From \", 6))\n+\tif (!prefixcmp(line, \"From \") || !prefixcmp(line, \">From \"))\n \t\treturn 1;\n \n \twhile ((ch = *cp++)) {\n@@ -656,7 +656,7 @@ static int handle_boundary(void)\n {\n \tchar newline[]=\"\\n\";\n again:\n-\tif (!memcmp(line+content_top->boundary_len, \"--\", 2)) {\n+\tif (!prefixcmp(line+content_top->boundary_len, \"--\")) {\n \t\t/* we hit an end boundary */\n \t\t/* pop the current boundary off the stack */\n \t\tfree(content_top->boundary);\n@@ -693,18 +693,18 @@ again:\n static inline int patchbreak(const char *line)\n {\n \t/* Beginning of a \"diff -\" header? */\n-\tif (!memcmp(\"diff -\", line, 6))\n+\tif (!prefixcmp(line, \"diff -\"))\n \t\treturn 1;\n \n \t/* CVS \"Index: \" line? */\n-\tif (!memcmp(\"Index: \", line, 7))\n+\tif (!prefixcmp(line, \"Index: \"))\n \t\treturn 1;\n \n \t/*\n \t * \"--- <filename>\" starts patches without headers\n \t * \"---<sp>*\" is a manual separator\n \t */\n-\tif (!memcmp(\"---\", line, 3)) {\n+\tif (!prefixcmp(line, \"---\")) {\n \t\tline += 3;\n \t\t/* space followed by a filename? */\n \t\tif (line[0] == ' ' && !isspace(line[1]))\n@@ -892,7 +892,7 @@ static void handle_info(void)\n \t\telse\n \t\t\tcontinue;\n \n-\t\tif (!memcmp(header[i], \"Subject\", 7)) {\n+\t\tif (!prefixcmp(header[i], \"Subject\")) {\n \t\t\tif (keep_subject)\n \t\t\t\tsub = hdr;\n \t\t\telse {\n@@ -900,7 +900,7 @@ static void handle_info(void)\n \t\t\t\tcleanup_space(sub);\n \t\t\t}\n \t\t\toutput_header_lines(fout, \"Subject\", sub);\n-\t\t} else if (!memcmp(header[i], \"From\", 4)) {\n+\t\t} else if (!prefixcmp(header[i], \"From\")) {\n \t\t\thandle_from(hdr);\n \t\t\tfprintf(fout, \"Author: %s\\n\", name);\n \t\t\tfprintf(fout, \"Email: %s\\n\", email);\ndiff --git a/builtin-mailsplit.c b/builtin-mailsplit.c\nindex 43fc373..0d10798 100644\n--- a/builtin-mailsplit.c\n+++ b/builtin-mailsplit.c\n@@ -15,7 +15,7 @@ static int is_from_line(const char *line, int len)\n {\n \tconst char *colon;\n \n-\tif (len < 20 || memcmp(\"From \", line, 5))\n+\tif (len < 20 || prefixcmp(line, \"From \"))\n \t\treturn 0;\n \n \tcolon = line + len - 2;\ndiff --git a/builtin-tar-tree.c b/builtin-tar-tree.c\nindex b04719e..0f9f03c 100644\n--- a/builtin-tar-tree.c\n+++ b/builtin-tar-tree.c\n@@ -79,7 +79,7 @@ int cmd_get_tar_commit_id(int argc, const char **argv, const char *prefix)\n \t\tdie(\"git-get-tar-commit-id: read error\");\n \tif (header->typeflag[0] != 'g')\n \t\treturn 1;\n-\tif (memcmp(content, \"52 comment=\", 11))\n+\tif (prefixcmp(content, \"52 comment=\"))\n \t\treturn 1;\n \n \tn = write_in_full(1, content + 11, 41);\ndiff --git a/combine-diff.c b/combine-diff.c\nindex fe5a2a1..bdfb033 100644\n--- a/combine-diff.c\n+++ b/combine-diff.c\n@@ -156,7 +156,7 @@ struct combine_diff_state {\n static void consume_line(void *state_, char *line, unsigned long len)\n {\n \tstruct combine_diff_state *state = state_;\n-\tif (5 < len && !memcmp(\"@@ -\", line, 4)) {\n+\tif (5 < len && !prefixcmp(line, \"@@ -\")) {\n \t\tif (parse_hunk_header(line, len,\n \t\t\t\t      &state->ob, &state->on,\n \t\t\t\t      &state->nb, &state->nn))\ndiff --git a/commit.c b/commit.c\nindex 20fb220..6de2e3b 100644\n--- a/commit.c\n+++ b/commit.c\n@@ -109,11 +109,11 @@ static unsigned long parse_commit_date(const char *buf)\n {\n \tunsigned long date;\n \n-\tif (memcmp(buf, \"author\", 6))\n+\tif (prefixcmp(buf, \"author\"))\n \t\treturn 0;\n \twhile (*buf++ != '\\n')\n \t\t/* nada */;\n-\tif (memcmp(buf, \"committer\", 9))\n+\tif (prefixcmp(buf, \"committer\"))\n \t\treturn 0;\n \twhile (*buf++ != '>')\n \t\t/* nada */;\n@@ -293,7 +293,7 @@ int parse_commit_buffer(struct commit *item, void *buffer, unsigned long size)\n \t\treturn 0;\n \titem->object.parsed = 1;\n \ttail += size;\n-\tif (tail <= bufptr + 5 || memcmp(bufptr, \"tree \", 5))\n+\tif (tail <= bufptr + 5 || prefixcmp(bufptr, \"tree \"))\n \t\treturn error(\"bogus commit object %s\", sha1_to_hex(item->object.sha1));\n \tif (tail <= bufptr + 45 || get_sha1_hex(bufptr + 5, parent) < 0)\n \t\treturn error(\"bad tree pointer in commit %s\",\n@@ -305,7 +305,7 @@ int parse_commit_buffer(struct commit *item, void *buffer, unsigned long size)\n \tpptr = &item->parents;\n \n \tgraft = lookup_commit_graft(item->object.sha1);\n-\twhile (bufptr + 48 < tail && !memcmp(bufptr, \"parent \", 7)) {\n+\twhile (bufptr + 48 < tail && !prefixcmp(bufptr, \"parent \")) {\n \t\tstruct commit *new_parent;\n \n \t\tif (tail <= bufptr + 48 ||\n@@ -915,7 +915,7 @@ static void pp_header(enum cmit_fmt fmt,\n \t\t\tcontinue;\n \t\t}\n \n-\t\tif (!memcmp(line, \"parent \", 7)) {\n+\t\tif (!prefixcmp(line, \"parent \")) {\n \t\t\tif (linelen != 48)\n \t\t\t\tdie(\"bad parent line in commit\");\n \t\t\tcontinue;\n@@ -939,11 +939,11 @@ static void pp_header(enum cmit_fmt fmt,\n \t\t * FULL shows both authors but not dates.\n \t\t * FULLER shows both authors and dates.\n \t\t */\n-\t\tif (!memcmp(line, \"author \", 7)) {\n+\t\tif (!prefixcmp(line, \"author \")) {\n \t\t\tstrbuf_grow(sb, linelen + 80);\n \t\t\tadd_user_info(\"Author\", fmt, sb, line + 7, dmode, encoding);\n \t\t}\n-\t\tif (!memcmp(line, \"committer \", 10) &&\n+\t\tif (!prefixcmp(line, \"committer \") &&\n \t\t    (fmt == CMIT_FMT_FULL || fmt == CMIT_FMT_FULLER)) {\n \t\t\tstrbuf_grow(sb, linelen + 80);\n \t\t\tadd_user_info(\"Commit\", fmt, sb, line + 10, dmode, encoding);\ndiff --git a/connect.c b/connect.c\nindex 94c2d60..7c24711 100644\n--- a/connect.c\n+++ b/connect.c\n@@ -13,7 +13,7 @@ static int check_ref(const char *name, int len, unsigned int flags)\n \tif (!flags)\n \t\treturn 1;\n \n-\tif (len < STRLEN_PATH_REFS || memcmp(name, PATH_REFS, STRLEN_PATH_REFS))\n+\tif (len < STRLEN_PATH_REFS || prefixcmp(name, PATH_REFS))\n \t\treturn 0;\n \n \t/* Skip the \"refs/\" part */\n@@ -25,11 +25,11 @@ static int check_ref(const char *name, int len, unsigned int flags)\n \t\treturn 0;\n \n \t/* REF_HEADS means that we want regular branch heads */\n-\tif ((flags & REF_HEADS) && !memcmp(name, PATH_HEADS, STRLEN_PATH_HEADS))\n+\tif ((flags & REF_HEADS) && !prefixcmp(name, PATH_HEADS))\n \t\treturn 1;\n \n \t/* REF_TAGS means that we want tags */\n-\tif ((flags & REF_TAGS) && !memcmp(name, PATH_TAGS, STRLEN_PATH_TAGS))\n+\tif ((flags & REF_TAGS) && !prefixcmp(name, PATH_TAGS))\n \t\treturn 1;\n \n \t/* All type bits clear means that we are ok with anything */\n@@ -391,7 +391,7 @@ static int git_proxy_command_options(const char *var, const char *value)\n \t\tif (0 <= matchlen) {\n \t\t\t/* core.gitproxy = none for kernel.org */\n \t\t\tif (matchlen == 4 &&\n-\t\t\t    !memcmp(value, \"none\", 4))\n+\t\t\t    !prefixcmp(value, \"none\"))\n \t\t\t\tmatchlen = 0;\n \t\t\tgit_proxy_command = xmemdupz(value, matchlen);\n \t\t}\ndiff --git a/contrib/convert-objects/convert-objects.c b/contrib/convert-objects/convert-objects.c\nindex 90e7900..08c1961 100644\n--- a/contrib/convert-objects/convert-objects.c\n+++ b/contrib/convert-objects/convert-objects.c\n@@ -245,7 +245,7 @@ static void convert_date(void *buffer, unsigned long size, unsigned char *result\n \tsize -= 46;\n \n \t/* \"parent <sha1>\\n\" */\n-\twhile (!memcmp(buffer, \"parent \", 7)) {\n+\twhile (!prefixcmp(buffer, \"parent \")) {\n \t\tmemcpy(new + newlen, buffer, 48);\n \t\tnewlen += 48;\n \t\tbuffer = (char *) buffer + 48;\n@@ -270,11 +270,11 @@ static void convert_commit(void *buffer, unsigned long size, unsigned char *resu\n \tvoid *orig_buffer = buffer;\n \tunsigned long orig_size = size;\n \n-\tif (memcmp(buffer, \"tree \", 5))\n+\tif (prefixcmp(buffer, \"tree \"))\n \t\tdie(\"Bad commit '%s'\", (char*) buffer);\n \tconvert_ascii_sha1((char *) buffer + 5);\n \tbuffer = (char *) buffer + 46;    /* \"tree \" + \"hex sha1\" + \"\\n\" */\n-\twhile (!memcmp(buffer, \"parent \", 7)) {\n+\twhile (!prefixcmp(buffer, \"parent \")) {\n \t\tconvert_ascii_sha1((char *) buffer + 7);\n \t\tbuffer = (char *) buffer + 48;\n \t}\ndiff --git a/convert.c b/convert.c\nindex 0d5e909..cf11235 100644\n--- a/convert.c\n+++ b/convert.c\n@@ -389,7 +389,7 @@ static int count_ident(const char *cp, unsigned long size)\n \t\t\tcontinue;\n \t\tif (size < 3)\n \t\t\tbreak;\n-\t\tif (memcmp(\"Id\", cp, 2))\n+\t\tif (prefixcmp(cp, \"Id\"))\n \t\t\tcontinue;\n \t\tch = cp[2];\n \t\tcp += 3;\n@@ -433,7 +433,7 @@ static int ident_to_git(const char *path, const char *src, size_t len,\n \t\tlen -= dollar + 1 - src;\n \t\tsrc  = dollar + 1;\n \n-\t\tif (len > 3 && !memcmp(src, \"Id:\", 3)) {\n+\t\tif (len > 3 && !prefixcmp(src, \"Id:\")) {\n \t\t\tdollar = memchr(src + 3, '$', len - 3);\n \t\t\tif (!dollar)\n \t\t\t\tbreak;\ndiff --git a/fast-import.c b/fast-import.c\nindex e9c80be..ead3392 100644\n--- a/fast-import.c\n+++ b/fast-import.c\n@@ -1903,7 +1903,7 @@ static void cmd_from_commit(struct branch *b, char *buf, unsigned long size)\n {\n \tif (!buf || size < 46)\n \t\tdie(\"Not a valid commit: %s\", sha1_to_hex(b->sha1));\n-\tif (memcmp(\"tree \", buf, 5)\n+\tif (prefixcmp(buf, \"tree \")\n \t\t|| get_sha1_hex(buf + 5, b->branch_tree.versions[1].sha1))\n \t\tdie(\"The commit %s is corrupt\", sha1_to_hex(b->sha1));\n \thashcpy(b->branch_tree.versions[0].sha1,\ndiff --git a/fetch-pack.c b/fetch-pack.c\nindex c3b7ef6..bf5e84d 100644\n--- a/fetch-pack.c\n+++ b/fetch-pack.c\n@@ -344,7 +344,7 @@ static void filter_refs(struct ref **refs, int nr_match, char **match)\n \n \tfor (ref = *refs; ref; ref = next) {\n \t\tnext = ref->next;\n-\t\tif (!memcmp(ref->name, PATH_REFS, STRLEN_PATH_REFS) &&\n+\t\tif (!prefixcmp(ref->name, PATH_REFS) &&\n \t\t    check_ref_format(ref->name + STRLEN_PATH_REFS))\n \t\t\t; /* trash */\n \t\telse if (fetch_all &&\ndiff --git a/http-fetch.c b/http-fetch.c\nindex 2680fbd..9583579 100644\n--- a/http-fetch.c\n+++ b/http-fetch.c\n@@ -528,7 +528,7 @@ static void process_alternates_response(void *callback_data)\n \t\t\t\t\t\t     - base);\n \t\t\t\t\tokay = 1;\n \t\t\t\t}\n-\t\t\t} else if (!memcmp(data + i, \"../\", 3)) {\n+\t\t\t} else if (!prefixcmp(data + i, \"../\")) {\n \t\t\t\t/* Relative URL; chop the corresponding\n \t\t\t\t * number of subpath from base (and ../\n \t\t\t\t * from data), and concatenate the result.\n@@ -549,7 +549,7 @@ static void process_alternates_response(void *callback_data)\n \t\t\t\ti += 3;\n \t\t\t\tserverlen = strlen(base);\n \t\t\t\twhile (i + 2 < posn &&\n-\t\t\t\t       !memcmp(data + i, \"../\", 3)) {\n+\t\t\t\t       !prefixcmp(data + i, \"../\")) {\n \t\t\t\t\tdo {\n \t\t\t\t\t\tserverlen--;\n \t\t\t\t\t} while (serverlen &&\ndiff --git a/imap-send.c b/imap-send.c\nindex a429a76..6d924fc 100644\n--- a/imap-send.c\n+++ b/imap-send.c\n@@ -464,7 +464,7 @@ v_issue_imap_cmd( imap_store_t *ctx, struct imap_cmd_cb *cb,\n \tif (Verbose) {\n \t\tif (imap->num_in_progress)\n \t\t\tprintf( \"(%d in progress) \", imap->num_in_progress );\n-\t\tif (memcmp( cmd->cmd, \"LOGIN\", 5 ))\n+\t\tif (prefixcmp( cmd->cmd, \"LOGIN\" ))\n \t\t\tprintf( \">>> %s\", buf );\n \t\telse\n \t\t\tprintf( \">>> %d LOGIN <user> <pass>\\n\", cmd->tag );\n@@ -644,7 +644,7 @@ parse_imap_list_l( imap_t *imap, char **sp, list_t **curp, int level )\n \t\t\t\tif (level && *s == ')')\n \t\t\t\t\tbreak;\n \t\t\tcur->len = s - p;\n-\t\t\tif (cur->len == 3 && !memcmp (\"NIL\", p, 3)) {\n+\t\t\tif (cur->len == 3 && !prefixcmp(p, \"NIL\")) {\n \t\t\t\tcur->val = NIL;\n \t\t\t} else {\n \t\t\t\tcur->val = xmemdupz(p, cur->len);\n@@ -824,7 +824,7 @@ get_cmd_result( imap_store_t *ctx, struct imap_cmd *tcmd )\n \t\t\t\tresp = DRV_OK;\n \t\t\telse {\n \t\t\t\tif (!strcmp( \"NO\", arg )) {\n-\t\t\t\t\tif (cmdp->cb.create && cmd && (cmdp->cb.trycreate || !memcmp( cmd, \"[TRYCREATE]\", 11 ))) { /* SELECT, APPEND or UID COPY */\n+\t\t\t\t\tif (cmdp->cb.create && cmd && (cmdp->cb.trycreate || !prefixcmp( cmd, \"[TRYCREATE]\" ))) { /* SELECT, APPEND or UID COPY */\n \t\t\t\t\t\tp = strchr( cmdp->cmd, '\"' );\n \t\t\t\t\t\tif (!issue_imap_cmd( ctx, NULL, \"CREATE \\\"%.*s\\\"\", strchr( p + 1, '\"' ) - p + 1, p )) {\n \t\t\t\t\t\t\tresp = RESP_BAD;\n@@ -849,7 +849,7 @@ get_cmd_result( imap_store_t *ctx, struct imap_cmd *tcmd )\n \t\t\t\t} else /*if (!strcmp( \"BAD\", arg ))*/\n \t\t\t\t\tresp = RESP_BAD;\n \t\t\t\tfprintf( stderr, \"IMAP command '%s' returned response (%s) - %s\\n\",\n-\t\t\t\t\t memcmp (cmdp->cmd, \"LOGIN\", 5) ?\n+\t\t\t\t\t prefixcmp(cmdp->cmd, \"LOGIN\") ?\n \t\t\t\t\t\t\tcmdp->cmd : \"LOGIN <user> <pass>\",\n \t\t\t\t\t\t\targ, cmd ? cmd : \"\");\n \t\t\t}\n@@ -1079,7 +1079,7 @@ imap_store_msg( store_t *gctx, msg_data_t *data, int *uid )\n \t\t\t\t\tsbreak = ebreak = i - 2 + nocr;\n \t\t\t\t\tgoto mktid;\n \t\t\t\t}\n-\t\t\t\tif (!memcmp( fmap + start, \"X-TUID: \", 8 )) {\n+\t\t\t\tif (!prefixcmp( fmap + start, \"X-TUID: \" )) {\n \t\t\t\t\textra -= (ebreak = i) - (sbreak = start) + nocr;\n \t\t\t\t\tgoto mktid;\n \t\t\t\t}\ndiff --git a/mktag.c b/mktag.c\nindex b05260c..7a19110 100644\n--- a/mktag.c\n+++ b/mktag.c\n@@ -52,7 +52,7 @@ static int verify_tag(char *buffer, unsigned long size)\n \n \t/* Verify object line */\n \tobject = buffer;\n-\tif (memcmp(object, \"object \", 7))\n+\tif (prefixcmp(object, \"object \"))\n \t\treturn error(\"char%d: does not start with \\\"object \\\"\", 0);\n \n \tif (get_sha1_hex(object + 7, sha1))\n@@ -60,7 +60,7 @@ static int verify_tag(char *buffer, unsigned long size)\n \n \t/* Verify type line */\n \ttype_line = object + 48;\n-\tif (memcmp(type_line - 1, \"\\ntype \", 6))\n+\tif (prefixcmp(type_line - 1, \"\\ntype \"))\n \t\treturn error(\"char%d: could not find \\\"\\\\ntype \\\"\", 47);\n \n \t/* Verify tag-line */\n@@ -68,7 +68,7 @@ static int verify_tag(char *buffer, unsigned long size)\n \tif (!tag_line)\n \t\treturn error(\"char\" PD_FMT \": could not find next \\\"\\\\n\\\"\", type_line - buffer);\n \ttag_line++;\n-\tif (memcmp(tag_line, \"tag \", 4) || tag_line[4] == '\\n')\n+\tif (prefixcmp(tag_line, \"tag \") || tag_line[4] == '\\n')\n \t\treturn error(\"char\" PD_FMT \": no \\\"tag \\\" found\", tag_line - buffer);\n \n \t/* Get the actual type */\n@@ -97,7 +97,7 @@ static int verify_tag(char *buffer, unsigned long size)\n \t/* Verify the tagger line */\n \ttagger_line = tag_line;\n \n-\tif (memcmp(tagger_line, \"tagger\", 6) || (tagger_line[6] == '\\n'))\n+\tif (prefixcmp(tagger_line, \"tagger\") || (tagger_line[6] == '\\n'))\n \t\treturn error(\"char\" PD_FMT \": could not find \\\"tagger\\\"\", tagger_line - buffer);\n \n \t/* TODO: check for committer info + blank line? */\ndiff --git a/patch-id.c b/patch-id.c\nindex 9349bc5..390f7a7 100644\n--- a/patch-id.c\n+++ b/patch-id.c\n@@ -40,9 +40,9 @@ static void generate_id_list(void)\n \t\tchar *p = line;\n \t\tint len;\n \n-\t\tif (!memcmp(line, \"diff-tree \", 10))\n+\t\tif (!prefixcmp(line, \"diff-tree \"))\n \t\t\tp += 10;\n-\t\telse if (!memcmp(line, \"commit \", 7))\n+\t\telse if (!prefixcmp(line, \"commit \"))\n \t\t\tp += 7;\n \n \t\tif (!get_sha1_hex(p, n)) {\n@@ -53,15 +53,15 @@ static void generate_id_list(void)\n \t\t}\n \n \t\t/* Ignore commit comments */\n-\t\tif (!patchlen && memcmp(line, \"diff \", 5))\n+\t\tif (!patchlen && prefixcmp(line, \"diff \"))\n \t\t\tcontinue;\n \n \t\t/* Ignore git-diff index header */\n-\t\tif (!memcmp(line, \"index \", 6))\n+\t\tif (!prefixcmp(line, \"index \"))\n \t\t\tcontinue;\n \n \t\t/* Ignore line numbers when computing the SHA1 of the patch */\n-\t\tif (!memcmp(line, \"@@ -\", 4))\n+\t\tif (!prefixcmp(line, \"@@ -\"))\n \t\t\tcontinue;\n \n \t\t/* Compute the sha without whitespace */\ndiff --git a/path.c b/path.c\nindex d330bbc..037f2ef 100644\n--- a/path.c\n+++ b/path.c\n@@ -25,7 +25,7 @@ static char *get_pathname(void)\n static char *cleanup_path(char *path)\n {\n \t/* Clean it up */\n-\tif (!memcmp(path, \"./\", 2)) {\n+\tif (!prefixcmp(path, \"./\")) {\n \t\tpath += 2;\n \t\twhile (*path == '/')\n \t\t\tpath++;\n@@ -100,7 +100,7 @@ int validate_headref(const char *path)\n \t/* Make sure it is a \"refs/..\" symlink */\n \tif (S_ISLNK(st.st_mode)) {\n \t\tlen = readlink(path, buffer, sizeof(buffer)-1);\n-\t\tif (len >= STRLEN_PATH_REFS && !memcmp(PATH_REFS, buffer, STRLEN_PATH_REFS))\n+\t\tif (len >= STRLEN_PATH_REFS && !prefixcmp(PATH_REFS, buffer))\n \t\t\treturn 0;\n \t\treturn -1;\n \t}\n@@ -119,12 +119,12 @@ int validate_headref(const char *path)\n \t */\n \tif (len < 4)\n \t\treturn -1;\n-\tif (!memcmp(\"ref:\", buffer, 4)) {\n+\tif (!prefixcmp(buffer, \"ref:\")) {\n \t\tbuf = buffer + 4;\n \t\tlen -= 4;\n \t\twhile (len && isspace(*buf))\n \t\t\tbuf++, len--;\n-\t\tif (len >= STRLEN_PATH_REFS && !memcmp(PATH_REFS, buf, STRLEN_PATH_REFS))\n+\t\tif (len >= STRLEN_PATH_REFS && !prefixcmp(PATH_REFS, buf))\n \t\t\treturn 0;\n \t}\n \ndiff --git a/receive-pack.c b/receive-pack.c\nindex 114ea38..c8e94b6 100644\n--- a/receive-pack.c\n+++ b/receive-pack.c\n@@ -415,7 +415,7 @@ static const char *unpack(void)\n \t\t     len < 46 && (s = xread(ip.out, packname+len, 46-len)) > 0;\n \t\t     len += s);\n \t\tif (len == 46 && packname[45] == '\\n' &&\n-\t\t    memcmp(packname, \"keep\\t\", 5) == 0) {\n+\t\t    prefixcmp(packname, \"keep\\t\") == 0) {\n \t\t\tchar path[PATH_MAX];\n \t\t\tpackname[45] = 0;\n \t\t\tsnprintf(path, sizeof(path), \"%s/pack/pack-%s.keep\",\ndiff --git a/refs.c b/refs.c\nindex 5891609..ba3b5c8 100644\n--- a/refs.c\n+++ b/refs.c\n@@ -409,7 +409,7 @@ const char *resolve_ref(const char *ref, unsigned char *sha1, int reading, int *\n \t\t/* Follow \"normalized\" - ie \"refs/..\" symlinks by hand */\n \t\tif (S_ISLNK(st.st_mode)) {\n \t\t\tlen = readlink(path, buffer, sizeof(buffer)-1);\n-\t\t\tif (len >= STRLEN_PATH_REFS && !memcmp(PATH_REFS, buffer, STRLEN_PATH_REFS)) {\n+\t\t\tif (len >= STRLEN_PATH_REFS && !prefixcmp(buffer, PATH_REFS)) {\n \t\t\t\tbuffer[len] = 0;\n \t\t\t\tstrcpy(ref_buffer, buffer);\n \t\t\t\tref = ref_buffer;\n@@ -438,7 +438,7 @@ const char *resolve_ref(const char *ref, unsigned char *sha1, int reading, int *\n \t\t/*\n \t\t * Is it a symbolic ref?\n \t\t */\n-\t\tif (len < 4 || memcmp(\"ref:\", buffer, 4))\n+\t\tif (len < 4 || prefixcmp(buffer, \"ref:\"))\n \t\t\tbreak;\n \t\tbuf = buffer + 4;\n \t\tlen -= 4;\ndiff --git a/send-pack.c b/send-pack.c\nindex f74e66a..efafab1 100644\n--- a/send-pack.c\n+++ b/send-pack.c\n@@ -151,11 +151,11 @@ static int receive_status(int in)\n \tchar line[1000];\n \tint ret = 0;\n \tint len = packet_read_line(in, line, sizeof(line));\n-\tif (len < 10 || memcmp(line, \"unpack \", 7)) {\n+\tif (len < 10 || prefixcmp(line, \"unpack \")) {\n \t\tfprintf(stderr, \"did not receive status back\\n\");\n \t\treturn -1;\n \t}\n-\tif (memcmp(line, \"unpack ok\\n\", 10)) {\n+\tif (prefixcmp(line, \"unpack ok\\n\")) {\n \t\tfputs(line, stderr);\n \t\tret = -1;\n \t}\n@@ -164,12 +164,12 @@ static int receive_status(int in)\n \t\tif (!len)\n \t\t\tbreak;\n \t\tif (len < 3 ||\n-\t\t    (memcmp(line, \"ok\", 2) && memcmp(line, \"ng\", 2))) {\n+\t\t    (prefixcmp(line, \"ok\") && prefixcmp(line, \"ng\"))) {\n \t\t\tfprintf(stderr, \"protocol error: %s\\n\", line);\n \t\t\tret = -1;\n \t\t\tbreak;\n \t\t}\n-\t\tif (!memcmp(line, \"ok\", 2))\n+\t\tif (!prefixcmp(line, \"ok\"))\n \t\t\tcontinue;\n \t\tfputs(line, stderr);\n \t\tret = -1;\ndiff --git a/tag.c b/tag.c\nindex f62bcdd..305529b 100644\n--- a/tag.c\n+++ b/tag.c\n@@ -46,15 +46,15 @@ int parse_tag_buffer(struct tag *item, void *data, unsigned long size)\n \n \tif (size < 64)\n \t\treturn -1;\n-\tif (memcmp(\"object \", data, 7) || get_sha1_hex((char *) data + 7, sha1))\n+\tif (prefixcmp(data, \"object \") || get_sha1_hex((char *) data + 7, sha1))\n \t\treturn -1;\n \n \ttype_line = (char *) data + 48;\n-\tif (memcmp(\"\\ntype \", type_line-1, 6))\n+\tif (prefixcmp(type_line-1, \"\\ntype \"))\n \t\treturn -1;\n \n \ttag_line = strchr(type_line, '\\n');\n-\tif (!tag_line || memcmp(\"tag \", ++tag_line, 4))\n+\tif (!tag_line || prefixcmp(++tag_line, \"tag \"))\n \t\treturn -1;\n \n \tsig_line = strchr(tag_line, '\\n');\ndiff --git a/xdiff-interface.c b/xdiff-interface.c\nindex be866d1..06d4f8b 100644\n--- a/xdiff-interface.c\n+++ b/xdiff-interface.c\n@@ -44,7 +44,7 @@ int parse_hunk_header(char *line, int len,\n \t}\n \telse\n \t\t*nn = 1;\n-\treturn -!!memcmp(cp, \" @@\", 3);\n+\treturn -!!prefixcmp(cp, \" @@\");\n }\n \n static void consume_one(void *priv_, char *s, unsigned long size)\n-- \n1.5.3.rc5.11.g312e\n"}]}