Date: Tue, 05 Jun 2012 07:53:22 +0000 From: jhagewood@FreeBSD.org To: svn-soc-all@FreeBSD.org Subject: socsvn commit: r237117 - in soc2012/jhagewood/diff3: . diff3 Message-ID: <20120605075322.DFDBD106566C@hub.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: jhagewood Date: Tue Jun 5 07:53:22 2012 New Revision: 237117 URL: http://svnweb.FreeBSD.org/socsvn/?view=rev&rev=237117 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 06:43:45 2012 (r237116) +++ soc2012/jhagewood/diff3/diff3/diff3prog.c Tue Jun 5 07:53:22 2012 (r237117) @@ -152,6 +152,7 @@ void repos(int); void separate(const char *); __dead void edscript(int); +void remove_cr(FILE *); __dead void trouble(void); void increase(void); __dead void try_help(void); @@ -173,13 +174,13 @@ { "text", no_argument, NULL, 'a' }, { "version", no_argument, NULL, 'v' }, { "help", no_argument, NULL, HELP_OPT }, - + { "strip-trailing-cr", no_argument, NULL, STRIPCR_OPT }, + /* features to implement */ { "show-all", no_argument, NULL, 'A' }, { "easy-only", no_argument, NULL, '3' }, { "merge", no_argument, NULL, 'm' }, { "label", required_argument, NULL, 'L' }, - { "strip-trailing-cr", no_argument, NULL, STRIPCR_OPT }, { "diff-program", required_argument, NULL, DIFFPROG_OPT }, @@ -270,6 +271,8 @@ for (i = 0; i <= 2; i++) { if ((fp[i] = fopen(argv[i + 2], "r")) == NULL) err(EXIT_FAILURE, "can't open %s", argv[i + 2]); + if (strip_cr) + remove_cr(fp[i]); } merge(m, n); exit(EXIT_SUCCESS); @@ -622,6 +625,26 @@ (void)fseek(fp[i], (long)-nchar, SEEK_CUR); } +/* Removes carriage return from open file. + * TODO: Remove trailing cr only. + */ +void +remove_cr(FILE *f) { + + char ch; + fpos_t position; + + while ( ch != EOF) { + fgetpos(f, &position); + ch = fgetc(f); + if (ch == '\r') { + fsetpos(f, &position); + fputc((int)'\0', f); + } + } + rewind(f); +} + __dead void trouble(void) { Modified: soc2012/jhagewood/diff3/hagewood-diff3.patch ============================================================================== --- soc2012/jhagewood/diff3/hagewood-diff3.patch Tue Jun 5 06:43:45 2012 (r237116) +++ soc2012/jhagewood/diff3/hagewood-diff3.patch Tue Jun 5 07:53:22 2012 (r237117) @@ -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 01:17:18.000000000 -0400 ++++ jhagewood/diff3/diff3/diff3prog.c 2012-06-05 07:53:14.000000000 -0400 @@ -82,6 +82,9 @@ /* diff3 - 3-way differential file comparison */ @@ -22,8 +22,11 @@ /* diff3 [-ex3EX] d13 d23 f1 f2 f3 [m1 m3] * * d13 = diff report on f1 vs f3 -@@ -151,22 +154,26 @@ void separate(const char *); +@@ -149,33 +152,38 @@ void prange(struct range *); + void repos(int); + void separate(const char *); __dead void edscript(int); ++void remove_cr(FILE *); __dead void trouble(void); void increase(void); -__dead void usage(void); @@ -50,13 +53,14 @@ - + { "version", no_argument, NULL, 'v' }, + { "help", no_argument, NULL, HELP_OPT }, -+ ++ { "strip-trailing-cr", no_argument, NULL, STRIPCR_OPT }, ++ /* features to implement */ { "show-all", no_argument, NULL, 'A' }, { "easy-only", no_argument, NULL, '3' }, -@@ -174,8 +181,8 @@ static struct option longopts[] = { + { "merge", no_argument, NULL, 'm' }, { "label", required_argument, NULL, 'L' }, - { "strip-trailing-cr", no_argument, NULL, STRIPCR_OPT }, +- { "strip-trailing-cr", no_argument, NULL, STRIPCR_OPT }, { "diff-program", required_argument, NULL, DIFFPROG_OPT }, - { "version", no_argument, NULL, 'v' }, - { "help", no_argument, NULL, HELP_OPT } @@ -65,7 +69,7 @@ }; -@@ -216,12 +223,19 @@ main(int argc, char **argv) +@@ -216,12 +224,19 @@ main(int argc, char **argv) case 'X': oflag = eflag = 1; break; @@ -85,7 +89,7 @@ case STRIPCR_OPT: strip_cr = 1; break; -@@ -233,8 +247,10 @@ main(int argc, char **argv) +@@ -233,8 +248,10 @@ main(int argc, char **argv) argc -= optind; argv += optind; /* XXX - argc usage seems wrong here */ @@ -97,7 +101,43 @@ if (oflag) { (void)snprintf(f1mark, sizeof(f1mark), "<<<<<<< %s", -@@ -699,12 +715,38 @@ increase(void) +@@ -254,6 +271,8 @@ main(int argc, char **argv) + for (i = 0; i <= 2; i++) { + if ((fp[i] = fopen(argv[i + 2], "r")) == NULL) + err(EXIT_FAILURE, "can't open %s", argv[i + 2]); ++ if (strip_cr) ++ remove_cr(fp[i]); + } + merge(m, n); + exit(EXIT_SUCCESS); +@@ -606,6 +625,26 @@ repos(int nchar) + (void)fseek(fp[i], (long)-nchar, SEEK_CUR); + } + ++/* Removes carriage return from open file. ++ * TODO: Remove trailing cr only. ++ */ ++void ++remove_cr(FILE *f) { ++ ++ char ch; ++ fpos_t position; ++ ++ while ( ch != EOF) { ++ fgetpos(f, &position); ++ ch = fgetc(f); ++ if (ch == '\r') { ++ fsetpos(f, &position); ++ fputc((int)'\0', f); ++ } ++ } ++ rewind(f); ++} ++ + __dead void + trouble(void) + { +@@ -699,12 +738,38 @@ increase(void) }
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20120605075322.DFDBD106566C>