|  | /* Check that --sysroot is applied to open(2). | 
|  | #sim: --sysroot=@exedir@ | 
|  |  | 
|  | We assume, with EXE being the name of the executable: | 
|  | - The simulator executes with cwd the same directory where the executable | 
|  | is located (so argv[0] contains a plain filename without directory | 
|  | components). | 
|  | - There's no /EXE on the host file system.  */ | 
|  |  | 
|  | #include <stdio.h> | 
|  | #include <stdlib.h> | 
|  | #include <string.h> | 
|  | #include <errno.h> | 
|  | int main (int argc, char *argv[]) | 
|  | { | 
|  | char *fnam = argv[0]; | 
|  | FILE *f; | 
|  | if (argv[0][0] != '/') | 
|  | { | 
|  | fnam = malloc (strlen (argv[0]) + 2); | 
|  | if (fnam == NULL) | 
|  | abort (); | 
|  | strcpy (fnam, "/"); | 
|  | strcat (fnam, argv[0]); | 
|  | } | 
|  |  | 
|  | f = fopen (fnam, "rb"); | 
|  | if (f == NULL) | 
|  | abort (); | 
|  | close (f); | 
|  |  | 
|  | /* Cover another execution path.  */ | 
|  | if (fopen ("/nonexistent", "rb") != NULL | 
|  | || errno != ENOENT) | 
|  | abort (); | 
|  | printf ("pass\n"); | 
|  | return 0; | 
|  | } |