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