[Info-vax] decc$stat() variants on VMS.

John Reagan xyzzy1959 at gmail.com
Wed Jun 29 16:20:13 EDT 2016


On Wednesday, June 29, 2016 at 3:50:26 PM UTC-4, Stephen Hoffman wrote:
> On 2016-06-29 17:29:42 +0000, John Reagan said:
> 
> > stat() is one of the big areas of ancient backwards compatibility that 
> > clogs up the CRTL.  Want me to just keep the standard version and toss 
> > the OpenVMS specifics?  I'd like to get to a single stat() if possible 
> > but as you noted standard stat() exposes some of the UNIX-y file system 
> > featuers with dev_t and friends.  But I do want to cut some of the 
> > stat()s down even if I break some folks.  Anybody want to add their 
> > 2cents?
> 
> Nuke^Wdeprecate the whole mound, replace it with flat 64-bit, and move 
> on.  You're *never* going to be able to remediate a couple of decades' 
> accumulated cruft^Wcompatibility.  *Never*.   Not without breaking 
> something else dependent on the existing bugs^Wbehavior, and not 
> without further degrading the existing code into yet denser thickets of 
> cruft^Wconditional compilation.
> 
> Give folks something to move forward to, and to look forward to.   When 
> you have to make a choice, make that trade-off facing forward.   Not 
> backward.  Preferably — with C — toward C11 and POSIX and better 
> compatibility.  (Going toward OO APIs is probably a bridge too far, 
> though.)
> 

But it isn't just breaking a few programs, I think it is breaking most programs.  As I mentioned the other day, you can get the current CRTL to be very UNIXy with DECC$UNIX_LEVEL set to 90.  It "fixes" the basename() issue for example by flat-out disallowing VMS filespecs.  Sound good, eh?  Nope.

I do want to toss lots of stuff.  We just have to be smart about it.  And I have to still worry about users of __VMS_VER and __VMS_VER_OVERRIDE who want to have the current headers behave like they used to behave (I could solve that with dual sets of headers but that has its own set of nightmares).

Besides the headers, there is also the years of stuff in the compiler. I've pointed out /STANDARD=VAXC before as something people need to stop using. Other standard values like MS and MIA are on the chopping block as well.  Several of the /ASSUME options don't have value.  Who uses /ASSUME=NOTRIGRAPHS for example? /PRECISION? /EXTERN=VAXC?  globalref/globaldef/globalvalue?  Other /EXTERN models besides strict refdef? Heck, we've even talked about removing VAX floating support?  Any takers on that one?  Some of these features make the headers/RTL more complicated.



More information about the Info-vax mailing list