#!/usr/bin/perl -w # strings -- lintian collection script # Copyright (C) 2009, 2010 Raphael Geissert # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, you can find it on the World Wide # Web at http://www.gnu.org/copyleft/gpl.html, or write to the Free # Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, # MA 02110-1301, USA. use strict; use warnings; use lib "$ENV{'LINTIAN_ROOT'}/lib"; use Util; use Lintian::Collect; use Lintian::Command qw(spawn); use Lintian::Command::Simple; ($#ARGV == 2) or fail('syntax: strings '); my ($pkg, $type, $dir) = @ARGV; my $info = Lintian::Collect->new ($pkg, $type, $dir); my $file_info = $info->file_info; if ( -e "$dir/elf-index" ) { unlink "$dir/elf-index" or fail "unlink elf-index: $!"; } if ( -d "$dir/strings" ) { delete_dir ("$dir/strings") or fail "rmdir strings: $!"; } open ELF_INDEX, '>', "$dir/elf-index" or fail "Could not open 'elf-index' for writing: $!"; foreach my $bin (keys %$file_info) { my $finfo = $file_info->{$bin}; next unless $finfo =~ m/\bELF\b/o; print ELF_INDEX "$bin\n"; next if ($bin =~ m,^/usr/lib/debug/,); my $elfdir = $bin; $elfdir =~ s,/[^/]+?$,,; Lintian::Command::Simple::run ('mkdir', '-p', "$dir/strings/$elfdir") == 0 or fail "Failed to create directory 'strings/$elfdir'"; spawn ({out => "$dir/strings/$bin", fail => 'error'}, ['strings', "$dir/unpacked/$bin"]); } close(ELF_INDEX) or fail("cannot write elf-index file: $!"); # Local Variables: # indent-tabs-mode: nil # cperl-indent-level: 4 # End: # vim: syntax=perl sw=4 sts=4 sr et