- /* subject goes to first empty line */
- while (buf < *sig && *buf && *buf != '\n') {
- eol = strchrnul(buf, '\n');
- if (*eol)
- eol++;
- buf = eol;
- }
+ /* subject goes to first empty line before signature begins */
+ if ((eol = strstr(*sub, "\n\n"))) {
+ eol = eol < *sig ? eol : *sig;
+ /* check if message uses CRLF */
+ } else if (! (eol = strstr(*sub, "\r\n\r\n"))) {
+ /* treat whole message as subject */
+ eol = strrchr(*sub, '\0');
+ }
+ buf = eol;