TASK STATUS NOTE --unified GNU compatibility COMPLETE Fixed timestamp. --context GNU compatibility COMPLETE Fixed timestamp, will test more. --ignore-blank-lines IN PROGRESS Was already implemented in check(), but has weird outputs. --left-column COMPLETE Because side-by-side mode is executed by sdiff, option is simply passed to sdiff. --show-function-line INCOMPLETE --unidirectional-new-file INCOMPLETE --normal COMPLETE Sets format to D_NORMAL in getopt_long(). --suppress-common-lines COMPLETE Because side-by-side mode is executed by sdiff, option is simply passed to sdiff. --GTYPE-group-format IN PROGRESS Added options for various GTYPEs. --line-format IN PROGRESS Added new-line-format, old-line-format, and unchanged-line-format for compatibility --LTYPE-line-format INCOMPLETE --from-file COMPLETE Checks for flag then calls diffreg() with input files diff'd against optarg. --to-file COMPLETE Checks for flag then calls diffreg() with optarg diff'd against input files. --horizon-lines INCOMPLETE --speed-large-file INCOMPLETE --ignore-tab-expansion IN PROGRESS Functionality implemented in check(), needs debugging. (Same problem as --ignore-blank-lines?) --width INCOMPLETE --help COMPLETE Fix non-ascii character diffs COMPLETE Changed name of asciifile() to istextfile() and detects if file is binary. Test script COMPLETE Support for zdiff IN PROGRESS Needs testing. Notes: - When using text files with non-ascii characters, diff will interpret them as binary files and output "Files [file1] and [file2] differ." Very important compatibility problem with GNU diff, which will diff files that aren't strictly ascii. - Error is associated with asciifile() in diffreg.c - FIX: Changed name of asciifile() to istextfile() (more appropriate), and instead of checking if every character is ASCII, it checks the first 32kb of data in the file for a null character. If a null character is found, diff assumes that the file is a text file. - With some files, modification times displayed in the timestamp for file1 are different than the time outputted by GNU diff. - The -ignore-*-* options need some work. - BUG: BSD diff seg faults when another longopt is used with '--side-by-side'. FIX: When passing args to sdiff for side-by-side mode, only the short option '-y' was excluded. Added '--side-by-side' as an exception also. - --ignore-*-* options -WORKING --ignore-all-space --ignore-case --ignore-file-name-case --ignore-matching-lines --ignore-space-change -NOT WORKING --ignore-blank-lines --ignore-tab-expansion - line formats: %l Only includes contents of a line, excluding trailing new line. %L Only includes contents of a line, including trailing new line. %% Stand for '%' %c'C' Where C is a character. %c'\O' where O is a string of 1, 2, or 3 octal digits, stands for the character with octal code O. Fn Where n is: -'e' -'f' -'l' -'m' -'n' -'E, F, L, M, N' - group formats: %< Stands for the lines from the first file, including trailing new lines. %> Stands for the lines from the second file, including trailing new lines. %= Stands for lines common to both files, including trailing new lines. %% Stands for '%' %c'C' Where C is a character. %c'\O' where O is a string of 1, 2, or 3 octal digits, stands for the character with octal code O. Fn Where n is: -'e' -'f' -'l' -'m' -'n' -'E, F, L, M, N' - gdb output for error in zdiff integration: GNU gdb 6.1.1 [FreeBSD] Copyright 2004 Free Software Foundation, Inc. GDB is free software, covered by the GNU General Public License, and you are welcome to change it and/or distribute copies of it under certain conditions. Type "show copying" to see the conditions. There is absolutely no warranty for GDB. Type "show warranty" for details. This GDB was configured as "amd64-marcel-freebsd"... (gdb) run 1.txt 2.txt Starting program: /usr/home/jesse/Documents/diff/zdiff 1.txt 2.txt Program received signal SIGBUS, Bus error. 0x0000000800b5ead8 in getdtablesize () from /lib/libc.so.7 (gdb) list 197 198 static void set_argstr(char **, char **); 199 static void usage(void); 200 static void push_excludes(char *); 201 static void push_ignore_pats(char *); 202 static void read_excludes_file(char *); 203 204 int 205 main(int argc, char **argv) 206 { (gdb) where #0 0x0000000800b5ead8 in getdtablesize () from /lib/libc.so.7 #1 0x0000000800b5ebfd in getdtablesize () from /lib/libc.so.7 #2 0x0000000800b5e6dd in f_prealloc () from /lib/libc.so.7 #3 0x0000000800b4282c in funopen () from /lib/libc.so.7 #4 0x0000000800b425ca in rewind () from /lib/libc.so.7 #5 0x0000000000403bef in istextfile (f=0x7fffffffdb85) at diffreg.c:1375 #6 0x000000000040615c in diffreg (ofile1=0x7fffffffdb85 "ocal/bintxt", ofile2=0x7fffffffdb8b "intxt", flags=Variable "flags" is not available. ) at diffreg.c:389 #7 0x0000000000402c7f in main (argc=2, argv=0x7fffffffd8b0) at diff.c:506