Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/libgit2.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVicent Marti <tanoku@gmail.com>2012-12-19 15:52:14 +0400
committerVicent Marti <tanoku@gmail.com>2012-12-19 15:52:14 +0400
commit08a325a32139fcc396a325ecdbdf6609efa1ab5c (patch)
tree6f374487c1fcea657d3df3696b1711fc12d7aa5d /src/reflog.c
parent8a810441a206398640fce37f54f38c53e19e9b2c (diff)
reflog: Actual error handling
Diffstat (limited to 'src/reflog.c')
-rw-r--r--src/reflog.c18
1 files changed, 13 insertions, 5 deletions
diff --git a/src/reflog.c b/src/reflog.c
index fada1e826..96047441f 100644
--- a/src/reflog.c
+++ b/src/reflog.c
@@ -339,7 +339,7 @@ cleanup:
int git_reflog_rename(git_reference *ref, const char *new_name)
{
- int error, fd;
+ int error = 0, fd;
git_buf old_path = GIT_BUF_INIT;
git_buf new_path = GIT_BUF_INIT;
git_buf temp_path = GIT_BUF_INIT;
@@ -370,25 +370,33 @@ int git_reflog_rename(git_reference *ref, const char *new_name)
if (git_buf_joinpath(&temp_path, git_buf_cstr(&temp_path), "temp_reflog") < 0)
return -1;
- if ((fd = git_futils_mktmp(&temp_path, git_buf_cstr(&temp_path))) < 0)
+ if ((fd = git_futils_mktmp(&temp_path, git_buf_cstr(&temp_path))) < 0) {
+ error = -1;
goto cleanup;
+ }
p_close(fd);
if (p_rename(git_buf_cstr(&old_path), git_buf_cstr(&temp_path)) < 0) {
giterr_set(GITERR_OS, "Failed to rename reflog for %s", new_name);
+ error = -1;
goto cleanup;
}
if (git_path_isdir(git_buf_cstr(&new_path)) &&
- (git_futils_rmdir_r(git_buf_cstr(&new_path), NULL, GIT_RMDIR_SKIP_NONEMPTY) < 0))
+ (git_futils_rmdir_r(git_buf_cstr(&new_path), NULL, GIT_RMDIR_SKIP_NONEMPTY) < 0)) {
+ error = -1;
goto cleanup;
+ }
- if (git_futils_mkpath2file(git_buf_cstr(&new_path), GIT_REFLOG_DIR_MODE) < 0)
+ if (git_futils_mkpath2file(git_buf_cstr(&new_path), GIT_REFLOG_DIR_MODE) < 0) {
+ error = -1;
goto cleanup;
+ }
if (p_rename(git_buf_cstr(&temp_path), git_buf_cstr(&new_path)) < 0) {
giterr_set(GITERR_OS, "Failed to rename reflog for %s", new_name);
+ error = -1;
}
cleanup:
@@ -397,7 +405,7 @@ cleanup:
git_buf_free(&new_path);
git_buf_free(&normalized);
- return -1;
+ return error;
}
int git_reflog_delete(git_reference *ref)