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.
/* 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--) {