diff options
author | Craig A. Berry <craigberry@mac.com> | 2012-01-14 22:40:24 -0600 |
---|---|---|
committer | Craig A. Berry <craigberry@mac.com> | 2012-01-14 22:40:24 -0600 |
commit | 4ab1eb56da9e51d7afaf7663e76680cf1e618834 (patch) | |
tree | bf99c104192a014673e0fdc9b387f2d06f31711e | |
parent | d3a16da4332bc355764973b70da72fc54272f32b (diff) | |
download | perl-4ab1eb56da9e51d7afaf7663e76680cf1e618834.tar.gz |
In vmsify, leave ../ path components alone.
Way back in 08c7cbbb0fc466967038dcb56ca4f1b828b96269, we started
eliminating ../ components when converting paths from Unix syntax
to VMS syntax. No corresponding change was made when converting
in the opposite direction, so this was inconsistent. We should
get a valid path either way, but doing more interpretation than
necessary seems uncalled for, so this patch restores the previous
behavior.
This also paves the way to eliminate some inconsistencies between
what we do when Extended Filename Syntax (EFS) is in effect and
when it's not.
-rwxr-xr-x | vms/ext/filespec.t | 4 | ||||
-rw-r--r-- | vms/vms.c | 9 |
2 files changed, 4 insertions, 9 deletions
diff --git a/vms/ext/filespec.t b/vms/ext/filespec.t index f2344e1022..c5bf12bd3e 100755 --- a/vms/ext/filespec.t +++ b/vms/ext/filespec.t @@ -112,7 +112,7 @@ __lyrics_:[__are_.__very_^.__sappy_]__but_^.__rhymes_^.__are_.__true_ unixify /__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_/__over_/__the_.__rainbow_ vmsify [-.__where_.__over_]__the_.__rainbow_ [.__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_.__over_]__the_.__rainbow_ __some_/.../__where_/__over_/__the_.__rainbow_ vmsify [.__some_...__where_.__over_]__the_.__rainbow_ [.__some_.^.^.^..__where_.__over_]__the_.__rainbow_ /__some_/.../__where_/__over_/__the_.__rainbow_ vmsify __some_:[...__where_.__over_]__the_.__rainbow_ __some_:[^.^.^..__where_.__over_]__the_.__rainbow_ @@ -169,7 +169,7 @@ __path_ vmspath [.__path_] ^ /sys$scratch vmspath sys$scratch: ^ # Redundant characters in Unix paths -//__some_/__where_//__over_/../__the_.__rainbow_ vmsify __some_:[__where_]__the_.__rainbow_ __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_ ^ ..//../ vmspath [--] ^ ./././ vmspath [] ^ @@ -8616,13 +8616,8 @@ static char *int_tovmsspec else if (*(cp2+1) == '.' && (*(cp2+2) == '/' || *(cp2+2) == '\0')) { if (*(cp1-1) == '-' || *(cp1-1) == '[') *(cp1++) = '-'; /* handle "../" */ else if (*(cp1-2) == '[') *(cp1-1) = '-'; - else { /* back up over previous directory name */ - cp1--; - while (*(cp1-1) != '.' && *(cp1-1) != '[') cp1--; - if (*(cp1-1) == '[') { - memcpy(cp1,"000000.",7); - cp1 += 7; - } + else { + *(cp1++) = '-'; } cp2 += 2; if (cp2 == dirend) break; |