} 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);
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<t.length - 1 && (t[i+1].s != null && t[i+1].s.startsWith("<"))) {
int dot = s.indexOf('.');
start = dot == -1 ? Integer.parseInt(s) : Integer.parseInt(s.substring(0, s.indexOf('.')));
end = dot == -1 ? -1 : Integer.parseInt(s.substring(s.indexOf('.') + 1));
- if (e) { payload = payload.substring(start, Math.min(end+1,payload.length())); r.append("<"+start+">"); }
+ 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) {