From 2ace18f48a4bff972cd456dff6fd009571e3fb34 Mon Sep 17 00:00:00 2001 From: adam Date: Sat, 17 Mar 2007 08:55:22 +0000 Subject: [PATCH] use a Fountain for payload darcs-hash:20070317085522-5007d-deccc0b9423784480b8344a426181f1a48bb4a5e.gz --- src/org/ibex/mail/IMAP.java | 26 +++++++++++++++----------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/src/org/ibex/mail/IMAP.java b/src/org/ibex/mail/IMAP.java index 9038cc1..b4b3d30 100644 --- a/src/org/ibex/mail/IMAP.java +++ b/src/org/ibex/mail/IMAP.java @@ -459,8 +459,8 @@ public class IMAP { } else if (s.equals("FLAGS")) { spec|=FLAGS; if(e){r.append(" ");r.append(Printer.flags(flags));} } else if (s.equals("INTERNALDATE")) { spec|=INTERNALDATE; if(e){r.append(" ");r.append(Printer.date(m.arrival));} } else if (s.equals("RFC822")) { spec|=RFC822; if(e){r.append(" ");r.append(Printer.message(m));} - } else if (s.equals("RFC822.TEXT")) { spec|=RFC822TEXT; if(e){r.append(" ");r.append(Printer.qq(getBodyString(m)));} - } else if (s.equals("RFC822.HEADER")){ spec|=HEADER;if(e){r.append(" ");r.append(Printer.qq(m.headers.getString()+"\r\n"));} + } else if (s.equals("RFC822.TEXT")) { spec|=RFC822TEXT; if(e){r.append(" ");r.append(Printer.qq(m.getStream()));} + } else if (s.equals("RFC822.HEADER")){ spec|=HEADER; if(e){r.append(" ");r.append(Printer.qq(m.headers.getStream().append("\r\n")));} } else if (s.equals("RFC822.SIZE")) { spec|=RFC822SIZE; if(e){r.append(" ");r.append(m.getLength());} } else if (s.equals("UID")) { spec|=UID; if(e){r.append(" ");r.append(muid); } } else if (!(s.equals("BODY.PEEK") || s.equals("BODY"))) { throw new Server.No("unknown fetch argument: " + s); @@ -472,17 +472,17 @@ public class IMAP { if (e) { r.append(" "); r.append(Printer.bodystructure(m)); } continue; //{ if (e) { r.append(" "); r.append(Printer.qq(m.body)); } continue; } } - String payload = ""; + Fountain payload = Fountain.Util.create(""); r.append("["); Parser.Token[] list = t[++i].l(); s = list.length == 0 ? "" : list[0].s.toUpperCase(); r.append(s); - if (list.length == 0) { spec |= RFC822TEXT; if(e) payload = m.headers.getString()+"\r\n"+getBodyString(m); } - else if (s.equals("") || s.equals("1")) { spec |= RFC822TEXT; if(e) payload = m.headers.getString()+"\r\n"+getBodyString(m); } - else if (s.equals("TEXT")) { spec |= RFC822TEXT; if(e) payload = getBodyString(m); } - else if (s.equals("HEADER")) { spec |= HEADER; if(e) payload = m.headers.getString()+"\r\n"; } - else if (s.equals("HEADER.FIELDS")) { spec |= FIELDS; payload=headers(r,t[i].l()[1].sl(),false,m,e); } - else if (s.equals("HEADER.FIELDS.NOT")) { spec |= FIELDSNOT; payload=headers(r,t[i].l()[1].sl(),true,m,e); } + if (list.length == 0) { spec |= RFC822TEXT; if(e) payload = m; } + else if (s.equals("") || s.equals("1")) { spec |= RFC822TEXT; if(e) payload = m; } + else if (s.equals("TEXT")) { spec |= RFC822TEXT; if(e) payload = m.getBody(); } + else if (s.equals("HEADER")) { spec |= HEADER; if(e) payload = Fountain.Util.concat(m.headers, Fountain.Util.create("\r\n")); } + else if (s.equals("HEADER.FIELDS")) { spec |= FIELDS; payload=Fountain.Util.create(headers(r,t[i].l()[1].sl(),false,m,e)); } + else if (s.equals("HEADER.FIELDS.NOT")) { spec |= FIELDSNOT; payload=Fountain.Util.create(headers(r,t[i].l()[1].sl(),true,m,e)); } else if (s.equals("MIME")) { throw new Server.Bad("MIME not supported"); } else throw new Server.Bad("unknown section type " + s); if (i"); } + if (e) { + //payload = payload.substring(start, Math.min(end+1,payload.getLength())); r.append("<"+start+">"); + // FIXME + throw new RuntimeException("this had to be disabled"); + } } - if (e) { r.append("] "); r.append(Printer.qq(payload)); } + if (e) { r.append("] "); r.append(Printer.qq(payload.getStream())); } } } if (e) { -- 1.7.10.4