/* Check that TRT happens when error on too many opened files. #notarget: cris*-*-elf #sim: --sysroot=@exedir@ */ #include #include #include #include #include #include #include #include #include #include int main (int argc, char *argv[]) { int i; int filemax; #ifdef OPEN_MAX filemax = OPEN_MAX; #else filemax = sysconf (_SC_OPEN_MAX); #endif char *fn = malloc (strlen (argv[0]) + 2); if (fn == NULL) abort (); strcpy (fn, "/"); strcat (fn, argv[0]); for (i = 0; i < filemax + 1; i++) { if (open (fn, O_RDONLY) < 0) { /* Shouldn't happen too early. */ if (i < filemax - 3 - 1) { fprintf (stderr, "i: %d\n", i); abort (); } if (errno != EMFILE) { perror ("open"); abort (); } goto ok; } } abort (); ok: printf ("pass\n"); exit (0); }