Browse Source

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>
maint
Dennis Stosberg 19 years ago committed by Junio C Hamano
parent
commit
cb626bc630
  1. 6
      refs.c

6
refs.c

@ -42,6 +42,12 @@ const char *resolve_ref(const char *path, unsigned char *sha1, int reading) @@ -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

Loading…
Cancel
Save