mirror of
https://github.com/python/cpython.git
synced 2025-08-28 20:56:54 +00:00
[3.11] gh-95174: Handle missing dup() and constants in WASI (GH-95229) (GH-95272)
Co-authored-by: Christian Heimes <christian@python.org>
This commit is contained in:
parent
c7ac8b6588
commit
db13c0c1b8
12 changed files with 47 additions and 5 deletions
|
@ -11,6 +11,7 @@
|
|||
* Return fd2 if all went well; return BADEXIT otherwise.
|
||||
*/
|
||||
|
||||
#include <errno.h>
|
||||
#include <fcntl.h>
|
||||
#include <unistd.h>
|
||||
|
||||
|
@ -20,12 +21,17 @@ int
|
|||
dup2(int fd1, int fd2)
|
||||
{
|
||||
if (fd1 != fd2) {
|
||||
#ifdef F_DUPFD
|
||||
if (fcntl(fd1, F_GETFL) < 0)
|
||||
return BADEXIT;
|
||||
if (fcntl(fd2, F_GETFL) >= 0)
|
||||
close(fd2);
|
||||
if (fcntl(fd1, F_DUPFD, fd2) < 0)
|
||||
return BADEXIT;
|
||||
#else
|
||||
errno = ENOTSUP;
|
||||
return BADEXIT;
|
||||
#endif
|
||||
}
|
||||
return fd2;
|
||||
}
|
||||
|
|
|
@ -2379,7 +2379,7 @@ _Py_dup(int fd)
|
|||
return -1;
|
||||
}
|
||||
|
||||
#else
|
||||
#elif HAVE_DUP
|
||||
Py_BEGIN_ALLOW_THREADS
|
||||
_Py_BEGIN_SUPPRESS_IPH
|
||||
fd = dup(fd);
|
||||
|
@ -2396,6 +2396,10 @@ _Py_dup(int fd)
|
|||
_Py_END_SUPPRESS_IPH
|
||||
return -1;
|
||||
}
|
||||
#else
|
||||
errno = ENOTSUP;
|
||||
PyErr_SetFromErrno(PyExc_OSError);
|
||||
return -1;
|
||||
#endif
|
||||
return fd;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue