#endif
 
 #ifdef _MSC_VER
-#define        mode_t  int
+typedef        int     mdb_mode_t;
+#else
+typedef        mode_t  mdb_mode_t;
 #endif
 
 /** @defgroup mdb MDB API
         *      <li>EAGAIN - the environment was locked by another process.
         * </ul>
         */
-int  mdb_env_open(MDB_env *env, const char *path, unsigned int flags, mode_t mode);
+int  mdb_env_open(MDB_env *env, const char *path, unsigned int flags, mdb_mode_t mode);
 
        /** @brief Copy an MDB environment to the specified path.
         *
 
 #define        CHANGELESS      (MDB_FIXEDMAP|MDB_NOSUBDIR|MDB_RDONLY|MDB_WRITEMAP)
 
 int
-mdb_env_open(MDB_env *env, const char *path, unsigned int flags, mode_t mode)
+mdb_env_open(MDB_env *env, const char *path, unsigned int flags, mdb_mode_t mode)
 {
        int             oflags, rc, len, excl;
        char *lpath, *dpath;