|
|
1.1 ! root 1: /* Check that TRT happens when error on too many opened files. ! 2: #notarget: cris*-*-elf ! 3: #sim: --sysroot=@exedir@ ! 4: */ ! 5: #include <stddef.h> ! 6: #include <stdlib.h> ! 7: #include <stdio.h> ! 8: #include <unistd.h> ! 9: #include <errno.h> ! 10: #include <limits.h> ! 11: #include <sys/types.h> ! 12: #include <sys/stat.h> ! 13: #include <fcntl.h> ! 14: #include <string.h> ! 15: ! 16: int main (int argc, char *argv[]) ! 17: { ! 18: int i; ! 19: int filemax; ! 20: ! 21: #ifdef OPEN_MAX ! 22: filemax = OPEN_MAX; ! 23: #else ! 24: filemax = sysconf (_SC_OPEN_MAX); ! 25: #endif ! 26: ! 27: char *fn = malloc (strlen (argv[0]) + 2); ! 28: if (fn == NULL) ! 29: abort (); ! 30: strcpy (fn, "/"); ! 31: strcat (fn, argv[0]); ! 32: ! 33: for (i = 0; i < filemax + 1; i++) ! 34: { ! 35: if (open (fn, O_RDONLY) < 0) ! 36: { ! 37: /* Shouldn't happen too early. */ ! 38: if (i < filemax - 3 - 1) ! 39: { ! 40: fprintf (stderr, "i: %d\n", i); ! 41: abort (); ! 42: } ! 43: if (errno != EMFILE) ! 44: { ! 45: perror ("open"); ! 46: abort (); ! 47: } ! 48: goto ok; ! 49: } ! 50: } ! 51: abort (); ! 52: ! 53: ok: ! 54: printf ("pass\n"); ! 55: exit (0); ! 56: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.