All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 2/2] conversion of lonely cr chars in autocrlf
@ 2009-05-06 15:10 Heiko Voigt
  0 siblings, 0 replies; only message in thread
From: Heiko Voigt @ 2009-05-06 15:10 UTC (permalink / raw)
  To: git; +Cc: gitster

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@mahr.de>
---
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

^ permalink raw reply related	[flat|nested] only message in thread

only message in thread, other threads:[~2009-05-06 15:10 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-05-06 15:10 [PATCH 2/2] conversion of lonely cr chars in autocrlf Heiko Voigt

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.