From kde-commits Thu Oct 11 08:48:08 2007 From: Dirk Mueller Date: Thu, 11 Oct 2007 08:48:08 +0000 To: kde-commits Subject: KDE/kde-common/svn/hooks Message-Id: <1192092488.980237.20532.nullmailer () svn ! kde ! org> X-MARC-Message: https://marc.info/?l=kde-commits&m=119209250115180 SVN commit 724065 by mueller: reduce memory usage M +9 -77 test-pofiles.pl --- trunk/KDE/kde-common/svn/hooks/test-pofiles.pl #724064:724065 @@ -62,15 +62,13 @@ # Figure out what files have changed using svnlook. my @files_changed; -foreach my $line (&read_from_process($svnlook, 'changed', $repos, '-t', $txn)) - { +open(CHANGEDIN, "-|") || exec $svnlook, 'changed', $repos, '-t', $txn; +while() { # Split the line up into the modification code and path, ignoring # property modifications. - if ($line =~ /^[AU]. (trunk\/l10n-kde4\/.*\.po)$/) - { - push(@files_changed, $1); - } - } + push(@files_changed, $1) if (/^[AU]. (trunk\/l10n-kde4\/.*\.po)$/); +} +close(CHANGEDIN); unless (@files_changed) { @@ -79,10 +77,11 @@ foreach my $pofile (@files_changed) { open(MSGFMT, "| msgfmt --check-header --check - -o /dev/null") or die; - foreach my $line (&read_from_process($svnlook, 'cat', $repos, $pofile, '-t', $txn)) { - print MSGFMT "$line\n"; - } + open(FILEIN, "-|") || exec $svnlook, 'cat', $repos, $pofile, '-t', $txn; + print MSGFMT "$_" while(); + close(FILEIN); close(MSGFMT); + if ($? >> 8) { print STDERR "\n"; print STDERR "$pofile:\n"; @@ -99,70 +98,3 @@ warn "@_\n" if @_; die "usage: $0 REPOS TXN-NAME\n"; } - -sub safe_read_from_pipe -{ - unless (@_) - { - die "$0: safe_read_from_pipe passed no arguments.\n"; - } - my $pid = open(SAFE_READ, '-|'); - unless (defined $pid) - { - die "$0: cannot fork: $!\n"; - } - unless ($pid) - { - open(STDERR, ">&STDOUT") - or die "$0: cannot dup STDOUT: $!\n"; - exec(@_) - or die "$0: cannot exec `@_': $!\n"; - } - my @output; - while () - { - chomp; - push(@output, $_); - } - close(SAFE_READ); - my $result = $?; - my $exit = $result >> 8; - my $signal = $result & 127; - my $cd = $result & 128 ? "with core dump" : ""; - if ($signal or $cd) - { - warn "$0: pipe from `@_' failed $cd: exit=$exit signal=$signal\n"; - } - if (wantarray) - { - return ($result, @output); - } - else - { - return $result; - } -} - -sub read_from_process - { - unless (@_) - { - die "$0: read_from_process passed no arguments.\n"; - } - my ($status, @output) = &safe_read_from_pipe(@_); - if ($status) - { - if (@output) - { - die "$0: `@_' failed with this output:\n", join("\n", @output), "\n"; - } - else - { - die "$0: `@_' failed with no output.\n"; - } - } - else - { - return @output; - } -}