I guess our home directories recently were changed from symlinks to autmounts. Solaris 8's mkdir(2) returns ENOSYS when applied to these, breaking safe_create_leading_directories. I don't know if ENOSYS is available everywhere, or if this odd behavior is appropriate everywhere.
This works for me, but should I wrap mkdir for bizarre behavior by adding a compat/gitmkdir.c?
Signed-off-by: Jason Riedy <ejr@cs.berkeley.edu>
---
sha1_file.c | 8 ++++++++ 1 files changed, 8 insertions(+), 0 deletions(-)
4f388cf48271ec1547817a407ef1afe432cd59d4
Show changes to sha1_file.c +8 −0
diff --git a/sha1_file.c b/sha1_file.c index 20f6419..65407e2 100644 --- a/sha1_file.c +++ b/sha1_file.c @@ -83,7 +83,15 @@ int safe_create_leading_directories(char break; *pos = 0; if (mkdir(path, 0777) < 0) { +#if !defined(ENOSYS) if (errno != EEXIST) { +#else + if (errno != EEXIST && errno != ENOSYS) { +#endif +/* + * Solaris 8 appears to return ENOSYS when mkdir is applied + * to an automount. + */ *pos = '/'; return -1; }
-- 1.1.6.g7159