Cleaning up old unused scripts
[dotfiles/scripts.git] / extract-attachment.pl
1 #!/usr/bin/perl
2
3 use strict;
4
5 my $boundary="none";
6 my $type="none";
7 my $fname="none";
8 my $location="nowhere";
9
10 foreach my $line (<STDIN>) {
11
12    chomp;
13
14    if ($line =~ /^Content-type:\s.*\sboundary=.*$/i) {
15
16         $line =~ s/\"//g;
17         ($boundary) = $line=~ m/.*=(.*)$/;
18         next;
19
20    } elsif (($line =~ /$boundary/) && ($location =~ /nowhere/)){
21         $location="header";
22         next;
23    }
24
25    if ($location =~ /header/) {
26         if ($line =~ /^Content-type:\s.*;\s.*$/i) {
27
28                 ($type) = $line=~ /^Content-type:\s(.*);\s.*$/i;
29
30         } elsif ($line =~ /^Content-Disposition:\sattachment;\s.*$/i) {
31
32                 $line =~ s/\"//g;
33                 ($fname) = $line=~ /^Content-Disposition:\sattachment;\sfilename=(.*)$/i;
34
35         } else {
36                 next unless ($line =~ /^$/) ;
37                 if ( not $fname =~ /none/) {
38                         $location="body";
39                         open(ATT, ">.".$fname.".b64") || die "Could not open file\n";
40                         print ATT "begin-base64 0644 ". $fname ."\n";
41                 }else {
42                         $location="nowhere";
43                 }
44         }
45
46   } elsif ($location =~ /body/) {
47
48         if ($line =~ /$boundary/){
49                 print ATT "====\n";
50                 close (ATT);
51                 my @args = ("uudecode", ".".$fname.".b64");
52                 system(@args) == 0
53                          or die "system @args failed: $?" ;
54                 print $fname."\n";
55
56                 $fname="none";
57                 $type="none";
58
59         if (not $line =~ /$boundary--/){
60                 $location="header";
61         }
62
63         } else {
64                 print ATT $line;
65         }
66
67   }
68
69 }