Date: Tue, 05 Jun 2012 20:13:02 +0000 From: jhagewood@FreeBSD.org To: svn-soc-all@FreeBSD.org Subject: socsvn commit: r237159 - in soc2012/jhagewood/diff3: . diff3 Message-ID: <20120605201303.35E65106577B@hub.freebsd.org>
next in thread | raw e-mail | index | archive | help
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) }
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20120605201303.35E65106577B>