symbian-qemu-0.9.1-12/qemu-symbian-svp/tests/cris/check_openpf5.c
changeset 1 2fb8b9db1c86
equal deleted inserted replaced
0:ffa851df0825 1:2fb8b9db1c86
       
     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 }