Windows portability fixes.

Different toolchains/versions provide different symbols.
Use _snwprintf instead of swprintf since the latter changed signature.
Claim we need at least Windows XP support to get GetFileSizeEx.

Tested by Andrew Molyneux, Alex Sandro, and Christoph Becker.
diff --git a/lib/zip_source_win32w.c b/lib/zip_source_win32w.c
index 14e5999..cf0801e 100644
--- a/lib/zip_source_win32w.c
+++ b/lib/zip_source_win32w.c
@@ -99,7 +99,7 @@
 	    return INVALID_HANDLE_VALUE;
 	}
     }
-    if (swprintf((wchar_t *)*temp, len, L"%s.%08x", (const wchar_t *)ctx->fname, value) != len - 1) {
+    if (_snwprintf((wchar_t *)*temp, len, L"%s.%08x", (const wchar_t *)ctx->fname, value) != len - 1) {
 	return INVALID_HANDLE_VALUE;
     }
 
diff --git a/lib/zipwin32.h b/lib/zipwin32.h
index 4fa29cc..60f8d0c 100644
--- a/lib/zipwin32.h
+++ b/lib/zipwin32.h
@@ -34,6 +34,8 @@
   IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 */
 
+/* 0x0501 => Windows XP; needs to be at least this value because of GetFileSizeEx */
+#define _WIN32_WINNT 0x0501
 #include <windows.h>
 
 /* context for Win32 source */