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