On Cygwin 1.7, if filesystems are mounted with the "noacl" option, files without write permission (in particular, the temp files created in write_loose_object()) have their "read-only" flags set in NTFS. "read-only" files can't be unlinked. For Cygwin, set write permissions on files that are about to be unlinked. Signed-off-by: Rei Thiessen <rei.thiessen@xxxxxxxxx> --- compat/cygwin.c | 7 +++++++ compat/cygwin.h | 3 +++ 2 files changed, 10 insertions(+), 0 deletions(-) diff --git a/compat/cygwin.c b/compat/cygwin.c index b4a51b9..f40ee6d 100644 --- a/compat/cygwin.c +++ b/compat/cygwin.c @@ -141,3 +141,10 @@ static int cygwin_lstat_stub(const char *file_name, struct stat *buf) stat_fn_t cygwin_stat_fn = cygwin_stat_stub; stat_fn_t cygwin_lstat_fn = cygwin_lstat_stub; +#undef unlink +int cygwin_unlink(const char *pathname) +{ + /* "read-only" files can't be unlinked */ + chmod(pathname, 0666); + return unlink(pathname); +} diff --git a/compat/cygwin.h b/compat/cygwin.h index a3229f5..aa2ba3e 100644 --- a/compat/cygwin.h +++ b/compat/cygwin.h @@ -7,3 +7,6 @@ extern stat_fn_t cygwin_lstat_fn; #define stat(path, buf) (*cygwin_stat_fn)(path, buf) #define lstat(path, buf) (*cygwin_lstat_fn)(path, buf) + +int cygwin_unlink(const char *pathname); +#define unlink cygwin_unlink -- 1.7.4.1 -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html