FC Ver. 3.0 Copyright (c) 1989-1994 Mike Albert July 1994 1 INTRODUCTION FC compares two text files and lists the differences between them line by line. FC provides the following benefits: o FC shows word by word differences between lines that have changed. o FC lets you do multiple comparisons in one run using MS-DOS- or Unix-style wild cards. o FC never gets confused or "unsynchronized" (as some comparison programs can). o FC always finds the smallest set of differences between files, and never misses matching lines. o FC lets you list changes in ways that make sense to you by providing multiple display and comparison options. You can also customize FC to use your favorite options automatically. o FC helps "C" programmers merge program changes. FC can compare two "C" programs containing separate sets of changes, and combine them automatically to make a single program. (See my program FCMERGE to merge two sets of changes made to an original file.) o FC can act as a filter to pass lines added to, deleted from, or unchanged from a reference file. If you're familiar with earlier versions of FC, look at section 7 to learn about the enhancements. FC can be used on any IBM-compatible computer. Any display adapter that provides 80 character lines, including those with more than 25 lines per screen, will work correctly. FC runs under MS-DOS versions 2.0 and later, but 3.0 or later is required to customize the default options. The amount of memory required is dependent on file size. 120K is enough for small files, while up to 450K is needed for large ones. Files containing up to 16,300 lines can be compared. Note that recent versions of MS-DOS contain a file comparison program that is also named FC. To ensure that you get this FC instead of the MS-DOS one, make sure that the directory containing this FC appears earlier in your path statement than the directory that contains your MS-DOS files. - 1 - 2 OPERATION To list the differences between two ASCII text files line by line: fc file1 file2 options Changes to file1 to make file2 are listed. Wild-card characters (described in section 3) can be used to do multiple comparisons, and file redirection (via the "<" or "|" command line options) can be used to specify file1. File redirection (via the ">" or "|" command line options) can also be used to direct the output to a file. The options are: -a list all lines (whether different or the same) -s list only lines that are the same -w ignore white space differences in lines when comparing -b don't list redundant blank lines -k ignore case differences (i.e. upper vs. lower) when comparing -f list using an alternate format that's useful for editing -o treat oldest file (instead of first file on the command line) as original (i.e. "from") file -c show context for changes: list up to unchanged lines as changed when that's clearer -n show context for changes: list unchanged lines before and after all changed lines -d show differences between changed lines word by word - = 1 shows minor differences, 10 shows all -t tab interval is characters -i show file equivalence only, -ib beeps when files are different -q display no messages when files are missing, the same, or skipped because of the -x option -x skip comparison of non-ASCII files -p copy lines verbatim with no headings: = "1" => lines in file1 only, "2" => lines in file2 only, "b" => lines in both (or combine, e.g. "12" for lines in one file only, but not both) -m merge two C programs -u update default options, -u- clears old defaults first >file3 put difference listing in file file3 A default option can be turned off with a minus sign, e.g. -m- turns off the -m option. You can also make an option affect only screen output or file output - an "s" after the option letter indicates screen output, while "f" indicates file output. E.g. -ds5 specifies that the -d5 option is used for screen output, but doesn't affect output to a file. This feature is useful when updating default options (with the -u option), because you may want different options for the two output devices. The following examples illustrate the use of FC: Compare two files in the current directory and display the differences on the screen: fc prog1.asc prog2.asc - 2 - Compare two files in different directories and drives, list all lines using the alternate listing format (ignoring white space differences when comparing), and put the difference listing in file prog2.dif: fc d:\backup\prog1.asc c:\tc\prog2.asc -a -f -w >prog2.dif Compare two files with the same names in different directories and drives, and display the differences using the alternate listing format: fc -f d:\backup\prog1.asc c:\tc Compare all files with ".c" extensions and the same names in two different directories: fc \backup\*.c \tc\*.* Extract the records added to file1.new (made from file1.old) into file2: fc file2 Merge two "C" programs to make a single combined program: fc dbupdat1.c dbupdat2.c -m >dbupdat3.c Change the default options for future invocations of FC to -w -c -b for output to either output device, and -d5 for output to the screen: fc -u- -w -c -b -ds5 Turn off the -w default option (which was previously set) for output to a file, but leave it on for screen output: fc -u -wf- 3 DETAILED OPERATION The arguments to FC (files and options) can be supplied in any order. The options work as follows: -a All: FC normally lists only the lines that differ between the two files. With the -a option, matching lines are also listed. -s Same: With the -s option, only matching lines are listed. -w White space: FC normally lists lines as different if any character in the line (except trailing white space) is different. With this option, differences in embedded white space (i.e. space and tab characters) are ignored. This is useful when you want to ignore differences in the layout of programs or documents. FC knows about "C" language syntax, - 3 - so that only white space that is ignored by a "C" compiler is ignored by FC. -b Blanks: FC normally lists all lines that have changed. With this option, redundant blank lines (i.e. more than one blank line in a row, or blank lines leading or trailing a group of changes) aren't shown. -k Case: FC normally treats upper and lower case letters as different when comparing lines. With this option, the upper and lower case versions of each letter are considered to be equivalent. -f Format: This option directs FC to list changes using a different format that doesn't indent, and shows the line numbers of changes in both files. This format is useful when directing the listing to a file used to re-create changes. -o Oldest: FC lists the changes made to one file to make a second file. Normally the first file on the command line is the original (i.e. "from") file, and the second file is the "to" file. With the -o option the order on the command line is ignored: the older file (based on the time/date stamp of the file) is the "from" file and the newer file is the "to" file. -c Context: When this option is used, FC shows context between changes to make the listing more readable. This is done by listing unchanged lines as changed when they are between changed lines. Use this option when you want to make the listing easier to understand, and don't care if a few unchanged lines are listed as changed. The value indicates how many unchanged lines can be listed as changed. An of 1 or 2 is usually sufficient. The default value of is 1. -n Context: When this option is used, FC shows lines surrounding changes to make the listing more understandable. This is done by listing unchanged lines before and after each change. -d Differences: Show differences between changed lines word by word. If the listing is shown on the screen, differences are identified by reverse video. If the listing is directed to an output file, changes are enclosed in curly brackets (i.e. "{}"). The value of indicates which differences are shown - this is useful because showing the differences between totally different lines is confusing. An of 1 shows differences in lines that are only slightly different, while 10 shows differences between all lines. The default value of is 5. -t Tab interval: This option sets the tab interval used to expand tabs when comparing and listing lines. The default interval is 8. - 4 - -i Identity: FC normally lists line by line differences between the two files. With the -i option, FC compares the files byte by byte, and only indicates whether or not the files are identical. The files are considered identical only if they are the same length, and each byte of the first file equals the corresponding byte in the second. There is no limit on the size of the files you can compare when this option is used. -ib Identity beep: This option is identical to the -i option, except that FC also beeps when it finds nonidentical files. -q Quiet: FC normally displays a message indicating the result of each file comparison. With the -q option, FC displays no message when the files are equal, when the second file is missing, or when files are skipped because of the -x option. This is useful when you compare many files in one run, and are only interested in seeing changes. -x Exclude: FC normally compares all files that satisfy the file specifications on the command line. With the -x option, FC doesn't compare files that contain non-ASCII information. FC looks at the first few characters of a file to determine if it's ASCII: if any of the characters are not in the range hex 00 thru hex 7F, FC concludes that the file isn't ASCII. This is useful when you want to use wildcards to compare all ASCII files in a directory with those in another directory, but don't want to go to the effort of specifying only ASCII files. -p Pass through: FC normally produces a report that lists differences between two files (designed to be read by a person), but there are times when you want to produce a file for another program. The -p option is designed for this purpose. When the -p option is used, selected lines are copied to the output file directly, with no headings or informational lines added. The suboption selects the lines copied: 1 - copy lines only in the first file 2 - copy lines only in the second file b - copy only lines in both files. These suboptions can be combined to select more than one group of lines, e.g. -p12 copies lines that are in one file or the other, but not both. -m Merge format: FC merges two "C" programs into a single program when this option is used. The new file can be compiled as the first program, the second program, or the combination of the two. When you #define the symbol FC_FILE_1, lines present in the first file are included. FC_FILE_2 does the same thing for the second file. If you specify both #define's, lines from both programs are included. This feature is particularly useful when combining two separate sets of changes to a program. You merge the two changed programs, examine the combined program, and remove the #ifdef's to complete the merge. In most cases the #ifdef's can be removed without incident. Where there are conflicts between the two sets of changes, - 5 - you can resolve them as needed. If you feel brave, you can compile the merged program with both #define's specified and see if it works. The merge does not always produce a compilable program: if the changes involve comments, #ifdef's, or multiline #define's, the #ifdef's inserted can conflict with them. -u Update: This feature updates the default options. You can use this option to make your favorite options the default, so you don't have to enter them every time you use FC. When you use the -u option, the current options (i.e. the current defaults plus options specified on the command line) become the default. The -u- option is like -u, except that the current defaults are ignored: only the options shown on the command line become the new defaults. FC can't update the options and compare files in the same run, so don't specify file names when you use the -u or -u- option. This feature works by changing the program (i.e. fc.exe) file. If you want, you can make multiple FC's with different default options by simply copying the fc.exe file with a new name and using the -u option to set the default values of the copy. This feature only works with MS-DOS version 3.0 or later. >file FC normally displays the difference listing on the screen. or This option directs the listing to the file you specify: >>file just enter the file name after the ">". If the file already exists, it is overwritten. The ">>" option can be used in the same way to append the listing to the end of a file, instead of overwriting it. The file names on the command line specify a drive and directory in the normal MS-DOS manner. If no drive is specified, FC looks for files on the current drive. If no directory is specified, FC looks in the current directory. If you specify a directory or drive (without a file name and extension) for either the first or second name, FC acts as though you specified a file and extension of "*.*". You can use the standard MS-DOS wild-card characters to compare multiple files. When FC finds wild-card characters in the first file name, it performs a comparison for each matching file. The wild-card characters have the following meaning: ? match any single character * match zero or more characters E.g. if the files "abc", "bc", "ac", "axc", and "axyc" were in a directory, the name "a?c" would match "abc" and "axc". The name "a*c" would match these files plus "axyc" and "ac". Although MS-DOS only handles the "*" correctly when it is at the end of a field (e.g. "*a" matches all file names, not just those that end with an "a"), FC handles the "*" correctly in all cases. - 6 - A wild-card character in the second name means use one or more characters from the first file name (i.e. the actual name of the file, not the file name on the command line that may contain wild-card characters). The wild-card characters supported are: ? one character from corresponding position in first file name * same as "????????" E.g. assume that the first file name is "axyb". The following second file names would produce these actual file names: ?? ax ???? axyb ????? axyb ?f* afyb *f? axybf The following examples illustrate this: Compare all files with ".c" extensions and the same names in two different directories: fc \backup\*.c \tc Compare files fcupdate.c1 and fcupdate.c2: fc fcupdate.c1 *.c2 Compare all files in the current directory with ".c1" extensions with files that have the same names and ".c2" extensions in the same directory: fc *.c1 *.?2 Compare all files in current directory with files that have the same names on the diskette in drive b: fc . b: Compare all files with names starting with "a" and having a ".c" extension with files that have the same names in the directory "work" that is a subdirectory of the parent directory of the current directory: fc \backup\a*.c ..\work - 7 - You can also use Unix wild-card characters. The following characters are supported in the first file name: [s] matches a single character specified in s, e.g. [abcd] matches the characters "a", "b", "c", or "d" [s-t] matches a single character specified in the range from s to t, e.g. [a-d] matches the characters "a", "b", "c", or "d" [^s-t] reverses the effect of [s-t] by matching a single character not in the range from s to t, e.g. [^a-z] matches a single non-alphabetic character. The various [] forms can be combined, e.g.: [a-dz] matches "a", "b", "c", "d", and "z" [abx-z] matches "a", "b", "x", "y", and "z" [a-dgx-z] matches "a", "b", "c", "d", "g", "x", "y", "z" [^a-dgx-z] matches all characters except "a", "b", "c", "d", "g", "x", "y", "z". The other forms can also be combined, e.g.: ?[a-d] matches any single character followed by an "a", "b", "c", or "d" (e.g. "xa", "gd', but not "xx" or "xas") *[a-d] matches zero or more characters followed by an "a", "b", "c", or "d" (e.g. "xa", "xxxb", "c", but not "xx") ?[a-d]z* matches any single character, followed by an "a", "b", "c", or "d", followed by a "z", followed by zero or more characters (e.g. "xbz", "yaz123", but not "xxz" or "xbb123"). FC also supports the following wild-card character (that provides more capability than both MS-DOS and Unix) in the second name: + characters matching corresponding "*" in the first file name. E.g. assume that the first file name on the command line is "a*b" and the matching file is "axyb", so the "*" corresponds to "xy". The following second file names would produce these actual file names: + xy q+r qxyr ?+f* axyf - 8 - The two parts of the file name (i.e. the name before the "." and the extension after the ".") are each treated independently and in the same way. Note that wild-card characters can't be used in a directory name or drive specification, e.g. "?:/bin/fc.c" or "c:/*/fc.c" will not work. Here's a complicated example that shows everything together. Lets say you enter the following command: fc ?*[a-f]*.txt z+12+.* The first file name "?*[a-f]*.txt" would match file "assets.txt" like this: ÚÄÂÄÄÂÄÄÄÄÄÂÄÄÂÄÂÄÄÄ¿ ³?³* ³[a-f]³* ³.³txt³ ³ ³ ³ ³ ³ ³ ³ ³a³ss³ e ³ts³.³txt³ ÀÄÁÄÄÁÄÄÄÄÄÁÄÄÁÄÁÄÄÄÙ The second file name produced by combining "z+12+.*" and "assets.txt" would be zss12ts.txt, i.e.: ÚÄÂÄÄÂÄÄÂÄÄÂÄÂÄÄÄ¿ ³z³+ ³12³+ ³.³* ³ ³ ³ ³ ³ ³ ³ ³ ³z³ss³12³ts³.³txt³ ÀÄÁÄÄÁÄÄÁÄÄÁÄÁÄÄÄÙ The files you compare must contain ASCII text. Displayable characters with values above hex 7F will also be processed correctly. All characters except values 00, 07, and 08 (null, backspace, and bell) are passed through to the difference listing. Character value 09 (tab) is passed through with the -f, -m, and -p options, but expanded to spaces (as specified with the -t option) otherwise. FC expands tabs as specified in the -t option and removes trailing white space on each line before comparing. If two lines differ only in this regard, FC will report that they are the same. Other control characters (e.g. vertical tabs, page breaks) are not changed before comparing. Lines can end with carriage return characters (hex value 0D), new line characters (hex value 0A), or both characters together. FC ignores line ending characters when comparing, so identical lines with different ending characters are listed as unchanged. Lines in the difference listing always end with a carriage return followed by a new line. FC only processes lines of up to 2,000 characters. If FC encounters a longer line, it breaks it after the 2,000th character to make two separate lines. The preceding paragraphs that describe how characters and lines are compared and displayed don't pertain when the -i option (indicate file equivalence only) is used. With the -i option, files are compared byte by byte for equality, and line differences aren't listed. - 9 - If you display the difference listing on the screen, you can control the scrolling. When FC is scrolling, pressing any key makes it pause. When it pauses, you can use the following keys: Enter Show another full screen space Show one more line s Scroll continuously ESC Exit the program You can also use the Ctrl-S and Ctrl-Q keys (the ASCII terminal convention) to regulate scrolling if you prefer. 4 FC MESSAGES When an error is detected, FC either stops immediately (for unrecoverable errors) or goes on to compare additional files (for recoverable errors when wild-cards are used). The error messages (listed in alphabetical order) are: Error: is not an ASCII file FC determined that file contains non-ASCII characters and consequently didn't compare the file. This only occurs when you specify the -x option. Error: is too small a value for option -: the lower limit is FC found a value () specified for option that is too small. You must specify a value greater than or equal to . Error: is too large a value for option -: the limit is FC found a value () specified for option that is too large. You must specify a value less than or equal to . Error: argument - is invalid FC couldn't recognize the argument you specified on the command line (argument ). Check the list of arguments that FC accepts to determine what options you can use. You can list the options FC recognizes by typing "fc ?". Error: both - and - options specified together FC found two incompatible options ( and ) specified on the command line. You can only use one at a time. Error: couldn't update default options FC couldn't write to the program (i.e. fc.exe) file to update the default options. This happens when the fc.exe file is on a write-protected floppy disk, the file has been given the read- only attribute, you're using an MS-DOS version less than 3.0, or the file is on a network server and you don't have write privileges for the file. Error: fewer than two file names specified FC didn't find the names of two files to compare on the command line. You must specify two file names. - 10 - Error: file names can't be used with the -u option FC found file names specified on the command line with the -u or -u- option. You can't update default options and compare files at the same time. Error: file wasn't found FC couldn't find file . If you didn't specify a directory or drive, FC looked in the current directory and drive. Make sure you specify the correct file name, with the directory and drive if needed, on the command line. Error: more than two file names specified FC didn't find the names of two files to compare on the command line. If you forgot to specify the minus sign ("-") in front of an option, or put a space between the "-" and the option, FC interpreted it as a file name. You must specify two file names. Error: more than 16,300 lines in file File contains more than 16,300 lines. FC can only process files containing up to 16,300 lines. Your only option is to break your files into smaller files. Error: no files found at FC couldn't find any files in directory or drive . Make sure you specify the correct drive and directory on the command line. Error: no files match FC couldn't find any files that matched file name , which contains wild-card characters. Make sure you specify the correct file name on the command line. Error: not enough memory to process these files FC needs more memory to process these files than is available. FC will continue by comparing the remaining files if you specified multiple comparisons, otherwise it will terminate. The only way to correct this problem is to run on a machine with more memory, remove any memory-resident programs, or to split the file into smaller files. This problem only occurs when comparing large files on machines with small memory configurations. Error: not enough memory to process -q and -n option together FC needs more memory to process the -q and -n options than is available. FC will continue by comparing the remaining files if you specified multiple comparisons, otherwise it will terminate. To correct this problem remove the -q or -n option, run on a machine with more memory, remove any memory-resident programs, or to split the file into smaller files. Error: option letter in argument "-" is missing FC didn't find an option letter after the "-" on the command line. FC options are represented as a letter immediately following a "-", e.g. -p. Check the list of options that FC accepts to determine what option letters you can use. You can list the options FC recognizes by typing "fc ?" and "fc ??". - 11 - Error: output failed, disk probably full FC detected an error when writing a file. This only occurs when the difference listing is directed to a file with the ">" or ">>" options. This problem is usually caused by a full disk. Error: suboption of option - is wrong FC couldn't recognize the suboption specified with the option on the command line. Most suboptions are a single letter, e.g. suboption b of option i is specified as -ib. An example of the same suboption specified for screen display only is -isb. Check the list of options and suboptions that FC accepts to determine what you can use. You can list the options and suboptions FC recognizes by typing "fc ?" and "fc ??". Error: the - option is specified twice FC found two specifications for option on the command line. You must remove the extra one so FC can use the one you want. You can list the options and values FC recognizes by typing "fc ?" and "fc ??". Error: the - option value is wrong FC couldn't recognize the value specified with the option on the command line. Values may be one or two decimal digits, e.g. -t8 to specify a tab increment of 8. An example of a value specified for screen display only is -ds5. Check the list of options that FC accepts to determine what values you can use. You can list the options and values FC recognizes by typing "fc ?" and "fc ??". Error: the - option requires a value FC didn't find a value specified after the option on the command line, but one is required. Values may be one or two decimal digits, e.g. -t8 to specify a tab increment of 8. An example of a value specified for screen display only is -ds5. Check the list of options that FC accepts to determine what values you can use. You can list the options and values FC recognizes by typing "fc ?" and "fc ??". Error: the - option requires one or more suboptions FC didn't find a suboption specified after the option on the command line, but one is required. A suboption may be one or characters, e.g. -p1 to copy lines in file1 only. An example of a suboption specified for screen display only is -ps1. Check the list of options that FC accepts to determine what suboptions you can use. You can list the options and values FC recognizes by typing "fc ?" and "fc ??". Error: the following option - is wrong FC found something (i.e. ) following option on the command line, but that option doesn't accept a value or suboption. You can list the options FC recognizes by typing "fc ?" and "fc ??". When a warning occurs, FC continues processing subject to the condition noted in the message. The warning messages produced by FC are: - 12 - Warning: - default option ignored because - option specified FC found an option (argument ) on the command line that conflicts with default option . FC ignored the default option. Warning: - option ignored because it conflicts with - default option FC found an option (argument ) on the command line that conflicts with default option . FC ignored the option on the command line. Warning: not enough memory to show word differences in the following change FC needs more memory to list the word-by-word differences between a set of changed lines (as requested with the -d option) than is available. FC will not list word-by-word differences for this set of lines, but will with others. 5 LICENSING, WARRANTY, and REGISTRATION FC is distributed as shareware. I encourage you to try FC and share it with friends as long as: The FC program and this documentation file are not modified and are distributed together. FC is not provided as a part of any other product. No fees, beyond a reasonable fee for media, duplication, or downloading costs, are charged. FC is not used for commercial, government, or business purposes without registration. Each registration is for a single person or a single computer. If you find FC useful and decide to use it regularly, you are required to register. All registration payments will be donated to Oxfam America, an international development and disaster relief agency. It's a worthy charity that I've been supporting for many years. For more information on Oxfam see section 6. When you register you get the satisfaction of saving lives in Africa, Asia, and South America, and encourage me to produce more software at reasonable prices. You also get the following benefits: I'll send an updated version of FC to you at no additional cost. You can request this at any time. I'll do this once per registered user. I'll answer questions on FC and its use. You can contact me at the address shown below or via CompuServe mail. I'll make an attempt (but can't guarantee) to fix any problems you find. - 13 - Registration is $25. Please make your check payable to Oxfam America - I'll send your checks to Oxfam and record your registration information. I'll also accept original canceled checks or receipts from Oxfam that list you as the donor. Please send payments, registration information, and any other correspondence to: Mike Albert P. O. Box 535 Bedford, MA 01730 I can also be reached via CompuServe mail; my userid is [70325,1134]. Anyone can order the latest version of FC directly from me for a fee of $5.00. Just send the order (make sure it contains your mailing address) with your check to the above address. You'll receive a 5 1/4 inch 360Kb floppy disk containing the executable and documentation files. If you need other formats (5 1/4 inch 1.2Mb or 3 1/2 inch 720Kb or 1.44Mb) I can provide them. I'll also include other shareware products I produce. If you live outside North America, please send extra money for the increased postage. I welcome all comments and suggestions concerning FC. I'd like to know how you are using FC, where you obtained it, and what problems, bugs, or weaknesses you find. If you tell me about enhancements or changes you're interested in, I'll make an effort to provide them. This program is provided "as is" without warranty of any kind, either express or implied, but not limited to the implied warranties of merchantability or fitness for a particular purpose. The entire risk as to the results and performance of the program is assumed by the user. Should the program prove defective, the user assumes the entire cost of all necessary servicing, repair, or correction. 6 OXFAM AMERICA As stated in Oxfam literature, "Oxfam America is an international agency that funds self-help development projects and disaster relief in poor countries in Africa, Asia, and Latin America, and also prepares and distributes educational materials for people in the United States on the issues of development and hunger. The name "Oxfam" comes from the Oxford Committee for Famine Relief, founded in England in 1942. Oxfam America, based in Boston, was formed in 1970, and is one of seven autonomous Oxfams around the world (Great Britain, Australia, Belgium, Canada, Quebec, Hong Kong and the United States). Oxfam is a nonsectarian, nonprofit agency that neither seeks or accepts U.S. government funds. All contributions are tax-deductible to the extent permitted by law." For more information, you can phone Oxfam at 617-482-1211, or write to them at: Oxfam America 26 West Street Boston, MA 02111-1206 - 14 - 7 FC REVISION HISTORY FC version 3.0 - 7/24/94 Added -p option to support use as a filter (i.e. to pass selected lines to another program). Added support for input file redirection. Added -o option to select oldest file (instead of first file named on the command line) as "from" file. Added -n option to show lines before and after changes. Added -q option to suppress messages when files compared are equal or the second file is missing. Added -x option to skip comparison of non-ASCII files. Fixed minor errors. FC version 2.7 - 9/25/92 Fixed occasional malfunction in -c option processing. Improved display format. Updated documentation to show new mailing address and CompuServe contact information. FC version 2.6 - 6/11/91 Corrected minor problems. FC version 2.5 - 5/23/91 Added -i and -ib options to test if files are equivalent. Fixed problem processing directories with extensions. Improved warning messages and error checking. Ensured that spurious keystrokes are ignored during screen display. FC version 2.4 - 1/28/91 Added support of output to screens with more than 25 lines. Fixed minor errors. - 15 - FC version 2.3 - 12/30/90 Added -k option to ignore case differences when comparing lines. FC version 2.2 - 6/5/90 Increased the speed: some comparisons take only 60% as long as previous versions. Fixed a problem displaying per word changes in very long lines (around 2000 characters). Fixed a problem that occurred when '.' was used to indicate a directory. Fixed error in handling Ctrl-C when display scrolling is paused. FC version 2.1 - 4/29/90 Altered the difference computation for word changes within lines to pick more intuitive changes. In some cases there's more than one set of minimal changes. Version 2.0 could pick differences that were minimal, but difficult to understand. Increased the speed. Fixed a problem in which characters with values above 127 were sometimes treated as spaces when comparing. Fixed a minor formatting problem with the difference listing produced with the -m option. Fixed a minor problem that occurred when another program invoked FC and input redirection was used. FC version 2.0 - 3/21/90 Added -d option to show word-by-word differences between changed lines. Added -m option to merge two "C" source programs. Added comparison of multiple files in a single run: this is invoked by specifying wild-card characters in file names. Added -w option to ignore white space differences when comparing. Added -b option to not show redundant blank lines in difference listing. Added -c option to show changes in context. Added -u option to let the user set default options. - 16 - Added -f option to produce a new format for the difference listing. Increased the speed: some comparisons take only half the time of the previous version. Added separate sets of options that are selected based on the output device, i.e. the screen or a redirected output file. Altered the difference computation to pick more intuitive changes. In some cases there's more than one set of minimal changes. Previous FC versions could pick differences that were minimal, but difficult to understand. Added support of Ctrl-S and Ctrl-Q to suspend and resume display scrolling. Added support of files that use carriage return characters (instead of new line characters) to end lines. FC version 1.3 - 7/10/89 Corrected problem in which matching lines occasionally were listed as different. Added -s option to list only lines that match. FC version 1.2 - 3/20/89 Increased speed. Increased number of lines that can be compared: from 8,000 to 16,300. Increased maximum line length from 1000 to 2000 characters. Added display of characters with values above 7F. This is particularly useful for non-English text. Fixed bug that occurred when processing a very large (around 8,000 line) file: FC would incorrectly report that there was insufficient memory to process the file. Removed testing for Ctrl-Z (MSDOS end of file marker) in the middle of a file: Ctrl-Z is now compared and displayed just like other characters. FC version 1.1 - 2/16/89 Added documentation (that you're reading now). Added interactive control of screen display. Changed informational and usage messages displayed by program. - 17 - Corrected problem that occurred when long lines were displayed. Added accept of Ctrl-C during file read. FC version 1.0 - 1/9/89 Initial release of FC program. - 18 -