This file is indexed.

/usr/share/perl5/Debian/Control/Stanza/Binary.pm is in dh-make-perl 0.89-1.

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
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
=head1 NAME

Debian::Control::Stanza::Binary - binary stanza of Debian source package control file

=head1 SYNOPSIS

    my $bin = Debian::Control::Stanza::Binary->new(\%data);
    print $bin;                         # auto-stringification
    print $bin->Depends;                # Debian::Dependencies object

=head1 DESCRIPTION

Debian::Control::Stanza::Binary can be used for representation and manipulation
of C<Package:> stanza of Debian source package control files in an
object-oriented way. Converts itself to a textual representation in string
context.

=head1 FIELDS

The supported fields for binary stanzas are listed below. For more information
about each field's meaning, consult the section named C<Source package control
files -- debian/control> of the Debian Policy Manual at
L<http://www.debian.org/doc/debian-policy/>

Note that real control fields may contain dashes in their names. These are
replaced with underscores.

=over

=item Package

=item Architecture

=item Section

=item Priority

=item Essential

=item Depends

=item Recommends

=item Suggests

=item Enhances

=item Replaces

=item Pre_Depends

=item Conflicts

=item Breaks

=item Provides

=item Description

=back

C<Depends>, C<Conflicts> C<Breaks>, C<Recommends>, C<Suggests>, C<Enhances>,
C<Replaces>, and C<Pre_Depends> fields are converted to objects of
L<Debian::Dependencies> class upon construction.

Two more accessor methods are provided for easier handling of package's short
and long description.

=over

=item short_description

=item long_description

=back

Setting them transparently modifies I<Description>. Note that the value of
I<long_description> is "unmangled", that is without leading spaces, and empty
lines are empty. I<Description> on the other hand is just as it looks in a
regular debian/control file - the long part is indented with a single space and
empty lines are replaced with dots.

=cut

package Debian::Control::Stanza::Binary;

use strict;
use warnings;

our $VERSION = '0.77';

use base 'Debian::Control::Stanza';

use constant fields => qw(
    Package Architecture Section Priority Essential Depends Recommends Suggests
    Enhances Replaces Pre_Depends Conflicts Breaks Provides Description
    _short_description _long_description
);

=head1 CONSTRUCTOR

=over

=item new

=item new( { field => value, ... } )

Creates a new L<Debian::Control::Stanza::Binary> object and optionally
initializes it with the supplied data.

=back

=head1 SEE ALSO

Debian::Control::Stanza::Source inherits most of its functionality from
L<Debian::Control::Stanza>

=head1 COPYRIGHT & LICENSE

Copyright (C) 2009, 2010 Damyan Ivanov L<dmn@debian.org>

This program is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License version 2 as published by the Free
Software Foundation.

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.

=cut

sub set {
    my ( $self, $field, @value ) = @_;

    my $res = $self->SUPER::set( $field, @value );

    # re-split description in it was set
    if ( $field eq 'Description' ) {
        $self->_split_description;
    }
    elsif ( $field eq '_short_description' or $field eq '_long_description' ) {
        $self->_format_description;
    }

    $res;
}

sub short_description {
    shift->_short_description(@_);
}

sub long_description {
    shift->_long_description(@_);
}

sub _format_description {
    my $self = shift;

    my $short = $self->_short_description;
    my $long  = $self->_long_description;

    if( defined($long) ) {
        $long =~ s/\n\n/\n.\n/sg;       # add spacing between paragraphs
        $long =~ s/^/ /mg;              # prepend every line with a space
    }

    # use SUPER::set to not trigger our implementation, which would cause
    # endless loop (setting short_description updates Description, which is
    # then split)
    $self->SUPER::set( 'Description',
        join( "\n", map { $_ // () } ( $short, $long ) ) );
}

sub _split_description {
    my $self = shift;

    my ( $short, $long ) = split( /\n/, $self->Description, 2 );

    $long =~ s/^ //mg;
    $long =~ s/^ \.$//mg;

    # use SUPER::set to not trigger our implementation, which would cause
    # endless loop (setting short_description updates Description, which is
    # then split)
    $self->SUPER::set( '_short_description', $short );
    $self->SUPER::set( '_long_description', $long );
}

1;