summaryrefslogtreecommitdiff
path: root/src/fileops.c
diff options
context:
space:
mode:
authorVicent Martí <vicent@github.com>2013-09-17 09:57:55 -0700
committerVicent Martí <vicent@github.com>2013-09-17 09:57:55 -0700
commitbb371b62e950e3307d3acf2f772495a60565d266 (patch)
treeb4479ec3ad261bcac13493ee3f5ad45d15dfdda2 /src/fileops.c
parent4581f9d8ab72e9b97817e1eaa7154bcec1c7f0b1 (diff)
parentf60ed4e6495b8bf68d0604335672e6f300330b3b (diff)
downloadlibgit2-bb371b62e950e3307d3acf2f772495a60565d266.tar.gz
Merge pull request #1847 from libgit2/filters-alternative
Alternative proposal for filter API
Diffstat (limited to 'src/fileops.c')
-rw-r--r--src/fileops.c29
1 files changed, 11 insertions, 18 deletions
diff --git a/src/fileops.c b/src/fileops.c
index 126d45f26..bd845e982 100644
--- a/src/fileops.c
+++ b/src/fileops.c
@@ -6,6 +6,7 @@
*/
#include "common.h"
#include "fileops.h"
+#include "global.h"
#include <ctype.h>
#if GIT_WIN32
#include "win32/findfile.h"
@@ -55,18 +56,8 @@ int git_futils_creat_withpath(const char *path, const mode_t dirmode, const mode
int git_futils_creat_locked(const char *path, const mode_t mode)
{
- int fd;
-
-#ifdef GIT_WIN32
- git_win32_path buf;
-
- git_win32_path_from_c(buf, path);
- fd = _wopen(buf, O_WRONLY | O_CREAT | O_TRUNC |
- O_EXCL | O_BINARY | O_CLOEXEC, mode);
-#else
- fd = open(path, O_WRONLY | O_CREAT | O_TRUNC |
+ int fd = p_open(path, O_WRONLY | O_CREAT | O_TRUNC |
O_EXCL | O_BINARY | O_CLOEXEC, mode);
-#endif
if (fd < 0) {
giterr_set(GITERR_OS, "Failed to create locked file '%s'", path);
@@ -635,6 +626,13 @@ static git_futils_dirs_guess_cb git_futils__dir_guess[GIT_FUTILS_DIR__MAX] = {
git_futils_guess_xdg_dirs,
};
+static void git_futils_dirs_global_shutdown(void)
+{
+ int i;
+ for (i = 0; i < GIT_FUTILS_DIR__MAX; ++i)
+ git_buf_free(&git_futils__dirs[i]);
+}
+
int git_futils_dirs_global_init(void)
{
git_futils_dir_t i;
@@ -644,6 +642,8 @@ int git_futils_dirs_global_init(void)
for (i = 0; !error && i < GIT_FUTILS_DIR__MAX; i++)
error = git_futils_dirs_get(&path, i);
+ git__on_shutdown(git_futils_dirs_global_shutdown);
+
return error;
}
@@ -726,13 +726,6 @@ int git_futils_dirs_set(git_futils_dir_t which, const char *search_path)
return git_buf_oom(&git_futils__dirs[which]) ? -1 : 0;
}
-void git_futils_dirs_free(void)
-{
- int i;
- for (i = 0; i < GIT_FUTILS_DIR__MAX; ++i)
- git_buf_free(&git_futils__dirs[i]);
-}
-
static int git_futils_find_in_dirlist(
git_buf *path, const char *name, git_futils_dir_t which, const char *label)
{