Allow maildir subdirectories

This commit is contained in:
Grégoire Delattre 2020-05-05 10:16:02 +02:00 committed by Reto Brunner
parent 52eb38ae5d
commit 9a520c4098

View file

@ -2,8 +2,8 @@ package maildir
import ( import (
"fmt" "fmt"
"io/ioutil"
"log" "log"
"os"
"path/filepath" "path/filepath"
"sort" "sort"
@ -28,17 +28,33 @@ func NewContainer(dir string, l *log.Logger) *Container {
// ListFolders returns a list of maildir folders in the container // ListFolders returns a list of maildir folders in the container
func (c *Container) ListFolders() ([]string, error) { func (c *Container) ListFolders() ([]string, error) {
files, err := ioutil.ReadDir(c.dir) folders := []string{}
err := filepath.Walk(c.dir, func(path string, info os.FileInfo, err error) error {
if !info.IsDir() {
return nil
}
// Skip maildir's default directories
n := info.Name()
if n == "new" || n == "tmp" || n == "cur" {
return filepath.SkipDir
}
// Get the relative path from the parent directory
dirPath, err := filepath.Rel(c.dir, path)
if err != nil { if err != nil {
return nil, fmt.Errorf("error reading folders: %v", err) return err
} }
dirnames := []string{}
for _, f := range files { // Skip the parent directory
if f.IsDir() { if dirPath == "." {
dirnames = append(dirnames, f.Name()) return nil
} }
}
return dirnames, nil folders = append(folders, dirPath)
return nil
})
return folders, err
} }
// OpenDirectory opens an existing maildir in the container by name, moves new // OpenDirectory opens an existing maildir in the container by name, moves new