chiark / gitweb /
Make noack honoured for approvals too
[modbot-mtm.git] / stump / bin / decodeBase64
1 #!/usr/bin/perl
2
3 $isEncoded = 0;
4 $FullHeaders = "";
5 $DecodedHeaders = "";
6 $switch = "";
7
8 while(<>) {
9   chop;
10
11   last if( /^$/ );
12
13   $FullHeaders .= "$_\n";
14
15   if( /^Content-Transfer-Encoding: BASE64/i ) {
16
17     $isEncoded = 1;
18     $switch = "-b"; # base64 - default
19
20   } elsif( /^Content-Transfer-Encoding: quoted-printable/i ) {
21
22     $isEncoded = 1;
23     $switch = "-q"; # quoted-printable
24
25   } elsif( ! /^Mime-Version: /i && ! /Content-Type: /i ) {
26     $DecodedHeaders .= "$_\n";
27   }
28 }
29
30 # body
31
32 if( !$isEncoded ) {
33   print $FullHeaders . "\n";
34   while( <> ) {
35     print or die $!;
36   }
37   exit 0;
38 }
39
40 print $DecodedHeaders . "\n" or die $!;
41
42 if( $ENV{'TMP'} ) {
43   $TmpFile = "$ENV{'TMP'}/letter.$$";
44 } else {
45   $TmpFile = "/tmp/letter.$$";
46 }
47
48 open( DECODE, "|mimencode -u $switch > $TmpFile" ) 
49   || die "Can't run mmencode writing to $TmpFile";
50
51   while( <> ) {
52     print DECODE or die $!;
53   }
54 close( DECODE ) or die "$? $!";
55
56 open( DECODED, $TmpFile ) || die "Can't open just decoded file $TmpFile";
57   while( <DECODED> ) {
58     print or die $!;
59   }
60 close( DECODED ) or die "$? $!";
61
62 unlink( $TmpFile );