int at, reflog_len, nth_prior = 0;
if (len == 40 && !get_sha1_hex(str, sha1)) {
- if (warn_on_object_refname_ambiguity) {
+ if (warn_ambiguous_refs && warn_on_object_refname_ambiguity) {
refs_found = dwim_ref(str, len, tmp_sha1, &real_ref);
- if (refs_found > 0 && warn_ambiguous_refs) {
+ if (refs_found > 0) {
warning(warn_msg, len, str);
if (advice_object_name_warning)
fprintf(stderr, "%s\n", _(object_name_msg));
if (read_ref_at(real_ref, at_time, nth, sha1, NULL,
&co_time, &co_tz, &co_cnt)) {
if (!len) {
- if (!prefixcmp(real_ref, "refs/heads/")) {
+ if (starts_with(real_ref, "refs/heads/")) {
str = real_ref + 11;
len = strlen(real_ref + 11);
} else {
if (ret)
return ret;
commit = lookup_commit_reference(sha1);
- if (!commit)
- return -1;
if (parse_commit(commit))
return -1;
if (!idx) {
return -1;
sp++; /* beginning of type name, or closing brace for empty */
- if (!prefixcmp(sp, "commit}"))
+ if (starts_with(sp, "commit}"))
expected_type = OBJ_COMMIT;
- else if (!prefixcmp(sp, "tag}"))
+ else if (starts_with(sp, "tag}"))
expected_type = OBJ_TAG;
- else if (!prefixcmp(sp, "tree}"))
+ else if (starts_with(sp, "tree}"))
expected_type = OBJ_TREE;
- else if (!prefixcmp(sp, "blob}"))
+ else if (starts_with(sp, "blob}"))
expected_type = OBJ_BLOB;
- else if (!prefixcmp(sp, "object}"))
+ else if (starts_with(sp, "object}"))
expected_type = OBJ_ANY;
else if (sp[0] == '}')
expected_type = OBJ_NONE;
const char *match = NULL, *target = NULL;
size_t len;
- if (!prefixcmp(message, "checkout: moving from ")) {
+ if (starts_with(message, "checkout: moving from ")) {
match = message + strlen("checkout: moving from ");
target = strstr(match, " to ");
}
int interpret_branch_name(const char *name, int namelen, struct strbuf *buf)
{
char *at;
+ const char *start;
int len = interpret_nth_prior_checkout(name, namelen, buf);
if (!namelen)
return reinterpret(name, namelen, len, buf);
}
- at = memchr(name, '@', namelen);
- if (!at)
- return -1;
+ for (start = name;
+ (at = memchr(start, '@', namelen - (start - name)));
+ start = at + 1) {
- len = interpret_empty_at(name, namelen, at - name, buf);
- if (len > 0)
- return reinterpret(name, namelen, len, buf);
+ len = interpret_empty_at(name, namelen, at - name, buf);
+ if (len > 0)
+ return reinterpret(name, namelen, len, buf);
- len = interpret_upstream_mark(name, namelen, at - name, buf);
- if (len > 0)
- return len;
+ len = interpret_upstream_mark(name, namelen, at - name, buf);
+ if (len > 0)
+ return len;
+ }
return -1;
}
static char *resolve_relative_path(const char *rel)
{
- if (prefixcmp(rel, "./") && prefixcmp(rel, "../"))
+ if (!starts_with(rel, "./") && !starts_with(rel, "../"))
return NULL;
if (!startup_info)