#!/usr/bin/perl

use strict;

use Getopt::Std;
use MIME::Parser;

my %Options;
my $OUTPUT_DIR = "";

sub dump_entity {
    my $ent = shift;
    my @parts = $ent->parts;

    if( @parts ) {
	map { dump_entity($_) } @parts;
    } else {
	if( ! defined($ent->head->mime_attr("content-type")) ||
	    ! ($ent->head->mime_attr("content-type") eq "message\/rfc822") ) {
	    $ent->bodyhandle->purge;
	}
    }
}

getopt("d", \%Options);

defined($Options{"d"}) || die "Output durectory is not defined! Use -d option.\n";
$OUTPUT_DIR = $Options{"d"};

my $parser = new MIME::Parser;
$parser->output_dir($OUTPUT_DIR);
$parser->filer->ignore_filename(1);
$parser->filer->output_prefix("msg");
$parser->decode_headers("I_KNOW_WHAT_I_AM_DOING");
$parser->ignore_errors(1);
$parser->output_to_core(0);
$parser->tmp_to_core(0);
$parser->extract_nested_messages(0);
my $entity = $parser->read(\*STDIN);

dump_entity($entity);
