From owner-svn-soc-all@FreeBSD.ORG Tue Jun 26 04:50:29 2012 Return-Path: Delivered-To: svn-soc-all@FreeBSD.org Received: from socsvn.FreeBSD.org (unknown [IPv6:2001:4f8:fff6::2f]) by hub.freebsd.org (Postfix) with SMTP id 85380106564A for ; Tue, 26 Jun 2012 04:50:27 +0000 (UTC) (envelope-from jhagewood@FreeBSD.org) Received: by socsvn.FreeBSD.org (sSMTP sendmail emulation); Tue, 26 Jun 2012 04:50:27 +0000 Date: Tue, 26 Jun 2012 04:50:27 +0000 From: jhagewood@FreeBSD.org To: svn-soc-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Message-Id: <20120626045027.85380106564A@hub.freebsd.org> Cc: Subject: socsvn commit: r238317 - in soc2012/jhagewood/diff: . diff X-BeenThere: svn-soc-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the entire Summer of Code repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 26 Jun 2012 04:50:29 -0000 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;