@@ -1720,22 +1720,14 @@ PyCursesWindow_PutWin(PyCursesWindowObject *self, PyObject *stream)
1720
1720
{
1721
1721
/* We have to simulate this by writing to a temporary FILE*,
1722
1722
then reading back, then writing to the argument stream. */
1723
- char fn [100 ];
1724
- int fd = -1 ;
1725
- FILE * fp = NULL ;
1723
+ FILE * fp ;
1726
1724
PyObject * res = NULL ;
1727
1725
1728
- strcpy (fn , "/tmp/py.curses.putwin.XXXXXX" );
1729
- fd = mkstemp (fn );
1730
- if (fd < 0 )
1731
- return PyErr_SetFromErrnoWithFilename (PyExc_IOError , fn );
1732
- if (_Py_set_inheritable (fd , 0 , NULL ) < 0 )
1733
- goto exit ;
1734
- fp = fdopen (fd , "wb+" );
1735
- if (fp == NULL ) {
1736
- PyErr_SetFromErrnoWithFilename (PyExc_IOError , fn );
1726
+ fp = tmpfile ();
1727
+ if (fp == NULL )
1728
+ return PyErr_SetFromErrno (PyExc_OSError );
1729
+ if (_Py_set_inheritable (fileno (fp ), 0 , NULL ) < 0 )
1737
1730
goto exit ;
1738
- }
1739
1731
res = PyCursesCheckERR (putwin (self -> win , fp ), "putwin" );
1740
1732
if (res == NULL )
1741
1733
goto exit ;
@@ -1754,11 +1746,7 @@ PyCursesWindow_PutWin(PyCursesWindowObject *self, PyObject *stream)
1754
1746
}
1755
1747
1756
1748
exit :
1757
- if (fp != NULL )
1758
- fclose (fp );
1759
- else if (fd != -1 )
1760
- close (fd );
1761
- remove (fn );
1749
+ fclose (fp );
1762
1750
return res ;
1763
1751
}
1764
1752
@@ -2278,9 +2266,7 @@ PyCurses_UngetMouse(PyObject *self, PyObject *args)
2278
2266
static PyObject *
2279
2267
PyCurses_GetWin (PyCursesWindowObject * self , PyObject * stream )
2280
2268
{
2281
- char fn [100 ];
2282
- int fd = -1 ;
2283
- FILE * fp = NULL ;
2269
+ FILE * fp ;
2284
2270
PyObject * data ;
2285
2271
size_t datalen ;
2286
2272
WINDOW * win ;
@@ -2289,17 +2275,13 @@ PyCurses_GetWin(PyCursesWindowObject *self, PyObject *stream)
2289
2275
2290
2276
PyCursesInitialised ;
2291
2277
2292
- strcpy (fn , "/tmp/py.curses.getwin.XXXXXX" );
2293
- fd = mkstemp (fn );
2294
- if (fd < 0 )
2295
- return PyErr_SetFromErrnoWithFilename (PyExc_IOError , fn );
2296
- if (_Py_set_inheritable (fd , 0 , NULL ) < 0 )
2297
- goto error ;
2298
- fp = fdopen (fd , "wb+" );
2299
- if (fp == NULL ) {
2300
- PyErr_SetFromErrnoWithFilename (PyExc_IOError , fn );
2278
+ fp = tmpfile ();
2279
+ if (fp == NULL )
2280
+ return PyErr_SetFromErrno (PyExc_OSError );
2281
+
2282
+ if (_Py_set_inheritable (fileno (fp ), 0 , NULL ) < 0 )
2301
2283
goto error ;
2302
- }
2284
+
2303
2285
2304
2286
data = _PyObject_CallMethodId (stream , & PyId_read , NULL );
2305
2287
if (data == NULL )
@@ -2314,7 +2296,7 @@ PyCurses_GetWin(PyCursesWindowObject *self, PyObject *stream)
2314
2296
datalen = PyBytes_GET_SIZE (data );
2315
2297
if (fwrite (PyBytes_AS_STRING (data ), 1 , datalen , fp ) != datalen ) {
2316
2298
Py_DECREF (data );
2317
- PyErr_SetFromErrnoWithFilename ( PyExc_IOError , fn );
2299
+ PyErr_SetFromErrno ( PyExc_OSError );
2318
2300
goto error ;
2319
2301
}
2320
2302
Py_DECREF (data );
@@ -2328,11 +2310,7 @@ PyCurses_GetWin(PyCursesWindowObject *self, PyObject *stream)
2328
2310
res = PyCursesWindow_New (win , NULL );
2329
2311
2330
2312
error :
2331
- if (fp != NULL )
2332
- fclose (fp );
2333
- else if (fd != -1 )
2334
- close (fd );
2335
- remove (fn );
2313
+ fclose (fp );
2336
2314
return res ;
2337
2315
}
2338
2316
0 commit comments