[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: addsuffix manual example wrong, se_implicit test 4 fails.
From: |
John E. Malmberg |
Subject: |
Re: addsuffix manual example wrong, se_implicit test 4 fails. |
Date: |
Tue, 23 Sep 2014 08:00:58 -0500 |
User-agent: |
Mozilla/5.0 (Windows NT 6.3; WOW64; rv:31.0) Gecko/20100101 Thunderbird/31.1.1 |
On 9/19/2014 1:01 AM, John E. Malmberg wrote:
I was looking in the wrong place. The pattern_search routine in
implicit.c appears to be the culprit.
It needs to be able to handle paths in both VMS syntax or in Unix syntax
under VMS.
It also does not appear to be properly handling VMS syntax either.
Fixing it to handle the Unix syntax should be easy.
The existing VMS specific code in dir.c, implicit.c, read.c, and rule.c
is broken, along with the previously reported broken vmsify.c.
In dir.c, implicit.c, read.c, and rule.c, the VMS directory syntax
parsing has an off by 1 error in it, and the Unix directory syntax
parsing is disabled.
In addition the code does not know how to merge two VMS directory paths.
vmsify.c is turning a filename with out a path into a directory. I keep
finding more common trivial cases that this code gets wrong. The only
question is if any existing makefile.vms files expect the broken behavior.
I have not worked out a complete fix, but this is where I am going.
Unix directory syntax parsing should not be disabled on VMS.
The VMS specific code needs to know if a filename is in Unix syntax or
in VMS syntax to determine how to parse it.
For expediency, I am going to do a quick check instead of a robust
check. A completely robust check is not possible as Unix allows any
string of characters to be a file specification, including one that
looks like a VMS specification.
A file specification will be presumed to be in VMS format if any of the
following characters are present: ":[]<>;^".
I am assuming that these characters are rarely found in a Unix file
specification.
A file specification will be presumed to be Unix format if the "/"
character is present.
For this pass, I am just concentrating on getting the Unix syntax
functional on VMS.
In most cases the VMS specific code is instead of a test to see if "/"
is present in the filename.
This will be changed to have the test for "/" and the VMS specific code
will then test to see if that fails, and then test to see if any of the
VMS specific characters are present before using VMS filename parsing.
In some cases a flag will be set to indicate that the resulting filename
needs to also be in VMS syntax.
Regards,
-John