d0d307a
#!/usr/bin/perl
d0d307a
#
d0d307a
# Usage:	folderxfer inputfile
d0d307a
#
d0d307a
# Purpose:	Converts contents of Berkeley-format mail folders
d0d307a
#		to Cyrus mailboxes
d0d307a
#
d0d307a
# Input:	Output of 'bsd2cyrus' 
d0d307a
#		(username:Cyrus-folder-name:Berkeley-folder-path)
d0d307a
#
d0d307a
# Warnings:	The root mailbox and empty Cyrus folder must 
d0d307a
#		exist before conversion takes place, and source folders 
d0d307a
#		should be checked for RFC 822 content before being processed
d0d307a
#
d0d307a
#$Id: folderxfer,v 1.1 2004/02/04 12:59:42 karsten Exp $
d0d307a
d0d307a
$pwd       = "/usr/lib/cyrus-imapd";      
d0d307a
$mailstore = "/var/spool/imap";        # Cyrus mailstore
d0d307a
$cat       = "/bin/cat";
d0d307a
$cmd       = "/usr/bin/formail -n 20 -s $pwd/cpmsg";
d0d307a
d0d307a
$folders = "$ARGV[0]";
d0d307a
if (!$folders) { die "Usage: $0 filename"; }
d0d307a
d0d307a
open (MB,"$folders") || die "can't open $folders";
d0d307a
d0d307a
while (<MB>) {
d0d307a
d0d307a
    chop;
d0d307a
d0d307a
    # Be careful with this split - the last token might have
d0d307a
    # whitespace we want to preserve
d0d307a
d0d307a
    ($user,$cyrusfolder,$folder) = split(/:/,$_,3);
d0d307a
    @fields = split(/\./,$cyrusfolder);
d0d307a
    $cyrfol = $fields[$#fields];
d0d307a
d0d307a
    $fcat = "$cat \"$folder\"";
d0d307a
    print $fcat;
d0d307a
    $prefix = substr($user,0,1);
d0d307a
    system ("$fcat | $cmd '$mailstore/$prefix/user/$user/$cyrfol'");
d0d307a
    #print "'$mailstore/$prefix/user/$user/$cyrfol";
d0d307a
}
d0d307a
close MB;
d0d307a
d0d307a