summaryrefslogtreecommitdiff
path: root/gnulib-tests/test-pipe2.c
diff options
context:
space:
mode:
Diffstat (limited to 'gnulib-tests/test-pipe2.c')
-rw-r--r--gnulib-tests/test-pipe2.c143
1 files changed, 0 insertions, 143 deletions
diff --git a/gnulib-tests/test-pipe2.c b/gnulib-tests/test-pipe2.c
deleted file mode 100644
index fd164c6e..00000000
--- a/gnulib-tests/test-pipe2.c
+++ /dev/null
@@ -1,143 +0,0 @@
-/* Test of pipe2.
- Copyright (C) 2009-2013 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
- the Free Software Foundation; either version 3, or (at your option)
- any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, see <http://www.gnu.org/licenses/>. */
-
-#include <config.h>
-
-#include <unistd.h>
-
-#include "signature.h"
-SIGNATURE_CHECK (pipe2, int, (int[2], int));
-
-#include <fcntl.h>
-#include <stdbool.h>
-
-#if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__
-/* Get declarations of the native Windows API functions. */
-# define WIN32_LEAN_AND_MEAN
-# include <windows.h>
-/* Get _get_osfhandle. */
-# include "msvc-nothrow.h"
-#endif
-
-#include "binary-io.h"
-#include "macros.h"
-#if GNULIB_NONBLOCKING
-# include "nonblocking.h"
-#endif
-
-/* Return true if FD is open. */
-static bool
-is_open (int fd)
-{
-#if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__
- /* On native Windows, the initial state of unassigned standard file
- descriptors is that they are open but point to an
- INVALID_HANDLE_VALUE, and there is no fcntl. */
- return (HANDLE) _get_osfhandle (fd) != INVALID_HANDLE_VALUE;
-#else
-# ifndef F_GETFL
-# error Please port fcntl to your platform
-# endif
- return 0 <= fcntl (fd, F_GETFL);
-#endif
-}
-
-/* Return true if FD is not inherited to child processes. */
-static bool
-is_cloexec (int fd)
-{
-#if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__
- HANDLE h = (HANDLE) _get_osfhandle (fd);
- DWORD flags;
- ASSERT (GetHandleInformation (h, &flags));
- return (flags & HANDLE_FLAG_INHERIT) == 0;
-#else
- int flags;
- ASSERT ((flags = fcntl (fd, F_GETFD)) >= 0);
- return (flags & FD_CLOEXEC) != 0;
-#endif
-}
-
-#if ! GNULIB_NONBLOCKING
-static int
-get_nonblocking_flag (int fd)
-{
-# if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__
- return 0;
-# else
-# ifndef F_GETFL
-# error Please port fcntl to your platform
-# endif
- int flags;
- ASSERT ((flags = fcntl (fd, F_GETFL)) >= 0);
- return (flags & O_NONBLOCK) != 0;
-# endif
-}
-#endif
-
-int
-main ()
-{
- int use_nonblocking;
- int use_cloexec;
-
- for (use_nonblocking = 0; use_nonblocking <= !!O_NONBLOCK; use_nonblocking++)
- for (use_cloexec = 0; use_cloexec <= !!O_CLOEXEC; use_cloexec++)
- {
- int o_flags;
- int fd[2];
-
- o_flags = 0;
- if (use_nonblocking)
- o_flags |= O_NONBLOCK;
- if (use_cloexec)
- o_flags |= O_CLOEXEC;
-
- fd[0] = -1;
- fd[1] = -1;
- ASSERT (pipe2 (fd, o_flags) >= 0);
- ASSERT (fd[0] >= 0);
- ASSERT (fd[1] >= 0);
- ASSERT (fd[0] != fd[1]);
- ASSERT (is_open (fd[0]));
- ASSERT (is_open (fd[1]));
- if (use_cloexec)
- {
- ASSERT (is_cloexec (fd[0]));
- ASSERT (is_cloexec (fd[1]));
- }
- else
- {
- ASSERT (!is_cloexec (fd[0]));
- ASSERT (!is_cloexec (fd[1]));
- }
- if (use_nonblocking)
- {
- ASSERT (get_nonblocking_flag (fd[0]) == 1);
- ASSERT (get_nonblocking_flag (fd[1]) == 1);
- }
- else
- {
- ASSERT (get_nonblocking_flag (fd[0]) == 0);
- ASSERT (get_nonblocking_flag (fd[1]) == 0);
- }
-
- ASSERT (close (fd[0]) == 0);
- ASSERT (close (fd[1]) == 0);
- }
-
- return 0;
-}