#!/usr/local/bin/perl

$isEncoded = 0;
$FullHeaders = "";
$DecodedHeaders = "";
$switch = "";

while(<>) {
  chop;

  last if( /^$/ );

  $FullHeaders .= "$_\n";

  if( /^Content-Transfer-Encoding: BASE64/i ) {

    $isEncoded = 1;
    $switch = "-b"; # base64 - default

  } elsif( /^Content-Transfer-Encoding: quoted-printable/i ) {

    $isEncoded = 1;
    $switch = "-q"; # quoted-printable

  } elsif( ! /^Mime-Version: /i && ! /Content-Type: /i ) {
    $DecodedHeaders .= "$_\n";
  }
}

# body

if( !$isEncoded ) {
  print $FullHeaders . "\n";
  while( <> ) {
    print;
  }
  exit 0;
}

print $DecodedHeaders . "\n";

if( $ENV{'TMP'} ) {
  $TmpFile = "$ENV{'TMP'}/letter.$$";
} else {
  $TmpFile = "/tmp/letter.$$";
}

open( DECODE, "|mmencode -u $switch > $TmpFile" ) 
  || die "Can't run mmencode writing to $TmpFile";

  while( <> ) {
    print DECODE;
  }
close( DECODE );

open( DECODED, $TmpFile ) || die "Can't open just decoded file $TmpFile";
  while( <DECODED> ) {
    print;
  }
close( DECODED );

unlink( $TmpFile );
