diff options
author | Dennis Stosberg <dennis@stosberg.net> | 2006-10-02 19:23:53 +0200 |
---|---|---|
committer | Junio C Hamano <junkio@cox.net> | 2006-10-02 20:49:45 +0200 |
commit | 7a21632fa346df58d94d32f09625025931ef13ec (patch) | |
tree | cbe93652257036afd5ce59052c6e76cbe7430a8a /refs.c | |
parent | Merge branch 'maint' (diff) | |
download | git-7a21632fa346df58d94d32f09625025931ef13ec.tar.xz git-7a21632fa346df58d94d32f09625025931ef13ec.zip |
lock_ref_sha1_basic does not remove empty directories on BSD
lock_ref_sha1_basic relies on errno beeing set to EISDIR by the
call to read() in resolve_ref() to detect directories. But calling
read() on a directory under NetBSD returns EPERM, and even succeeds
for local filesystems on FreeBSD.
Signed-off-by: Dennis Stosberg <dennis@stosberg.net>
Signed-off-by: Junio C Hamano <junkio@cox.net>
Diffstat (limited to 'refs.c')
-rw-r--r-- | refs.c | 6 |
1 files changed, 6 insertions, 0 deletions
@@ -42,6 +42,12 @@ const char *resolve_ref(const char *path, unsigned char *sha1, int reading) } } + /* Is it a directory? */ + if (S_ISDIR(st.st_mode)) { + errno = EISDIR; + return NULL; + } + /* * Anything else, just open it and try to use it as * a ref |