Commit 318bb763 by Sven Strickroth

Make libgit2 work on Windows Vista again

(fixes issue #3316)

Signed-off-by: Sven Strickroth <email@cs-ware.de>
parent 42156d56
...@@ -12,6 +12,7 @@ ...@@ -12,6 +12,7 @@
#include "win32/posix.h" #include "win32/posix.h"
#include "win32/buffer.h" #include "win32/buffer.h"
#include "win32/w32_util.h" #include "win32/w32_util.h"
#include "win32/version.h"
#else #else
#include <dirent.h> #include <dirent.h>
#endif #endif
...@@ -1085,7 +1086,7 @@ int git_path_direach( ...@@ -1085,7 +1086,7 @@ int git_path_direach(
#if defined(GIT_WIN32) && !defined(__MINGW32__) #if defined(GIT_WIN32) && !defined(__MINGW32__)
/* Using _FIND_FIRST_EX_LARGE_FETCH may increase performance in Windows 7 /* Using _FIND_FIRST_EX_LARGE_FETCH may increase performance in Windows 7
* and better. Prior versions will ignore this. * and better.
*/ */
#ifndef FIND_FIRST_EX_LARGE_FETCH #ifndef FIND_FIRST_EX_LARGE_FETCH
# define FIND_FIRST_EX_LARGE_FETCH 2 # define FIND_FIRST_EX_LARGE_FETCH 2
...@@ -1099,6 +1100,10 @@ int git_path_diriter_init( ...@@ -1099,6 +1100,10 @@ int git_path_diriter_init(
git_win32_path path_filter; git_win32_path path_filter;
git_buf hack = {0}; git_buf hack = {0};
static int is_win7_or_later = -1;
if (is_win7_or_later < 0)
is_win7_or_later = git_has_win32_version(6, 1, 0);
assert(diriter && path); assert(diriter && path);
memset(diriter, 0, sizeof(git_path_diriter)); memset(diriter, 0, sizeof(git_path_diriter));
...@@ -1122,11 +1127,11 @@ int git_path_diriter_init( ...@@ -1122,11 +1127,11 @@ int git_path_diriter_init(
diriter->handle = FindFirstFileExW( diriter->handle = FindFirstFileExW(
path_filter, path_filter,
FindExInfoBasic, is_win7_or_later ? FindExInfoBasic : FindExInfoStandard,
&diriter->current, &diriter->current,
FindExSearchNameMatch, FindExSearchNameMatch,
NULL, NULL,
FIND_FIRST_EX_LARGE_FETCH); is_win7_or_later ? FIND_FIRST_EX_LARGE_FETCH : 0);
if (diriter->handle == INVALID_HANDLE_VALUE) { if (diriter->handle == INVALID_HANDLE_VALUE) {
giterr_set(GITERR_OS, "Could not open directory '%s'", path); giterr_set(GITERR_OS, "Could not open directory '%s'", path);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment