From e2ce0950e5e4b86c6fcbc488c37dd61d082b3e0d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= Date: Fri, 21 Nov 2014 10:48:51 +0100 Subject: [PATCH] Report inaccesible file on failed require MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Commit 2433d39e6 (require should die if a file exists but can't be read) made first failed opened file fatal as request in [perl #113422]. However error message produced in that case is not much helpful in identifying which file ound not been accessed: $ LANG=C perl -I/root -e 'require strict' Can't locate strict.pm: Permission denied at -e line 1. This patch adds the name of the failed file to the message to help identify which @INC directory is erroneous: $ LANG=C ./perl -I/root -I./lib -e 'require strict' Can't locate strict.pm: /root/strict.pm: Permission denied at -e line 1. Signed-off-by: Petr Písař --- pp_ctl.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pp_ctl.c b/pp_ctl.c index 4b16e14..4f1c480 100644 --- a/pp_ctl.c +++ b/pp_ctl.c @@ -4048,7 +4048,8 @@ PP(pp_require) if (PL_op->op_type == OP_REQUIRE) { if(saved_errno == EMFILE || saved_errno == EACCES) { /* diag_listed_as: Can't locate %s */ - DIE(aTHX_ "Can't locate %s: %s", name, Strerror(saved_errno)); + DIE(aTHX_ "Can't locate %s: %s: %s", + name, tryname, Strerror(saved_errno)); } else { if (namesv) { /* did we lookup @INC? */ AV * const ar = GvAVn(PL_incgv); -- 1.9.3