emit more appropriate diagnostic for failed glob (variant
Gurusamy Sarathy [Mon, 17 May 1999 09:06:45 +0000 (09:06 +0000)]
of patch suggested by Graham Barr)

p4raw-id: //depot/perl@3432

gv.c
pod/perldiag.pod
pp.c
pp_hot.c

diff --git a/gv.c b/gv.c
index df3e0e1..8df41c5 100644 (file)
--- a/gv.c
+++ b/gv.c
@@ -1130,7 +1130,7 @@ Gv_AMupdate(HV *stash)
                              (SvPOK(GvSV(gv)) ?  SvPVX(GvSV(gv)) : "???" ),
                              cp, HvNAME(stash));
                    } else
-                       croak("Cannot resolve method `%.256s' overloading `%s' in package `%.256s'", 
+                       croak("Can't resolve method `%.256s' overloading `%s' in package `%.256s'", 
                              (SvPOK(GvSV(gv)) ?  SvPVX(GvSV(gv)) : "???" ),
                              cp, HvNAME(stash));
                }
index b83b577..b7e2071 100644 (file)
@@ -982,12 +982,12 @@ references can be weakened.
 an assignment operator, which implies modifying the value itself.
 Perhaps you need to copy the value to a temporary, and repeat that.
 
-=item Cannot find an opnumber for "%s"
+=item Can't find an opnumber for "%s"
 
 (F) A string of a form C<CORE::word> was given to prototype(), but
 there is no builtin with the name C<word>.
 
-=item Cannot resolve method `%s' overloading `%s' in package `%s'
+=item Can't resolve method `%s' overloading `%s' in package `%s'
 
 (F|P) Error resolving overloading specified by a method name (as
 opposed to a subroutine reference): no such method callable via the
diff --git a/pp.c b/pp.c
index e76266e..afee215 100644 (file)
--- a/pp.c
+++ b/pp.c
@@ -472,7 +472,7 @@ PP(pp_prototype)
                goto set;
            else {                      /* None such */
              nonesuch:
-               croak("Cannot find an opnumber for \"%s\"", s+6);
+               croak("Can't find an opnumber for \"%s\"", s+6);
            }
        }
     }
index 5fa2bef..7709c53 100644 (file)
--- a/pp_hot.c
+++ b/pp_hot.c
@@ -1270,9 +1270,14 @@ do_readline(void)
            SP--;
     }
     if (!fp) {
-       if (ckWARN(WARN_CLOSED) && io && !(IoFLAGS(io) & IOf_START))
-           warner(WARN_CLOSED,
-                  "Read on closed filehandle <%s>", GvENAME(PL_last_in_gv));
+       if (ckWARN(WARN_CLOSED) && io && !(IoFLAGS(io) & IOf_START)) {
+           if (type == OP_GLOB)
+               warner(WARN_CLOSED, "glob failed (can't start child: %s)",
+                      Strerror(errno));
+           else
+               warner(WARN_CLOSED, "Read on closed filehandle <%s>",
+                      GvENAME(PL_last_in_gv));
+       }
        if (gimme == G_SCALAR) {
            (void)SvOK_off(TARG);
            PUSHTARG;