MailTree ret = instances.get(path);
if (ret == null) {
Log.error("n", "no match for " + path + " in " + instances.hashCode());
- if (new File(path+".sqlite").exists())
- ret = new SqliteMailbox(path+".sqlite");
- else {
- if (!create && !(new File(path).exists())) return null;
- ret = new FileBasedMailbox(new File(path));
- }
+ if (new File(path+".sqlite").exists()) ret = new SqliteMailbox(path+".sqlite");
+ else if (new File(path).exists()) ret = new FileBasedMailbox(new File(path));
+ else if (create) ret = new SqliteMailbox(path+".sqlite");
+ else return null;
instances.put(path, (MailTree)ret);
Log.error("n", "filling " + path + " with " + instances.get(path));
}
try {
if (files[i].indexOf('.') <= 0) continue;
files[i] = files[i].substring(0, files[i].indexOf('.'));
- int n = Integer.parseInt(files[i]);
- if (n>=uidNext) uidNext = n;
+ try {
+ int n = Integer.parseInt(files[i]);
+ if (n>=uidNext) uidNext = n;
+ } catch (NumberFormatException nfe) { continue; }
} catch(Exception e) { Log.error(this, e); }
}
}
if ((flags & Mailbox.Flag.SEEN) == 0) f.setLastModified(MAGIC_DATE);
else if (f.lastModified()==MAGIC_DATE) f.setLastModified(System.currentTimeMillis());
// FIXME: other flags?
+ // FIXME: definitely need DELETED flag in order to do message moves!
}
public Headers head() { return done() ? null : new Headers(new Fountain.File(file())); }
public Message cur() { return Message.newMessage(new Fountain.File(file())); }