aboutsummaryrefslogtreecommitdiff
path: root/gcc/ada/cstreams.c
diff options
context:
space:
mode:
authorJose Ruiz <ruiz@adacore.com>2007-08-14 10:44:42 +0200
committerArnaud Charlet <charlet@gcc.gnu.org>2007-08-14 10:44:42 +0200
commitfdcf961c8e31aac50b7b5f3f1a9ea4f77950c0d7 (patch)
tree58769551a8aaa1a1ef84b4d604d79c600619dd0f /gcc/ada/cstreams.c
parent50b8a7b807b958ca96a40cd6b892627fda9c34ef (diff)
downloadgcc-fdcf961c8e31aac50b7b5f3f1a9ea4f77950c0d7.zip
gcc-fdcf961c8e31aac50b7b5f3f1a9ea4f77950c0d7.tar.gz
gcc-fdcf961c8e31aac50b7b5f3f1a9ea4f77950c0d7.tar.bz2
adaint.c (__gnat_is_absolute_path): For VxWorks systems we accept dir/file...
2007-08-14 Jose Ruiz <ruiz@adacore.com> * adaint.c (__gnat_is_absolute_path): For VxWorks systems we accept dir/file, device:/dir/file, and device:drive_letter:/dir/file as representing absolute path names. __gnat_set_file_time_name [VMS]: Fix some 64/32 bit issues. * cstreams.c (__gnat_full_name for VxWorks): Use __gnat_is_absolute_path to detect whether we need to add the current directory to normalize the path. From-SVN: r127437
Diffstat (limited to 'gcc/ada/cstreams.c')
-rw-r--r--gcc/ada/cstreams.c32
1 files changed, 21 insertions, 11 deletions
diff --git a/gcc/ada/cstreams.c b/gcc/ada/cstreams.c
index a45487b..fe81bcb 100644
--- a/gcc/ada/cstreams.c
+++ b/gcc/ada/cstreams.c
@@ -6,7 +6,7 @@
* *
* Auxiliary C functions for Interfaces.C.Streams *
* *
- * Copyright (C) 1992-2006, Free Software Foundation, Inc. *
+ * Copyright (C) 1992-2007, 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- *
@@ -200,6 +200,25 @@ __gnat_full_name (char *nam, char *buffer)
strncpy (buffer, __gnat_to_host_file_spec (buffer), __gnat_max_path_len);
}
+#elif defined (__vxworks)
+
+ /* On VxWorks systems, an absolute path can be represented (depending on
+ the host platform) as either /dir/file, or device:/dir/file, or
+ device:drive_letter:/dir/file. Use the __gnat_is_absolute_path
+ to verify it. */
+
+ int length;
+
+ if (__gnat_is_absolute_path (nam, strlen (nam)))
+ strcpy (buffer, nam);
+
+ else
+ {
+ length = __gnat_max_path_len;
+ __gnat_get_current_dir (buffer, &length);
+ strncat (buffer, nam, __gnat_max_path_len - length - 1);
+ }
+
#else
if (nam[0] != '/')
{
@@ -211,20 +230,11 @@ __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);
}