diff -urN a/Modules/_cursesmodule.c b/Modules/_cursesmodule.c --- a/Modules/_cursesmodule.c 2013-12-26 18:49:28.515778500 +0000 +++ b/Modules/_cursesmodule.c 2013-12-26 18:49:32.070981800 +0000 @@ -125,6 +125,10 @@ #include #endif +#ifdef __MINGW32__ +#include +#endif + #if !defined(HAVE_NCURSES_H) && (defined(sgi) || defined(__sun) || defined(SCO5)) #define STRICT_SYSV_CURSES /* Don't use ncurses extensions */ typedef chtype attr_t; /* No attr_t type is available */ @@ -1698,17 +1702,31 @@ /* We have to simulate this by writing to a temporary FILE*, then reading back, then writing to the argument stream. */ char fn[100]; +#ifndef MS_WINDOWS int fd; +#endif FILE *fp; PyObject *res; +#ifndef MS_WINDOWS +/* Even on unix /tmp may not exist and the program must prefer $TMPDIR ! */ strcpy(fn, "/tmp/py.curses.putwin.XXXXXX"); fd = mkstemp(fn); if (fd < 0) return PyErr_SetFromErrnoWithFilename(PyExc_IOError, fn); fp = fdopen(fd, "wb+"); +#else + strcpy(fn, "py.curses.putwin.XXXXXX"); + _mktemp(fn); + if (*fn == 0) + return PyErr_SetFromErrnoWithFilename(PyExc_IOError, fn); + fp = fopen(fn, "wb+"); +#endif + if (fp == NULL) { + #ifndef MS_WINDOWS close(fd); + #endif remove(fn); return PyErr_SetFromErrnoWithFilename(PyExc_IOError, fn); } @@ -2256,7 +2274,9 @@ PyCurses_GetWin(PyCursesWindowObject *self, PyObject *stream) { char fn[100]; +#ifndef MS_WINDOWS int fd; +#endif FILE *fp; PyObject *data; size_t datalen; @@ -2265,13 +2285,24 @@ PyCursesInitialised; +#ifndef MS_WINDOWS +/* Even on unix /tmp may not exist and the program must prefer $TMPDIR ! */ strcpy(fn, "/tmp/py.curses.getwin.XXXXXX"); fd = mkstemp(fn); if (fd < 0) return PyErr_SetFromErrnoWithFilename(PyExc_IOError, fn); fp = fdopen(fd, "wb+"); +#else + strcpy(fn, "py.curses.getwin.XXXXXX"); + _mktemp(fn); + if (*fn == 0) + return PyErr_SetFromErrnoWithFilename(PyExc_IOError, fn); + fp = fopen(fn, "wb+"); +#endif if (fp == NULL) { + #ifndef MS_WINDOWS close(fd); + #endif remove(fn); return PyErr_SetFromErrnoWithFilename(PyExc_IOError, fn); }