From 24b4aa50e0701ce9ed29dab136f77fb7aa2a51bf Mon Sep 17 00:00:00 2001 From: Artur Grabowski Date: Mon, 8 Oct 2001 22:40:51 +0000 Subject: Simple dumb test for dup2. --- regress/sys/kern/dup2/Makefile | 11 +++++++++++ regress/sys/kern/dup2/dup2test.c | 39 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 50 insertions(+) create mode 100644 regress/sys/kern/dup2/Makefile create mode 100644 regress/sys/kern/dup2/dup2test.c diff --git a/regress/sys/kern/dup2/Makefile b/regress/sys/kern/dup2/Makefile new file mode 100644 index 00000000000..2b965247bc8 --- /dev/null +++ b/regress/sys/kern/dup2/Makefile @@ -0,0 +1,11 @@ +# $OpenBSD: Makefile,v 1.1 2001/10/08 22:40:50 art Exp $ + +PROG= dup2test +NOMAN= noman, no way, man + +install: + +regress: + ./dup2test + +.include diff --git a/regress/sys/kern/dup2/dup2test.c b/regress/sys/kern/dup2/dup2test.c new file mode 100644 index 00000000000..2b3a8a4ef0a --- /dev/null +++ b/regress/sys/kern/dup2/dup2test.c @@ -0,0 +1,39 @@ +#include +#include +#include +#include +#include + +int +main() +{ + int orgfd, fd1, fd2; + char temp[] = "/tmp/dup2XXXXXXXXX"; + + if ((orgfd = mkstemp(temp)) < 0) + err(1, "mkstemp"); + remove(temp); + + if (ftruncate(orgfd, 1024) != 0) + err(1, "ftruncate"); + + if ((fd1 = dup(orgfd)) < 0) + err(1, "dup"); + + /* Set close-on-exec */ + if (fcntl(fd1, F_SETFD, 1) != 0) + err(1, "fcntl(F_SETFD)"); + + if ((fd2 = dup2(fd1, fd1 + 1)) < 0) + err(1, "dup2"); + + /* Test 1: Do we get the right fd? */ + if (fd2 != fd1 + 1) + errx(1, "dup2 didn't give us the right fd"); + + /* Test 2: Was close-on-exec cleared? */ + if (fcntl(fd2, F_GETFD) != 0) + errx(1, "dup2 didn't clear close-on-exec"); + + return 0; +} -- cgit v1.2.3