From 6c70c788d522cfaafd323fc779e078aded2caba1 Mon Sep 17 00:00:00 2001 From: Rafael Garcia-Suarez Date: Tue, 19 Sep 2006 09:08:09 +0000 Subject: When restarting urpmi, close leaked filehandles. Useful for the upgrade 2006->2007, since the URPM version in 2006 used to leak filehandles. --- urpm/sys.pm | 15 +++++++++++++++ 1 file changed, 15 insertions(+) (limited to 'urpm') diff --git a/urpm/sys.pm b/urpm/sys.pm index dccd05b8..0b191265 100644 --- a/urpm/sys.pm +++ b/urpm/sys.pm @@ -3,6 +3,8 @@ package urpm::sys; # $Id$ use strict; +use warnings; +use POSIX (); (our $VERSION) = q$Revision$ =~ /(\d+)/; @@ -168,6 +170,19 @@ sub mktempdir { return $tmpdir; } +# temporary hack used by urpmi when restarting itself. +sub fix_fd_leak { + opendir my $dirh, "/proc/$$/fd" or return undef; + my @fds = grep { /^(\d+)$/ && $1 > 2 } readdir $dirh; + closedir $dirh; + for (@fds) { + my $link = readlink("/proc/$$/fd/$_"); + $link or next; + next if $link =~ m(^/(usr|dev)/) || $link !~ m(^/); + POSIX::close($_); + } +} + 1; __END__ -- cgit v1.2.1