Dec 192017
 
Excellent file diff utility with ansi C source updated with makefile for Microsoft C 7.0 and Nmake.exe.
File VDIFF.ZIP from The Programmer’s Corner in
Category C Source Code
Excellent file diff utility with ansi C source updated with makefile for Microsoft C 7.0 and Nmake.exe.
File Name File Size Zip Size Zip Type
MAKEFILE 497 285 deflated
VDIFF.C 23784 4858 deflated
VDIFF.DOC 7709 3144 deflated

Download File VDIFF.ZIP Here

Contents of the VDIFF.DOC file


DIFF.DOC



Command line:
-------------

DIFF infile outfile [changebar_file] [options]

For VMS, you'll need to install DIFF as a foreign command as:

DIFF :== $diskname:[pathname]DIFF.EXE



Command line options:
---------------------

/BAR_COL=n
Selects the column in which the change bar will be placed. The
default is column 78. If column 0 is selected, the change bar
will be placed at the left edge of the document or source code,
moving text to the right if necessary. If a space or a tab is
the first character on the line, the alignment of the text should
not be affected. If a nonzero column is selected, the change bar
will be placed in the specified column if possible. If text
extends over the specified column, the change bar will be moved
as far to the right as is necessary not to overwrite text.

A "feature" of the change-bar algorithm is that it can recognize
and account for underlined text, at least the way Runoff and
WordStar underline for "generic" printer, but not tabs. Tabs are
counted as one column each. This produces amusing results on C
source code.

For best results, on document files choose a column to the right
of your text. On program source code with embedded tabs, choose
column 0. This is admittedly an area on which the program could
be improved. I needed the underline capability, and if the tab
expansion is added, the code in change_bar() gets uglier than it
already is, e.g. /BAR_COL=0

/TOP_SKIP=n
Used for processing formatted documents. Its primary reason for
being is to allow you to skip over the header line(s) in a
document. Header lines confuse DIFF if they are left in place
because DIFF doesn't know from chopped liver about headers unless
you tell it, and if the pagination changes between the old and
the new files, DIFF will cheerfully changebar every header. Be
sure to account for blank lines at the top of the page that
precede the header line(s). The default value of /TOP_SKIP is 0,
e.g. /TOP_SKIP=3.

/BOT_SKIP=n
Similar in use and purpose to the /TOP_SKIP option. It specifies
how many lines at the bottom of the page should be skipped.
Count lines up from the bottom, not down from the top. The
default value of /BOT_SKIP is 0, e.g. /BOT_SKIP=8.

/PAGE_LEN=n
Sets the length of a page in lines. The default value is 66
lines. A form-feed character will override the /PAGE_LEN value
and cause a new page to be started. DIFF needs to know the page
length in order to skip headers and footers if /TOP_SKIP and
/BOT_SKIP are specified. Also, the change summary lists changes
by page and line number. For nonpaginated text, such as program
source code, you should specify a value of /PAGE_LEN greater than
the number of lines in newfile so that the change summary line
numbers will correspond to file line numbers, e.g.
/PAGE_LEN=2000.

/UP_CASE, /NOUP_CASE
Controls whether or not the case of alphabetic characters is
significant when deciding if a line has changed. The default is
/NOUP_CASE, which means that the case of a letter is significant.
This is slightly faster than /UP_CASE, e.g. /UP_CASE.

/RE_SYNC=n
Controls how many lines must match between the two files after a
difference has been found before the two files are considered to
be back in sync. The default is five lines. Using a larger
number will make DIFF smarted when considering files that have a
lot of identical lines (such as BEGIN or END statements in
Pascal). Using a smaller number will make DIFF smarter when
considering a file that has a lot of small changes spaced closely
together. For text, a value of 2 or 3 is good. For source code,
a value of 5 is pretty good.

/OUTPUT=filename
Allows you to specify an output file for the change summary
listing. In MS-DOS, this is exactly equivalent to redirecting
standard output with the greater-than command-line option, and
you can use either way in MS-DOS. In VMS, this matches the VMS
standard redirection syntax. The default for /OUTPUT is
SYS$OUTPUT on VMS and the console on MS-DOS, but this can be
redirected as a command option, e.g. /OUTPUT=FILE1.SUM.

/BLANKS, /NOBLANKS
Lets you make blanks lines (for my purposes, a blank line
contains only spaces or tabs) either significant or
insignificant. This is most useful as it accounts for
conditionally paging and trivial source code prettying.

/LOOKAHEAD=n
Controls how far DIFF will look forward in both files to find a
rematch after it finds a difference. The default is 200 lines.
A larger value lets you process files in which several pages are
added or deleted between revisions. A smaller value runs much
faster and uses less memory. Resynchronization (in the general
case) is proportional to the square of /LOOKAHEAD. This value
also affects the amount of memory the program uses.

/SKIP1
Allows you to specify a number of pages to skip in the two files
before starting the compare. This is most useful when skipping
tables of contents, in which the page numbers may change but
nobody cares. The default for /SKIP1 is 0 pages. The /SKIP1
option sets the page-skip values for both newfile and oldfile.

/SKIP2
Same as /SKIP1, except that it only affects the page-skip value
for oldfile. Because /SKIP1 affects both files, the /SKIP2
option must appear to the right of /SKIP1 on the command line to
have any effect. The two option are provided because the tables
of contents may be of different lengths. There are probably
other reasons why /SKIP2 needs to be there, but I can't think of
any right now.

/TRACE
Conditionally compiled and turns on function tracing.


Error Messages
--------------

Error: Must specify two files
This occurs if the command line does not contain at least two
file names.

Out of Memory
This error occurs if a large look-ahead is specified and/or if
huge sections of text differ between the two files.

ERROR - lost sync in file at page line
After a difference was located, DIFF could not find where the
files became synchronized. To correct, increase the value for
/LOOKAHEAD. The page/line reported is the start of the point in
newfile at which the difference was first detected.

Error: Can't open
DIFF was unable to open (for reading) one of the input files. Be
sure that the file and path name are correct and that you have
read privilege for that file. It may be caused by a forgotten
slash (/) on an option that made DIFF interpret it a file name.

Error: Can't create
DIFF was unable to create the optional output change-bar file.
Be sure that the name is a legal one and that you have write
privilege for the directory in which the name is to be placed.
Could be a forgotten slash, too.

ERROR in option


 December 19, 2017  Add comments

Leave a Reply