diff --git a/src/common.h b/src/common.h index 235da0412..02d9ce9b6 100644 --- a/src/common.h +++ b/src/common.h @@ -29,9 +29,10 @@ # include "win32/msvc-compat.h" # include "win32/mingw-compat.h" # include "win32/error.h" +# include "win32/version.h" # ifdef GIT_THREADS # include "win32/pthread.h" -#endif +# endif #else diff --git a/src/transports/winhttp.c b/src/transports/winhttp.c index ba5d1d5f1..e502001cb 100644 --- a/src/transports/winhttp.c +++ b/src/transports/winhttp.c @@ -509,11 +509,7 @@ replay: /* Check for Windows 7. This workaround is only necessary on * Windows Vista and earlier. Windows 7 is version 6.1. */ - DWORD dwVersion = GetVersion(); - - if (LOBYTE(LOWORD(dwVersion)) < 6 || - (LOBYTE(LOWORD(dwVersion)) == 6 && - HIBYTE(LOWORD(dwVersion)) < 1)) { + if (!git_has_win32_version(6, 1)) { wchar_t *location; DWORD location_length; int redirect_cmp; @@ -991,7 +987,7 @@ static int winhttp_receivepack( { /* WinHTTP only supports Transfer-Encoding: chunked * on Windows Vista (NT 6.0) and higher. */ - s->chunked = LOBYTE(LOWORD(GetVersion())) >= 6; + s->chunked = git_has_win32_version(6, 0); if (s->chunked) s->parent.write = winhttp_stream_write_chunked; diff --git a/src/win32/error.c b/src/win32/error.c index 4f169cf4d..4a9a0631f 100644 --- a/src/win32/error.c +++ b/src/win32/error.c @@ -45,7 +45,7 @@ char *git_win32_get_error_message(DWORD error_code) (LPWSTR)&lpMsgBuf, 0, NULL)) { /* Invalid code point check supported on Vista+ only */ - if (LOBYTE(LOWORD(GetVersion())) >= 6) + if (git_has_win32_version(6, 0)) dwFlags = WC_ERR_INVALID_CHARS; else dwFlags = 0; diff --git a/src/win32/version.h b/src/win32/version.h new file mode 100644 index 000000000..803cc60e2 --- /dev/null +++ b/src/win32/version.h @@ -0,0 +1,20 @@ +/* + * Copyright (C) the libgit2 contributors. All rights reserved. + * + * This file is part of libgit2, distributed under the GNU GPL v2 with + * a Linking Exception. For full terms see the included COPYING file. + */ +#ifndef INCLUDE_win32_version_h__ +#define INCLUDE_win32_version_h__ + +#include + +GIT_INLINE(int) git_has_win32_version(int major, int minor) +{ + WORD wVersion = LOWORD(GetVersion()); + + return LOBYTE(wVersion) > major || + (LOBYTE(wVersion) == major && HIBYTE(wVersion) >= minor); +} + +#endif \ No newline at end of file