]> git.donarmstrong.com Git - debbugs.git/blob - scripts/errorlib.in
merge changes from mainline
[debbugs.git] / scripts / errorlib.in
1 # -*- perl -*-
2
3 use Mail::Address;
4 use Debbugs::MIME qw(decode_rfc1522 encode_rfc1522);
5 use Debbugs::Packages qw(:all);
6 use Debbugs::Common qw(:all);
7 use Debbugs::Status qw(:all);
8
9 sub unlockreadbugmerge {
10     local ($rv) = @_;
11     &unfilelock if $rv >= 2;
12     &unfilelock if $rv >= 1;
13 }
14
15 sub lockreadbugmerge {
16     local ($lref, $location) = @_;
17     local $data;
18     if (!($data = &lockreadbug($lref, $location))) { return ( 0, undef ); }
19     if (!length($data->{mergedwith})) { return ( 1, $data ); }
20     &unfilelock;
21     &filelock('lock/merge');
22     if (!&lockreadbug($lref, $location)) { &unfilelock; return ( 0, undef ); }
23     return ( 2, $data );
24 }
25
26 %saniarray= ('<','lt', '>','gt', '&','amp', '"','quot');
27
28 sub sani {
29     my ($in) = @_;
30     warn "You should be using HTML::Entities instead.";
31     $in =~ s/([<>&"])/$saniarray{$1}/g;
32     return $in;
33 }
34
35 sub getmailbody {
36         my $entity = shift;
37         my $type = $entity->effective_type;
38         if ($type =~ m#text/(?!html|enriched)# or
39             $type eq 'application/pgp') {
40                 return $entity->bodyhandle;
41         } elsif ($type eq 'multipart/alternative') {
42                 # RFC 2046 says we should use the last part we recognize.
43                 for my $part (reverse $entity->parts) {
44                         my $ret = getmailbody($part);
45                         return $ret if $ret;
46                 }
47         } else {
48                 # For other multipart types, we just pretend they're
49                 # multipart/mixed and run through in order.
50                 for my $part ($entity->parts) {
51                         my $ret = getmailbody($part);
52                         return $ret if $ret;
53                 }
54         }
55         return undef;
56 }
57
58 sub get_addresses {
59         return
60             map { $_->address() }
61             map { Mail::Address->parse($_) } @_;
62 }
63
64 sub escapelog {
65         my @log = @_;
66         map { s/^([\01-\07\030])/\030$1/gm } @log;
67         return \@log;
68 }
69
70 sub isstrongseverity {
71     my $severity = shift;
72     $severity = $gDefaultSeverity if $severity eq '';
73     return grep { $_ eq $severity } @gStrongSeverities;
74 }
75
76
77 @severities= grep { not exists $gObsoleteSeverities{$_} } @gSeverityList;
78 @showseverities= @severities;
79 grep ($_= $_ eq '' ? $gDefaultSeverity : $_, @showseverities);
80 %displayshowseverities= %gSeverityDisplay;
81
82 # compatibility
83 if (defined $gFowardList and not defined $gForwardList) {
84     $gForwardList = $gFowardList;
85 }
86
87 1;