mirror of
https://git.proxmox.com/git/libgit2
synced 2025-05-18 02:18:07 +00:00
Make libgit2 work on Windows Vista again
(fixes issue #3316) Signed-off-by: Sven Strickroth <email@cs-ware.de>
This commit is contained in:
parent
555b351896
commit
ac1a5e20b8
11
src/path.c
11
src/path.c
@ -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(
|
|||||||
#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(
|
|||||||
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(
|
|||||||
|
|
||||||
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);
|
||||||
|
Loading…
Reference in New Issue
Block a user