socsvn commit: r239330 - in soc2012/jhagewood: diff diff3 mdocml
sdiff
jhagewood at FreeBSD.org
jhagewood at FreeBSD.org
Fri Jul 13 05:33:56 UTC 2012
Author: jhagewood
Date: Fri Jul 13 05:33:53 2012
New Revision: 239330
URL: http://svnweb.FreeBSD.org/socsvn/?view=rev&rev=239330
Log:
Modified:
soc2012/jhagewood/diff/hagewood-diff.patch
soc2012/jhagewood/diff3/hagewood-diff3.patch
soc2012/jhagewood/mdocml/hagewood-mdocml-ns.patch
soc2012/jhagewood/sdiff/hagewood-sdiff.patch
Modified: soc2012/jhagewood/diff/hagewood-diff.patch
==============================================================================
--- soc2012/jhagewood/diff/hagewood-diff.patch Fri Jul 13 04:22:08 2012 (r239329)
+++ soc2012/jhagewood/diff/hagewood-diff.patch Fri Jul 13 05:33:53 2012 (r239330)
@@ -1,6 +1,1589 @@
+diff -rupN jhagewood/diff/diff-orig/.svn/all-wcprops jhagewood/diff/diff/.svn/all-wcprops
+--- jhagewood/diff/diff-orig/.svn/all-wcprops 2012-07-13 01:33:43.000000000 -0400
++++ jhagewood/diff/diff/.svn/all-wcprops 2012-07-13 01:33:43.000000000 -0400
+@@ -1,59 +1,59 @@
+ K 25
+ svn:wc:ra_dav:version-url
+-V 56
+-/socsvn/!svn/ver/238807/soc2012/jhagewood/diff/diff-orig
++V 51
++/socsvn/!svn/ver/239048/soc2012/jhagewood/diff/diff
+ END
+ diff.1.gz
+ K 25
+ svn:wc:ra_dav:version-url
+-V 66
+-/socsvn/!svn/ver/238807/soc2012/jhagewood/diff/diff-orig/diff.1.gz
++V 61
++/socsvn/!svn/ver/238807/soc2012/jhagewood/diff/diff/diff.1.gz
+ END
+ pathnames.h
+ K 25
+ svn:wc:ra_dav:version-url
+-V 68
+-/socsvn/!svn/ver/238807/soc2012/jhagewood/diff/diff-orig/pathnames.h
++V 63
++/socsvn/!svn/ver/238807/soc2012/jhagewood/diff/diff/pathnames.h
+ END
+ diff.1
+ K 25
+ svn:wc:ra_dav:version-url
+-V 63
+-/socsvn/!svn/ver/238807/soc2012/jhagewood/diff/diff-orig/diff.1
++V 58
++/socsvn/!svn/ver/238807/soc2012/jhagewood/diff/diff/diff.1
+ END
+ diffreg.c
+ K 25
+ svn:wc:ra_dav:version-url
+-V 66
+-/socsvn/!svn/ver/238807/soc2012/jhagewood/diff/diff-orig/diffreg.c
++V 61
++/socsvn/!svn/ver/239048/soc2012/jhagewood/diff/diff/diffreg.c
+ END
+ diff
+ K 25
+ svn:wc:ra_dav:version-url
+-V 61
+-/socsvn/!svn/ver/238807/soc2012/jhagewood/diff/diff-orig/diff
++V 56
++/socsvn/!svn/ver/238807/soc2012/jhagewood/diff/diff/diff
+ END
+ diffdir.c
+ K 25
+ svn:wc:ra_dav:version-url
+-V 66
+-/socsvn/!svn/ver/238807/soc2012/jhagewood/diff/diff-orig/diffdir.c
++V 61
++/socsvn/!svn/ver/238807/soc2012/jhagewood/diff/diff/diffdir.c
+ END
+ diff.c
+ K 25
+ svn:wc:ra_dav:version-url
+-V 63
+-/socsvn/!svn/ver/238807/soc2012/jhagewood/diff/diff-orig/diff.c
++V 58
++/socsvn/!svn/ver/239007/soc2012/jhagewood/diff/diff/diff.c
+ END
+ Makefile
+ K 25
+ svn:wc:ra_dav:version-url
+-V 65
+-/socsvn/!svn/ver/238807/soc2012/jhagewood/diff/diff-orig/Makefile
++V 60
++/socsvn/!svn/ver/238807/soc2012/jhagewood/diff/diff/Makefile
+ END
+ diff.h
+ K 25
+ svn:wc:ra_dav:version-url
+-V 63
+-/socsvn/!svn/ver/238807/soc2012/jhagewood/diff/diff-orig/diff.h
++V 58
++/socsvn/!svn/ver/238807/soc2012/jhagewood/diff/diff/diff.h
+ END
+diff -rupN jhagewood/diff/diff-orig/.svn/entries jhagewood/diff/diff/.svn/entries
+--- jhagewood/diff/diff-orig/.svn/entries 2012-07-13 01:33:43.000000000 -0400
++++ jhagewood/diff/diff/.svn/entries 2012-07-13 01:33:43.000000000 -0400
+@@ -2,13 +2,13 @@
+
+ dir
+ 239329
+-https://socsvn.freebsd.org/socsvn/soc2012/jhagewood/diff/diff-orig
++https://socsvn.freebsd.org/socsvn/soc2012/jhagewood/diff/diff
+ https://socsvn.freebsd.org/socsvn
+
+
+
+-2012-07-02T14:59:21.494992Z
+-238807
++2012-07-06T17:31:27.428691Z
++239048
+ jhagewood
+
+
+@@ -67,7 +67,7 @@ file
+
+
+ 2012-07-13T05:33:43.000000Z
+-5a0333c769b4cd0b56d0183979c3c3da
++02e0e4002578433745dc1989cde68db3
+ 2012-07-02T14:59:21.494992Z
+ 238807
+ jhagewood
+@@ -92,7 +92,7 @@ jhagewood
+
+
+
+-1173
++1208
+
+ diff.1
+ file
+@@ -135,9 +135,9 @@ file
+
+
+ 2012-07-13T05:33:43.000000Z
+-41390d52e706fd5ff89e5139b1a3992a
+-2012-07-02T14:59:21.494992Z
+-238807
++360e792dce77ba35267246e878158613
++2012-07-06T17:31:27.428691Z
++239048
+ jhagewood
+
+
+@@ -160,7 +160,7 @@ jhagewood
+
+
+
+-38935
++40791
+
+ diff
+ file
+@@ -203,7 +203,7 @@ file
+
+
+ 2012-07-13T05:33:43.000000Z
+-28bd85291f636c13f457cda2ec9e2168
++44a983d6f3f06103b3210dc9799dc9aa
+ 2012-07-02T14:59:21.494992Z
+ 238807
+ jhagewood
+@@ -228,7 +228,7 @@ jhagewood
+
+
+
+-8385
++8360
+
+ diff.c
+ file
+@@ -237,9 +237,9 @@ file
+
+
+ 2012-07-13T05:33:43.000000Z
+-5c74db6e58594c5d345aa050fcda44ae
+-2012-07-02T14:59:21.494992Z
+-238807
++060bb447cdcbd060f328603bc0595a90
++2012-07-05T18:13:06.636166Z
++239007
+ jhagewood
+
+
+@@ -262,7 +262,7 @@ jhagewood
+
+
+
+-14455
++18176
+
+ Makefile
+ file
+@@ -305,7 +305,7 @@ file
+
+
+ 2012-07-13T05:33:43.000000Z
+-eab9e28aee9d963655a25372ef2f2657
++f389a5742640cda8b39f75a4cda31197
+ 2012-07-02T14:59:21.494992Z
+ 238807
+ jhagewood
+@@ -330,5 +330,5 @@ jhagewood
+
+
+
+-3738
++3852
+
+diff -rupN jhagewood/diff/diff-orig/.svn/text-base/diff.c.svn-base jhagewood/diff/diff/.svn/text-base/diff.c.svn-base
+--- jhagewood/diff/diff-orig/.svn/text-base/diff.c.svn-base 2012-07-13 01:33:43.000000000 -0400
++++ jhagewood/diff/diff/.svn/text-base/diff.c.svn-base 2012-07-13 01:33:43.000000000 -0400
+@@ -1,4 +1,4 @@
+-/*-
++/*
+ * Copyright (c) 2003 Todd C. Miller <Todd.Miller at courtesan.com>
+ *
+ * Permission to use, copy, modify, and distribute this software for any
+@@ -18,15 +18,13 @@
+ * Materiel Command, USAF, under agreement number F39502-99-1-0512.
+ */
+
+-#include <sys/cdefs.h>
+-
+-#ifndef lint
+ #if 0
+-__RCSID("$OpenBSD: diff.c,v 1.50 2007/05/29 18:24:56 ray Exp $");
+-#else
+-__FBSDID("$FreeBSD$");
++#ifndef lint
++static char sccsid[] = "@(#)diff.c 8.1 (Berkeley) 6/6/93";
+ #endif
+ #endif /* not lint */
++#include <sys/cdefs.h>
++__FBSDID("$FreeBSD$");
+
+ #include <sys/param.h>
+ #include <sys/stat.h>
+@@ -45,20 +43,20 @@ __FBSDID("$FreeBSD$");
+ #include "diff.h"
+ #include "pathnames.h"
+
+-int aflag, bflag, dflag, iflag, lflag, Nflag, Pflag, pflag, rflag;
+-int sflag, tflag, Tflag, wflag;
+-int Bflag, yflag;
+-int strip_cr, tabsize=8;
+-char ignore_file_case = 0;
+-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, Toflag, Fromflag;
++int Bflag, yflag;
++int strip_cr, suppress_cl, tabsize = 8;
++char ignore_file_case = 0;
++int format, context, status;
++char *start, *ifdefname, *diffargs, *label[2], *ignore_pats, *line_format, *group_format;
+ struct stat stb1, stb2;
+ struct excludes *excludes_list;
+ regex_t ignore_re;
+
+ int flag_opts = 0;
+
+-#define OPTIONS "0123456789aBbC:cdD:efhI:iL:lnNPpqrS:sTtU:uvwXy:x"
++#define OPTIONS "0123456789aBbC:cdD:EefhI:iL:lnNPpqrS:sTtU:uvwXy:x"
+
+
+ /* Options which exceed manageable alphanumeric assignments */
+@@ -69,84 +67,129 @@ enum
+ OPT_STRIPCR,
+ OPT_NORMAL,
+ OPT_LEFTC,
+- OT_SUPCL,
+- OPT_GTYPE,
++ OPT_SUPCL,
++ OPT_CHGD_GF,
++ OPT_NEW_GF,
++ OPT_OLD_GF,
++ OPT_UNCHGD_GF,
+ OPT_LF,
+ OPT_LLF,
+ OPT_TSIZE,
+- OPT_UNINF,
+ OPT_FFILE,
+ OPT_TOFILE,
+ OPT_HLINES,
+ OPT_LFILES,
+ OPT_HELP,
++ OPT_NEW_LF,
++ OPT_OLD_LF,
++ OPT_UNCHGD_LF,
+ };
+
+
+ static struct option longopts[] = {
+-/* XXX: UNIMPLEMENTED
+- { "normal", no_argument, NULL, OPT_NORMAL },
+- { "left-column", no_argument, NULL, OPT_LEFTC },
+- { "suppress-common-lines", no_argument, NULL, OT_SUPCL },
+- { "GTYPE-group-format", required_argument, NULL, OPT_GTYPE },
+- { "line-format", required_argument, NULL, OPT_LF },
+- { "LTYPE-line-format", required_argument, NULL, OPT_LLF },
+- { "unidirectional-new-file", no_argument, NULL, OPT_UNINF },
+- { "from-file", required_argument, NULL, OPT_FFILE },
+- { "to-file", required_argument, NULL, OPT_TOFILE },
+- { "horizon-lines", required_argument, NULL, OPT_HLINES },
+- { "speed-large-files", no_argument, NULL, OPT_LFILES }, */
+- { "tabsize", optional_argument, NULL, OPT_TSIZE },
+- { "strip-trailing-cr", no_argument, NULL, OPT_STRIPCR },
+- { "help", no_argument, NULL, OPT_HELP },
+- { "ignore-file-name-case", no_argument, NULL, OPT_IGN_FN_CASE },
+- { "no-ignore-file-name-case", no_argument, NULL, OPT_NIGN_FN_CASE },
+- { "text", no_argument, NULL, 'a' },
+-/* XXX: UNIMPLEMENTED */
+- { "ignore-blank-lines", no_argument, NULL, 'B' },
+- { "ignore-space-change", no_argument, NULL, 'b' },
+-/* XXX: -c is incompatible with GNU version */
++
++ /*
++ * Commented-out options are unimplemented.
++ */
++
++ { "brief", no_argument, NULL, 'q' },
++ { "changed-group-format", required_argument, NULL, OPT_CHGD_GF},
+ { "context", optional_argument, NULL, 'C' },
+- { "ifdef", required_argument, NULL, 'D' },
+- { "minimal", no_argument, NULL, 'd' },
+-/* XXX: UNIMPLEMENTED
+- { "ignore-tab-expansion", no_argument, NULL, 'E' }, */
+ { "ed", no_argument, NULL, 'e' },
+-/* XXX: UNIMPLEMENTED
+- { "show-function-line", required_argument, NULL, 'F' }, */
++ { "exclude", required_argument, NULL, 'x' },
++ { "exclude-from", required_argument, NULL, 'X' },
++ { "expand-tabs", no_argument, NULL, 't' },
++ { "from-file", required_argument, NULL, OPT_FFILE },
+ { "forward-ed", no_argument, NULL, 'f' },
++ { "help", no_argument, NULL, OPT_HELP },
++ /*{ "horizon-lines", required_argument, NULL, OPT_HLINES },*/
++ { "ifdef", required_argument, NULL, 'D' },
++ { "ignore-all-space", no_argument, NULL, 'W' },
++ { "ignore-blank-lines", no_argument, NULL, 'B' },
++ { "ignore-case", no_argument, NULL, 'i' },
++ { "ignore-file-name-case", no_argument, NULL, OPT_IGN_FN_CASE },
+ { "ignore-matching-lines", required_argument, NULL, 'I' },
+- { "ignore-case", no_argument, NULL, 'i' },
++ { "ignore-space-change", no_argument, NULL, 'b' },
++ { "ignore-tab-expansion", no_argument, NULL, 'E' },
++ { "initial-tab", no_argument, NULL, 'T' },
+ { "label", required_argument, NULL, 'L' },
+- { "paginate", no_argument, NULL, 'l' },
++ { "left-column", no_argument, NULL, OPT_LEFTC },
++ { "line-format", required_argument, NULL, OPT_LF },
++ { "minimal", no_argument, NULL, 'd' },
+ { "new-file", no_argument, NULL, 'N' },
+- { "rcs", no_argument, NULL, 'n' },
+- { "unidirectional-new-file", no_argument, NULL, 'P' },
+- { "show-c-function", no_argument, NULL, 'p' },
+- { "brief", no_argument, NULL, 'q' },
++ { "new-line-format", required_argument, NULL, OPT_NEW_LF},
++ { "new-group-format", required_argument, NULL, OPT_NEW_GF},
++ { "no-ignore-file-name-case", no_argument, NULL, OPT_NIGN_FN_CASE },
++ { "normal", no_argument, NULL, OPT_NORMAL },
++ { "old-line-format", required_argument, NULL, OPT_OLD_LF},
++ { "old-group-format", required_argument, NULL, OPT_OLD_GF},
++ { "paginate", no_argument, NULL, 'l' },
+ { "recursive", no_argument, NULL, 'r' },
+- { "starting-file", required_argument, NULL, 'S' },
+ { "report-identical-files", no_argument, NULL, 's' },
+- { "initial-tab", no_argument, NULL, 'T' },
+- { "expand-tabs", no_argument, NULL, 't' },
+-/* XXX: -u is incompatible with GNU version */
++ { "rcs", no_argument, NULL, 'n' },
++ { "show-c-function", no_argument, NULL, 'p' },
++ { "show-function-line", required_argument, NULL, 'F' },
++ { "side-by-side", no_argument, NULL, 'y' },
++ /*{ "speed-large-files", no_argument, NULL, OPT_LFILES }, */
++ { "starting-file", required_argument, NULL, 'S' },
++ { "strip-trailing-cr", no_argument, NULL, OPT_STRIPCR },
++ { "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 },
++ { "unchanged-group-format", required_argument, NULL, OPT_UNCHGD_GF},
++ { "unchanged-line-format", required_argument, NULL, OPT_UNCHGD_LF},
++ { "unidirectional-new-file", no_argument, NULL, 'P' },
+ { "unified", optional_argument, NULL, 'U' },
+ { "version", no_argument, NULL, 'v' },
+-/* XXX: UNIMPLEMENTED
+- { "width", optional_argument, NULL, 'W' }, */
+- { "ignore-all-space", no_argument, NULL, 'w' },
+- { "exclude-from", required_argument, NULL, 'X' },
+- { "exclude", required_argument, NULL, 'x' },
+- { "side-by-side", no_argument, NULL, 'y' },
++ /*{ "width", optional_argument, NULL, 'w' }, */
+ { NULL, 0, NULL, '\0'}
+ };
+
+ static const char *help_msg[] = {
+-"-a --text treat files as ASCII text",
+-"-B --ignore-blank-lines Ignore blank newlines in the comparison",
+-"-b --ignore-space-change Ignore all changes due to whitespace",
+-"-C NUM --context=[NUM] Show NUM lines before and after change (default 3)",
+-"-D --ifdef=NAME",
++"\t-a --text treat files as ASCII text",
++"\t-B --ignore-blank-lines Ignore blank newlines in the comparison",
++"\t-b --ignore-space-change Ignore all changes due to whitespace",
++"\t-C -c NUM --context=NUM Show NUM lines before and after change (default 3)",
++"\t-D --ifdef=NAME Output merged file with `#ifdef NAME' diffs",
++"\t-E --ignore-tab-expansion Ignore tab expansion in the comparison",
++"\t-e --ed Output an ed script",
++"\t-F --show-function-line=RE Show the most recent line matching RE",
++"\t-f --forward-ed Output a forward ed script",
++"\t-I --ignore-matching-lines=RE Ignore changes whose lines all match RE",
++"\t-i --ignore-case Ignore case differences in file contents",
++"\t-L --label=NAME Label file header",
++"\t-l --paginate Paginates output through pr",
++"\t-N --new-file Treat new files as empty",
++"\t-n --rcs Output an RCS format diff",
++"\t-P --unidirectional-new-file Treat absent-first files as empty",
++"\t-p --show-c-function Show which C function each change is in",
++"\t-q --brief report only when files differ",
++"\t-r --recursive Recursively compare any sub-directories found",
++"\t-S --starting-file=FILE Start with FILE when comparing directories",
++"\t-s --report-identical-files Report when two files are the same",
++"\t-T --initial-tab Make tabs line up by prepending a tab",
++"\t-t --expand-tabs Expand tabs to spaces in output",
++"\t-U -u NUM --unified=NUM Show NUM lines of unified context",
++"\t-v --version Show diff version",
++"\t-W --ignore-all-space Ignore all space",
++"\t-w --width=NUM Output at most NUM (default 130) print columns",
++"\t-X --exclude-from=FILE Start with FILE when comparing directories",
++"\t-x --exclude=PAT Exclude files that match PAT",
++"\t-y --side-by-side Output difference in two columns",
++"\t--GTYPE-group-format=GFMT Format GTYPE input groups with GFMT",
++"\t--LTYPE-line-format=LFMT Format LTYPE input lines with LFMT",
++"\t--from-file=FILE Compare FILE to all operands",
++"\t--to-file=FILE Compare all operands to FILE",
++"\t--ignore-file-name-case Ignore file name case",
++"\t--left-column Output the only the left column of common lines",
++"\t--line-format=LFMT Format all input lines with LFMT",
++"\t--no-ignore-file-name-case Do not ignore file name case",
++"\t--normal Output a normal diff (default output)",
++"\t--strip-trailing-cr Strip trailing carriage return",
++"\t--suppress-common-lines Do not output common lines",
++"\t--tabsize=NUM Tab stops every NUM (default 8) print columns",
++"\t--help Output this help message",
+ NULL,
+ };
+ char **help_strs = (char **)help_msg;
+@@ -162,14 +205,15 @@ void read_excludes_file(char *);
+ int
+ main(int argc, char **argv)
+ {
+- char *ep, **oargv;
+- long l;
+- int ch, lastch, gotstdin, prevoptind, newarg;
+- int oargc;
+-
++ char *ep, **oargv, *optfile;
++ long l;
++ int ch, lastch, gotstdin, prevoptind, newarg;
++ int oargc;
++
+ oargv = argv;
+ oargc = argc;
+ gotstdin = 0;
++ optfile = "\0";
+
+ lastch = '\0';
+ prevoptind = 1;
+@@ -197,6 +241,7 @@ main(int argc, char **argv)
+ break;
+ case 'C':
+ case 'c':
++ cflag = 1;
+ format = D_CONTEXT;
+ if (optarg != NULL) {
+ l = strtol(optarg, &ep, 10);
+@@ -213,6 +258,9 @@ main(int argc, char **argv)
+ case 'd':
+ dflag = 1;
+ break;
++ case 'E':
++ Eflag = 1;
++ break;
+ case 'e':
+ format = D_EDIT;
+ break;
+@@ -284,7 +332,7 @@ main(int argc, char **argv)
+ case 'v':
+ printf("FreeBSD diff 2.8.7\n");
+ exit(0);
+- case 'w':
++ case 'W':
+ wflag = 1;
+ break;
+ case 'X':
+@@ -296,15 +344,48 @@ main(int argc, char **argv)
+ case 'y':
+ yflag = 1;
+ break;
++ case OPT_FFILE:
++ Toflag = 1;
++ optfile = optarg;
++ break;
++ case OPT_TOFILE:
++ Fromflag = 1;
++ optfile = optarg;
++ break;
++ case OPT_CHGD_GF:
++ case OPT_NEW_GF:
++ case OPT_OLD_GF:
++ case OPT_UNCHGD_GF:
++ /* XXX To do: Complete --GTYPE-group-format. */
++ format = D_GF;
++ group_format = optarg;
++ break;
++ case OPT_NEW_LF:
++ case OPT_OLD_LF:
++ case OPT_UNCHGD_LF:
++ case OPT_LF:
++ /* XXX To do: Complete --line-format. */
++ format = D_LF;
++ line_format = optarg;
++ break;
++ case OPT_NORMAL:
++ format = D_NORMAL;
++ break;
++ case OPT_LEFTC:
++ /* Do nothing, passes option to sdiff. */
++ break;
++ case OPT_SUPCL:
++ /* Do nothing, passes option to sdiff. */
++ break;
+ case OPT_TSIZE:
+- if (optarg != NULL) {
+- l = strtol(optarg, &ep, 10);
+- if (*ep != '\0' || l < 1 || l >= INT_MAX)
+- usage();
+- tabsize = (int)l;
+- } else
+- tabsize = 8;
+- break;
++ if (optarg != NULL) {
++ l = strtol(optarg, &ep, 10);
++ if (*ep != '\0' || l < 1 || l >= INT_MAX)
++ usage();
++ tabsize = (int)l;
++ } else
++ tabsize = 8;
++ break;
+ case OPT_STRIPCR:
+ strip_cr=1;
+ break;
+@@ -315,11 +396,10 @@ main(int argc, char **argv)
+ ignore_file_case = 0;
+ break;
+ case OPT_HELP:
+- for(;*help_strs;help_strs++)
+- {
++ for (; *help_strs; help_strs++) {
+ printf("%s\n", *help_strs);
+ }
+- exit(2);
++ exit(0);
+ break;
+ default:
+ usage();
+@@ -328,20 +408,20 @@ main(int argc, char **argv)
+ lastch = ch;
+ newarg = optind != prevoptind;
+ prevoptind = optind;
++
+ }
+ argc -= optind;
+ argv += optind;
+-
+- if(yflag) {
++ if (yflag) {
+ /* remove y flag from args and call sdiff */
+- for(argv=oargv; argv && strcmp(*argv, "-y") != 0; argv++);
++ for (argv = oargv; argv && strcmp(*argv, "-y") != 0 &&
++ strcmp(*argv, "--side-by-side") != 0; argv++);
+ while(argv != &oargv[oargc]){
+- *argv=*(argv+1);
++ *argv= *(argv+1);
+ argv++;
+ }
+ oargv[0] = _PATH_SDIFF;
+ *argv= "\0";
+-
+ execv(_PATH_SDIFF, oargv);
+ _exit(127);
+ }
+@@ -380,7 +460,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)
+- errx(2, "-D option not supported with directories");
++ if (ch == 'D')
++ errx(2, "-D option not supported with directories");
++ if (ch == OPT_LF)
++ errx(2, "--line-format option not supported with directories");
+ diffdir(argv[0], argv[1]);
+ } else {
+ if (S_ISDIR(stb1.st_mode)) {
+@@ -393,8 +476,26 @@ main(int argc, char **argv)
+ if (stat(argv[1], &stb2) < 0)
+ err(2, "%s", argv[1]);
+ }
+- print_status(diffreg(argv[0], argv[1], 0), argv[0], argv[1],
+- NULL);
++ /* Checks if --to-file or --from-file are specified */
++ if (Toflag && Fromflag) {
++ (void)fprintf(stderr, "--from-file and --to-file both specified.\n");
++ exit(2);
++ }
++ if (Toflag) {
++ print_status(diffreg(optfile, argv[0], 0), optfile, argv[0],
++ NULL);
++ print_status(diffreg(optfile, argv[1], 0), optfile, argv[1],
++ NULL);
++ }
++ if (Fromflag) {
++ print_status(diffreg(argv[0], optfile, 0), argv[0], optfile,
++ NULL);
++ print_status(diffreg(argv[1], optfile, 0), argv[1], optfile,
++ NULL);
++ }
++ if (!Toflag && !Fromflag)
++ print_status(diffreg(argv[0], argv[1], 0), argv[0], argv[1],
++ NULL);
+ }
+ exit(status);
+ }
+@@ -402,11 +503,10 @@ main(int argc, char **argv)
+ void *
+ emalloc(size_t n)
+ {
+- void *p;
++ void *p;
+
+ if (n == 0)
+ errx(2, NULL);
+-
+ if ((p = malloc(n)) == NULL)
+ errx(2, NULL);
+ return (p);
+@@ -415,7 +515,7 @@ emalloc(size_t n)
+ void *
+ erealloc(void *p, size_t n)
+ {
+- void *q;
++ void *q;
+
+ if (n == 0)
+ errx(2, NULL);
+@@ -431,13 +531,12 @@ erealloc(void *p, size_t n)
+ int
+ easprintf(char **ret, const char *fmt, ...)
+ {
+- int len;
+- va_list ap;
++ int len;
++ va_list ap;
+
+ va_start(ap, fmt);
+ len = vasprintf(ret, fmt, ap);
+ va_end(ap);
+-
+ if (len < 0 || *ret == NULL)
+ errx(2, NULL);
+ return (len);
+@@ -446,11 +545,12 @@ easprintf(char **ret, const char *fmt, .
+ char *
+ estrdup(const char *str)
+ {
+- size_t len;
+- char *cp;
++ size_t len;
++ char *cp;
+
+ len = strlen(str) + 1;
+ cp = emalloc(len);
++
+ strlcpy(cp, str, len);
+ return (cp);
+ }
+@@ -531,6 +631,7 @@ push_ignore_pats(char *pattern)
+ void
+ print_only(const char *path, size_t dirlen, const char *entry)
+ {
++
+ if (dirlen > 1)
+ dirlen--;
+ printf("Only in %.*s: %s\n", (int)dirlen, path, entry);
+@@ -539,45 +640,46 @@ print_only(const char *path, size_t dirl
+ void
+ print_status(int val, char *path1, char *path2, char *entry)
+ {
++
+ switch (val) {
+ case D_ONLY:
+ print_only(path1, strlen(path1), entry);
+ break;
+ case D_COMMON:
+ printf("Common subdirectories: %s%s and %s%s\n",
+- path1, entry ? entry : "", path2, entry ? entry : "");
++ path1, entry ? entry : "", path2, entry ? entry : "");
+ break;
+ case D_BINARY:
+- printf("Binary files %s%s and %s%s differ\n",
+- path1, entry ? entry : "", path2, entry ? entry : "");
++ printf("Files %s%s and %s%s differ\n",
++ path1, entry ? entry : "", path2, entry ? entry : "");
+ break;
+ case D_DIFFER:
+ if (format == D_BRIEF)
+ printf("Files %s%s and %s%s differ\n",
+- path1, entry ? entry : "",
+- path2, entry ? entry : "");
++ path1, entry ? entry : "",
++ path2, entry ? entry : "");
+ break;
+ case D_SAME:
+ if (sflag)
+ printf("Files %s%s and %s%s are identical\n",
+- path1, entry ? entry : "",
+- path2, entry ? entry : "");
++ path1, entry ? entry : "",
++ path2, entry ? entry : "");
+ break;
+ case D_MISMATCH1:
+ printf("File %s%s is a directory while file %s%s is a regular file\n",
+- path1, entry ? entry : "", path2, entry ? entry : "");
++ path1, entry ? entry : "", path2, entry ? entry : "");
+ break;
+ case D_MISMATCH2:
+ printf("File %s%s is a regular file while file %s%s is a directory\n",
+- path1, entry ? entry : "", path2, entry ? entry : "");
++ path1, entry ? entry : "", path2, entry ? entry : "");
+ break;
+ case D_SKIPPED1:
+ printf("File %s%s is not a regular file or directory and was skipped\n",
+- path1, entry ? entry : "");
++ path1, entry ? entry : "");
+ break;
+ case D_SKIPPED2:
+ printf("File %s%s is not a regular file or directory and was skipped\n",
+- path2, entry ? entry : "");
++ path2, entry ? entry : "");
+ break;
+ }
+ }
+@@ -585,6 +687,7 @@ print_status(int val, char *path1, char
+ void
+ usage(void)
+ {
++
+ (void)fprintf(stderr,
+ "usage: diff [-abdilpqTtw] [-I pattern] [-c | -e | -f | -n | -u]\n"
+ " [-L label] file1 file2\n"
+diff -rupN jhagewood/diff/diff-orig/.svn/text-base/diff.h.svn-base jhagewood/diff/diff/.svn/text-base/diff.h.svn-base
+--- jhagewood/diff/diff-orig/.svn/text-base/diff.h.svn-base 2012-07-13 01:33:43.000000000 -0400
++++ jhagewood/diff/diff/.svn/text-base/diff.h.svn-base 2012-07-13 01:33:43.000000000 -0400
+@@ -48,6 +48,8 @@
+ #define D_NREVERSE 5 /* Reverse ed script with numbered
+ lines and no trailing . */
+ #define D_BRIEF 6 /* Say if the files differ */
++#define D_GF 7 /* Group format */
++#define D_LF 8 /* Line format */
+
+ /*
+ * Output flags
+@@ -75,9 +77,9 @@ struct excludes {
+ struct excludes *next;
+ };
+
+-extern int aflag, bflag, dflag, iflag, lflag, Nflag, Pflag, pflag, rflag,
+- 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;
+ extern char *start, *ifdefname, *diffargs, *label[2], *ignore_pats;
+diff -rupN jhagewood/diff/diff-orig/.svn/text-base/diffdir.c.svn-base jhagewood/diff/diff/.svn/text-base/diffdir.c.svn-base
+--- jhagewood/diff/diff-orig/.svn/text-base/diffdir.c.svn-base 2012-07-13 01:33:43.000000000 -0400
++++ jhagewood/diff/diff/.svn/text-base/diffdir.c.svn-base 2012-07-13 01:33:43.000000000 -0400
+@@ -20,14 +20,13 @@
+
+ #include <sys/cdefs.h>
+
+-#ifndef lint
+ #if 0
+-__RCSID("$OpenBSD: diffdir.c,v 1.32 2007/06/09 05:16:21 ray Exp $");
+-#else
+-__FBSDID("$FreeBSD$");
++#ifndef lint
++static char sccsid[] = "@(#)diffdir.c 8.1 (Berkeley) 6/6/93";
+ #endif
+ #endif /* not lint */
+-
++#include <sys/cdefs.h>
++__FBSDID("$FreeBSD$");
+ #include <sys/param.h>
+ #include <sys/stat.h>
+
+@@ -57,12 +56,12 @@ static void diffit(struct dirent *, char
+ void
+ diffdir(char *p1, char *p2)
+ {
+- struct dirent **dirp1, **dirp2, **dp1, **dp2;
+- struct dirent *dent1, *dent2;
+- size_t dirlen1, dirlen2;
+- char path1[MAXPATHLEN], path2[MAXPATHLEN];
+- char *dirbuf1, *dirbuf2;
+- int pos;
++ struct dirent **dirp1, **dirp2, **dp1, **dp2;
++ struct dirent *dent1, *dent2;
++ size_t dirlen1, dirlen2;
++ char path1[MAXPATHLEN], path2[MAXPATHLEN];
++ char *dirbuf1, *dirbuf2;
++ int pos;
+
+ dirlen1 = strlcpy(path1, *p1 ? p1 : ".", sizeof(path1));
+ if (dirlen1 >= sizeof(path1) - 1) {
+@@ -169,17 +168,16 @@ diffdir(char *p1, char *p2)
+ static struct dirent **
+ slurpdir(char *path, char **bufp, int enoentok)
+ {
+- char *buf, *ebuf, *cp;
+- size_t bufsize, have, need;
+- long base;
+- int fd, nbytes, entries;
+- struct stat sb;
+- struct dirent **dirlist, *dp;
++ char *buf, *ebuf, *cp;
++ size_t bufsize, have, need;
++ long base;
++ int fd, nbytes, entries;
++ struct stat sb;
++ struct dirent **dirlist, *dp;
+
+ *bufp = NULL;
+ if ((fd = open(path, O_RDONLY, 0644)) == -1) {
+ static struct dirent *dummy;
+-
+ if (!enoentok || errno != ENOENT) {
+ warn("%s", path);
+ return (NULL);
+@@ -191,19 +189,17 @@ slurpdir(char *path, char **bufp, int en
+ close(fd);
+ return (NULL);
+ }
+-
+ need = roundup(sb.st_blksize, sizeof(struct dirent));
+ have = bufsize = roundup(MAX(sb.st_size, sb.st_blksize),
+ sizeof(struct dirent)) + need;
+ ebuf = buf = emalloc(bufsize);
+-
+ do {
+ if (have < need) {
+- bufsize += need;
+- have += need;
+- cp = erealloc(buf, bufsize);
+- ebuf = cp + (ebuf - buf);
+- buf = cp;
++ bufsize += need;
++ have += need;
++ cp = erealloc(buf, bufsize);
++ ebuf = cp + (ebuf - buf);
++ buf = cp;
+ }
+ nbytes = getdirentries(fd, ebuf, have, &base);
+ if (nbytes == -1) {
+@@ -255,8 +251,8 @@ slurpdir(char *path, char **bufp, int en
+ static int
+ dircompare(const void *vp1, const void *vp2)
+ {
+- struct dirent *dp1 = *((struct dirent **) vp1);
+- struct dirent *dp2 = *((struct dirent **) vp2);
++ struct dirent *dp1 = *((struct dirent **) vp1);
++ struct dirent *dp2 = *((struct dirent **) vp2);
+
+ return (strcmp(dp1->d_name, dp2->d_name));
+ }
+@@ -267,7 +263,7 @@ dircompare(const void *vp1, const void *
+ static void
+ diffit(struct dirent *dp, char *path1, size_t plen1, char *path2, size_t plen2)
+ {
+- int flags = D_HEADER;
++ int flags = D_HEADER;
+
+ strlcpy(path1 + plen1, dp->d_name, MAXPATHLEN - plen1);
+ if (stat(path1, &stb1) != 0) {
+diff -rupN jhagewood/diff/diff-orig/.svn/text-base/diffreg.c.svn-base jhagewood/diff/diff/.svn/text-base/diffreg.c.svn-base
+--- jhagewood/diff/diff-orig/.svn/text-base/diffreg.c.svn-base 2012-07-13 01:33:43.000000000 -0400
++++ jhagewood/diff/diff/.svn/text-base/diffreg.c.svn-base 2012-07-13 01:33:43.000000000 -0400
+@@ -62,15 +62,13 @@
+ * @(#)diffreg.c 8.1 (Berkeley) 6/6/93
+ */
+
+-#include <sys/cdefs.h>
+-
+-#ifndef lint
+ #if 0
+-__RCSID("$OpenBSD: diffreg.c,v 1.70 2007/09/11 15:47:17 gilles Exp $");
+-#else
+-__FBSDID("$FreeBSD");
++#ifndef lint
++static char sccsid[] = "@(#)diffreg.c 8.1 (Berkeley) 6/6/93";
+ #endif
+ #endif /* not lint */
++#include <sys/cdefs.h>
++__FBSDID("$FreeBSD$");
+
+ #include <sys/param.h>
+ #include <sys/stat.h>
+@@ -90,6 +88,14 @@ __FBSDID("$FreeBSD");
+ #include "diff.h"
+ #include "pathnames.h"
+
++#ifdef ST_MTIM_NSEC
++# define TIMESPEC_NS(timespec) ((timespec).ST_MTIM_NSEC)
++#else
++# define TIMESPEC_NS(timespec) 0
++#endif
++
++#define MAX_CHECK 768
++
+ /*
+ * diff - compare two files.
+ */
+@@ -196,7 +202,7 @@ static void change(char *, FILE *, char
+ static void sort(struct line *, int);
+ static void print_header(const char *, const char *);
+ static int ignoreline(char *);
+-static int asciifile(FILE *);
++static int istextfile(FILE *);
+ static int fetch(long *, int, int, FILE *, int, int);
+ static int newcand(int, int, int);
+ static int search(int *, int, int);
+@@ -294,13 +300,13 @@ u_char cup2low[256] = {
+ int
+ diffreg(char *ofile1, char *ofile2, int flags)
+ {
+- char *file1 = ofile1;
+- char *file2 = ofile2;
+- FILE *f1 = NULL;
+- FILE *f2 = NULL;
+- int rval = D_SAME;
+- int i, ostdout = -1;
+- pid_t pid = -1;
++ char *file1 = ofile1;
++ char *file2 = ofile2;
++ FILE *f1 = NULL;
++ FILE *f2 = NULL;
++ int rval = D_SAME;
++ int i, ostdout = -1;
++ pid_t pid = -1;
+
+ anychange = 0;
+ lastline = 0;
+@@ -353,7 +359,6 @@ diffreg(char *ofile1, char *ofile2, int
+ status |= 2;
+ goto closem;
+ }
+-
+ switch (files_differ(f1, f2, flags)) {
+ case 0:
+ goto closem;
+@@ -365,7 +370,7 @@ diffreg(char *ofile1, char *ofile2, int
+ goto closem;
+ }
+
+- if (!asciifile(f1) || !asciifile(f2)) {
++ if (!istextfile(f1) || !istextfile(f2)) {
+ rval = D_BINARY;
+ status |= 1;
+ goto closem;
+@@ -477,8 +482,8 @@ closem:
+ static int
+ files_differ(FILE *f1, FILE *f2, int flags)
+ {
+- char buf1[BUFSIZ], buf2[BUFSIZ];
+- size_t i, j;
++ char buf1[BUFSIZ], buf2[BUFSIZ];
++ size_t i, j;
+
+ if ((flags & (D_EMPTY1|D_EMPTY2)) || stb1.st_size != stb2.st_size ||
+ (stb1.st_mode & S_IFMT) != (stb2.st_mode & S_IFMT))
+@@ -503,9 +508,9 @@ files_differ(FILE *f1, FILE *f2, int fla
+ static FILE *
+ opentemp(const char *file)
+ {
+- char buf[BUFSIZ], *tempdir, tempfile[MAXPATHLEN];
+- ssize_t nread;
+- int ifd, ofd;
++ char buf[BUFSIZ], *tempdir, tempfile[MAXPATHLEN];
++ ssize_t nread;
++ int ifd, ofd;
+
+ if (strcmp(file, "-") == 0)
+ ifd = STDIN_FILENO;
+@@ -541,7 +546,7 @@ opentemp(const char *file)
*** DIFF OUTPUT TRUNCATED AT 1000 LINES ***
More information about the svn-soc-all
mailing list