*/
/*
- * "Far below them they saw the white waters pour into a foaming bowl, and
- * then swirl darkly about a deep oval basin in the rocks, until they found
- * their way out again through a narrow gate, and flowed away, fuming and
- * chattering, into calmer and more level reaches."
+ * Far below them they saw the white waters pour into a foaming bowl, and
+ * then swirl darkly about a deep oval basin in the rocks, until they found
+ * their way out again through a narrow gate, and flowed away, fuming and
+ * chattering, into calmer and more level reaches.
+ *
+ * [p.684 of _The Lord of the Rings_, IV/vi: "The Forbidden Pool"]
*/
/* This file contains functions that do the actual I/O on behalf of ops.
}
#if defined(HAS_FCNTL) && defined(F_SETFD)
if (fd >= 0) {
- const int save_errno = errno;
+ dSAVE_ERRNO;
fcntl(fd,F_SETFD,fd > PL_maxsysfd); /* can change errno */
- errno = save_errno;
+ RESTORE_ERRNO;
}
#endif
IoIFP(io) = fp;
do_close(gv,FALSE);
(void)PerlLIO_unlink(SvPVX_const(sv));
(void)PerlLIO_rename(PL_oldname,SvPVX_const(sv));
- do_open(gv,(char*)SvPVX_const(sv),SvCUR(sv),PL_inplace!=0,
- O_RDONLY,0,NULL);
+ do_open(gv,(char*)SvPVX_const(sv),SvCUR(sv),TRUE,O_RDONLY,0,NULL);
#endif /* DOSISH */
#else
(void)UNLINK(SvPVX_const(sv));
#endif
}
- sv_setpvn(sv,">",!PL_inplace);
- sv_catpvn(sv,PL_oldname,oldlen);
+ sv_setpvn(sv,PL_oldname,oldlen);
SETERRNO(0,0); /* in case sprintf set errno */
+ if (!Perl_do_openn(aTHX_ PL_argvoutgv, (char*)SvPVX_const(sv),
+ SvCUR(sv), TRUE,
#ifdef VMS
- if (!do_open(PL_argvoutgv,(char*)SvPVX_const(sv),SvCUR(sv),
- PL_inplace!=0,O_WRONLY|O_CREAT|O_TRUNC,0,NULL))
+ O_WRONLY|O_CREAT|O_TRUNC,0,
#else
- if (!do_open(PL_argvoutgv,(char*)SvPVX_const(sv),SvCUR(sv),
- PL_inplace!=0,O_WRONLY|O_CREAT|OPEN_EXCL,0666,
- NULL))
+ O_WRONLY|O_CREAT|OPEN_EXCL,0600,
#endif
- {
+ NULL, NULL, 0)) {
if (ckWARN_d(WARN_INPLACE))
Perl_warner(aTHX_ packWARN(WARN_INPLACE), "Can't do inplace edit on %s: %s",
PL_oldname, Strerror(errno) );
if (io && (IoFLAGS(io) & IOf_ARGV)
&& PL_argvout_stack && AvFILLp(PL_argvout_stack) >= 0)
{
- GV * const oldout = (GV*)av_pop(PL_argvout_stack);
+ GV * const oldout = MUTABLE_GV(av_pop(PL_argvout_stack));
setdefout(oldout);
SvREFCNT_dec(oldout);
return NULL;
{
/* getc and ungetc can stomp on errno */
- const int saverrno = errno;
+ dSAVE_ERRNO;
const int ch = PerlIO_getc(IoIFP(io));
if (ch != EOF) {
(void)PerlIO_ungetc(IoIFP(io),ch);
- errno = saverrno;
+ RESTORE_ERRNO;
return FALSE;
}
- errno = saverrno;
+ RESTORE_ERRNO;
}
if (PerlIO_has_cntptr(IoIFP(io)) && PerlIO_canset_cnt(IoIFP(io))) {
STRLEN len;
PUTBACK;
if (isGV_with_GP(sv)) {
- gv = (GV*)sv;
+ gv = MUTABLE_GV(sv);
goto do_fstat;
}
else if (SvROK(sv) && isGV_with_GP(SvRV(sv))) {
- gv = (GV*)SvRV(sv);
+ gv = MUTABLE_GV(SvRV(sv));
goto do_fstat;
}
else if (SvROK(sv) && SvTYPE(SvRV(sv)) == SVt_PVIO) {
PUTBACK;
if (SvROK(sv) && isGV_with_GP(SvRV(sv)) && ckWARN(WARN_IO)) {
Perl_warner(aTHX_ packWARN(WARN_IO), "Use of -l on filehandle %s",
- GvENAME((GV*) SvRV(sv)));
+ GvENAME((const GV *)SvRV(sv)));
return (PL_laststatval = -1);
}
file = SvPV_nolen_const(sv);
while (++mark <= sp) {
GV* gv;
if (isGV_with_GP(*mark)) {
- gv = (GV*)*mark;
+ gv = MUTABLE_GV(*mark);
do_fchmod:
if (GvIO(gv) && IoIFP(GvIOp(gv))) {
#ifdef HAS_FCHMOD
}
}
else if (SvROK(*mark) && isGV_with_GP(SvRV(*mark))) {
- gv = (GV*)SvRV(*mark);
+ gv = MUTABLE_GV(SvRV(*mark));
goto do_fchmod;
}
else {
while (++mark <= sp) {
GV* gv;
if (isGV_with_GP(*mark)) {
- gv = (GV*)*mark;
+ gv = MUTABLE_GV(*mark);
do_fchown:
if (GvIO(gv) && IoIFP(GvIOp(gv))) {
#ifdef HAS_FCHOWN
}
}
else if (SvROK(*mark) && isGV_with_GP(SvRV(*mark))) {
- gv = (GV*)SvRV(*mark);
+ gv = MUTABLE_GV(SvRV(*mark));
goto do_fchown;
}
else {
while (++mark <= sp) {
GV* gv;
if (isGV_with_GP(*mark)) {
- gv = (GV*)*mark;
+ gv = MUTABLE_GV(*mark);
do_futimes:
if (GvIO(gv) && IoIFP(GvIOp(gv))) {
#ifdef HAS_FUTIMES
}
}
else if (SvROK(*mark) && isGV_with_GP(SvRV(*mark))) {
- gv = (GV*)SvRV(*mark);
+ gv = MUTABLE_GV(SvRV(*mark));
goto do_futimes;
}
else {
}
#endif /* ! VMS */
-bool
-Perl_ingroup(pTHX_ Gid_t testgid, bool effective)
+static bool
+S_ingroup(pTHX_ Gid_t testgid, bool effective)
{
#ifdef MACOS_TRADITIONAL
/* This is simply not correct for AppleShare, but fix it yerself. */