Commit f94825c1 by Carlos Martín Nieto

fileops: save errno and report file existence

We need to save the errno, lest we clobber it in the giterr_set()
call. Also add code for reporting that a path component is missing,
which is a distinct failure mode.
parent 2d9aec99
...@@ -72,8 +72,16 @@ int git_futils_creat_locked(const char *path, const mode_t mode) ...@@ -72,8 +72,16 @@ int git_futils_creat_locked(const char *path, const mode_t mode)
O_EXCL | O_BINARY | O_CLOEXEC, mode); O_EXCL | O_BINARY | O_CLOEXEC, mode);
if (fd < 0) { if (fd < 0) {
int error = errno;
giterr_set(GITERR_OS, "Failed to create locked file '%s'", path); giterr_set(GITERR_OS, "Failed to create locked file '%s'", path);
return errno == EEXIST ? GIT_ELOCKED : -1; switch (error) {
case EEXIST:
return GIT_ELOCKED;
case ENOENT:
return GIT_ENOTFOUND;
default:
return -1;
}
} }
return fd; return fd;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment