 c09015dd04
			
		
	
	
		c09015dd04
		
	
	
	
	
		
			
			Signed-off-by: Anthony Liguori <aliguori@us.ibm.com> Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
		
			
				
	
	
		
			57 lines
		
	
	
		
			955 B
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			57 lines
		
	
	
		
			955 B
		
	
	
	
		
			C
		
	
	
	
	
	
| /* Check that TRT happens when error on too many opened files.
 | |
| #notarget: cris*-*-elf
 | |
| #sim: --sysroot=@exedir@
 | |
| */
 | |
| #include <stddef.h>
 | |
| #include <stdlib.h>
 | |
| #include <stdio.h>
 | |
| #include <unistd.h>
 | |
| #include <errno.h>
 | |
| #include <limits.h>
 | |
| #include <sys/types.h>
 | |
| #include <sys/stat.h>
 | |
| #include <fcntl.h>
 | |
| #include <string.h>
 | |
| 
 | |
| 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);
 | |
| }
 |