conversion of lonely cr chars in autocrlf
PATCH 2/2 conversion of lonely cr chars in autocrlf
This is was marked as crazy stuff but certainly done by our developers in an 10 year old rcs like repository
Signed-off-by Heiko Voigt <[email protected]>
---
This belongs to an conversion effort of quite matured repositories. I do not know how many programs still write CR's as their line endings but there certainly are/were some.
Anybody interested in that crazy stuff?
convert.c | 27 +++++++++++++-------------- 1 files changed, 13 insertions(+), 14 deletions(-)
convert.c +13 -14
@@ -133,14 +133,6 @@ static int crlf_to_git(const char *path, const char *src, size_t len,if (action ==CRLF_GUESS ) {/* -* We're currently not going to even try to convert stuff -* that has bare CR characters. Does anybody do that crazy -* stuff? -*/ -if (stats.cr != stats.crlf) -return 0 ; - -/* * And add some heuristics for binary vs text, of course... */ if (is_binary (len, &stats))
@@ -158,15 +150,22 @@ static int crlf_to_git(const char *path, const char *src, size_t len,strbuf_grow (buf, len - buf->len); dst = buf->buf;if (action ==CRLF_GUESS ) { -/* -* If we guessed, we already know we rejected a file with -* lone CR, and we can strip a CR without looking at what -* follow it. -*/ do {unsigned char c = *src++; -if (c !='\r' ) +if (c !='\r' ) { +/* if its not cr copy this char */ *dst++ = c; +continue ; + } +if (c =='\r' && (1 < len && *src =='\n' )) { +/* if its \r\n skip this char */ +continue ; + } +if (c =='\r' && !(1 < len && *src =='\n' )) { +/* if its a lonely cr substitute it */ + *dst++ ='\n' ; + } + }while (--len); }else { do {
Signature · 1 line
1.6.2.1.423.g442d