return -1;
sp++; /* beginning of type name, or closing brace for empty */
- if (!strncmp(commit_type, sp, 6) && sp[6] == '}')
+ if (!prefixcmp(sp, "commit}"))
expected_type = OBJ_COMMIT;
- else if (!strncmp(tree_type, sp, 4) && sp[4] == '}')
+ else if (!prefixcmp(sp, "tag}"))
+ expected_type = OBJ_TAG;
+ else if (!prefixcmp(sp, "tree}"))
expected_type = OBJ_TREE;
- else if (!strncmp(blob_type, sp, 4) && sp[4] == '}')
+ else if (!prefixcmp(sp, "blob}"))
expected_type = OBJ_BLOB;
else if (!prefixcmp(sp, "object}"))
expected_type = OBJ_ANY;
return st;
}
-/* parse @something syntax, when 'something' is not {.*} */
-static int interpret_empty_at(const char *name, int namelen, int len, struct strbuf *buf)
-{
- if (len || name[1] == '{')
- return -1;
-
- strbuf_reset(buf);
- strbuf_add(buf, "HEAD", 4);
- return 1;
-}
-
static int reinterpret(const char *name, int namelen, int len, struct strbuf *buf)
{
/* we have extra data, which might need further processing */
cp = strchr(name, '@');
if (!cp)
return -1;
-
- len = interpret_empty_at(name, namelen, cp - name, buf);
- if (len > 0)
- return reinterpret(name, namelen, len, buf);
-
tmp_len = upstream_mark(cp, namelen - (cp - name));
if (!tmp_len)
return -1;
-
len = cp + tmp_len - name;
cp = xstrndup(name, cp - name);
upstream = branch_get(*cp ? cp : NULL);