1/* Check for proper pipe semantics at corner cases.
2#notarget: cris*-*-elf
3*/
4
5#include <stddef.h>
6#include <stdio.h>
7#include <stdlib.h>
8#include <unistd.h>
9#include <sched.h>
10#include <signal.h>
11#include <sys/types.h>
12#include <sys/wait.h>
13#include <limits.h>
14
15int main (void)
16{
17  int i;
18  int filemax;
19
20#ifdef OPEN_MAX
21  filemax = OPEN_MAX;
22#else
23  filemax = sysconf (_SC_OPEN_MAX);
24#endif
25
26  if (filemax < 10)
27    abort ();
28
29  /* Check that pipes don't leak file descriptors.  */
30  for (i = 0; i < filemax * 10; i++)
31    {
32      int pip[2];
33      if (pipe (pip) != 0)
34	{
35	  perror ("pipe");
36	  abort ();
37	}
38
39      if (close (pip[0]) != 0 || close (pip[1]) != 0)
40	{
41	  perror ("close");
42	  abort ();
43	}
44    }
45  printf ("pass\n");
46  exit (0);
47}
48