register IO *io = GvIOn(gv);
PerlIO *saveifp = Nullfp;
PerlIO *saveofp = Nullfp;
- char savetype = ' ';
+ char savetype = IoTYPE_CLOSED;
int writing = 0;
PerlIO *fp;
int fd;
}
mode[0] = mode[1] = mode[2] = mode[3] = '\0';
IoTYPE(io) = *type;
- if (*type == '+' && tlen > 1 && type[tlen-1] != '|') { /* scary */
+ if (*type == IoTYPE_RDWR && tlen > 1 && type[tlen-1] != IoTYPE_PIPE) { /* scary */
mode[1] = *type++;
--tlen;
writing = 1;
}
- if (*type == '|') {
- if (num_svs && (tlen != 2 || type[1] != '-')) {
+ if (*type == IoTYPE_PIPE) {
+ if (num_svs && (tlen != 2 || type[1] != IoTYPE_STD)) {
unknown_desr:
Perl_croak(aTHX_ "Unknown open() mode '%.*s'", (int)olen, oname);
}
}
writing = 1;
}
- else if (*type == '>') {
+ else if (*type == IoTYPE_WRONLY) {
TAINT_PROPER("open");
type++;
- if (*type == '>') {
+ if (*type == IoTYPE_WRONLY) {
+ /* Two IoTYPE_WRONLYs in a row make for an IoTYPE_APPEND. */
mode[0] = IoTYPE(io) = IoTYPE_APPEND;
type++;
tlen--;
else {
/*SUPPRESS 530*/
for (; isSPACE(*type); type++) ;
- if (strEQ(type,"-")) {
+ if (*type == IoTYPE_STD && !type[1]) {
fp = PerlIO_stdout();
IoTYPE(io) = IoTYPE_STD;
}
}
}
}
- else if (*type == '<') {
+ else if (*type == IoTYPE_RDONLY) {
if (num_svs && tlen != 1)
goto unknown_desr;
/*SUPPRESS 530*/
name = type;
goto duplicity;
}
- if (strEQ(type,"-")) {
+ if (*type == IoTYPE_STD && !type[1]) {
fp = PerlIO_stdin();
IoTYPE(io) = IoTYPE_STD;
}
else
fp = PerlIO_open((num_svs ? name : type), mode);
}
- else if (tlen > 1 && type[tlen-1] == '|') {
+ else if (tlen > 1 && type[tlen-1] == IoTYPE_PIPE) {
if (num_svs) {
- if (tlen != 2 || type[0] != '-')
+ if (tlen != 2 || type[0] != IoTYPE_STD)
goto unknown_desr;
}
else {
}
else {
PerlIO_rewind(tmpfp);
- IoTYPE(io) = '<';
+ IoTYPE(io) = IoTYPE_RDONLY;
IoIFP(io) = fp = tmpfp;
IoFLAGS(io) &= ~IOf_UNTAINT; /* maybe redundant */
}
else if (type == OP_GLOB)
SP--;
else if (ckWARN(WARN_IO) /* stdout/stderr or other write fh */
- && (IoTYPE(io) == '>' || fp == PerlIO_stdout()
+ && (IoTYPE(io) == IoTYPE_WRONLY || fp == PerlIO_stdout()
|| fp == PerlIO_stderr()))
{
/* integrate with report_evil_fh()? */