#! /s/perl/bin/perl


# Need a splitter function to chunk up a uuencoded file into multiple
# pieces, suitable for mailing, and mailing them.
#
# Usage is:
#   uusplit <filename> <email>
#
# subject should be "filename 1/3", etc

($bigfile, $user) = @ARGV;

# Quick Error Checks
die "Usage: uusplit <filename> <email address>\n" if (!$user);
die "Couldn't find file $bigfile\n" if (! -f $bigfile);

open(BIG, $bigfile) || die "Could not open file $bigfile.\n";
close(BIG);

$lines_per_mesg = 7500;

system("uuencode $bigfile $bigfile > ${bigfile}.uu");
open(BIG, "${bigfile}.uu") || die "uuencode did not create an output file.\n";

$piece = 1;
$tlines = `wc -l ${bigfile}.uu`;
$pieces = int ($tlines / $lines_per_mesg);
$pieces++ if ($tlines % $lines_per_mesg != 0);

open( MAIL, "| /bin/mail $user") || die "Could not run /bin/mail\n";
print MAIL <<"EndOfHeader";
Subject: $bigfile ($piece/$pieces)

---- BEGIN $bigfile piece $piece of $pieces ----
EndOfHeader

$line = 0;

while (<BIG>){

    print MAIL;

    $line++;

    if ($line >= $lines_per_mesg) {
        print MAIL "---- END $bigfile piece $piece of $pieces ----\n";
        close MAIL;

        $line = 0;
        $piece++;

        open( MAIL, "| /bin/mail $user") || die "Could not run /bin/mail\n";
        print MAIL <<"EndOfHeader";
Subject: $bigfile ($piece/$pieces)

---- BEGIN $bigfile piece $piece of $pieces ----
EndOfHeader
    }
}

print MAIL "---- END $bigfile piece $piece of $pieces ----\n";
close MAIL;

close BIG;
unlink("${bigfile}.uu");

print "Sent file $bigfile to user $user in $pieces pieces.\n";
exit 0;

