win32: use our own dirent.h
authorErik Faye-Lund <kusmabite@gmail.com>
Tue, 23 Nov 2010 18:38:29 +0000 (19:38 +0100)
committerJunio C Hamano <gitster@pobox.com>
Wed, 24 Nov 2010 00:06:50 +0000 (16:06 -0800)
commitd1b6e6e015501272c7491b3a4adf3cd3904edefa
treeb93cb52156b48591fe6ea5d873528cc9186f8c09
parente7772600e94146ddbf5ef6b08d0ea7d6fc8fbcad
win32: use our own dirent.h

The mingw-runtime implemenation of opendir, readdir and closedir
sets errno to 0 on success, something that POSIX explicitly
forbids. 3ba7a06 ("A loose object is not corrupt if it cannot be
read due to EMFILE") introduce a dependency on this behaviour,
leading to a broken "git clone" on Windows.

compat/mingw.c contains an implementation of readdir, and
compat/msvc.c contains implementations of opendir and closedir.

Move these to compat/win32/dirent.[ch], and change to our own DIR
structure at the same time.

This provides a generic Win32-implementation of opendir, readdir
and closedir which works on both MinGW and MSVC and does not reset
errno, and as a result git clone is working again on Windows.

Signed-off-by: Erik Faye-Lund <kusmabite@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Makefile
compat/mingw.c
compat/mingw.h
compat/msvc.c
compat/vcbuild/include/dirent.h [deleted file]
compat/win32/dirent.c [new file with mode: 0644]
compat/win32/dirent.h [new file with mode: 0644]