[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

[lintian] 01/02: FrontendUtil: Work around a bug in autodie



This is an automated email from the git hooks/post-receive script.

nthykier pushed a commit to branch master
in repository lintian.

commit 2dbb5716ee3ce29f8983ced56b14f10e4fe78f97
Author: Niels Thykier <niels@thykier.net>
Date:   Sat Jan 31 21:29:24 2015 +0100

    FrontendUtil: Work around a bug in autodie
---
 debian/changelog                     |  3 +++
 lib/Lintian/Internal/FrontendUtil.pm | 15 +++++++++++----
 2 files changed, 14 insertions(+), 4 deletions(-)

diff --git a/debian/changelog b/debian/changelog
index 1c0628d..e853935 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -96,6 +96,9 @@ lintian (2.5.31) UNRELEASED; urgency=medium
   * lib/Lintian/Command.pm:
     + [NT] Use croak() rather than L::Util's fail() on errors.
       The issues are generally not "internal errors".
+  * lib/Lintian/Internal/FrontendUtil.pm:
+    + [NT] Work around a bug in autodie, where an fdopen of a
+      file-descriptor always failed with "bad file descriptor".
   * lib/Lintian/Util.pm:
     + [NT] Prefer dpkg-deb --ctrl-tarfile to "ar p" when dpkg
       is recent enough.
diff --git a/lib/Lintian/Internal/FrontendUtil.pm b/lib/Lintian/Internal/FrontendUtil.pm
index 5051ac7..601b13b 100644
--- a/lib/Lintian/Internal/FrontendUtil.pm
+++ b/lib/Lintian/Internal/FrontendUtil.pm
@@ -188,22 +188,29 @@ sub default_parallel {
 sub open_file_or_fd {
     my ($to_open, $mode) = @_;
     my $fd;
+    # autodie trips this for some reasons (possibly fixed
+    # in v2.26)
+    no autodie qw(open);
     if ($mode eq '<') {
         if ($to_open eq '-' or $to_open eq '&0') {
             $fd = \*STDIN;
         } elsif ($to_open =~ m/^\&\d+$/) {
-            open($fd, '<&=', substr($to_open, 1));
+            open($fd, '<&=', substr($to_open, 1))
+              or die("fdopen $to_open for reading: $!\n");
         } else {
-            open($fd, '<', $to_open);
+            open($fd, '<', $to_open)
+              or die("open $to_open for reading: $!\n");
         }
     } elsif ($mode eq '>') {
         if ($to_open eq '-' or $to_open eq '&1') {
             $fd = \*STDOUT;
         } elsif ($to_open =~ m/^\&\d+$/) {
-            open($fd, '>>&=', substr($to_open, 1));
+            open($fd, '>&=', substr($to_open, 1))
+              or die("fdopen $to_open for writing: $!\n");
         } else {
             $mode = ">$mode" if $to_open =~ s/^\+//;
-            open($fd, $mode, $to_open);
+            open($fd, $mode, $to_open)
+              or die("open $to_open for write/append ($mode): $!\n");
         }
     } else {
         croak("Invalid mode \"$mode\" for open_file_or_fd");

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/lintian/lintian.git


Reply to: