OpenCores
URL https://opencores.org/ocsvn/scarts/scarts/trunk

Subversion Repositories scarts

[/] [scarts/] [trunk/] [toolchain/] [scarts-gdb/] [gdb-6.8/] [sim/] [testsuite/] [sim/] [cris/] [c/] [readlink2.c] - Blame information for rev 26

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 26 jlechner
/*
2
#notarget: cris*-*-elf
3
*/
4
 
5
#include <unistd.h>
6
#include <errno.h>
7
#include <stdio.h>
8
#include <stdlib.h>
9
#include <string.h>
10
 
11
int main (int argc, char *argv[])
12
{
13
  char buf[1024];
14
  char buf2[1024];
15
  int err;
16
 
17
  /* This is a special feature handled in the simulator.  The "42"
18
     should be formed from getpid () if this was a real program.  */
19
  err = readlink ("/proc/42/exe", buf, sizeof (buf));
20
  if (err < 0)
21
    {
22
      if (err == -1 && errno == ENOSYS)
23
        printf ("ENOSYS\n");
24
      printf ("xyzzy\n");
25
      exit (0);
26
    }
27
 
28
  /* Don't use an abort in the following; it might cause the printf to
29
     not make it all the way to output and make debugging more
30
     difficult.  */
31
 
32
  /* We assume the program is called with no path, so we might need to
33
     prepend it.  */
34
  if (getcwd (buf2, sizeof (buf2)) != buf2)
35
    {
36
      perror ("getcwd");
37
      exit (1);
38
    }
39
 
40
  if (argv[0][0] == '/')
41
    {
42
#ifdef SYSROOTED
43
      if (strchr (argv[0] + 1, '/') != NULL)
44
        {
45
          printf ("%s != %s\n", argv[0], strrchr (argv[0] + 1, '/'));
46
          exit (1);
47
        }
48
#endif
49
      if (strcmp (argv[0], buf) != 0)
50
        {
51
          printf ("%s != %s\n", buf, argv[0]);
52
          exit (1);
53
        }
54
    }
55
  else if (argv[0][0] != '.')
56
    {
57
      if (buf2[strlen (buf2) - 1] != '/')
58
        strcat (buf2, "/");
59
      strcat (buf2, argv[0]);
60
      if (strcmp (buf2, buf) != 0)
61
        {
62
          printf ("%s != %s\n", buf, buf2);
63
          exit (1);
64
        }
65
    }
66
  else
67
    {
68
      strcat (buf2, argv[0] + 1);
69
      if (strcmp (buf, buf2) != 0)
70
        {
71
          printf ("%s != %s\n", buf, buf2);
72
          exit (1);
73
        }
74
    }
75
 
76
  printf ("pass\n");
77
  exit (0);
78
}
79
 
80
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.