Re: rmdir('/unix_path/to/dir') not working with 5.18.1?
"John E. Malmberg" <[email protected]> Wed, 26 Feb 2014 23:35:00 -0600
| Newsgroups | gmane.comp.lang.perl.ports.vms |
|---|---|
| Message-ID | <[email protected]> |
On 2/25/2014 7:02 PM, Craig A. Berry wrote: > > On Feb 24, 2014, at 11:33 PM, John E. Malmberg <[email protected]> wrote: >> I can not seem to do a rmdir() of an absolute or relative Unix >> path with Perl 5.18.1. > > It works unless DECC$FILENAME_UNIX_REPORT is defined. That's not > particularly well tested and you definitely found a bug. If that's > defined, when rmdir calls the internal stat routine, which calls > fileify, then 'abc/xyz' becomes 'abc/xyz.DIR;1'. If fileify is converting 'abc/xyz' to 'abc/xyz.DIR;1', that is a bug that will break a lot of stuff. With the DECC$EFS_CHARSET enabled, that should never happen anywhere. Not only should the ;1 not be present, the ".DIR" should not be present either. The ".DIR" should only be present with DECC$EFS_CHARSET disabled because that is what the older conversions expected, and on ODS-2 it could be removed on a reverse conversion. > Then stat converts it to VMS format and we get something like > 'D0:[craig.TEST.abc]xyz.DIR^;1'. abc/xyz.dir would be converted to [.abc]xyz^.dir or [.abc]xyz^.dir.dir. > So we probably need to have fileify omit the version with unix > report enabled. And the .DIR in UNIX paths, unless is foo/bar.dir <=> [.foo]bar^.dir.dir. Thanks, -John