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 <heiko.voigt@xxxxxxx> --- 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(-) diff --git a/convert.c b/convert.c index 0ced471..7164f09 100644 --- a/convert.c +++ b/convert.c @@ -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 { -- 1.6.2.1.423.g442d -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html