Index: import.c =================================================================== --- import.c (revision 84630) +++ import.c (working copy) @@ -25,6 +25,8 @@ #ifdef MS_WINDOWS /* for stat.st_mode */ typedef unsigned short mode_t; +/* for _mkdir */ +#include #endif @@ -1132,11 +1134,8 @@ FILE *fp; char *dirpath; time_t mtime = srcstat->st_mtime; -#ifdef MS_WINDOWS /* since Windows uses different permissions */ +#ifdef MS_WINDOWS mode_t mode = srcstat->st_mode & ~S_IEXEC; - mode_t dirmode = srcstat->st_mode | S_IEXEC; /* XXX Is this correct - for Windows? - 2010-04-07 BAW */ #else mode_t mode = srcstat->st_mode & ~S_IXUSR & ~S_IXGRP & ~S_IXOTH; mode_t dirmode = (srcstat->st_mode | @@ -1156,8 +1155,12 @@ } saved = *dirpath; *dirpath = '\0'; - /* XXX call os.mkdir() or maybe CreateDirectoryA() on Windows? */ + +#ifdef MS_WINDOWS + if (_mkdir(cpathname) < 0 && errno != EEXIST) { +#else if (mkdir(cpathname, dirmode) < 0 && errno != EEXIST) { +#endif *dirpath = saved; if (Py_VerboseFlag) PySys_WriteStderr(