Make moving of MH to mbox format faster
authorJamie Cameron <jcameron@webmin.com>
Mon, 14 Sep 2009 21:21:29 +0000 (14:21 -0700)
committerJamie Cameron <jcameron@webmin.com>
Mon, 14 Sep 2009 21:21:29 +0000 (14:21 -0700)
mailboxes/boxes-lib.pl
mailboxes/folders-lib.pl

index 5f16aef..46ac53b 100755 (executable)
@@ -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
index 455e4ea..2834013 100755 (executable)
@@ -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) {