public static Value decodeMimeHeaders(Env env,
StringValue encodedHeaders,
String charset)
throws UnsupportedEncodingException
{
ArrayValue headers = new ArrayValueImpl();
try {
Enumeration<Header> enumeration
= (Enumeration<Header>)new InternetHeaders(encodedHeaders.toInputStream()).getAllHeaders();
while (enumeration.hasMoreElements()) {
Header header = enumeration.nextElement();
StringValue name
= QuercusMimeUtility.decodeMime(env, header.getName(), charset);
StringValue val
= QuercusMimeUtility.decodeMime(env, header.getValue(), charset);
Value headerName;
if ((headerName = headers.containsKey(name)) == null) {
headers.put(name, val);
continue;
}
ArrayValue inner;
if (headerName.isArray()) {
inner = headerName.toArrayValue(env);
}
else {
inner = new ArrayValueImpl();
inner.put(headerName);
}
inner.put(val);
headers.put(name, inner);
}
return headers;
} catch (MessagingException e) {