else if (strchr (MimeSpecials, *s))
else if (strchr (MimeSpecials, *s) || strchr ("*'%", *s))
int rfc2231_encode_string (char **pd){  int ext = 0, encode = 0;  char *charset, *s, *t, *e, *d = 0;  size_t slen, dlen = 0;  if (!*pd)    return 0;  if (!Charset || !SendCharset ||      !(charset = mutt_choose_charset (Charset, SendCharset,				  *pd, strlen (*pd), &d, &dlen)))  {    charset = safe_strdup (Charset ? Charset : "unknown");    d = *pd, dlen = strlen (d);  }  if (strcasecmp (charset, "us-ascii"))    encode = 1;  for (s = d, slen = dlen; slen; s++, slen--)    if (*s < 0x20 || *s >= 0x7f)      encode = 1, ++ext;    else if (strchr (MimeSpecials, *s))      ++ext;  if (encode)  {    e = safe_malloc (dlen + 2*ext + strlen (charset) + 3);    sprintf (e, "%s''", charset);    t = e + strlen (e);    for (s = d, slen = dlen; slen; s++, slen--)      if (*s < 0x20 || *s >= 0x7f || strchr (MimeSpecials, *s))      {	sprintf (t, "%%%02X", (unsigned char)*s);	t += 3;      }      else	*t++ = *s;    *t = '\0';    if (d != *pd)      free (d);    free (*pd);    *pd = e;  }  else if (d != *pd)  {    free (*pd);    *pd = d;  }  return encode;}