Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 09 Jul 2012 20:14:06 +0000
From:      jhagewood@FreeBSD.org
To:        svn-soc-all@FreeBSD.org
Subject:   socsvn commit: r239198 - in soc2012/jhagewood/sdiff: . sdiff
Message-ID:  <20120709201406.A1B1F106568B@hub.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: jhagewood
Date: Mon Jul  9 20:14:06 2012
New Revision: 239198
URL: http://svnweb.FreeBSD.org/socsvn/?view=rev&rev=239198

Log:

Modified:
  soc2012/jhagewood/sdiff/TODO
  soc2012/jhagewood/sdiff/hagewood-sdiff.patch
  soc2012/jhagewood/sdiff/sdiff/sdiff.c

Modified: soc2012/jhagewood/sdiff/TODO
==============================================================================
--- soc2012/jhagewood/sdiff/TODO	Mon Jul  9 19:27:48 2012	(r239197)
+++ soc2012/jhagewood/sdiff/TODO	Mon Jul  9 20:14:06 2012	(r239198)
@@ -1,4 +1,4 @@
-Combine diff-spec args and pipe to diff 	INCOMPLETE
+Combine diff-spec args and pipe to diff 	COMPLETE	Fixed 'W'
 Test script					COMPLETE
 Adapt code to FreeBSD style guidelines		INCOMPLETE
 Fix --width output indention			COMPLETE
@@ -6,9 +6,10 @@
 Add more information to man file.		COMPLETE
 Fix sdiff to work with binary data		INCOMPLETE
 
-
 NOTES:
 
+- In diff, 'w' is used for --ignore-all-spaces instead of 'W'. When 'W' is passed to sdiff, it must be passed to diff as 'w'.
+
 - BUG: Right side of output is 2 spaces further than GNU sdiff's output.
 	-FIX: In println(), change column width to width-1, take out 
 		extra space when it prints 'div' on no right column. 

Modified: soc2012/jhagewood/sdiff/hagewood-sdiff.patch
==============================================================================
--- soc2012/jhagewood/sdiff/hagewood-sdiff.patch	Mon Jul  9 19:27:48 2012	(r239197)
+++ soc2012/jhagewood/sdiff/hagewood-sdiff.patch	Mon Jul  9 20:14:06 2012	(r239198)
@@ -112,7 +112,7 @@
 +
 diff -rupN jhagewood/sdiff/sdiff-orig/sdiff.c jhagewood/sdiff/sdiff/sdiff.c
 --- jhagewood/sdiff/sdiff-orig/sdiff.c	2012-07-07 19:37:22.000000000 -0400
-+++ jhagewood/sdiff/sdiff/sdiff.c	2012-07-09 19:53:05.000000000 -0400
++++ jhagewood/sdiff/sdiff/sdiff.c	2012-07-09 20:09:56.000000000 -0400
 @@ -5,6 +5,14 @@
   * Public domain.
   */
@@ -231,21 +231,28 @@
  		/* combine no-arg single switches */
  		case 'a':
  		case 'B':
-@@ -261,11 +290,11 @@ main(int argc, char **argv)
+@@ -261,11 +290,17 @@ main(int argc, char **argv)
  		case 'i':
  		case 't':
  		case 'H':
 +		case 'W':
  			for(popt = longopts; ch != popt->val && popt->name != NULL; popt++);
 -			diffargv[1]  = realloc( diffargv[1], sizeof(char) * strlen(diffargv[1]) + 2 ); 
+-			sprintf(diffargv[1], "%s%c", diffargv[1], ch);
 +			diffargv[1]  = realloc(diffargv[1], sizeof(char) * strlen(diffargv[1]) + 2); 
- 			sprintf(diffargv[1], "%s%c", diffargv[1], ch);
++			/*
++			 * In diff, the 'W' option is 'w' and the 'w' is 'W'.
++			 */
++			if (ch == 'W')
++				sprintf(diffargv[1], "%sw", diffargv[1]);
++			else
++				sprintf(diffargv[1], "%s%c", diffargv[1], ch);
  			break;
 -		
  		case DIFFPROG_OPT:
  			diffargv[0] = diffprog = optarg;
  			break;
-@@ -289,26 +318,23 @@ main(int argc, char **argv)
+@@ -289,26 +324,23 @@ main(int argc, char **argv)
  			if (errstr)
  				errx(2, "width is %s: %s", errstr, optarg);
  			break;
@@ -277,7 +284,7 @@
  	/* no single switches were used */
  	if( strcmp( diffargv[1], "-" ) == 0 )
  	{
-@@ -362,19 +388,19 @@ main(int argc, char **argv)
+@@ -362,19 +394,19 @@ main(int argc, char **argv)
  	/* Add NULL to end of array to indicate end of array. */
  	diffargv[diffargc++] = NULL;
  
@@ -302,7 +309,7 @@
  		case 0:
  			/* child */
  			/* We don't read from the pipe. */
-@@ -383,7 +409,6 @@ main(int argc, char **argv)
+@@ -383,7 +415,6 @@ main(int argc, char **argv)
  				err(2, "child could not duplicate descriptor");
  			/* Free unused descriptor. */
  			close(fd[1]);
@@ -310,7 +317,7 @@
  			execvp(diffprog, diffargv);
  			err(2, "could not execute diff: %s", diffprog);
  			break;
-@@ -461,6 +486,7 @@ main(int argc, char **argv)
+@@ -461,6 +492,7 @@ main(int argc, char **argv)
  static void
  printcol(const char *s, size_t *col, const size_t col_max)
  {
@@ -318,7 +325,7 @@
  	for (; *s && *col < col_max; ++s) {
  		size_t new_col;
  
-@@ -484,11 +510,9 @@ printcol(const char *s, size_t *col, con
+@@ -484,11 +516,9 @@ printcol(const char *s, size_t *col, con
  				return;
  			*col = new_col;
  			break;
@@ -330,7 +337,7 @@
  		putchar(*s);
  	}
  }
-@@ -527,30 +551,24 @@ prompt(const char *s1, const char *s2)
+@@ -527,30 +557,24 @@ prompt(const char *s1, const char *s2)
  			/* Choose left column as-is. */
  			if (s1 != NULL)
  				fprintf(outfp, "%s\n", s1);
@@ -363,7 +370,7 @@
  		default:
  			/* Interactive usage help. */
  USAGE:
-@@ -570,7 +588,7 @@ PROMPT:
+@@ -570,7 +594,7 @@ PROMPT:
  	 * If there was no error, we received an EOF from stdin, so we
  	 * should quit.
  	 */
@@ -372,7 +379,7 @@
  	fclose(outfp);
  	exit(0);
  }
-@@ -1103,24 +1121,22 @@ printd(FILE *file1, size_t file1end)
+@@ -1103,24 +1127,22 @@ printd(FILE *file1, size_t file1end)
  static void
  int_usage(void)
  {

Modified: soc2012/jhagewood/sdiff/sdiff/sdiff.c
==============================================================================
--- soc2012/jhagewood/sdiff/sdiff/sdiff.c	Mon Jul  9 19:27:48 2012	(r239197)
+++ soc2012/jhagewood/sdiff/sdiff/sdiff.c	Mon Jul  9 20:14:06 2012	(r239198)
@@ -293,7 +293,13 @@
 		case 'W':
 			for(popt = longopts; ch != popt->val && popt->name != NULL; popt++);
 			diffargv[1]  = realloc(diffargv[1], sizeof(char) * strlen(diffargv[1]) + 2); 
-			sprintf(diffargv[1], "%s%c", diffargv[1], ch);
+			/*
+			 * In diff, the 'W' option is 'w' and the 'w' is 'W'.
+			 */
+			if (ch == 'W')
+				sprintf(diffargv[1], "%sw", diffargv[1]);
+			else
+				sprintf(diffargv[1], "%s%c", diffargv[1], ch);
 			break;
 		case DIFFPROG_OPT:
 			diffargv[0] = diffprog = optarg;



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20120709201406.A1B1F106568B>