This file is indexed.

/usr/share/lintian/checks/infofiles is in lintian 2.5.6.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
# infofiles -- lintian check script -*- perl -*-

# Copyright (C) 1998 Christian Schwarz
# Copyright (C) 2001 Josip Rodin
#
# 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.

package Lintian::infofiles;
use strict;
use warnings;

use Lintian::Tags qw(tag);
use Util;

use File::Basename qw(fileparse);

sub run {

my $pkg = shift;
my $type = shift;
my $info = shift;

my $has_info_file;

# Read package contents...
foreach my $file (@{$info->sorted_index}) {
    my $index_info = $info->index->{$file};
    my $file_info = $info->file_info->{$file};
    my $link = $index_info->{link} || '';
    my ($fname, $path) = fileparse($file);

    next unless ($index_info->{type} =~ m,^[\-lh],o)
            and ($path =~ m,^usr/share/info/, or $path =~ m,^usr/info/,);

    # Ignore dir files.  That's a different error which we already catch in
    # the files check.
    next if $fname =~ /^dir(?:\.old)?(?:\.gz)?/;

    # Note that this package contains at least one info file.
    $has_info_file = 1;

    # Analyze the file names making sure the documents are named properly.
    # Note that Emacs 22 added support for images in info files, so we have to
    # accept those and ignore them.  Just ignore .png files for now.
    my @fname_pieces = split /\./, $fname;
    my $ext = pop @fname_pieces;
    if ($ext eq 'gz') { # ok!
        if ($index_info->{type} =~ m,^[-h],o) { # compressed with maximum compression rate?
            if ($file_info !~ m/gzip compressed data/o) {
                tag 'info-document-not-compressed-with-gzip', $file;
            } else {
                if ($file_info !~ m/max compression/o) {
                    tag 'info-document-not-compressed-with-max-compression', $file;
                }
            }
        }
    } elsif ($ext eq 'png') {
        next;
    } else {
        push (@fname_pieces, $ext);
        tag 'info-document-not-compressed', $file;
    }
    my $infoext = pop @fname_pieces;
    unless ($infoext && $infoext =~ /^info(-\d+)?$/) { # it's not foo.info
        unless (!@fname_pieces) { # it's not foo{,-{1,2,3,...}}
            tag 'info-document-has-wrong-extension', $file;
        }
    }

    # If this is the main info file (no numeric extension). make sure it has
    # appropriate dir entry information.
    if ($fname !~ /-\d+\.gz/ && $file_info =~ /gzip compressed data/) {
        my $pid = open INFO, '-|';
        if (not defined $pid) {
            fail("cannot fork: $!");
        } elsif ($pid == 0) {
            my $f = quotemeta($info->unpacked($file));
            clean_env(1);
            $ENV{LC_ALL} = 'C';
            exec "zcat $f 2>&1"
                or fail("cannot run zcat: $!");
        }
        local $_;
        my ($section, $start, $end);
        while (<INFO>) {
            $section = 1 if /^INFO-DIR-SECTION\s+\S/;
            $start   = 1 if /^START-INFO-DIR-ENTRY\b/;
            $end     = 1 if /^END-INFO-DIR-ENTRY\b/;
        }
        close INFO;
        tag 'info-document-missing-dir-section', $file unless $section;
        tag 'info-document-missing-dir-entry', $file unless $start && $end;
    }
}

# If there's at least one info file in the package, the package should depend
# on dpkg (>= 1.15.4) | install-info to ensure the dir file is properly
# handled on partial upgrades.
if ($has_info_file) {
    my $depends = $info->relation('depends');
    unless ($depends->implies('dpkg (>= 1.15.4) | install-info')) {
        tag 'missing-dependency-on-install-info';
    }
}

}

1;

# Local Variables:
# indent-tabs-mode: nil
# cperl-indent-level: 4
# End:
# vim: syntax=perl sw=4 sts=4 sr et