"application/pgp-keys",
mime_type_requires_b64_p (const char *type){  if (!type || !PL_strcasecmp (type, UNKNOWN_CONTENT_TYPE))  /* Unknown types don't necessarily require encoding.  (Note that     "unknown" and "application/octet-stream" aren't the same.) */  return PR_FALSE;  else if (!PL_strncasecmp (type, "image/", 6) ||       !PL_strncasecmp (type, "audio/", 6) ||       !PL_strncasecmp (type, "video/", 6) ||       !PL_strncasecmp (type, "application/", 12))  {    /* The following types are application/ or image/ types that are actually     known to contain textual data (meaning line-based, not binary, where     CRLF conversion is desired rather than disasterous.)  So, if the type     is any of these, it does not *require* base64, and if we do need to     encode it for other reasons, we'll probably use quoted-printable.     But, if it's not one of these types, then we assume that any subtypes     of the non-"text/" types are binary data, where CRLF conversion would     corrupt it, so we use base64 right off the bat.     The reason it's desirable to ship these as text instead of just using     base64 all the time is mainly to preserve the readability of them for     non-MIME users: if I mail a /bin/sh script to someone, it might not     need to be encoded at all, so we should leave it readable if we can.     This list of types was derived from the comp.mail.mime FAQ, section     10.2.2, "List of known unregistered MIME types" on 2-Feb-96.     */    static const char *app_and_image_types_which_are_really_text[] = {    "application/mac-binhex40",   /* APPLICATION_BINHEX */    "application/pgp",        /* APPLICATION_PGP */    "application/x-pgp-message",  /* APPLICATION_PGP2 */    "application/postscript",   /* APPLICATION_POSTSCRIPT */    "application/x-uuencode",   /* APPLICATION_UUENCODE */    "application/x-uue",      /* APPLICATION_UUENCODE2 */    "application/uue",        /* APPLICATION_UUENCODE4 */    "application/uuencode",     /* APPLICATION_UUENCODE3 */    "application/sgml",    "application/x-csh",    "application/x-javascript",    "application/x-latex",    "application/x-macbinhex40",    "application/x-ns-proxy-autoconfig",    "application/x-www-form-urlencoded",    "application/x-perl",    "application/x-sh",    "application/x-shar",    "application/x-tcl",    "application/x-tex",    "application/x-texinfo",    "application/x-troff",    "application/x-troff-man",    "application/x-troff-me",    "application/x-troff-ms",    "application/x-troff-ms",    "application/x-wais-source",    "image/x-bitmap",    "image/x-pbm",    "image/x-pgm",    "image/x-portable-anymap",    "image/x-portable-bitmap",    "image/x-portable-graymap",    "image/x-portable-pixmap",    /* IMAGE_PPM */    "image/x-ppm",    "image/x-xbitmap",        /* IMAGE_XBM */    "image/x-xbm",          /* IMAGE_XBM2 */    "image/xbm",          /* IMAGE_XBM3 */    "image/x-xpixmap",    "image/x-xpm",    0 };    const char **s;    for (s = app_and_image_types_which_are_really_text; *s; s++)    if (!PL_strcasecmp (type, *s))      return PR_FALSE;    /* All others must be assumed to be binary formats, and need Base64. */    return PR_TRUE;  }  else  return PR_FALSE;}