cstreams.c (__gnat_full_name): Fix issues on VxWorks 6.x for which absolute path...
authorNicolas Roche <roche@adacore.com>
Fri, 6 Apr 2007 09:18:36 +0000 (11:18 +0200)
committerArnaud Charlet <charlet@gcc.gnu.org>
Fri, 6 Apr 2007 09:18:36 +0000 (11:18 +0200)
2007-04-06  Nicolas Roche  <roche@adacore.com>

* cstreams.c (__gnat_full_name): Fix issues on VxWorks 6.x for which
absolute path can have the following form: device:/a/b. In this case
'/' should be inserted between the path and the filename.

From-SVN: r123556

gcc/ada/cstreams.c

index 8f283d4c4fc37fb97f54d2485abcf8e86b84113b..a45487b41b591e376f433b5bd9d2c2c40d0ec5fa 100644 (file)
@@ -6,7 +6,7 @@
  *                                                                          *
  *              Auxiliary C functions for Interfaces.C.Streams              *
  *                                                                          *
- *          Copyright (C) 1992-2003 Free Software Foundation, Inc.          *
+ *          Copyright (C) 1992-2006, Free Software Foundation, Inc.         *
  *                                                                          *
  * GNAT is free software;  you can  redistribute it  and/or modify it under *
  * terms of the  GNU General Public License as published  by the Free Soft- *
@@ -211,10 +211,20 @@ __gnat_full_name (char *nam, char *buffer)
          return 0;
        }
 
+#ifdef __vxworks
+      /* On VxWorks, getcwd always returns an absolute path. But this path
+         can be also a device name like "serial:". In this case '/' should not
+         be appended. As on VxWorks 6.x the returned path can starts with
+         the device name (ex: machine:/directory), we need to test if the last
+         character of the path is ':' to know if '/' should be appended. */
+      if (buffer[strlen (buffer) - 1] != ':')
+         strcat (buffer, "/");
+#else
       /* If the name returned is an absolute path, it is safe to append '/'
         to the path and concatenate the name of the file. */
       if (buffer[0] == '/')
        strcat (buffer, "/");
+#endif
 
       strcat (buffer, nam);
     }