git-mailinfo: cut lines at ^M
- From
Linus Torvalds <torvalds@osdl.org>
- Date
- Jan 16, 2006, 19:13 UTC
- Message-ID
- <Pine.LNX.4.64.0601161104070.13339@g5.osdl.org>
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 <torvalds@osdl.org> ---
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; }