summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCraig A. Berry <craigberry@mac.com>2012-11-26 07:07:21 -0600
committerCraig A. Berry <craigberry@mac.com>2012-11-26 07:07:21 -0600
commit06099f79acc9684bcbd2efbb1efe56ce80c65f08 (patch)
tree5e1af1b007d5c3ca70e76befce453c7b9af88bd0
parent05a206c836e4d4e324996ada45136cc40a68126c (diff)
downloadperl-06099f79acc9684bcbd2efbb1efe56ce80c65f08.tar.gz
Consider /... a directory component with EFS on VMS.
For some reason the omnibus patch (360732b5267d5dfe) that brought Extended Filename Syntax support to the VMS port considered three dots part of the filename portion rather than part of the directory portion when converting a Unix-format path to VMS format. There's no reason this should be different with EFS, so make it the same as without EFS, which gets two TODO tests passing.
-rwxr-xr-xvms/ext/filespec.t4
-rw-r--r--vms/vms.c4
2 files changed, 3 insertions, 5 deletions
diff --git a/vms/ext/filespec.t b/vms/ext/filespec.t
index 86cdc769c2..f31d9b731e 100755
--- a/vms/ext/filespec.t
+++ b/vms/ext/filespec.t
@@ -116,8 +116,8 @@ __some_/../../__where_/__over_/__the_.__rainbow_ vmsify [.__some_.--.__wh
.../__some_/__where_/__over_/__the_.__rainbow_ vmsify [...__some_.__where_.__over_]__the_.__rainbow_ ^
__some_/.../__where_/__over_/__the_.__rainbow_ vmsify [.__some_...__where_.__over_]__the_.__rainbow_ ^
/__some_/.../__where_/__over_/__the_.__rainbow_ vmsify __some_:[...__where_.__over_]__the_.__rainbow_ ^
-__some_/__where_/... vmsify [.__some_.__where_...] ^*
-/__where_/... vmsify __where_:[...] ^*
+__some_/__where_/... vmsify [.__some_.__where_...] ^
+/__where_/... vmsify __where_:[...] ^
. vmsify [] ^
.. vmsify [-] ^
../.. vmsify [--] ^
diff --git a/vms/vms.c b/vms/vms.c
index 15f350bd68..b847ab08c5 100644
--- a/vms/vms.c
+++ b/vms/vms.c
@@ -8383,9 +8383,7 @@ static char *int_tovmsspec
else if (*(dirend+1) == '.') { /* do we have trailing "/." or "/.." or "/..."? */
if (!*(dirend+2)) dirend +=2;
if (*(dirend+2) == '.' && !*(dirend+3)) dirend += 3;
- if (decc_efs_charset == 0) {
- if (*(dirend+2) == '.' && *(dirend+3) == '.' && !*(dirend+4)) dirend += 4;
- }
+ if (*(dirend+2) == '.' && *(dirend+3) == '.' && !*(dirend+4)) dirend += 4;
}
cp1 = rslt;