- /* Does the last line already end with "^[-A-Za-z]+: [^@]+@"?
- * If not, add a blank line to separate the message from
- * the run of Signed-off-by: and Acked-by: lines.
- */
- {
- char ch;
- int seen_colon, seen_at, seen_name, seen_head, not_signoff;
- seen_colon = 0;
- seen_at = 0;
- seen_name = 0;
- seen_head = 0;
- not_signoff = 0;
- cp = buf + at;
- while (buf <= --cp && (ch = *cp) == '\n')
- ;
- while (!not_signoff && buf <= cp && (ch = *cp--) != '\n') {
- if (!seen_at) {
- if (ch == '@')
- seen_at = 1;
- continue;
- }
- if (!seen_colon) {
- if (ch == '@')
- not_signoff = 1;
- else if (ch == ':')
- seen_colon = 1;
- else
- seen_name = 1;
- continue;
- }
- if (('A' <= ch && ch <= 'Z') ||
- ('a' <= ch && ch <= 'z') ||
- ch == '-') {
- seen_head = 1;
- continue;
- }
- not_signoff = 1;
- }
- if (not_signoff || !seen_head || !seen_name)
- buf[at++] = '\n';
- }