Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 19 May 2012 03:38:03 +0000
From:      jhagewood@FreeBSD.org
To:        svn-soc-all@FreeBSD.org
Subject:   socsvn commit: r235974 - in soc2012/jhagewood: . diff diff3 gabor_diff mdocml-1.9.9 sdiff
Message-ID:  <20120519033803.68EB2106566B@hub.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: jhagewood
Date: Sat May 19 03:38:02 2012
New Revision: 235974
URL: http://svnweb.FreeBSD.org/socsvn/?view=rev&rev=235974

Log:
  First import.

Added:
  soc2012/jhagewood/Milestones
  soc2012/jhagewood/diff/
  soc2012/jhagewood/diff/Makefile
  soc2012/jhagewood/diff/diff   (contents, props changed)
  soc2012/jhagewood/diff/diff.1
  soc2012/jhagewood/diff/diff.1.gz   (contents, props changed)
  soc2012/jhagewood/diff/diff.c
  soc2012/jhagewood/diff/diff.h
  soc2012/jhagewood/diff/diffdir.c
  soc2012/jhagewood/diff/diffreg.c
  soc2012/jhagewood/diff/pathnames.h
  soc2012/jhagewood/diff3/
  soc2012/jhagewood/diff3/Makefile
  soc2012/jhagewood/diff3/diff3.1
  soc2012/jhagewood/diff3/diff3.ksh
  soc2012/jhagewood/diff3/diff3.sh
  soc2012/jhagewood/diff3/diff3prog.c
  soc2012/jhagewood/gabor_diff/
  soc2012/jhagewood/gabor_diff/Makefile
  soc2012/jhagewood/gabor_diff/diff.1
  soc2012/jhagewood/gabor_diff/diff.c
  soc2012/jhagewood/gabor_diff/diff.h
  soc2012/jhagewood/gabor_diff/diffdir.c
  soc2012/jhagewood/gabor_diff/diffreg.c
  soc2012/jhagewood/gabor_diff/pathnames.h
  soc2012/jhagewood/mdocml-1.9.9/
  soc2012/jhagewood/mdocml-1.9.9/ChangeLog.xsl   (contents, props changed)
  soc2012/jhagewood/mdocml-1.9.9/Makefile
  soc2012/jhagewood/mdocml-1.9.9/arch.c
  soc2012/jhagewood/mdocml-1.9.9/arch.in
  soc2012/jhagewood/mdocml-1.9.9/att.c
  soc2012/jhagewood/mdocml-1.9.9/att.in
  soc2012/jhagewood/mdocml-1.9.9/chars.c
  soc2012/jhagewood/mdocml-1.9.9/chars.h
  soc2012/jhagewood/mdocml-1.9.9/chars.in
  soc2012/jhagewood/mdocml-1.9.9/compat.c
  soc2012/jhagewood/mdocml-1.9.9/example.style.css
  soc2012/jhagewood/mdocml-1.9.9/external.png   (contents, props changed)
  soc2012/jhagewood/mdocml-1.9.9/html.c
  soc2012/jhagewood/mdocml-1.9.9/html.h
  soc2012/jhagewood/mdocml-1.9.9/index.css
  soc2012/jhagewood/mdocml-1.9.9/index.sgml
  soc2012/jhagewood/mdocml-1.9.9/lib.c
  soc2012/jhagewood/mdocml-1.9.9/lib.in
  soc2012/jhagewood/mdocml-1.9.9/libman.h
  soc2012/jhagewood/mdocml-1.9.9/libmandoc.h
  soc2012/jhagewood/mdocml-1.9.9/libmdoc.h
  soc2012/jhagewood/mdocml-1.9.9/main.c
  soc2012/jhagewood/mdocml-1.9.9/main.h
  soc2012/jhagewood/mdocml-1.9.9/man.3
  soc2012/jhagewood/mdocml-1.9.9/man.3.sgml
  soc2012/jhagewood/mdocml-1.9.9/man.7
  soc2012/jhagewood/mdocml-1.9.9/man.7.sgml
  soc2012/jhagewood/mdocml-1.9.9/man.c
  soc2012/jhagewood/mdocml-1.9.9/man.h
  soc2012/jhagewood/mdocml-1.9.9/man_action.c
  soc2012/jhagewood/mdocml-1.9.9/man_argv.c
  soc2012/jhagewood/mdocml-1.9.9/man_hash.c
  soc2012/jhagewood/mdocml-1.9.9/man_html.c
  soc2012/jhagewood/mdocml-1.9.9/man_macro.c
  soc2012/jhagewood/mdocml-1.9.9/man_term.c
  soc2012/jhagewood/mdocml-1.9.9/man_validate.c
  soc2012/jhagewood/mdocml-1.9.9/mandoc   (contents, props changed)
  soc2012/jhagewood/mdocml-1.9.9/mandoc.1
  soc2012/jhagewood/mdocml-1.9.9/mandoc.1.sgml
  soc2012/jhagewood/mdocml-1.9.9/mandoc.c
  soc2012/jhagewood/mdocml-1.9.9/mandoc_char.7
  soc2012/jhagewood/mdocml-1.9.9/mandoc_char.7.sgml
  soc2012/jhagewood/mdocml-1.9.9/manuals.7
  soc2012/jhagewood/mdocml-1.9.9/manuals.7.sgml
  soc2012/jhagewood/mdocml-1.9.9/mdoc.3
  soc2012/jhagewood/mdocml-1.9.9/mdoc.3.sgml
  soc2012/jhagewood/mdocml-1.9.9/mdoc.7
  soc2012/jhagewood/mdocml-1.9.9/mdoc.7.sgml
  soc2012/jhagewood/mdocml-1.9.9/mdoc.c
  soc2012/jhagewood/mdocml-1.9.9/mdoc.h
  soc2012/jhagewood/mdocml-1.9.9/mdoc_action.c
  soc2012/jhagewood/mdocml-1.9.9/mdoc_argv.c
  soc2012/jhagewood/mdocml-1.9.9/mdoc_hash.c
  soc2012/jhagewood/mdocml-1.9.9/mdoc_html.c
  soc2012/jhagewood/mdocml-1.9.9/mdoc_macro.c
  soc2012/jhagewood/mdocml-1.9.9/mdoc_strings.c
  soc2012/jhagewood/mdocml-1.9.9/mdoc_term.c
  soc2012/jhagewood/mdocml-1.9.9/mdoc_validate.c
  soc2012/jhagewood/mdocml-1.9.9/msec.c
  soc2012/jhagewood/mdocml-1.9.9/msec.in
  soc2012/jhagewood/mdocml-1.9.9/out.c
  soc2012/jhagewood/mdocml-1.9.9/out.h
  soc2012/jhagewood/mdocml-1.9.9/st.c
  soc2012/jhagewood/mdocml-1.9.9/st.in
  soc2012/jhagewood/mdocml-1.9.9/style.css
  soc2012/jhagewood/mdocml-1.9.9/term.c
  soc2012/jhagewood/mdocml-1.9.9/term.h
  soc2012/jhagewood/mdocml-1.9.9/tree.c
  soc2012/jhagewood/mdocml-1.9.9/vol.c
  soc2012/jhagewood/mdocml-1.9.9/vol.in
  soc2012/jhagewood/sdiff/
  soc2012/jhagewood/sdiff/Makefile
  soc2012/jhagewood/sdiff/common.c
  soc2012/jhagewood/sdiff/common.h
  soc2012/jhagewood/sdiff/edit.c
  soc2012/jhagewood/sdiff/extern.h
  soc2012/jhagewood/sdiff/sdiff.1
  soc2012/jhagewood/sdiff/sdiff.c
  soc2012/jhagewood/svn-commit.2.tmp
  soc2012/jhagewood/svn-commit.tmp

Added: soc2012/jhagewood/Milestones
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ soc2012/jhagewood/Milestones	Sat May 19 03:38:02 2012	(r235974)
@@ -0,0 +1,30 @@
+May 21 - June 17
+
+    Implement all missing features of mdocml, including legacy features.
+    Testing of mdocml. 
+
+June 18 - July 1
+
+    Complete diff
+    Debugging and testing of diff 
+
+July 2 - July 18
+
+    Mid-term evaluations.
+    Complete sdiff
+    Debugging and testing of sdiff 
+
+July 19 - August 5
+
+    Complete diff3
+    Debugging and testing of diff3 
+
+August 6 – August 12
+
+    Thouroughly test and benchmark all utilities. 
+
+August 13 - August 20
+
+    "Pencils down" period.
+    Finish cleaning up code and do any testing that might be left.
+    Write documentation. 

Added: soc2012/jhagewood/diff/Makefile
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ soc2012/jhagewood/diff/Makefile	Sat May 19 03:38:02 2012	(r235974)
@@ -0,0 +1,10 @@
+#	$FreeBSD$
+#	$OpenBSD: Makefile,v 1.2 2003/06/25 02:42:50 deraadt Exp $
+
+DEBUG_FLAGS+= -g
+
+PROG=	diff
+SRCS=	diff.c diffdir.c diffreg.c
+CFLAGS+=	-std=c99 -Wall -pedantic
+
+.include <bsd.prog.mk>

Added: soc2012/jhagewood/diff/diff
==============================================================================
Binary file. No diff available.

Added: soc2012/jhagewood/diff/diff.1
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ soc2012/jhagewood/diff/diff.1	Sat May 19 03:38:02 2012	(r235974)
@@ -0,0 +1,511 @@
+.\"	$FreeBSD$
+.\"	$OpenBSD: diff.1,v 1.33 2007/05/31 19:20:09 jmc Exp $
+.\"
+.\" Copyright (c) 1980, 1990, 1993
+.\"	The Regents of the University of California.  All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\"    notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\"    notice, this list of conditions and the following disclaimer in the
+.\"    documentation and/or other materials provided with the distribution.
+.\" 3. Neither the name of the University nor the names of its contributors
+.\"    may be used to endorse or promote products derived from this software
+.\"    without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\"
+.\"     @(#)diff.1	8.1 (Berkeley) 6/30/93
+.\"
+.Dd Apr 7, 2008
+.Dt DIFF 1
+.Os
+.Sh NAME
+.Nm diff
+.Nd differential file and directory comparator
+.Sh SYNOPSIS
+.Nm diff
+.Op Fl abdilpqTtw
+.Op Fl I Ar pattern
+.Oo
+.Fl c | e | f |
+.Fl n | u
+.Oc
+.Op Fl L Ar label
+.Ar file1 file2
+.Nm diff
+.Op Fl abdilpqTtw
+.Op Fl I Ar pattern
+.Op Fl L Ar label
+.Fl C Op Ar number
+.Ar file1 file2
+.Nm diff
+.Op Fl abdilqtw
+.Op Fl I Ar pattern
+.Fl D Ar string
+.Ar file1 file2
+.Nm diff
+.Op Fl abdilpqTtw
+.Op Fl I Ar pattern
+.Op Fl L Ar label
+.Fl U Ar number
+.Ar file1 file2
+.Nm diff
+.Op Fl abdilNPpqrsTtw
+.Op Fl I Ar pattern
+.Oo
+.Fl c | e | f |
+.Fl n | u
+.Oc
+.Bk -words
+.Op Fl L Ar label
+.Op Fl S Ar name
+.Op Fl X Ar file
+.Op Fl x Ar pattern
+.Ek
+.Ar dir1 dir2
+.Nm diff
+.Op Fl v
+.Sh DESCRIPTION
+The
+.Nm
+utility compares the contents of
+.Ar file1
+and
+.Ar file2
+and writes to the standard output the list of changes necessary to
+convert one file into the other.
+No output is produced if the files are identical.
+.Pp
+Output options (mutually exclusive):
+.Bl -tag -width Ds
+.It Fl C Op Ar number , Fl Fl context Ns = Ns Op Ar number
+Like
+.Fl c
+but produces a diff with
+.Ar number
+lines of context.
+.It Fl c
+Produces a diff with 3 lines of context.
+With
+.Fl c
+the output format is modified slightly:
+the output begins with identification of the files involved and
+their creation dates and then each change is separated
+by a line with fifteen
+.Li * Ns 's .
+The lines removed from
+.Ar file1
+are marked with
+.Sq \&-\ \& ;
+those added to
+.Ar file2
+are marked
+.Sq \+\ \& .
+Lines which are changed from one file to the other are marked in
+both files with
+.Sq !\ \& .
+Changes which lie within 3 lines of each other are grouped together on
+output.
+.It Fl D Ar string , Fl Fl ifdef Ns = Ns Ar string
+Creates a merged version of
+.Ar file1
+and
+.Ar file2
+on the standard output, with C preprocessor controls included so that
+a compilation of the result without defining
+.Ar string
+is equivalent to compiling
+.Ar file1 ,
+while defining
+.Ar string
+will yield
+.Ar file2 .
+.It Fl e , Fl Fl ed
+Produces output in a form suitable as input for the editor utility,
+.Xr ed 1 ,
+which can then be used to convert file1 into file2.
+.Pp
+Extra commands are added to the output when comparing directories with
+.Fl e ,
+so that the result is a
+.Xr sh 1
+script for converting text files which are common to the two directories
+from their state in
+.Ar dir1
+to their state in
+.Ar dir2 .
+.It Fl f
+Identical output to that of the
+.Fl e
+flag, but in reverse order.
+It cannot be digested by
+.Xr ed 1 .
+.It Fl n , Fl Fl rcs
+Produces a script similar to that of
+.Fl e ,
+but in the opposite order and with a count of changed lines on each
+insert or delete command.
+This is the form used by
+.Xr rcsdiff 1 .
+.It Fl q , Fl Fl brief
+Just print a line when the files differ.
+Does not output a list of changes.
+.It Fl U Op Ar number , Fl Fl unified Ns = Ns Op Ar number
+Like
+.Fl u
+but produces a diff with
+.Ar number
+lines of context.
+.It Fl u
+Produces a
+.Em unified
+diff with 3 lines of context.
+A unified diff is similar to the context diff produced by the
+.Fl c
+option.
+However, unlike with
+.Fl c ,
+all lines to be changed (added and/or removed) are present in
+a single section.
+.El
+.Pp
+Comparison options:
+.Bl -tag -width Ds
+.It Fl a ,  Fl Fl text
+Treat all files as
+.Tn ASCII
+text.
+Normally
+.Nm
+will simply print
+.Dq Binary files ... differ
+if files contain binary characters.
+Use of this option forces
+.Nm
+to produce a diff.
+.It Fl b , Fl Fl ignore-space-change
+Causes trailing blanks (spaces and tabs) to be ignored, and other
+strings of blanks to compare equal.
+.It Fl d , Fl Fl minimal
+Try very hard to produce a diff as small as possible.
+This may consume a lot of processing power and memory when processing
+large files with many changes.
+.It Fl I Ar pattern , Fl Fl ignore-matching-lines Ns = Ns Ar pattern
+Ignores changes, insertions, and deletions whose lines match the
+extended regular expression
+.Ar pattern .
+Multiple
+.Fl I
+patterns may be specified.
+All lines in the change must match some pattern for the change to be
+ignored.
+See
+.Xr re_format 7
+for more information on regular expression patterns.
+.It Fl i , Fl Fl ignore-case
+Ignores the case of letters.
+E.g.,
+.Dq A
+will compare equal to
+.Dq a .
+.It Fl L Ar label
+Print
+.Ar label
+instead of the first (and second, if this option is specified twice)
+file name and time in the context or unified diff header.
+.It Fl l , Fl Fl paginate
+Long output format; each text file
+.Nm diff Ns \'d
+is piped through
+.Xr pr 1
+to paginate it;
+other differences are remembered and summarized
+after all text file differences are reported.
+.It Fl p , Fl Fl show-c-function
+With unified and context diffs, show with each change
+the first 40 characters of the last line before the context beginning
+with a letter, an underscore or a dollar sign.
+For C source code following standard layout conventions, this will
+show the prototype of the function the change applies to.
+.It Fl T , Fl Fl initial-tab
+Print a tab rather than a space before the rest of the line for the
+normal, context or unified output formats.
+This makes the alignment of tabs in the line consistent.
+.It Fl t , Fl Fl expand-tabs
+Will expand tabs in output lines.
+Normal or
+.Fl c
+output adds character(s) to the front of each line which may screw up
+the indentation of the original source lines and make the output listing
+difficult to interpret.
+This option will preserve the original source's indentation.
+.It Fl w , Fl Fl ignore-all-space
+Is similar to
+.Fl b
+but causes whitespace (blanks and tabs) to be totally ignored.
+E.g.,
+.Dq if (\ \&a == b \&)
+will compare equal to
+.Dq if(a==b) .
+.El
+.Pp
+Directory comparison options:
+.Bl -tag -width Ds
+.It Fl N , Fl Fl new-file
+If a file is found in only one directory, act as if it was found in the
+other directory too but was of zero size.
+.It Fl P
+If a file is found only in
+.Ar dir2 ,
+act as if it was found in
+.Ar dir1
+too but was of zero size.
+.It Fl r , Fl Fl recursive
+Causes application of
+.Nm
+recursively to common sub7 directories encountered.
+.It Fl S Ar name , Fl starting-file Ns = Ns Ar name
+Re-starts a directory
+.Nm
+in the middle, beginning with file
+.Ar name .
+.It Fl s , Fl Fl report-identical-files
+Causes
+.Nm
+to report files which are the same, which are otherwise not mentioned.
+.It Fl X Ar file , Fl Fl exclude-from Ns = Ns Ar file
+Exclude files and subdirectories from comparison whose basenames match
+lines in
+.Ar file .
+Multiple
+.Fl X
+options may be specified.
+.It Fl x Ar pattern , Fl Fl exclude Ns = Ns Ar pattern
+Exclude files and subdirectories from comparison whose basenames match
+.Ar pattern .
+Patterns are matched using shell-style globbing via
+.Xr fnmatch 3 .
+Multiple
+.Fl x
+options may be specified.
+.It Fl v , Fl Fl version
+Print version ino.
+.El
+.Pp
+If both arguments are directories,
+.Nm
+sorts the contents of the directories by name, and then runs the
+regular file
+.Nm
+algorithm, producing a change list,
+on text files which are different.
+Binary files which differ,
+common subdirectories, and files which appear in only one directory
+are described as such.
+In directory mode only regular files and directories are compared.
+If a non-regular file such as a device special file or
+.Tn FIFO
+is encountered, a diagnostic message is printed.
+.Pp
+If only one of
+.Ar file1
+and
+.Ar file2
+is a directory,
+.Nm
+is applied to the non-directory file and the file contained in
+the directory file with a filename that is the same as the
+last component of the non-directory file.
+.Pp
+If either
+.Ar file1
+or
+.Ar file2
+is
+.Sq Fl ,
+the standard input is
+used in its place.
+.Ss Output Style
+The default (without
+.Fl e ,
+.Fl c ,
+or
+.Fl n
+.\" -C
+options)
+output contains lines of these forms, where
+.Va XX , YY , ZZ , QQ
+are line numbers respective of file order.
+.Pp
+.Bl -tag -width "XX,YYcZZ,QQ" -compact
+.It Li XX Ns Ic a Ns Li YY
+At (the end of) line
+.Va XX
+of
+.Ar file1 ,
+append the contents
+of line
+.Va YY
+of
+.Ar file2
+to make them equal.
+.It Li XX Ns Ic a Ns Li YY,ZZ
+Same as above, but append the range of lines,
+.Va YY
+through
+.Va ZZ
+of
+.Ar file2
+to line
+.Va XX
+of file1.
+.It Li XX Ns Ic d Ns Li YY
+At line
+.Va XX
+delete
+the line.
+The value
+.Va YY
+tells to which line the change would bring
+.Ar file1
+in line with
+.Ar file1 .
+.It Li XX,YY Ns Ic d Ns Li ZZ
+Delete the range of lines
+.Va XX
+through
+.Va YY
+in
+.Ar file1 .
+.It Li XX Ns Ic c Ns Li YY
+Change the line
+.Va XX
+in
+.Ar file1
+to the line
+.Va YY
+in
+.Ar file2 .
+.It Li XX,YY Ns Ic c Ns Li ZZ
+Replace the range of specified lines with the line
+.Va ZZ .
+.It Li XX,YY Ns Ic c Ns Li ZZ,QQ
+Replace the range
+.Va XX , Ns Va YY
+from
+.Ar file1
+with the range
+.Va ZZ , Ns Va QQ
+from
+.Ar file2 .
+.El
+.Pp
+These lines resemble
+.Xr ed 1
+subcommands to convert
+.Ar file1
+into
+.Ar file2 .
+The line numbers before the action letters pertain to
+.Ar file1 ;
+those after pertain to
+.Ar file2 .
+Thus, by exchanging
+.Ic a
+for
+.Ic d
+and reading the line in reverse order, one can also
+determine how to convert
+.Ar file2
+into
+.Ar file1 .
+As in
+.Xr ed 1 ,
+identical
+pairs (where num1 = num2) are abbreviated as a single
+number.
+.Sh ENVIRONMENT
+.Bl -tag -width TMPDIR
+.It Ev TMPDIR
+If the environment variable
+.Ev TMPDIR
+exists,
+.Nm
+will use the directory specified by
+.Ev TMPDIR
+as the temporary directory.
+.El
+.Sh FILES
+.Bl -tag -width /tmp/diff.XXXXXXXX -compact
+.It Pa /tmp/diff. Ns Ar XXXXXXXX
+Temporary file used when comparing a device or the standard input.
+Note that the temporary file is unlinked as soon as it is created
+so it will not show up in a directory listing.
+.El
+.Sh DIAGNOSTICS
+The
+.Nm
+utility exits with one of the following values:
+.Pp
+.Bl -tag -width Ds -compact -offset indent
+.It 0
+No differences were found.
+.It 1
+Differences were found.
+.It \*(Gt1
+An error occurred.
+.El
+.Sh SEE ALSO
+.Xr cmp 1 ,
+.Xr comm 1 ,
+.Xr diff3 1 ,
+.Xr ed 1 ,
+.Xr pr 1 ,
+.Xr sdiff 1 ,
+.Xr fnmatch 3 ,
+.Xr re_format 7
+.Sh STANDARDS
+The
+.Nm
+utility is compliant with the
+St -p1003.1-2004
+specification.
+.Pp
+The flags
+.Op Fl aDdIiLlNnPpqSsTtUuwXx
+are extensions to that specification.
+.Sh HISTORY
+A
+.Nm
+command appeared in
+.At v6 .
+.Sh BUGS
+When comparing directories with the
+.Fl b ,
+.Fl w
+or
+.Fl i
+options specified,
+.Nm
+first compares the files ala
+.Xr cmp 1 ,
+and then decides to run the
+.Nm
+algorithm if they are not equal.
+This may cause a small amount of spurious output if the files
+then turn out to be identical because the only differences are
+insignificant whitespace or case differences.

Added: soc2012/jhagewood/diff/diff.1.gz
==============================================================================
Binary file. No diff available.

Added: soc2012/jhagewood/diff/diff.c
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ soc2012/jhagewood/diff/diff.c	Sat May 19 03:38:02 2012	(r235974)
@@ -0,0 +1,599 @@
+/*-
+ * Copyright (c) 2003 Todd C. Miller <Todd.Miller@courtesan.com>
+ *
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ *
+ * Sponsored in part by the Defense Advanced Research Projects
+ * Agency (DARPA) and Air Force Research Laboratory, Air Force
+ * 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$");
+#endif
+#endif /* not lint */
+
+#include <sys/param.h>
+#include <sys/stat.h>
+
+#include <ctype.h>
+#include <err.h>
+#include <errno.h>
+#include <getopt.h>
+#include <signal.h>
+#include <stdarg.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+
+#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;
+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"
+
+
+/* Options which exceed manageable alphanumeric assignments */ 
+enum 
+{
+  OPT_IGN_FN_CASE = CHAR_MAX + 1,
+  OPT_NIGN_FN_CASE,
+  OPT_STRIPCR,
+  OPT_NORMAL,
+  OPT_LEFTC,
+  OT_SUPCL,
+  OPT_GTYPE,
+  OPT_LF,
+  OPT_LLF,
+  OPT_TSIZE,
+  OPT_UNINF,
+  OPT_FFILE,
+  OPT_TOFILE,
+  OPT_HLINES,
+  OPT_LFILES,
+  OPT_HELP,
+};
+
+
+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 */
+	{ "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' }, */
+	{ "forward-ed",			no_argument,		NULL,	'f' },
+	{ "ignore-matching-lines",	required_argument,	NULL,	'I' },
+	{ "ignore-case",		no_argument,		NULL,	'i' },
+	{ "label",			required_argument,	NULL,	'L' },
+	{ "paginate",			no_argument,		NULL,	'l' },
+	{ "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' },
+	{ "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 */
+	{ "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' }, 
+	{ 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",
+NULL,
+};
+char **help_strs = (char **)help_msg;
+
+void set_argstr(char **, char **);
+
+
+void usage(void);
+void push_excludes(char *);
+void push_ignore_pats(char *);
+void read_excludes_file(char *);
+
+int
+main(int argc, char **argv)
+{
+	char	*ep, **oargv;
+	long	 l;
+	int	 ch, lastch, gotstdin, prevoptind, newarg;
+	int	 oargc;
+
+	oargv = argv;
+	oargc = argc;
+	gotstdin = 0;
+
+	lastch = '\0';
+	prevoptind = 1;
+	newarg = 1;
+	while ((ch = getopt_long(argc, argv, OPTIONS, longopts, NULL)) != -1) {
+		switch (ch) {
+		case '0': case '1': case '2': case '3': case '4':
+		case '5': case '6': case '7': case '8': case '9':
+			if (newarg)
+				usage();	/* disallow -[0-9]+ */
+			else if (lastch == 'c' || lastch == 'u')
+				context = 0;
+			else if (!isdigit(lastch) || context > INT_MAX / 10)
+				usage();
+			context = (context * 10) + (ch - '0');
+			break;
+		case 'a':
+			aflag = 1;
+			break;
+		case 'b':
+			bflag = 1;
+			break;
+		case 'B':
+			Bflag = 1;
+			break;
+		case 'C':
+		case 'c':
+			format = D_CONTEXT;
+			if (optarg != NULL) {
+				l = strtol(optarg, &ep, 10);
+				if (*ep != '\0' || l < 0 || l >= INT_MAX)
+					usage();
+				context = (int)l;
+			} else
+				context = 3;
+			break;
+		case 'D':
+			format = D_IFDEF;
+			ifdefname = optarg;
+			break;
+		case 'd':
+			dflag = 1;
+			break;
+		case 'e':
+			format = D_EDIT;
+			break;
+		case 'f':
+			format = D_REVERSE;
+			break;
+		case 'h':
+			/* silently ignore for backwards compatibility */
+			break;
+		case 'I':
+			push_ignore_pats(optarg);
+			break;
+		case 'i':
+			iflag = 1;
+			break;
+		case 'L':
+			if (label[0] == NULL)
+				label[0] = optarg;
+			else if (label[1] == NULL)
+				label[1] = optarg;
+			else
+				usage();
+			break;
+		case 'l':
+			lflag = 1;
+			signal(SIGPIPE, SIG_IGN);
+			break;
+		case 'N':
+			Nflag = 1;
+			break;
+		case 'n':
+			format = D_NREVERSE;
+			break;
+		case 'P':
+			Pflag = 1;
+			break;
+		case 'p':
+			pflag = 1;
+			break;
+		case 'r':
+			rflag = 1;
+			break;
+		case 'q':
+			format = D_BRIEF;
+			break;
+		case 'S':
+			start = optarg;
+			break;
+		case 's':
+			sflag = 1;
+			break;
+		case 'T':
+			Tflag = 1;
+			break;
+		case 't':
+			tflag = 1;
+			break;
+		case 'U':
+		case 'u':
+			format = D_UNIFIED;
+			if (optarg != NULL) {
+				l = strtol(optarg, &ep, 10);
+				if (*ep != '\0' || l < 0 || l >= INT_MAX)
+					usage();
+				context = (int)l;
+			} else
+				context = 3;
+			break;
+		case 'v':
+			printf("FreeBSD diff 2.8.7\n");
+			exit(0);
+		case 'w':
+			wflag = 1;
+			break;
+		case 'X':
+			read_excludes_file(optarg);
+			break;
+		case 'x':
+			push_excludes(optarg);
+			break;
+		case 'y':
+			yflag = 1;
+			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; 
+		case OPT_STRIPCR:
+			strip_cr=1;
+			break;
+		case OPT_IGN_FN_CASE:
+			ignore_file_case = 1;
+			break;
+		case OPT_NIGN_FN_CASE:
+			ignore_file_case = 0;
+			break; 
+		case OPT_HELP:
+			for(;*help_strs;help_strs++) 
+			{
+				printf("%s\n", *help_strs);
+			}
+			exit(2);
+			break;
+		default:
+			usage();
+			break;
+		}
+		lastch = ch;
+		newarg = optind != prevoptind;
+		prevoptind = optind;
+	}
+	argc -= optind;
+	argv += optind;
+
+	if(yflag) {
+		/* remove y flag from args and call sdiff */
+		for(argv=oargv; argv && strcmp(*argv, "-y") != 0; argv++);
+		while(argv != &oargv[oargc]){
+			*argv=*(argv+1);
+			argv++;
+		}
+		oargv[0] = _PATH_SDIFF;
+		*argv= "\0";
+
+		execv(_PATH_SDIFF, oargv);
+		_exit(127);
+	}
+
+	/*
+	 * Do sanity checks, fill in stb1 and stb2 and call the appropriate
+	 * driver routine.  Both drivers use the contents of stb1 and stb2.
+	 */
+	if (argc != 2)
+		usage();
+	if (ignore_pats != NULL) {
+		char buf[BUFSIZ];
+		int error;
+
+		if ((error = regcomp(&ignore_re, ignore_pats,
+		    REG_NEWLINE | REG_EXTENDED)) != 0) {
+			regerror(error, &ignore_re, buf, sizeof(buf));
+			if (*ignore_pats != '\0')
+				errx(2, "%s: %s", ignore_pats, buf);
+			else
+				errx(2, "%s", buf);
+		}
+	}
+	if (strcmp(argv[0], "-") == 0) {
+		fstat(STDIN_FILENO, &stb1);
+		gotstdin = 1;
+	} else if (stat(argv[0], &stb1) != 0)
+		err(2, "%s", argv[0]);
+	if (strcmp(argv[1], "-") == 0) {
+		fstat(STDIN_FILENO, &stb2);
+		gotstdin = 1;
+	} else if (stat(argv[1], &stb2) != 0)
+		err(2, "%s", argv[1]);
+	if (gotstdin && (S_ISDIR(stb1.st_mode) || S_ISDIR(stb2.st_mode)))
+		errx(2, "can't compare - to a directory");
+	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");
+		diffdir(argv[0], argv[1]);
+	} else {
+		if (S_ISDIR(stb1.st_mode)) {
+			argv[0] = splice(argv[0], argv[1]);
+			if (stat(argv[0], &stb1) < 0)
+				err(2, "%s", argv[0]);
+		}
+		if (S_ISDIR(stb2.st_mode)) {
+			argv[1] = splice(argv[1], argv[0]);
+			if (stat(argv[1], &stb2) < 0)
+				err(2, "%s", argv[1]);
+		}
+		print_status(diffreg(argv[0], argv[1], 0), argv[0], argv[1],
+		    NULL);
+	}
+	exit(status);
+}
+
+void *
+emalloc(size_t n)
+{
+	void	*p;
+
+	if (n == 0)
+		errx(2, NULL);
+
+	if ((p = malloc(n)) == NULL)
+		errx(2, NULL);
+	return (p);
+}
+
+void *
+erealloc(void *p, size_t n)
+{
+	void	*q;
+
+	if (n == 0)
+		errx(2, NULL);
+	if (p == NULL)
+		q = malloc(n);
+	else
+		q = realloc(p, n);
+	if (q == NULL)
+		errx(2, NULL);
+	return (q);
+}
+
+int
+easprintf(char **ret, const char *fmt, ...)
+{
+	int	 len;
+	va_list	 ap;
+
+	va_start(ap, fmt);

*** DIFF OUTPUT TRUNCATED AT 1000 LINES ***



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