socsvn commit: r237159 - in soc2012/jhagewood/diff3: . diff3

jhagewood at FreeBSD.org jhagewood at FreeBSD.org
Tue Jun 5 20:13:04 UTC 2012


Author: jhagewood
Date: Tue Jun  5 20:13:02 2012
New Revision: 237159
URL: http://svnweb.FreeBSD.org/socsvn/?view=rev&rev=237159

Log:

Modified:
  soc2012/jhagewood/diff3/diff3/diff3prog.c
  soc2012/jhagewood/diff3/hagewood-diff3.patch

Modified: soc2012/jhagewood/diff3/diff3/diff3prog.c
==============================================================================
--- soc2012/jhagewood/diff3/diff3/diff3prog.c	Tue Jun  5 19:59:09 2012	(r237158)
+++ soc2012/jhagewood/diff3/diff3/diff3prog.c	Tue Jun  5 20:13:02 2012	(r237159)
@@ -625,23 +625,28 @@
 		(void)fseek(fp[i], (long)-nchar, SEEK_CUR);
 }
 
-/* Removes carriage return from open file. 
- * TODO: Remove trailing cr only.
+/* If file has trailing carriage return, remove it. 
  */
 void
 remove_cr(FILE *f) {
 	
 	char ch; 
 	fpos_t position;
+	fpos_t tcr_pos;
 	
-	while ( ch != EOF) {
+	while (ch != EOF) {
 		fgetpos(f, &position);
 		ch = fgetc(f);
-		if (ch == '\r') {
-			fsetpos(f, &position);
-			fputc((int)'\0', f);
+		if (ch == '\r'  && fgetc(f) == EOF) {
+			tcr_pos = position;
+			break;
 		}
 	}
+	
+	if (tcr_pos != NULL) {
+		fsetpos(f, &tcr_pos);
+		fputc((int)'\0', f);
+	}
 	rewind(f);
 }
 

Modified: soc2012/jhagewood/diff3/hagewood-diff3.patch
==============================================================================
--- soc2012/jhagewood/diff3/hagewood-diff3.patch	Tue Jun  5 19:59:09 2012	(r237158)
+++ soc2012/jhagewood/diff3/hagewood-diff3.patch	Tue Jun  5 20:13:02 2012	(r237159)
@@ -11,7 +11,7 @@
  .include <bsd.prog.mk>
 diff -rupN jhagewood/diff3/diff3-orig/diff3prog.c jhagewood/diff3/diff3/diff3prog.c
 --- jhagewood/diff3/diff3-orig/diff3prog.c	2012-06-04 23:30:11.000000000 -0400
-+++ jhagewood/diff3/diff3/diff3prog.c	2012-06-05 07:53:14.000000000 -0400
++++ jhagewood/diff3/diff3/diff3prog.c	2012-06-05 20:10:22.000000000 -0400
 @@ -82,6 +82,9 @@
  
  /* diff3 - 3-way differential file comparison */
@@ -110,34 +110,39 @@
  	}
  	merge(m, n);
  	exit(EXIT_SUCCESS);
-@@ -606,6 +625,26 @@ repos(int nchar)
+@@ -606,6 +625,31 @@ repos(int nchar)
  		(void)fseek(fp[i], (long)-nchar, SEEK_CUR);
  }
  
-+/* Removes carriage return from open file. 
-+ * TODO: Remove trailing cr only.
++/* If file has trailing carriage return, remove it. 
 + */
 +void
 +remove_cr(FILE *f) {
 +	
 +	char ch; 
 +	fpos_t position;
++	fpos_t tcr_pos;
 +	
-+	while ( ch != EOF) {
++	while (ch != EOF) {
 +		fgetpos(f, &position);
 +		ch = fgetc(f);
-+		if (ch == '\r') {
-+			fsetpos(f, &position);
-+			fputc((int)'\0', f);
++		if (ch == '\r'  && fgetc(f) == EOF) {
++			tcr_pos = position;
++			break;
 +		}
 +	}
++	
++	if (tcr_pos != NULL) {
++		fsetpos(f, &tcr_pos);
++		fputc((int)'\0', f);
++	}
 +	rewind(f);
 +}
 +
  __dead void
  trouble(void)
  {
-@@ -699,12 +738,38 @@ increase(void)
+@@ -699,12 +743,38 @@ increase(void)
  }
  
  


More information about the svn-soc-all mailing list