Check for and use _umask on Windows.
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 4ac1803..dd9671e 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -41,6 +41,7 @@
 CHECK_FUNCTION_EXISTS(_stricmp HAVE__STRICMP)
 CHECK_FUNCTION_EXISTS(_strtoi64 HAVE__STRTOI64)
 CHECK_FUNCTION_EXISTS(_strtoui64 HAVE__STRTOUI64)
+CHECK_FUNCTION_EXISTS(_umask HAVE__UMASK)
 CHECK_FUNCTION_EXISTS(explict_bzero HAVE_EXPLICIT_BZERO)
 CHECK_FUNCTION_EXISTS(explicit_memset HAVE_EXPLICIT_MEMSET)
 CHECK_FUNCTION_EXISTS(fileno HAVE_FILENO)
@@ -56,6 +57,7 @@
 CHECK_FUNCTION_EXISTS(stricmp HAVE_STRICMP)
 CHECK_FUNCTION_EXISTS(strtoll HAVE_STRTOLL)
 CHECK_FUNCTION_EXISTS(strtoull HAVE_STRTOULL)
+CHECK_FUNCTION_EXISTS(umask HAVE_UMASK)
 
 CHECK_INCLUDE_FILES(fts.h HAVE_FTS_H)
 CHECK_INCLUDE_FILES(stdbool.h HAVE_STDBOOL_H)
diff --git a/cmake-config.h.in b/cmake-config.h.in
index 2b5f79c..60e5d15 100644
--- a/cmake-config.h.in
+++ b/cmake-config.h.in
@@ -16,6 +16,7 @@
 #cmakedefine HAVE__STRICMP
 #cmakedefine HAVE__STRTOI64
 #cmakedefine HAVE__STRTOUI64
+#cmakedefine HAVE__UMASK
 #cmakedefine HAVE_FILENO
 #cmakedefine HAVE_FSEEKO
 #cmakedefine HAVE_FTELLO
@@ -34,6 +35,7 @@
 #cmakedefine HAVE_STRUCT_TM_TM_ZONE
 #cmakedefine HAVE_STDBOOL_H
 #cmakedefine HAVE_STRINGS_H
+#cmakedefine HAVE_UMASK
 #cmakedefine HAVE_UNISTD_H
 #cmakedefine __INT8_LIBZIP ${__INT8_LIBZIP}
 #cmakedefine INT8_T_LIBZIP ${INT8_T_LIBZIP}
diff --git a/configure.ac b/configure.ac
index 71be4bd..450ea69 100644
--- a/configure.ac
+++ b/configure.ac
@@ -74,7 +74,7 @@
 
 LT_INIT
 
-AC_CHECK_FUNCS([_close _dup _fdopen _fileno _open _setmode _snprintf _strdup _stricmp _strtoi64 _strtoui64 explicit_bzero explicit_memset fileno fseeko ftello getopt getprogname open setmode snprintf strcasecmp strdup stricmp strtoll strtoull])
+AC_CHECK_FUNCS([_close _dup _fdopen _fileno _open _setmode _snprintf _strdup _stricmp _strtoi64 _strtoui64 _umask explicit_bzero explicit_memset fileno fseeko ftello getopt getprogname open setmode snprintf strcasecmp strdup stricmp strtoll strtoull umask])
 AC_CHECK_FUNCS([mkstemp], [], [AC_LIBOBJ(mkstemp)])
 
 dnl assume dlsym in libc, but check in libdl
diff --git a/lib/compat.h b/lib/compat.h
index 4c9e3a0..6be9ee0 100644
--- a/lib/compat.h
+++ b/lib/compat.h
@@ -107,6 +107,9 @@
 #if !defined(HAVE_STRTOULL) && defined(HAVE__STRTOUI64)
 #define strtoull	_strtoui64
 #endif
+#if defined(HAVE__UMASK)
+#define umask	_umask
+#endif
 #endif
 
 #ifndef HAVE_FSEEKO