Windows: redirect f[re]open("/dev/null") to f[re]open("nul")
On Windows, the equivalent of "/dev/null" is "nul". This implements compatibility wrappers around fopen() and freopen() that check for this particular file name. The new tests exercise code paths where this is relevant. Signed-off-by: Johannes Sixt <j6t@kdbg.org> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
251a4951a2
commit
3fdcdbdf30
@ -140,6 +140,22 @@ int mingw_open (const char *filename, int oflags, ...)
|
|||||||
return fd;
|
return fd;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#undef fopen
|
||||||
|
FILE *mingw_fopen (const char *filename, const char *otype)
|
||||||
|
{
|
||||||
|
if (!strcmp(filename, "/dev/null"))
|
||||||
|
filename = "nul";
|
||||||
|
return fopen(filename, otype);
|
||||||
|
}
|
||||||
|
|
||||||
|
#undef freopen
|
||||||
|
FILE *mingw_freopen (const char *filename, const char *otype, FILE *stream)
|
||||||
|
{
|
||||||
|
if (filename && !strcmp(filename, "/dev/null"))
|
||||||
|
filename = "nul";
|
||||||
|
return freopen(filename, otype, stream);
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* The unit of FILETIME is 100-nanoseconds since January 1, 1601, UTC.
|
* The unit of FILETIME is 100-nanoseconds since January 1, 1601, UTC.
|
||||||
* Returns the 100-nanoseconds ("hekto nanoseconds") since the epoch.
|
* Returns the 100-nanoseconds ("hekto nanoseconds") since the epoch.
|
||||||
|
@ -170,6 +170,12 @@ int link(const char *oldpath, const char *newpath);
|
|||||||
int mingw_open (const char *filename, int oflags, ...);
|
int mingw_open (const char *filename, int oflags, ...);
|
||||||
#define open mingw_open
|
#define open mingw_open
|
||||||
|
|
||||||
|
FILE *mingw_fopen (const char *filename, const char *otype);
|
||||||
|
#define fopen mingw_fopen
|
||||||
|
|
||||||
|
FILE *mingw_freopen (const char *filename, const char *otype, FILE *stream);
|
||||||
|
#define freopen mingw_freopen
|
||||||
|
|
||||||
char *mingw_getcwd(char *pointer, int len);
|
char *mingw_getcwd(char *pointer, int len);
|
||||||
#define getcwd mingw_getcwd
|
#define getcwd mingw_getcwd
|
||||||
|
|
||||||
|
@ -341,6 +341,13 @@ test_expect_success 'fetch into the current branch with --update-head-ok' '
|
|||||||
|
|
||||||
'
|
'
|
||||||
|
|
||||||
|
test_expect_success 'fetch --dry-run' '
|
||||||
|
|
||||||
|
rm -f .git/FETCH_HEAD &&
|
||||||
|
git fetch --dry-run . &&
|
||||||
|
! test -f .git/FETCH_HEAD
|
||||||
|
'
|
||||||
|
|
||||||
test_expect_success "should be able to fetch with duplicate refspecs" '
|
test_expect_success "should be able to fetch with duplicate refspecs" '
|
||||||
mkdir dups &&
|
mkdir dups &&
|
||||||
cd dups &&
|
cd dups &&
|
||||||
|
@ -64,6 +64,10 @@ cp new1.txt test.txt
|
|||||||
test_expect_success "merge without conflict" \
|
test_expect_success "merge without conflict" \
|
||||||
"git merge-file test.txt orig.txt new2.txt"
|
"git merge-file test.txt orig.txt new2.txt"
|
||||||
|
|
||||||
|
cp new1.txt test.txt
|
||||||
|
test_expect_success "merge without conflict (--quiet)" \
|
||||||
|
"git merge-file --quiet test.txt orig.txt new2.txt"
|
||||||
|
|
||||||
cp new1.txt test2.txt
|
cp new1.txt test2.txt
|
||||||
test_expect_success "merge without conflict (missing LF at EOF)" \
|
test_expect_success "merge without conflict (missing LF at EOF)" \
|
||||||
"git merge-file test2.txt orig.txt new2.txt"
|
"git merge-file test2.txt orig.txt new2.txt"
|
||||||
|
Loading…
Reference in New Issue
Block a user