Codebase list gddrescue / 80e88be0-03d1-4474-b4c2-8ee96293b910/main ChangeLog
80e88be0-03d1-4474-b4c2-8ee96293b910/main

Tree @80e88be0-03d1-4474-b4c2-8ee96293b910/main (Download .tar.gz)

ChangeLog @80e88be0-03d1-4474-b4c2-8ee96293b910/mainraw · history · blame

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
2022-01-21  Antonio Diaz Diaz  <antonio@gnu.org>

	* Version 1.26 released.
	* mapfile.cc (write_mapfile): Check all calls to fprintf.
	  (Hole in mapfile reported by Radomír Tomis).
	  (read_mapfile): Allow unordered, overlapping blocks in loose domain.
	  (Suggested by Gábor Katona and Shaya Potter).
	* Show file name in all diagnostics with a file involved.
	  (Reported by Radomír Tomis).
	* rescuebook.cc (copy_block): Exit with status 1 on fatal errors.
	  (Suggested by Marco Marques).
	  (do_rescue): Don't run empty phases.
	  (show_status): Scroll forward after each pass.
	  (Based on a suggestion by David Morrison).
	* main_common.cc (getnum): Show option name and valid range if error.
	* main.cc, ddrescuelog.cc: Remove synonyms '*-logfile', '--pause'.
	* ddrescuelog.cc: New option '-F, --format'.
	  (Bitmap format proposed by Florian Sedivy).
	  (test_if_done): Don't try to delete stdin.
	  (do_show_status): Round percentages up.
	* command_mode.cc, io.cc, loggers.cc: Missing '#include <algorithm>'.
	  (Reported by Richard Burkert).
	* ddrescue.texi: Improve description of algorithm.
	* check.sh: A POSIX shell is required to run the tests.

2020-02-21  Antonio Diaz Diaz  <antonio@gnu.org>

	* Version 1.25 released.
	* block.h: Add default constructors to classes Block and Sblock.
	  (Reported by Rosen Penev).
	* check.sh: Quote all file name variables to allow names with spaces.
	  (Reported by David Morrison).
	* In rescue mode, join non-finished subsectors read from mapfile.
	  (Reported by David Burton).
	* mapbook.cc (update_mapfile): Exclude writing time from intervals.
	  (Reported by David Burton).
	* rescuebook.cc (extend_outfile_size): Use ftruncate if it works.
	* Print large numbers in groups of 3 digits separated by underscores.
	* main.cc: Set a valid invocation_name even if argc == 0.

2019-02-24  Antonio Diaz Diaz  <antonio@gnu.org>

	* Version 1.24 released.
	* New option '--command-mode'.
	* Implement mapfile backup.
	* ddrescue.texi: Document final contents of bad areas in outfile.
	* configure: Accept appending to CXXFLAGS; 'CXXFLAGS+=OPTIONS'.

2018-02-13  Antonio Diaz Diaz  <antonio@gnu.org>

	* Version 1.23 released.
	* rescuebook.cc (trim_errors): Fix wrong change to non-scraped.
	* New option '--same-file'.
	* ddrescuelog.cc: New option '--shift'.
	* fillbook.cc (fill_block): Write location data as one line.
	* fillbook.cc (read_buffer): Don't require a seekable infile.
	* ddrescue.texi: New chapter 'Output'.
	* check.sh: Add test 'combined rescue'.
	* io.cc: Add missing '#include <cstdio>'.

2017-02-03  Antonio Diaz Diaz  <antonio@gnu.org>

	* Version 1.22 released.
	* Replace option '-X, --exit-on-error' with '-X, --max-read-errors'.
	* New option '--max-slow-reads'.
	* New option '--delay-slow'.
	* New option '--reset-slow'.
	* New option '--log-events'.
	* New option '--mapfile-interval'.
	* New option '--pause-on-error'.
	* Rename option '--pause' to '--pause-on-pass'.
	* Rename option '--max-errors' to '--max-bad-areas'.
	* Rename 'errsize' to 'bad_size' and 'errors' to 'bad_areas'
	* Rescuebook: Show read_errors, error_rate and slow_reads.
	* Add 'current_pass' field to mapfile.
	* Add two new passes (3 and 4) to the copying phase.
	* main.cc (parse_cpass): Accept ranges of passes.
	* Option '-K, --skip-size' now accepts sizes up to 1 EiB.
	* Initial skip size now defaults to (infile_size / 100_000).
	* rescuebook.cc (copy_non_tried): Don't reduce min_read_rate,
	  enable it only for passes 1 and 2.
	* rescuebook.cc (trim_errors): Don't trim bad edges.
	* main_common.cc (getnum): Accept 's' after other multiplier.
	* '--ask', '-vv' now show size along with model and serial number.
	* non_posix.cc: Add 'device_id' for Cygwin.
	  (Patch written by Christian Franke <franke@computer.org>).
	* rescuebook.cc (do_rescue): Show full sizes in domain warning.
	* ddrescuelog.cc: New option '-A, --annotate-mapfile'.

2016-03-17  Antonio Diaz Diaz  <antonio@gnu.org>

	* Version 1.21 released.
	* mapbook.cc (Mapbook): Fix iobuf alignment.
	  (Reported by Heikki Tauriainen).
	* Remove short option names '-1' and '-2'.
	* Allow only regular files for '--log-rates' and '--log-reads'.
	* Option '-D, --odirect' now works also in fill mode.
	* rescuebook.cc (copy_block): Return 1 on unaligned read error.
	  Set e_code on any error if verify_on_error.
	* Option '-X, --exit-on-error' has been extended to all phases.
	* Assign short name '-Z' to option '--max-read-rate'.
	* mapbook.cc (update_mapfile): 'fsync' the mapfile every 5 minutes.
	* Rescuebook: Show full range of sizes from non-tried to finished.
	* rescuebook.cc (show_status): Show percentage rescued.
	* configure: Avoid warning on some shells when testing for g++.
	* Makefile.in: Detect the existence of install-info.

2015-09-10  Antonio Diaz Diaz  <antonio@gnu.org>

	* Version 1.20 released.
	* Rename 'logfile' to 'mapfile' everywhere.
	* Change short name of option '--synchronous' to '-y'.
	* Change long name of option '-d' to '--idirect'.
	* New option '-D, --odirect'.
	* New option '-J, --verify-on-error'.
	* New option '--max-read-rate'.
	* rescuebook.cc (copy_block): Copy arbitrary blocks with '--idirect'.
	* Include only bad-sector blocks in 'errsize'.
	* rescuebook.cc (show_status): Show the estimated remaining time.
	* io.cc (format_time): Show time in days, hours, minutes and seconds.
	* Add per sector location data to fill mode.
	* mapbook.cc: Add emergency save of the mapfile.
	* Show device name with '--ask' or '-vv' on Haiku.
	* mapfile.cc (read_mapfile): Read read-only mapfiles from stdin.
	* ddrescuelog.cc: Allow multiple mapfiles for '-t, --show-status'.
	* ddrescuelog.cc (create_mapfile): '-' writes mapfile to stdout.
	* ddrescue.texi: New chapter 'Optical media'.
	* ddrescue.texi: Document maximum size of the rescue domain.
	* configure: Rename option '--enable-linux' to '--enable-non-posix'.
	* Makefile.in: New targets 'install*-compress'.
	* ddrescue.h: Rename to mapbook.h.
	* logbook.cc: Rename to mapbook.cc.
	* logfile.cc: Rename to mapfile.cc.
	* linux.{h,cc}: Rename to non_posix.{h,cc}.

2014-10-03  Antonio Diaz Diaz  <antonio@gnu.org>

	* Version 1.19 released.
	* Fix a race condition at start of run with '--timeout=0'.
	* New option '-P, --data-preview'.
	* New option '-u, --unidirectional'.
	* New option '-X, --exit-on-error'.
	* New option '--ask' to ask for user confirmation.
	* New option '--cpass' to select passes during copying phase.
	* New option '--pause' to insert a pause between passes.
	* Remove option '-l, --logfile-size'.
	* Skip on the first error during the copying phase.
	* rescuebook.cc: Trimming done in one pass, may be run in reverse.
	* The splitting phase has been replaced by a scraping phase.
	* Change long name of option '-n' to '--no-scrape'.
	* rescuebook.cc: Alternate direction of passes during retrying phase.
	* Show ATA model and serial number with '--ask' or '-vv' on Linux.
	* configure: New option '--enable-linux'.
	* New files linux.h and linux.cc.
	* Change license to GPL version 2 or later.

2014-06-10  Antonio Diaz Diaz  <antonio@gnu.org>

	* Version 1.18.1 released.
	* ddrescuelog.cc (do_logic_ops): Fix 'or' and 'xor'.
	* New option '-H, --test-mode' to simulate read errors.
	* New option '-L, --loose-domain' (both ddrescue and ddrescuelog).
	* New option '-N, --no-trim' to disable trimming of damaged areas.
	* New option '-O, --reopen-on-error'.
	* New options '-1, --log-rates' and '-2, --log-reads'.
	* Extend '-K, --skip-size' with maximum and disable values.
	* Change long name of option '-r' to '--retry-passes'.
	* Change short name of option '--generate-mode' to '-G'.
	* Default value of option '-l, --logfile-size' increased to 10000.
	* If interrupted, ddrescue terminates by raising the signal received.
	* rescuebook.cc (copy_non_tried): Don't mark skipped blocks as
	  non-trimmed. Try them in additional passes (before trimming).
	* rescuebook.cc: Limit the copying phase to 3 passes.
	* rescuebook.cc: Alternate direction of passes during copying phase.
	* rescuebook.cc: Smallest blocks are trimmed first.
	* rescuebook.cc (split_errors): Read largest first if logfile full.
	* Improve speed when using option '-m, --domain-logfile'.
	* io.cc (show_status): Show the current total run time.
	* rescuebook.cc: Show pass number and direction during copying.
	* rescuebook.cc (show_status): Show block pos instead of current_pos.
	* main.cc: Show "an unknown number of bytes" for unknown insize.
	* ddrescuelog.cc: New options '-B, --binary-prefixes',
	  -C, --complete-logfile', and '-P, --compare-as-domain'.
	* Improve speed of logic operations in ddrescuelog.
	* rescuebook.cc (do_rescue): Show warning when domain is smaller
	  than logfile.
	* ddrescuelog.cc (do_show_status): Show logfile and domain extents
	  when domain is smaller than logfile.
	* block.h: Class Block now forces the invariant by itself.
	* Code reorganization. New class 'Logfile'.
	* Add status message to rescue logfile.
	* Many improvements to documentation.
	* ddrescue.texinfo: Rename to ddrescue.texi.

2013-07-09  Antonio Diaz Diaz  <antonio@gnu.org>

	* Version 1.17 released.
	* New option '-l, --logfile-size'.
	* New option '-w, --ignore-write-errors'.
	* Rename option '--fill' to '--fill-mode'.
	* Rename option '--generate-logfile' to '--generate-mode'.
	* Add option '--sector-size' as a synonym of '--block-size'.
	* Add option '--retries' as a synonym of '--max-retries'.
	* Add option '--size' as a synonym of '--max-size'.
	* rescuebook.cc: Trimming is now done from both edges of each
	  non-trimmed block. Largest blocks are trimmed first.
	* rescuebook.cc: Largest blocks are now split first until
	  logfile reaches '--logfile-size' entries.
	* logbook.cc (extend_sblock_vector, truncate_vector): Terminate
	  if truncation would discard finished blocks.
	* rescuebook.cc: Mark failed blocks with 1 sector as bad-sector.
	* logbook.cc (extend_sblock_vector): Remove last block of
	  logfile if it starts at insize and is not marked as finished.
	* io.cc (show_status, update_rates): Detect a jump back in time
	  and adjust status.
	* ddrescue.h (slow_read): Return false for the first 10 seconds.
	* io.cc (show_status) Leave cursor after message so that ^C does
	  not overwrite it.
	* main.cc: Don't require '--force' for generate mode.
	* ddrescue.h (Logbook::logfile_exists): Don't return false if
	  logfile exists but is empty.
	* ddrescue.texinfo: New chapter 'Using ddrescue safely'.
	* Document that 'direct disc access' only reads whole sectors.
	* configure: Options now accept a separate argument.
	* Makefile.in: New target 'install-bin'.

2012-06-11  Antonio Diaz Diaz  <ant_diaz@teleline.es>

	* Version 1.16 released.
	* New option '-K, --skip-size'.
	* New option '-T, --timeout'.
	* Change short name of option '--try-again' to '-A'.
	* Maximum skip size is now limited to 1% of infile size or 1 GiB
	  (whichever is smaller), rounded to the next multiple of sector size.
	* Set current_pos to end of block when reading backwards.
	* The option '-E, --max-error-rate' now checks the rate of
	  actually failed reads, not the growth of error size.
	* The option '-v, --verbose' now increases verbosity if repeated.
	* Change quote characters in messages as advised by GNU Standards.
	* configure: Rename 'datadir' to 'datarootdir'.
	* New files rational.h, rational.cc.

2012-01-01  Antonio Diaz Diaz  <ant_diaz@teleline.es>

	* Version 1.15 released.
	* New option '-a, --min-read-rate'.
	* New option '-I, --verify-input-size'.
	* New option '-x, --extend-outfile'.
	* main.cc: Verify that infile, outfile and logfile are all different.
	* Non-tried blocks are now read aligned to cluster-size sectors.
	* rescuebook.cc: Improve skip algorithm for the split pass.
	* main.cc: Remove spurious warning about '-D' ignored in fill mode.
	* ddrescue.texinfo: Improve description of algorithm.
	* logbook.cc (change_chunk_status): Return an adjust value (-1, 0, 1)
	  to keep "errors" updated without calling count_errors every time.
	* ddrescue.cc: Rename to io.cc.
	* Add 'ddrescuelog', a program for logfile manipulation.

2011-01-10  Antonio Diaz Diaz  <ant_diaz@teleline.es>

	* Version 1.14 released.
	* New option '-R, --reverse'.
	* New option '-E, --max-error-rate'.
	* Extend syntax of '--max-errors' (+N) to specify new errors.
	* Change short name of option '--retrim' to '-M'.
	* Remove spurious warning about 'preallocation not available'.
	* Code reorganization. New class 'Genbook'.

2010-08-27  Antonio Diaz Diaz  <ant_diaz@teleline.es>

	* Version 1.13 released.
	* Non-regular output files are no longer overwritten by default.
	* New option '-f, --force'.
	* New option '-p, --preallocate'.
	* main.cc (write_logfile_header): Write command line to logfile.
	* ddrescue.texinfo: Add info about logfile and recoverable formats.
	* ddrescue.texinfo: Add a couple more warnings to the tutorial.
	* testsuite: Rename 'test1' to 'test.txt'
	* Revert to use 'long' instead of 'time_t' for time variables.
	  Ddrescue only needs counting seconds, and 'time_t' causes warnings
	  on some systems.

2010-04-06  Antonio Diaz Diaz  <ant_diaz@teleline.es>

	* Version 1.12 released.
	* main.cc: Outfile is now created with mode 0666 if umask allows it.
	* main.cc: New constant 'o_binary'.
	* Makefile.in: Add quotes to directory names.
	* Makefile.in: Add option '--name' to help2man invocation.
	* check.sh: Use 'test1' instead of 'COPYING' for testing.
	* Use 'time_t' instead of 'long' for time variables.

2009-07-10  Antonio Diaz Diaz  <ant_diaz@teleline.es>

	* Version 1.11 released.
	* logbook.cc (update_logfile): Ask user in case of write error.
	* rescuebook.cc (split_errors): Modify the split threshold.
	* rescuebook.cc (copy_and_update): Verify after every read error
	  that the input file does still exist.
	* ddrescue.cc (Rescuebook::show_status): Show the time elapsed
	  since last successful read.
	* ddrescue.cc (set_signals): Ignore SIGUSR1 and SIGUSR2.
	* ddrescue.texinfo: Improve description of '-d', '-D', and '-S'.
	* ddrescue.texinfo: Improve description of algorithm.
	* check.sh: Verify that files are opened in binary mode.
	* Add logfile usage warning to the output of 'ddrescue --help'.

2009-02-19  Antonio Diaz Diaz  <ant_diaz@teleline.es>

	* Version 1.10 released.
	* New option '-T, --try-again'.
	* rescuebook.cc: 'skip_size' has been made independent of 'softbs'.
	* 'change_chunk_status' is now faster for large logfiles.
	* Fix overflow when reading from devices of undefined size.
	* Block does no longer admit negative sizes.
	* 'make install-info' should now work on Debian and OS X.
	* New file testsuite/check.sh.

2008-11-17  Antonio Diaz Diaz  <ant_diaz@teleline.es>

	* Version 1.9 released.
	* New option '-m, --domain-logfile'.
	* Verbosity control of messages has been simplified.
	* Change LONG_LONG_MAX to LLONG_MAX.

2008-02-24  Antonio Diaz Diaz  <ant_diaz@teleline.es>

	* Version 1.8 released.
	* New option '-g, --generate-logfile'.
	* New option '-D, --synchronous'.
	* Fill mode now works when outfile offset differs from 0.
	* ddrescue.texinfo: Update chapter 'Fill Mode'.

2008-01-04  Antonio Diaz Diaz  <ant_diaz@teleline.es>

	* Version 1.7 released.
	* Skips faster over damaged areas (small read, big jump).
	* Logfile is kept minimized at all times.
	* Rescuebook::errors now counts the error areas found.
	* Target 'check' added to Makefile.
	* rescuebook.cc (split_errors): New variable 'error_counter'.
	* New option '-R, --retrim'.

2007-11-16  Antonio Diaz Diaz  <ant_diaz@teleline.es>

	* Version 1.6 released.
	* Code reorganization. New classes 'Fillbook' and 'Rescuebook'.
	* logbook.cc (copy_non_tried): New variable 'skip_counter'.
	* Add new pass that trims error areas backwards before splitting.
	* Add support for sparse output files.
	* Blocks longer than hardbs are now split at sector boundaries.
	* New option '-F, --fill'.
	* ddrescue.texinfo: New chapter 'Fill Mode'.
	* Add status line to logfile.
	* An interrupted retry pass is now resumed instead of reinitiated.
	* Perfect resumability if interrupted during trimming or splitting.
	* ddrescue.cc (set_signals): Handle also SIGHUP and SIGTERM.
	* Option '--quiet' now also quiets error messages.
	* Print a more informative error message when reading an old logfile.
	* ddrescue.texinfo: Add note about old logfiles.
	* Add some consistency checks.

2007-06-29  Antonio Diaz Diaz  <ant_diaz@teleline.es>

	* Version 1.5 released.
	* Update license to GPL version 3 or later.

2007-06-18  Antonio Diaz Diaz  <ant_diaz@teleline.es>

	* Version 1.4 released.
	* New option '-d, --direct'.
	* Fix a bug showing bad initial error size.
	* Fix error counting.
	* Small changes to documentation.

2006-12-13  Antonio Diaz Diaz  <ant_diaz@teleline.es>

	* Version 1.3 released.
	* Some fixes made to 'configure' script.
	* Makefile.in: New target 'sddrescue'.

2006-04-03  Antonio Diaz Diaz  <ant_diaz@teleline.es>

	* Version 1.2 released.
	* New option '-C, --complete-only'.
	* Replace 'getopt_long' with a new argument parser.
	* Logfile save interval is now dependent on logfile size.
	* Small changes to documentation.

2005-10-10  Antonio Diaz Diaz  <ant_diaz@teleline.es>

	* Version 1.1 released.
	* Align 'iobuf' to the sector size for use with raw devices.
	* ddrescue.texinfo: Add a small tutorial.
	* Add two missing #includes.

2005-06-07  Antonio Diaz Diaz  <ant_diaz@teleline.es>

	* Version 1.0 released.
	* A new logfile format makes multi-part rescue possible.
	* Logfile is saved every 30 seconds.
	* Logfile is now also saved in case of write error on outfile.
	* Fix a race condition that could result in data not written
	  to outfile but annotated in logfile if computer crashes at
	  the wrong moment.

2005-01-04  Antonio Diaz Diaz  <ant_diaz@teleline.es>

	* Version 0.9 released.
	* ddrescue is now part of the GNU project.
	* configure, ddrescue.texinfo: New files.
	* Two small bugs corrected.
	* New option '-B, --binary-prefixes' to show binary multipliers in
	  numbers (SI prefixes are used by default).
	* Numbers are accepted with decimal (SI) or binary multipliers.
	* Rename 'badblocks file' to 'logfile'.
	* Save logfile also if max_errors are exceeded.

2004-12-14  Antonio Diaz Diaz  <ant_diaz@teleline.es>

	* Version 0.8 released.
	* New option '-n, --no-split' to disable splitting of damaged areas.

2004-10-30  Antonio Diaz Diaz  <ant_diaz@teleline.es>

	* Version 0.7 released.
	* ddrescue now can be interrupted at any time, and resume
	  rescue at the same point later.

2004-09-28  Antonio Diaz Diaz  <ant_diaz@teleline.es>

	* Version 0.6 released.
	* Skip faster over damaged areas (try 1 block first).
	* Improve error messages.

2004-09-15  Antonio Diaz Diaz  <ant_diaz@teleline.es>

	* Version 0.5 released.
	* Save badblocks file also if ddrescue is interrupted while
	  splitting damaged areas.
	* ddrescue.1: New man page.

2004-09-03  Antonio Diaz Diaz  <ant_diaz@teleline.es>

	* Version 0.4 released.
	* Change project name to 'ddrescue' to meet command name standards.
	* Add long option names.

2004-08-18  Antonio Diaz Diaz  <ant_diaz@teleline.es>

	* Version 0.3 released.
	* Add badblocks file, making the rescue much more efficient.

2004-08-14  Antonio Diaz Diaz  <ant_diaz@teleline.es>

	* Version 0.2 released.
	* Fix bug that sometimes ignored the last sectors of a damaged area.
	* Make the algorithm faster in presence of errors.

2004-08-12  Antonio Diaz Diaz  <ant_diaz@teleline.es>

	* Version 0.1 released.


Copyright (C) 2004-2022 Antonio Diaz Diaz.

This file is a collection of facts, and thus it is not copyrightable,
but just in case, you have unlimited permission to copy, distribute, and
modify it.