apply: move check_to_create_blob() closer to its sole caller

Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Junio C Hamano 2012-06-07 14:06:47 -07:00
parent 5a81266169
commit 813ebf8221

View File

@ -3159,29 +3159,6 @@ static int apply_data(struct patch *patch, struct stat *st, struct cache_entry *
return 0; return 0;
} }
static int check_to_create_blob(const char *new_name, int ok_if_exists)
{
struct stat nst;
if (!lstat(new_name, &nst)) {
if (S_ISDIR(nst.st_mode) || ok_if_exists)
return 0;
/*
* A leading component of new_name might be a symlink
* that is going to be removed with this patch, but
* still pointing at somewhere that has the path.
* In such a case, path "new_name" does not exist as
* far as git is concerned.
*/
if (has_symlink_leading_path(new_name, strlen(new_name)))
return 0;
return error(_("%s: already exists in working directory"), new_name);
}
else if ((errno != ENOENT) && (errno != ENOTDIR))
return error("%s: %s", new_name, strerror(errno));
return 0;
}
static int verify_index_match(struct cache_entry *ce, struct stat *st) static int verify_index_match(struct cache_entry *ce, struct stat *st)
{ {
if (S_ISGITLINK(ce->ce_mode)) { if (S_ISGITLINK(ce->ce_mode)) {
@ -3272,6 +3249,29 @@ static int check_preimage(struct patch *patch, struct cache_entry **ce, struct s
return 0; return 0;
} }
static int check_to_create_blob(const char *new_name, int ok_if_exists)
{
struct stat nst;
if (!lstat(new_name, &nst)) {
if (S_ISDIR(nst.st_mode) || ok_if_exists)
return 0;
/*
* A leading component of new_name might be a symlink
* that is going to be removed with this patch, but
* still pointing at somewhere that has the path.
* In such a case, path "new_name" does not exist as
* far as git is concerned.
*/
if (has_symlink_leading_path(new_name, strlen(new_name)))
return 0;
return error(_("%s: already exists in working directory"), new_name);
}
else if ((errno != ENOENT) && (errno != ENOTDIR))
return error("%s: %s", new_name, strerror(errno));
return 0;
}
/* /*
* Check and apply the patch in-core; leave the result in patch->result * Check and apply the patch in-core; leave the result in patch->result
* for the caller to write it out to the final destination. * for the caller to write it out to the final destination.