diff options
Diffstat (limited to 'src/fileops.c')
-rw-r--r-- | src/fileops.c | 64 |
1 files changed, 2 insertions, 62 deletions
diff --git a/src/fileops.c b/src/fileops.c index d754c49ee..5dd4a3806 100644 --- a/src/fileops.c +++ b/src/fileops.c @@ -25,11 +25,11 @@ int gitfo_mkdir_2file(const char *file_path) return GIT_SUCCESS; } -static int creat_tempfile(char *path_out, const char *tmp_dir, const char *filename) +int gitfo_mktemp(char *path_out, const char *filename) { int fd; - git__joinpath(path_out, tmp_dir, filename); + strcpy(path_out, filename); strcat(path_out, "_git2_XXXXXX"); #if defined(_MSC_VER) @@ -46,66 +46,6 @@ static int creat_tempfile(char *path_out, const char *tmp_dir, const char *filen return fd >= 0 ? fd : GIT_EOSERR; } -static const char *find_tmpdir(void) -{ - static int tmpdir_not_found = 0; - static char temp_dir[GIT_PATH_MAX]; - static const char *env_vars[] = { - "TEMP", "TMP", "TMPDIR" - }; - - unsigned int i, j; - char test_file[GIT_PATH_MAX]; - - if (tmpdir_not_found) - return NULL; - - if (temp_dir[0] != '\0') - return temp_dir; - - for (i = 0; i < ARRAY_SIZE(env_vars); ++i) { - char *env_path; - - env_path = getenv(env_vars[i]); - if (env_path == NULL) - continue; - - strcpy(temp_dir, env_path); - - /* Fix backslashes because Windows environment vars - * are probably fucked up */ - for (j = 0; j < strlen(temp_dir); ++j) - if (temp_dir[j] == '\\') - temp_dir[j] = '/'; - - if (creat_tempfile(test_file, temp_dir, "writetest") >= 0) { - gitfo_unlink(test_file); - return temp_dir; - } - } - - /* last resort: current folder. */ - strcpy(temp_dir, "./"); - if (creat_tempfile(test_file, temp_dir, "writetest") >= 0) { - gitfo_unlink(test_file); - return temp_dir; - } - - tmpdir_not_found = 1; - return NULL; -} - -int gitfo_creat_tmp(char *path_out, const char *filename) -{ - const char *tmp_dir; - - tmp_dir = find_tmpdir(); - if (tmp_dir == NULL) - return GIT_EOSERR; - - return creat_tempfile(path_out, tmp_dir, filename); -} - int gitfo_open(const char *path, int flags) { int fd = open(path, flags | O_BINARY); |