Skip to content

Commit 139d703

Browse files
committed
Merge branch 'ps/reftable-windows-unlink-fix'
Portability fix. * ps/reftable-windows-unlink-fix: reftable: ignore file-in-use errors when unlink(3p) fails on Windows
2 parents 485f5f8 + 3262a53 commit 139d703

File tree

3 files changed

+11
-3
lines changed

3 files changed

+11
-3
lines changed

compat/mingw-posix.h

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -201,8 +201,12 @@ int uname(struct utsname *buf);
201201
* replacements of existing functions
202202
*/
203203

204-
int mingw_unlink(const char *pathname);
205-
#define unlink mingw_unlink
204+
int mingw_unlink(const char *pathname, int handle_in_use_error);
205+
#ifdef MINGW_DONT_HANDLE_IN_USE_ERROR
206+
# define unlink(path) mingw_unlink(path, 0)
207+
#else
208+
# define unlink(path) mingw_unlink(path, 1)
209+
#endif
206210

207211
int mingw_rmdir(const char *path);
208212
#define rmdir mingw_rmdir

compat/mingw.c

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -302,7 +302,7 @@ static wchar_t *normalize_ntpath(wchar_t *wbuf)
302302
return wbuf;
303303
}
304304

305-
int mingw_unlink(const char *pathname)
305+
int mingw_unlink(const char *pathname, int handle_in_use_error)
306306
{
307307
int ret, tries = 0;
308308
wchar_t wpathname[MAX_PATH];
@@ -317,6 +317,9 @@ int mingw_unlink(const char *pathname)
317317
while ((ret = _wunlink(wpathname)) == -1 && tries < ARRAY_SIZE(delay)) {
318318
if (!is_file_in_use_error(GetLastError()))
319319
break;
320+
if (!handle_in_use_error)
321+
return ret;
322+
320323
/*
321324
* We assume that some other process had the source or
322325
* destination file open at the wrong moment and retry.

reftable/system.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ license that can be found in the LICENSE file or at
1111

1212
/* This header glues the reftable library to the rest of Git */
1313

14+
#define MINGW_DONT_HANDLE_IN_USE_ERROR
1415
#include "compat/posix.h"
1516
#include "compat/zlib-compat.h"
1617

0 commit comments

Comments
 (0)