Re: Problem with VMS Carriage return carriage control files in 5.10 and 5.12

"Craig A. Berry" <[email protected]>
Newsgroups gmane.comp.lang.perl.ports.vms
Message-ID <[email protected]>
On Apr 22, 2010, at 2:39 PM, [email protected] wrote:

> Unfortunatly the suggested solution I really would like to implement
> (since it requires not code/setup changes) does give me a headache.
> Setting stdio as the standard during using configure.com does cause  
> the
> compilation of perl to fail.
>
> Here is what I did:
>
> * Unpack perl into a clean directory
> * @configure
>  ...
>   --> Default answers for everything but
>  Use the PerlIO abstraction layer? [y] n
>  Ok, doing things the stdio way.

It should be possible to simply say:

$ @configure -"Uuseperlio" -"des"

However, that was broken until the following change:

<http://perl5.git.perl.org/perl.git/commitdiff/839d17582bad556c85fba50bb136d1c1fa878a54 
 >

But in any case, choosing to turn off perlio by answering the  
interactive question explicitly as you did was successful in producing  
the desired configuration.

> CC/DECC/NOANSI_ALIAS
> /Include=[]/Standard=Relaxed_ANSI/Prefix=All/Obj=.obj/NoList
> /float=ieee/ieee=denorm/Define=(PERL_CORE,_USE_STD_STAT=1) VMS.C
>
>             && PL_perlio_fd_refcnt)
> ................^
> %CC-E-UNDECLARED, In this statement, "PL_perlio_fd_refcnt" is not
> declared.
> at line number 3080 in file DSA0:[PUBLIC.GNU.PERLSTD]vms.c;1


As I noted earlier, that is (was) a bug.  It's now fixed in:

<http://perl5.git.perl.org/perl.git/commitdiff/a24c654f07035713924a2c157a5149ef670f55a5 
 >

I did a build with perlio disabled and these patches in place.  Your  
original test now succeeds.  Mine doesn't because we get a new record  
for each print statement, which worked well for your case but not for  
mine.  That's because disabling perlio entirely disables any buffering  
so each print statement goes all the way down to fwrite().

It may be what we really need is instead of the default being perlio  
and its buffering on top of unix I/O (write() and friends), it should  
be perlio on top of stdio (fwrite() and friends) for record-oriented  
files and devices and perlio on top of unix I/O for everything else.   
This would require some understanding of how the PerlIO scheme chooses  
its base layers and also detection of whether we've got a record- 
oriented gizmo or not, probably by hooking a callback onto fopen() or  
fdopen().  Which sounds like real work.


________________________________________
Craig A. Berry
mailto:[email protected]

"... getting out of a sonnet is much more
  difficult than getting in."
                  Brad Leithauser
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.