Change log for duff =================== Maintained since version 0.3.1. 2012-01-28 Camilla Berglund <elmindreda@elmindreda.org> * dufffile.c (compare_files): Removed superflous physical_flag test. * duff.h dufffile.c (init_file_list): Renamed from file_list_init. * duff.h dufffile.c (alloc_file): Renamed from file_list_alloc. * duff.h dufffile.c (file_list_empty): Renamed from empty_file_list. * duff.h dufffile.c (free_entry_list): Renamed from file_list_free. * duffdriver.c dufffile.c duffutil.c: Put non-static functions on top. * duffdriver.c (process_clusters): Initialized cluster index. * duffdriver.c (report_cluster): Made use of get_field_terminator. * duffutil.c (read_path): Made use of get_field_terminator. * duffutil.c (get_field_terminator): Added function. * duffutil.c (read_path): Removed limit on path length, updated signature. 2012-01-27 Camilla Berglund <elmindreda@elmindreda.org> * dufffile.c (compare_entry_contents): Made warnings take -q into account. * dufffile.c (get_file_sample): Tagged file INVALID on read error. * dufffile.c (compare_file_digests): Replaced for-loop with memcmp. * dufffile.c (get_file_sample, get_file_digest): Replaced pointer checks with status checks. * duff.h (Status): Added SAMPLED and HASHED values. * duffdriver.c (process_clusters): Added test for whether base item has entered INVALID state. * dufffile.c (get_file_sample, get_file_digest): Removed duplicate check for INVALID state. 2012-01-25 Camilla Berglund <elmindreda@elmindreda.org> * duff.h (Status): Removed unused DUPLICATE status. * duffdriver.c (process_file): Removed read permission check on files (credits to Kamal Mostafa). 2012-01-24 Camilla Berglund <elmindreda@elmindreda.org> * duff.h (HASH_BITS): Increased to 10. * duffdriver.c (print_terminator): Added function. * duff.h duffdriver.c dufffile.c (file_list_*): Renamed from entry_list_*. * duff.h duffdriver.c dufffile.c (free_file): Renamed from free_entry. * duff.h duffdriver.c dufffile.c (init_file): Renamed from fill_entry. * duff.h duffdriver.c dufffile.c duffutil.c (FileList): Renamed from EntryList. * duff.h duffdriver.c dufffile.c duffutil.c (File): Renamed from Entry. * dufffile.c: Renamed from duffentry.c. * duffdriver.c (has_recorded_directory): Renamed from has_recursed_directory. * duffdriver.c (DirList): Added array of Dir structs. * duffdriver.c (Dir): Renamed from Directory and removed list link. * duff.h duffdriver.c: Moved Directory to duffdriver. * duffdriver.c (process_directory): Renamed from recurse_directory. * duff.h (EntryList): Renamed from List. * duffentry.c (get_entry_sample, get_entry_digest, compare_entry_contents): Improved error reporting. * duff.h duffentry.c: Added BUFFER_SIZE macro for size of read buffers. * duff.1: Improved grammar for -z flag. * duff.1: Clarified language for -e flag. * duff.1: Fixed statement claiming digests are calculated in thorough mode. 2012-01-23 Camilla Berglund <elmindreda@elmindreda.org> * duffdriver.c (process_args, process_clusters): Moved freeing of entries to directly after each bucket has been processed. * duffdriver.c (process_clusters): Renamed from report_clusters. * duffdriver.c: Moved from single to BUCKET_COUNT entry lists, indexed by size. * duffdriver.c (process_args): Added function. * duffdriver.c (process_path, report_clusters): Made private to duffdriver. * duff.c duffdriver.c: Moved argument processing to duffdriver. * duffentry.c (fill_entry): Renamed function from make_entry. * duffdriver.c (free_entry_list): Removed function. * duffdriver.c: Replaced doubly linked lists with List. * duffutil.c (entry_list_init, entry_list_alloc, entry_list_empty, entry_list_free): Added entry list functions. * duffutil.c (link_entry, unlink_entry): Removed functions. * duff.h (List): Added linear entry list struct and typedef. * duff.h (Entry): Removed list links. * duff.c (main): Saved header digest use before processing entries. * duff.c (header_uses_digest): Added global flag. * duffentry.c (report_cluster): Ensured that first cluster entry has digest. * duffentry.c (compare_entries): Added more early-out cases. * duffentry.c (get_entry_digest): Stopped reading empty files. * duffentry.c (generate_entry_digest): Added function. * duffentry.c (get_entry_digest): Hash sample if it contains entire file. * duffutil.c (error, warning): Prefixed program name to output. * duffutil.c (set_digest_function): Added function. * duffutil.c (digest_init): Added function. * duffutil.c (digest_update): Added function. * duffutil.c (digest_finish): Added function. * duff.c duffutil.c duffentry.c: Moved all calls to sha to duffutil. * duff.c duffutil.c duffentry.c: Made digest_function private to duffutil. * duff.1 duff.c: Changed default sampling limit to zero. 2012-01-22 Camilla Berglund <elmindreda@elmindreda.org> * duff.c duff.h duffentry.c: Changed sampling to read (up to) the first SAMPLE_SIZE bytes (credits to Kamal Mostafa). * duff.c: Clarified help for -H and -L flags. * duff.c: Added list of supported digest functions to help for -d flag. 2012-01-20 Camilla Berglund <elmindreda@elmindreda.org> * duff.1: Added missing -type f to example (credits to Stephan Hegel). 2012-01-19 Camilla Berglund <elmindreda@elmindreda.org> * duff.h: Tagged functions error and warning with GCC attributes. * duff.1: Clarified default sampling limit. * duffdriver.c: Renamed cluster index variable to index. 2012-01-18 Camilla Berglund <elmindreda@elmindreda.org> * duff.1: Clarified language regarding -t and %d. * duff.1: Made the output of examples human-readable. 2012-01-16 Camilla Berglund <elmindreda@elmindreda.org> * duff.1: Added new cluster header to description of -f flag. * duff.c (main): Added error if thorough mode output uses digest (credits to Kamal Mostafa and Mika Kuoppala). * duff.c (main): Added non-digest default cluster header for thorough mode. * duffutil.c duff.h: Added function cluster_header_uses_digest. 2011-04-11 Camilla Berglund <elmindreda@elmindreda.org> * duff.c (main): Made cluster header translatable. * duffutil.c (error): Changed exit status to EXIT_FAILURE. * duffdriver.c (process_path): Split file processing into process_file function. * duffdriver.c (process_file): Reverted to old behaviour of skipping block devices. 2011-04-10 gettextize <bug-gnu-gettext@gnu.org> * Makefile.am (SUBDIRS): Add po. (ACLOCAL_AMFLAGS): New variable. (EXTRA_DIST): Add config.rpath, m4/ChangeLog. * configure.ac (AC_OUTPUT): Add po/Makefile.in. 2011-04-10 Camilla Berglund <elmindreda@elmindreda.org> * duff.c duff.h duffdriver.c duffentry.c: Changed gettext macro to _. * gettext.h: Added file to lib directory. * duff.c (usage): Improved grammar in help text. * duff.c duff.h duffdriver.c duffentry.c: Enabled use of gettext. * duff.c duff.h duffdriver.c duffentry.c duffutil.c duffstring.c: Moved to use autoconf large file support detection. 2010-08-15 Camilla Berglund <elmindreda@elmindreda.org> * duff.c (usage): Annotated strings for i18n. * duff.c (main): Made digest function name comparison case-insensitive. 2009-09-21 Camilla Berglund <elmindreda@elmindreda.org> * duff.h: Added enum typedefs. 2009-09-20 Camilla Berglund <elmindreda@elmindreda.org> * duff.c (version, usage, bugs): Changed to output to stdout. 2009-09-19 Camilla Berglund <elmindreda@elmindreda.org> * bootstrap.sh: Added instruction to run configure. * duffentry.c (get_entry_digest): Removed broken optimization. * duff.1: Added note on file modification. * duff.h: Added struct typedefs. 2009-08-09 Camilla Berglund <elmindreda@elmindreda.org> * duffdriver.c (recurse_directory): Added error handling for asprintf. * duffentry.c (get_entry_samples): Added error handling for fread. * duffutil.c (error, warning): Added error handling for asprintf. * duff.c (usage): Clarified wording of help text. 2009-01-16 Camilla Berglund <elmindreda@elmindreda.org> * duff.c (read_path, kill_trailing_slashes): Moved functions into duffutil.c. * duff.h: Added declarations for read_path and kill_trailing_slashes. * duff.c (version): Annotated strings for i18n. 2009-01-05 Camilla Berglund <elmindreda@elmindreda.org> * duff.c (main): Moved option default values into source file. * duff.c (main) (usage): Renamed -c flag to -d. 2009-01-04 Camilla Berglund <elmindreda@elmindreda.org> * duff.c duffdriver.c duffentry.c duffstring.c duffutil.c: Annotated strings for i18n. * duff.c (main): Added call to setlocale(3). 2009-01-03 Camilla Berglund <elmindreda@elmindreda.org> * sha256.c: Added file. * sha256.h: Added file. * sha384.c: Added file. * sha384.h: Added file. * sha512.c: Added file. * sha512.h: Added file. * duffutil.c (print_message_digest): Added function. * duffutil.c (print_cluster_header): Added call to print_message_digest. * duffentry.c (get_entry_digest): Added support for digest function selection. * duffentry.c (get_entry_digest_sha1) (get_entry_digest_sha256) (get_entry_digest_sha384) (get_entry_digest_sha512): Added function. * duff.c (main) (usage): Added -c option for selecting digest function. * duff.h: Added digest function enumeration. * duff.c duffdriver.c duffentry.c duffstring.c duffutil.c: Made off_t 64-bit on glibc. 2006-10-07 Camilla Berglund <elmindreda@elmindreda.org> * duff.c (main): Always kill trailing slashes (and in a nicer way). * duff.c (kill_trailing_slashes): Added function. * duff.c (main) (read_path): Don't kill newlines for -0 option. 2006-09-29 Camilla Berglund <elmindreda@elmindreda.org> * duff.c (main) (usage): Added -0 option (credits to Clemens Lucas Fries). * duff.c (read_path): Added function. * duffdriver.c (report_clusters): Added -0 option (credits to Clemens Lucas Fries). * duffutil.c (print_cluster_header): Removed newline termination. 2006-01-11 Camilla Berglund <elmindreda@elmindreda.org> * duffdriver.c (stat_file): Added parenthesis to remove warning. 2006-01-09 Camilla Berglund <elmindreda@elmindreda.org> * duff.h (copy_entry): Removed unused function. * duffentry.c (copy_entry): Removed unused function. * duffdriver.c (process_path): Only check access for non-empty files. * duffentry.c (get_entry_samples) (get_entry_checksum): Only open and read from non-empty files. * join-duplicates.sh: Removed logging, added some error checking and mktemp. 2006-01-08 Camilla Berglund <elmindreda@elmindreda.org> * join-duplicates.sh: Added file (credits to Ross Newell). 2006-01-07 Camilla Berglund <elmindreda@elmindreda.org> * duffentry.c (get_entry_samples): Fixed seek bug (credits to Alexander Bostrom). * duffdriver.c (stat_file): Removed collection of symlinks to files. * duff.h: Added enum for symlink dereferencing modes. * duffdriver.c (stat_file): Implemented symlink dereferencing modes. * duffdriver.c (process_path, recurse_directory) (stat_file): Added recursion depth tracking. * duff.c (main, usage): Added -H option for following only symlinks listed as arguments. * duff.c (main): Reordered options for better clarity. * duff.c (main): Improved warnings for -l option. 2006-01-04 Camilla Berglund <elmindreda@elmindreda.org> * duffentry.c (compare_entries): Removed code for -z option. * duffdriver.c (stat_file): Do not collect empty files when using -z option. * duffdriver.c (report_clusters): Fixed unlink bug. * duffdriver.c (report_clusters): All entries are now freed by the cluster search phase. 2006-01-03 Camilla Berglund <elmindreda@elmindreda.org> * duff.h: Added inode and device fields to struct Entry (credits to Ross Newell). * duffdriver.c (process_path): Implemented physical mode (credits to Ross Newell). * duff.c (main, usage): Added -p option for physical mode. * duff.h: Added backlink to struct Entry. * duffentry.c (unlink_entry, link_entry): Added functions. * duffentry.c (make_entry): Added storing of device and inode fields. * duffdriver.c: Moved to using doubly-linked entries. 2005-12-14 Camilla Berglund <elmindreda@elmindreda.org> * duffdriver.c (stat_file): Eliminated duplicate stat call for -L option. * duffdriver.c (stat_file): Added inital sketch for symlink-aware -e option. 2005-12-01 Camilla Berglund <elmindreda@elmindreda.org> * duffutil.c (print_cluster_header): Fixed bug when printing off_t values on Mac OS X. * duffdriver.c: Added includes for building on Solaris. * duff.c: Added includes for building on Solaris. 2005-11-28 Camilla Berglund <elmindreda@elmindreda.org> * duffdriver.c (has_recursed_directory) (record_directory): Added primitive directory loop detection. * duffutil.c: Added hash function for device/inode pair. * duff.h: Added struct Directory for recording of recursed directories. * duffdriver.c: Added several additional TODO items. 2005-11-27 Camilla Berglund <elmindreda@elmindreda.org> * duffdriver.c (report_clusters): Added freeing of entries. * duffentry.c (compare_entries): Added code for -z option. * duff.c (main): Added file name reading from stdin. 2005-11-26 Camilla Berglund <elmindreda@elmindreda.org> * duff.c (main, usage): Added -z option for ignoring empty files. * duff.c: Moved primary driver logic into duffdriver.c. * duffdriver.c: Created new file for primary driver logic. 2005-11-24 Camilla Berglund <elmindreda@elmindreda.org> * duff.c: Added missing 't' to the getopt string (credits to Richard Levitte). * duffentry.c (compare_entries): Fixed bug in ordering of phases. 2005-11-23 Camilla Berglund <elmindreda@elmindreda.org> * duff.c (usage): Fixed typo in -t option (credits to Patrik Jarnefelt).