[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:
Christian Heimes 2022-07-31 17:39:41 +02:00 committed by GitHub
parent c7ac8b6588
commit db13c0c1b8
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
12 changed files with 47 additions and 5 deletions

View file

@ -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;
}