diff options
author | Craig A. Berry <craigberry@mac.com> | 2012-01-28 08:59:09 -0600 |
---|---|---|
committer | Craig A. Berry <craigberry@mac.com> | 2012-01-28 08:59:09 -0600 |
commit | 37769287773a12dbc22e9f93bf7f8c55068aafe2 (patch) | |
tree | 79dd6438cbfa0af944bf9024a245ff02b5261d98 | |
parent | 656d3f9a2ce7fdcdbecec968ce50147d17c391e1 (diff) | |
download | perl-37769287773a12dbc22e9f93bf7f8c55068aafe2.tar.gz |
filelify shouldn't always escape dots.
Follow-up to a9fac63d75d9222a73fbf511ca58ae1d66cbf9a7. It turns
out that the CRTL doesn't handle the escapes when the path is in
Unix syntax (even though it requires them in native syntax).
stat('foo/bar.baz.dir;1')
is ok, but
stat('foo/bar^.baz.dir;1')
fails. So skip the escaping if there is a slash anywhere in the
path.
-rw-r--r-- | vms/vms.c | 4 |
1 files changed, 2 insertions, 2 deletions
@@ -6133,8 +6133,8 @@ int_fileify_dirspec(const char *dir, char *buf, int *utf8_fl) /* The .dir for now, and fix this better later */ dirlen = cp2 - trndir; } - if (decc_efs_charset) { - /* Dots are allowed in dir names, so escape them. */ + if (decc_efs_charset && !strchr(trndir,'/')) { + /* Dots are allowed in dir names, so escape them if input not in Unix syntax. */ char *cp4 = is_dir ? (cp2 - 1) : cp2; for (; cp4 > cp1; cp4--) { |