From 0de69542d65fa3416b7e5a32cabf1ffe00a128a1 Mon Sep 17 00:00:00 2001 From: Jamie Cameron Date: Mon, 14 Sep 2009 14:21:29 -0700 Subject: [PATCH] Make moving of MH to mbox format faster --- mailboxes/boxes-lib.pl | 13 +++++++++++-- mailboxes/folders-lib.pl | 7 ++++--- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/mailboxes/boxes-lib.pl b/mailboxes/boxes-lib.pl index 5f16aef1a..46ac53bd1 100755 --- a/mailboxes/boxes-lib.pl +++ b/mailboxes/boxes-lib.pl @@ -2160,16 +2160,25 @@ foreach $f (@files) { return @rv; } -# idlist_mhdir(file) +# idlist_mhdir(directory) # Returns a list of files in an MH directory, which are the IDs sub idlist_mhdir { -opendir(DIR, $file); +local ($dir) = @_; +opendir(DIR, $dir); local @files = grep { /^\d+$/ } readdir(DIR); closedir(DIR); return @files; } +# get_mhdir_files(directory) +# Returns a list of full paths to files in an MH directory +sub get_mhdir_files +{ +local ($dir) = @_; +return map { "$dir/$_" } &idlist_mhdir($dir); +} + # select_mhdir(file, &ids, headersonly) # Returns a list of messages with the given indexes, from an mhdir directory sub select_mhdir diff --git a/mailboxes/folders-lib.pl b/mailboxes/folders-lib.pl index 455e4ea6c..283401349 100755 --- a/mailboxes/folders-lib.pl +++ b/mailboxes/folders-lib.pl @@ -1428,9 +1428,10 @@ if ($src->{'type'} == $dst->{'type'} && !$src->{'remote'}) { &mailbox_fix_permissions($dst, \@st); } } -elsif ($src->{'type'} == 1 && $dst->{'type'} == 0) { - # For Maildir to mbox moves, just append files - local @files = &get_maildir_files($src->{'file'}); +elsif (($src->{'type'} == 1 || $src->{'type'} == 3) && $dst->{'type'} == 0) { + # For Maildir or MH to mbox moves, just append files + local @files = $src->{'type'} == 1 ? &get_maildir_files($src->{'file'}) + : &get_mhdir_files($src->{'file'}); &open_tempfile(DEST, ">>$dst->{'file'}"); local $fromline = &make_from_line("webmin\@example.com"); foreach my $f (@files) {