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