From 4aa7de15159b3edfcb23173a4a463606f1bfdd19 Mon Sep 17 00:00:00 2001 From: Russell Belfer Date: Mon, 19 Mar 2012 17:49:46 -0700 Subject: Convert indexer, notes, sha1_lookup, and signature More files moved to new error handling style. --- src/notes.c | 179 +++++++++++++++++++++++++----------------------------------- 1 file changed, 75 insertions(+), 104 deletions(-) (limited to 'src/notes.c') diff --git a/src/notes.c b/src/notes.c index 68554c36f..05c70c643 100644 --- a/src/notes.c +++ b/src/notes.c @@ -21,11 +21,8 @@ static int find_subtree(git_tree **subtree, const git_oid *root, *subtree = NULL; error = git_tree_lookup(&tree, repo, root); - if (error < GIT_SUCCESS) { - if (error == GIT_ENOTFOUND) - return error; /* notes tree doesn't exist yet */ - return git__rethrow(error, "Failed to open notes tree"); - } + if (error < 0) + return error; for (i=0; ioid, &oid); note->message = git__strdup(git_blob_rawcontent(blob)); - if (note->message == NULL) - error = GIT_ENOMEM; + GITERR_CHECK_ALLOC(note->message); *out = note; @@ -240,39 +228,30 @@ static int note_remove(git_repository *repo, git_treebuilder *tb; error = find_subtree(&tree, tree_sha, repo, target, &fanout); - if (error < GIT_SUCCESS) - return git__rethrow(error, "Failed to lookup subtree"); + if (error < 0) + return error; error = find_blob(&oid, tree, target + fanout); - if (error < GIT_SUCCESS) { - git_tree_free(tree); - return git__throw(GIT_ENOTFOUND, "No note found for object %s", - target); - } + if (!error) + error = git_treebuilder_create(&tb, tree); - error = git_treebuilder_create(&tb, tree); git_tree_free(tree); - - if (error < GIT_SUCCESS) - return git__rethrow(error, "Failed to create treebuilder"); + if (error < 0) + return error; error = git_treebuilder_remove(tb, target + fanout); - if (error < GIT_SUCCESS) { - git_treebuilder_free(tb); - return git__rethrow(error, "Failed to remove entry from notes tree"); - } + if (!error) + error = git_treebuilder_write(&oid, repo, tb); - error = git_treebuilder_write(&oid, repo, tb); git_treebuilder_free(tb); - - if (error < GIT_SUCCESS) - return git__rethrow(error, "Failed to write notes tree"); + if (error < 0) + return error; /* create new notes commit */ error = git_tree_lookup(&tree, repo, &oid); - if (error < GIT_SUCCESS) - return git__rethrow(error, "Failed to open new notes tree"); + if (error < 0) + return error; error = git_commit_create(&oid, repo, notes_ref, author, committer, NULL, GIT_NOTES_DEFAULT_MSG_RM, @@ -280,9 +259,6 @@ static int note_remove(git_repository *repo, git_tree_free(tree); - if (error < GIT_SUCCESS) - return git__rethrow(error, "Failed to create new notes commit"); - return error; } @@ -301,8 +277,8 @@ int git_note_read(git_note **out, git_repository *repo, notes_ref = GIT_NOTES_DEFAULT_REF; error = git_reference_lookup(&ref, repo, notes_ref); - if (error < GIT_SUCCESS) - return git__rethrow(error, "Failed to lookup reference `%s`", notes_ref); + if (error < 0) + return error; assert(git_reference_type(ref) == GIT_REF_OID); @@ -311,27 +287,26 @@ int git_note_read(git_note **out, git_repository *repo, git_reference_free(ref); - if (error < GIT_SUCCESS) - return git__rethrow(error, "Failed to find notes commit object"); + if (error < 0) + return error; sha = git_commit_tree_oid(commit); git_commit_free(commit); target = git_oid_allocfmt(oid); - if (target == NULL) - return GIT_ENOMEM; + GITERR_CHECK_ALLOC(target); error = note_lookup(out, repo, sha, target); git__free(target); - return error == GIT_SUCCESS ? GIT_SUCCESS : - git__rethrow(error, "Failed to read note"); + return error; } -int git_note_create(git_oid *out, git_repository *repo, - git_signature *author, git_signature *committer, - const char *notes_ref, const git_oid *oid, - const char *note) +int git_note_create( + git_oid *out, git_repository *repo, + git_signature *author, git_signature *committer, + const char *notes_ref, const git_oid *oid, + const char *note) { int error, nparents = 0; char *target; @@ -343,10 +318,10 @@ int git_note_create(git_oid *out, git_repository *repo, notes_ref = GIT_NOTES_DEFAULT_REF; error = git_reference_lookup(&ref, repo, notes_ref); - if (error < GIT_SUCCESS && error != GIT_ENOTFOUND) - return git__rethrow(error, "Failed to lookup reference `%s`", notes_ref); + if (error < 0 && error != GIT_ENOTFOUND) + return error; - if (error == GIT_SUCCESS) { + if (!error) { assert(git_reference_type(ref) == GIT_REF_OID); /* lookup existing notes tree oid */ @@ -355,16 +330,15 @@ int git_note_create(git_oid *out, git_repository *repo, git_reference_free(ref); error = git_commit_lookup(&commit, repo, &sha); - if (error < GIT_SUCCESS) - return git__rethrow(error, "Failed to find notes commit object"); + if (error < 0) + return error; git_oid_cpy(&sha, git_commit_tree_oid(commit)); nparents++; } target = git_oid_allocfmt(oid); - if (target == NULL) - return GIT_ENOMEM; + GITERR_CHECK_ALLOC(target); error = note_write(out, repo, author, committer, notes_ref, note, nparents ? &sha : NULL, target, @@ -372,8 +346,7 @@ int git_note_create(git_oid *out, git_repository *repo, git__free(target); git_commit_free(commit); - return error == GIT_SUCCESS ? GIT_SUCCESS : - git__rethrow(error, "Failed to write note"); + return error; } int git_note_remove(git_repository *repo, const char *notes_ref, @@ -390,8 +363,8 @@ int git_note_remove(git_repository *repo, const char *notes_ref, notes_ref = GIT_NOTES_DEFAULT_REF; error = git_reference_lookup(&ref, repo, notes_ref); - if (error < GIT_SUCCESS) - return git__rethrow(error, "Failed to lookup reference `%s`", notes_ref); + if (error < 0) + return error; assert(git_reference_type(ref) == GIT_REF_OID); @@ -399,22 +372,20 @@ int git_note_remove(git_repository *repo, const char *notes_ref, git_reference_free(ref); error = git_commit_lookup(&commit, repo, &sha); - if (error < GIT_SUCCESS) - return git__rethrow(error, "Failed to find notes commit object"); + if (error < 0) + return error; git_oid_cpy(&sha, git_commit_tree_oid(commit)); target = git_oid_allocfmt(oid); - if (target == NULL) - return GIT_ENOMEM; + GITERR_CHECK_ALLOC(target); error = note_remove(repo, author, committer, notes_ref, &sha, target, 1, &commit); git__free(target); git_commit_free(commit); - return error == GIT_SUCCESS ? GIT_SUCCESS : - git__rethrow(error, "Failed to read note"); + return error; } const char * git_note_message(git_note *note) -- cgit v1.2.1