From: Jason Riedy Date: Tue, 16 Jan 2007 01:30:59 +0000 (-0800) Subject: Solaris 5.8 returns ENOTDIR for inappropriate renames. X-Git-Tag: v1.5.0-rc2~77 X-Git-Url: http://git.tremily.us/?a=commitdiff_plain;h=d9e74d5745127a5d483788c264fe0d4332868d67;p=git.git Solaris 5.8 returns ENOTDIR for inappropriate renames. The reflog code clears empty directories when rename returns either EISDIR or ENOTDIR. Seems to be the only place. Signed-off-by: Jason Riedy Signed-off-by: Junio C Hamano --- diff --git a/refs.c b/refs.c index 689ac50ba..7d858637c 100644 --- a/refs.c +++ b/refs.c @@ -837,7 +837,12 @@ int rename_ref(const char *oldref, const char *newref, const char *logmsg) retry: if (log && rename(git_path("tmp-renamed-log"), git_path("logs/%s", newref))) { - if (errno==EISDIR) { + if (errno==EISDIR || errno==ENOTDIR) { + /* + * rename(a, b) when b is an existing + * directory ought to result in ISDIR, but + * Solaris 5.8 gives ENOTDIR. Sheesh. + */ if (remove_empty_directories(git_path("logs/%s", newref))) { error("Directory not empty: logs/%s", newref); goto rollback;