X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;ds=sidebyside;f=tests%2Ftest-passfd.c;h=838bb2211530e922e911f0e5ba23044cf0642e55;hb=b8c5e24996c9626f03890cd986fc1fb7b17fa610;hp=ca46266d55d39485887858f52ce4f4b19759637a;hpb=b99de3becfcd1b88e77fc03f75323b04402bcee1;p=gnulib.git diff --git a/tests/test-passfd.c b/tests/test-passfd.c index ca46266d5..838bb2211 100644 --- a/tests/test-passfd.c +++ b/tests/test-passfd.c @@ -1,5 +1,5 @@ /* Test of passing file descriptors. - Copyright (C) 2011 Free Software Foundation, Inc. + Copyright (C) 2011-2012 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -18,19 +18,23 @@ #include "passfd.h" +#include #include +#include #include #include #include #include #include #include +#include #include "macros.h" int main () { +#if HAVE_SOCKETPAIR int pair[2]; int ret; pid_t pid; @@ -39,6 +43,12 @@ main () int fd; struct stat st; +# if HAVE_DECL_ALARM + /* Avoid hanging on failure. */ + signal (SIGALRM, SIG_DFL); + alarm (5); +# endif + fdnull = open ("/dev/null", O_RDWR); if (fdnull < 0) { @@ -86,8 +96,7 @@ main () } ASSERT (ret == pid); - ret = WIFEXITED (status); - if (ret == 0) + if (!WIFEXITED (status)) { fprintf (stderr, "Child does not normally exit\n"); return 65; @@ -100,12 +109,25 @@ main () } /* try to stat new fd */ - ret == fstat (fd, &st); - if (0 != ret) + ret = fstat (fd, &st); + if (ret < 0) { perror ("fstat"); return 80; } return 0; } +#else + errno = 0; + ASSERT(sendfd (0, 0) == -1); + ASSERT(errno == ENOSYS); + + errno = 0; + ASSERT(recvfd (0, 0) == -1); + ASSERT(errno == ENOSYS); + + fputs ("skipping test: socketpair not supported on this system\n", + stderr); + return 77; +#endif }