struct ref_lock *lock;
cmd->error_string = NULL;
- if (!strncmp(name, "refs/", 5) && check_ref_format(name + 5)) {
+ if (!prefixcmp(name, "refs/") && check_ref_format(name + 5)) {
cmd->error_string = "funny refname";
return error("refusing to create funny ref '%s' locally",
name);
}
if (deny_non_fast_forwards && !is_null_sha1(new_sha1) &&
!is_null_sha1(old_sha1) &&
- !strncmp(name, "refs/heads/", 11)) {
+ !prefixcmp(name, "refs/heads/")) {
struct commit *old_commit, *new_commit;
struct commit_list *bases, *ent;
cmd->error_string = "failed to lock";
return error("failed to lock %s", name);
}
- write_ref_sha1(lock, new_sha1, "push");
+ if (write_ref_sha1(lock, new_sha1, "push")) {
+ cmd->error_string = "failed to write";
+ return -1; /* error() already called */
+ }
fprintf(stderr, "%s: %s -> %s\n", name, old_hex, new_hex);
}
return 0;