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