1 /* Check that TRT happens when error on pipe call. 2 #notarget: cris*-*-elf 3 */ 4 5 #include <stddef.h> 6 #include <stdio.h> 7 #include <stdlib.h> 8 #include <unistd.h> 9 #include <errno.h> 10 #include <limits.h> 11 main(void)12int main (void) 13 { 14 int i; 15 int filemax; 16 17 #ifdef OPEN_MAX 18 filemax = OPEN_MAX; 19 #else 20 filemax = sysconf (_SC_OPEN_MAX); 21 #endif 22 23 /* Check that TRT happens when error on pipe call. */ 24 for (i = 0; i < filemax + 1; i++) 25 { 26 int pip[2]; 27 if (pipe (pip) != 0) 28 { 29 /* Shouldn't happen too early. */ 30 if (i < filemax / 2 - 3 - 1) 31 { 32 fprintf (stderr, "i: %d\n", i); 33 abort (); 34 } 35 if (errno != EMFILE) 36 { 37 perror ("pipe"); 38 abort (); 39 } 40 goto ok; 41 } 42 } 43 abort (); 44 45 ok: 46 printf ("pass\n"); 47 exit (0); 48 } 49