Index: import.c =================================================================== --- import.c (revision 84617) +++ import.c (working copy) @@ -25,6 +25,18 @@ #ifdef MS_WINDOWS /* for stat.st_mode */ typedef unsigned short mode_t; + +/* for _mkdir */ +#include +/* Windows provides int mkdir(const char* dirname) and + int _mkdir(const char* dirname) but the former has been + deprecated in favor of the latter. Neither version of + the function has a mode parameter like the Unix system + call. The created directory will inherit the permissions + of its parent. */ +#define MKDIR(_path_, _mode_) _mkdir(_path_) +#else +#define MKDIR(_path_, _mode_) mkdir(_path_, _mode_) #endif @@ -1132,7 +1144,7 @@ FILE *fp; char *dirpath; time_t mtime = srcstat->st_mtime; -#ifdef MS_WINDOWS /* since Windows uses different permissions */ +#ifdef MS_WINDOWS /* Windows ignores the mode parameter to mkdir */ mode_t mode = srcstat->st_mode & ~S_IEXEC; mode_t dirmode = srcstat->st_mode | S_IEXEC; /* XXX Is this correct for Windows? @@ -1157,7 +1169,7 @@ saved = *dirpath; *dirpath = '\0'; /* XXX call os.mkdir() or maybe CreateDirectoryA() on Windows? */ - if (mkdir(cpathname, dirmode) < 0 && errno != EEXIST) { + if (MKDIR(cpathname, dirmode) < 0 && errno != EEXIST) { *dirpath = saved; if (Py_VerboseFlag) PySys_WriteStderr(