Cloud storage: clean up error propagation

We were falling of the end of a number of functions that were supposed to
return 0 on success or an error.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
Dirk Hohndel 2015-06-13 20:03:20 -07:00
parent 0c5ea57f1c
commit 9ec155fad0
2 changed files with 14 additions and 8 deletions

View file

@ -199,6 +199,8 @@ static int try_to_update(git_repository *repo, git_remote *origin, git_reference
static int check_remote_status(git_repository *repo, git_remote *origin, const char *branch, enum remote_transport rt)
{
int error = 0;
git_reference *local_ref, *remote_ref;
if (git_branch_lookup(&local_ref, repo, branch, GIT_BRANCH_LOCAL))
@ -215,15 +217,16 @@ static int check_remote_status(git_repository *repo, git_remote *origin, const c
opts.callbacks.credentials = credential_ssh_cb;
else if (rt == RT_HTTPS)
opts.callbacks.credentials = credential_https_cb;
git_remote_push(origin, &refspec, &opts);
error = git_remote_push(origin, &refspec, &opts);
#else
git_remote_push(origin, &refspec, NULL);
error = git_remote_push(origin, &refspec, NULL);
#endif
} else {
try_to_update(repo, origin, local_ref, remote_ref, rt);
error = try_to_update(repo, origin, local_ref, remote_ref, rt);
git_reference_free(remote_ref);
}
git_reference_free(local_ref);
return error;
}
int sync_with_remote(git_repository *repo, const char *remote, const char *branch, enum remote_transport rt)
@ -265,12 +268,14 @@ int sync_with_remote(git_repository *repo, const char *remote, const char *branc
error = git_remote_fetch(origin, NULL, NULL, NULL);
#endif
// NOTE! A fetch error is not fatal, we just report it
if (error)
if (error) {
report_error("Unable to fetch remote '%s'", remote);
else
check_remote_status(repo, origin, branch, rt);
error = 0;
} else {
error = check_remote_status(repo, origin, branch, rt);
}
git_remote_free(origin);
return error;
}
static git_repository *update_local_repo(const char *localdir, const char *remote, const char *branch, enum remote_transport rt)

View file

@ -1142,9 +1142,10 @@ int do_git_save(git_repository *repo, const char *branch, const char *remote, bo
if (prefs.cloud_background_sync) {
/* now sync the tree with the cloud server */
if (strstr(remote, "https://cloud.subsurface-divelog.org")) {
sync_with_remote(repo, remote, branch, RT_HTTPS);
return sync_with_remote(repo, remote, branch, RT_HTTPS);
}
}
return 0;
}
int git_save_dives(struct git_repository *repo, const char *branch, const char *remote, bool select_only)