X-Git-Url: https://vcs.maemo.org/git/?a=blobdiff_plain;f=nokia-lintian%2Fcollection%2Ffile-info;fp=nokia-lintian%2Fcollection%2Ffile-info;h=df58bc4830646d7e34b050a2dd9ff6fea6e05389;hb=1975b83207a518d59ef6b04c7c16233cb353ca86;hp=0000000000000000000000000000000000000000;hpb=208f636c44e0ec2b53c70aaed2399d8e9cf0e741;p=maemian diff --git a/nokia-lintian/collection/file-info b/nokia-lintian/collection/file-info new file mode 100755 index 0000000..df58bc4 --- /dev/null +++ b/nokia-lintian/collection/file-info @@ -0,0 +1,69 @@ +#!/usr/bin/perl -w +# file-info -- lintian collection script + +# Copyright (C) 1998 Richard Braakman +# +# 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; + +($#ARGV == 1) or fail("syntax: file-info "); +my $pkg = shift; +my $type = shift; + +-f "fields/package" or fail("file-info invoked in wrong directory"); + +unlink("file-info"); +chdir("unpacked") + or fail("cannot chdir to unpacked directory: $!"); + +use FileHandle; +use lib "$ENV{'LINTIAN_ROOT'}/lib"; +use Pipeline; + +my $XARGS=FileHandle->new; +pipeline_open($XARGS, (sub { exec 'xargs', '-0r', 'file' }), "../file-info") + or fail("cannot fork: $!"); +open(INDEX, '<', "../index") + or fail("cannot open index file: $!"); +while () { + chop; + $_ = (split(" ", $_, 6))[5]; + s/ link to .*//; + s/ -> .*//; + s/(\G|[^\\](?:\\\\)*)\\(\d{3})/"$1" . chr(oct $2)/ge; + s/\\\\/\\/; + printf $XARGS "%s\0", $_; +} +close(INDEX); + +close($XARGS) or fail("xargs for file exited with code $?"); + +exit 0; + +# ----------------------------------- + +sub fail { + if ($_[0]) { + print STDERR "internal error: $_[0]\n"; + } elsif ($!) { + print STDERR "internal error: $!\n"; + } else { + print STDERR "internal error.\n"; + } + exit 1; +}