Commit 6eb240b0 by Ben Straub

Checkout: use caller's flags for open()

parent 095ccc01
...@@ -64,8 +64,14 @@ static int blob_contents_to_file(git_repository *repo, git_buf *fnbuf, ...@@ -64,8 +64,14 @@ static int blob_contents_to_file(git_repository *repo, git_buf *fnbuf,
const git_oid *id, tree_walk_data *data) const git_oid *id, tree_walk_data *data)
{ {
int retcode = GIT_ERROR; int retcode = GIT_ERROR;
int fd = -1;
git_buf contents = GIT_BUF_INIT; git_buf contents = GIT_BUF_INIT;
/* Deal with pre-existing files */
if (git_path_exists(git_buf_cstr(fnbuf)) &&
data->opts->existing_file_action == GIT_CHECKOUT_SKIP_EXISTING)
return 0;
/* Allow disabling of filters */ /* Allow disabling of filters */
if (data->opts->disable_filters) { if (data->opts->disable_filters) {
git_blob *blob; git_blob *blob;
...@@ -78,23 +84,17 @@ static int blob_contents_to_file(git_repository *repo, git_buf *fnbuf, ...@@ -78,23 +84,17 @@ static int blob_contents_to_file(git_repository *repo, git_buf *fnbuf,
} }
if (retcode < 0) goto bctf_cleanup; if (retcode < 0) goto bctf_cleanup;
/* Deal with pre-existing files */ if ((retcode = git_futils_mkpath2file(git_buf_cstr(fnbuf), data->opts->dir_mode)) < 0)
if (git_path_exists(git_buf_cstr(fnbuf)) &&
data->opts->existing_file_action == GIT_CHECKOUT_SKIP_EXISTING)
goto bctf_cleanup; goto bctf_cleanup;
/* TODO: use p_open with flags */ fd = p_open(git_buf_cstr(fnbuf), data->opts->file_open_flags, data->opts->file_mode);
int fd = git_futils_creat_withpath(git_buf_cstr(fnbuf), if (fd < 0) goto bctf_cleanup;
data->opts->dir_mode,
data->opts->file_mode); if (!p_write(fd, git_buf_cstr(&contents), git_buf_len(&contents)))
if (fd >= 0) { retcode = 0;
if (!p_write(fd, git_buf_cstr(&contents), else
git_buf_len(&contents))) retcode = GIT_ERROR;
retcode = 0; p_close(fd);
else
retcode = GIT_ERROR;
p_close(fd);
}
bctf_cleanup: bctf_cleanup:
git_buf_free(&contents); git_buf_free(&contents);
......
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