summaryrefslogtreecommitdiff
path: root/vms/vms.c
diff options
context:
space:
mode:
authorCraig A. Berry <craigberry@mac.com>2014-12-04 08:02:09 -0600
committerCraig A. Berry <craigberry@mac.com>2014-12-04 08:10:34 -0600
commit9b2457c186d2257f3ef7f3d7faca0bfdc74c6c98 (patch)
treefa9777da07cb451519239c97832a468065cf048a /vms/vms.c
parent542a754528b7b23df13117bb0f791aeafa63c8f7 (diff)
downloadperl-9b2457c186d2257f3ef7f3d7faca0bfdc74c6c98.tar.gz
Unescape directory portion of path in unixify.
Basically I missed a spot in 812e68ff314e, so the escaped space in [foo^_bar], for example, was not translated correctly.
Diffstat (limited to 'vms/vms.c')
-rw-r--r--vms/vms.c10
1 files changed, 4 insertions, 6 deletions
diff --git a/vms/vms.c b/vms/vms.c
index 080e89443e..cfc9cb7baa 100644
--- a/vms/vms.c
+++ b/vms/vms.c
@@ -7094,13 +7094,11 @@ static char *int_tounixspec(const char *spec, char *rslt, int * utf8_fl)
PerlMem_free(tmp);
for (; cp2 <= dirend; cp2++) {
if ((*cp2 == '^')) {
- /* EFS file escape, pass the next character as is */
- /* Fix me: HEX encoding for Unicode not implemented */
- *(cp1++) = *(++cp2);
- /* An escaped dot stays as is -- don't convert to slash */
- if (*cp2 == '.') cp2++;
+ /* EFS file escape -- unescape it. */
+ cp2 += copy_expand_vms_filename_escape(cp1, cp2, &outchars_added) - 1;
+ cp1 += outchars_added;
}
- if (*cp2 == ':') {
+ else if (*cp2 == ':') {
*(cp1++) = '/';
if (*(cp2+1) == '[' || *(cp2+1) == '<') cp2++;
}