From 5a119a5969c6d21397531cf5f655b7913cfefa04 Mon Sep 17 00:00:00 2001 From: adam Date: Sat, 2 Dec 2006 08:14:11 +0000 Subject: [PATCH] added sorting to FileBasedMailbox so it works on weird underlying fses like afs darcs-hash:20061202081411-5007d-c2d3758ccc9333de2b73eb1dce2059b29316af12.gz --- src/org/ibex/mail/target/FileBasedMailbox.java | 33 ++++++++++++++++++++---- 1 file changed, 28 insertions(+), 5 deletions(-) diff --git a/src/org/ibex/mail/target/FileBasedMailbox.java b/src/org/ibex/mail/target/FileBasedMailbox.java index e5a420a..c2868b3 100644 --- a/src/org/ibex/mail/target/FileBasedMailbox.java +++ b/src/org/ibex/mail/target/FileBasedMailbox.java @@ -72,16 +72,36 @@ public class FileBasedMailbox extends Mailbox.Default { if (files[i].indexOf('.') != -1) files[i] = files[i].substring(0, files[i].indexOf('.')); int n = Integer.parseInt(files[i]); if (n>=uidNext) uidNext = n; - } catch(Exception e) { /* DELIBERATE */ } + } catch(Exception e) { Log.error(this, e); } } } + public String[] sort(String[] s) { + Arrays.sort(s); + return s; + } + + public String[] files() { + String[] s = path.list(filter); + Arrays.sort(s, comparator); + return s; + } + + private static Comparator comparator = new Comparator() { + public int compare(String a, String b) { + if (a.indexOf('.')==-1) return a.compareTo(b); + if (b.indexOf('.')==-1) return a.compareTo(a); + int ai = Integer.parseInt(a.substring(0, a.indexOf('.'))); + int bi = Integer.parseInt(b.substring(0, b.indexOf('.'))); + return aibi ? 1 : 0; + } + }; public Mailbox.Iterator iterator() { return new Iterator(); } public synchronized void add(Message message) { add(message, Mailbox.Flag.RECENT); } public String[] children() { Vec vec = new Vec(); - String[] list = path.list(); + String[] list = sort(path.list()); for(int i=0; i= files.length; } public boolean next() { cur++; return !done(); } -- 1.7.10.4