2007-10-08 15:32:20 +02:00
|
|
|
/* 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 ();
|
2011-04-03 21:36:36 +02:00
|
|
|
fclose(f);
|
2007-10-08 15:32:20 +02:00
|
|
|
|
|
|
|
/* Cover another execution path. */
|
|
|
|
if (fopen ("/nonexistent", "rb") != NULL
|
|
|
|
|| errno != ENOENT)
|
|
|
|
abort ();
|
|
|
|
printf ("pass\n");
|
|
|
|
return 0;
|
|
|
|
}
|