root / tests / cris / check_openpf5.c @ 7b239bec
History | View | Annotate | Download (955 Bytes)
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 |
} |