chiark / gitweb /
header unfolding
[modbot-mtm.git] / stump / bin / decodeBase64
index 601c62bce54f5cb03b07262e75b70929ce8814be..3eff5b240115833098acfe984d2d80cd19e5c8f9 100755 (executable)
@@ -4,6 +4,7 @@ $isEncoded = 0;
 $FullHeaders = "";
 $DecodedHeaders = "";
 $switch = "";
+$inctype = 0;
 
 while(<>) {
   chop;
@@ -12,6 +13,12 @@ while(<>) {
 
   $FullHeaders .= "$_\n";
 
+  if ( /^\s+/ && $inctype ) {
+      next;
+  }
+
+  $inctype=0;
+
   if( /^Content-Transfer-Encoding: BASE64/i ) {
 
     $isEncoded = 1;
@@ -22,6 +29,9 @@ while(<>) {
     $isEncoded = 1;
     $switch = "-q"; # quoted-printable
 
+  } elsif( /^Content-Type: /i ) {
+    $inctype = 1;
+
   } elsif( ! /^Mime-Version: /i && ! /Content-Type: /i ) {
     $DecodedHeaders .= "$_\n";
   }
@@ -32,12 +42,12 @@ while(<>) {
 if( !$isEncoded ) {
   print $FullHeaders . "\n";
   while( <> ) {
-    print;
+    print or die $!;
   }
   exit 0;
 }
 
-print $DecodedHeaders . "\n";
+print $DecodedHeaders . "\n" or die $!;
 
 if( $ENV{'TMP'} ) {
   $TmpFile = "$ENV{'TMP'}/letter.$$";
@@ -49,14 +59,14 @@ open( DECODE, "|mimencode -u $switch > $TmpFile" )
   || die "Can't run mmencode writing to $TmpFile";
 
   while( <> ) {
-    print DECODE;
+    print DECODE or die $!;
   }
-close( DECODE );
+close( DECODE ) or die "$? $!";
 
 open( DECODED, $TmpFile ) || die "Can't open just decoded file $TmpFile";
   while( <DECODED> ) {
-    print;
+    print or die $!;
   }
-close( DECODED );
+close( DECODED ) or die "$? $!";
 
 unlink( $TmpFile );