socsvn commit: r238317 - in soc2012/jhagewood/diff: . diff
jhagewood at FreeBSD.org
jhagewood at FreeBSD.org
Tue Jun 26 04:50:29 UTC 2012
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;
More information about the svn-soc-all
mailing list