integrate more with report_evil_fh
Nicholas Clark [Thu, 26 Dec 2002 20:56:21 +0000 (20:56 +0000)]
Message-ID: <20021226205620.GA16584@Bagpuss.unfortu.net>

p4raw-id: //depot/perl@18455

pp_sys.c

index cd5bfec..6de068f 100644 (file)
--- a/pp_sys.c
+++ b/pp_sys.c
@@ -1364,21 +1364,8 @@ PP(pp_leavewrite)
     fp = IoOFP(io);
     if (!fp) {
        if (ckWARN2(WARN_CLOSED,WARN_IO)) {
-           if (IoIFP(io)) {
-               /* integrate with report_evil_fh()? */
-               char *name = NULL;
-               if (isGV(gv)) {
-                   SV* sv = sv_newmortal();
-                   gv_efullname4(sv, gv, Nullch, FALSE);
-                   name = SvPV_nolen(sv);
-               }
-               if (name && *name)
-                   Perl_warner(aTHX_ packWARN(WARN_IO),
-                               "Filehandle %s opened only for input", name);
-               else
-                   Perl_warner(aTHX_ packWARN(WARN_IO),
-                               "Filehandle opened only for input");
-           }
+           if (IoIFP(io))
+               report_evil_fh(gv, io, OP_phoney_INPUT_ONLY);
            else if (ckWARN(WARN_CLOSED))
                report_evil_fh(gv, io, PL_op->op_type);
        }
@@ -1451,20 +1438,8 @@ PP(pp_prtf)
     }
     else if (!(fp = IoOFP(io))) {
        if (ckWARN2(WARN_CLOSED,WARN_IO))  {
-           /* integrate with report_evil_fh()? */
-           if (IoIFP(io)) {
-               char *name = NULL;
-               if (isGV(gv)) {
-                   gv_efullname4(sv, gv, Nullch, FALSE);
-                   name = SvPV_nolen(sv);
-               }
-               if (name && *name)
-                   Perl_warner(aTHX_ packWARN(WARN_IO),
-                               "Filehandle %s opened only for input", name);
-               else
-                   Perl_warner(aTHX_ packWARN(WARN_IO),
-                               "Filehandle opened only for input");
-           }
+           if (IoIFP(io))
+               report_evil_fh(gv, io, OP_phoney_INPUT_ONLY);
            else if (ckWARN(WARN_CLOSED))
                report_evil_fh(gv, io, PL_op->op_type);
        }
@@ -1691,21 +1666,7 @@ PP(pp_sysread)
     }
     if (count < 0) {
        if ((IoTYPE(io) == IoTYPE_WRONLY) && ckWARN(WARN_IO))
-       {
-           /* integrate with report_evil_fh()? */
-           char *name = NULL;
-           if (isGV(gv)) {
-               SV* sv = sv_newmortal();
-               gv_efullname4(sv, gv, Nullch, FALSE);
-               name = SvPV_nolen(sv);
-           }
-           if (name && *name)
-               Perl_warner(aTHX_ packWARN(WARN_IO),
-                           "Filehandle %s opened only for output", name);
-           else
-               Perl_warner(aTHX_ packWARN(WARN_IO),
-                           "Filehandle opened only for output");
-       }
+               report_evil_fh(gv, io, OP_phoney_OUTPUT_ONLY);
        goto say_undef;
     }
     SvCUR_set(bufsv, count+(buffer - SvPVX(bufsv)));