1Change log for duff 2=================== 3 4Maintained since version 0.3.1. 5 62012-01-28 Camilla Berglund <elmindreda@elmindreda.org> 7 8 * dufffile.c (compare_files): Removed superflous physical_flag test. 9 * duff.h dufffile.c (init_file_list): Renamed from file_list_init. 10 * duff.h dufffile.c (alloc_file): Renamed from file_list_alloc. 11 * duff.h dufffile.c (file_list_empty): Renamed from empty_file_list. 12 * duff.h dufffile.c (free_entry_list): Renamed from file_list_free. 13 * duffdriver.c dufffile.c duffutil.c: Put non-static functions on top. 14 * duffdriver.c (process_clusters): Initialized cluster index. 15 * duffdriver.c (report_cluster): Made use of get_field_terminator. 16 * duffutil.c (read_path): Made use of get_field_terminator. 17 * duffutil.c (get_field_terminator): Added function. 18 * duffutil.c (read_path): Removed limit on path length, updated signature. 19 202012-01-27 Camilla Berglund <elmindreda@elmindreda.org> 21 22 * dufffile.c (compare_entry_contents): Made warnings take -q into account. 23 * dufffile.c (get_file_sample): Tagged file INVALID on read error. 24 * dufffile.c (compare_file_digests): Replaced for-loop with memcmp. 25 * dufffile.c (get_file_sample, get_file_digest): Replaced pointer checks with 26 status checks. 27 * duff.h (Status): Added SAMPLED and HASHED values. 28 * duffdriver.c (process_clusters): Added test for whether base item has entered 29 INVALID state. 30 * dufffile.c (get_file_sample, get_file_digest): Removed duplicate check for 31 INVALID state. 32 332012-01-25 Camilla Berglund <elmindreda@elmindreda.org> 34 35 * duff.h (Status): Removed unused DUPLICATE status. 36 * duffdriver.c (process_file): Removed read permission check on files (credits 37 to Kamal Mostafa). 38 392012-01-24 Camilla Berglund <elmindreda@elmindreda.org> 40 41 * duff.h (HASH_BITS): Increased to 10. 42 * duffdriver.c (print_terminator): Added function. 43 * duff.h duffdriver.c dufffile.c (file_list_*): Renamed from entry_list_*. 44 * duff.h duffdriver.c dufffile.c (free_file): Renamed from free_entry. 45 * duff.h duffdriver.c dufffile.c (init_file): Renamed from fill_entry. 46 * duff.h duffdriver.c dufffile.c duffutil.c (FileList): Renamed from EntryList. 47 * duff.h duffdriver.c dufffile.c duffutil.c (File): Renamed from Entry. 48 * dufffile.c: Renamed from duffentry.c. 49 * duffdriver.c (has_recorded_directory): Renamed from has_recursed_directory. 50 * duffdriver.c (DirList): Added array of Dir structs. 51 * duffdriver.c (Dir): Renamed from Directory and removed list link. 52 * duff.h duffdriver.c: Moved Directory to duffdriver. 53 * duffdriver.c (process_directory): Renamed from recurse_directory. 54 * duff.h (EntryList): Renamed from List. 55 * duffentry.c (get_entry_sample, get_entry_digest, compare_entry_contents): 56 Improved error reporting. 57 * duff.h duffentry.c: Added BUFFER_SIZE macro for size of read buffers. 58 * duff.1: Improved grammar for -z flag. 59 * duff.1: Clarified language for -e flag. 60 * duff.1: Fixed statement claiming digests are calculated in thorough mode. 61 622012-01-23 Camilla Berglund <elmindreda@elmindreda.org> 63 64 * duffdriver.c (process_args, process_clusters): Moved freeing of entries to 65 directly after each bucket has been processed. 66 * duffdriver.c (process_clusters): Renamed from report_clusters. 67 * duffdriver.c: Moved from single to BUCKET_COUNT entry lists, indexed by size. 68 * duffdriver.c (process_args): Added function. 69 * duffdriver.c (process_path, report_clusters): Made private to duffdriver. 70 * duff.c duffdriver.c: Moved argument processing to duffdriver. 71 * duffentry.c (fill_entry): Renamed function from make_entry. 72 * duffdriver.c (free_entry_list): Removed function. 73 * duffdriver.c: Replaced doubly linked lists with List. 74 * duffutil.c (entry_list_init, entry_list_alloc, entry_list_empty, 75 entry_list_free): Added entry list functions. 76 * duffutil.c (link_entry, unlink_entry): Removed functions. 77 * duff.h (List): Added linear entry list struct and typedef. 78 * duff.h (Entry): Removed list links. 79 * duff.c (main): Saved header digest use before processing entries. 80 * duff.c (header_uses_digest): Added global flag. 81 * duffentry.c (report_cluster): Ensured that first cluster entry has digest. 82 * duffentry.c (compare_entries): Added more early-out cases. 83 * duffentry.c (get_entry_digest): Stopped reading empty files. 84 * duffentry.c (generate_entry_digest): Added function. 85 * duffentry.c (get_entry_digest): Hash sample if it contains entire file. 86 * duffutil.c (error, warning): Prefixed program name to output. 87 * duffutil.c (set_digest_function): Added function. 88 * duffutil.c (digest_init): Added function. 89 * duffutil.c (digest_update): Added function. 90 * duffutil.c (digest_finish): Added function. 91 * duff.c duffutil.c duffentry.c: Moved all calls to sha to duffutil. 92 * duff.c duffutil.c duffentry.c: Made digest_function private to duffutil. 93 * duff.1 duff.c: Changed default sampling limit to zero. 94 952012-01-22 Camilla Berglund <elmindreda@elmindreda.org> 96 97 * duff.c duff.h duffentry.c: Changed sampling to read (up to) the first 98 SAMPLE_SIZE bytes (credits to Kamal Mostafa). 99 * duff.c: Clarified help for -H and -L flags. 100 * duff.c: Added list of supported digest functions to help for -d flag. 101 1022012-01-20 Camilla Berglund <elmindreda@elmindreda.org> 103 104 * duff.1: Added missing -type f to example (credits to Stephan Hegel). 105 1062012-01-19 Camilla Berglund <elmindreda@elmindreda.org> 107 108 * duff.h: Tagged functions error and warning with GCC attributes. 109 * duff.1: Clarified default sampling limit. 110 * duffdriver.c: Renamed cluster index variable to index. 111 1122012-01-18 Camilla Berglund <elmindreda@elmindreda.org> 113 114 * duff.1: Clarified language regarding -t and %d. 115 * duff.1: Made the output of examples human-readable. 116 1172012-01-16 Camilla Berglund <elmindreda@elmindreda.org> 118 119 * duff.1: Added new cluster header to description of -f flag. 120 * duff.c (main): Added error if thorough mode output uses digest (credits to 121 Kamal Mostafa and Mika Kuoppala). 122 * duff.c (main): Added non-digest default cluster header for thorough mode. 123 * duffutil.c duff.h: Added function cluster_header_uses_digest. 124 1252011-04-11 Camilla Berglund <elmindreda@elmindreda.org> 126 127 * duff.c (main): Made cluster header translatable. 128 * duffutil.c (error): Changed exit status to EXIT_FAILURE. 129 * duffdriver.c (process_path): Split file processing into process_file function. 130 * duffdriver.c (process_file): Reverted to old behaviour of skipping block devices. 131 1322011-04-10 gettextize <bug-gnu-gettext@gnu.org> 133 134 * Makefile.am (SUBDIRS): Add po. 135 (ACLOCAL_AMFLAGS): New variable. 136 (EXTRA_DIST): Add config.rpath, m4/ChangeLog. 137 * configure.ac (AC_OUTPUT): Add po/Makefile.in. 138 1392011-04-10 Camilla Berglund <elmindreda@elmindreda.org> 140 141 * duff.c duff.h duffdriver.c duffentry.c: Changed gettext macro to _. 142 * gettext.h: Added file to lib directory. 143 * duff.c (usage): Improved grammar in help text. 144 * duff.c duff.h duffdriver.c duffentry.c: Enabled use of gettext. 145 * duff.c duff.h duffdriver.c duffentry.c duffutil.c 146 duffstring.c: Moved to use autoconf large file support detection. 147 1482010-08-15 Camilla Berglund <elmindreda@elmindreda.org> 149 150 * duff.c (usage): Annotated strings for i18n. 151 * duff.c (main): Made digest function name comparison case-insensitive. 152 1532009-09-21 Camilla Berglund <elmindreda@elmindreda.org> 154 155 * duff.h: Added enum typedefs. 156 1572009-09-20 Camilla Berglund <elmindreda@elmindreda.org> 158 159 * duff.c (version, usage, bugs): Changed to output to stdout. 160 1612009-09-19 Camilla Berglund <elmindreda@elmindreda.org> 162 163 * bootstrap.sh: Added instruction to run configure. 164 * duffentry.c (get_entry_digest): Removed broken optimization. 165 * duff.1: Added note on file modification. 166 * duff.h: Added struct typedefs. 167 1682009-08-09 Camilla Berglund <elmindreda@elmindreda.org> 169 170 * duffdriver.c (recurse_directory): Added error handling for asprintf. 171 * duffentry.c (get_entry_samples): Added error handling for fread. 172 * duffutil.c (error, warning): Added error handling for asprintf. 173 * duff.c (usage): Clarified wording of help text. 174 1752009-01-16 Camilla Berglund <elmindreda@elmindreda.org> 176 177 * duff.c (read_path, kill_trailing_slashes): Moved functions into duffutil.c. 178 * duff.h: Added declarations for read_path and kill_trailing_slashes. 179 * duff.c (version): Annotated strings for i18n. 180 1812009-01-05 Camilla Berglund <elmindreda@elmindreda.org> 182 183 * duff.c (main): Moved option default values into source file. 184 * duff.c (main) (usage): Renamed -c flag to -d. 185 1862009-01-04 Camilla Berglund <elmindreda@elmindreda.org> 187 188 * duff.c duffdriver.c duffentry.c duffstring.c duffutil.c: Annotated strings for i18n. 189 * duff.c (main): Added call to setlocale(3). 190 1912009-01-03 Camilla Berglund <elmindreda@elmindreda.org> 192 193 * sha256.c: Added file. 194 * sha256.h: Added file. 195 * sha384.c: Added file. 196 * sha384.h: Added file. 197 * sha512.c: Added file. 198 * sha512.h: Added file. 199 * duffutil.c (print_message_digest): Added function. 200 * duffutil.c (print_cluster_header): Added call to print_message_digest. 201 * duffentry.c (get_entry_digest): Added support for digest function selection. 202 * duffentry.c (get_entry_digest_sha1) (get_entry_digest_sha256) 203 (get_entry_digest_sha384) (get_entry_digest_sha512): Added function. 204 * duff.c (main) (usage): Added -c option for selecting digest function. 205 * duff.h: Added digest function enumeration. 206 207 * duff.c duffdriver.c duffentry.c duffstring.c duffutil.c: Made off_t 64-bit on glibc. 208 2092006-10-07 Camilla Berglund <elmindreda@elmindreda.org> 210 211 * duff.c (main): Always kill trailing slashes (and in a nicer way). 212 * duff.c (kill_trailing_slashes): Added function. 213 * duff.c (main) (read_path): Don't kill newlines for -0 option. 214 2152006-09-29 Camilla Berglund <elmindreda@elmindreda.org> 216 217 * duff.c (main) (usage): Added -0 option (credits to Clemens Lucas Fries). 218 * duff.c (read_path): Added function. 219 * duffdriver.c (report_clusters): Added -0 option (credits to Clemens Lucas Fries). 220 * duffutil.c (print_cluster_header): Removed newline termination. 221 2222006-01-11 Camilla Berglund <elmindreda@elmindreda.org> 223 224 * duffdriver.c (stat_file): Added parenthesis to remove warning. 225 2262006-01-09 Camilla Berglund <elmindreda@elmindreda.org> 227 228 * duff.h (copy_entry): Removed unused function. 229 * duffentry.c (copy_entry): Removed unused function. 230 231 * duffdriver.c (process_path): Only check access for non-empty files. 232 * duffentry.c (get_entry_samples) 233 (get_entry_checksum): Only open and read from non-empty files. 234 235 * join-duplicates.sh: Removed logging, added some error checking and mktemp. 236 2372006-01-08 Camilla Berglund <elmindreda@elmindreda.org> 238 239 * join-duplicates.sh: Added file (credits to Ross Newell). 240 2412006-01-07 Camilla Berglund <elmindreda@elmindreda.org> 242 243 * duffentry.c (get_entry_samples): Fixed seek bug (credits to Alexander Bostrom). 244 245 * duffdriver.c (stat_file): Removed collection of symlinks to files. 246 247 * duff.h: Added enum for symlink dereferencing modes. 248 * duffdriver.c (stat_file): Implemented symlink dereferencing modes. 249 * duffdriver.c (process_path, recurse_directory) 250 (stat_file): Added recursion depth tracking. 251 * duff.c (main, usage): Added -H option for following only symlinks listed as arguments. 252 253 * duff.c (main): Reordered options for better clarity. 254 255 * duff.c (main): Improved warnings for -l option. 256 2572006-01-04 Camilla Berglund <elmindreda@elmindreda.org> 258 259 * duffentry.c (compare_entries): Removed code for -z option. 260 * duffdriver.c (stat_file): Do not collect empty files when using -z option. 261 262 * duffdriver.c (report_clusters): Fixed unlink bug. 263 * duffdriver.c (report_clusters): All entries are now freed by the cluster search phase. 264 2652006-01-03 Camilla Berglund <elmindreda@elmindreda.org> 266 267 * duff.h: Added inode and device fields to struct Entry (credits to Ross Newell). 268 * duffdriver.c (process_path): Implemented physical mode (credits to Ross Newell). 269 * duff.c (main, usage): Added -p option for physical mode. 270 271 * duff.h: Added backlink to struct Entry. 272 * duffentry.c (unlink_entry, link_entry): Added functions. 273 * duffentry.c (make_entry): Added storing of device and inode fields. 274 * duffdriver.c: Moved to using doubly-linked entries. 275 2762005-12-14 Camilla Berglund <elmindreda@elmindreda.org> 277 278 * duffdriver.c (stat_file): Eliminated duplicate stat call for -L option. 279 280 * duffdriver.c (stat_file): Added inital sketch for symlink-aware -e option. 281 2822005-12-01 Camilla Berglund <elmindreda@elmindreda.org> 283 284 * duffutil.c (print_cluster_header): Fixed bug when printing off_t values on Mac OS X. 285 286 * duffdriver.c: Added includes for building on Solaris. 287 * duff.c: Added includes for building on Solaris. 288 2892005-11-28 Camilla Berglund <elmindreda@elmindreda.org> 290 291 * duffdriver.c (has_recursed_directory) 292 (record_directory): Added primitive directory loop detection. 293 * duffutil.c: Added hash function for device/inode pair. 294 * duff.h: Added struct Directory for recording of recursed directories. 295 296 * duffdriver.c: Added several additional TODO items. 297 2982005-11-27 Camilla Berglund <elmindreda@elmindreda.org> 299 300 * duffdriver.c (report_clusters): Added freeing of entries. 301 302 * duffentry.c (compare_entries): Added code for -z option. 303 304 * duff.c (main): Added file name reading from stdin. 305 3062005-11-26 Camilla Berglund <elmindreda@elmindreda.org> 307 308 * duff.c (main, usage): Added -z option for ignoring empty files. 309 310 * duff.c: Moved primary driver logic into duffdriver.c. 311 * duffdriver.c: Created new file for primary driver logic. 312 3132005-11-24 Camilla Berglund <elmindreda@elmindreda.org> 314 315 * duff.c: Added missing 't' to the getopt string (credits to Richard Levitte). 316 317 * duffentry.c (compare_entries): Fixed bug in ordering of phases. 318 3192005-11-23 Camilla Berglund <elmindreda@elmindreda.org> 320 321 * duff.c (usage): Fixed typo in -t option (credits to Patrik Jarnefelt). 322 323