Skip to content
  • Erik Faye-Lund's avatar
    win32: use our own dirent.h · d1b6e6e0
    Erik Faye-Lund authored and Junio C Hamano's avatar Junio C Hamano committed
    The mingw-runtime implemenation of opendir, readdir and closedir
    sets errno to 0 on success, something that POSIX explicitly
    forbids. 3ba7a065
    
     ("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's avatarErik Faye-Lund <kusmabite@gmail.com>
    Signed-off-by: default avatarJunio C Hamano <gitster@pobox.com>
    d1b6e6e0