Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 26 Jun 2012 04:50:27 +0000
From:      jhagewood@FreeBSD.org
To:        svn-soc-all@FreeBSD.org
Subject:   socsvn commit: r238317 - in soc2012/jhagewood/diff: . diff
Message-ID:  <20120626045027.85380106564A@hub.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: jhagewood
Date: Tue Jun 26 04:50:26 2012
New Revision: 238317
URL: http://svnweb.FreeBSD.org/socsvn/?view=rev&rev=238317

Log:

Modified:
  soc2012/jhagewood/diff/TODO
  soc2012/jhagewood/diff/diff/diff.c
  soc2012/jhagewood/diff/diff/diff.h
  soc2012/jhagewood/diff/hagewood-diff.patch

Modified: soc2012/jhagewood/diff/TODO
==============================================================================
--- soc2012/jhagewood/diff/TODO	Tue Jun 26 03:05:42 2012	(r238316)
+++ soc2012/jhagewood/diff/TODO	Tue Jun 26 04:50:26 2012	(r238317)
@@ -11,8 +11,8 @@
 --GTYPE-group-format			INCOMPLETE
 --line-format				IN PROGRESS		Added new-line-format, old-line-format, and unchanged-line-format for compatibility
 --LTYPE-line-format			INCOMPLETE
---from-file				INCOMPLETE
---to-file				INCOMPLETE
+--from-file				COMPLETE		Calls exec1() twice with optarg as file input. NEEDS TESTING. 
+--to-file				COMPLETE		Calls exec1() twice with optarg as file input. NEEDS TESTING.
 --horizon-lines				INCOMPLETE
 --speed-large-file			INCOMPLETE
 --ignore-tab-expansion			IN PROGRESS		Functionality implemented in check(), needs debugging. (Same problem as --ignore-blank-lines?)  

Modified: soc2012/jhagewood/diff/diff/diff.c
==============================================================================
--- soc2012/jhagewood/diff/diff/diff.c	Tue Jun 26 03:05:42 2012	(r238316)
+++ soc2012/jhagewood/diff/diff/diff.c	Tue Jun 26 04:50:26 2012	(r238317)
@@ -44,7 +44,7 @@
 #include "pathnames.h"
 
 int	aflag, bflag, cflag, dflag, Eflag, iflag, lflag, Nflag, Pflag, pflag, rflag;
-int	sflag, tflag, Tflag, wflag;
+int	sflag, tflag, Tflag, wflag, Toflag, Fromflag;
 int	Bflag, yflag;
 int strip_cr, suppress_cl, tabsize = 8;
 char ignore_file_case = 0;
@@ -95,7 +95,7 @@
 	{ "exclude",			required_argument,	NULL,	'x' },
 	{ "exclude-from",		required_argument,	NULL,	'X' },
 	{ "expand-tabs",		no_argument,		NULL,	't' },
-	/*{ "from-file",			required_argument,	NULL,	OPT_FFILE },*/
+	{ "from-file",			required_argument,	NULL,	OPT_FFILE },
 	{ "forward-ed",			no_argument,		NULL,	'f' },
 	/*{ "GTYPE-group-format",		required_argument,	NULL,	OPT_GTYPE },*/
 	{ "help",			no_argument,		NULL,	OPT_HELP },
@@ -132,7 +132,7 @@
 	{ "suppress-common-lines",	no_argument,		NULL,	OPT_SUPCL },
 	{ "tabsize",			optional_argument,	NULL,	OPT_TSIZE },
 	{ "text",			no_argument,		NULL,	'a' },
-	/*{ "to-file",			required_argument,	NULL,	OPT_TOFILE },*/
+	{ "to-file",			required_argument,	NULL,	OPT_TOFILE },
 	{ "unchanged-line-format",		required_argument,			NULL,	OPT_UNCHGD_LF},
 	{ "unidirectional-new-file",	no_argument,		NULL,	'P' },
 	{ "unified",			optional_argument,	NULL,	'U' },
@@ -162,7 +162,7 @@
 int
 main(int argc, char **argv)
 {
-	char *ep, **oargv;
+	char *ep, **oargv, *args, *cmpfile1, *cmpfile2;
 	long l;
 	int ch, lastch, gotstdin, prevoptind, newarg;
 	int oargc;
@@ -170,6 +170,7 @@
 	oargv = argv;
 	oargc = argc;
 	gotstdin = 0;
+	args = "-";
 
 	lastch = '\0';
 	prevoptind = 1;
@@ -300,6 +301,12 @@
 		case 'y':
 			yflag = 1;
 			break;
+		case OPT_FFILE:
+			Toflag = 1;
+			break;
+		case OPT_TOFILE
+			Fromflag:
+			break;
 		case OPT_NEW_LF:
 		case OPT_OLD_LF:
 		case OPT_UNCHGD_LF:
@@ -349,10 +356,35 @@
 		lastch = ch;
 		newarg = optind != prevoptind;
 		prevoptind = optind;
+		
+		if (ch != OPT_FFILE && ch != OPT_TOFILE) {
+			strcat(args, ch);
+		}
 	}
 	argc -= optind;
 	argv += optind;
 
+	if (Toflag || Fromflag) {
+		if (Toflag && Fromflag) {
+			(void)fprintf(stderr, "--from-file and --to-file both specified.");
+			exit(2);
+		}
+		if (Toflag) {
+			if (exec1(_PATH_DIFF, args, argv[argc-2], optarg) ||
+				exec1(_PATH_DIFF, args, argv[argc-1], optarg) {
+				(void)fprintf(stderr, "--to-file error.");
+				exit(2);				
+			}
+			exit(127);
+		}
+		if (Fromflag) {
+			if (exec1(_PATH_DIFF, args, optarg, argv[argc-2]) ||
+				exec1(_PATH_DIFF, args, optarg, argv[argc-1]) {
+				(void)fprintf(stderr, "--from-file error.");
+			}
+			exit(127);			
+		}
+	}
 	if (yflag) {
 		/* remove y flag from args and call sdiff */
 		for (argv = oargv; argv && strcmp(*argv, "-y") != 0; argv++);

Modified: soc2012/jhagewood/diff/diff/diff.h
==============================================================================
--- soc2012/jhagewood/diff/diff/diff.h	Tue Jun 26 03:05:42 2012	(r238316)
+++ soc2012/jhagewood/diff/diff/diff.h	Tue Jun 26 04:50:26 2012	(r238317)
@@ -75,8 +75,8 @@
 	struct excludes	*next;
 };
 
-extern int	 aflag, bflag, cflag, dflag, Eflag, iflag, lflag, Nflag, Pflag, pflag, rflag,
-		 sflag, tflag, Tflag, wflag;
+extern int	 aflag, bflag, cflag, dflag, Eflag, Fromflag, iflag, lflag, Nflag, Pflag, pflag, rflag,
+		 sflag, tflag, Tflag, Toflag, wflag;
 extern int	 Bflag, strip_cr, suppress_cl, tabsize;
 extern int	 format, context, status;
 extern char	 ignore_file_case;

Modified: soc2012/jhagewood/diff/hagewood-diff.patch
==============================================================================
--- soc2012/jhagewood/diff/hagewood-diff.patch	Tue Jun 26 03:05:42 2012	(r238316)
+++ soc2012/jhagewood/diff/hagewood-diff.patch	Tue Jun 26 04:50:26 2012	(r238317)
@@ -1,6 +1,6 @@
 diff -rupN jhagewood/diff/diff-orig/diff.c jhagewood/diff/diff/diff.c
 --- jhagewood/diff/diff-orig/diff.c	2012-06-25 16:05:53.000000000 -0400
-+++ jhagewood/diff/diff/diff.c	2012-06-25 22:18:49.000000000 -0400
++++ jhagewood/diff/diff/diff.c	2012-06-26 04:49:46.000000000 -0400
 @@ -1,4 +1,4 @@
 -/*-
 +/*
@@ -39,7 +39,7 @@
 -int	 format, context, status;
 -char	*start, *ifdefname, *diffargs, *label[2], *ignore_pats;
 +int	aflag, bflag, cflag, dflag, Eflag, iflag, lflag, Nflag, Pflag, pflag, rflag;
-+int	sflag, tflag, Tflag, wflag;
++int	sflag, tflag, Tflag, wflag, Toflag, Fromflag;
 +int	Bflag, yflag;
 +int strip_cr, suppress_cl, tabsize = 8;
 +char ignore_file_case = 0;
@@ -118,7 +118,7 @@
 +	{ "exclude",			required_argument,	NULL,	'x' },
 +	{ "exclude-from",		required_argument,	NULL,	'X' },
 +	{ "expand-tabs",		no_argument,		NULL,	't' },
-+	/*{ "from-file",			required_argument,	NULL,	OPT_FFILE },*/
++	{ "from-file",			required_argument,	NULL,	OPT_FFILE },
  	{ "forward-ed",			no_argument,		NULL,	'f' },
 +	/*{ "GTYPE-group-format",		required_argument,	NULL,	OPT_GTYPE },*/
 +	{ "help",			no_argument,		NULL,	OPT_HELP },
@@ -165,7 +165,7 @@
 +	{ "suppress-common-lines",	no_argument,		NULL,	OPT_SUPCL },
 +	{ "tabsize",			optional_argument,	NULL,	OPT_TSIZE },
 +	{ "text",			no_argument,		NULL,	'a' },
-+	/*{ "to-file",			required_argument,	NULL,	OPT_TOFILE },*/
++	{ "to-file",			required_argument,	NULL,	OPT_TOFILE },
 +	{ "unchanged-line-format",		required_argument,			NULL,	OPT_UNCHGD_LF},
 +	{ "unidirectional-new-file",	no_argument,		NULL,	'P' },
  	{ "unified",			optional_argument,	NULL,	'U' },
@@ -180,7 +180,7 @@
  	{ NULL,				0,			NULL,	'\0'}
  };
  
-@@ -162,10 +162,10 @@ void read_excludes_file(char *);
+@@ -162,14 +162,15 @@ void read_excludes_file(char *);
  int
  main(int argc, char **argv)
  {
@@ -188,14 +188,19 @@
 -	long	 l;
 -	int	 ch, lastch, gotstdin, prevoptind, newarg;
 -	int	 oargc;
-+	char *ep, **oargv;
++	char *ep, **oargv, *args, *cmpfile1, *cmpfile2;
 +	long l;
 +	int ch, lastch, gotstdin, prevoptind, newarg;
 +	int oargc;
  
  	oargv = argv;
  	oargc = argc;
-@@ -197,6 +197,7 @@ main(int argc, char **argv)
+ 	gotstdin = 0;
++	args = "-";
+ 
+ 	lastch = '\0';
+ 	prevoptind = 1;
+@@ -197,6 +198,7 @@ main(int argc, char **argv)
  			break;
  		case 'C':
  		case 'c':
@@ -203,7 +208,7 @@
  			format = D_CONTEXT;
  			if (optarg != NULL) {
  				l = strtol(optarg, &ep, 10);
-@@ -213,6 +214,9 @@ main(int argc, char **argv)
+@@ -213,6 +215,9 @@ main(int argc, char **argv)
  		case 'd':
  			dflag = 1;
  			break;
@@ -213,10 +218,16 @@
  		case 'e':
  			format = D_EDIT;
  			break;
-@@ -296,15 +300,32 @@ main(int argc, char **argv)
+@@ -296,15 +301,38 @@ main(int argc, char **argv)
  		case 'y':
  			yflag = 1;
  			break;
++		case OPT_FFILE:
++			Toflag = 1;
++			break;
++		case OPT_TOFILE
++			Fromflag:
++			break;
 +		case OPT_NEW_LF:
 +		case OPT_OLD_LF:
 +		case OPT_UNCHGD_LF:
@@ -254,11 +265,40 @@
  		case OPT_STRIPCR:
  			strip_cr=1;
  			break;
-@@ -332,16 +353,15 @@ main(int argc, char **argv)
+@@ -328,20 +356,44 @@ main(int argc, char **argv)
+ 		lastch = ch;
+ 		newarg = optind != prevoptind;
+ 		prevoptind = optind;
++		
++		if (ch != OPT_FFILE && ch != OPT_TOFILE) {
++			strcat(args, ch);
++		}
+ 	}
  	argc -= optind;
  	argv += optind;
  
 -	if(yflag) {
++	if (Toflag || Fromflag) {
++		if (Toflag && Fromflag) {
++			(void)fprintf(stderr, "--from-file and --to-file both specified.");
++			exit(2);
++		}
++		if (Toflag) {
++			if (exec1(_PATH_DIFF, args, argv[argc-2], optarg) ||
++				exec1(_PATH_DIFF, args, argv[argc-1], optarg) {
++				(void)fprintf(stderr, "--to-file error.");
++				exit(2);				
++			}
++			exit(127);
++		}
++		if (Fromflag) {
++			if (exec1(_PATH_DIFF, args, optarg, argv[argc-2]) ||
++				exec1(_PATH_DIFF, args, optarg, argv[argc-1]) {
++				(void)fprintf(stderr, "--from-file error.");
++			}
++			exit(127);			
++		}
++	}
 +	if (yflag) {
  		/* remove y flag from args and call sdiff */
 -		for(argv=oargv; argv && strcmp(*argv, "-y") != 0; argv++);
@@ -274,7 +314,7 @@
  		execv(_PATH_SDIFF, oargv);
  		_exit(127);
  	}
-@@ -380,7 +400,10 @@ main(int argc, char **argv)
+@@ -380,7 +432,10 @@ main(int argc, char **argv)
  	set_argstr(oargv, argv);
  	if (S_ISDIR(stb1.st_mode) && S_ISDIR(stb2.st_mode)) {
  		if (format == D_IFDEF)
@@ -286,7 +326,7 @@
  		diffdir(argv[0], argv[1]);
  	} else {
  		if (S_ISDIR(stb1.st_mode)) {
-@@ -402,11 +425,10 @@ main(int argc, char **argv)
+@@ -402,11 +457,10 @@ main(int argc, char **argv)
  void *
  emalloc(size_t n)
  {
@@ -299,7 +339,7 @@
  	if ((p = malloc(n)) == NULL)
  		errx(2, NULL);
  	return (p);
-@@ -415,7 +437,7 @@ emalloc(size_t n)
+@@ -415,7 +469,7 @@ emalloc(size_t n)
  void *
  erealloc(void *p, size_t n)
  {
@@ -308,7 +348,7 @@
  
  	if (n == 0)
  		errx(2, NULL);
-@@ -431,13 +453,12 @@ erealloc(void *p, size_t n)
+@@ -431,13 +485,12 @@ erealloc(void *p, size_t n)
  int
  easprintf(char **ret, const char *fmt, ...)
  {
@@ -324,7 +364,7 @@
  	if (len < 0 || *ret == NULL)
  		errx(2, NULL);
  	return (len);
-@@ -446,11 +467,12 @@ easprintf(char **ret, const char *fmt, .
+@@ -446,11 +499,12 @@ easprintf(char **ret, const char *fmt, .
  char *
  estrdup(const char *str)
  {
@@ -339,7 +379,7 @@
  	strlcpy(cp, str, len);
  	return (cp);
  }
-@@ -531,6 +553,7 @@ push_ignore_pats(char *pattern)
+@@ -531,6 +585,7 @@ push_ignore_pats(char *pattern)
  void
  print_only(const char *path, size_t dirlen, const char *entry)
  {
@@ -347,7 +387,7 @@
  	if (dirlen > 1)
  		dirlen--;
  	printf("Only in %.*s: %s\n", (int)dirlen, path, entry);
-@@ -539,45 +562,46 @@ print_only(const char *path, size_t dirl
+@@ -539,45 +594,46 @@ print_only(const char *path, size_t dirl
  void
  print_status(int val, char *path1, char *path2, char *entry)
  {
@@ -405,7 +445,7 @@
  		break;
  	}
  }
-@@ -585,6 +609,7 @@ print_status(int val, char *path1, char 
+@@ -585,6 +641,7 @@ print_status(int val, char *path1, char 
  void
  usage(void)
  {
@@ -415,15 +455,16 @@
  	    "            [-L label] file1 file2\n"
 diff -rupN jhagewood/diff/diff-orig/diff.h jhagewood/diff/diff/diff.h
 --- jhagewood/diff/diff-orig/diff.h	2012-06-25 16:05:53.000000000 -0400
-+++ jhagewood/diff/diff/diff.h	2012-06-25 16:05:53.000000000 -0400
++++ jhagewood/diff/diff/diff.h	2012-06-26 04:19:55.000000000 -0400
 @@ -75,9 +75,9 @@ struct excludes {
  	struct excludes	*next;
  };
  
 -extern int	 aflag, bflag, dflag, iflag, lflag, Nflag, Pflag, pflag, rflag,
-+extern int	 aflag, bflag, cflag, dflag, Eflag, iflag, lflag, Nflag, Pflag, pflag, rflag,
- 		 sflag, tflag, Tflag, wflag;
+-		 sflag, tflag, Tflag, wflag;
 -extern int	 Bflag, strip_cr, tabsize;
++extern int	 aflag, bflag, cflag, dflag, Eflag, Fromflag, iflag, lflag, Nflag, Pflag, pflag, rflag,
++		 sflag, tflag, Tflag, Toflag, wflag;
 +extern int	 Bflag, strip_cr, suppress_cl, tabsize;
  extern int	 format, context, status;
  extern char	 ignore_file_case;



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