*nix Documentation Project
·  Home
 +   man pages
·  Linux HOWTOs
·  FreeBSD Tips
·  *niX Forums

  man pages->IRIX man pages -> odiff (1)              
Title
Content
Arch
Section
 

Contents


ODIFF(1)							      ODIFF(1)


NAME    [Toc]    [Back]

     odiff - differential file and directory comparator

SYNOPSIS    [Toc]    [Back]

     odiff [-lrs] [-Sname] [-cefhn] [-xpat] [-biwt] dir1 dir2
     odiff [-cefhn] [-biwt] file1 file2
     odiff [-Dstring] [-biw] file1 file2

DESCRIPTION    [Toc]    [Back]

     This used to be the diff command.	The current diff command is a port of
     GNU diff, and is upward compatible	with this odiff.

     If	both arguments are directories,	odiff sorts the	contents of the
     directories by name, and then runs	the regular file odiff algorithm
     (described	below) on text files which are different.  Binary files	which
     differ, common subdirectories, and	files which appear in only one
     directory are listed.  Options when comparing directories are:

     -l	  long output format; each text	file odiff is piped through pr(1) to
	  paginate it, other differences are remembered	and summarized after
	  all text file	differences are	reported.

     -r	  causes application of	odiff recursively to common subdirectories
	  encountered.

     -s	  causes odiff to report files which are the same, which are otherwise
	  not mentioned.

     -Sname
	  starts a directory odiff in the middle beginning with	file name.

     -xpat
	  adds pat to a	list of	regular	expressions.  There can	be several
	  -xpat	options.  Any directory	or file	name matching one of the
	  patterns is skipped.	The special characters available in the
	  pattern are defined in regcmp(3X), and are similar to	those used in
	  ed and sed.  For example, the	following command will ignore all
	  "hidden" files and all RCS archives:

	       odiff -r	'-x^\.'	'-x,v$'	foo bar


     When run on regular files,	and when comparing text	files which differ
     during directory comparison, odiff	tells what lines must be changed in
     the files to bring	them into agreement.  Except in	rare circumstances,
     odiff finds a smallest sufficient set of file differences.	 If neither
     file1 nor file2 is	a directory, then either may be	given as `-', in which
     case the standard input is	used.  If file1	is a directory,	then a file in
     that directory whose file-name is the same	as the file-name of file2 is
     used (and vice versa).  If	both file1 and file2 are directories, then
     files (or files and directories with -r) with identical names are
     compared.



									Page 1






ODIFF(1)							      ODIFF(1)



     There are several options for output format; the default output format
     contains lines of these forms:

	  n1 a n3,n4
	  n1,n2	d n3
	  n1,n2	c n3,n4

     These lines resemble ed commands to convert file1 into file2.  The
     numbers after the letters pertain to file2.  In fact, by exchanging `a'
     for `d' and reading backward one may ascertain equally how	to convert
     file2 into	file1.	As in ed, identical pairs where	n1 = n2	or n3 =	n4 are
     abbreviated as a single number.

     Following each of these lines come	all the	lines that are affected	in the
     first file	flagged	by `<',	then all the lines that	are affected in	the
     second file flagged by `>'.

     Except for	-b, -w,	-i or -t which may be given with any of	the others,
     the following options are mutually	exclusive:

     -e	      produces a script	of a, c	and d commands for the editor ed,
	      which will recreate file2	from file1.  In	connection with	-e,
	      the following shell program may help maintain multiple versions
	      of a file.  Only an ancestral file ($1) and a chain of versionto-version
 ed scripts ($2,$3,...)	made by	odiff need be on hand.
	      A	`latest	version' appears on the	standard output.

		      (shift; cat $*; echo '1,$p') | ed	- $1

	      Extra commands are added to the output when comparing
	      directories with -e, so that the result is a sh(1) script	for
	      converting text files which are common to	the two	directories
	      from their state in dir1 to their	state in dir2.

     -f	      produces a script	similar	to that	of -e, not useful with ed, and
	      in the opposite order.

     -n	      produces a script	similar	to that	of -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 the RCS commands for storing
	      a	revision change.

     -c	      produces a diff with lines of context.  The default is to
	      present 3	lines of context and may be changed, e.g to 10,	by
	      -c10.  With -c the output	format is modified slightly:  the
	      output beginning with identification of the files	involved and
	      their creation dates and then each change	is separated by	a line
	      with a dozen *'s.	 The lines removed from	file1 are marked with
	      `- '; those added	to file2 are marked `+ '.  Lines which are
	      changed from one file to the other are marked in both files with
	      `! '.  Changes which lie within <context>	lines of each other
	      are grouped together on output.  (This is	a change from the



									Page 2






ODIFF(1)							      ODIFF(1)



	      previous ``diff -c'' but the resulting output is usually much
	      easier to	interpret.)

     -h	      does a fast, half-hearted	job.  It works only when changed
	      stretches	are short and well separated, but does work on files
	      of unlimited length.

     -Dstring causes odiff to create a merged version of file1 and file2 on
	      the standard output, with	C preprocessor controls	included so
	      that a compilation of the	result without defining	string is
	      equivalent to compiling file1, while defining string will	yield
	      file2.

     -b	      causes trailing blanks (spaces and tabs) to be ignored, and
	      other strings of blanks to compare equal.

     -w	      is similar to -b but causes whitespace (blanks and tabs) to be
	      totally ignored.	E.g., ``if ( a == b )''	will compare equal to
	      ``if(a==b)''.

     -i	      ignores the case of letters.  E.g., ``A''	will compare equal to
	      ``a''.

     -t	      will expand tabs in output lines.	 Normal	or -c output adds
	      character(s) to the front	of each	line which may foul 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.

FILES    [Toc]    [Back]

     /usr/bin/odiff    executable for odiff.  /bin/diff		executable for
     GNU derived diff.
     /usr/lib/diffh    executable used for the -h option.
     /tmp/d?????       working files.
     /bin/pr	       executed	by the -l option.

SEE ALSO    [Toc]    [Back]

      
      
     bdiff(1), cc(1), cmp(1), comm(1), diff(1),	diff3(1), ed(1), regcmp(3X)

DIAGNOSTICS    [Toc]    [Back]

     Exit status is 0 for no differences, 1 for	some differences, 2 for
     trouble.

BUGS    [Toc]    [Back]

     Editing scripts produced under the	-e or -f option	are naive about
     creating lines consisting of a single `.'.

     When comparing directories	with the -b, -w	or -i options specified, odiff
     first compares the	files a	la cmp(1), and then decides to run the odiff
     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	blank string or	case differences.



									Page 3






ODIFF(1)							      ODIFF(1)


PERFORMANCE    [Toc]    [Back]

     The GNU derived diff and older BSD	derived	odiff use different
     algorithms.  If the two files to be compared fit in main memory, then
     diff is faster, but if they don't fit, diff can cause severe paging.  The
     odiff algorithm uses a small, fixed amount	of memory even on large	files.
     The multiple pass algorithm of odiff is up	to two or three	times slower
     than diff,	on files that fit in memory, but can be	many times faster on
     files that	don't fit.

     The diff command automatically invokes the	odiff (searching for odiff
     along $PATH) on files that	have a combined	size larger than one-fourth of
     memory size, if no	GNU specific diff options were specified.  If that
     fails, then diff attempts the work	itself.

     You can force either variant: specifying -H always	gets diff, specifying
     odiff always gets odiff.


									PPPPaaaaggggeeee 4444
[ Back ]
 Similar pages
Name OS Title
diff3 IRIX 3-way differential file comparison
diff3 HP-UX 3-way differential file comparison
diff3 OpenBSD 3-way differential file comparison
xdiff IRIX X11/Motif based file comparator and merge tool.
acl_set_fd Tru64 Sets the ACL on the file or directory designated by the file descriptor
rename Tru64 Rename a directory or a file within a file system
mkdir OpenBSD make a directory file
dirent FreeBSD directory file format
VOP_RMDIR FreeBSD remove a file or directory
mkdir FreeBSD make a directory file
Copyright © 2004-2005 DeniX Solutions SRL
newsletter delivery service