Commit fdd1e04c by Jakob Pfender

fileops: Allow differentiation between deep and shallow exists()

When calling gitfo_exists() on a symbolic link, sometimes we need to
simply check whether the link exists and sometimes we need to check
whether the file pointed to by the symlink exists.

Introduce a new function gitfo_shallow_exists that only checks if the
link exists and revert gitfo_exists to the original functionality of
checking whether the file pointed to by the link exists.
parent ee4912bf
......@@ -172,6 +172,12 @@ int gitfo_isfile(const char *path)
int gitfo_exists(const char *path)
{
assert(path);
return access(path, F_OK);
}
int gitfo_shallow_exists(const char *path)
{
assert(path);
struct stat st;
return gitfo_lstat(path, &st);
......
......@@ -411,7 +411,7 @@ static int index_init_entry(git_index_entry *entry, git_index *index, const char
git__joinpath(full_path, index->repository->path_workdir, rel_path);
if (gitfo_exists(full_path) < 0)
if (gitfo_shallow_exists(full_path) < 0)
return git__throw(GIT_ENOTFOUND, "Failed to initialize entry. %s does not exist", full_path);
if (gitfo_lstat(full_path, &st) < 0)
......
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