strbuf: make strbuf_getline_crlf() global
authorJunio C Hamano <gitster@pobox.com>
Wed, 28 Oct 2015 20:17:29 +0000 (13:17 -0700)
committerJunio C Hamano <gitster@pobox.com>
Thu, 14 Jan 2016 23:05:55 +0000 (15:05 -0800)
commitc8aa9fdf5dc15e2c508acb22df03d431983569ed
tree1d905b7200f02f7ae4bdd8966ec849e8ff1c52dc
parentdce80bd18cae17b2d5645e3a9c40e76f905fd643
strbuf: make strbuf_getline_crlf() global

Often we read "text" files that are supplied by the end user
(e.g. commit log message that was edited with $GIT_EDITOR upon 'git
commit -e'), and in some environments lines in a text file are
terminated with CRLF.  Existing strbuf_getline() knows to read a
single line and then strip the terminating byte from the result, but
it is handy to have a version that is more tailored for a "text"
input that takes both '\n' and '\r\n' as line terminator (aka
<newline> in POSIX lingo) and returns the body of the line after
stripping <newline>.

Recently reimplemented "git am" uses such a function implemented
privately; move it to strbuf.[ch] and make it available for others.

Note that we do not blindly replace calls to strbuf_getline() that
uses LF as the line terminator with calls to strbuf_getline_crlf()
and this is very much deliberate.  Some callers may want to treat an
incoming line that ends with CR (and terminated with LF) to have a
payload that includes the final CR, and such a blind replacement
will result in misconversion when done without code audit.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
builtin/am.c
strbuf.c
strbuf.h