Further compile fixes.
diff --git a/lib/zip_source_file_common.c b/lib/zip_source_file_common.c
index 90f9b5a..12ed678 100644
--- a/lib/zip_source_file_common.c
+++ b/lib/zip_source_file_common.c
@@ -100,7 +100,7 @@
     ctx->ops_userdata = ops_userdata;
     ctx->fname = NULL;
     if (fname) {
-	if ((ctx->fname = ops->string_duplicate(fname)) == NULL) {
+	if ((ctx->fname = ops->string_duplicate(ctx, fname)) == NULL) {
 	    zip_error_set(error, ZIP_ER_MEMORY, 0);
 	    free(ctx);
 	    return NULL;
diff --git a/lib/zip_source_file_stdio.c b/lib/zip_source_file_stdio.c
index 538797c..6fda8ec 100644
--- a/lib/zip_source_file_stdio.c
+++ b/lib/zip_source_file_stdio.c
@@ -59,7 +59,7 @@
     NULL,
     _zip_stdio_op_seek,
     _zip_stdio_op_stat,
-    strdup,
+    NULL,
     _zip_stdio_op_tell,
     NULL
 };
diff --git a/lib/zip_source_file_win32.h b/lib/zip_source_file_win32.h
index c844bf3..66e3bea 100644
--- a/lib/zip_source_file_win32.h
+++ b/lib/zip_source_file_win32.h
@@ -50,11 +50,11 @@
 struct zip_source_file_win32_write_operations {
     char *(*allocate_tempname)(const char *name, size_t extra_chars, size_t *lengthp);
     HANDLE (*create_file)(const char *name, DWORD access, DWORD share_mode, PSECURITY_ATTRIBUTES security_attributes, DWORD creation_disposition, DWORD file_attributes, HANDLE template_file);
-    bool (*delete_file)(const char *name);
+    BOOL (*delete_file)(const char *name);
     DWORD (*get_file_attributes)(const char *name);
     void (*make_tempname)(char *buf, size_t len, const char *name, int i);
-    bool (*move_file)(const char *from, const char *to);
-    bool (*set_file_attributes)(const char *name, DWORD attributes);
+    BOOL (*move_file)(const char *from, const char *to, DWORD flags);
+    BOOL (*set_file_attributes)(const char *name, DWORD attributes);
     char *(*string_duplicate)(const char *string);
 };
 
diff --git a/lib/zip_source_file_win32_utf16.c b/lib/zip_source_file_win32_utf16.c
index 7b57970..e3a61f0 100644
--- a/lib/zip_source_file_win32_utf16.c
+++ b/lib/zip_source_file_win32_utf16.c
@@ -35,11 +35,11 @@
 
 static char *utf16_allocate_tempname(const char *name, size_t extra_chars, size_t *lengthp);
 static HANDLE utf16_create_file(const char *name, DWORD access, DWORD share_mode, PSECURITY_ATTRIBUTES security_attributes, DWORD creation_disposition, DWORD file_attributes, HANDLE template_file);
-static bool utf16_delete_file(const char *name);
+static BOOL utf16_delete_file(const char *name);
 static DWORD utf16_get_file_attributes(const char *name);
 static void utf16_make_tempname(char *buf, size_t len, const char *name, int i);
-static bool utf16_move_file(const char *from, const char *to, DWORD flags);
-static bool utf16_set_file_attributes(const char *name, DWORD attributes);
+static BOOL utf16_move_file(const char *from, const char *to, DWORD flags);
+static BOOL utf16_set_file_attributes(const char *name, DWORD attributes);
 static char *utf16_strdup(const char *string);
 
 zip_source_file_win32_write_operations_t ops_utf16 = {
@@ -98,13 +98,13 @@
 }
 
 
-bool
+static BOOL
 utf16_delete_file(const char *name) {
     return DeleteFileW((const wchar_t *)name);
 }
 
 
-DWORD
+static DWORD
 utf16_get_file_attributes(const char *name) {
     return GetFileAttributesW((const wchar_t *)name);
 }
@@ -115,13 +115,13 @@
     _snwprintf((wchar_t *)buf, len, L"%s.%08x", (const wchar_t *)name, i);
 }
 
-static
-bool utf16_move_file(const char *from, const char *to, DWORD flags) {
+static BOOL
+utf16_move_file(const char *from, const char *to, DWORD flags) {
     return MoveFileExW((const wchar_t *)from, (const wchar_t *)to, flags);
 }
 
 
-static bool
+static BOOL
 utf16_set_file_attributes(const char *name, DWORD attributes) {
     return SetFileAttributesW((const wchar_t *)name, attributes);
 }
diff --git a/lib/zip_source_file_win32_write.c b/lib/zip_source_file_win32_write.c
index 5de6ed4..15c66a6 100644
--- a/lib/zip_source_file_win32_write.c
+++ b/lib/zip_source_file_win32_write.c
@@ -40,7 +40,7 @@
 static zip_int64_t _zip_win32_write_op_remove(zip_source_file_context_t *ctx);
 static void _zip_win32_write_op_rollback_write(zip_source_file_context_t *ctx);
 static bool _zip_win32_write_op_stat(zip_source_file_context_t *ctx, zip_source_file_stat_t *st);
-static char *_zip_win32_write_strdup(const char *string);
+static char *_zip_win32_write_strdup(zip_source_file_context_t *ctx, const char *string);
 
 static HANDLE win32_write_open(zip_source_file_context_t *ctx, const char *name, bool temporary, PSECURITY_ATTRIBUTES security_attributes);