From: Linus Torvalds Date: Mon, 16 Jan 2006 19:13:15 GMT Subject: git-mailinfo: cut lines at ^M Message-ID: This changes "eatspace()" to cut lines at the first ^M (\r, CR) character. Normally it should make no difference at all, since even if you have a non-UNIX CR/LF end-of-line, it would have removed the ^M at the end of the line as whitespace. The main reason for this patch is that I seem to have something buggy in my mail path (possibly fetchmail) which very occasionally causes the mail headers to have an appended "^M)" line. This silly thing works around it, and shouldn't hurt anything else. The alternative would be to simply disallow control characters in the commit message (so that I would not commit these things by mistake). Signed-off-by: Linus Torvalds --- Junio, feel free to ignore this. It shouldn't hurt, but admittedly it's a stupid hack for a problem that has nothing to do with git. The "disallow control characters" fix is probably better, if you prefer that I can do it that way instead. Linus diff --git a/mailinfo.c b/mailinfo.c index 0265a29..e1c95a9 100644 --- a/mailinfo.c +++ b/mailinfo.c @@ -226,9 +226,19 @@ static int is_multipart_boundary(const c static int eatspace(char *line) { - int len = strlen(line); - while (len > 0 && isspace(line[len-1])) - line[--len] = 0; + int len, idx; + + len = idx = 0; + for (;;) { + unsigned char c = line[idx++]; + if (isspace(c)) { + if (c == '\n' || c == '\r') + break; + continue; + } + len = idx; + } + line[len] = 0; return len; }