int rawmode, int rawperm, PerlIO *supplied_fp, SV *svs,
I32 num_svs)
{
- (void)num_svs;
+ PERL_UNUSED_ARG(num_svs);
return do_openn(gv, name, len, as_raw, rawmode, rawperm,
supplied_fp, &svs, 1);
}
I32 num_svs)
{
dVAR;
- register IO *io = GvIOn(gv);
+ register IO * const io = GvIOn(gv);
PerlIO *saveifp = Nullfp;
PerlIO *saveofp = Nullfp;
int savefd = -1;
SAVEFREEPV(type);
/* Lose leading and trailing white space */
- /*SUPPRESS 530*/
for (; isSPACE(*type); type++) ;
while (tend > type && isSPACE(tend[-1]))
*--tend = '\0';
}
type++;
}
- /*SUPPRESS 530*/
for (type++; isSPACE(*type); type++) ;
if (!num_svs) {
name = type;
if (num_svs > 1) {
Perl_croak(aTHX_ "More than one argument to '%c&' open",IoTYPE(io));
}
- /*SUPPRESS 530*/
for (; isSPACE(*type); type++) ;
if (num_svs && (SvIOK(*svp) || (SvPOK(*svp) && looks_like_number(*svp)))) {
fd = SvUV(*svp);
}
} /* & */
else {
- /*SUPPRESS 530*/
for (; isSPACE(*type); type++) ;
if (*type == IoTYPE_STD && (!type[1] || isSPACE(type[1]) || type[1] == ':')) {
- /*SUPPRESS 530*/
type++;
fp = PerlIO_stdout();
IoTYPE(io) = IoTYPE_STD;
goto unknown_open_mode;
} /* IoTYPE_WRONLY */
else if (*type == IoTYPE_RDONLY) {
- /*SUPPRESS 530*/
for (type++; isSPACE(*type); type++) ;
mode[0] = 'r';
#ifdef HAS_STRLCAT
goto duplicity;
}
if (*type == IoTYPE_STD && (!type[1] || isSPACE(type[1]) || type[1] == ':')) {
- /*SUPPRESS 530*/
type++;
fp = PerlIO_stdin();
IoTYPE(io) = IoTYPE_STD;
*--tend = '\0';
while (tend > type && isSPACE(tend[-1]))
*--tend = '\0';
- /*SUPPRESS 530*/
- for (; isSPACE(*type); type++) ;
+ for (; isSPACE(*type); type++)
+ ;
name = type;
len = tend-type;
}
goto unknown_open_mode;
name = type;
IoTYPE(io) = IoTYPE_RDONLY;
- /*SUPPRESS 530*/
- for (; isSPACE(*name); name++) ;
+ for (; isSPACE(*name); name++)
+ ;
mode[0] = 'r';
#ifdef HAS_STRLCAT
}
}
if (!fp) {
- if (ckWARN(WARN_NEWLINE) && IoTYPE(io) == IoTYPE_RDONLY && strchr(name, '\n'))
+ if (IoTYPE(io) == IoTYPE_RDONLY && ckWARN(WARN_NEWLINE)
+ && strchr(name, '\n')
+
+ )
Perl_warner(aTHX_ packWARN(WARN_NEWLINE), PL_warn_nl, "open");
goto say_false;
}
STRLEN oldlen;
sv = av_shift(GvAV(gv));
SAVEFREESV(sv);
- sv_setsv(GvSV(gv),sv);
+ sv_setsv(GvSVn(gv),sv);
SvSETMAGIC(GvSV(gv));
PL_oldname = SvPVx(GvSV(gv), oldlen);
if (do_open(gv,PL_oldname,oldlen,PL_inplace!=0,O_RDONLY,0,Nullfp)) {
do_close(gv,FALSE);
(void)PerlLIO_unlink(SvPVX_const(sv));
(void)PerlLIO_rename(PL_oldname,SvPVX_const(sv));
- do_open(gv,SvPVX(sv),SvCUR(sv),PL_inplace!=0,O_RDONLY,0,Nullfp);
+ do_open(gv,(char*)SvPVX_const(sv),SvCUR(sv),PL_inplace!=0,
+ O_RDONLY,0,Nullfp);
#endif /* DOSISH */
#else
(void)UNLINK(SvPVX_const(sv));
sv_catpvn(sv,PL_oldname,oldlen);
SETERRNO(0,0); /* in case sprintf set errno */
#ifdef VMS
- if (!do_open(PL_argvoutgv,SvPVX(sv),SvCUR(sv),PL_inplace!=0,
- O_WRONLY|O_CREAT|O_TRUNC,0,Nullfp))
+ if (!do_open(PL_argvoutgv,(char*)SvPVX_const(sv),SvCUR(sv),
+ PL_inplace!=0,O_WRONLY|O_CREAT|O_TRUNC,0,Nullfp))
#else
- if (!do_open(PL_argvoutgv,SvPVX(sv),SvCUR(sv),PL_inplace!=0,
- O_WRONLY|O_CREAT|OPEN_EXCL,0666,Nullfp))
+ if (!do_open(PL_argvoutgv,(char*)SvPVX_const(sv),SvCUR(sv),
+ PL_inplace!=0,O_WRONLY|O_CREAT|OPEN_EXCL,0666,
+ Nullfp))
#endif
{
if (ckWARN_d(WARN_INPLACE))
if (!io)
return TRUE;
- else if (ckWARN(WARN_IO) && (IoTYPE(io) == IoTYPE_WRONLY))
+ else if ((IoTYPE(io) == IoTYPE_WRONLY) && ckWARN(WARN_IO))
report_evil_fh(gv, io, OP_phoney_OUTPUT_ONLY);
while (IoIFP(io)) {
int mode = O_BINARY;
if (discp) {
STRLEN len;
- const char *s = SvPV(discp,len);
+ const char *s = SvPV_const(discp,len);
while (*s) {
if (*s == ':') {
switch (s[1]) {
/* assuming fp is checked earlier */
if (!sv)
return TRUE;
- if (PL_ofmt) {
- if (SvGMAGICAL(sv))
- mg_get(sv);
- if (SvIOK(sv) && SvIVX(sv) != 0) {
- PerlIO_printf(fp, PL_ofmt, (NV)SvIVX(sv));
- return !PerlIO_error(fp);
- }
- if ( (SvNOK(sv) && SvNVX(sv) != 0.0)
- || (looks_like_number(sv) && sv_2nv(sv) != 0.0) ) {
- PerlIO_printf(fp, PL_ofmt, SvNVX(sv));
- return !PerlIO_error(fp);
- }
- }
switch (SvTYPE(sv)) {
case SVt_NULL:
if (ckWARN(WARN_UNINITIALIZED))
{
dSP;
SV *sv;
- STRLEN n_a;
if (PL_op->op_flags & OPf_REF) {
EXTEND(SP,1);
if (cGVOP_gv == PL_defgv) {
return (PL_laststatval = -1);
}
}
- else if (ckWARN(WARN_IO) && PL_laststype != OP_LSTAT
- && (PL_op->op_private & OPpFT_STACKED))
+ else if (PL_laststype != OP_LSTAT
+ && (PL_op->op_private & OPpFT_STACKED) && ckWARN(WARN_IO))
Perl_croak(aTHX_ no_prev_lstat);
PL_laststype = OP_LSTAT;
return (PL_laststatval = -1);
}
/* XXX Do really need to be calling SvPV() all these times? */
- sv_setpv(PL_statname,SvPV(sv, n_a));
- PL_laststatval = PerlLIO_lstat(SvPV(sv, n_a),&PL_statcache);
- if (PL_laststatval < 0 && ckWARN(WARN_NEWLINE) && strchr(SvPV(sv, n_a), '\n'))
+ sv_setpv(PL_statname,SvPV_nolen_const(sv));
+ PL_laststatval = PerlLIO_lstat(SvPV_nolen_const(sv),&PL_statcache);
+ if (PL_laststatval < 0 && ckWARN(WARN_NEWLINE) && strchr(SvPV_nolen_const(sv), '\n'))
Perl_warner(aTHX_ packWARN(WARN_NEWLINE), PL_warn_nl, "lstat");
return PL_laststatval;
}
#if defined(MACOS_TRADITIONAL) || defined(SYMBIAN)
Perl_croak(aTHX_ "exec? I'm not *that* kind of operating system");
#else
- register char **a;
- const char *tmps = Nullch;
- STRLEN n_a;
-
if (sp > mark) {
- New(401,PL_Argv, sp - mark + 1, char*);
+ char **a;
+ const char *tmps = Nullch;
+ Newx(PL_Argv, sp - mark + 1, char*);
a = PL_Argv;
+
while (++mark <= sp) {
if (*mark)
- *a++ = SvPVx(*mark, n_a);
+ *a++ = (char*)SvPV_nolen_const(*mark);
else
*a++ = "";
}
*a = Nullch;
if (really)
- tmps = SvPV(really, n_a);
+ tmps = SvPV_nolen_const(really);
if ((!really && *PL_Argv[0] != '/') ||
(really && *tmps != '/')) /* will execvp use PATH? */
TAINT_ENV(); /* testing IFS here is overkill, probably */
void
Perl_do_execfree(pTHX)
{
- if (PL_Argv) {
- Safefree(PL_Argv);
- PL_Argv = Null(char **);
- }
- if (PL_Cmd) {
- Safefree(PL_Cmd);
- PL_Cmd = Nullch;
- }
+ Safefree(PL_Argv);
+ PL_Argv = Null(char **);
+ Safefree(PL_Cmd);
+ PL_Cmd = Nullch;
}
#if !defined(OS2) && !defined(WIN32) && !defined(DJGPP) && !defined(EPOC) && !defined(SYMBIAN) && !defined(MACOS_TRADITIONAL)
}
}
- New(402,PL_Argv, (s - cmd) / 2 + 2, char*);
+ Newx(PL_Argv, (s - cmd) / 2 + 2, char*);
PL_Cmd = savepvn(cmd, s-cmd);
a = PL_Argv;
for (s = PL_Cmd; *s;) {
register I32 tot = 0;
const char *what;
const char *s;
- SV **oldmark = mark;
- STRLEN n_a;
+ SV ** const oldmark = mark;
#define APPLY_TAINT_PROPER() \
STMT_START { \
APPLY_TAINT_PROPER();
tot = sp - mark;
while (++mark <= sp) {
- const char *name = SvPVx(*mark, n_a);
- APPLY_TAINT_PROPER();
- if (PerlLIO_chmod(name, val))
- tot--;
+ GV* gv;
+ if (SvTYPE(*mark) == SVt_PVGV) {
+ gv = (GV*)*mark;
+ do_fchmod:
+ if (GvIO(gv) && IoIFP(GvIOp(gv))) {
+#ifdef HAS_FCHMOD
+ APPLY_TAINT_PROPER();
+ if (fchmod(PerlIO_fileno(IoIFP(GvIOn(gv))), val))
+ tot--;
+#else
+ Perl_die(aTHX_ PL_no_func, "fchmod");
+#endif
+ }
+ else {
+ tot--;
+ }
+ }
+ else if (SvROK(*mark) && SvTYPE(SvRV(*mark)) == SVt_PVGV) {
+ gv = (GV*)SvRV(*mark);
+ goto do_fchmod;
+ }
+ else {
+ const char *name = SvPV_nolen_const(*mark);
+ APPLY_TAINT_PROPER();
+ if (PerlLIO_chmod(name, val))
+ tot--;
+ }
}
}
break;
APPLY_TAINT_PROPER();
tot = sp - mark;
while (++mark <= sp) {
- const char *name = SvPVx(*mark, n_a);
- APPLY_TAINT_PROPER();
- if (PerlLIO_chown(name, val, val2))
- tot--;
+ GV* gv;
+ if (SvTYPE(*mark) == SVt_PVGV) {
+ gv = (GV*)*mark;
+ do_fchown:
+ if (GvIO(gv) && IoIFP(GvIOp(gv))) {
+#ifdef HAS_FCHOWN
+ APPLY_TAINT_PROPER();
+ if (fchown(PerlIO_fileno(IoIFP(GvIOn(gv))), val, val2))
+ tot--;
+#else
+ Perl_die(aTHX_ PL_no_func, "fchown");
+#endif
+ }
+ else {
+ tot--;
+ }
+ }
+ else if (SvROK(*mark) && SvTYPE(SvRV(*mark)) == SVt_PVGV) {
+ gv = (GV*)SvRV(*mark);
+ goto do_fchown;
+ }
+ else {
+ const char *name = SvPV_nolen_const(*mark);
+ APPLY_TAINT_PROPER();
+ if (PerlLIO_chown(name, val, val2))
+ tot--;
+ }
}
}
break;
APPLY_TAINT_PROPER();
if (mark == sp)
break;
- s = SvPVx_const(*++mark, n_a);
+ s = SvPVx_nolen_const(*++mark);
if (isALPHA(*s)) {
if (*s == 'S' && s[1] == 'I' && s[2] == 'G')
s += 3;
APPLY_TAINT_PROPER();
tot = sp - mark;
while (++mark <= sp) {
- s = SvPVx_const(*mark, n_a);
+ s = SvPV_nolen_const(*mark);
APPLY_TAINT_PROPER();
if (PL_euid || PL_unsafe) {
- if (UNLINK(s))
+ if (UNLINK((char *)s))
tot--;
}
else { /* don't let root wipe out directories without -U */
if (PerlLIO_lstat(s,&PL_statbuf) < 0 || S_ISDIR(PL_statbuf.st_mode))
tot--;
else {
- if (UNLINK(s))
+ if (UNLINK((char *)s))
tot--;
}
}
APPLY_TAINT_PROPER();
tot = sp - mark;
while (++mark <= sp) {
- STRLEN n_a;
- const char *name = SvPVx(*mark, n_a);
+ char *name = SvPV_nolen(*mark);
APPLY_TAINT_PROPER();
if (PerlLIO_utime(name, utbufp))
tot--;
const I32 id = SvIVx(*++mark);
const I32 n = (optype == OP_SEMCTL) ? SvIVx(*++mark) : 0;
const I32 cmd = SvIVx(*++mark);
- (void)sp;
+ PERL_UNUSED_ARG(sp);
astr = *++mark;
infosize = 0;
if (infosize)
{
- STRLEN len;
if (getinfo)
{
- SvPV_force(astr, len);
+ SvPV_force_nolen(astr);
a = SvGROW(astr, infosize+1);
}
else
{
+ STRLEN len;
a = SvPV(astr, len);
if (len != infosize)
Perl_croak(aTHX_ "Bad arg length for %s, is %lu, should be %ld",
{
#ifdef HAS_MSG
SV *mstr;
- char *mbuf;
+ const char *mbuf;
I32 msize, flags;
STRLEN len;
const I32 id = SvIVx(*++mark);
- (void)sp;
+ PERL_UNUSED_ARG(sp);
mstr = *++mark;
flags = SvIVx(*++mark);
- mbuf = SvPV(mstr, len);
+ mbuf = SvPV_const(mstr, len);
if ((msize = len - sizeof(long)) < 0)
Perl_croak(aTHX_ "Arg too short for msgsnd");
SETERRNO(0,0);
char *mbuf;
long mtype;
I32 msize, flags, ret;
- STRLEN len;
const I32 id = SvIVx(*++mark);
- (void)sp;
+ PERL_UNUSED_ARG(sp);
mstr = *++mark;
/* suppress warning when reading into undef var --jhi */
msize = SvIVx(*++mark);
mtype = (long)SvIVx(*++mark);
flags = SvIVx(*++mark);
- SvPV_force(mstr, len);
+ SvPV_force_nolen(mstr);
mbuf = SvGROW(mstr, sizeof(long)+msize+1);
SETERRNO(0,0);
{
#ifdef HAS_SEM
SV *opstr;
- char *opbuf;
+ const char *opbuf;
STRLEN opsize;
const I32 id = SvIVx(*++mark);
- (void)sp;
+ PERL_UNUSED_ARG(sp);
opstr = *++mark;
- opbuf = SvPV(opstr, opsize);
+ opbuf = SvPV_const(opstr, opsize);
if (opsize < 3 * SHORTSIZE
|| (opsize % (3 * SHORTSIZE))) {
SETERRNO(EINVAL,LIB_INVARG);
struct sembuf *temps, *t;
I32 result;
- New (0, temps, nsops, struct sembuf);
+ Newx (temps, nsops, struct sembuf);
t = temps;
while (i--) {
t->sem_num = *o++;
SV *mstr;
char *shm;
I32 mpos, msize;
- STRLEN len;
struct shmid_ds shmds;
const I32 id = SvIVx(*++mark);
- (void)sp;
+ PERL_UNUSED_ARG(sp);
mstr = *++mark;
mpos = SvIVx(*++mark);
/* suppress warning when reading into undef var (tchrist 3/Mar/00) */
if (! SvOK(mstr))
sv_setpvn(mstr, "", 0);
- SvPV_force(mstr, len);
+ SvPV_force_nolen(mstr);
mbuf = SvGROW(mstr, msize+1);
Copy(shm + mpos, mbuf, msize, char);
}
else {
I32 n;
+ STRLEN len;
- const char *mbuf = SvPV(mstr, len);
+ const char *mbuf = SvPV_const(mstr, len);
if ((n = len) > msize)
n = msize;
Copy(mbuf, shm + mpos, n, char);
#include <rmsdef.h>
char rslt[NAM$C_MAXRSS+1+sizeof(unsigned short int)] = {'\0','\0'};
char vmsspec[NAM$C_MAXRSS+1];
- char *rstr = rslt + sizeof(unsigned short int), *begin, *end, *cp;
+ char * const rstr = rslt + sizeof(unsigned short int);
+ char *begin, *end, *cp;
$DESCRIPTOR(dfltdsc,"SYS$DISK:[]*.*;");
PerlIO *tmpfp;
STRLEN i;
#endif /* !CSH */
#endif /* !DOSISH */
#endif /* MACOS_TRADITIONAL */
- (void)do_open(PL_last_in_gv, SvPVX(tmpcmd), SvCUR(tmpcmd),
+ (void)do_open(PL_last_in_gv, (char*)SvPVX_const(tmpcmd), SvCUR(tmpcmd),
FALSE, O_RDONLY, 0, Nullfp);
fp = IoIFP(io);
#endif /* !VMS */