From: Craig A. Berry Date: Fri, 1 Sep 2000 01:47:22 +0000 (-0500) Subject: 2 more vms.c fix-ups and status X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=2ff7ee21189ba0d0583f92171dc62c4755fad5af;p=p5sagit%2Fp5-mst-13.2.git 2 more vms.c fix-ups and status Message-Id: <4.3.2.7.2.20000901011206.01ca2e88@exchi01> p4raw-id: //depot/perl@6965 --- diff --git a/pod/perldelta.pod b/pod/perldelta.pod index d739204..a903e78 100644 --- a/pod/perldelta.pod +++ b/pod/perldelta.pod @@ -754,11 +754,6 @@ one can (or, if one can, whether it's a good idea) link together at all binaries with different ideas about file offsets, all this is platform-dependent. -=head2 ftmp-posix subtest 6 fails in VMS - -The test exposes a flushing bug in the VMS port of Perl, this failure -as such can be ignored. - =head2 ftmp-security tests warn 'system possibly insecure' Don't panic. Read INSTALL 'make test' section instead. @@ -766,10 +761,13 @@ Don't panic. Read INSTALL 'make test' section instead. =head2 Long Doubles Still Don't Work In Solaris The experimental long double support is still very much so in Solaris. -(Other platforms like Linux and Tru64 are beginning to solidify in this area.) +(Other platforms like Linux and Tru64 are beginning to solidify in +this area.) =head2 Storable tests fail in some platforms +If any Storable tests fail the use of Storable is not advisable. + =over 4 =item * @@ -791,6 +789,10 @@ st-06compat fails in UNICOS and UNICOS/mk. This means that you cannot read old (pre-Storable-0.7) Storable images made in other platforms. +=item * + +st-store.t and st-retrieve may fail with Compaq C 6.2 on OpenVMS Alpha 7.2. + =back =head1 Reporting Bugs diff --git a/vms/vms.c b/vms/vms.c index dc14c5f..8e56d30 100644 --- a/vms/vms.c +++ b/vms/vms.c @@ -1,9 +1,12 @@ /* vms.c * * VMS-specific routines for perl5 + * Version: 5.7.0 * - * Last revised: 20-Aug-1999 by Charles Bailey bailey@newman.upenn.edu - * Version: 5.5.60 + * August 2000 tweaks to vms_image_init, my_flush, my_fwrite, cando_by_name, + * and Perl_cando by Craig Berry + * 29-Aug-2000 Charles Lane's piping improvements rolled in + * 20-Aug-1999 revisions by Charles Bailey bailey@newman.upenn.edu */ #include @@ -4726,6 +4729,13 @@ my_flush(FILE *fp) #endif res = fsync(fileno(fp)); } +/* + * If the flush succeeded but set end-of-file, we need to clear + * the error because our caller may check ferror(). BTW, this + * probably means we just flushed an empty file. + */ + if (res == 0 && vaxc$errno == RMS$_EOF) clearerr(fp); + return res; } /*}}}*/ @@ -5587,7 +5597,16 @@ Perl_cando(pTHX_ Mode_t bit, Uid_t effective, Stat_t *statbufp) &namdsc,&namdsc.dsc$w_length,0,0); if (retsts & 1) { fname[namdsc.dsc$w_length] = '\0'; - return cando_by_name(bit,effective,fname); +/* + * lib$fid_to_name returns DVI$_LOGVOLNAM as the device part of the name, + * but if someone has redefined that logical, Perl gets very lost. Since + * we have the physical device name from the stat buffer, just paste it on. + */ + char fname_phdev[NAM$C_MAXRSS+1]; + strcpy( fname_phdev, statbufp->st_devnam ); + strcat( fname_phdev, strrchr(fname, ':') ); + + return cando_by_name(bit,effective,fname_phdev); } else if (retsts == SS$_NOSUCHDEV || retsts == SS$_NOSUCHFILE) { Perl_warn(aTHX_ "Can't get filespec - stale stat buffer?\n");