From db4d3af31d33961adc553371b95c7c743378e4b1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Lesimple?= Date: Mon, 4 Oct 2021 21:50:50 +0200 Subject: [PATCH] sync from upstream up to 22:14a375563e2b MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This includes the following commits: changeset: 22:14a375563e2b summary: chang "while" command to "type -P" in bash based configure changeset: 21:c4bf7c0f33d2 summary: updated codec paper for RS01 life cycle changeset: 20:dbcaad8128aa summary: replaced build count with mercurial changeset changeset: 19:fba258a6acfa summary: Added tag 0.79.10 for changeset 49950be5a2ef changeset: 18:49950be5a2ef summary: merged some debian patches changeset: 17:815be3929c41 summary: merged "easy" patches from Stéphane Lesimple's version changeset: 16:7d15f8a958cb summary: Made printf format strings 32/64bit safe as suggested by Stéphane; changeset: 15:1055a53b8d6d summary: reorganized code for --with-gui=[yes|no] option changeset: 14:fbe2ae12a32c summary: Added tag 0.79.9 for changeset f2fdd6d3a1f5 changeset: 13:f2fdd6d3a1f5 summary: updated TODO and CHANGELOG And other changes that were needed to resolve the (many) conflicts. --- .github/workflows/release.yml | 4 +- .github/workflows/tests.yml | 4 +- CHANGELOG | 60 +- CREDITS.de | 5 + CREDITS.en | 4 + GNUmakefile.template | 13 +- README.md | 38 +- TODO | 15 +- configure | 26 +- locale/cs.po | 2708 +++++++------- locale/de.po | 2743 +++++++------- locale/it.po | 2624 +++++++------- locale/pt_BR.po | 2664 +++++++------- locale/ru.po | 2664 +++++++------- locale/sv.po | 2624 +++++++------- misc-gui.c | 667 ++++ regtest/common.bash | 33 +- regtest/config.txt | 6 +- regtest/database/RS01_adaptive_no_device | 6 + .../database/RS01_adaptive_no_device_access | 6 + .../RS01_adaptive_with_incompatible_ecc | 2 +- regtest/database/RS01_ecc_create_after_read | 1 + .../RS01_ecc_recreate_after_read_rs01 | 1 + .../RS01_ecc_recreate_after_read_rs02 | 1 + .../RS01_ecc_recreate_after_read_rs03f | 1 + .../RS01_ecc_recreate_after_read_rs03i | 1 + regtest/database/RS01_read_medium_with_dsm | 2 +- .../RS01_read_medium_with_dsm_in_image | 19 - .../RS01_read_medium_with_dsm_in_image2 | 19 - ...S01_read_medium_with_dsm_in_image2_verbose | 103 +- ...RS01_read_medium_with_dsm_in_image_verbose | 103 +- .../RS01_read_medium_with_dsm_verbose | 3 +- .../RS01_read_with_ignored_hardware_failure | 6 +- regtest/database/RS01_scan_medium_with_dsm | 4 +- regtest/database/RS01_scan_tao_tail_with_ecc | 4 +- .../database/RS02_adaptive_incompatible_ecc | 2 +- .../RS02_ecc_create_after_partial_read | 446 ++- regtest/database/RS02_ecc_create_after_read | 446 ++- regtest/database/RS02_ecc_missing_image | 4 +- .../RS02_ecc_recreate_after_read_rs01 | 447 ++- .../RS02_ecc_recreate_after_read_rs02 | 197 +- regtest/database/RS02_no_image | 2 +- regtest/database/RS02_read_bad_master | 1 + .../database/RS02_read_bad_master_exhaustive | 1 + regtest/database/RS02_read_good_verbose | 1 + regtest/database/RS02_read_longer | 1 + regtest/database/RS02_read_modulo_glitch | 1 + regtest/database/RS02_read_modulo_glitch2 | 1 + regtest/database/RS02_read_modulo_glitch3 | 1 + regtest/database/RS02_read_modulo_glitch4 | 1 + regtest/database/RS02_read_shorter | 1 + regtest/database/RS02_scan_longer | 1 + regtest/database/RS02_scan_modulo_glitch | 1 + regtest/database/RS02_scan_modulo_glitch2 | 1 + regtest/database/RS02_scan_modulo_glitch3 | 1 + regtest/database/RS02_scan_modulo_glitch4 | 1 + regtest/database/RS02_scan_shorter | 1 + .../RS03f_ecc_create_after_partial_read | 1 + regtest/database/RS03f_ecc_create_after_read | 1 + .../RS03f_ecc_recreate_after_read_rs01 | 1 + .../RS03f_ecc_recreate_after_read_rs02 | 1 + .../RS03f_ecc_recreate_after_read_rs03f | 1 + .../RS03f_ecc_recreate_after_read_rs03i | 1 + regtest/database/RS03f_read_bad_header | 1 + regtest/database/RS03f_read_good_verbose | 1 + regtest/database/RS03f_read_longer | 1 + regtest/database/RS03f_scan_bad_header | 1 + .../database/RS03f_scan_ecc_header_crc_error | 1 + regtest/database/RS03f_scan_good_verbose | 1 + regtest/database/RS03f_scan_longer | 1 + .../database/RS03f_scan_missing_ecc_header | 1 + .../RS03f_scan_missing_ecc_header_and_crc | 1 + ..._scan_missing_ecc_header_and_defective_crc | 1 + regtest/database/RS03i_missing_header | 11 +- regtest/database/RS03i_missing_header2 | 28 +- regtest/database/RS03i_missing_header3 | 463 ++- regtest/database/RS03i_missing_header4 | 3150 +++++++++-------- regtest/database/RS03i_missing_header5 | 263 ++ regtest/database/RS03i_missing_header6 | 263 ++ .../database/RS03i_missing_header_no_crcsec | 6 +- .../database/RS03i_missing_header_truncated | 29 +- regtest/database/RS03i_no_image | 2 +- regtest/database/RS03i_random_image | 2 +- .../database/RS03i_read_bad_header_exhaustive | 1 + ...3i_read_crc_section_with_uncorrectable_dsm | 2 +- regtest/database/RS03i_read_good_verbose | 1 + regtest/database/RS03i_read_longer | 1 + .../database/RS03i_read_missing_iso_header | 1 + .../RS03i_read_with_ecc_file_crc_block | 1 + .../database/RS03i_read_with_ecc_file_header | 1 + .../RS03i_read_with_missing_header_exhaustive | 1 + ...3i_read_with_missing_iso_header_exhaustive | 1 + regtest/database/RS03i_rediscover_170_roots | 11 +- .../RS03i_rediscover_170_roots-padding2 | 12 +- regtest/database/RS03i_rediscover_170_roots2 | 11 +- regtest/database/RS03i_rediscover_8_roots | 11 +- regtest/database/RS03i_rediscover_8_roots2 | 11 +- regtest/database/RS03i_scan_good_verbose | 1 + regtest/database/RS03i_scan_longer | 1 + regtest/database/RS03i_scan_missing_header | 1 + regtest/database/RS03i_scan_missing_header2 | 1 + regtest/database/RS03i_scan_missing_header3 | 1 + regtest/database/RS03i_scan_missing_header4 | 1 + .../RS03i_scan_missing_header_no_crcsec | 1 + .../RS03i_scan_missing_header_truncated | 1 + regtest/database/RS03i_scan_random_image | 1 + .../database/RS03i_scan_rediscover_170_roots | 1 + .../RS03i_scan_rediscover_170_roots-padding | 1 + .../RS03i_scan_rediscover_170_roots-padding2 | 1 + .../database/RS03i_scan_rediscover_170_roots2 | 1 + .../database/RS03i_scan_rediscover_8_roots | 1 + .../database/RS03i_scan_rediscover_8_roots2 | 1 + .../database/RS03i_with_ecc_file_crc_block | 2 + regtest/database/RS03i_with_ecc_file_header | 2 + regtest/rs01.bash | 68 +- regtest/rs02.bash | 320 +- regtest/rs03f.bash | 43 +- regtest/rs03i.bash | 321 +- scripts/bash-based-configure | 45 +- scripts/time-stamper.bash | 6 +- src/bitmap.c | 2 + src/cacheprobe.c | 4 +- src/closure.c | 221 +- src/crc32.c | 2 + src/crcbuf.c | 54 +- src/curve.c | 70 +- src/debug.c | 3 +- src/ds-marker.c | 59 +- src/dvdisaster.c | 28 +- src/dvdisaster.h | 363 +- src/ecc-rs01.c | 29 +- src/ecc-rs02.c | 28 +- src/ecc-rs03.c | 27 +- src/endian.c | 2 + src/galois.c | 2 + src/help-dialogs.c | 86 +- src/heuristic-lec.c | 2 + src/icon-factory.c | 7 +- src/image.c | 26 +- src/l-ec.c | 3 +- src/large-io.c | 20 +- src/logfile.c | 2 + src/main-window.c | 108 +- src/maintenance.c | 2 + src/medium-info.c | 234 +- src/memtrack.c | 2 + src/menubar.c | 88 +- src/method.c | 2 + src/misc-gui.c | 667 ++++ src/misc.c | 800 +---- src/preferences.c | 1026 +++--- src/print-sense.c | 2 + src/raw-editor.c | 74 +- src/raw-sector-cache.c | 26 +- src/read-adaptive-window.c | 61 +- src/read-adaptive.c | 346 +- src/read-linear-window.c | 109 +- src/read-linear.c | 440 ++- src/recover-raw.c | 32 +- src/rs-decoder.c | 2 + src/rs-encoder-altivec.c | 2 + src/rs-encoder-sse2.c | 2 + src/rs-encoder.c | 2 + src/rs01-common.c | 36 +- src/rs01-create.c | 192 +- src/rs01-fix.c | 185 +- src/rs01-includes.h | 6 - src/rs01-verify.c | 493 +-- src/rs01-window.c | 148 +- src/rs02-common.c | 12 +- src/rs02-create.c | 128 +- src/rs02-fix.c | 150 +- src/rs02-includes.h | 6 - src/rs02-recognize.c | 27 +- src/rs02-verify.c | 418 +-- src/rs02-window.c | 356 +- src/rs03-common.c | 3 +- src/rs03-create.c | 242 +- src/rs03-fix.c | 195 +- src/rs03-includes.h | 8 - src/rs03-preferences.c | 213 +- src/rs03-recognize.c | 2 + src/rs03-verify.c | 621 ++-- src/rs03-window.c | 43 +- src/scsi-freebsd.c | 2 + src/scsi-layer.c | 30 +- src/scsi-linux.c | 2 + src/scsi-netbsd.c | 2 + src/scsi-simulated.c | 2 + src/scsi-unknown.c | 6 +- src/show-html.c | 408 --- src/show-manual.c | 33 +- src/smart-lec.c | 2 + src/spiral.c | 53 +- src/udf.c | 7 +- src/welcome-window.c | 33 +- 196 files changed, 17479 insertions(+), 15516 deletions(-) create mode 100644 misc-gui.c create mode 100644 regtest/database/RS03i_missing_header5 create mode 100644 regtest/database/RS03i_missing_header6 create mode 100644 src/misc-gui.c delete mode 100644 src/show-html.c diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index edda455..704def3 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -19,7 +19,7 @@ jobs: msystem: MINGW32 grep: 386 - ui: cli - clionly: --with-cli-only + clionly: --with-gui=no defaults: run: shell: msys2 {0} @@ -78,7 +78,7 @@ jobs: - name: install prerequisites run: sudo apt update && sudo apt install -y libglib2.0-dev ghostscript man - name: configure - run: ./configure --with-cli-only + run: ./configure --with-gui=no - name: make run: nproc && make -j$(nproc) && make static && mv -f dvdisaster-static dvdisaster - name: check executable diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index f3c7ba0..ab69b79 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -18,7 +18,7 @@ jobs: msystem: MINGW32 grep: 386 - ui: cli - clionly: --with-cli-only + clionly: --with-gui=no - printf: fmtdbg debugprintf: --with-debug-printf-format defaults: @@ -75,7 +75,7 @@ jobs: printf: [fmtdbg, normal] include: - ui: cli - clionly: --with-cli-only + clionly: --with-gui=no - printf: fmtdbg debugprintf: --with-debug-printf-format steps: diff --git a/CHANGELOG b/CHANGELOG index e213a0b..00ac366 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -20,6 +20,64 @@ # You should have received a copy of the GNU General Public License # along with dvdisaster. If not, see . +0.79.10.patchlevel-1 09-10-2021 *UNOFFICIAL* +- sync: integrated changes from latest upstream, + please refer to the entries below for details. + +0.79.10 24-09-2021 + - command line only version can be generated by + using ./configure --with-gui=no + The cli version will not be linked against gtk+ and it auxiliary libs. + However, glib is still required as it provides some basic functionality + for multithreading and string operations. + - Fixed a checksum buffering bug which was introduced in 0.79.6: + If user reads in CD A, then switches to image of CD B in the file dialogue + and creates error correction data, depending on the codec some invalid + checksums from CD A will be drawn into the ecc data for CD B. + - Fixed crc buf related memory leak while reading/scanning + - run_regtest will now insist that both image and ecc arguments are given. + This prevents stale arguments when running in GUI mode. + - Test case motivated changes/fixes: + - in general: fixed missing/inappropriate parameters in test cases for GUI mode + - RS01_scan_tao_tail_with_ecc + corrected wording of warning message (scan mode won't alter the image) + - RS01_scan_medium_with_dsm + RS01_read_medium_with_dsm + substantiated reading summary + - RS01_read_medium_with_dsm_in_image + removed reporting of displaced sectors in the image (only displaced + sectors in the medium matter!) + - RS02_ecc_recreate_after_read_rs02 + crc buf now considered valid (when stripping the data portion from + the read image) + - RS03i_plus_56_bytes + RS03i_with_ecc_file_header + fixed misconfiguration of testcase for GUI + - RS03i_missing_header (and most following verify tests) + prognosis would declare image as uncorrectable because treatment + of unreadable ECC headers was broken. + - RS03i_missing_header3/4 + Test case created an uncorrectable image (which did test the required + properties, though). Changed to a test-equvalent correctable image. + - RS03f_ecc_recreate_after_read_rs02 + rs03-create.c:prepare_header() called CrcBufValid() with wrong values when + creating error correction files for an already augmented image. + - Merged fixes from Stéphane Lesimple's version + - printf argument debugging and PRId64 etc. format strings + - -Werror setting + - "easy" patches; non-trivial changes have been noted and + will be processed later + - Merged Debian patches: + 08 gmake detection + 10 dvdisaster.desktop + 12 up to spelling + 17 API warnings (partially merged) + 29 fix more typos + 33 - obsoleted - + 34 format security warning + 35 archived homepage (rewritten with references to the pdf manuals) + + 0.79.9 14-05-2021 - Revised code for clean compile under gcc-10 and Debian 11 (sid) or Slackware 15 - added -Wno-deprecated-declarations to shield against a flood of warnings @@ -159,8 +217,6 @@ amending the source files to make the CLI-only version possible. This hopefully removes a few quirks without adding too many. -THE ORIGINAL UPSTREAM CHANGELOG IS KEPT BELOW: - 0.79.6 20-11-2017 - The Verify/Test option will now output dvdisaster version numbers always in x.yy.zz format, as the old scheme diff --git a/CREDITS.de b/CREDITS.de index 9cbb94b..bbf157e 100644 --- a/CREDITS.de +++ b/CREDITS.de @@ -34,6 +34,11 @@ Phil Karn Originalversion von Phils Bibliothek herunterladen, wenn Sie Reed-Solomon-Kode in Ihren eigenen Programmen verwenden möchten. +Stéphane Lesimple + hat das Projekt in einem eigenen GIT-Repository am Leben erhalten + sowie Patches und Erweiterungen beigesteuert. Er stellt weiterhin + eine Windows-Version bereit. + Daniel Nylander (info@danielnylander.se) erstellt und pflegt die schwedische Übersetzung. diff --git a/CREDITS.en b/CREDITS.en index fb3dc95..b9aeebd 100644 --- a/CREDITS.en +++ b/CREDITS.en @@ -32,6 +32,10 @@ Phil Karn special needs, you should get the original thing if you're interested in incorporating RS codes into your application. +Stéphane Lesimple + for keeping the project alive in his own GIT repository, and + for supplying patches, enhancements and the Windows version. + Daniel Nylander (info@danielnylander.se) provides and maintains the Swedish translation. diff --git a/GNUmakefile.template b/GNUmakefile.template index 2cd5b44..fc3ee59 100644 --- a/GNUmakefile.template +++ b/GNUmakefile.template @@ -64,6 +64,10 @@ INTL_LIBS = $(CFG_INTL_LIBS) CAM_LFLAGS = $(CFG_CAM_LFLAGS) CAM_LIBS = $(CFG_CAM_LIBS) +GLIB_CFLAGS = $(CFG_GLIB2_CFLAGS) +GLIB_LIBS = $(CFG_GLIB2_LIBS) +GLIB_BINDIR = $(CFG_GLIB2_BINDIR) + GTK_CFLAGS = $(CFG_GTK2_CFLAGS) $(CFG_GLIB2_CFLAGS) GTK_LIBS = $(CFG_GTK2_LIBS) $(CFG_GLIB2_LIBS) GTK_BINDIR = $(CFG_GTK2_BINDIR) $(CFG_GLIB2_BINDIR) @@ -80,10 +84,10 @@ SSE2_OPTIONS = $(CFG_SSE2_OPTIONS) ALTIVEC_OPTIONS = $(CFG_ALTIVEC_OPTIONS) LOCATIONS = -DSRCDIR="\"$(SRCDIR)\"" -DBINDIR="\"$(BINDIR)\"" -DDOCDIR="\"$(DOCSUBDIR)\"" -DLOCALEDIR="\"$(LOCALEDIR)\"" -COPTS = $(CFLAGS) $(LOCATIONS) $(SYS_OPTIONS) $(SYS_NAME) $(HAVE_OPTIONS) $(WITH_OPTIONS) $(OTHER_OPTIONS) $(INTL_INCL) $(CAM_INCL) $(GTK_CFLAGS) $(MUDFLAP_CFLAGS) -LOPTS = $(LDFLAGS) $(INTL_LFLAGS) $(CAM_LFLAGS) $(EFENCE_LFLAGS) $(MUDFLAP_LFLAGS) +COPTS = $(CFLAGS) $(LOCATIONS) $(SYS_OPTIONS) $(SYS_NAME) $(HAVE_OPTIONS) $(WITH_OPTIONS) $(OTHER_OPTIONS) $(INTL_INCL) $(CAM_INCL) $(GTK_CFLAGS) $(GLIB_CFLAGS) +LOPTS = $(LDFLAGS) $(INTL_LFLAGS) $(CAM_LFLAGS) $(EFENCE_LFLAGS) -LIBS = $(INTL_LIBS) $(CAM_LIBS) $(GTK_LIBS) $(EFENCE_LIBS) $(MUDFLAP_LIBS) -lm +LIBS = $(INTL_LIBS) $(CAM_LIBS) $(GTK_LIBS) $(GLIB_LIBS) $(EFENCE_LIBS) -lm CFILES = $(CFG_CFILES) OFILES = $(CFG_OFILES) @@ -102,7 +106,7 @@ endif all: dvdisaster -src/build.h: +src/build.h: configure @echo "Updating:" src/build.h @$(SRCDIR)/scripts/time-stamper.bash $(SRCDIR)/src/build.h @@ -349,6 +353,7 @@ distclean: clean @echo "Removing configuration files" @rm -f configure.log Makefile.config src/build.h GNUmakefile locale/Makefile @for i in locale/?? locale/??_??; do rm -rf $$i; done + @rm -f dvdisaster-debug clean: @echo "Removing rebuildable files" diff --git a/README.md b/README.md index fdf4a5c..4a675a2 100644 --- a/README.md +++ b/README.md @@ -1,38 +1,54 @@ # :cd: What is dvdisaster? -**dvdisaster** provides additional [ECC](https://en.m.wikipedia.org/wiki/Error_correction_code) protection for optical media. If a medium gets damaged, dvdisaster can recover it as long as the amount of damage is smaller than the amount of ECC data you added to protect it. +**dvdisaster** provides additional [ECC](https://en.m.wikipedia.org/wiki/Error_correction_code) protection for optical media. +If a medium gets damaged, dvdisaster can recover it as long as the amount of damage is smaller than the amount of ECC data you added to protect it. -It can loosely be compared to [.par2](https://en.m.wikipedia.org/wiki/Parchive) files, but the protection works at the *iso* level instead of working at the file level. This way, even if metadata from the optical medium filesystem is damaged, dvdisaster can still work flawlessly. +It can loosely be compared to [.par2](https://en.m.wikipedia.org/wiki/Parchive) files, but the protection works at the *iso* level instead of working at the file level. +This way, even if metadata from the optical medium filesystem is damaged, dvdisaster can still work flawlessly. Please refer to the [PDF manual](documentation/user-manual/manual.pdf) for more information. # :wrench: Unofficial version -The last upstream version by Carsten Gnörlich is dated 2017, and could be found on the [official](https://web.archive.org/web/20180428070843/http://dvdisaster.net/en/index.html) [website](https://web.archive.org/web/20180509154525/http://dvdisaster.org/en/index.html) which is [now](http://www.dvdisaster.net) [down](http://www.dvdisaster.org). The original source code [repository](https://sourceforge.net/projects/dvdisaster/files/dvdisaster) doesn't have it, but [Debian sources](https://sources.debian.org/src/dvdisaster/) does, thanks to the maintainer there. +The last upstream version by Carsten Gnörlich is dated 2017, and could be found on the +[official](https://web.archive.org/web/20180428070843/http://dvdisaster.net/en/index.html) +[website](https://web.archive.org/web/20180509154525/http://dvdisaster.org/en/index.html) +which is [now](http://www.dvdisaster.net) [down](http://www.dvdisaster.org). +The original source code [repository](https://sourceforge.net/projects/dvdisaster/files/dvdisaster) doesn't have it, +but [Debian sources](https://sources.debian.org/src/dvdisaster/) does, thanks to the maintainer there. The original [README](README) has been left untouched in this repository. + This version is built on top of the latest upstream version, with the following notable enhancements: - Added pre-defined sizes for BD-R Triple Layer (100GB), BD-R Quadruple Layer (128GB) - Added an option to use more space for ECC on BD-R - Windows build supported again (it was dropped upstream a few versions back) -- A new CLI-only version, not depending on gtk (`./configure --with-cli-only && make clean && make -j4`) +- A new CLI-only version, not depending on gtk (`./configure --with-gui=no && make clean && make -j4`) - Non-regression tests on each code change, for Linux64 and Windows32/64, CLI and GUI versions - Prebuilt binaries for Windows32, Windows64, Linux64 (static builds and AppImage builds), CLI and GUI versions - Fixed a bunch of (minor) quirks, a few (minor) bugs, added a couple (minor) features Please refer to the [CHANGELOG](CHANGELOG) for all the details. -:loudspeaker: This version will never break compatibility with upstream versions, the goal is to ensure an optical media protected by upstream dvdisaster will still be able to be repaired with this version 10+ years from now. Regression tests are here to ensure this is the case. +:loudspeaker: As of 2021, upstream development resumed [on a new website](https://dvdisaster.jcea.es/). +We're working with the new team to upstream as much code as possible from this unofficial version. +Even if at some point we succeed in upstreaming all our patches, and both codebases are exactly the same, +this repository will stay up as it provides automated tests and prebuilt binaries. -## :twisted_rightwards_arrows: Choose between 3 protection modes ("codecs") +This version will never break compatibility with upstream versions, +the goal is to ensure an optical media protected by upstream dvdisaster will still be able to be repaired +with this version 10+ years from now. Regression tests are here to ensure this is the case. + +## :twisted_rightwards_arrows: 3 available protection modes ("codecs") For a more detailed explanation of the algorithms, please refer to the [codecs specification PDF](documentation/codecs.pdf). :one: **RS01** creates error correction files which are stored separately from the image they belong to. The artefact is an **ecc** file, which must be stored on another media than the one we're protecting. -:two: **RS02** creates error correction data which is added to the medium to protect, we call this *augmenting* the image we're protecting. Damaged sectors in the error correction information reduce the data recovering capacity, but do not make recovery impossible - a second medium for keeping or protecting the error correction -information is not required. +:two: **RS02** creates error correction data which is added to the medium to protect, we call this *augmenting* the image we're protecting. +Damaged sectors in the error correction information reduce the data recovering capacity, +but do not make recovery impossible - a second medium for keeping or protecting the error correction information is not required. :three: **RS03** is a further development of RS01 and RS02. It can create both error correction files and augmented images, with the following added features: @@ -57,8 +73,10 @@ Rough comparison table: # :bulb: Rationale -Even if the optical media era is sunsetting now, and has been for a few years, it's still of some value for off-site backups. In any case, we still have media in our hands that we want to be able to repair, should it be damaged, during the next years/decades. Repairing is actually pretty much the very reason of dvdisaster existence (as long as parity data has been added, of course). -The idea of this unofficial version is to ensure dvdisaster doesn't get hard to find, use or compile, should upstream development never resume (we hope it does!). +Even if the optical media era is sunsetting now, and has been for a few years, it's still of some value for off-site backups. +In any case, we still have media in our hands that we want to be able to repair, should it be damaged, during the next years/decades. +Repairing is actually pretty much the very reason of dvdisaster existence (as long as parity data has been added, of course). +The idea of this unofficial version is to ensure dvdisaster doesn't get hard to find, use or compile, ~~should upstream development never resume (we hope it does!)~~ This is also why precompiled Windows binaries and a precompiled static CLI-only Linux version are available here. # :hammer: Compiling diff --git a/TODO b/TODO index f4465eb..4e6c8ae 100644 --- a/TODO +++ b/TODO @@ -2,18 +2,21 @@ Tentative to do/ release schedule Versions 0.79.x: development releases -* restart project, catch up wich recent compiler and OS version, +* restart project, catch up wich recent compiler and OS version * last releases with gtk-2 work in progress (this release): -- clean build for gcc-10 (Slackware 15, Debian testing) +- split GUI code from core source to allow for command-line only build (done) +- merge patches from Stphane Lesimple (done) and Debian (done) -upcoming (next releases): +upcoming (next stable release): -- split GUI code from core source to allow for command-line only build - restore adaptive reading for all codecs +(no more releases for 0.79.x planned; + except for maintenance issues should the need arise) + Versions 0.80.x: development releases * gtk-4 migration * lots of micro releases to revive the project and resolve outstanding issues @@ -22,14 +25,14 @@ Versions 0.80.x: development releases - remove obsolete features, especially from the GUI - ... many more will likely be added ... -Version 0.82: next milestone/stable release +Version 0.82: milestone/stable release - RS03 encoding considered feature complete Version 0.83: development releases - multithreaded decoding (error correction/repair) for RS01/RS02/RS03 -Version 0.84: milestone release +Version 0.84: milestone/stable release - RS03 decoding considered feature complete Version 0.90: diff --git a/configure b/configure index 663110b..f090d3c 100755 --- a/configure +++ b/configure @@ -39,8 +39,8 @@ fi # Set the package name and version -PACKAGE dvdisaster 0.79.9 -DEFINE_INT PATCHLEVEL 9 +PACKAGE dvdisaster 0.79.10 +DEFINE_INT PATCHLEVEL 1 DEFINE_STRING HAVE_UNSTABLE_RELEASE 1 DEFINE_STRING HOMEPAGE "https://dvdisaster.jcea.es" @@ -66,16 +66,10 @@ GET_BUILDTMP PRINT_MESSAGE "\nDetermining build flavor:" -# old way of specifying --with-cli-only -if [ "$CLI_ONLY" = 1 ]; then - cfg_with_cli_only=yes - unset CLI_ONLY -fi - -WITH_OPTION cli-only no "[yes | no]" +WITH_OPTION gui yes "[yes | no]" # Remove the useless CLI console under windows -if [[ $(uname) =~ MINGW ]] && [ "$cfg_with_cli_only" != "yes" ]; then +if [[ $(uname) =~ MINGW ]] && [ "$cfg_with_gui" == "yes" ]; then CFG_LDFLAGS="$CFG_LDFLAGS -mwindows" fi @@ -84,10 +78,11 @@ fi PRINT_MESSAGE "\nLooking for includes and libraries:" REQUIRE_GLIB2 2 32 0 -if test "$cfg_with_cli_only" != "yes"; then +echo + +if test "$cfg_with_gui" == "yes"; then REQUIRE_GTK2 2 6 0 WITH_THREADS fi -echo if ! CHECK_INCLUDE locale.h locale || ! CHECK_INCLUDE libintl.h intl ; then echo " [previous test forces -with-nls=no]" @@ -148,7 +143,7 @@ if ! EXECUTE_PROGRAM "xgettext --help" xgettext \ cfg_force_with_nls=no fi -if test "$cfg_with_cli_only" != "yes"; then +if test "$cfg_with_gui" == "yes"; then if ! EXECUTE_PROGRAM "gdk-pixbuf-csource --help" gdk_pixbuf_csource ; then echo "* gdk-pixbuf not installed" echo "* or path to gdk-pixbuf-csource is missing." @@ -209,9 +204,6 @@ cfiles="src/method-link.c" ofiles="$BUILDTMP/method-link.o" for cfile in src/*.c; do - if test "$cfg_with_cli_only" == "yes"; then - grep -q 'DVDISASTER_GUI_FILE' "$cfile" && continue - fi cfile_prefix=`echo $cfile | sed -e 's/\.c//'` cfiles="$cfiles $cfile" ofiles="$ofiles $BUILDTMP/$(basename $cfile_prefix.o)" @@ -221,7 +213,7 @@ done echo echo -e "\nCFG_CFILES = $cfiles" >> Makefile.config echo "CFG_OFILES = $ofiles" >> Makefile.config -if test "$cfg_with_cli_only" != "yes"; then +if test "$cfg_with_gui" == "yes"; then echo "ICONS = src/inlined-icons.h" >> Makefile.config fi diff --git a/locale/cs.po b/locale/cs.po index 8287990..d6149f7 100644 --- a/locale/cs.po +++ b/locale/cs.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: dvdisaster 0.79\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-06-27 23:00+0200\n" +"POT-Creation-Date: 2021-10-09 14:18+0200\n" "PO-Revision-Date: 2011-07-24 21:12+0100\n" "Last-Translator: Jindřich Šesták \n" "Language-Team: none (individual translator)\n" @@ -22,7 +22,7 @@ msgstr "" "X-Poedit-Basepath: d:\\Preklady\\dvdisaster\\cvs\n" "X-Poedit-SearchPath-0: dvdisaster\n" -#: src/closure.c:391 +#: src/closure.c:296 #, c-format msgid "" "# dvdisaster-%s configuration file\n" @@ -35,58 +35,58 @@ msgstr "" "# každém spuštění programu.\n" "\n" -#: src/closure.c:613 +#: src/closure.c:564 msgid "medium.iso" msgstr "disc.iso" -#: src/closure.c:614 +#: src/closure.c:565 msgid "medium.ecc" msgstr "disc.ecc" -#: src/closure.c:615 +#: src/closure.c:566 msgid "sector-" msgstr "sektor-" -#: src/debug.c:56 src/debug.c:155 src/debug.c:293 +#: src/debug.c:58 src/debug.c:157 src/debug.c:295 #, c-format msgid "Number of erasures must be > 0 and <= %d\n" msgstr "Počet výmazů musí být > 0 a <= %d\n" -#: src/debug.c:70 src/debug.c:160 +#: src/debug.c:72 src/debug.c:162 #, c-format msgid "" "\n" "Generating random correctable erasures (%s; for %d roots, max erasures = %d).\n" msgstr "" -#: src/debug.c:103 src/debug.c:191 src/debug.c:239 src/debug.c:363 -#: src/debug.c:707 src/debug.c:807 src/debug.c:850 src/debug.c:1181 -#: src/debug.c:1189 src/debug.c:1266 src/rs01-common.c:175 -#: src/rs02-common.c:239 src/rs02-create.c:377 src/rs02-create.c:1032 -#: src/rs02-fix.c:414 src/rs02-verify.c:404 src/rs03-common.c:340 -#: src/rs03-create.c:756 src/rs03-create.c:781 +#: src/debug.c:105 src/debug.c:193 src/debug.c:241 src/debug.c:365 +#: src/debug.c:708 src/debug.c:808 src/debug.c:851 src/debug.c:1182 +#: src/debug.c:1190 src/debug.c:1267 src/rs01-common.c:177 +#: src/rs02-common.c:241 src/rs02-create.c:347 src/rs02-create.c:990 +#: src/rs02-fix.c:381 src/rs02-verify.c:398 src/rs03-common.c:341 +#: src/rs03-create.c:729 src/rs03-create.c:754 #, c-format msgid "Failed seeking to sector % in image: %s" msgstr "Nezdařil se přechod na sektor % bitové kopie: %s" -#: src/debug.c:111 src/debug.c:196 src/debug.c:243 src/debug.c:368 -#: src/debug.c:545 src/debug.c:662 src/debug.c:713 src/debug.c:1193 -#: src/debug.c:1270 src/debug.c:1310 src/rs02-create.c:400 -#: src/rs02-create.c:426 src/rs02-create.c:1035 src/rs03-create.c:761 -#: src/rs03-create.c:785 src/udf.c:830 src/udf.c:888 src/udf.c:945 -#: src/udf.c:958 src/udf.c:963 src/udf.c:966 src/udf.c:969 src/udf.c:972 -#: src/udf.c:975 src/udf.c:978 +#: src/debug.c:113 src/debug.c:198 src/debug.c:245 src/debug.c:370 +#: src/debug.c:546 src/debug.c:663 src/debug.c:714 src/debug.c:1194 +#: src/debug.c:1271 src/debug.c:1311 src/rs02-create.c:370 +#: src/rs02-create.c:396 src/rs02-create.c:993 src/rs03-create.c:734 +#: src/rs03-create.c:758 src/udf.c:831 src/udf.c:889 src/udf.c:946 +#: src/udf.c:959 src/udf.c:964 src/udf.c:967 src/udf.c:970 src/udf.c:973 +#: src/udf.c:976 src/udf.c:979 #, c-format msgid "Failed writing to sector % in image: %s" msgstr "Nezdařil se zápis sektoru % bitové kopie: %s" -#: src/debug.c:119 src/debug.c:249 src/debug.c:374 src/debug.c:666 -#: src/debug.c:720 src/debug.c:1284 +#: src/debug.c:121 src/debug.c:251 src/debug.c:376 src/debug.c:667 +#: src/debug.c:721 src/debug.c:1285 #, c-format msgid "Progress: %3d%%" msgstr "Průběh: %3d%%" -#: src/debug.c:124 src/debug.c:254 src/debug.c:379 +#: src/debug.c:126 src/debug.c:256 src/debug.c:381 #, c-format msgid "" "Progress: 100%%\n" @@ -97,7 +97,7 @@ msgstr "" "Před spuštěním dalšího --random-errors opravte bitovou kopii pomocí volby --fix,\n" "jinak nahromadíte >= %d výmazů/ECC blok a bitová kopie bude ztracena.\n" -#: src/debug.c:299 +#: src/debug.c:301 #, c-format msgid "" "\n" @@ -106,7 +106,7 @@ msgstr "" "\n" "RS03 soubor pro opravu chyb s %d bázemi.\n" -#: src/debug.c:300 +#: src/debug.c:302 #, c-format msgid "" "\n" @@ -115,18 +115,18 @@ msgstr "" "\n" "RS03 rozšířená bitová kopie s %d bázemi.\n" -#: src/debug.c:301 +#: src/debug.c:303 #, c-format msgid "Generating at most %d random correctable erasures.\n" msgstr "Vygeneruje až %d nahodilých opravitelných výmazů.\n" -#: src/debug.c:443 src/debug.c:501 src/debug.c:565 src/debug.c:606 -#: src/debug.c:689 src/debug.c:795 src/debug.c:836 src/debug.c:882 -#: src/debug.c:936 src/debug.c:1161 src/debug.c:1169 src/debug.c:1225 -#: src/debug.c:1230 src/misc.c:1393 src/raw-editor.c:364 src/read-adaptive.c:73 -#: src/read-adaptive.c:93 src/read-adaptive.c:1552 src/read-adaptive.c:1588 -#: src/read-linear.c:289 src/read-linear.c:291 src/read-linear.c:327 -#: src/read-linear.c:329 src/rs01-create.c:303 src/rs03-create.c:1352 +#: src/debug.c:445 src/debug.c:503 src/debug.c:566 src/debug.c:607 +#: src/debug.c:690 src/debug.c:796 src/debug.c:837 src/debug.c:883 +#: src/debug.c:937 src/debug.c:1162 src/debug.c:1170 src/debug.c:1226 +#: src/debug.c:1231 src/misc.c:763 src/raw-editor.c:366 src/read-adaptive.c:75 +#: src/read-adaptive.c:95 src/read-adaptive.c:1471 src/read-adaptive.c:1501 +#: src/read-linear.c:273 src/read-linear.c:275 src/read-linear.c:306 +#: src/read-linear.c:308 src/rs01-create.c:279 src/rs03-create.c:1308 #, c-format msgid "" "Can't open %s:\n" @@ -135,74 +135,74 @@ msgstr "" "Nepodařilo se otevřít %s:\n" "%s" -#: src/debug.c:448 src/debug.c:1140 src/debug.c:1216 +#: src/debug.c:450 src/debug.c:1141 src/debug.c:1217 msgid "2nd argument is missing" msgstr "chybí druhý argument" -#: src/debug.c:455 src/debug.c:1146 +#: src/debug.c:457 src/debug.c:1147 msgid "3rd argument is missing" msgstr "chybí třetí argument" -#: src/debug.c:462 src/debug.c:802 src/debug.c:843 src/debug.c:891 -#: src/debug.c:954 +#: src/debug.c:464 src/debug.c:803 src/debug.c:844 src/debug.c:892 +#: src/debug.c:955 #, c-format msgid "Sector must be in range [0..%]\n" msgstr "Sektor musí být v rozsahu [0..%]\n" -#: src/debug.c:465 +#: src/debug.c:467 msgid "Byte position must be in range [0..2047]" msgstr "Pozice bajtu musí výt v rozsahu [0..2047]" -#: src/debug.c:468 +#: src/debug.c:470 msgid "Byte value must be in range [0..255]" msgstr "Hodnota bajtu musí být v rozsahu [0..255]" -#: src/debug.c:470 +#: src/debug.c:472 #, c-format msgid "Setting byte %d in sector % to value %d.\n" msgstr "Nastavení bajtu %d sektoru % na hodnotu %d.\n" -#: src/debug.c:477 src/debug.c:531 src/debug.c:694 src/rs02-create.c:210 -#: src/rs02-verify.c:719 src/rs03-verify.c:1073 +#: src/debug.c:479 src/debug.c:532 src/debug.c:695 src/rs02-create.c:194 +#: src/rs02-verify.c:698 src/rs03-verify.c:990 #, c-format msgid "Failed seeking to start of image: %s\n" msgstr "Nezdařil se přechod na začátek bitové kopie: %s\n" -#: src/debug.c:481 +#: src/debug.c:483 msgid "Could not write the new byte value" msgstr "Nepodařilo se zapsat novou hodnotu bajtu" -#: src/debug.c:524 src/read-adaptive.c:830 +#: src/debug.c:525 src/read-adaptive.c:805 #, c-format msgid "Sectors must be in range [0..%].\n" msgstr "Sektory musí být v rozsahu [0..%].\n" -#: src/debug.c:526 +#: src/debug.c:527 #, c-format msgid "Erasing sectors [%,%]\n" msgstr "Probíhá mazání sektorů [%,%]\n" -#: src/debug.c:572 +#: src/debug.c:573 #, c-format msgid "New length must be in range [0..%].\n" msgstr "Nová délka musí být v rozsahu [0..%].\n" -#: src/debug.c:574 src/misc.c:1404 +#: src/debug.c:575 src/misc.c:774 #, c-format msgid "Truncating image to % sectors.\n" msgstr "Probíhá zkrácení bitové kopie na % sektorů.\n" -#: src/debug.c:579 src/misc.c:1425 src/read-linear.c:1477 src/rs01-fix.c:230 -#: src/rs01-fix.c:253 src/rs01-fix.c:275 src/rs01-fix.c:315 -#: src/rs02-create.c:117 src/rs02-create.c:171 src/rs02-fix.c:268 -#: src/rs02-fix.c:288 src/rs02-fix.c:306 src/rs03-create.c:256 -#: src/rs03-create.c:345 src/rs03-fix.c:298 src/rs03-fix.c:337 -#: src/rs03-fix.c:359 src/rs03-fix.c:379 +#: src/debug.c:580 src/misc.c:795 src/read-linear.c:1458 src/rs01-fix.c:219 +#: src/rs01-fix.c:242 src/rs01-fix.c:259 src/rs01-fix.c:293 +#: src/rs02-create.c:107 src/rs02-create.c:155 src/rs02-fix.c:240 +#: src/rs02-fix.c:260 src/rs02-fix.c:274 src/rs03-create.c:246 +#: src/rs03-create.c:327 src/rs03-fix.c:268 src/rs03-fix.c:304 +#: src/rs03-fix.c:326 src/rs03-fix.c:342 #, c-format msgid "Could not truncate %s: %s\n" msgstr "Nepodařilo se zkrátit %s: %s\n" -#: src/debug.c:610 +#: src/debug.c:611 #, c-format msgid "" "\n" @@ -221,8 +221,8 @@ msgstr "" "dvdisaster --debug %s % --random-seed %d\n" "\n" -#: src/debug.c:674 src/read-adaptive.c:382 src/read-linear.c:133 -#: src/read-linear.c:136 +#: src/debug.c:675 src/read-adaptive.c:382 src/read-linear.c:127 +#: src/read-linear.c:130 #, c-format msgid "" "Error closing image file:\n" @@ -231,11 +231,11 @@ msgstr "" "Při uzavírání souboru bitové kopie došlo k chybě:\n" "%s" -#: src/debug.c:690 +#: src/debug.c:691 msgid "Replacing the \"unreadable sector\" markers with zeros.\n" msgstr "Probíhá nahrazení indikátorů \"nečitelných sektorů\" nulami.\n" -#: src/debug.c:700 +#: src/debug.c:701 #, c-format msgid "" "Could not read image sector %:\n" @@ -244,20 +244,20 @@ msgstr "" "Nepodařilo se přečíst sektor % bitové kopie:\n" "%s\n" -#: src/debug.c:725 +#: src/debug.c:726 #, c-format msgid "% \"unreadable sector\" markers replaced.\n" msgstr "Nahrazeno % indikátorů \"nečitelných sektorů\".\n" -#: src/debug.c:811 src/debug.c:854 src/debug.c:1185 src/debug.c:1252 -#: src/debug.c:1256 src/debug.c:1306 src/rs01-common.c:191 -#: src/rs02-common.c:244 src/rs02-create.c:229 src/rs02-fix.c:417 -#: src/rs03-common.c:345 +#: src/debug.c:812 src/debug.c:855 src/debug.c:1186 src/debug.c:1253 +#: src/debug.c:1257 src/debug.c:1307 src/rs01-common.c:193 +#: src/rs02-common.c:246 src/rs02-create.c:211 src/rs02-fix.c:384 +#: src/rs03-common.c:346 #, c-format msgid "Failed reading sector % in image: %s" msgstr "Čtení sektoru % bitové kopie %s se nezdařilo" -#: src/debug.c:845 src/debug.c:894 src/debug.c:957 +#: src/debug.c:846 src/debug.c:895 src/debug.c:958 #, c-format msgid "" "Contents of sector %:\n" @@ -266,49 +266,49 @@ msgstr "" "Obsah sektoru %:\n" "\n" -#: src/debug.c:905 +#: src/debug.c:906 #, c-format msgid "Failed reading sector %: %s" msgstr "Čtení sektoru % se nezdařilo: %s" -#: src/debug.c:944 +#: src/debug.c:945 msgid "Raw reading only possible on CD media\n" msgstr "Přímé čtení je dostupné pouze pro CD disky\n" -#: src/debug.c:1152 +#: src/debug.c:1153 msgid "4th argument is missing" msgstr "chybí čtvrtý argument" -#: src/debug.c:1165 +#: src/debug.c:1166 #, c-format msgid "Source sector must be in range [0..%]\n" msgstr "Zdrojový sektor musí být v rozsahu [0..%]\n" -#: src/debug.c:1173 +#: src/debug.c:1174 #, c-format msgid "Destination sector must be in range [0..%]\n" msgstr "Cílový sektor musí být v rozsahu [0..%]\n" -#: src/debug.c:1177 +#: src/debug.c:1178 #, c-format msgid "Copying sector % from %s to sector % in %s.\n" msgstr "Probíhá kopírování sektoru % z %s do sektoru % na %s.\n" -#: src/ds-marker.c:267 +#: src/ds-marker.c:269 msgid "Stop reporting these errors" msgstr "Neupozorňovat na tyto chyby" -#: src/ds-marker.c:268 +#: src/ds-marker.c:270 msgid "Continue reporting" msgstr "Nadále upozorňovat" -#: src/ds-marker.c:302 +#: src/ds-marker.c:297 msgid "" "* ... more unrecoverable sectors found ...\n" "* further messages are suppressed unless the -v option is given.\n" msgstr "" -#: src/ds-marker.c:318 +#: src/ds-marker.c:311 #, c-format msgid "" "\n" @@ -323,7 +323,7 @@ msgstr "" "%s\n" "\n" -#: src/ds-marker.c:321 +#: src/ds-marker.c:312 #, c-format msgid "" "\n" @@ -334,7 +334,7 @@ msgid "" "* " msgstr "" -#: src/ds-marker.c:331 +#: src/ds-marker.c:322 #, c-format msgid "" "Unrecoverable sector found!\n" @@ -351,7 +351,7 @@ msgid "" "error correction data for it. Sorry for the bad news.\n" msgstr "" -#: src/ds-marker.c:358 +#: src/ds-marker.c:345 #, c-format msgid "" "Unrecoverable sector found!\n" @@ -368,7 +368,7 @@ msgid "" "error correction data for it. Sorry for the bad news.\n" msgstr "" -#: src/ds-marker.c:388 +#: src/ds-marker.c:371 #, c-format msgid "" "Unrecoverable sector found!\n" @@ -395,7 +395,7 @@ msgstr "" "být pomocí dvdisaster opravena. Také nebude možné pro ní vytvořit\n" "data pro opravu chyb. Omlouváme se za tyto špatné správy.\n" -#: src/ds-marker.c:415 +#: src/ds-marker.c:394 #, c-format msgid "" "Unrecoverable sector found!\n" @@ -411,83 +411,83 @@ msgstr "" #. TRANSLATORS: #. This is a dummy entry which is supposed to translate into "ok". #. Please do not return anything else here. -#: src/dvdisaster.c:168 src/dvdisaster.c:180 +#: src/dvdisaster.c:170 src/dvdisaster.c:182 msgid "test phrase for verifying the locale installation" msgstr "ok" -#: src/dvdisaster.c:372 +#: src/dvdisaster.c:374 msgid "-o/--ecc-target expects 'file' or 'image'" msgstr "-o/--ecc-target očekává 'file' nebo 'image'" -#: src/dvdisaster.c:398 +#: src/dvdisaster.c:400 #, c-format msgid "--threads must be 1..%d\n" msgstr "--threads musí být 1..%d\n" -#: src/dvdisaster.c:415 +#: src/dvdisaster.c:417 msgid "--cache-size must at least be 8MiB; 16MiB or higher is recommended." msgstr "--cache-size musí být minimálně 8MiB; doporučeno je 16MiB nebo více." -#: src/dvdisaster.c:417 +#: src/dvdisaster.c:419 #, c-format msgid "--cache-size maximum is %dMiB." msgstr "" -#: src/dvdisaster.c:440 +#: src/dvdisaster.c:442 msgid "--encoding-algorithm: SSE2 not supported on this processor!" msgstr "" -#: src/dvdisaster.c:444 +#: src/dvdisaster.c:446 msgid "--encoding-algorithm: valid types are 32bit, 64bit, SSE2" msgstr "" -#: src/dvdisaster.c:451 +#: src/dvdisaster.c:453 msgid "--encoding-algorithm: AltiVec not supported on this processor!" msgstr "" -#: src/dvdisaster.c:455 +#: src/dvdisaster.c:457 msgid "--encoding-algorithm: valid types are 32bit, 64bit, AltiVec" msgstr "" -#: src/dvdisaster.c:458 +#: src/dvdisaster.c:460 msgid "--encoding-algorithm: valid types are 32bit, 64bit" msgstr "" -#: src/dvdisaster.c:467 +#: src/dvdisaster.c:469 msgid "--encoding-io-strategy: mmap not supported on this OS" msgstr "" -#: src/dvdisaster.c:471 +#: src/dvdisaster.c:473 msgid "--encoding-io-strategy: valid types are readwrite and mmap" msgstr "" -#: src/dvdisaster.c:481 +#: src/dvdisaster.c:483 msgid "Valid args for --driver: sg,cdrom" msgstr "Platné parametry pro --driver: sg,cdrom" -#: src/dvdisaster.c:483 +#: src/dvdisaster.c:485 msgid "--driver is only supported on GNU/Linux" msgstr "--driver je podporován pouze v GNU/Linux" -#: src/dvdisaster.c:497 +#: src/dvdisaster.c:499 msgid "--fixed-speed-values is only allowed in debug mode" msgstr "" -#: src/dvdisaster.c:552 +#: src/dvdisaster.c:554 #, c-format msgid "--prefetch-sectors must be in range 32...%d" msgstr "" -#: src/dvdisaster.c:606 +#: src/dvdisaster.c:608 msgid "--set-version is only allowed in debug mode" msgstr "" -#: src/dvdisaster.c:713 +#: src/dvdisaster.c:715 #, c-format msgid "?? illegal getopt return value %d\n" msgstr "?? neplatná návratová hodnota getopt %d\n" -#: src/dvdisaster.c:806 src/main-window.c:149 +#: src/dvdisaster.c:808 src/main-window.c:153 #, c-format msgid "" "\n" @@ -498,8 +498,8 @@ msgstr "" "Metoda %s není k dispozici.\n" "Pro zobrazení seznamu metod použijte -m bez parametrů.\n" -#: src/dvdisaster.c:817 src/rs01-create.c:285 src/rs02-create.c:1075 -#: src/rs03-create.c:1320 +#: src/dvdisaster.c:819 src/rs01-create.c:261 src/rs02-create.c:1031 +#: src/rs03-create.c:1276 #, c-format msgid "" "\n" @@ -508,25 +508,25 @@ msgstr "" "\n" "Otevírání %s" -#: src/dvdisaster.c:824 src/rs01-create.c:294 src/rs02-create.c:175 -#: src/rs02-create.c:1085 src/rs03-create.c:349 src/rs03-create.c:1335 +#: src/dvdisaster.c:826 src/rs01-create.c:270 src/rs02-create.c:159 +#: src/rs02-create.c:1041 src/rs03-create.c:331 src/rs03-create.c:1291 #, c-format msgid ": % medium sectors.\n" msgstr ": % sektorů disku.\n" -#: src/dvdisaster.c:825 src/rs01-create.c:295 src/rs02-create.c:176 -#: src/rs02-create.c:1086 src/rs03-create.c:350 src/rs03-create.c:1336 +#: src/dvdisaster.c:827 src/rs01-create.c:271 src/rs02-create.c:160 +#: src/rs02-create.c:1042 src/rs03-create.c:332 src/rs03-create.c:1292 #, c-format msgid ": % medium sectors and %d bytes.\n" msgstr ": % sektorů disku a %d bajtů.\n" -#: src/dvdisaster.c:852 src/main-window.c:212 +#: src/dvdisaster.c:854 src/main-window.c:216 msgid "RS01 method not available for comparing files." msgstr "Metoda RS01 není pro porovnání souborů dostupná." #. TRANSLATORS: Program options like -r and --read are not to be translated #. to avoid confusion when discussing the program in international forums. -#: src/dvdisaster.c:950 +#: src/dvdisaster.c:952 msgid "" "\n" "Common usage examples:\n" @@ -552,7 +552,7 @@ msgstr "" " dvdisaster -u,--unlink # Po dokončení ostatních akcí smaže soubory ISO\n" "\n" -#: src/dvdisaster.c:960 +#: src/dvdisaster.c:962 #, c-format msgid "" "Drive and file specification:\n" @@ -569,23 +569,23 @@ msgstr "" " -e,--ecc eccsoubor - název souboru ECC (výchozí: disk.ecc)\n" " -o,--ecc-target [file|image] - kam uložit ecc data pro RS03\n" -#: src/dvdisaster.c:970 +#: src/dvdisaster.c:972 msgid "Tweaking options (see manual before using!)\n" msgstr "Možnosti optimalizace (před použitím si přečtěte návod!)\n" -#: src/dvdisaster.c:971 +#: src/dvdisaster.c:973 msgid " -a,--assume x,y,... - assume image is augmented with codec(s) x,y,...\n" msgstr " -a,--assume x,y,... - předpokl. bitovou kopii rozšířenou kodeky x,y,...\n" -#: src/dvdisaster.c:972 +#: src/dvdisaster.c:974 msgid " -j,--jump n - jump n sectors forward after a read error (default: 16)\n" msgstr " -j,--jump n - po chybě čtení přeskočit n sektorů (výchozí: 16)\n" -#: src/dvdisaster.c:973 +#: src/dvdisaster.c:975 msgid " -m n - list/select error correction methods (default: RS01)\n" msgstr " -m n - vypsat/vybrat metody opravy chyb (výchozí: RS01)\n" -#: src/dvdisaster.c:974 +#: src/dvdisaster.c:976 #, c-format msgid "" " -n,--redundancy n%% - error correction data redundancy\n" @@ -594,232 +594,236 @@ msgstr "" " -n,--redundancy n%% - redundance souboru pro opravu chyb\n" " povolené hodnoty závisí na kodeku (viz návod)\n" -#: src/dvdisaster.c:976 +#: src/dvdisaster.c:978 msgid " -v,--verbose - more diagnostic messages\n" msgstr " -v,--verbose - podrobnější diagnostický výpis\n" -#: src/dvdisaster.c:977 +#: src/dvdisaster.c:979 msgid " -x,--threads n - use n threads for en-/decoding (if supported by codec)\n" msgstr " -x,--threads n - pro kódování/dekódování použít n vláken (pokud to kodek podporuje)\n" -#: src/dvdisaster.c:978 +#: src/dvdisaster.c:980 msgid " --adaptive-read - use optimized strategy for reading damaged media\n" msgstr " --adaptive-read - použít optimalizovanou strategii čtení poškozených disků\n" -#: src/dvdisaster.c:979 +#: src/dvdisaster.c:981 msgid " --auto-suffix - automatically add .iso and .ecc file suffixes\n" msgstr " --auto-suffix - automaticky přidá k souborům přípony ISO a ECC\n" -#: src/dvdisaster.c:980 +#: src/dvdisaster.c:982 msgid " --cache-size n - image cache size in MiB during -c mode (default: 32MiB)\n" msgstr " --cache-size n - velikost mezipaměti v -c režimu (v MiB, výchozí: 32MiB)\n" -#: src/dvdisaster.c:981 +#: src/dvdisaster.c:983 msgid " --dao - assume DAO disc; do not trim image end\n" msgstr " --dao - předpokl. DAO disk; nezkracovat konec bitové kopie\n" -#: src/dvdisaster.c:982 +#: src/dvdisaster.c:984 msgid " --defective-dump d - directory for saving incomplete raw sectors\n" msgstr " --defective-dump d - adresář pro ukládání nezpracovaných sektorů\n" -#: src/dvdisaster.c:984 +#: src/dvdisaster.c:986 msgid " --driver=sg/cdrom - use sg(default) or alternative cdrom driver (see man page!)\n" msgstr " --driver=sg/cdrom - použít (výchozí) sg nebo alternativní cdrom ovladač (viz návod!)\n" -#: src/dvdisaster.c:986 +#: src/dvdisaster.c:988 msgid " --eject - eject medium after successful read\n" msgstr " --eject - po úspěšném načtení vysune disk\n" -#: src/dvdisaster.c:987 +#: src/dvdisaster.c:989 msgid " --encoding-algorithm n - possible values: 32bit,64bit,SSE2,AltiVec\n" msgstr "" -#: src/dvdisaster.c:988 +#: src/dvdisaster.c:990 msgid " --encoding-io-strategy n - possible values: readwrite, mmap\n" msgstr "" -#: src/dvdisaster.c:989 +#: src/dvdisaster.c:991 msgid " --fill-unreadable n - fill unreadable sectors with byte n\n" msgstr " --fill-unreadable n - vyplní nečitelné sektory bajtem n\n" -#: src/dvdisaster.c:990 +#: src/dvdisaster.c:992 msgid " --ignore-fatal-sense - continue reading after potentially fatal error conditon\n" msgstr " --ignore-fatal-sense - pokračovat ve čtení i po potenciálně neopravitelné chybě\n" -#: src/dvdisaster.c:991 +#: src/dvdisaster.c:993 msgid " --ignore-iso-size - ignore image size from ISO/UDF data (dangerous - see man page!)\n" msgstr " --ignore-iso-size - ignoruje údaj o velikosti bitové kopie z ISO/UDF (nebezpečné - čtěte manuál!)\n" -#: src/dvdisaster.c:992 +#: src/dvdisaster.c:994 msgid " --internal-rereads n - drive may attempt n rereads before reporting an error\n" msgstr " --internal-rereads n - mechanika může před nahlášením chyby zkusit n opakovaných čtení\n" -#: src/dvdisaster.c:993 +#: src/dvdisaster.c:995 msgid " --medium-info - print info about medium in drive\n" msgstr "" -#: src/dvdisaster.c:994 +#: src/dvdisaster.c:996 msgid " --no-bdr-defect-management - use bigger RS03 images for BD-R (see man page!)\n" msgstr "" -#: src/dvdisaster.c:995 +#: src/dvdisaster.c:997 msgid " --no-progress - do not print progress information\n" msgstr "" -#: src/dvdisaster.c:996 +#: src/dvdisaster.c:998 msgid " --old-ds-marker - mark missing sectors compatible with dvdisaster <= 0.70\n" msgstr " --old-ds-marker - použít označení chybějících sektorů kompatibilní s dvdisaster <= 0.70\n" -#: src/dvdisaster.c:997 +#: src/dvdisaster.c:999 msgid " --prefetch-sectors n - prefetch n sectors for RS03 encoding (uses ~nMiB)\n" msgstr " --prefetch-sectors n - pro RS03 kódování přednačíst n sektorů (používá ~nMiB)\n" -#: src/dvdisaster.c:998 +#: src/dvdisaster.c:1000 msgid " --raw-mode n - mode for raw reading CD media (20 or 21)\n" msgstr " --raw-mode n - režim přímého čtení pro CD disky (20 nebo 21)\n" -#: src/dvdisaster.c:999 +#: src/dvdisaster.c:1001 msgid " --read-attempts n-m - attempts n up to m reads of a defective sector\n" msgstr " --read-attempts n-m - zkusit n až m opakovaných čtení poškozeného sektoru\n" -#: src/dvdisaster.c:1000 +#: src/dvdisaster.c:1002 msgid " --read-medium n - read the whole medium up to n times\n" msgstr " --read-medium n - celý disk zkusit číst až n krát\n" -#: src/dvdisaster.c:1001 +#: src/dvdisaster.c:1003 msgid " --read-raw - performs read in raw mode if possible\n" msgstr " --read-raw - pokud je to možné, provede čtení v přímém režimu\n" -#: src/dvdisaster.c:1002 +#: src/dvdisaster.c:1004 msgid " --regtest - tweaks output for compatibility with regtests\n" msgstr "" -#: src/dvdisaster.c:1003 +#: src/dvdisaster.c:1005 msgid " --resource-file p - get resource file from given path\n" msgstr "" -#: src/dvdisaster.c:1004 +#: src/dvdisaster.c:1006 msgid " --speed-warning n - print warning if speed changes by more than n percent\n" msgstr " --speed-warning n - vypíše upozornění pokud se rychlost změní o více než n procent\n" -#: src/dvdisaster.c:1005 +#: src/dvdisaster.c:1007 msgid " --spinup-delay n - wait n seconds for drive to spin up\n" msgstr " --spinup-delay n - počká n sekund na roztočení mechaniky\n" -#: src/dvdisaster.c:1009 -msgid "Debugging options (purposefully undocumented and possibly harmful)\n" -msgstr "Možnosti ladění (záměrně nezdokumentované a eventuálně škodlivé)\n" - -#: src/dvdisaster.c:1010 -msgid " --debug - enables the following options\n" -msgstr " --debug - povolí použití následujících možností\n" - -#: src/dvdisaster.c:1011 -msgid " --permissive-medium-type - allow more media types, even theoretically unsupported ones\n" +#: src/dvdisaster.c:1008 +msgid " --version - print version and some configuration info\n" msgstr "" #: src/dvdisaster.c:1012 +msgid "Debugging options (purposefully undocumented and possibly harmful)\n" +msgstr "Možnosti ladění (záměrně nezdokumentované a eventuálně škodlivé)\n" + +#: src/dvdisaster.c:1013 +msgid " --debug - enables the following options\n" +msgstr " --debug - povolí použití následujících možností\n" + +#: src/dvdisaster.c:1014 +msgid " --permissive-medium-type - allow more media types, even theoretically unsupported ones\n" +msgstr "" + +#: src/dvdisaster.c:1015 msgid " --byteset s,i,b - set byte i in sector s to b\n" msgstr " --byteset s,i,b - nastaví bajt i sektoru s na b\n" -#: src/dvdisaster.c:1013 +#: src/dvdisaster.c:1016 msgid " --cdump - creates C #include file dumps instead of hexdumps\n" msgstr " --cdump - vytvoří výpis ve formátu C #include místo hexadecimálního\n" -#: src/dvdisaster.c:1014 +#: src/dvdisaster.c:1017 msgid " --compare-images a,b - compare sectors in images a and b\n" msgstr " --compare-images a,b - porovná sektory bitových kopií a a b\n" -#: src/dvdisaster.c:1015 +#: src/dvdisaster.c:1018 msgid " --copy-sector a,n,b,m - copy sector n from image a to sector m in image b\n" msgstr " --copy-sector a,n,b,m - zkopíruje sektor n bitové kopie a do sektoru m bitové kopie b\n" -#: src/dvdisaster.c:1016 +#: src/dvdisaster.c:1019 msgid " --erase sector - erase the given sector\n" msgstr " --erase sector - smaže daný sektor\n" -#: src/dvdisaster.c:1017 +#: src/dvdisaster.c:1020 msgid " --erase n-m - erase sectors n - m, inclusively\n" msgstr " --erase n-m - smaže sektory n - m, včetně\n" -#: src/dvdisaster.c:1018 +#: src/dvdisaster.c:1021 msgid " --examine-rs02 - force RS02 exhaustive search\n" msgstr "" -#: src/dvdisaster.c:1019 +#: src/dvdisaster.c:1022 msgid " --examine-rs03 - force RS03 exhaustive search\n" msgstr "" -#: src/dvdisaster.c:1020 +#: src/dvdisaster.c:1023 msgid " --fixed-speed-values - output fixed speed values for better output diffing\n" msgstr "" -#: src/dvdisaster.c:1021 +#: src/dvdisaster.c:1024 msgid " --ignore-rs03-header - ignore RS03 header when repairing (forcing a full search)\n" msgstr "" -#: src/dvdisaster.c:1022 +#: src/dvdisaster.c:1025 msgid " --marked-image n - create image with n marked random sectors\n" msgstr " --marked-image n - vytvoří bitovou kopii s n označenými náhodnými sektory\n" -#: src/dvdisaster.c:1023 +#: src/dvdisaster.c:1026 msgid " --merge-images a,b merge image a with b (a receives sectors from b)\n" msgstr " --merge-images a,b - sloučí bitové kopie a a b (a obdrží sektory z b)\n" -#: src/dvdisaster.c:1024 +#: src/dvdisaster.c:1027 msgid " --random-errors e - seed image with (correctable) random errors\n" msgstr "" -#: src/dvdisaster.c:1025 +#: src/dvdisaster.c:1028 msgid " --random-image n - create image with n sectors of random numbers\n" msgstr " --random-image n - vytvoří bitovou kopii s n sektory náhodných čísel\n" -#: src/dvdisaster.c:1026 +#: src/dvdisaster.c:1029 msgid " --random-seed n - random seed for built-in random number generator\n" msgstr " --random-seed n - základ pro zabudovaný generátor náhodných čísel\n" -#: src/dvdisaster.c:1027 +#: src/dvdisaster.c:1030 msgid " --raw-sector n - shows hexdump of the given raw sector from medium in drive\n" msgstr " --raw-sector n - zobrazí hexadecimální výpis daného nezpracovaného sektoru\n" -#: src/dvdisaster.c:1028 +#: src/dvdisaster.c:1031 msgid " --read-sector n - shows hexdump of the given sector from medium in drive\n" msgstr " --read-sector n - zobrazí hexadecimální výpis daného sektoru\n" -#: src/dvdisaster.c:1029 +#: src/dvdisaster.c:1032 msgid " --screen-shot - useful for generating screen shots\n" msgstr " --screen-shot - užitečné pro vytváření snímků obrazovky\n" -#: src/dvdisaster.c:1030 +#: src/dvdisaster.c:1033 msgid " --send-cdb arg - executes given cdb at drive; kills system if used wrong\n" msgstr " --send-cdb arg - vykoná na mechanice dané cdb; při špatném použití může zabít systém\n" -#: src/dvdisaster.c:1031 +#: src/dvdisaster.c:1034 msgid " --set-version - set program version for debugging purposes (dangerous!)\n" msgstr "" -#: src/dvdisaster.c:1032 +#: src/dvdisaster.c:1035 msgid " --show-header n - assumes given sector is a ecc header and prints it\n" msgstr "" -#: src/dvdisaster.c:1033 +#: src/dvdisaster.c:1036 msgid " --show-sector n - shows hexdump of the given sector in an image file\n" msgstr " --show-sector n - zobrazí hexadecimální výpis daného sektoru bitové kopie\n" -#: src/dvdisaster.c:1034 +#: src/dvdisaster.c:1037 msgid " --sim-cd image - simulate a SCSI-Level CD with contents supplied by the ISO image\n" msgstr "" -#: src/dvdisaster.c:1035 +#: src/dvdisaster.c:1038 #, c-format msgid " --sim-defects n - simulate n%% defective sectors on medium\n" msgstr " --sim-defects n - nasimuluje na disku n%% poškozených sektorů\n" -#: src/dvdisaster.c:1036 +#: src/dvdisaster.c:1039 msgid " --truncate n - truncates image to n sectors\n" msgstr " --truncate n - zkrátí bitovou kopii na n sektorů\n" -#: src/dvdisaster.c:1037 +#: src/dvdisaster.c:1040 msgid "" " --zero-unreadable - replace the \"unreadable sector\" markers with zeros\n" "\n" @@ -827,46 +831,46 @@ msgstr "" " --zero-unreadable - nahradit značky pro \"nečitelné sektory\" nulami\n" "\n" -#: src/dvdisaster.c:1067 +#: src/dvdisaster.c:1070 msgid "Optical drive 52X FW 1.02" msgstr "Optická mechanika 52X FW 1.02" -#: src/ecc-rs01.c:41 +#: src/ecc-rs01.c:43 msgid "Error correction file (RS01)" msgstr "Soubor pro opravu chyb (RS01)" -#: src/ecc-rs01.c:42 +#: src/ecc-rs01.c:44 msgid "Classic Reed-Solomon method based on polynomial arithmetic" msgstr "Klasická metoda Reed-Solomon založená na polynomiální aritmetice" -#: src/ecc-rs02.c:42 +#: src/ecc-rs02.c:44 msgid "Augmented image (RS02)" msgstr "Rozšířená bitová kopie (RS02)" -#: src/ecc-rs02.c:43 +#: src/ecc-rs02.c:45 msgid "Reed-Solomon method with improved tolerance for defective ecc data" msgstr "Metoda Reed-Solomon s vylepšenou odolností pro poškozená ecc data" -#: src/ecc-rs03.c:42 +#: src/ecc-rs03.c:44 msgid "Multithreaded RS codec (RS03)" msgstr "Vícevláknový RS kodek (RS03)" -#: src/ecc-rs03.c:43 +#: src/ecc-rs03.c:45 msgid "Multithreaded Reed-Solomon codec for error correction files and augmented images" msgstr "Vícevláknový Reed-Solomon kodek pro soubory pro opravu chyb a rozšířené bitové kopie" -#: src/endian.c:76 +#: src/endian.c:78 msgid "" "\n" "Contents of Ecc Header:\n" "\n" msgstr "" -#: src/help-dialogs.c:394 +#: src/help-dialogs.c:395 msgid "windowtitle|Log data" msgstr "Data záznamu" -#: src/help-dialogs.c:395 +#: src/help-dialogs.c:396 msgid "" "Log data\n" "Protocol of the current or previous action" @@ -874,11 +878,11 @@ msgstr "" "Data záznamu\n" " Záznam výstupu aktuální nebo předchozí akce" -#: src/help-dialogs.c:411 +#: src/help-dialogs.c:412 msgid "windowtitle|GNU General Public License" msgstr "GNU General Public License" -#: src/help-dialogs.c:412 +#: src/help-dialogs.c:413 msgid "" "GNU General Public License\n" "The license terms of dvdisaster." @@ -886,7 +890,7 @@ msgstr "" "GNU General Public License\n" "Licenční podmínky aplikace dvdisaster." -#: src/help-dialogs.c:502 +#: src/help-dialogs.c:503 #, c-format msgid "" "File\n" @@ -897,7 +901,7 @@ msgstr "" "%s\n" "neexistuje" -#: src/help-dialogs.c:512 +#: src/help-dialogs.c:513 #, c-format msgid "" "File\n" @@ -908,7 +912,7 @@ msgstr "" "%s\n" "není dostupný" -#: src/help-dialogs.c:524 +#: src/help-dialogs.c:525 msgid "" "\n" "<- Error: Text file truncated here" @@ -916,39 +920,17 @@ msgstr "" "\n" "<- Chyba: Textový soubor byl zkrácen" -#: src/help-dialogs.c:593 -msgid "windowtitle|Modifying dvdisaster" -msgstr "Úpravy dvdisaster" - -#: src/help-dialogs.c:594 -msgid "" -"Modifying dvdisaster\n" -"Your changes are not ours." -msgstr "" -"Úpravy dvdisaster\n" -"Vaše úpravy nejsou naše." - -#: src/help-dialogs.c:734 +#: src/help-dialogs.c:724 msgid "windowtitle|About dvdisaster" msgstr "O aplikaci dvdisaster" -#: src/help-dialogs.c:754 +#: src/help-dialogs.c:742 src/misc.c:219 msgid "" -"[Modified version]\n" -"Copyright 2019-2021 Stephane Lesimple\n" -"Copyright 2005-2017 Debian Optical Media Tools Team\n" -"Copyright 2004-2017 Carsten Gnoerlich" +"Copyright 2004-2017 Carsten Gnoerlich.\n" +"Copyright 2019-2021 The dvdisaster development team." msgstr "" -#: src/help-dialogs.c:760 src/misc.c:218 -msgid "Copyright 2004-2017 Carsten Gnoerlich" -msgstr "" -"Copyright 2004-2017 Carsten Gnörlich\n" -"Česká lokalizace\n" -"\t\t2011 Jindřich Šesták\n" -"\t\t2006 Luboš Staněk" - -#: src/help-dialogs.c:767 +#: src/help-dialogs.c:748 msgid "" "dvdisaster provides a margin of safety against data loss\n" "on optical media caused by aging or scratches.\n" @@ -960,7 +942,7 @@ msgstr "" "Vytvoří data pro opravu chyb, která je možné použít k obnovení\n" "nečitelných sektorů, pokud později dojde k poškození disku.\n" -#: src/help-dialogs.c:772 +#: src/help-dialogs.c:753 msgid "" "This software comes with absolutely no warranty.\n" "This is free software and you are welcome to redistribute it\n" @@ -970,26 +952,13 @@ msgstr "" "Jde o svobodný software a můžete jej šířit za dodržení\n" "podmínek [GNU General Public License].\n" -#: src/help-dialogs.c:778 +#: src/help-dialogs.c:758 msgid "" "\n" -"This version is not the original. It has been patched\n" -"for Debian to support DVD-ROMs (with and without encryption),\n" -"and subsequently patched again to support a CLI-only build, among other things.\n" -"\n" -"Please do not bother the original authors of dvdisaster nor the Debian maintainer\n" -"but submit bugreports against [GitHub] instead.\n" +"e-mail: support@dvdisaster.org" msgstr "" -#: src/help-dialogs.c:794 -msgid "" -"\n" -"e-mail: carsten@dvdisaster.org -or- cgnoerlich@fsfe.org" -msgstr "" -"\n" -"e-mail: carsten@dvdisaster.org -nebo- cgnoerlich@fsfe.org" - -#: src/help-dialogs.c:796 +#: src/help-dialogs.c:765 msgid "" "\n" "NetBSD port: Sergey Svishchev <svs@ropnet.ru>" @@ -997,12 +966,12 @@ msgstr "" "\n" "Port pro NetBSD: Sergey Svishchev <svs@ropnet.ru>" -#: src/image.c:153 src/image.c:158 +#: src/image.c:156 src/image.c:161 #, c-format msgid "Image file %s not present or permission denied.\n" msgstr "Bitová kopie %s neexistuje nebo byl zamítnut přístup.\n" -#: src/image.c:168 src/image.c:173 +#: src/image.c:172 src/image.c:177 msgid "" "\n" "Error correction file type unknown.\n" @@ -1010,13 +979,13 @@ msgstr "" "\n" "Neznámý typ opravného souboru.\n" -#: src/image.c:183 src/image.c:189 +#: src/image.c:188 src/image.c:194 msgid "" "\n" "Permission denied on ecc file (perhaps not writeable?).\n" msgstr "" -#: src/image.c:200 src/image.c:206 +#: src/image.c:206 src/image.c:212 msgid "" "\n" "No error correction file present.\n" @@ -1041,12 +1010,12 @@ msgstr "" "\n" "Poté co uvolníte nějaké místo, můžete operaci zopakovat." -#: src/main-window.c:67 +#: src/main-window.c:70 #, c-format msgid "log: %s\n" msgstr "" -#: src/main-window.c:93 +#: src/main-window.c:97 msgid "" "The .iso image and error correction file\n" "must not be the same file!\n" @@ -1062,7 +1031,7 @@ msgstr "" "pro opravu chyb, ponechejte název souboru pro\n" "opravu chyb prázdný." -#: src/main-window.c:103 +#: src/main-window.c:107 msgid "" "The error correction file type must not be \".iso\".\n" "\n" @@ -1076,204 +1045,204 @@ msgstr "" "ISO rozšířenou o data pro opravu chyb, ponechejte\n" "název souboru pro opravu chyb prázdný." -#: src/main-window.c:173 +#: src/main-window.c:177 msgid "Internal error: No suitable method for repairing image." msgstr "" -#: src/main-window.c:280 +#: src/main-window.c:284 msgid "button|Read" msgstr "Načíst" -#: src/main-window.c:283 +#: src/main-window.c:287 msgid "tooltip|Read Image" msgstr "Vytvořit bitovou kopii" -#: src/main-window.c:283 +#: src/main-window.c:288 msgid "Reads an optical disc image into a file (or tries to complete an existing image file)." msgstr "Vytvoří soubor bitové kopie CD/DVD (nebo se pokusí doplnit soubor existující bitové kopie)." -#: src/main-window.c:297 +#: src/main-window.c:302 msgid "button|Create" msgstr "Vytvořit" -#: src/main-window.c:300 +#: src/main-window.c:305 msgid "tooltip|Create error correction data" msgstr "Vytvořit data pro opravu" -#: src/main-window.c:300 +#: src/main-window.c:306 msgid "Creates error correction data. Requires an image file." msgstr "Vytvoří data pro opravu chyb. Vyžaduje soubor bitové kopie." -#: src/main-window.c:304 +#: src/main-window.c:310 msgid "button|Scan" msgstr "Zkontrolovat" -#: src/main-window.c:307 +#: src/main-window.c:313 msgid "tooltip|Scan medium" msgstr "Zkontrolovat disk" -#: src/main-window.c:307 +#: src/main-window.c:314 msgid "Scans medium for unreadable sectors." msgstr "Zkontroluje čitelnost disku." -#: src/main-window.c:311 +#: src/main-window.c:318 msgid "button|Fix" msgstr "Opravit" -#: src/main-window.c:314 +#: src/main-window.c:321 msgid "tooltip|Repair image" msgstr "Opravit bitovou kopii" -#: src/main-window.c:314 +#: src/main-window.c:322 msgid "Repairs an image. Requires an image file and error correction data." msgstr "Opraví bitovou kopii. Vyžaduje soubor bitové kopie a data pro opravu chyb." -#: src/main-window.c:318 +#: src/main-window.c:326 msgid "button|Verify" msgstr "Ověřit" -#: src/main-window.c:321 +#: src/main-window.c:329 msgid "tooltip|Consistency check" msgstr "Ověřit konzistenci" -#: src/main-window.c:321 +#: src/main-window.c:330 msgid "Tests consistency of error correction data and image file." msgstr "Otestuje konzistenci dat pro opravu chyb a souboru bitové kopie." -#: src/main-window.c:325 +#: src/main-window.c:334 msgid "button|Strip" msgstr "" -#: src/main-window.c:328 +#: src/main-window.c:337 msgid "tooltip|Strip ECC" msgstr "" -#: src/main-window.c:328 +#: src/main-window.c:338 msgid "Strip ECC data from an augmented image." msgstr "" -#: src/main-window.c:332 +#: src/main-window.c:342 msgid "button|Stop" msgstr "Zastavit" -#: src/main-window.c:335 +#: src/main-window.c:345 msgid "tooltip|Abort action" msgstr "Přerušit akci" -#: src/main-window.c:335 +#: src/main-window.c:346 msgid "Aborts an ongoing action." msgstr "Přeruší probíhající akci." -#: src/main-window.c:492 +#: src/main-window.c:503 msgid "tooltip|Protocol for current action" msgstr "Záznam výpisu probíhající akce" -#: src/main-window.c:493 +#: src/main-window.c:504 msgid "Displays additional information created during the current or last action." msgstr "Zobrazí další informace vypsané v průběhu probíhající nebo předchozích akcí." -#: src/main-window.c:502 +#: src/main-window.c:513 msgid "View log" msgstr "Zobrazit záznam" -#: src/medium-info.c:57 +#: src/medium-info.c:58 msgid "Please wait..." msgstr "" -#: src/medium-info.c:118 +#: src/medium-info.c:112 msgid "Medium not present" msgstr "Není vložen žádný disk" -#: src/medium-info.c:126 src/medium-info.c:488 +#: src/medium-info.c:119 src/medium-info.c:400 msgid "Physical medium info" msgstr "Fyzické informace o disku" -#: src/medium-info.c:172 src/medium-info.c:178 +#: src/medium-info.c:141 src/medium-info.c:147 msgid "empty" msgstr "prázdný" -#: src/medium-info.c:173 +#: src/medium-info.c:142 msgid "appendable" msgstr "doplnitelný" -#: src/medium-info.c:174 +#: src/medium-info.c:143 msgid "finalized" msgstr "uzavřený" -#: src/medium-info.c:175 src/scsi-layer.c:100 +#: src/medium-info.c:144 src/scsi-layer.c:102 msgid "unknown" msgstr "neznámý" -#: src/medium-info.c:179 +#: src/medium-info.c:148 msgid "incomplete" msgstr "neúplný" -#: src/medium-info.c:180 +#: src/medium-info.c:149 msgid "damaged" msgstr "poškozený" -#: src/medium-info.c:181 src/rs02-verify.c:695 src/rs02-verify.c:913 -#: src/rs02-verify.c:914 src/rs02-verify.c:915 src/rs03-verify.c:1340 -#: src/rs03-verify.c:1342 src/rs03-verify.c:1343 +#: src/medium-info.c:150 src/rs02-verify.c:673 src/rs02-verify.c:891 +#: src/rs02-verify.c:892 src/rs02-verify.c:893 src/rs03-verify.c:1259 +#: src/rs03-verify.c:1262 src/rs03-verify.c:1265 msgid "complete" msgstr "kompletní" -#: src/medium-info.c:192 +#: src/medium-info.c:155 #, c-format msgid "%s (%d sessions; last session %s)\n" msgstr "%s (%d session; poslední session %s)\n" -#: src/medium-info.c:204 +#: src/medium-info.c:161 #, c-format msgid "% sectors (% MiB), from READ CAPACITY\n" msgstr "% sektorů (% MiB), z READ CAPACITY\n" -#: src/medium-info.c:213 +#: src/medium-info.c:164 #, c-format msgid "% sectors (% MiB), from DVD structure\n" msgstr "% sektorů (% MiB), ze struktury DVD\n" -#: src/medium-info.c:223 src/medium-info.c:297 +#: src/medium-info.c:168 #, c-format msgid "% sectors (% MiB)\n" msgstr "% sektorů (% MiB)\n" -#: src/medium-info.c:235 src/medium-info.c:561 +#: src/medium-info.c:180 src/medium-info.c:473 msgid "Filesystem info" msgstr "Informace o systému souborů" -#: src/medium-info.c:253 +#: src/medium-info.c:186 #, c-format msgid "%d sectors (% MiB)\n" msgstr "%d sektorů (% MiB)\n" -#: src/medium-info.c:280 src/medium-info.c:594 +#: src/medium-info.c:207 src/medium-info.c:506 msgid "Augmented image info" msgstr "Informace o rozšíření bitové kopie" -#: src/medium-info.c:287 src/medium-info.c:289 +#: src/medium-info.c:213 #, c-format msgid "%s, %d roots, %4.1f%% redundancy.\n" msgstr "%s, %d bází, %4.1f%% redundance.\n" -#: src/medium-info.c:295 +#: src/medium-info.c:217 #, c-format msgid "% sectors (% MiB)\n" msgstr "" -#: src/medium-info.c:319 +#: src/medium-info.c:229 msgid "yes" msgstr "" -#: src/medium-info.c:323 +#: src/medium-info.c:234 msgid "no" msgstr "" -#: src/medium-info.c:419 +#: src/medium-info.c:331 msgid "windowtitle|Medium info" msgstr "Informace o disku" -#: src/medium-info.c:434 +#: src/medium-info.c:346 msgid "" "Medium info\n" "Properties of the currently inserted medium" @@ -1281,91 +1250,91 @@ msgstr "" "Informace o disku\n" "Vlastnosti vloženého disku" -#: src/medium-info.c:446 +#: src/medium-info.c:358 msgid "Drive selection" msgstr "Výběr mechaniky" -#: src/medium-info.c:453 +#: src/medium-info.c:365 msgid "Drive:" msgstr "Mechanika:" -#: src/medium-info.c:474 src/menubar.c:493 +#: src/medium-info.c:386 src/menubar.c:496 msgid "No drives found" msgstr "Nebyly nalezeny žádné mechaniky" -#: src/medium-info.c:479 +#: src/medium-info.c:391 msgid " " msgstr " " -#: src/medium-info.c:482 +#: src/medium-info.c:394 msgid "Update medium info" msgstr "Aktualizovat informace o disku" -#: src/medium-info.c:495 +#: src/medium-info.c:407 msgid "Medium type:" msgstr "Typ disku:" -#: src/medium-info.c:503 +#: src/medium-info.c:415 msgid "Book type:" msgstr "Book type:" -#: src/medium-info.c:511 src/scsi-layer.c:2747 +#: src/medium-info.c:423 src/scsi-layer.c:2741 msgid "Manuf.-ID:" msgstr "ID výrobce:" -#: src/medium-info.c:519 +#: src/medium-info.c:431 msgid "Drive profile:" msgstr "Profil mechaniky:" -#: src/medium-info.c:527 +#: src/medium-info.c:439 msgid "Disc status:" msgstr "Stav disku:" -#: src/medium-info.c:535 +#: src/medium-info.c:447 msgid "Used sectors:" msgstr "Využité sektory:" -#: src/medium-info.c:551 +#: src/medium-info.c:463 msgid "Blank capacity:" msgstr "Prázdná kapacita:" -#: src/medium-info.c:568 +#: src/medium-info.c:480 msgid "Medium label:" msgstr "Název disku:" -#: src/medium-info.c:576 +#: src/medium-info.c:488 msgid "File system size:" msgstr "Velikost systému souborů:" -#: src/medium-info.c:584 +#: src/medium-info.c:496 msgid "Creation time:" msgstr "Čas vytvoření:" -#: src/medium-info.c:601 +#: src/medium-info.c:513 msgid "Error correction data:" msgstr "Data pro opravu chyb:" -#: src/medium-info.c:609 +#: src/medium-info.c:521 msgid "Augmented image size:" msgstr "Velikost rozšířené bitové kopie:" -#: src/medium-info.c:617 +#: src/medium-info.c:529 msgid "dvdisaster version:" msgstr "Verze dvdisaster:" -#: src/medium-info.c:625 +#: src/medium-info.c:537 msgid "Exhaustive search:" msgstr "" -#: src/medium-info.c:632 +#: src/medium-info.c:544 msgid "Run exhaustive search" msgstr "" -#: src/menubar.c:131 +#: src/menubar.c:133 msgid "windowtitle|Change log" msgstr "Seznam změn" -#: src/menubar.c:132 +#: src/menubar.c:134 msgid "" "Change log\n" "Major differences from earlier program versions." @@ -1373,11 +1342,11 @@ msgstr "" "Seznam změn\n" "Seznam změn pro jednotlivé verze programu." -#: src/menubar.c:138 +#: src/menubar.c:140 msgid "windowtitle|Credits" msgstr "Poděkování" -#: src/menubar.c:139 +#: src/menubar.c:141 msgid "" "Credits\n" "Thanks go out to..." @@ -1385,11 +1354,11 @@ msgstr "" "Poděkování\n" "Poděkování náleží..." -#: src/menubar.c:145 +#: src/menubar.c:147 msgid "windowtitle|To do list" msgstr "Seznam úkolů" -#: src/menubar.c:146 +#: src/menubar.c:148 msgid "" "To do list\n" "A sneak preview of coming features ... perhaps ;-)" @@ -1397,139 +1366,139 @@ msgstr "" "Seznam úkolů\n" "Letmý přehled nadcházejících vlastností ... možná ;-)" -#: src/menubar.c:213 +#: src/menubar.c:215 msgid "menu|Select Image" msgstr "Vybrat bitovou kopii" -#: src/menubar.c:214 +#: src/menubar.c:216 msgid "menu|Select Parity File" msgstr "Vybrat soubor pro opravu chyb" -#: src/menubar.c:215 +#: src/menubar.c:217 msgid "menu|Quit" msgstr "Konec" -#: src/menubar.c:217 +#: src/menubar.c:219 msgid "menu|File" msgstr "Soubor" -#: src/menubar.c:224 +#: src/menubar.c:226 msgid "menu|Medium info" msgstr "Informace o disku" -#: src/menubar.c:229 +#: src/menubar.c:231 msgid "menu|Raw sector editor" msgstr "Editor sektorů" -#: src/menubar.c:231 +#: src/menubar.c:233 msgid "menu|Tools" msgstr "Nástroje" -#: src/menubar.c:239 +#: src/menubar.c:241 msgid "menu|About" msgstr "O programu" -#: src/menubar.c:240 +#: src/menubar.c:242 msgid "menu|User manual" msgstr "Uživatelská příručka" -#: src/menubar.c:244 +#: src/menubar.c:246 msgid "menu|Credits" msgstr "Poděkování" -#: src/menubar.c:245 +#: src/menubar.c:247 msgid "menu|Licence (GPL)" msgstr "Licence (GPL)" -#: src/menubar.c:249 +#: src/menubar.c:251 msgid "menu|Change log" msgstr "Seznam změn" -#: src/menubar.c:250 +#: src/menubar.c:252 msgid "menu|To do list" msgstr "Seznam úkolů" -#: src/menubar.c:252 +#: src/menubar.c:254 msgid "menu|Help" msgstr "Nápověda" -#: src/menubar.c:336 +#: src/menubar.c:338 msgid "windowtitle|Image file selection" msgstr "Výběr souboru bitové kopie" -#: src/menubar.c:373 +#: src/menubar.c:375 msgid "windowtitle|Error correction file selection" msgstr "Výběr souboru pro opravu chyb" -#: src/menubar.c:475 src/menubar.c:499 +#: src/menubar.c:477 src/menubar.c:502 msgid "tooltip|Drive selection" msgstr "Výběr mechaniky" -#: src/menubar.c:475 +#: src/menubar.c:478 msgid "Use the nearby drop-down list to select the input drive." msgstr "K výběru vstupní mechaniky použijte rozbalovací seznam." -#: src/menubar.c:499 +#: src/menubar.c:503 msgid "Selects the input drive for reading images." msgstr "Vyberte vstupní mechaniku pro načtení bitových kopií." -#: src/menubar.c:529 +#: src/menubar.c:533 msgid "tooltip|Image file selection" msgstr "Výběr souboru bitové kopie" -#: src/menubar.c:529 +#: src/menubar.c:534 msgid "Selects a new image file." msgstr "Vybere nový soubor bitové kopie." -#: src/menubar.c:530 +#: src/menubar.c:536 msgid "tooltip|Current image file" msgstr "Aktuální soubor bitové kopie" -#: src/menubar.c:530 +#: src/menubar.c:537 msgid "Shows the name of the current image file." msgstr "Zobrazuje název aktuálního souboru bitové kopie." -#: src/menubar.c:554 +#: src/menubar.c:562 msgid "tooltip|Error correction file selection" msgstr "Výběr souboru pro opravu chyb" -#: src/menubar.c:554 +#: src/menubar.c:563 msgid "Selects a new error correction file." msgstr "Vybere nový soubor pro opravu chyb." -#: src/menubar.c:555 +#: src/menubar.c:565 msgid "tooltip|Current error correction file" msgstr "Aktuální soubor pro opravu chyb" -#: src/menubar.c:555 +#: src/menubar.c:566 msgid "Shows the name of the current error correction file." msgstr "Zobrazuje název aktuálního souboru pro opravu chyb." -#: src/menubar.c:566 +#: src/menubar.c:577 msgid "tooltip|Preferences" msgstr "Nastavení" -#: src/menubar.c:566 +#: src/menubar.c:578 msgid "Customize settings for creating images, error correction files and other stuff." msgstr "Přizpůsobení možností vytváření bitových kopií, souborů pro opravu chyb atd..." -#: src/menubar.c:576 +#: src/menubar.c:588 msgid "tooltip|User manual" msgstr "Uživatelská příručka" -#: src/menubar.c:576 +#: src/menubar.c:589 msgid "Displays the user manual (external PDF viewer required)." msgstr "" -#: src/menubar.c:586 +#: src/menubar.c:599 msgid "tooltip|Quit" msgstr "Konec" -#: src/menubar.c:586 +#: src/menubar.c:599 msgid "Quit dvdisaster" msgstr "Ukončí dvdisaster" -#: src/method.c:55 +#: src/method.c:57 msgid "" "\n" "List of available methods:\n" @@ -1539,7 +1508,7 @@ msgstr "" "Seznam dostupných metod:\n" "\n" -#: src/misc.c:224 +#: src/misc.c:225 msgid "" "This software comes with ABSOLUTELY NO WARRANTY. This\n" "is free software and you are welcome to redistribute it\n" @@ -1551,11 +1520,11 @@ msgstr "" "podle podmínek GNU GENERAL PUBLIC LICENSE. Více\n" "informací naleznete v souboru \"COPYING\".\n" -#: src/misc.c:550 +#: src/misc.c:535 msgid "Warning" msgstr "Upozornění" -#: src/misc.c:633 src/misc.c:643 +#: src/misc.c:610 src/misc.c:619 msgid "" "\n" "*\n" @@ -1567,26 +1536,40 @@ msgstr "" "* dvdisaster - nelze pokračovat:\n" "*\n" -#: src/misc.c:1307 -msgid "Do not ask again" -msgstr "Příště se již neptat" +#: src/misc.c:758 +msgid "Strip ECC aborted" +msgstr "" -#: src/misc.c:1331 +#: src/misc.c:766 +msgid "Image is not augmented (no dvdisaster signature found)." +msgstr "" + +#: src/misc.c:772 +#, c-format +msgid "Invalid end data sector (%), aborting" +msgstr "" + +#: src/misc.c:781 #, c-format msgid "" -"Image file already exists and does not match the medium:\n" -"\n" -"%s\n" -"\n" -"The existing image file will be deleted." +"We're about to truncate the image from % sectors (% MiB)\n" +"to % sectors (% MiB), removing any dvdisaster-added ECC data.\n" +"This will restore the image to its pre-augmented original size." msgstr "" -"Soubor bitové kopie již existuje a nesouhlasí s diskem.\n" -"\n" -"%s\n" -"\n" -"Existující soubor bitové kopie bude smazán." -#: src/misc.c:1353 +#: src/misc.c:788 +msgid "Aborted on user request" +msgstr "" + +#: src/misc.c:797 +msgid "Image successfully truncated back to its original size.\n" +msgstr "" + +#: src/misc.c:801 +msgid "Image successfully truncated" +msgstr "" + +#: src/misc-gui.c:241 #, c-format msgid "" "The error correction file is already present:\n" @@ -1601,92 +1584,78 @@ msgstr "" "\n" "Chcete ho přepsat?" -#: src/misc.c:1388 -msgid "Strip ECC aborted" -msgstr "" +#: src/misc-gui.c:639 +msgid "Do not ask again" +msgstr "Příště se již neptat" -#: src/misc.c:1396 -msgid "Image is not augmented (no dvdisaster signature found)." -msgstr "" - -#: src/misc.c:1402 -#, c-format -msgid "Invalid end data sector (%), aborting" -msgstr "" - -#: src/misc.c:1411 +#: src/misc-gui.c:660 #, c-format msgid "" -"We're about to truncate the image from % sectors (% MiB)\n" -"to % sectors (% MiB), removing any dvdisaster-added ECC data.\n" -"This will restore the image to its pre-augmented original size." +"Image file already exists and does not match the medium:\n" +"\n" +"%s\n" +"\n" +"The existing image file will be deleted." msgstr "" +"Soubor bitové kopie již existuje a nesouhlasí s diskem.\n" +"\n" +"%s\n" +"\n" +"Existující soubor bitové kopie bude smazán." -#: src/misc.c:1418 -msgid "Aborted on user request" -msgstr "" - -#: src/misc.c:1427 -msgid "Image successfully truncated back to its original size.\n" -msgstr "" - -#: src/misc.c:1431 -msgid "Image successfully truncated" -msgstr "" - -#: src/preferences.c:452 +#: src/preferences.c:454 msgid "Switched to the linear reading strategy." msgstr "Přepnuto na lineární strategii čtení." -#: src/preferences.c:838 +#: src/preferences.c:840 msgid "Color selection" msgstr "Výběr barvy" -#: src/preferences.c:1059 +#: src/preferences.c:1061 msgid "Disabled automatic error correction file generation." msgstr "Zakázána automatická tvorba souboru pro opravu chyb." -#: src/preferences.c:1222 src/preferences.c:2362 src/preferences.c:2371 +#: src/preferences.c:1224 src/preferences.c:2376 src/preferences.c:2385 msgid "Raw sector caching" msgstr "Ukládání nezpracovaných sektorů" -#: src/preferences.c:1294 +#: src/preferences.c:1296 msgid "Log file" msgstr "Soubor záznamu" -#: src/preferences.c:1316 +#: src/preferences.c:1318 msgid "Delete the log file?" msgstr "Smazat soubor záznamu?" -#: src/preferences.c:1410 +#: src/preferences.c:1412 msgid "Preferences" msgstr "Nastavení" -#: src/preferences.c:1440 src/rs03-preferences.c:514 +#: src/preferences.c:1442 src/rs03-preferences.c:516 msgid "Image" msgstr "Bitová kopie " -#: src/preferences.c:1444 +#: src/preferences.c:1446 msgid "Image creation" msgstr "Vytvoření bitové kopie" -#: src/preferences.c:1453 +#: src/preferences.c:1455 msgid "Reading strategy" msgstr "Strategie čtení" -#: src/preferences.c:1453 +#: src/preferences.c:1456 msgid "Reading strategy: " msgstr "Strategie čtení: " -#: src/preferences.c:1468 +#: src/preferences.c:1471 msgid "Linear" msgstr "Lineární" -#: src/preferences.c:1476 +#: src/preferences.c:1479 msgid "Adaptive (for defective media)" msgstr "Adaptivní (pro poškozené disky)" -#: src/preferences.c:1488 +#: src/preferences.c:1491 msgid "" "Reading strategy\n" "\n" @@ -1711,19 +1680,19 @@ msgstr "" "\n" "Je možné použít adaptivní strategii i bez dat pro opravu chyb, ale je doporučeno v tomto případě použít lineární strategii." -#: src/preferences.c:1500 +#: src/preferences.c:1503 msgid "Reading range" msgstr "Rozsah čtení" -#: src/preferences.c:1500 +#: src/preferences.c:1504 msgid "Read/Scan from sector" msgstr "Číst/Kontrolovat od sektoru" -#: src/preferences.c:1526 +#: src/preferences.c:1530 msgid "to sector" msgstr "po sektor" -#: src/preferences.c:1544 +#: src/preferences.c:1548 msgid "" "Reading range\n" "\n" @@ -1741,19 +1710,19 @@ msgstr "" "\n" "Tato volba platí pouze pro aktuální relaci a nebude uložena." -#: src/preferences.c:1554 +#: src/preferences.c:1558 msgid "Error correction data recognization" msgstr "Rozpoznávání dat pro opravu chyb" -#: src/preferences.c:1563 +#: src/preferences.c:1567 msgid "Exhaustive RS02 header search" msgstr "Důkladné hledání RS02 hlavičky" -#: src/preferences.c:1563 +#: src/preferences.c:1568 msgid "Perform exhaustive search for RS02 headers" msgstr "Provést důkladné hledání RS02 hlaviček" -#: src/preferences.c:1584 +#: src/preferences.c:1589 msgid "" "Exhaustive RS02 header search\n" "\n" @@ -1771,15 +1740,15 @@ msgstr "" "\n" "Tuto volbu ponechte vypnutou pokud pracujete s disky nebo datovými kopiemi, které nejsou rozšířeny o RS02 data. Ztratíte jinak spoustu času hledáním RS02 značek a zbytečně budete zatěžovat mechaniku." -#: src/preferences.c:1603 +#: src/preferences.c:1608 msgid "Recover RS03 signatures" msgstr "Oprava RS03 podpisů" -#: src/preferences.c:1603 +#: src/preferences.c:1609 msgid "Find and recover RS03 signatures" msgstr "Vyhledat a obnovit RS03 značky" -#: src/preferences.c:1624 +#: src/preferences.c:1630 msgid "" "Exhaustive RS03 header search\n" "\n" @@ -1797,19 +1766,19 @@ msgstr "" "\n" "Tuto volbu ponechte vypnutou pokud pracujete s disky nebo bitovými kopiemi, které nejsou rozšířeny o RS03 data. Ztratíte jinak spoustu času hledáním RS03 značek a zbytečně budete zatěžovat mechaniku." -#: src/preferences.c:1643 +#: src/preferences.c:1649 msgid "Image properties" msgstr "Vlastnosti bitové kopie" -#: src/preferences.c:1652 +#: src/preferences.c:1658 msgid "Ignore ISO/UDF meta data" msgstr "Ignorovat ISO/UDF meta data" -#: src/preferences.c:1652 +#: src/preferences.c:1659 msgid "Ignore image size recorded in ISO/UDF file system" msgstr "Ignorovat údaj o velikosti bitové kopie v systému souborů ISO/UDF" -#: src/preferences.c:1673 +#: src/preferences.c:1680 msgid "" "Ignore image size recorded in ISO/UDF filesystem\n" "\n" @@ -1822,15 +1791,15 @@ msgid "" "Do not blindly turn this option on as it will most likely create sub optimal or corrupted ISO images, especially if you plan to use the image for error correction data generation." msgstr "" -#: src/preferences.c:1692 +#: src/preferences.c:1699 msgid "DAO mode" msgstr "Režim DAO" -#: src/preferences.c:1692 +#: src/preferences.c:1700 msgid "Assume image to be written in DAO mode (don't truncate)" msgstr "Předpokládat, že bitová kopie má být zapsána v režimu DAO (nezkracovat)" -#: src/preferences.c:1713 +#: src/preferences.c:1721 msgid "" "Assume DAO mode\n" "\n" @@ -1848,19 +1817,19 @@ msgstr "" "\n" "Tip: Abyste se těmto problémům vyhli, zvažte zapisování všech disků s jednou session v režimu \"DAO / Disc at once\" (někdy také nazývaném \"SAO / Session at once\")." -#: src/preferences.c:1728 +#: src/preferences.c:1736 msgid "Image format" msgstr "Formát bitové kopie" -#: src/preferences.c:1737 +#: src/preferences.c:1745 msgid "Missing sector tags" msgstr "Označení chybějících sektorů" -#: src/preferences.c:1737 +#: src/preferences.c:1746 msgid "Use old style missing sector tags (not recommended)" msgstr "" -#: src/preferences.c:1758 +#: src/preferences.c:1767 msgid "" "Missing sector tagging\n" "\n" @@ -1869,15 +1838,15 @@ msgid "" "N.b.: dvdisaster >= 0.72 will automatically recognize both tag formats when reading images; setting this value only affects the creation of new images." msgstr "" -#: src/preferences.c:1778 +#: src/preferences.c:1787 msgid "Filling of unreadable sectors" msgstr "Doplnění nečitelných sektorů" -#: src/preferences.c:1779 +#: src/preferences.c:1788 msgid "Fill unreadable sectors with byte:" msgstr "Vyplnit nečitelné sektory bajtem:" -#: src/preferences.c:1819 +#: src/preferences.c:1828 msgid "" "Filling of unreadable sectors\n" "\n" @@ -1889,31 +1858,31 @@ msgstr "" "dvdisaster označí nečitelné sektory pomocí speciální doplňovací sekvence, u které je velmi nepravděpodobné, že se objeví na nepoškozeném disku.\n" "U ostatních programů pro obnovu dat je obvyklé vyplnění nečitelných sektorů určitou hodnotou. Pro umožnění spolupráce s těmito programy zde můžete nastavit stejnou hodnotu:\n" -#: src/preferences.c:1828 +#: src/preferences.c:1837 msgid "0xb0 (176 decimal): for compatibility with h2cdimage published by \"c't\", a German periodical.\n" msgstr "pro kompatibilitu s h2cdimage (vydavatelem je německý magazín \"c't\") použijte hodnotu 0xb0 (decimálně 176).\n" -#: src/preferences.c:1832 +#: src/preferences.c:1841 msgid "Note: Using zero filling (0x00, decimal 0) is highly discouraged. Most media contain regular zero filled sectors which can not be told apart from unreadable sectors if zero filling is used." msgstr "Poznámka: Nedoporučujeme vyplnění nulami (0x00, decimálně 0). Většina disků již obsahuje sektory, které obsahují pouze nuly a ty pak nemohou být rozpoznány od nečitelných sektorů." -#: src/preferences.c:1839 +#: src/preferences.c:1848 msgid "Drive" msgstr "Mechanika " -#: src/preferences.c:1843 src/preferences.c:1846 +#: src/preferences.c:1852 src/preferences.c:1855 msgid "Drive initialisation" msgstr "Inicializace mechaniky" -#: src/preferences.c:1847 +#: src/preferences.c:1856 msgid "Wait" msgstr "Čekat" -#: src/preferences.c:1850 +#: src/preferences.c:1859 msgid "seconds for drive to spin up" msgstr "sekund na roztočení mechaniky" -#: src/preferences.c:1880 +#: src/preferences.c:1889 msgid "" "Drive initialisation\n" "\n" @@ -1923,23 +1892,23 @@ msgstr "" "\n" "Program počká stanovený počet sekund na roztočení disku. Předejde se tak rychlostním skokům na začátku čtení." -#: src/preferences.c:1886 +#: src/preferences.c:1895 msgid "Raw reading parameters" msgstr "Parametry přímého čtení" -#: src/preferences.c:1895 +#: src/preferences.c:1904 msgid "Raw reading mode" msgstr "Režim přímého čtení" -#: src/preferences.c:1895 +#: src/preferences.c:1905 msgid "Raw reading mode: " msgstr "Režim přímého čtení: " -#: src/preferences.c:1927 +#: src/preferences.c:1937 msgid "other:" msgstr "ostatní:" -#: src/preferences.c:1961 +#: src/preferences.c:1971 msgid "" "Raw reading mode\n" "\n" @@ -1963,19 +1932,19 @@ msgstr "" "\n" "0x01 Některé mechaniky pracují správně po zadání této hodnoty, přestože to podle SCSI specifikace nedává smysl. Pokud předchozí volby nefungují, zkuste tuto hodnotu zadat do pole \"ostatní\". Více informací získáte v kapitole 6 dokumentace MMC3 nebo pozdější na stránce o režimu 01h." -#: src/preferences.c:1987 +#: src/preferences.c:1997 msgid "Internal read attempts" msgstr "Interní pokusy o přečtení" -#: src/preferences.c:1988 +#: src/preferences.c:1998 msgid "Reread defective sectors" msgstr "Čtení poškozených sektorů opakovat" -#: src/preferences.c:1991 +#: src/preferences.c:2001 msgid "times" msgstr "krát" -#: src/preferences.c:2022 +#: src/preferences.c:2032 msgid "" "Internal read attempts\n" "\n" @@ -1991,15 +1960,15 @@ msgstr "" "Snížení této hodnoty na 0 nebo 1 může zrychlit čtení poškozeného disku a snížit zátěž mechaniky, většina mechanik však bohužel bude zde zadanou hodnotu ignorovat.\n" "Pro použití výchozího nastavení mechaniky nastavte hodnotu -1." -#: src/preferences.c:2035 src/preferences.c:2038 +#: src/preferences.c:2045 src/preferences.c:2048 msgid "Fatal error handling" msgstr "Obsluha neopravitelných chyb" -#: src/preferences.c:2039 +#: src/preferences.c:2049 msgid "Ignore fatal errors" msgstr "Ignorovat neopravitelné chyby" -#: src/preferences.c:2066 +#: src/preferences.c:2076 msgid "" "Fatal error handling\n" "\n" @@ -2011,15 +1980,15 @@ msgstr "" "Ve výchozím nastavení dvdisaster po nahlášení neopravitelné chyby zastaví čtení. Předejde se tak zbytečným pokusům o přečtení a možnému poškození mechaniky.\n" "Některé mechaniky však hlásí neopodstatněné neopravitelné chyby. U těchto mechanik je přečtení poškozeného disku možné jen pokud jsou tyto chyby ignorovány." -#: src/preferences.c:2076 +#: src/preferences.c:2086 msgid "Media ejection" msgstr "Vysunutí disku" -#: src/preferences.c:2079 src/preferences.c:2080 +#: src/preferences.c:2089 src/preferences.c:2090 msgid "Eject medium after successful read" msgstr "Po úspěšném načtení vysunout disk" -#: src/preferences.c:2107 +#: src/preferences.c:2117 msgid "" "Medium ejection\n" "\n" @@ -2033,23 +2002,23 @@ msgstr "" "\n" "Operační systém může v některých případech aplikacím ve vysunutí disku zabránit. V tomto případě vysuňte disk pomocí nástrojů vašeho operačního systému." -#: src/preferences.c:2117 +#: src/preferences.c:2127 msgid "Read attempts" msgstr "Pokusy o přečtení " -#: src/preferences.c:2121 +#: src/preferences.c:2131 msgid "Sector read errors" msgstr "Chyby čtení sektoru" -#: src/preferences.c:2130 +#: src/preferences.c:2140 msgid "Raw reading" msgstr "Přímé čtení" -#: src/preferences.c:2130 +#: src/preferences.c:2141 msgid "Read and analyze raw sectors" msgstr "Použít přímé čtení a analýzu sektorů" -#: src/preferences.c:2152 +#: src/preferences.c:2163 msgid "" "Raw reading (affects CD media only)\n" "\n" @@ -2077,17 +2046,17 @@ msgstr "" "- je u lineárního čtení nastaveno přeskočení 0 sektorů po chybě čtení.\n" "Ukládání nezpracovaných sektorů také vyžaduje zatržení příslušné volby." -#: src/preferences.c:2169 +#: src/preferences.c:2180 msgid "Minimum number of reading attempts" msgstr "Minimální počet pokusů o přečtení" -#: src/preferences.c:2171 src/preferences.c:2172 src/preferences.c:2177 -#: src/preferences.c:2178 +#: src/preferences.c:2183 src/preferences.c:2184 src/preferences.c:2189 +#: src/preferences.c:2190 #, c-format msgid "Min. %d reading attempts per sector" msgstr "Sektor se pokusit přečíst min. %d krát" -#: src/preferences.c:2199 +#: src/preferences.c:2211 msgid "" "Minimum number of reading attempts\n" "\n" @@ -2101,17 +2070,17 @@ msgstr "" "\n" "Zvýšení tohoto čísla může zlepšit obnovitelnost dat na poškozeném disku, zvýší však délku zpracování a mechanické zatížení mechaniky." -#: src/preferences.c:2208 +#: src/preferences.c:2220 msgid "Maximum number of reading attempts" msgstr "Maximální počet pokusů o přečtení" -#: src/preferences.c:2210 src/preferences.c:2211 src/preferences.c:2216 -#: src/preferences.c:2217 +#: src/preferences.c:2223 src/preferences.c:2224 src/preferences.c:2229 +#: src/preferences.c:2230 #, c-format msgid "Max. %d reading attempts per sector" msgstr "Přečtení sektoru nezkoušet více než %d krát" -#: src/preferences.c:2238 +#: src/preferences.c:2251 msgid "" "Maximum number of reading attempts\n" "\n" @@ -2125,23 +2094,23 @@ msgstr "" "\n" "Rozhodnutí o tom zda pokračovat ve čtení závisí na kvalitě dosud získaných dat, která je ovlivněna schopnostmi vaší CD/DVD mechaniky a operačního systému. Takže v závislost na konfiguraci vašeho systému dvdisaster může ale nemusí tuto maximální hodnotu použít." -#: src/preferences.c:2252 +#: src/preferences.c:2265 msgid "Treatment of unreadable areas" msgstr "Zpracování nečitelných oblastí" -#: src/preferences.c:2254 src/preferences.c:2256 src/preferences.c:2257 -#: src/preferences.c:2265 +#: src/preferences.c:2268 src/preferences.c:2270 src/preferences.c:2271 +#: src/preferences.c:2279 #, c-format msgid "Skip %d sectors after read error" msgstr "Po chybě čtení přeskočit %d sektorů" -#: src/preferences.c:2255 src/preferences.c:2260 src/preferences.c:2261 -#: src/preferences.c:2266 +#: src/preferences.c:2269 src/preferences.c:2274 src/preferences.c:2275 +#: src/preferences.c:2280 #, c-format msgid "Stop reading when unreadable intervals < %d" msgstr "Zastavit čtení pokud jsou nečitelné oblasti < %d" -#: src/preferences.c:2292 +#: src/preferences.c:2306 msgid "" "Treatment of unreadable areas\n" "\n" @@ -2155,15 +2124,15 @@ msgstr "" "\n" "Vliv na lineární strategii čtení:" -#: src/preferences.c:2299 +#: src/preferences.c:2313 msgid "Skipping a large number of sectors (e.g. 1024) gives a quick overview of damaged areas, but will usually not collect enough data for repairing the image." msgstr "Přeskočení většího počtu sektorů (např. 1024) poskytne rychlý přehled o poškozených oblastech, nedovolí však obvykle získání dostatečného množství dat potřebných pro opravu bitové kopie." -#: src/preferences.c:2303 +#: src/preferences.c:2317 msgid "Smaller values like 16, 32 or 64 are a good trade-off: The processing time will beconsiderably shortened, but still enough data for repairing the image is collected.\n" msgstr "Menší hodnoty jako 16, 32 nebo 64 jsou dobrým kompromisem: Čas zpracování se výrazně zkrátí, ale stále bude možné získat dostatek dat pro opravu bitové kopie.\n" -#: src/preferences.c:2307 +#: src/preferences.c:2321 msgid "" "The adaptive reading strategy uses this setting only if no error correction data is available. In that case the reading process will stop when no unread areas larger than the selected size remain. Values smaller than 128 are not recommended as they cause the drive to carry out lots of laser head repositioning during the final phase of the reading process. If adaptive reading with a setting of 128 is not sufficient, try reading the remaining sectors with an additional linear reading pass.\n" "\n" @@ -2173,19 +2142,19 @@ msgstr "" "\n" "Na discích DVD a BD obvykle chyby z technických důvodů zaujímají minimálně 16 sektorů. Pro DVD a BD proto není doporučeno používat hodnotu nižší než 16." -#: src/preferences.c:2320 src/preferences.c:2323 +#: src/preferences.c:2334 src/preferences.c:2337 msgid "Media read attempts" msgstr "Pokusy o přečtení disku" -#: src/preferences.c:2324 +#: src/preferences.c:2338 msgid "Read the whole medium " msgstr "Přečíst celý disk " -#: src/preferences.c:2340 +#: src/preferences.c:2354 msgid " times" msgstr " krát" -#: src/preferences.c:2355 +#: src/preferences.c:2369 msgid "" "Media read attempts for the linear reading strategy\n" "\n" @@ -2199,15 +2168,15 @@ msgstr "" "\n" "Během dodatečných pokusů o přečtení budou čteny jen chybějící sektory." -#: src/preferences.c:2372 +#: src/preferences.c:2386 msgid "Keep uncorrectable raw sectors in the following directory:" msgstr "Uchovávat neopravitelné nezpracované sektory v následujícím adresáři:" -#: src/preferences.c:2380 src/preferences.c:3196 +#: src/preferences.c:2394 src/preferences.c:3215 msgid "Select" msgstr "Zvolit" -#: src/preferences.c:2421 +#: src/preferences.c:2435 msgid "" "Raw sector caching\n" "\n" @@ -2227,15 +2196,15 @@ msgstr "" "Ne všechny mechaniky a operační systémy podporují čtení částečných dat. Není proto chybou pokud zvolený adresář zůstane prázdný.\n" "dvdisaster nebude z vybraného adresáře odstraňovat žádné soubory, nepotřebné soubory po úspěšné opravě disku musíte proto smazat sami." -#: src/preferences.c:2439 +#: src/preferences.c:2453 msgid "Raw sector file prefix" msgstr "Předpona souboru sektoru" -#: src/preferences.c:2440 +#: src/preferences.c:2454 msgid "Raw sector file prefix: " msgstr "Předpona souboru sektoru: " -#: src/preferences.c:2463 +#: src/preferences.c:2477 msgid "" "Raw sector file prefix\n" "\n" @@ -2245,19 +2214,19 @@ msgstr "" "\n" "Pro každý disk používejte jedinečnou předponu, např. \"disc1-\" atd." -#: src/preferences.c:2471 +#: src/preferences.c:2485 msgid "Error correction" msgstr "Oprava chyb " -#: src/preferences.c:2473 +#: src/preferences.c:2487 msgid "Error correction method" msgstr "Metoda opravy chyb" -#: src/preferences.c:2474 +#: src/preferences.c:2488 msgid "Storage method:" msgstr "Způsob uložení:" -#: src/preferences.c:2514 +#: src/preferences.c:2528 msgid "" "Error correction method\n" "\n" @@ -2267,7 +2236,7 @@ msgstr "" "\n" "dvdisaster vytváří data pro opravu chyb, která mohou být později použita k obnově nečitelných sektorů pokud dojde k poškození disku. Existuje několik způsobů vytvoření a uložení těchto údajů:\n" -#: src/preferences.c:2520 +#: src/preferences.c:2534 msgid "" "The RS01 codec\n" "RS01 is the recommended codec for storing error correction data in separate files.\n" @@ -2275,7 +2244,7 @@ msgstr "" "RS01 kodek\n" "RS01 je kodek doporučený pro ukládání dat pro opravu chyb do samostatných souborů.\n" -#: src/preferences.c:2523 +#: src/preferences.c:2537 msgid "" "The RS02 codec\n" "RS02 is the currently recommended codec for augmenting images with error correction data.\n" @@ -2283,7 +2252,7 @@ msgstr "" "RS02 kodek\n" "RS02 je aktuálně doporučený kodek pro rozšiřování bitových kopií o data pro opravu chyb.\n" -#: src/preferences.c:2527 +#: src/preferences.c:2541 msgid "" "The RS03 codec (Warning: experimental)\n" "RS03 can either store error correction data in a separate file or augment the image with it. It provides multithreading to scale with multicore processors and contains some subtle improvements over RS01 and RS02. However it should not be used for productive work unless a stable version is released with dvdisaster V0.80." @@ -2291,23 +2260,23 @@ msgstr "" "RS03 kodek (Upozornění: experimentální)\n" "RS03 lze použít jak pro vytvoření samostatného souboru, tak pro rozšíření bitové kopie. Používá vícevláknové zpracování a umožňuje tak využít vícejádrové procesory a obsahuje také určitá vylepšení oproti RS01 a RS02. Zatím by ale neměl být používán pro běžné použití pokud nebude s verzí V0.80 vydána jeho stabilní verze." -#: src/preferences.c:2565 +#: src/preferences.c:2578 msgid "Files" msgstr "Soubory " -#: src/preferences.c:2569 +#: src/preferences.c:2582 msgid "Local files (on hard disk)" msgstr "Lokální soubory (na pevném disku)" -#: src/preferences.c:2576 +#: src/preferences.c:2589 msgid "Automatic file suffixes" msgstr "Automatické přípony souborů" -#: src/preferences.c:2576 +#: src/preferences.c:2590 msgid "Automatically add .iso and .ecc file suffixes" msgstr "Automaticky přidat souborům přípony ISO a ECC" -#: src/preferences.c:2601 +#: src/preferences.c:2615 msgid "" "Automatically add file suffixes\n" "\n" @@ -2317,19 +2286,19 @@ msgstr "" "\n" "Pokud aktivujete tuto volbu, bude k názvům souborů u kterých již nebyla zadána jiná přípona automaticky přidána přípona \"ISO\" nebo \"ECC\"." -#: src/preferences.c:2607 +#: src/preferences.c:2621 msgid "Automatic file creation and deletion" msgstr "Automatická tvorba a mazání souborů" -#: src/preferences.c:2616 +#: src/preferences.c:2630 msgid "Automatic .ecc file creation" msgstr "Automatické vytvoření souboru ECC" -#: src/preferences.c:2616 +#: src/preferences.c:2631 msgid "Create error correction file after reading image" msgstr "Po vytvoření bitové kopie automaticky vytvořit soubor pro opravu chyb" -#: src/preferences.c:2640 +#: src/preferences.c:2655 msgid "" "Automatic error correction file creation\n" "\n" @@ -2339,15 +2308,15 @@ msgstr "" "\n" "Po vytvoření bitové kopie automaticky vytvoří soubor pro opravu chyb. Při použití spolu s volbou pro \"odstranění bitové kopie\" umožní urychlit vytváření souborů pro opravu chyb pro sady disků." -#: src/preferences.c:2647 +#: src/preferences.c:2662 msgid "Automatic image file removal" msgstr "Automatické odstranění souboru bitové kopie" -#: src/preferences.c:2647 +#: src/preferences.c:2663 msgid "Remove image after error correction file creation" msgstr "Po vytvoření souboru pro opravu chyb automaticky smazat bitovou kopii" -#: src/preferences.c:2671 +#: src/preferences.c:2687 msgid "" "Automatic image file removal\n" "\n" @@ -2357,15 +2326,15 @@ msgstr "" "\n" "Pokud je tato volba aktivní, bude soubor bitové kopie po úspěšném vytvoření odpovídajícího souboru pro opravu chyb automaticky smazán." -#: src/preferences.c:2677 src/preferences.c:2686 +#: src/preferences.c:2693 src/preferences.c:2702 msgid "Confirm file overwriting" msgstr "Potvrzení přepsání souboru" -#: src/preferences.c:2686 +#: src/preferences.c:2703 msgid "Ask before overwriting image and ecc files" msgstr "Před přepsáním bitové kopie a ecc souborů zobrazit dotaz" -#: src/preferences.c:2710 +#: src/preferences.c:2727 msgid "" "Ask before overwriting image and ecc files\n" "\n" @@ -2375,24 +2344,24 @@ msgstr "" "\n" "Pokud musí dvdisaster přepsat existující soubor bitové kopie nebo dat pro opravu chyb a tato volba je zatržena, vyžádá si vaše potvrzení." -#: src/preferences.c:2717 +#: src/preferences.c:2734 msgid "Appearance" msgstr "Vzhled " -#: src/preferences.c:2729 +#: src/preferences.c:2746 msgid "Sector coloring" msgstr "Barvy sektorů" -#: src/preferences.c:2740 src/rs01-verify.c:123 src/rs02-verify.c:118 -#: src/rs03-verify.c:127 +#: src/preferences.c:2757 src/rs01-verify.c:127 src/rs02-verify.c:120 +#: src/rs03-verify.c:130 msgid "Good sectors" msgstr "Dobré sektory" -#: src/preferences.c:2740 +#: src/preferences.c:2757 msgid "Good sector" msgstr "V pořádku" -#: src/preferences.c:2765 +#: src/preferences.c:2782 msgid "" "Good sectors\n" "\n" @@ -2402,15 +2371,15 @@ msgstr "" "\n" "Barva označující nepoškozené sektory." -#: src/preferences.c:2770 +#: src/preferences.c:2787 msgid "Checksum errors" msgstr "Chyby kontrolního součtu" -#: src/preferences.c:2770 +#: src/preferences.c:2787 msgid "Checksum error" msgstr "Chyba kontrolního součtu" -#: src/preferences.c:2795 +#: src/preferences.c:2812 msgid "" "Checksum errors\n" "\n" @@ -2420,15 +2389,15 @@ msgstr "" "\n" "Barva slouží k označení sektorů s chybným kontrolním součtem." -#: src/preferences.c:2800 +#: src/preferences.c:2817 msgid "Unreadable sectors" msgstr "Nečitelné sektory" -#: src/preferences.c:2800 +#: src/preferences.c:2817 msgid "Unreadable" msgstr "Nečitelný" -#: src/preferences.c:2825 +#: src/preferences.c:2842 msgid "" "Unreadable sectors\n" "\n" @@ -2438,15 +2407,15 @@ msgstr "" "\n" "Barva používaná k označení nečitelných sektorů." -#: src/preferences.c:2830 +#: src/preferences.c:2847 msgid "Present sectors" msgstr "Existující sektory" -#: src/preferences.c:2830 +#: src/preferences.c:2847 msgid "Present sector" msgstr "Existující" -#: src/preferences.c:2855 +#: src/preferences.c:2872 msgid "" "Present sectors\n" "\n" @@ -2456,15 +2425,15 @@ msgstr "" "\n" "Barva označující sektory, které již v bitové kopii existují." -#: src/preferences.c:2860 +#: src/preferences.c:2877 msgid "Ignored sectors" msgstr "Ignorované sektory" -#: src/preferences.c:2860 +#: src/preferences.c:2877 msgid "Ignored sector" msgstr "Ignorovaný" -#: src/preferences.c:2885 +#: src/preferences.c:2902 msgid "" "Ignored sectors\n" "\n" @@ -2474,15 +2443,15 @@ msgstr "" "\n" "Sektory označené touto barvou nebudou čteny." -#: src/preferences.c:2891 +#: src/preferences.c:2908 msgid "Highlit sectors" msgstr "Aktivní sektory" -#: src/preferences.c:2891 +#: src/preferences.c:2908 msgid "Highlit sector" msgstr "Aktivní" -#: src/preferences.c:2916 +#: src/preferences.c:2933 msgid "" "Highlit sectors\n" "\n" @@ -2492,15 +2461,15 @@ msgstr "" "\n" "Barva používaná k dočasnému zvýraznění aktivních sektorů během adaptivního čtení." -#: src/preferences.c:2922 +#: src/preferences.c:2939 msgid "Text colors" msgstr "Barvy textu" -#: src/preferences.c:2932 +#: src/preferences.c:2949 msgid "Positive text" msgstr "Pozitivní text" -#: src/preferences.c:2957 +#: src/preferences.c:2974 msgid "" "Positive text\n" "\n" @@ -2510,11 +2479,11 @@ msgstr "" "\n" "Dobré zprávy jsou zvýrazněny touto barvou." -#: src/preferences.c:2962 +#: src/preferences.c:2979 msgid "Negative text" msgstr "Negativní text" -#: src/preferences.c:2987 +#: src/preferences.c:3004 msgid "" "Negative text\n" "\n" @@ -2524,15 +2493,15 @@ msgstr "" "\n" "Špatné zprávy jsou zvýrazněny touto barvou." -#: src/preferences.c:2992 +#: src/preferences.c:3009 msgid "Curve colors" msgstr "Barvy čar" -#: src/preferences.c:3001 +#: src/preferences.c:3018 msgid "Curve color" msgstr "Základní" -#: src/preferences.c:3026 +#: src/preferences.c:3043 msgid "" "Curve color and labels\n" "\n" @@ -2542,11 +2511,11 @@ msgstr "" "\n" "Křivka rychlosti čtení, její levá strana a vrchní popisky mají tuto barvu." -#: src/preferences.c:3032 src/read-linear-window.c:445 +#: src/preferences.c:3049 src/read-linear-window.c:455 msgid "C2 errors" msgstr "C2 chyby" -#: src/preferences.c:3057 +#: src/preferences.c:3074 msgid "" "C2 error color\n" "\n" @@ -2556,11 +2525,11 @@ msgstr "" "\n" "Logaritmický sloupcový graf zobrazující C2 chyby během \"čtení\" a \"kontroly\" je vykreslen v této barvě." -#: src/preferences.c:3064 +#: src/preferences.c:3081 msgid "Error correction load" msgstr "Zatížení opravy chyb" -#: src/preferences.c:3089 +#: src/preferences.c:3106 msgid "" "Error correction load\n" "\n" @@ -2570,19 +2539,19 @@ msgstr "" "\n" "Barva kterou je vykreslován graf znázorňující zatížení opravy chyb během operace \"Opravit\"." -#: src/preferences.c:3101 +#: src/preferences.c:3118 msgid "Default color scheme" msgstr "Výchozí barvené schéma" -#: src/preferences.c:3109 +#: src/preferences.c:3126 msgid "Dialog boxes" msgstr "Dialogová okna" -#: src/preferences.c:3112 +#: src/preferences.c:3129 src/preferences.c:3130 msgid "Reverse OK / Cancel buttons" msgstr "Prohodit tlačítka OK / Storno" -#: src/preferences.c:3137 +#: src/preferences.c:3155 msgid "" "Reverse OK / Cancel buttons\n" "\n" @@ -2596,19 +2565,19 @@ msgstr "" "\n" "Změny se projeví až po restartování dvdisaster." -#: src/preferences.c:3144 +#: src/preferences.c:3162 msgid "Misc" msgstr "Ostatní " -#: src/preferences.c:3148 +#: src/preferences.c:3166 msgid "Logging" msgstr "Záznam událostí" -#: src/preferences.c:3155 +#: src/preferences.c:3173 src/preferences.c:3174 msgid "Verbose logging" msgstr "Podrobný záznam" -#: src/preferences.c:3180 +#: src/preferences.c:3199 msgid "" "Verbose logging\n" "\n" @@ -2618,19 +2587,19 @@ msgstr "" "\n" "Do okna záznamu a souboru záznamu bude posíláno více informací. Užitečné pro ladění, ale může snížit výkon." -#: src/preferences.c:3187 +#: src/preferences.c:3206 msgid "Logfile:" msgstr "Soubor záznamu:" -#: src/preferences.c:3188 +#: src/preferences.c:3207 msgid "Copy log to file:" msgstr "Zkopírovat záznam do souboru:" -#: src/preferences.c:3197 +#: src/preferences.c:3216 msgid "Delete" msgstr "Smazat" -#: src/preferences.c:3245 +#: src/preferences.c:3264 msgid "" "Logfile\n" "\n" @@ -2640,287 +2609,287 @@ msgstr "" "\n" "Do daného souboru je zapsána kopie záznamu z okna záznamu. To se hodí pro záznam informací pokud dochází k pádu programu, ale dojde ke snížení výkonu." -#: src/print-sense.c:613 +#: src/print-sense.c:615 #, c-format msgid "Sense error (0x%02x); " msgstr "Chyba příkazu (0x%02x); " -#: src/print-sense.c:615 +#: src/print-sense.c:617 #, c-format msgid "Sense error: %s%c " msgstr "Chyba testu: %s%c " -#: src/print-sense.c:629 +#: src/print-sense.c:631 #, c-format msgid "unknown asc/ascq code (0x%02x, 0x%02x)." msgstr "neznámý kód asc/ascq (0x%02x, 0x%02x)." -#: src/raw-editor.c:297 +#: src/raw-editor.c:299 msgid "windowtitle|Raw sector dump selection" msgstr "Výběr neupraveného sektoru" -#: src/raw-editor.c:328 +#: src/raw-editor.c:330 #, c-format msgid "%s loaded, LBA %, %d samples." msgstr "%s načteno, LBA %, %d vzorků." -#: src/raw-editor.c:352 +#: src/raw-editor.c:354 msgid "EDC checksum does not match - sector still defective!" msgstr "EDC součet nesouhlasí - sektor je stále poškozen!" -#: src/raw-editor.c:357 +#: src/raw-editor.c:359 msgid "LBA does not match MSF code in sector!" msgstr "LBA neodpovídá MSF kódu v sektoru!" -#: src/raw-editor.c:384 +#: src/raw-editor.c:386 msgid "Raw sector does not belong to the selected image!" msgstr "Sektor nepatří k vybrané bitové kopii!" -#: src/raw-editor.c:390 src/read-adaptive.c:1348 src/read-adaptive.c:1428 -#: src/read-adaptive.c:1770 src/read-adaptive.c:1988 src/read-linear.c:426 -#: src/read-linear.c:708 src/read-linear.c:1048 src/rs01-fix.c:501 -#: src/rs01-fix.c:761 src/rs02-fix.c:786 src/rs03-fix.c:865 +#: src/raw-editor.c:392 src/read-adaptive.c:1279 src/read-adaptive.c:1351 +#: src/read-adaptive.c:1674 src/read-adaptive.c:1873 src/read-linear.c:394 +#: src/read-linear.c:667 src/read-linear.c:1018 src/rs01-fix.c:469 +#: src/rs01-fix.c:729 src/rs02-fix.c:750 src/rs03-fix.c:824 #, c-format msgid "Failed seeking to sector % in image [%s]: %s" msgstr "Nezdařil se přechod na sektor % bitové kopie [%s]: %s" -#: src/raw-editor.c:397 src/read-adaptive.c:1362 src/read-adaptive.c:1434 -#: src/read-adaptive.c:1802 src/read-adaptive.c:1817 src/read-adaptive.c:1996 -#: src/read-linear.c:435 src/read-linear.c:715 src/rs01-fix.c:195 -#: src/rs01-fix.c:508 +#: src/raw-editor.c:399 src/read-adaptive.c:1293 src/read-adaptive.c:1357 +#: src/read-adaptive.c:1706 src/read-adaptive.c:1719 src/read-adaptive.c:1881 +#: src/read-linear.c:403 src/read-linear.c:674 src/rs01-fix.c:185 +#: src/rs01-fix.c:476 #, c-format msgid "Failed writing to sector % in image [%s]: %s" msgstr "Nezdařil se zápis sektoru % bitové kopie [%s]: %s" -#: src/raw-editor.c:418 +#: src/raw-editor.c:420 msgid "windowtitle|Load buffer from file" msgstr "Načíst buffer ze souboru" -#: src/raw-editor.c:436 +#: src/raw-editor.c:438 msgid "windowtitle|Save buffer to file" msgstr "Uložit buffer do souboru" -#: src/raw-editor.c:474 +#: src/raw-editor.c:476 #, c-format msgid "Buffer loaded from %s." msgstr "Buffer načten z %s." -#: src/raw-editor.c:489 +#: src/raw-editor.c:491 #, c-format msgid "Buffer saved to %s." msgstr "Buffer uložen do %s." -#: src/raw-editor.c:576 +#: src/raw-editor.c:578 msgid "*** Well done: Sector has been recovered! ***" msgstr "*** Gratulujeme: Sektor byl obnoven! ***" -#: src/raw-editor.c:579 +#: src/raw-editor.c:582 #, c-format msgid "Current buffer state: P %d/%d, Q %d/%d" msgstr "Aktuální stav bufferu: P %d/%d, Q %d/%d" -#: src/raw-editor.c:690 +#: src/raw-editor.c:694 #, c-format msgid "%c Vector %d has >2 erasures (nothing done)." msgstr "%c vektor %d má >2 výmazy (žádná akce)." -#: src/raw-editor.c:719 +#: src/raw-editor.c:723 #, c-format msgid "%c Vector %d already good." msgstr "%c vektor %d je již dobrý." -#: src/raw-editor.c:727 +#: src/raw-editor.c:731 #, c-format msgid "%c Vector %d corrected (%d erasures)." msgstr "%c vektor %d opraven (%d výmazů)." -#: src/raw-editor.c:730 +#: src/raw-editor.c:734 #, c-format msgid "%c Vector %d not correctable (%d erasures)." msgstr "%c vektor %d je neopravitelný (%d výmazů)." -#: src/raw-editor.c:745 +#: src/raw-editor.c:749 #, c-format msgid "no replacements for P vector %d available" msgstr "neexistuje žádná náhrada pro P vektor %d" -#: src/raw-editor.c:761 +#: src/raw-editor.c:765 #, c-format msgid "Exchanged P vector %d with version %d (of %d)." msgstr "P vektor %d zaměněn za verzi %d (z %d)." -#: src/raw-editor.c:783 +#: src/raw-editor.c:787 #, c-format msgid "no replacements for Q vector %d available" msgstr "neexistuje žádná náhrada pro Q vektor %d" -#: src/raw-editor.c:797 +#: src/raw-editor.c:801 #, c-format msgid "Exchanged Q vector %d with version %d (of %d)." msgstr "Q vektor %d zaměněn za verzi %d (z %d)." -#: src/raw-editor.c:858 src/raw-editor.c:871 +#: src/raw-editor.c:862 src/raw-editor.c:875 #, c-format msgid "Showing sample %d (of %d)." msgstr "Zobrazení vzorku %d (z %d)." -#: src/raw-editor.c:917 +#: src/raw-editor.c:921 msgid "Sector with lowest P failures selected." msgstr "Vybrán sektor s nejnižším počtem P chyb." -#: src/raw-editor.c:927 +#: src/raw-editor.c:931 msgid "Sector with lowest Q failures selected." msgstr "Vybrán sektor s nejnižším počtem Q chyb." -#: src/raw-editor.c:939 +#: src/raw-editor.c:942 #, c-format msgid "Smart L-EC: %s" msgstr "Chytré L-EC: %s" -#: src/raw-editor.c:960 +#: src/raw-editor.c:963 msgid "Raw sector editor" msgstr "Editor neupravených sektorů" -#: src/raw-editor.c:982 +#: src/raw-editor.c:985 msgid "Please load a raw sector file!" msgstr "Načtěte soubor nezpracovaného sektoru!" -#: src/raw-editor.c:994 +#: src/raw-editor.c:997 msgid "Browsing" msgstr "Procházení" -#: src/raw-editor.c:1006 +#: src/raw-editor.c:1009 msgid "button|Load" msgstr "Načíst" -#: src/raw-editor.c:1011 +#: src/raw-editor.c:1014 msgid "button|Save" msgstr "Uložit" -#: src/raw-editor.c:1017 +#: src/raw-editor.c:1020 msgid "button|Prev. sector" msgstr "Předchozí sektor" -#: src/raw-editor.c:1022 +#: src/raw-editor.c:1025 msgid "button|Next sector" msgstr "Následující sektor" -#: src/raw-editor.c:1027 +#: src/raw-editor.c:1030 msgid "button|Sort by P" msgstr "Seřadit podle P" -#: src/raw-editor.c:1032 +#: src/raw-editor.c:1035 msgid "button|Sort by Q" msgstr "Seřadit podle Q" -#: src/raw-editor.c:1039 +#: src/raw-editor.c:1042 msgid "Editing" msgstr "Editace" -#: src/raw-editor.c:1051 +#: src/raw-editor.c:1054 msgid "button|Load Buf" msgstr "Načíst buffer" -#: src/raw-editor.c:1056 +#: src/raw-editor.c:1059 msgid "button|Save Buf" msgstr "Uložit buffer" -#: src/raw-editor.c:1061 +#: src/raw-editor.c:1064 msgid "button|Tag diffs" msgstr "Označit rozdíly" -#: src/raw-editor.c:1066 +#: src/raw-editor.c:1069 msgid "button|Untag all" msgstr "Zrušit označení" -#: src/raw-editor.c:1071 +#: src/raw-editor.c:1074 msgid "button|Redo" msgstr "Opakovat" -#: src/raw-editor.c:1076 +#: src/raw-editor.c:1079 msgid "button|Undo" msgstr "Zpět" -#: src/raw-editor.c:1083 +#: src/raw-editor.c:1086 msgid "Correction" msgstr "Oprava" -#: src/raw-editor.c:1086 +#: src/raw-editor.c:1089 msgid "button|P vector" msgstr "P vektor" -#: src/raw-editor.c:1091 +#: src/raw-editor.c:1094 msgid "button|Q vector" msgstr "Q vektor" -#: src/raw-editor.c:1096 +#: src/raw-editor.c:1099 msgid "button|Find other P" msgstr "Najít další P" -#: src/raw-editor.c:1101 +#: src/raw-editor.c:1104 msgid "button|Find other Q" msgstr "Najít další Q" -#: src/raw-editor.c:1106 +#: src/raw-editor.c:1109 msgid "button|Tag erasures" msgstr "Označit výmazy" -#: src/raw-editor.c:1113 +#: src/raw-editor.c:1116 msgid "Heuristics" msgstr "Heuristika" -#: src/raw-editor.c:1116 +#: src/raw-editor.c:1119 msgid "button|Smart L-EC" msgstr "Chytré L-EC" -#: src/raw-sector-cache.c:35 src/raw-sector-cache.c:209 -#: src/raw-sector-cache.c:354 src/scsi-freebsd.c:131 src/scsi-freebsd.c:141 -#: src/scsi-linux.c:115 src/scsi-linux.c:124 src/scsi-netbsd.c:126 -#: src/scsi-netbsd.c:136 src/scsi-win32.c:256 +#: src/raw-sector-cache.c:37 src/raw-sector-cache.c:204 +#: src/raw-sector-cache.c:338 src/scsi-freebsd.c:133 src/scsi-freebsd.c:143 +#: src/scsi-linux.c:117 src/scsi-linux.c:126 src/scsi-netbsd.c:128 +#: src/scsi-netbsd.c:138 src/scsi-win32.c:256 #, c-format msgid "Could not open %s: %s" msgstr "Nepodařilo se otevřít %s: %s" -#: src/raw-sector-cache.c:60 src/raw-sector-cache.c:124 -#: src/raw-sector-cache.c:130 src/raw-sector-cache.c:134 -#: src/raw-sector-cache.c:162 src/raw-sector-cache.c:267 +#: src/raw-sector-cache.c:62 src/raw-sector-cache.c:126 +#: src/raw-sector-cache.c:132 src/raw-sector-cache.c:136 +#: src/raw-sector-cache.c:164 src/raw-sector-cache.c:262 #, c-format msgid "Failed writing to defective sector file: %s" msgstr "Selhal zápis souboru poškozeného sektoru: %s" -#: src/raw-sector-cache.c:80 src/raw-sector-cache.c:105 -#: src/raw-sector-cache.c:223 src/raw-sector-cache.c:324 -#: src/raw-sector-cache.c:370 +#: src/raw-sector-cache.c:82 src/raw-sector-cache.c:107 +#: src/raw-sector-cache.c:218 src/raw-sector-cache.c:314 +#: src/raw-sector-cache.c:354 #, c-format msgid "Failed reading from defective sector file: %s" msgstr "Selhalo čtení souboru poškozeného sektoru: %s" -#: src/raw-sector-cache.c:88 +#: src/raw-sector-cache.c:90 msgid "Defective sector file is truncated" msgstr "Soubor poškozeného sektoru je zkrácen" -#: src/raw-sector-cache.c:112 src/raw-sector-cache.c:138 -#: src/raw-sector-cache.c:150 src/raw-sector-cache.c:216 -#: src/raw-sector-cache.c:231 +#: src/raw-sector-cache.c:114 src/raw-sector-cache.c:140 +#: src/raw-sector-cache.c:152 src/raw-sector-cache.c:211 +#: src/raw-sector-cache.c:226 #, c-format msgid "Failed seeking in defective sector file: %s" msgstr "Selhalo procházení souboru poškozeného sektoru: %s" -#: src/raw-sector-cache.c:169 +#: src/raw-sector-cache.c:171 msgid "Fingerprints of medium and defective sector cache do not match!" msgstr "Otisk disku a mezipaměť poškozených sektorů nesouhlasí!" -#: src/raw-sector-cache.c:203 +#: src/raw-sector-cache.c:198 #, c-format msgid " [Creating new cache file %s]\n" msgstr " [Vytvoření nového souboru mezipaměti %s]\n" -#: src/raw-sector-cache.c:280 +#: src/raw-sector-cache.c:270 #, c-format msgid " [Appended %d/%d sectors to cache file %s; LBA=%, ssize=%d, %d sectors]\n" msgstr " [Přidáno %d/%d sektorů do souboru mezipaměti %s; LBA=%, velikosts=%d, %d sektorů]\n" -#: src/read-adaptive.c:55 src/rs01-create.c:1080 +#: src/read-adaptive.c:57 src/rs01-create.c:1018 #, c-format msgid "" "Error closing error correction file:\n" @@ -2929,11 +2898,11 @@ msgstr "" "Při uzavírání opravného souboru došlo k chybě:\n" "%s" -#: src/read-adaptive.c:78 src/read-adaptive.c:115 +#: src/read-adaptive.c:80 src/read-adaptive.c:117 msgid "Invalid or damaged ecc file" msgstr "Neplatný nebo poškozený soubor ecc" -#: src/read-adaptive.c:102 +#: src/read-adaptive.c:104 #, c-format msgid "" "Can't read ecc header:\n" @@ -2942,7 +2911,7 @@ msgstr "" "Nelze přečíst hlavičku ecc:\n" "%s" -#: src/read-adaptive.c:119 +#: src/read-adaptive.c:121 src/read-linear.c:867 #, c-format msgid "" "* Warning: This ecc file requires dvdisaster-%d.%d!\n" @@ -2952,74 +2921,74 @@ msgid "" "\n" msgstr "" -#: src/read-adaptive.c:152 src/rs01-common.c:80 src/rs01-common.c:238 -#: src/rs01-create.c:326 src/rs01-verify.c:891 +#: src/read-adaptive.c:154 src/rs01-common.c:82 src/rs01-common.c:237 +#: src/rs01-create.c:299 src/rs01-verify.c:794 #, c-format msgid "Failed skipping the ecc header: %s" msgstr "Nepodařilo se přeskočit ecc hlavičku: %s" -#: src/read-adaptive.c:161 src/read-adaptive.c:171 src/rs01-common.c:92 -#: src/rs01-common.c:102 src/rs01-common.c:350 +#: src/read-adaptive.c:163 src/read-adaptive.c:173 src/rs01-common.c:94 +#: src/rs01-common.c:104 src/rs01-common.c:347 #, c-format msgid "Error reading CRC information: %s" msgstr "Nepodařilo se načíst CRC informace: %s" -#: src/read-adaptive.c:374 src/read-adaptive.c:1747 +#: src/read-adaptive.c:375 src/read-adaptive.c:1650 msgid "Aborted by unrecoverable error." msgstr "Zrušeno kvůli neopravitelné chybě." -#: src/read-adaptive.c:510 +#: src/read-adaptive.c:508 #, c-format msgid "Repairable: %2d.%1d%% (correctable: %; now reading [%..%], size %)" msgstr "Opravitelné: %2d.%1d%% (opravitelné: %; nyní načítáno [%..%], velikost %)" -#: src/read-adaptive.c:515 +#: src/read-adaptive.c:513 #, c-format msgid "Repairable: %2d.%1d%% (missing: %; now reading [%..%], size %)" msgstr "Opravitelné: %2d.%1d%% (chybějící: %; nyní načítáno [%..%], velikost %)" -#: src/read-adaptive.c:655 src/read-adaptive.c:671 src/read-adaptive.c:701 +#: src/read-adaptive.c:651 src/read-adaptive.c:662 src/read-adaptive.c:692 #, c-format msgid "%s-type ECC found\n" msgstr "" -#: src/read-adaptive.c:674 +#: src/read-adaptive.c:665 src/read-linear.c:874 #, c-format msgid "" "* Warning: This image requires dvdisaster-%d.%d!\n" "* Proceeding could trigger incorrect behaviour.\n" -"* Please visit http://www.dvdisaster.org for an upgrade.\n" +"* Please upgrade dvdisaster.\n" "\n" msgstr "" -#: src/read-adaptive.c:703 +#: src/read-adaptive.c:694 msgid "" "Adaptive reading has not been adapted yet to handle RS03-augmented images properly.\n" "To quote the original author: \"behaviour with RS03 is unpredictable and undefined\".\n" "You should cancel and use the linear reading strategy instead. Continue at your own risk.\n" msgstr "" -#: src/read-adaptive.c:710 src/read-adaptive.c:773 src/read-adaptive.c:792 -#: src/read-adaptive.c:865 src/read-adaptive.c:960 src/read-adaptive.c:1030 -#: src/read-adaptive.c:1371 src/read-adaptive.c:1671 +#: src/read-adaptive.c:699 src/read-adaptive.c:758 src/read-adaptive.c:773 +#: src/read-adaptive.c:837 src/read-adaptive.c:926 src/read-adaptive.c:987 +#: src/read-adaptive.c:1300 src/read-adaptive.c:1576 msgid "Aborted by user request!" msgstr "Zrušeno uživatelem!" -#: src/read-adaptive.c:721 +#: src/read-adaptive.c:709 #, c-format msgid "Stopping when unreadable intervals < %d." msgstr "Bude zastaveno při nečitelných úsecích < %d." -#: src/read-adaptive.c:723 src/read-adaptive.c:729 +#: src/read-adaptive.c:711 src/read-adaptive.c:717 #, c-format msgid "Adaptive reading: %s\n" msgstr "Adaptivní čtení: %s\n" -#: src/read-adaptive.c:728 +#: src/read-adaptive.c:716 msgid "Trying to collect enough data for error correction." msgstr "Pokouším se shromáždit dostatek dat pro opravu chyb." -#: src/read-adaptive.c:764 +#: src/read-adaptive.c:751 #, c-format msgid "" "Medium contains % sectors more as recorded in the .ecc file\n" @@ -3030,7 +2999,7 @@ msgstr "" "(Disk: % sektorů; podle ecc očekáváno: % sektorů).\n" "Bude zpracováno pouze prvních % sektorů disku.\n" -#: src/read-adaptive.c:785 +#: src/read-adaptive.c:768 #, c-format msgid "" "Medium contains % sectors less as recorded in the .ecc file\n" @@ -3039,12 +3008,12 @@ msgstr "" "Disk obsahuje o % sektorů méně než je uvedeno v souboru ECC\n" "(Disk: % sektorů; podle .ecc očekáváno: % sektorů).\n" -#: src/read-adaptive.c:832 +#: src/read-adaptive.c:807 #, c-format msgid "Limiting sector range to [%,%].\n" msgstr "Rozsah sektorů omezen na [%,%].\n" -#: src/read-adaptive.c:858 +#: src/read-adaptive.c:832 #, c-format msgid "" "Sector %d is missing. Can not compare medium and ecc fingerprints.\n" @@ -3053,7 +3022,7 @@ msgstr "" "Sektor %d chybí. Nelze porovnat otisky bitové kopie a ecc.\n" "Ujistěte se, že soubory bitové kopie a ecc patří k sobě.\n" -#: src/read-adaptive.c:874 +#: src/read-adaptive.c:845 msgid "" "Fingerprints of medium and ecc file do not match.\n" "Medium and ecc file do not belong together.\n" @@ -3061,15 +3030,15 @@ msgstr "" "Otisky disku a ecc nesouhlasí.\n" "Disk a soubor ecc k sobě nepatří.\n" -#: src/read-adaptive.c:917 src/read-linear.c:360 +#: src/read-adaptive.c:886 src/read-linear.c:337 msgid "Image file does not match the optical disc." msgstr "Soubor bitové kopie neodpovídá CD/DVD/BD." -#: src/read-adaptive.c:924 +#: src/read-adaptive.c:893 msgid "Reading aborted. Please select a different image file." msgstr "Čtení zrušeno. Vyberte jiný soubor bitové kopie." -#: src/read-adaptive.c:952 +#: src/read-adaptive.c:920 #, c-format msgid "" "Image file is % sectors longer than inserted medium\n" @@ -3078,74 +3047,74 @@ msgstr "" "Soubor bitové kopie je o % sektorů delší než vložený disk\n" "(Soubor bitové kopie: % sektorů; disk: % sektorů).\n" -#: src/read-adaptive.c:980 src/read-adaptive.c:986 +#: src/read-adaptive.c:944 src/read-adaptive.c:948 msgid "Loading CRC data." msgstr "Probíhá načtení CRC dat." -#: src/read-adaptive.c:1020 +#: src/read-adaptive.c:979 msgid "Analysing existing image file" msgstr "Analyzování existujícího souboru bitové kopie" -#: src/read-adaptive.c:1040 src/rs01-common.c:280 src/rs02-verify.c:752 +#: src/read-adaptive.c:996 src/rs01-common.c:277 src/rs02-verify.c:730 #, c-format msgid "premature end in image (only %d bytes): %s\n" msgstr "předčasný konec bitové kopie (pouze %d bajtů): %s\n" -#: src/read-adaptive.c:1127 +#: src/read-adaptive.c:1074 #, c-format msgid "Analysing existing image file: %2d%%" msgstr "Analyzování existujícího souboru bitové kopie: %2d%%" -#: src/read-adaptive.c:1156 +#: src/read-adaptive.c:1101 msgid "Determining correctable sectors" msgstr "Určování opravitelných sektorů" -#: src/read-adaptive.c:1236 +#: src/read-adaptive.c:1176 #, c-format msgid "Analysing existing image file: % readable, % correctable, % still missing.\n" msgstr "Analyzování existujícího souboru bitové kopie: % čitelných, % opravitelných, % chybí.\n" -#: src/read-adaptive.c:1238 +#: src/read-adaptive.c:1178 #, c-format msgid "Analysing existing image file: % readable, % still missing.\n" msgstr "Analyzování existujícího souboru bitové kopie: % čitelných, % chybí.\n" -#: src/read-adaptive.c:1295 src/read-linear.c:789 +#: src/read-adaptive.c:1228 src/read-linear.c:748 msgid "Ignore once" msgstr "Ignorovat jednou" -#: src/read-adaptive.c:1296 src/read-linear.c:790 +#: src/read-adaptive.c:1229 src/read-linear.c:749 msgid "Ignore always" msgstr "Ignorovat vždy" -#: src/read-adaptive.c:1297 src/read-linear.c:791 +#: src/read-adaptive.c:1230 src/read-linear.c:750 msgid "Abort" msgstr "Přerušit" -#: src/read-adaptive.c:1333 +#: src/read-adaptive.c:1266 #, c-format msgid "Filling image area [%..%]" msgstr "Vyplňování oblasti bitové kopie [%..%]" -#: src/read-adaptive.c:1465 src/read-linear.c:223 +#: src/read-adaptive.c:1388 src/read-linear.c:218 msgid "Reading aborted" msgstr "Čtení zrušeno" -#: src/read-adaptive.c:1469 src/read-linear.c:228 +#: src/read-adaptive.c:1391 src/read-linear.c:221 msgid "Preparing for reading the medium image." msgstr "Příprava na vytvoření bitové kopie disku." -#: src/read-adaptive.c:1470 src/read-linear.c:219 src/read-linear.c:229 +#: src/read-adaptive.c:1392 src/read-linear.c:215 src/read-linear.c:222 msgid "Medium: not yet determined" msgstr "Disk: dosud nebyl určen" -#: src/read-adaptive.c:1485 +#: src/read-adaptive.c:1406 msgid "" "Adaptive reading is unavailable in this version.\n" "It will be re-introduced in one of the next versions." msgstr "" -#: src/read-adaptive.c:1494 +#: src/read-adaptive.c:1415 msgid "" "* Warning: Using adaptive reading without error correction data\n" "* has little advantage over linear reading, but may\n" @@ -3154,20 +3123,20 @@ msgid "" "* Please consider using linear reading instead.\n" msgstr "" -#: src/read-adaptive.c:1554 src/read-linear.c:293 +#: src/read-adaptive.c:1473 src/read-linear.c:277 #, c-format msgid "Creating new %s image.\n" msgstr "Vytváření nové bitové kopie %s.\n" -#: src/read-adaptive.c:1559 src/read-linear.c:286 +#: src/read-adaptive.c:1476 src/read-linear.c:270 msgid "Reading new medium image." msgstr "Vytvoření nové bitové kopie disku." -#: src/read-adaptive.c:1581 src/read-linear.c:319 +#: src/read-adaptive.c:1495 src/read-linear.c:298 msgid "Completing existing medium image." msgstr "Doplnění existující bitové kopie disku." -#: src/read-adaptive.c:1615 src/read-adaptive.c:1946 +#: src/read-adaptive.c:1528 src/read-adaptive.c:1842 msgid "" "\n" "Sufficient data for reconstructing the image is available.\n" @@ -3175,7 +3144,7 @@ msgstr "" "\n" "K dispozici je dostatek dat pro rekonstrukci bitové kopie.\n" -#: src/read-adaptive.c:1731 src/read-linear.c:1115 +#: src/read-adaptive.c:1636 src/read-linear.c:1090 #, c-format msgid "" "Sector %: %s\n" @@ -3186,7 +3155,7 @@ msgstr "" "Výše uvedenou chybu nelze opravit.\n" "Pro ignorování použijte parametr --ignore-fatal-sense." -#: src/read-adaptive.c:1737 src/read-linear.c:1121 +#: src/read-adaptive.c:1641 src/read-linear.c:1096 #, c-format msgid "" "Sector %: %s\n" @@ -3199,28 +3168,28 @@ msgstr "" "Je možné, že zotavení po této chybě nebude možné.\n" "Má čtení pokračovat a ignorovat tuto chybu?" -#: src/read-adaptive.c:1793 src/rs01-fix.c:451 src/rs02-fix.c:464 -#: src/rs03-fix.c:522 +#: src/read-adaptive.c:1697 src/rs01-fix.c:422 src/rs02-fix.c:431 +#: src/rs03-fix.c:484 #, c-format msgid "CRC error in sector %\n" msgstr "Chyba CRC v sektoru %\n" -#: src/read-adaptive.c:1972 src/scsi-layer.c:1776 +#: src/read-adaptive.c:1862 src/scsi-layer.c:1781 #, c-format msgid "Sectors %-%: %s\n" msgstr "Sektory %-%: %s\n" -#: src/read-adaptive.c:1980 src/read-linear.c:1318 src/scsi-layer.c:1775 +#: src/read-adaptive.c:1865 src/read-linear.c:1284 src/scsi-layer.c:1780 #, c-format msgid "Sector %: %s\n" msgstr "Sektor %: %s\n" -#: src/read-adaptive.c:2111 +#: src/read-adaptive.c:1992 #, c-format msgid "Only %2d.%1d%% of the image are readable or correctable" msgstr "Pouze %2d.%1d%% bitové kopie je čitelných nebo opravitelných" -#: src/read-adaptive.c:2114 +#: src/read-adaptive.c:1995 #, c-format msgid "" "\n" @@ -3231,7 +3200,7 @@ msgstr "" "%s\n" "(% čitelných, % opravitelných, % stále chybějících).\n" -#: src/read-adaptive.c:2130 +#: src/read-adaptive.c:2008 msgid "" "\n" "Good! All sectors have been read.\n" @@ -3239,12 +3208,12 @@ msgstr "" "\n" "V pořádku! Všechny sektory byly načteny.\n" -#: src/read-adaptive.c:2141 +#: src/read-adaptive.c:2016 #, c-format msgid "No unreadable intervals with >= %d sectors left." msgstr "Nezbyly žádné nečitelné úseky obsahující >= %d sektorů." -#: src/read-adaptive.c:2144 +#: src/read-adaptive.c:2019 #, c-format msgid "" "\n" @@ -3252,42 +3221,42 @@ msgid "" "%2d.%1d%% of the image have been read (% sectors).\n" msgstr "" -#: src/read-adaptive-window.c:81 +#: src/read-adaptive-window.c:84 msgid "Adaptive reading:" msgstr "Adaptivní čtení:" -#: src/read-adaptive-window.c:109 +#: src/read-adaptive-window.c:112 msgid "Sectors processed" msgstr "Zpracované sektory" -#: src/read-adaptive-window.c:112 src/scsi-layer.c:1757 +#: src/read-adaptive-window.c:115 src/scsi-layer.c:1762 msgid "readable" msgstr "čitelné" -#: src/read-adaptive-window.c:116 +#: src/read-adaptive-window.c:119 msgid "correctable" msgstr "opravitelné" -#: src/read-adaptive-window.c:120 +#: src/read-adaptive-window.c:123 msgid "missing" msgstr "chybějící" -#: src/read-adaptive-window.c:130 +#: src/read-adaptive-window.c:133 #, c-format msgid "Readable: %d.%d%% / %d.%d%% required" msgstr "Čitelné: %d.%d%% / %d.%d%% požadovaných" -#: src/read-adaptive-window.c:137 +#: src/read-adaptive-window.c:140 #, c-format msgid "Total recoverable: %d.%d%%" msgstr "Celkem opravitelných: %d.%d%%" -#: src/read-linear.c:126 +#: src/read-linear.c:122 #, c-format msgid "Aborted by unrecoverable error. % sectors read, % sectors unreadable/skipped so far." msgstr "" -#: src/read-linear.c:182 +#: src/read-linear.c:176 msgid "" "Automatic error correction file creation\n" "is only possible after a full reading pass.\n" @@ -3295,77 +3264,77 @@ msgstr "" "Automatické vytvoření souboru pro opravu chyb\n" "je možné pouze po plném průchodu čtení.\n" -#: src/read-linear.c:213 +#: src/read-linear.c:211 msgid "Scanning aborted" msgstr "Kontrola zrušena" -#: src/read-linear.c:218 src/read-linear.c:252 +#: src/read-linear.c:214 src/read-linear.c:244 msgid "Scanning medium for read errors." msgstr "Kontrola disku na chyby čtení." -#: src/read-linear.c:260 src/read-linear.c:299 +#: src/read-linear.c:250 src/read-linear.c:281 msgid "Reading CRC information" msgstr "Probíhá načtení CRC informací" -#: src/read-linear.c:368 +#: src/read-linear.c:344 #, c-format msgid "Reading aborted. Please select a different image file." msgstr "Čtení zrušeno. Zvolte jiný soubor bitové kopie." -#: src/read-linear.c:388 +#: src/read-linear.c:363 #, c-format msgid "Completing image %s. Continuing with sector %.\n" msgstr "" -#: src/read-linear.c:396 +#: src/read-linear.c:369 #, c-format msgid "Completing image %s. Only missing sectors will be read.\n" msgstr "Doplnění bitové kopie %s. Budou čteny pouze chybějící sektory.\n" -#: src/read-linear.c:461 src/read-linear.c:470 +#: src/read-linear.c:442 src/read-linear.c:447 msgid "Reading CRC information from ecc data" msgstr "Probíhá načtení CRC informací z ecc dat" -#: src/read-linear.c:501 +#: src/read-linear.c:473 msgid "done.\n" msgstr "dokončeno.\n" -#: src/read-linear.c:522 src/scsi-layer.c:2103 +#: src/read-linear.c:493 src/scsi-layer.c:2108 #, c-format msgid "Waiting %d seconds for drive to spin up...\n" msgstr "Čekám %d sekund na roztočení disku...\n" -#: src/read-linear.c:548 src/read-linear-window.c:104 +#: src/read-linear.c:515 src/read-linear-window.c:109 #, c-format msgid "Unreadable / skipped sectors: %" msgstr "" -#: src/read-linear.c:644 +#: src/read-linear.c:605 #, c-format msgid "Sector %: Speed increased to %4.1fx\n" msgstr "" -#: src/read-linear.c:647 +#: src/read-linear.c:608 #, c-format msgid "Sector %: Speed dropped to %4.1fx\n" msgstr "" -#: src/read-linear.c:653 +#: src/read-linear.c:614 #, c-format -msgid "Read position: %3d.%1d%% (nn.nx)" +msgid "Read position: %3d.%1d%% (nn.nx), sector %/%, % sectors read OK, % read errors, % crc errors" msgstr "" -#: src/read-linear.c:655 +#: src/read-linear.c:615 #, c-format -msgid "Read position: %3d.%1d%% (%4.1fx)" -msgstr "Pozice čtení: %3d.%1d%% (%4.1fx)" +msgid "Read position: %3d.%1d%% (%4.1fx), sector %/%, % sectors read OK, % read errors, % crc errors" +msgstr "" -#: src/read-linear.c:749 +#: src/read-linear.c:708 #, c-format msgid "* CRC error, sector: %lld\n" msgstr "* Chyba CRC, sektor: %lld\n" -#: src/read-linear.c:879 +#: src/read-linear.c:841 #, c-format msgid "" "This ecc file requires dvdisaster-%d.%d!\n" @@ -3376,17 +3345,17 @@ msgid "" "\n" msgstr "" -#: src/read-linear.c:887 +#: src/read-linear.c:849 #, c-format msgid "" "This image requires dvdisaster-%d.%d!\n" "\n" "Proceeding could trigger incorrect behaviour.\n" -"Please visit http://www.dvdisaster.org for an upgrade.\n" +"Please upgrade dvdisaster.\n" "\n" msgstr "" -#: src/read-linear.c:898 src/read-linear.c:1002 src/read-linear.c:1132 +#: src/read-linear.c:858 src/read-linear.c:973 src/read-linear.c:1106 #, c-format msgid "Aborted by user request! % sectors read, % sectors unreadable/skipped so far." msgstr "" @@ -3394,22 +3363,22 @@ msgstr "" # # # -#: src/read-linear.c:1060 +#: src/read-linear.c:1030 #, c-format msgid "unexpected read error in image for sector %" msgstr "neočekávaná chyba čtení bitové kopie u sektoru %" -#: src/read-linear.c:1148 +#: src/read-linear.c:1122 #, c-format msgid "Sector %: %3d C2 errors.%s\n" msgstr "Sektor %: %3d C2 chyb.%s\n" -#: src/read-linear.c:1285 +#: src/read-linear.c:1256 #, c-format msgid "Sector %: %s Skipping %d sectors.\n" msgstr "Sektor %: %s Přeskakuji %d sektorů.\n" -#: src/read-linear.c:1356 +#: src/read-linear.c:1319 #, c-format msgid "" "Trying to complete image, reading pass %d of %d.\n" @@ -3418,7 +3387,7 @@ msgstr "" "Pokus o doplnění bitové kopie, pokus o načtení %d z %d.\n" "%s" -#: src/read-linear.c:1360 +#: src/read-linear.c:1321 #, c-format msgid "" "\n" @@ -3427,174 +3396,183 @@ msgstr "" "\n" "Pokus o doplnění bitové kopie, pokus o načtení %d z %d.\n" -#: src/read-linear.c:1397 +#: src/read-linear.c:1358 #, c-format msgid "% sectors read. " msgstr "Přečteno % sektorů. " -#: src/read-linear.c:1398 +#: src/read-linear.c:1359 #, c-format msgid "% sectors read; % unreadable sectors." msgstr "% sektorů načteno; % nečitelných sektorů." -#: src/read-linear.c:1410 +#: src/read-linear.c:1367 +#, c-format +msgid "All sectors are readable, but %d contain defective content." +msgstr "" + +#: src/read-linear.c:1377 #, c-format msgid "All sectors successfully read, but wrong image length (% sectors difference)" msgstr "Všechny sektory byly úspěšně načteny, ale nesouhlasí délka bitové kopie (rozdíl % sektorů)" -#: src/read-linear.c:1416 +#: src/read-linear.c:1383 msgid "All sectors successfully read, but wrong ecc md5sum." msgstr "Všechny sektory byly úspěšně načteny, ale nesouhlasí md5 kontrolní součet ecc." -#: src/read-linear.c:1422 +#: src/read-linear.c:1389 msgid "All sectors successfully read, but incomplete or damaged checksums." msgstr "" -#: src/read-linear.c:1423 +#: src/read-linear.c:1390 msgid "All sectors successfully read. Checksums match." msgstr "Všechny sektory byly úspěšně načteny. Kontrolní součet souhlasí." -#: src/read-linear.c:1425 +#: src/read-linear.c:1392 msgid "All sectors successfully read." msgstr "Všechny sektory byly úspěšně načteny." -#: src/read-linear.c:1430 +#: src/read-linear.c:1397 #, c-format msgid "% unreadable sectors." msgstr "% nečitelných sektorů." -#: src/read-linear.c:1433 +#: src/read-linear.c:1400 #, c-format msgid "% CRC errors and a md5sum mismatch in the CRC section." msgstr "" -#: src/read-linear.c:1435 +#: src/read-linear.c:1402 #, c-format msgid "% CRC errors." msgstr "% chyb CRC." -#: src/read-linear.c:1437 +#: src/read-linear.c:1404 #, c-format msgid "% CRC errors, % unreadable sectors." msgstr "% chyb CRC, % nečitelných sektorů" -#: src/read-linear.c:1446 +#: src/read-linear.c:1414 msgid "Scanning finished: " msgstr "Kontrola dokončena: " -#: src/read-linear.c:1448 +#: src/read-linear.c:1419 msgid "Reading finished: " msgstr "Čtení dokončeno: " -#: src/read-linear.c:1462 +#: src/read-linear.c:1432 src/read-linear.c:1443 #, c-format msgid "" "%d sectors missing at the end of the disc.\n" "This is okay if the CD was written in TAO (track at once) mode.\n" -"The Image will be truncated accordingly. See the manual for details.\n" +"%s" msgstr "" -"Na konci disku chybí %d sektorů.\n" -"To je v pořádku, pokud bylo CD zapsáno v režimu TAO (track at once).\n" -"Bitová kopie bude příslušně zkrácena. Další podrobnosti najdete v příručce.\n" -#: src/read-linear.c:1469 -#, c-format +#: src/read-linear.c:1437 +msgid "See the manual for details.\n" +msgstr "" + +#: src/read-linear.c:1439 +msgid "The Image will be truncated accordingly. See the manual for details.\n" +msgstr "" + +#: src/read-linear.c:1448 +msgid "" +"See the manual for details.\n" +"Use the --dao option to disable this message.\n" +msgstr "" + +#: src/read-linear.c:1451 msgid "" -"%d sectors missing at the end of the disc.\n" -"This is okay if the CD was written in TAO (track at once) mode.\n" "The Image will be truncated accordingly. See the manual for details.\n" "Use the --dao option to disable image truncating.\n" msgstr "" -"Na konci disku chybí %d sektorů.\n" -"To je v pořádku, pokud bylo CD zapsáno v režimu TAO (track at once).\n" -"Bitová kopie bude příslušně zkrácena. Další podrobnosti najdete v příručce.\n" -"Zkrácení bitové kopie můžete zakázat použitím parametru --dao.\n" -#: src/read-linear-window.c:97 +#: src/read-linear-window.c:102 #, c-format msgid "Current Speed: %d.%dx" msgstr "Aktuální rychlost: %d.%dx" -#: src/read-linear-window.c:254 src/read-linear-window.c:323 +#: src/read-linear-window.c:264 src/read-linear-window.c:333 msgid "Already present" msgstr "Již existuje" -#: src/read-linear-window.c:288 src/read-linear-window.c:330 -#: src/rs01-verify.c:126 src/rs02-verify.c:121 src/rs03-verify.c:130 +#: src/read-linear-window.c:298 src/read-linear-window.c:340 +#: src/rs01-verify.c:130 src/rs02-verify.c:123 src/rs03-verify.c:133 msgid "Sectors with CRC errors" msgstr "Sektory s chybami CRC" -#: src/read-linear-window.c:311 +#: src/read-linear-window.c:321 msgid "Medium state" msgstr "Stav disku" -#: src/read-linear-window.c:319 +#: src/read-linear-window.c:329 msgid "Not touched this time" msgstr "Vynechán" -#: src/read-linear-window.c:326 +#: src/read-linear-window.c:336 msgid "Successfully read" msgstr "Úspěšně přečtený" -#: src/read-linear-window.c:333 +#: src/read-linear-window.c:343 msgid "Unreadable / skipped" msgstr "Nečitelný/přeskočený" -#: src/read-linear-window.c:444 +#: src/read-linear-window.c:454 msgid "Speed" msgstr "Rychlost" -#: src/recover-raw.c:65 +#: src/recover-raw.c:66 #, c-format msgid "Sector % dumped to %s\n" msgstr "Sektor % uložen do %s\n" -#: src/rs01-common.c:252 src/rs02-verify.c:831 src/rs03-verify.c:1228 +#: src/rs01-common.c:251 src/rs02-verify.c:806 src/rs03-verify.c:1144 #, c-format msgid "- testing sectors : %3d%%" msgstr "- kontrola sektorů : %3d%%" -#: src/rs01-common.c:253 +#: src/rs01-common.c:252 #, c-format msgid "Scanning image sectors: %3d%%" msgstr "Probíhá kontrola sektorů bitové kopie: %3d%%" -#: src/rs01-common.c:308 src/rs02-verify.c:784 +#: src/rs01-common.c:305 src/rs02-verify.c:762 #, c-format msgid "* missing sector : %\n" msgstr "* chybějící sektor : %\n" -#: src/rs01-common.c:309 src/rs02-verify.c:785 +#: src/rs01-common.c:306 src/rs02-verify.c:763 #, c-format msgid "* missing sectors : % - %\n" msgstr "* chybějící sektory : % - %\n" -#: src/rs01-common.c:327 src/rs01-common.c:399 src/rs01-create.c:343 +#: src/rs01-common.c:324 src/rs01-common.c:395 src/rs01-create.c:316 #, c-format msgid "Error writing CRC information: %s" msgstr "Chyba při zápisu CRC informací: %s" -#: src/rs01-common.c:356 src/rs02-verify.c:797 src/rs03-verify.c:1202 +#: src/rs01-common.c:353 src/rs02-verify.c:775 src/rs03-verify.c:1118 #, c-format msgid "* CRC error, sector: %\n" msgstr "" -#: src/rs01-create.c:63 +#: src/rs01-create.c:65 #, c-format msgid "Redundancy %4.1f%% out of useful range [3.2%%..64.5%%]" msgstr "Redundance %4.1f%% z použitelného rozsahu [3.2%%..64.5%%]" -#: src/rs01-create.c:76 src/rs03-common.c:467 +#: src/rs01-create.c:78 src/rs03-common.c:468 #, c-format msgid "Ecc file size %m out of useful range [% .. %]" msgstr "Velikost souboru ecc %m je mimo užitečný rozsah [% .. %]" -#: src/rs01-create.c:91 +#: src/rs01-create.c:93 #, c-format msgid "Redundancy %d out of useful range [8..100]." msgstr "Redundance %d z použitelného rozsahu [8..100]." -#: src/rs01-create.c:107 src/rs01-create.c:112 +#: src/rs01-create.c:105 src/rs01-create.c:106 #, c-format msgid "" "\n" @@ -3603,27 +3581,27 @@ msgstr "" "\n" "Soubor bitové kopie %s byl smazán.\n" -#: src/rs01-create.c:123 +#: src/rs01-create.c:113 #, c-format msgid "Image file %s not deleted: %s\n" msgstr "Soubor bitové kopie %s nebyl smazán: %s\n" -#: src/rs01-create.c:160 src/rs01-fix.c:81 src/rs02-create.c:63 -#: src/rs02-fix.c:57 src/rs03-create.c:154 src/rs03-fix.c:57 +#: src/rs01-create.c:147 src/rs01-fix.c:79 src/rs02-create.c:61 +#: src/rs02-fix.c:55 src/rs03-create.c:152 src/rs03-fix.c:54 #, c-format msgid "Aborted by unrecoverable error." msgstr "Zrušeno kvůli neopravitelné chybě." -#: src/rs01-create.c:231 +#: src/rs01-create.c:212 msgid "Error correction file creation aborted" msgstr "Tvorba souboru pro opravu chyb zrušena" -#: src/rs01-create.c:254 +#: src/rs01-create.c:235 #, c-format msgid "Encoding with Method RS01: %d roots, %4.1f%% redundancy." msgstr "Kódování metodou RS01: %d bází, redundance %4.1f%%." -#: src/rs01-create.c:261 src/rs03-create.c:1373 +#: src/rs01-create.c:240 src/rs03-create.c:1331 #, c-format msgid "" "Creating the error correction file.\n" @@ -3632,49 +3610,49 @@ msgstr "" "Vytváření souboru pro opravu chyb.\n" "%s" -#: src/rs01-create.c:275 src/rs03-create.c:297 +#: src/rs01-create.c:252 src/rs03-create.c:284 #, c-format msgid "Aborted to keep existing ecc file." msgstr "Zrušeno pro zachování původního ecc souboru." -#: src/rs01-create.c:291 src/rs02-create.c:1080 src/rs03-create.c:1329 +#: src/rs01-create.c:267 src/rs02-create.c:1036 src/rs03-create.c:1285 #, c-format msgid "Image file %s: %s." msgstr "Bitová kopie %s: %s." -#: src/rs01-create.c:299 src/rs03-create.c:1348 +#: src/rs01-create.c:275 src/rs03-create.c:1304 msgid "No error correction file specified!\n" msgstr "" -#: src/rs01-create.c:312 +#: src/rs01-create.c:288 #, c-format msgid "Writing sector checksums: %3d%%" msgstr "Zápis kontrolních součtů sektorů: %3d%%" -#: src/rs01-create.c:317 +#: src/rs01-create.c:291 msgid "1. Writing image sector checksums:" msgstr "1. Zápis kontrolních součtů sektorů bitové kopie:" -#: src/rs01-create.c:369 src/rs01-window.c:131 +#: src/rs01-create.c:335 src/rs01-window.c:128 msgid "1. Calculating image sector checksums:" msgstr "1. Výpočet kontrolních součtů sektorů bitové kopie:" -#: src/rs01-create.c:388 src/rs01-create.c:538 src/rs01-create.c:636 +#: src/rs01-create.c:352 src/rs01-create.c:493 src/rs01-create.c:585 #, c-format msgid "Aborted by user request! (partial error correction file removed)" msgstr "Zrušeno uživatelem! (neúplný soubor pro opravu chyb odstraněn)" -#: src/rs01-create.c:401 +#: src/rs01-create.c:361 #, c-format msgid "% sectors unread or missing due to errors.\n" msgstr "% sektorů nepřečteno nebo chybí kvůli chybám.\n" -#: src/rs01-create.c:458 +#: src/rs01-create.c:414 #, c-format msgid "Failed skipping ecc+crc header: %s" msgstr "Přeskočení hlavičky ecc+crc se nezdařilo: %s" -#: src/rs01-create.c:485 src/rs02-create.c:553 +#: src/rs01-create.c:441 src/rs02-create.c:519 #, c-format msgid "" "Failed allocating memory for I/O cache.\n" @@ -3685,24 +3663,24 @@ msgstr "" "Aktuální velikost mezipaměti je %d MiB.\n" "Zkuste ji zmenšit.\n" -#: src/rs01-create.c:619 src/rs01-create.c:749 src/rs01-create.c:1049 -#: src/rs02-create.c:1005 src/rs03-create.c:1157 +#: src/rs01-create.c:569 src/rs01-create.c:693 src/rs01-create.c:987 +#: src/rs02-create.c:964 src/rs03-create.c:1121 #, c-format msgid "Ecc generation: %3d.%1d%%" msgstr "Tvorba ecc: %3d.%1d%%" -#: src/rs01-create.c:769 src/rs01-fix.c:219 src/rs01-fix.c:243 -#: src/rs01-fix.c:295 src/rs01-fix.c:332 src/rs01-fix.c:352 src/rs01-fix.c:407 -#: src/rs01-verify.c:457 src/rs01-verify.c:916 src/rs02-create.c:130 -#: src/rs02-fix.c:260 src/rs02-fix.c:281 src/rs02-fix.c:372 -#: src/rs02-verify.c:741 src/rs03-create.c:269 src/rs03-fix.c:278 -#: src/rs03-fix.c:327 src/rs03-fix.c:350 src/rs03-fix.c:429 -#: src/rs03-verify.c:548 src/rs03-verify.c:1096 +#: src/rs01-create.c:712 src/rs01-fix.c:207 src/rs01-fix.c:232 +#: src/rs01-fix.c:278 src/rs01-fix.c:308 src/rs01-fix.c:325 src/rs01-fix.c:378 +#: src/rs01-verify.c:440 src/rs01-verify.c:812 src/rs02-create.c:118 +#: src/rs02-fix.c:233 src/rs02-fix.c:253 src/rs02-fix.c:339 +#: src/rs02-verify.c:719 src/rs03-create.c:257 src/rs03-fix.c:252 +#: src/rs03-fix.c:295 src/rs03-fix.c:317 src/rs03-fix.c:391 +#: src/rs03-verify.c:538 src/rs03-verify.c:1012 #, c-format msgid "Aborted by user request!" msgstr "Zrušeno uživatelem!" -#: src/rs01-create.c:1062 +#: src/rs01-create.c:1000 #, c-format msgid "" "could not write to ecc file \"%s\":\n" @@ -3711,7 +3689,7 @@ msgstr "" "nezdařil se zápis do souboru ecc \"%s\":\n" "%s" -#: src/rs01-create.c:1077 +#: src/rs01-create.c:1015 #, c-format msgid "" "Can't write ecc header:\n" @@ -3720,12 +3698,12 @@ msgstr "" "Nelze zapsat hlavičku ecc:\n" "%s" -#: src/rs01-create.c:1085 src/rs02-create.c:1177 src/rs03-create.c:1446 +#: src/rs01-create.c:1023 src/rs02-create.c:1127 src/rs03-create.c:1404 #, c-format msgid "Ecc generation: 100.0%%\n" msgstr "Tvorba ecc: 100.0%%\n" -#: src/rs01-create.c:1086 src/rs03-create.c:1453 +#: src/rs01-create.c:1024 src/rs03-create.c:1411 #, c-format msgid "" "Error correction file \"%s\" created.\n" @@ -3734,7 +3712,7 @@ msgstr "" "Soubor pro opravu chyb \"%s\" byl vytvořen.\n" "Uchovávejte tento soubor na spolehlivém nosiči.\n" -#: src/rs01-create.c:1095 src/rs03-create.c:1482 +#: src/rs01-create.c:1031 src/rs03-create.c:1436 msgid "" "The error correction file has been successfully created.\n" "Make sure to keep this file on a reliable medium." @@ -3742,27 +3720,27 @@ msgstr "" "Soubor pro opravu chyb byl úspěšně vytvořen.\n" "Uchovávejte tento soubor na spolehlivém nosiči." -#: src/rs01-fix.c:39 src/rs02-fix.c:448 +#: src/rs01-fix.c:41 src/rs02-fix.c:415 #, c-format msgid "Failed seeking in crc area: %s" msgstr "Selhalo procházení oblasti crc: %s" -#: src/rs01-fix.c:44 src/rs02-fix.c:451 src/rs02-verify.c:444 +#: src/rs01-fix.c:46 src/rs02-fix.c:418 src/rs02-verify.c:438 #, c-format msgid "problem reading crc data: %s" msgstr "problém při čtení dat crc: %s" -#: src/rs01-fix.c:148 src/rs02-fix.c:190 src/rs03-fix.c:189 +#: src/rs01-fix.c:138 src/rs02-fix.c:169 src/rs03-fix.c:166 msgid "Repairing of image aborted" msgstr "Oprava bitové kopie zrušena" -#: src/rs01-fix.c:154 +#: src/rs01-fix.c:144 #, c-format msgid "Error correction file using Method RS01, %d roots, %4.1f%% redundancy." msgstr "Soubor pro opravu chyb s použitím metody RS01, %d bází, redundance %4.1f%%." -#: src/rs01-fix.c:161 src/rs02-fix.c:197 src/rs02-fix.c:229 src/rs03-fix.c:200 -#: src/rs03-fix.c:252 +#: src/rs01-fix.c:151 src/rs02-fix.c:174 src/rs02-fix.c:205 src/rs03-fix.c:175 +#: src/rs03-fix.c:226 #, c-format msgid "" "Repairing the image.\n" @@ -3771,7 +3749,7 @@ msgstr "" "Oprava bitové kopie.\n" "%s" -#: src/rs01-fix.c:166 src/rs02-fix.c:235 src/rs03-fix.c:258 +#: src/rs01-fix.c:156 src/rs02-fix.c:211 src/rs03-fix.c:232 #, c-format msgid "" "\n" @@ -3780,7 +3758,7 @@ msgstr "" "\n" "Režim opravy(%s): Opravitelné sektory budou v bitové kopii opraveny.\n" -#: src/rs01-fix.c:201 +#: src/rs01-fix.c:191 #, c-format msgid "" "The image file is %lld sectors longer as noted in the\n" @@ -3797,7 +3775,7 @@ msgstr "" "\n" "%s" -#: src/rs01-fix.c:209 src/rs02-fix.c:250 src/rs03-fix.c:317 +#: src/rs01-fix.c:199 src/rs02-fix.c:225 src/rs03-fix.c:287 #, c-format msgid "" "Image file is % sectors longer than expected.\n" @@ -3808,17 +3786,17 @@ msgstr "" "Bude považován za disk v režimu TAO.\n" "Na konci bitové kopie bude odebráno % sektorů.\n" -#: src/rs01-fix.c:238 src/rs02-fix.c:276 src/rs03-fix.c:345 +#: src/rs01-fix.c:227 src/rs02-fix.c:248 src/rs03-fix.c:312 msgid "Is it okay to remove the superfluous sectors?" msgstr "Mohou být nadbytečné sektory odstraněny?" -#: src/rs01-fix.c:255 src/rs01-fix.c:277 src/rs02-fix.c:290 src/rs02-fix.c:308 -#: src/rs03-fix.c:361 src/rs03-fix.c:381 +#: src/rs01-fix.c:244 src/rs01-fix.c:261 src/rs02-fix.c:262 src/rs02-fix.c:276 +#: src/rs03-fix.c:328 src/rs03-fix.c:344 #, c-format msgid "Image has been truncated by % sectors.\n" msgstr "Bitová kopie byla zkrácena o % sektorů.\n" -#: src/rs01-fix.c:268 src/rs02-fix.c:302 src/rs03-fix.c:373 +#: src/rs01-fix.c:252 src/rs02-fix.c:270 src/rs03-fix.c:336 msgid "" "Add the --truncate option to the program call\n" "to have the superfluous sectors removed." @@ -3826,7 +3804,7 @@ msgstr "" "Pro odstranění nadbytečných sektorů přidejte do\n" "volání pro spuštění programu parametr --truncate." -#: src/rs01-fix.c:287 src/rs03-fix.c:270 +#: src/rs01-fix.c:270 src/rs03-fix.c:244 #, c-format msgid "" "The image file is %d bytes longer than noted\n" @@ -3837,7 +3815,7 @@ msgstr "" "v souboru ecc. Mají být nadbytečné bajty z bitové kopie\n" "odstraněny?\n" -#: src/rs01-fix.c:308 src/rs03-fix.c:291 +#: src/rs01-fix.c:286 src/rs03-fix.c:261 #, c-format msgid "" "The image file is %d bytes longer than noted\n" @@ -3850,12 +3828,12 @@ msgstr "" "Pokud chcete nadbytečné sektory odstranit,\n" "přidejte parametr --truncate." -#: src/rs01-fix.c:317 src/rs03-fix.c:300 +#: src/rs01-fix.c:295 src/rs03-fix.c:270 #, c-format msgid "Image has been truncated by %d bytes.\n" msgstr "Bitová kopie byla zkrácena o %d sektorů.\n" -#: src/rs01-fix.c:325 +#: src/rs01-fix.c:303 msgid "" "Image file appears to be truncated.\n" "Consider completing it with another reading pass before going on.\n" @@ -3863,7 +3841,7 @@ msgstr "" "Zdá se, že je soubor bitové kopie zkrácen.\n" "Před pokračováním zvažte jeho doplnění dalším průchodem čtení.\n" -#: src/rs01-fix.c:344 +#: src/rs01-fix.c:319 #, c-format msgid "" "Sector %d is missing. Can not compare image and ecc fingerprints.\n" @@ -3872,7 +3850,7 @@ msgstr "" "Chybí sektor %d. Nelze porovnat otisky bitové kopie a ecc.\n" "Ujistěte se, že soubory bitové kopie a ecc patří k sobě.\n" -#: src/rs01-fix.c:360 +#: src/rs01-fix.c:332 msgid "" "Fingerprints of image and ecc file do not match.\n" "Image and ecc file do not belong together.\n" @@ -3880,17 +3858,17 @@ msgstr "" "Otisky bitové kopie a souboru ecc nesouhlasí.\n" "Bitová kopie a ecc soubor k sobě nepatří.\n" -#: src/rs01-fix.c:479 +#: src/rs01-fix.c:447 #, c-format msgid "* %3d unrepairable sectors: " msgstr "* %3d neopravitelných sektorů: " -#: src/rs01-fix.c:527 +#: src/rs01-fix.c:495 #, c-format msgid "Failed seeking in ecc area: %s" msgstr "Selhalo procházení ecc oblasti: %s" -#: src/rs01-fix.c:531 +#: src/rs01-fix.c:499 #, c-format msgid "" "Can't read ecc file:\n" @@ -3899,27 +3877,27 @@ msgstr "" "Čtení ecc souboru se nezdařilo:\n" "%s" -#: src/rs01-fix.c:727 +#: src/rs01-fix.c:695 #, c-format msgid "-> Error located in sector % at byte %4d (value %02x '%c', expected %02x '%c')\n" msgstr "-> V sektoru % na bajtu %4d lokalizována chyba (hodnota %02x '%c', očekáváno %02x '%c')\n" -#: src/rs01-fix.c:734 +#: src/rs01-fix.c:702 #, c-format msgid "Unexpected byte error in sector %, byte %d\n" msgstr "Neočekávaná chyba bajtu sektoru %, bajt %d\n" -#: src/rs01-fix.c:740 +#: src/rs01-fix.c:708 #, c-format msgid "Bad error location %d; corrupted .ecc file?\n" msgstr "Chybná poloha chyby %d; poškozený soubor ECC?\n" -#: src/rs01-fix.c:750 src/rs02-fix.c:752 src/rs03-fix.c:819 +#: src/rs01-fix.c:718 src/rs02-fix.c:716 src/rs03-fix.c:778 #, c-format msgid " %3d repaired sectors: " msgstr " %3d opravených sektorů: " -#: src/rs01-fix.c:769 src/rs02-fix.c:794 src/rs03-fix.c:870 +#: src/rs01-fix.c:737 src/rs02-fix.c:758 src/rs03-fix.c:829 #, c-format msgid "" "could not write medium sector %:\n" @@ -3928,175 +3906,175 @@ msgstr "" "nelze zapsat sektor disku %:\n" "%s" -#: src/rs01-fix.c:798 src/rs02-fix.c:835 src/rs03-fix.c:927 +#: src/rs01-fix.c:766 src/rs02-fix.c:797 src/rs03-fix.c:886 #, c-format msgid "Ecc progress: %3d.%1d%%" msgstr "Průběh ecc: %3d.%1d%%" -#: src/rs01-fix.c:810 src/rs02-fix.c:849 src/rs03-fix.c:939 +#: src/rs01-fix.c:778 src/rs02-fix.c:811 src/rs03-fix.c:898 #, c-format msgid "Ecc progress: 100.0%%\n" msgstr "Průběh ecc: 100.0%%\n" -#: src/rs01-fix.c:811 +#: src/rs01-fix.c:779 #, c-format msgid "Repaired sectors: % \n" msgstr "Opravené sektory: % \n" -#: src/rs01-fix.c:813 src/rs02-fix.c:854 src/rs03-fix.c:944 +#: src/rs01-fix.c:781 src/rs02-fix.c:816 src/rs03-fix.c:905 #, c-format msgid "Unrepaired sectors: %\n" msgstr "Neopravené sektory: %\n" -#: src/rs01-fix.c:817 src/rs02-fix.c:858 src/rs03-fix.c:948 +#: src/rs01-fix.c:783 src/rs02-fix.c:818 src/rs03-fix.c:907 #, c-format msgid "Image sectors could not be fully restored (% repaired; % unrepaired)" msgstr "Sektory bitové kopie se nepodařilo úplně obnovit (% opraveno; % neopraveno)" -#: src/rs01-fix.c:824 src/rs02-fix.c:865 src/rs03-fix.c:956 +#: src/rs01-fix.c:789 src/rs02-fix.c:824 src/rs03-fix.c:914 msgid "Good! All sectors are already present." msgstr "V pořádku! Všechny sektory již existují." -#: src/rs01-fix.c:828 src/rs02-fix.c:869 src/rs03-fix.c:961 +#: src/rs01-fix.c:793 src/rs02-fix.c:828 src/rs03-fix.c:919 msgid "Good! All sectors are repaired." msgstr "V pořádku! Všechny sektory jsou opraveny." -#: src/rs01-fix.c:833 src/rs02-fix.c:874 src/rs03-fix.c:967 +#: src/rs01-fix.c:798 src/rs02-fix.c:833 src/rs03-fix.c:925 #, c-format msgid "Erasure counts per ecc block: avg = %.1f; worst = %d.\n" msgstr "Počet výmazů na blok ecc: průměr = %.1f; nejvíce = %d.\n" -#: src/rs01-fix.c:839 src/rs02-fix.c:880 src/rs03-fix.c:973 +#: src/rs01-fix.c:803 src/rs02-fix.c:838 src/rs03-fix.c:930 msgid "Repair results:" msgstr "Výsledky opravy:" -#: src/rs01-verify.c:48 src/rs01-verify.c:417 src/rs03-verify.c:61 +#: src/rs01-verify.c:50 src/rs01-verify.c:410 src/rs03-verify.c:64 msgid "n/a" msgstr "n/a" -#: src/rs01-verify.c:129 src/rs01-verify.c:150 src/rs02-verify.c:124 -#: src/rs02-verify.c:145 src/rs03-verify.c:133 src/rs03-verify.c:154 +#: src/rs01-verify.c:133 src/rs01-verify.c:154 src/rs02-verify.c:126 +#: src/rs02-verify.c:147 src/rs03-verify.c:136 src/rs03-verify.c:157 msgid "Missing sectors" msgstr "Chybějící sektory" -#: src/rs01-verify.c:193 src/rs02-verify.c:182 +#: src/rs01-verify.c:197 src/rs02-verify.c:184 msgid "Image file summary" msgstr "Informace o souboru bitové kopie" -#: src/rs01-verify.c:202 src/rs03-verify.c:282 +#: src/rs01-verify.c:206 src/rs03-verify.c:285 msgid "No image present." msgstr "Nebyla vybrána žádná bitová kopie, nebo vybraná bitová kopie není k dispozici." -#: src/rs01-verify.c:212 src/rs01-verify.c:302 src/rs02-verify.c:192 -#: src/rs02-verify.c:298 src/rs03-verify.c:293 +#: src/rs01-verify.c:216 src/rs01-verify.c:306 src/rs02-verify.c:194 +#: src/rs02-verify.c:300 src/rs03-verify.c:296 msgid "Medium sectors:" msgstr "Sektory bitové kopie:" -#: src/rs01-verify.c:220 +#: src/rs01-verify.c:224 msgid "Checksum errors:" msgstr "Chyby kontrolního součtu:" -#: src/rs01-verify.c:228 +#: src/rs01-verify.c:232 msgid "Missing Sectors:" msgstr "Chybějící sektory:" -#: src/rs01-verify.c:236 src/rs01-verify.c:310 +#: src/rs01-verify.c:240 src/rs01-verify.c:314 msgid "Image checksum:" msgstr "Kontrolní součet bitové kopie:" -#: src/rs01-verify.c:248 src/rs02-verify.c:244 src/rs03-verify.c:262 +#: src/rs01-verify.c:252 src/rs02-verify.c:246 src/rs03-verify.c:265 msgid "Image state" msgstr "Stav bitové kopie" -#: src/rs01-verify.c:259 +#: src/rs01-verify.c:263 msgid "Error correction file summary" msgstr "Informace o souboru pro opravu chyb" -#: src/rs01-verify.c:278 src/rs02-verify.c:274 src/rs03-verify.c:222 +#: src/rs01-verify.c:282 src/rs02-verify.c:276 src/rs03-verify.c:225 msgid "Created by:" msgstr "Vytvořeno pomocí:" -#: src/rs01-verify.c:286 src/rs02-verify.c:282 src/rs03-verify.c:213 +#: src/rs01-verify.c:290 src/rs02-verify.c:284 src/rs03-verify.c:216 msgid "Method:" msgstr "Metoda:" -#: src/rs01-verify.c:294 src/rs02-verify.c:290 src/rs03-verify.c:231 +#: src/rs01-verify.c:298 src/rs02-verify.c:292 src/rs03-verify.c:234 msgid "Requires:" msgstr "Vyžaduje:" -#: src/rs01-verify.c:318 src/rs03-verify.c:249 +#: src/rs01-verify.c:322 src/rs03-verify.c:252 msgid "Fingerprint:" msgstr "Otisk:" -#: src/rs01-verify.c:326 +#: src/rs01-verify.c:330 msgid "Ecc blocks:" msgstr "Ecc bloky:" -#: src/rs01-verify.c:334 src/rs02-verify.c:50 src/rs02-verify.c:322 +#: src/rs01-verify.c:338 src/rs02-verify.c:52 src/rs02-verify.c:324 msgid "Ecc checksum:" msgstr "Kontrolní součet ecc:" -#: src/rs01-verify.c:398 +#: src/rs01-verify.c:397 msgid "Comparison aborted" msgstr "Porovnání zrušeno" -#: src/rs01-verify.c:405 src/rs01-verify.c:560 +#: src/rs01-verify.c:402 src/rs01-verify.c:523 msgid "Comparing image and error correction files." msgstr "Porovnávání souboru bitové kopie a souboru pro opravu chyb." -#: src/rs01-verify.c:406 src/rs03-verify.c:737 src/rs03-verify.c:748 +#: src/rs01-verify.c:403 src/rs03-verify.c:700 src/rs03-verify.c:708 msgid "- Checking image file -" msgstr "- Kontrola souboru bitové kopie -" -#: src/rs01-verify.c:424 src/rs01-verify.c:567 src/rs01-verify.c:583 +#: src/rs01-verify.c:417 src/rs01-verify.c:529 src/rs01-verify.c:542 msgid "not present\n" msgstr "nedostupný\n" -#: src/rs01-verify.c:434 src/rs02-verify.c:620 +#: src/rs01-verify.c:424 src/rs02-verify.c:601 #, c-format msgid "present, contains % medium sectors.\n" msgstr "k dispozici, obsahuje % sektorů disku.\n" -#: src/rs01-verify.c:441 +#: src/rs01-verify.c:428 #, c-format msgid "present, contains % medium sectors and %d bytes.\n" msgstr "existuje, obsahuje % sektorů disku a %d bajtů.\n" -#: src/rs01-verify.c:445 src/rs01-verify.c:726 src/rs01-verify.c:749 +#: src/rs01-verify.c:430 src/rs01-verify.c:659 src/rs01-verify.c:676 #, c-format msgid "% sectors + %d bytes" msgstr "% sektorů + %d bajtů" -#: src/rs01-verify.c:471 +#: src/rs01-verify.c:454 #, c-format msgid "* truncated image : % sectors too short\n" msgstr "* zkrácená bitová kopie : O % sektorů kratší\n" -#: src/rs01-verify.c:475 +#: src/rs01-verify.c:456 #, c-format msgid "% (% sectors too short)" msgstr "% (o % sektorů kratší)" -#: src/rs01-verify.c:499 +#: src/rs01-verify.c:478 #, c-format msgid "* image too long : % excess sectors\n" msgstr "* bitová kopie je příliš dlouhá : % nadbytečných sektorů\n" -#: src/rs01-verify.c:503 +#: src/rs01-verify.c:480 #, c-format msgid "% (% excess sectors)" msgstr "% (% nadbytečných sektorů)" -#: src/rs01-verify.c:506 src/rs01-verify.c:549 +#: src/rs01-verify.c:483 src/rs01-verify.c:515 #, c-format msgid "Bad image." msgstr "Poškozená bitová kopie." -#: src/rs01-verify.c:512 src/rs02-verify.c:707 src/rs03-verify.c:1060 +#: src/rs01-verify.c:487 src/rs02-verify.c:686 src/rs03-verify.c:973 msgid "* quick mode : image NOT scanned\n" msgstr "* rychlý režim : bitová kopie nebude kontrolována!\n" -#: src/rs01-verify.c:520 +#: src/rs01-verify.c:495 #, c-format msgid "" "- good image : all sectors present\n" @@ -4105,12 +4083,12 @@ msgstr "" "- bitová kopie v pořádku : všechny sektory jsou přítomny\n" "- md5 součet bitové kopie: %s\n" -#: src/rs01-verify.c:524 src/rs02-verify.c:926 src/rs03-verify.c:1388 +#: src/rs01-verify.c:497 src/rs02-verify.c:904 src/rs03-verify.c:1299 #, c-format msgid "Good image." msgstr "Bitová kopie je v pořádku." -#: src/rs01-verify.c:530 +#: src/rs01-verify.c:501 #, c-format msgid "" "* suspicious image : all sectors present, but % CRC errors\n" @@ -4119,74 +4097,74 @@ msgstr "" "* podezřelá bitová kopie : všechny sektory existují, ale zjištěno % chyb CRC\n" "- md5 součet bitové kopie: %s\n" -#: src/rs01-verify.c:535 +#: src/rs01-verify.c:504 #, c-format msgid "Image complete, but contains checksum errors!" msgstr "Bitová kopie je kompletní, avšak obsahuje chyby kontrolního součtu!" -#: src/rs01-verify.c:543 src/rs02-verify.c:892 +#: src/rs01-verify.c:510 src/rs02-verify.c:871 #, c-format msgid "* BAD image : % sectors missing\n" msgstr "* POŠKOZENÁ bitová kopie : % chybějících sektorů\n" -#: src/rs01-verify.c:544 src/rs02-verify.c:896 src/rs03-verify.c:1320 +#: src/rs01-verify.c:511 src/rs02-verify.c:875 src/rs03-verify.c:1240 #, c-format msgid "* BAD image : % sectors missing, % CRC errors\n" msgstr "* POŠKOZENÁ bitová kopie : % chybějících sektorů, % chyb CRC\n" -#: src/rs01-verify.c:561 src/rs03-verify.c:1275 +#: src/rs01-verify.c:524 src/rs03-verify.c:1194 msgid "- Checking ecc file -" msgstr "- Kontrola ecc souboru -" -#: src/rs01-verify.c:571 src/rs01-verify.c:601 +#: src/rs01-verify.c:531 src/rs01-verify.c:559 msgid "No error correction file present." msgstr "Žádný soubor pro opravu chyb není dostupný." -#: src/rs01-verify.c:580 +#: src/rs01-verify.c:539 msgid "permission denied\n" msgstr "" -#: src/rs01-verify.c:586 +#: src/rs01-verify.c:545 msgid "invalid\n" msgstr "neplatné\n" -#: src/rs01-verify.c:589 +#: src/rs01-verify.c:548 msgid "defective header (unusable)\n" msgstr "poškozená hlavička (nepoužitelné)\n" -#: src/rs01-verify.c:592 +#: src/rs01-verify.c:551 msgid "unknown codec (unusable)\n" msgstr "neznámý kodek (nepoužitelné)\n" -#: src/rs01-verify.c:595 +#: src/rs01-verify.c:554 msgid "unusable\n" msgstr "nepoužitelné\n" -#: src/rs01-verify.c:625 src/rs01-verify.c:639 src/rs02-verify.c:957 -#: src/rs02-verify.c:972 +#: src/rs01-verify.c:582 src/rs01-verify.c:592 src/rs02-verify.c:930 +#: src/rs02-verify.c:941 msgid "created by dvdisaster" msgstr "vytvořeno pomocí dvdisaster" -#: src/rs01-verify.c:651 +#: src/rs01-verify.c:601 msgid "created by dvdisaster-0.41.x.\n" msgstr "vytvořeno pomocí dvdisaster-0.41.x.\n" -#: src/rs01-verify.c:663 src/rs02-verify.c:988 src/rs03-verify.c:806 +#: src/rs01-verify.c:610 src/rs02-verify.c:954 src/rs03-verify.c:762 #, c-format msgid "- method : %4s, %d roots, %4.1f%% redundancy.\n" msgstr "- metoda : %4s, %d bází, %4.1f%% redundance.\n" -#: src/rs01-verify.c:668 src/rs02-verify.c:994 src/rs03-verify.c:812 +#: src/rs01-verify.c:614 src/rs02-verify.c:958 src/rs03-verify.c:766 #, c-format msgid "%4s, %d roots, %4.1f%% redundancy" msgstr "%4s, %d bází, %4.1f%% redundance" -#: src/rs01-verify.c:676 src/rs02-verify.c:1002 +#: src/rs01-verify.c:621 src/rs02-verify.c:965 #, c-format msgid "- requires : dvdisaster-%d.%d (good)\n" msgstr "- vyžaduje : dvdisaster-%d.%d (v pořádku)\n" -#: src/rs01-verify.c:687 src/rs02-verify.c:1015 +#: src/rs01-verify.c:629 src/rs02-verify.c:975 #, c-format msgid "" "* requires : dvdisaster-%d.%d (BAD)\n" @@ -4194,203 +4172,203 @@ msgid "" "* : Please upgrade dvdisaster.\n" msgstr "" -#: src/rs01-verify.c:701 src/rs02-verify.c:1030 src/rs03-verify.c:883 +#: src/rs01-verify.c:641 src/rs02-verify.c:989 src/rs03-verify.c:824 #, c-format msgid "Please upgrade your version of dvdisaster!" msgstr "Aktualizujte prosím vaši verzi programu dvdisaster!" -#: src/rs01-verify.c:714 +#: src/rs01-verify.c:652 #, c-format msgid "- medium sectors : %\n" msgstr "- sektory disku : %\n" -#: src/rs01-verify.c:721 +#: src/rs01-verify.c:656 #, c-format msgid "- medium sectors : % sectors + %d bytes\n" msgstr "- sektory disku : % sektorů + %d bajtů\n" -#: src/rs01-verify.c:737 +#: src/rs01-verify.c:669 #, c-format msgid "- medium sectors : % (good)\n" msgstr "- sektory disku : % (v pořádku)\n" -#: src/rs01-verify.c:744 +#: src/rs01-verify.c:673 #, c-format msgid "- medium sectors : % sectors + %d bytes (good)\n" msgstr "- sektory disku : % sektorů + %d bajtů (v pořádku)\n" -#: src/rs01-verify.c:758 src/rs02-verify.c:1054 +#: src/rs01-verify.c:684 src/rs02-verify.c:1009 #, c-format msgid "* medium sectors : % (BAD, perhaps TAO/DAO mismatch)\n" msgstr "* sektory disku : % (ŠPATNĚ, pravděpodobně rozdíl TAO/DAO)\n" -#: src/rs01-verify.c:771 src/rs02-verify.c:1056 +#: src/rs01-verify.c:696 src/rs02-verify.c:1011 #, c-format msgid "* medium sectors : % (BAD)\n" msgstr "* sektory disku : % (SPATNĚ)\n" -#: src/rs01-verify.c:777 src/rs01-verify.c:790 +#: src/rs01-verify.c:700 src/rs01-verify.c:709 #, c-format msgid "Image size does not match error correction file." msgstr "Velikost bitové kopie neodpovídá souboru pro opravu chyb." -#: src/rs01-verify.c:782 +#: src/rs01-verify.c:703 #, c-format msgid "* medium sectors : % sectors + %d bytes (BAD)\n" msgstr "* sektory média : % sektorů + %d bajtů (ŠPATNĚ)\n" -#: src/rs01-verify.c:787 +#: src/rs01-verify.c:706 #, c-format msgid "% sectors + %d bytes" msgstr "% sektorů + %d bajtů" -#: src/rs01-verify.c:804 +#: src/rs01-verify.c:722 #, c-format msgid "- image md5sum : %s (good)\n" msgstr "- md5 součet bitové kopie: %s (v pořádku)\n" -#: src/rs01-verify.c:805 +#: src/rs01-verify.c:726 #, c-format msgid "* image md5sum : %s (BAD)\n" msgstr "* md5 součet bitové kopie: %s (ŠPATNÝ)\n" -#: src/rs01-verify.c:817 +#: src/rs01-verify.c:734 #, c-format msgid "- image md5sum : %s\n" msgstr "- md5 součet bitové kopie: %s\n" -#: src/rs01-verify.c:827 src/rs03-verify.c:910 +#: src/rs01-verify.c:741 src/rs03-verify.c:846 msgid "* fingerprint match: NOT POSSIBLE - related sector is missing in image!\n" msgstr "* porovnání otisku NENÍ MOŽNÉ - odpovídající sektor v bitové kopii chybí!\n" -#: src/rs01-verify.c:830 src/rs03-verify.c:914 +#: src/rs01-verify.c:743 src/rs03-verify.c:848 #, c-format msgid "missing sector prevents calculation" msgstr "chybějící sektor brání výpočtu" -#: src/rs01-verify.c:836 src/rs03-verify.c:920 +#: src/rs01-verify.c:749 src/rs03-verify.c:853 msgid "* fingerprint match: MISMATCH - .iso and .ecc don't belong together!\n" msgstr "* porovnání otisku : NESOUHLASÍ - ISO a ECC k sobě nepatří!\n" -#: src/rs01-verify.c:841 src/rs03-verify.c:925 +#: src/rs01-verify.c:752 src/rs03-verify.c:856 #, c-format msgid "mismatch" msgstr "nesouhlasí" -#: src/rs01-verify.c:844 src/rs03-verify.c:928 +#: src/rs01-verify.c:755 src/rs03-verify.c:859 #, c-format msgid "Image and error correction files do not belong together!" msgstr "Bitová kopie a soubor pro opravu chyb k sobě nepatří!" -#: src/rs01-verify.c:849 src/rs03-verify.c:933 +#: src/rs01-verify.c:758 src/rs03-verify.c:862 msgid "- fingerprint match: good\n" msgstr "- porovnání otisku : v pořádku\n" -#: src/rs01-verify.c:852 src/rs03-verify.c:936 +#: src/rs01-verify.c:759 src/rs03-verify.c:863 msgid "good" msgstr "v pořádku" -#: src/rs01-verify.c:861 +#: src/rs01-verify.c:767 msgid "* quick mode : ecc file NOT scanned\n" msgstr "* rychlý režim : Ecc soubor nebude kontrolován!\n" -#: src/rs01-verify.c:869 +#: src/rs01-verify.c:775 #, c-format msgid "- ecc blocks : % (good)\n" msgstr "- ecc bloky : % (v pořádku)\n" -#: src/rs01-verify.c:876 +#: src/rs01-verify.c:779 #, c-format msgid "* ecc blocks : % (BAD, expected %)\n" msgstr "* ecc bloky : % (ŠPATNĚ, očekáváno %)\n" -#: src/rs01-verify.c:879 +#: src/rs01-verify.c:782 #, c-format msgid "% (bad, expected %)" msgstr "% (špatný, očekáváno %)" -#: src/rs01-verify.c:905 +#: src/rs01-verify.c:804 #, c-format msgid "- ecc md5sum : %3d%%" msgstr "- md5 součet ecc : %3d%%" -#: src/rs01-verify.c:926 +#: src/rs01-verify.c:822 msgid "* ecc md5sum : BAD, ecc file may be damaged!\n" msgstr "* md5 součet ecc : ŠPATNÝ, soubor ecc může být poškozen!\n" -#: src/rs01-verify.c:929 +#: src/rs01-verify.c:823 #, c-format msgid "bad" msgstr "špatný" -#: src/rs01-verify.c:931 +#: src/rs01-verify.c:825 #, c-format msgid "Error correction file may be damaged!" msgstr "Soubor pro opravu chyb může být poškozen!" -#: src/rs01-verify.c:936 src/rs02-verify.c:1137 +#: src/rs01-verify.c:828 src/rs02-verify.c:1075 #, c-format msgid "- ecc md5sum : %s (good)\n" msgstr "- md5 součet ecc : %s (v pořádku)\n" -#: src/rs01-verify.c:953 +#: src/rs01-verify.c:841 #, c-format msgid "Good error correction file." msgstr "Soubor pro opravu chyb je v pořádku." -#: src/rs01-window.c:140 src/rs02-window.c:89 src/rs03-window.c:94 +#: src/rs01-window.c:137 src/rs02-window.c:85 src/rs03-window.c:90 msgid "2. Creating error correction data:" msgstr "2. Vytvoření dat pro opravu chyb:" -#: src/rs01-window.c:164 +#: src/rs01-window.c:161 msgid "Show reading speed curve" msgstr "Zobrazit křivku rychlosti čtení" -#: src/rs01-window.c:203 src/rs02-window.c:141 src/rs03-window.c:174 +#: src/rs01-window.c:200 src/rs02-window.c:137 src/rs03-window.c:170 #, c-format msgid "Repaired: %" msgstr "Opraveno: %" -#: src/rs01-window.c:204 src/rs02-window.c:142 src/rs03-window.c:175 +#: src/rs01-window.c:201 src/rs02-window.c:139 src/rs03-window.c:171 #, c-format msgid "Unrepairable: %" msgstr "Neopravitelné: %" -#: src/rs01-window.c:205 src/rs02-window.c:143 src/rs03-window.c:176 +#: src/rs01-window.c:202 src/rs02-window.c:141 src/rs03-window.c:172 #, c-format msgid "Progress: %3d.%1d%%" msgstr "Průběh: %3d.%1d%%" -#: src/rs01-window.c:414 src/rs02-window.c:348 src/rs03-window.c:381 +#: src/rs01-window.c:405 src/rs02-window.c:346 src/rs03-window.c:377 msgid "Errors/Ecc block" msgstr "Chyb/blok Ecc" -#: src/rs01-window.c:450 src/rs02-window.c:378 src/rs03-preferences.c:318 -#: src/rs03-preferences.c:328 +#: src/rs01-window.c:441 src/rs02-window.c:376 src/rs03-preferences.c:320 +#: src/rs03-preferences.c:330 #, c-format msgid "%4.1f%% redundancy (%d roots)" msgstr "%4.1f%% redundance (%d bází)" -#: src/rs01-window.c:467 src/rs01-window.c:874 src/rs01-window.c:880 -#: src/rs01-window.c:881 src/rs02-window.c:395 src/rs02-window.c:1362 -#: src/rs02-window.c:1368 src/rs02-window.c:1369 +#: src/rs01-window.c:458 src/rs01-window.c:866 src/rs01-window.c:872 +#: src/rs01-window.c:873 src/rs02-window.c:393 src/rs02-window.c:1369 +#: src/rs02-window.c:1375 src/rs02-window.c:1376 #, c-format msgid "%d MiB of file cache" msgstr "%d MiB souborové mezipaměti" -#: src/rs01-window.c:669 src/rs03-preferences.c:558 +#: src/rs01-window.c:660 src/rs03-preferences.c:560 msgid "Redundancy for new error correction files" msgstr "Redundance pro nové soubory pro opravu chyb" -#: src/rs01-window.c:678 src/rs03-preferences.c:585 +#: src/rs01-window.c:669 src/rs03-preferences.c:587 msgid "Normal redundancy" msgstr "Standardní redundance" -#: src/rs01-window.c:678 src/rs03-preferences.c:585 +#: src/rs01-window.c:669 src/rs03-preferences.c:587 msgid "Normal" msgstr "Standardní" -#: src/rs01-window.c:701 src/rs03-preferences.c:609 +#: src/rs01-window.c:692 src/rs03-preferences.c:611 #, c-format msgid "" "Normal redundancy\n" @@ -4403,15 +4381,15 @@ msgstr "" "Předvolba \"standardní\" vytvoří 14.3%% redundanci.\n" "Pro urychlení tvorby souboru pro opravu chyb bude použit optimalizovaný kód." -#: src/rs01-window.c:708 src/rs03-preferences.c:616 +#: src/rs01-window.c:699 src/rs03-preferences.c:618 msgid "High redundancy" msgstr "Vysoká redundance" -#: src/rs01-window.c:708 src/rs03-preferences.c:616 +#: src/rs01-window.c:699 src/rs03-preferences.c:618 msgid "High" msgstr "Vysoká" -#: src/rs01-window.c:731 src/rs03-preferences.c:639 +#: src/rs01-window.c:722 src/rs03-preferences.c:641 #, c-format msgid "" "High redundancy\n" @@ -4424,15 +4402,15 @@ msgstr "" "Předvolba \"vysoká\" vytvoří 33.5%% redundanci.\n" "Pro urychlení tvorby souboru pro opravu chyb bude použit optimalizovaný kód." -#: src/rs01-window.c:739 src/rs03-preferences.c:647 +#: src/rs01-window.c:730 src/rs03-preferences.c:648 msgid "Other redundancy" msgstr "Jiná redundance" -#: src/rs01-window.c:739 src/rs03-preferences.c:647 +#: src/rs01-window.c:730 src/rs03-preferences.c:648 msgid "Other" msgstr "Jiná" -#: src/rs01-window.c:778 src/rs03-preferences.c:686 +#: src/rs01-window.c:769 src/rs03-preferences.c:687 #, c-format msgid "" "Other redundancy\n" @@ -4445,19 +4423,19 @@ msgstr "" "Je možné určit procento redundance.\n" "Soubor pro opravu chyb s x%% redundancí bude mít velikost přibližně x%% velikosti příslušné bitové kopie." -#: src/rs01-window.c:786 src/rs03-preferences.c:694 +#: src/rs01-window.c:777 src/rs03-preferences.c:695 msgid "Space-delimited redundancy" msgstr "Prostorově vymezená redundance" -#: src/rs01-window.c:786 src/rs02-window.c:1293 src/rs03-preferences.c:694 +#: src/rs01-window.c:778 src/rs02-window.c:1299 src/rs03-preferences.c:696 msgid "Use at most" msgstr "Použít nejvíce" -#: src/rs01-window.c:811 src/rs03-preferences.c:719 +#: src/rs01-window.c:803 src/rs03-preferences.c:721 msgid "MiB for error correction data" msgstr "MiB pro data pro opravu chyb" -#: src/rs01-window.c:828 src/rs03-preferences.c:736 +#: src/rs01-window.c:820 src/rs03-preferences.c:738 msgid "" "Space-delimited redundancy\n" "\n" @@ -4471,19 +4449,19 @@ msgstr "" "\n" "Upozornění: Pokud použijete stejnou velikost pro bitové kopie různých velikostí, bude pro menší bitové kopie použita vyšší redundance než pro velké. To ve většině případů není to co chcete." -#: src/rs01-window.c:871 src/rs02-window.c:1359 +#: src/rs01-window.c:863 src/rs02-window.c:1366 msgid "Memory utilization" msgstr "Využití paměti" -#: src/rs01-window.c:875 src/rs02-window.c:1363 +#: src/rs01-window.c:867 src/rs02-window.c:1370 msgid "File cache" msgstr "Mezipaměť pro soubory" -#: src/rs01-window.c:887 src/rs02-window.c:1375 src/rs03-preferences.c:917 +#: src/rs01-window.c:879 src/rs02-window.c:1382 src/rs03-preferences.c:919 msgid "Use" msgstr "Použít" -#: src/rs01-window.c:916 src/rs02-window.c:1404 +#: src/rs01-window.c:908 src/rs02-window.c:1412 msgid "" "File cache\n" "\n" @@ -4493,23 +4471,23 @@ msgstr "" "\n" "dvdisaster optimalizuje přístup k souboru bitové kopie a souboru pro opravu chyb použitím vlastní mezipaměti. Přednastavených 32MiB je vhodných pro většinu systémů." -#: src/rs02-common.c:580 src/rs02-common.c:592 src/rs02-verify.c:649 -#: src/rs03-common.c:643 +#: src/rs02-common.c:578 src/rs02-common.c:590 src/rs02-verify.c:628 +#: src/rs03-common.c:644 #, c-format msgid "Failed seeking to ecc header at %: %s\n" msgstr "Přechod na hlavičku ecc na % selhal: %s\n" -#: src/rs02-common.c:584 src/rs02-common.c:596 src/rs03-common.c:647 +#: src/rs02-common.c:582 src/rs02-common.c:594 src/rs03-common.c:648 #, c-format msgid "Failed writing ecc header at %: %s\n" msgstr "Selhal zápis hlavičky ecc na %: %s\n" -#: src/rs02-create.c:122 src/rs03-create.c:261 +#: src/rs02-create.c:111 src/rs03-create.c:250 #, c-format msgid "Aborted by user request! (partial ecc data removed from image)" msgstr "Přerušeno uživatelem! (neúplná ecc data z bitové kopie odstraněna)" -#: src/rs02-create.c:156 src/rs03-create.c:318 +#: src/rs02-create.c:142 src/rs03-create.c:302 #, c-format msgid "" "Image \"%s\" already contains error correction information.\n" @@ -4518,11 +4496,11 @@ msgstr "" "Bitová kopie \"%s\" již obsahuje informace pro opravu chyb.\n" "Bitová kopie bude zkrácena po datovou část (% sektorů).\n" -#: src/rs02-create.c:173 src/rs03-create.c:347 +#: src/rs02-create.c:157 src/rs03-create.c:329 msgid "Image size is now" msgstr "" -#: src/rs02-create.c:236 +#: src/rs02-create.c:218 msgid "" "Image contains unread(able) sectors.\n" "Error correction information can only be\n" @@ -4532,7 +4510,7 @@ msgstr "" "Informace pro opravu chyb lze přidat pouze do\n" "kompletních (nepoškozených) bitových kopií.\n" -#: src/rs02-create.c:240 +#: src/rs02-create.c:222 #, c-format msgid "" "Sector % in the image is marked unreadable\n" @@ -4557,34 +4535,34 @@ msgstr "" "Informace pro opravu chyb může být přidána pouze\n" "k nepoškozeným bitovým kopiím.\n" -#: src/rs02-create.c:257 src/rs02-create.c:327 src/rs02-create.c:340 +#: src/rs02-create.c:239 src/rs02-create.c:304 src/rs02-create.c:314 #, c-format msgid "Preparing image (checksums, adding space): %3d%%" msgstr "Příprava bitové kopie (kontrolní součty, přidání místa): %3d%%" -#: src/rs02-create.c:294 src/rs02-create.c:304 src/rs02-fix.c:96 -#: src/rs03-create.c:454 src/rs03-create.c:465 src/rs03-fix.c:94 +#: src/rs02-create.c:273 src/rs02-create.c:283 src/rs02-fix.c:90 +#: src/rs03-create.c:438 src/rs03-create.c:449 src/rs03-fix.c:87 #, c-format msgid "Failed seeking to end of image: %s\n" msgstr "Přechod na konec bitové kopie se nezdařil: %s\n" -#: src/rs02-create.c:298 src/rs02-create.c:321 src/rs02-fix.c:109 -#: src/rs03-create.c:439 src/rs03-fix.c:112 +#: src/rs02-create.c:277 src/rs02-create.c:298 src/rs02-fix.c:103 +#: src/rs03-create.c:423 src/rs03-fix.c:105 #, c-format msgid "Failed expanding the image: %s\n" msgstr "Rozšíření bitové kopie se nezdařilo: %s\n" -#: src/rs02-create.c:326 src/rs02-create.c:339 +#: src/rs02-create.c:303 src/rs02-create.c:313 #, c-format msgid "Preparing image (checksums taken from cache, adding space): %3d%%" msgstr "" -#: src/rs02-create.c:1071 src/rs03-create.c:1309 +#: src/rs02-create.c:1027 src/rs03-create.c:1267 msgid "Error correction data creation aborted" msgstr "Tvorba dat pro opravu chyba přerušena" -#: src/rs02-create.c:1102 src/rs02-create.c:1122 src/rs03-create.c:1314 -#: src/rs03-create.c:1369 +#: src/rs02-create.c:1055 src/rs02-create.c:1073 src/rs03-create.c:1271 +#: src/rs03-create.c:1326 #, c-format msgid "" "Augmenting the image with error correction data.\n" @@ -4593,16 +4571,16 @@ msgstr "" "Rozšíření bitové kopie daty pro opravu chyb.\n" "%s" -#: src/rs02-create.c:1103 src/rs03-create.c:1315 +#: src/rs02-create.c:1056 src/rs03-create.c:1272 msgid "- checking image -" msgstr "- kontrola bitové kopie -" -#: src/rs02-create.c:1118 +#: src/rs02-create.c:1069 #, c-format msgid "Encoding with Method RS02: % MiB data, % MiB ecc (%d roots; %4.1f%% redundancy)." msgstr "Kódování metodou RS02: % MiB data, % MiB ecc (%d bází; %4.1f%% redundance)." -#: src/rs02-create.c:1127 +#: src/rs02-create.c:1077 #, c-format msgid "" "Augmenting image with Method RS02:\n" @@ -4611,7 +4589,7 @@ msgstr "" "Rozšíření bitové kopie metodou RS02:\n" " % MiB dat, % MiB ecc (%d bází; %4.1f%% redundance)" -#: src/rs02-create.c:1136 +#: src/rs02-create.c:1086 #, c-format msgid "" "Not enough space on medium left for error correction data.\n" @@ -4624,15 +4602,15 @@ msgstr "" "Pokud není možné zmenšení bitové kopie, nebo použití většího disku,\n" "vytvořte samostatný soubor pro opravu chyb." -#: src/rs02-create.c:1146 src/rs03-create.c:1409 +#: src/rs02-create.c:1096 src/rs03-create.c:1367 #, c-format msgid "" "Using redundancies below 20% may not give\n" "the expected data loss protection.\n" msgstr "" -#: src/rs02-create.c:1178 src/rs02-create.c:1188 src/rs03-create.c:1448 -#: src/rs03-create.c:1476 +#: src/rs02-create.c:1128 src/rs02-create.c:1136 src/rs03-create.c:1406 +#: src/rs03-create.c:1429 #, c-format msgid "" "Image has been augmented with error correction data.\n" @@ -4641,21 +4619,21 @@ msgstr "" "Bitová kopie byla rozšířena o data pro opravu chyb.\n" "Nová velikost bitové kopie je % MiB (% sektorů).\n" -#: src/rs02-fix.c:119 src/rs02-fix.c:130 src/rs03-fix.c:122 src/rs03-fix.c:133 +#: src/rs02-fix.c:108 src/rs02-fix.c:114 src/rs03-fix.c:110 src/rs03-fix.c:116 #, c-format msgid "Expanding image: %3d%%" msgstr "Rozšíření bitové kopie: %3d%%" -#: src/rs02-fix.c:198 src/rs03-fix.c:201 +#: src/rs02-fix.c:175 src/rs03-fix.c:176 msgid "Opening files..." msgstr "Otevírání souborů..." -#: src/rs02-fix.c:224 +#: src/rs02-fix.c:200 #, c-format msgid "Image contains error correction data: Method RS02, %d roots, %4.1f%% redundancy." msgstr "Bitová kopie obsahuje data pro opravu chyb: Metoda RS02, %d bází, %4.1f%% redundance." -#: src/rs02-fix.c:242 src/rs03-fix.c:309 +#: src/rs02-fix.c:218 src/rs03-fix.c:279 #, c-format msgid "" "The image file is %lld sectors longer as noted in the\n" @@ -4672,22 +4650,22 @@ msgstr "" "\n" "%s" -#: src/rs02-fix.c:499 src/rs03-fix.c:559 +#: src/rs02-fix.c:463 src/rs03-fix.c:518 #, c-format msgid "* Ecc block %: %3d unrepairable sectors: " msgstr "* Ecc blok %: %3d neopravitelných sektorů: " -#: src/rs02-fix.c:721 +#: src/rs02-fix.c:685 #, c-format msgid "-> CRC-predicted error in sector %lld at byte %4d (value %02x '%c', expected %02x '%c')\n" msgstr "-> Podle CRC očekávaná chyba v sektoru %lld, bajt %4d (hodnota %02x '%c', očekáváno %02x '%c')\n" -#: src/rs02-fix.c:724 +#: src/rs02-fix.c:688 #, c-format msgid "-> Non-predicted error in sector %lld at byte %4d (value %02x '%c', expected %02x '%c')\n" msgstr "-> Neočekávaná chyba v sektoru %lld, bajt %4d (hodnota %02x '%c', očekáváno %02x '%c')\n" -#: src/rs02-fix.c:851 src/rs03-fix.c:941 +#: src/rs02-fix.c:813 src/rs03-fix.c:901 #, c-format msgid "Repaired sectors: % (% data, % ecc)\n" msgstr "Opravené sektory: % (% data, % ecc)\n" @@ -4704,7 +4682,7 @@ msgstr "Pokračovat v hledání" msgid "Disable RS02 initialization in the preferences" msgstr "V nastavení zakažte inicializaci RS02" -#: src/rs02-recognize.c:305 +#: src/rs02-recognize.c:303 msgid "" "Faster medium initialization\n" "\n" @@ -4718,108 +4696,108 @@ msgstr "" "Pokud jste si jisti, že tento disk nebyl rozšířen o RS02 data pro opravu\n" "chyb, klepněte na \"Přeskočit test RS02\"." -#: src/rs02-verify.c:48 src/rs02-verify.c:200 src/rs02-verify.c:306 -#: src/rs03-verify.c:59 src/rs03-verify.c:240 src/rs03-verify.c:302 +#: src/rs02-verify.c:50 src/rs02-verify.c:202 src/rs02-verify.c:308 +#: src/rs03-verify.c:62 src/rs03-verify.c:243 src/rs03-verify.c:305 msgid "Data checksum:" msgstr "Kontrolní součet dat:" -#: src/rs02-verify.c:49 src/rs02-verify.c:314 +#: src/rs02-verify.c:51 src/rs02-verify.c:316 msgid "CRC checksum:" msgstr "Kontrolní součet CRC:" -#: src/rs02-verify.c:208 +#: src/rs02-verify.c:210 msgid "Ecc headers:" msgstr "Ecc hlavičky:" -#: src/rs02-verify.c:216 src/rs03-verify.c:311 +#: src/rs02-verify.c:218 src/rs03-verify.c:314 msgid "Data section:" msgstr "Datová sekce:" -#: src/rs02-verify.c:224 src/rs03-verify.c:320 +#: src/rs02-verify.c:226 src/rs03-verify.c:323 msgid "Crc section:" msgstr "Crc sekce:" -#: src/rs02-verify.c:232 src/rs03-verify.c:329 +#: src/rs02-verify.c:234 src/rs03-verify.c:332 msgid "Ecc section:" msgstr "Ecc sekce:" -#: src/rs02-verify.c:255 +#: src/rs02-verify.c:257 msgid "Error correction data" msgstr "Data pro opravu chyb" -#: src/rs02-verify.c:512 src/rs03-verify.c:457 +#: src/rs02-verify.c:506 src/rs03-verify.c:458 #, c-format msgid "- erasure counts : avg = %.1f; worst = %d per ecc block.\n" msgstr "- počet výmazů : průměr = %.1f; nejvíce = %d na ecc blok.\n" -#: src/rs02-verify.c:515 src/rs03-verify.c:460 +#: src/rs02-verify.c:509 src/rs03-verify.c:461 #, c-format msgid "- prognosis : % of % sectors recoverable (%d.%d%%)\n" msgstr "- odhad : Obnovitelných je % z(e) % sektorů (%d.%d%%)\n" -#: src/rs02-verify.c:522 src/rs03-verify.c:465 +#: src/rs02-verify.c:515 src/rs03-verify.c:464 msgid "Erasure counts:" msgstr "Počet výmazů:" -#: src/rs02-verify.c:523 src/rs03-verify.c:466 +#: src/rs02-verify.c:516 src/rs03-verify.c:465 msgid "Prognosis:" msgstr "Odhad:" -#: src/rs02-verify.c:526 src/rs03-verify.c:469 +#: src/rs02-verify.c:519 src/rs03-verify.c:468 #, c-format msgid "avg = %.1f; worst = %d per ecc block." msgstr "průměr = %.1f; nejvíce = %d na ecc blok." -#: src/rs02-verify.c:531 src/rs03-verify.c:474 +#: src/rs02-verify.c:524 src/rs03-verify.c:473 #, c-format msgid "% of % sectors recoverable (%d.%d%%)" msgstr "Obnovitelných je % z(e) % sektorů (%d.%d%%)" -#: src/rs02-verify.c:593 src/rs03-verify.c:700 +#: src/rs02-verify.c:579 src/rs03-verify.c:670 msgid "Check aborted" msgstr "Kontrola zrušena" -#: src/rs02-verify.c:615 src/rs03-verify.c:747 +#: src/rs02-verify.c:597 src/rs03-verify.c:707 msgid "Checking the image file." msgstr "Kontrola souboru bitové kopie." -#: src/rs02-verify.c:616 +#: src/rs02-verify.c:598 msgid "Image contains error correction data." msgstr "Bitová kopie obsahuje data pro opravu chyb." -#: src/rs02-verify.c:631 src/rs03-verify.c:1041 +#: src/rs02-verify.c:611 src/rs03-verify.c:955 #, c-format msgid "Image file is % sectors shorter than expected." msgstr "Soubor bitové kopie je o % sektorů kratší než očekáváno." -#: src/rs02-verify.c:632 src/rs03-verify.c:1044 +#: src/rs02-verify.c:612 src/rs03-verify.c:958 #, c-format msgid "Image file is % sectors longer than expected." msgstr "Soubor bitové kopie je o % sektorů delší než očekáváno." -#: src/rs02-verify.c:653 +#: src/rs02-verify.c:632 #, c-format msgid "Failed reading ecc header at %: %s\n" msgstr "Nepodařilo se načíst ecc hlavičku na %: %s\n" -#: src/rs02-verify.c:697 +#: src/rs02-verify.c:677 #, c-format msgid "% ok, % CRC errors, % missing" msgstr "% v pořádku, % chyb CRC, % chybí" -#: src/rs02-verify.c:837 src/rs02-verify.c:860 src/rs03-verify.c:1247 -#: src/rs03-verify.c:1290 +#: src/rs02-verify.c:812 src/rs02-verify.c:837 src/rs03-verify.c:1163 +#: src/rs03-verify.c:1208 #, c-format msgid "% sectors missing; % CRC errors" msgstr "chybí % sektorů; % chyb CRC" -#: src/rs02-verify.c:841 src/rs02-verify.c:845 src/rs02-verify.c:864 -#: src/rs02-verify.c:868 src/rs03-verify.c:1255 src/rs03-verify.c:1298 +#: src/rs02-verify.c:817 src/rs02-verify.c:822 src/rs02-verify.c:842 +#: src/rs02-verify.c:847 src/rs03-verify.c:1173 src/rs03-verify.c:1218 #, c-format msgid "% sectors missing" msgstr "chybí % sektorů" -#: src/rs02-verify.c:883 +#: src/rs02-verify.c:862 #, c-format msgid "" "- good image : all sectors present\n" @@ -4828,46 +4806,46 @@ msgstr "" "- dobrá bitová kopie : všechny sektory přítomny\n" "- md5 součet dat : %s\n" -#: src/rs02-verify.c:889 +#: src/rs02-verify.c:868 msgid "* suspicious image : contains damaged ecc headers\n" msgstr "* podezřelá bitová kopie : Obsahuje poškozené ecc hlavičky\n" -#: src/rs02-verify.c:894 src/rs03-verify.c:1317 +#: src/rs02-verify.c:873 src/rs03-verify.c:1237 #, c-format msgid "* suspicious image : all sectors present, but % CRC errors\n" msgstr "* podezřelá bitová kopie : všechny sektory přítomny, ale % chyb CRC\n" -#: src/rs02-verify.c:900 +#: src/rs02-verify.c:879 #, c-format msgid " ... ecc headers : % ok, % CRC errors, % missing\n" msgstr " ... ecc hlavičky : % ok, % chybné CRC, % chybí\n" -#: src/rs02-verify.c:902 src/rs03-verify.c:1323 +#: src/rs02-verify.c:881 src/rs03-verify.c:1243 #, c-format msgid " ... data section : % sectors missing; % CRC errors\n" msgstr " ... datová sekce : chybí % sektorů; % chyb CRC\n" -#: src/rs02-verify.c:905 src/rs03-verify.c:1326 +#: src/rs02-verify.c:884 src/rs03-verify.c:1246 #, c-format msgid " ... data md5sum : %s\n" msgstr " ... md5 součet dat : %s\n" -#: src/rs02-verify.c:906 src/rs03-verify.c:1332 +#: src/rs02-verify.c:885 src/rs03-verify.c:1252 #, c-format msgid " ... crc section : % sectors missing\n" msgstr " ... crc sekce : chybí % sektorů\n" -#: src/rs02-verify.c:907 src/rs03-verify.c:1334 +#: src/rs02-verify.c:886 src/rs03-verify.c:1254 #, c-format msgid " ... ecc section : % sectors missing\n" msgstr " ... ecc sekce : chybí % sektorů\n" -#: src/rs02-verify.c:930 src/rs03-verify.c:1392 +#: src/rs02-verify.c:909 src/rs03-verify.c:1304 #, c-format msgid "Damaged image." msgstr "Poškozená bitová kopie." -#: src/rs02-verify.c:944 +#: src/rs02-verify.c:917 msgid "" "\n" "Error correction data: " @@ -4875,88 +4853,88 @@ msgstr "" "\n" "Data pro opravu chyb: " -#: src/rs02-verify.c:1036 +#: src/rs02-verify.c:994 msgid "Please upgrade your version of dvdisaster!" msgstr "" -#: src/rs02-verify.c:1043 +#: src/rs02-verify.c:1001 #, c-format msgid "- medium sectors : % / % (good)\n" msgstr "- sektory disku : % / % (v pořádku)\n" -#: src/rs02-verify.c:1063 +#: src/rs02-verify.c:1017 #, c-format msgid "Image size does not match recorded size." msgstr "Velikost bitové kopie nesouhlasí se zaznamenanou velikostí." -#: src/rs02-verify.c:1078 +#: src/rs02-verify.c:1031 #, c-format msgid "- data md5sum : %s (good)\n" msgstr "- md5 součet dat : %s (v pořádku)\n" -#: src/rs02-verify.c:1079 +#: src/rs02-verify.c:1032 #, c-format msgid "* data md5sum : %s (BAD)\n" msgstr "* md5 součet dat : %s (ŠPATNÝ)\n" -#: src/rs02-verify.c:1092 src/rs03-verify.c:898 +#: src/rs02-verify.c:1043 src/rs03-verify.c:837 #, c-format msgid "- data md5sum : %s\n" msgstr "- md5 součet dat : %s\n" -#: src/rs02-verify.c:1106 +#: src/rs02-verify.c:1054 #, c-format msgid "- crc md5sum : %s (good)\n" msgstr "- md5 součet crc : %s (v pořádku)\n" -#: src/rs02-verify.c:1113 +#: src/rs02-verify.c:1058 #, c-format msgid "* crc md5sum : %s (BAD)\n" msgstr "* md5 součet crc : %s (ŠPATNÝ)\n" -#: src/rs02-verify.c:1123 +#: src/rs02-verify.c:1064 #, c-format msgid "- crc md5sum : %s\n" msgstr "- md5 součet crc : %s\n" -#: src/rs02-verify.c:1144 +#: src/rs02-verify.c:1079 #, c-format msgid "* ecc md5sum : %s (BAD)\n" msgstr "* md5 součet ecc : %s (ŠPATNÝ)\n" -#: src/rs02-verify.c:1154 +#: src/rs02-verify.c:1085 #, c-format msgid "- ecc md5sum : %s\n" msgstr "- md 5 součet ecc : %s\n" -#: src/rs02-verify.c:1179 src/rs03-verify.c:952 +#: src/rs02-verify.c:1103 src/rs03-verify.c:877 #, c-format msgid "Good error correction data." msgstr "Data pro opravu chyb jsou v pořádku." -#: src/rs02-verify.c:1183 src/rs03-verify.c:1409 +#: src/rs02-verify.c:1109 src/rs03-verify.c:1323 #, c-format msgid "Full data recovery is likely." msgstr "Úplná obnova dat je pravděpodobná." -#: src/rs02-verify.c:1186 src/rs03-verify.c:1412 +#: src/rs02-verify.c:1114 src/rs03-verify.c:1328 #, c-format msgid "Full data recovery is NOT possible." msgstr "Úplná obnova dat není možná." -#: src/rs02-window.c:80 +#: src/rs02-window.c:76 msgid "1. Preparing image:" msgstr "1. Příprava bitové kopie:" -#: src/rs02-window.c:772 +#: src/rs02-window.c:770 msgid "Maximum image size" msgstr "Maximální velikost bitové kopie" -#: src/rs02-window.c:784 +#: src/rs02-window.c:782 msgid "Using the smallest possible size from table" msgstr "Použita nejmenší možná velikost z tabulky" -#: src/rs02-window.c:784 +#: src/rs02-window.c:783 msgid "Use smallest possible size from following table (in sectors):" msgstr "Použít nejmenší možnou velikost z následující tabulky (v sektorech):" @@ -4978,15 +4956,15 @@ msgstr "" msgid "CD-R / CD-RW:" msgstr "CD-R / CD-RW:" -#: src/rs02-window.c:844 src/rs02-window.c:863 src/rs02-window.c:907 -#: src/rs02-window.c:926 src/rs02-window.c:970 src/rs02-window.c:989 -#: src/rs02-window.c:1033 src/rs02-window.c:1052 src/rs02-window.c:1095 -#: src/rs02-window.c:1114 src/rs02-window.c:1157 src/rs02-window.c:1176 -#: src/rs02-window.c:1221 src/rs02-window.c:1240 +#: src/rs02-window.c:844 src/rs02-window.c:863 src/rs02-window.c:908 +#: src/rs02-window.c:927 src/rs02-window.c:972 src/rs02-window.c:991 +#: src/rs02-window.c:1036 src/rs02-window.c:1055 src/rs02-window.c:1099 +#: src/rs02-window.c:1118 src/rs02-window.c:1162 src/rs02-window.c:1181 +#: src/rs02-window.c:1227 src/rs02-window.c:1246 msgid "query medium" msgstr "podle disku" -#: src/rs02-window.c:875 +#: src/rs02-window.c:876 #, c-format msgid "" "CD medium size\n" @@ -5009,11 +4987,11 @@ msgstr "" "Uvědomte si, že rozšířené bitové kopie se mohou zvětšit maximálně třikrát, protože maximální možná redundance je 200%%.\n" "I pokud není tento limit dosažen, může být rozšířená bitová kopie z technických důvodů o něco menší." -#: src/rs02-window.c:893 +#: src/rs02-window.c:894 msgid "DVD 1 layer:" msgstr "1-vrstvé DVD:" -#: src/rs02-window.c:938 +#: src/rs02-window.c:940 #, c-format msgid "" "Single layer DVD medium size\n" @@ -5036,11 +5014,11 @@ msgstr "" "Uvědomte si, že rozšířené bitové kopie se mohou zvětšit maximálně třikrát, protože maximální možná redundance je 200%%.\n" "I pokud není tento limit dosažen, může být rozšířená bitová kopie z technických důvodů o něco menší." -#: src/rs02-window.c:956 +#: src/rs02-window.c:958 msgid "DVD 2 layers:" msgstr "2-vrstvé DVD" -#: src/rs02-window.c:1001 +#: src/rs02-window.c:1004 #, c-format msgid "" "Two layered DVD medium size\n" @@ -5063,11 +5041,11 @@ msgstr "" "Uvědomte si, že rozšířené bitové kopie se mohou zvětšit maximálně třikrát, protože maximální možná redundance je 200%%.\n" "I pokud není tento limit dosažen, může být rozšířená bitová kopie z technických důvodů o něco menší." -#: src/rs02-window.c:1019 +#: src/rs02-window.c:1022 msgid "BD 1 layer:" msgstr "1-vrstvý BD" -#: src/rs02-window.c:1064 +#: src/rs02-window.c:1068 #, c-format msgid "" "Single layer BD medium size\n" @@ -5090,11 +5068,11 @@ msgstr "" "Uvědomte si, že rozšířené bitové kopie se mohou zvětšit maximálně třikrát, protože maximální možná redundance je 200%%.\n" "I pokud není tento limit dosažen, může být rozšířená bitová kopie z technických důvodů o něco menší." -#: src/rs02-window.c:1081 +#: src/rs02-window.c:1085 msgid "BD 2 layers:" msgstr "2-vrstvý BD" -#: src/rs02-window.c:1126 +#: src/rs02-window.c:1131 #, c-format msgid "" "Two layered BD medium size\n" @@ -5117,11 +5095,11 @@ msgstr "" "Uvědomte si, že rozšířené bitové kopie se mohou zvětšit maximálně třikrát, protože maximální možná redundance je 200%%.\n" "I pokud není tento limit dosažen, může být rozšířená bitová kopie z technických důvodů o něco menší." -#: src/rs02-window.c:1143 +#: src/rs02-window.c:1148 msgid "BDXL 3 layers:" msgstr "" -#: src/rs02-window.c:1188 +#: src/rs02-window.c:1194 #, c-format msgid "" "Three layered BDXL medium size\n" @@ -5135,11 +5113,11 @@ msgid "" "Even if this limit is not reached the augmented image may be a few sectors smaller than specified for technical reasons." msgstr "" -#: src/rs02-window.c:1207 +#: src/rs02-window.c:1213 msgid "BDXL 4 layers:" msgstr "" -#: src/rs02-window.c:1252 +#: src/rs02-window.c:1258 #, c-format msgid "" "Four layered BDXL medium size\n" @@ -5153,11 +5131,11 @@ msgid "" "Even if this limit is not reached the augmented image may be a few sectors smaller than specified for technical reasons." msgstr "" -#: src/rs02-window.c:1314 +#: src/rs02-window.c:1320 msgid "sectors." msgstr "sektorů." -#: src/rs02-window.c:1327 +#: src/rs02-window.c:1334 #, c-format msgid "" "Use at most ... sectors\n" @@ -5176,47 +5154,47 @@ msgstr "" "Uvědomte si, že rozšířené bitové kopie se mohou zvětšit maximálně třikrát, protože maximální možná redundance je 200%%.\n" "I pokud není tento limit dosažen, může být rozšířená bitová kopie z technických důvodů o něco menší." -#: src/rs03-common.c:440 +#: src/rs03-common.c:441 #, c-format msgid "Image file %s not present." msgstr "Soubor bitové kopie %s není přítomen." -#: src/rs03-common.c:457 +#: src/rs03-common.c:458 #, c-format msgid "Redundancy %4.1f%% out of useful range [3.2%%..200%%]" msgstr "Redundance %4.1f%% z použitelného rozsahu [3.2%%..200%%]" -#: src/rs03-common.c:487 +#: src/rs03-common.c:488 #, c-format msgid "Redundancy %d out of useful range [8..170]." msgstr "Redundance %d z použitelného rozsahu [8..170]." -#: src/rs03-common.c:525 +#: src/rs03-common.c:526 #, c-format msgid "Medium size smaller than image size (% < %)" msgstr "" -#: src/rs03-create.c:434 +#: src/rs03-create.c:418 #, c-format msgid "Failed expanding the ecc file: %s\n" msgstr "Rozšíření ecc souboru selhalo: %s\n" -#: src/rs03-create.c:435 +#: src/rs03-create.c:419 #, c-format msgid "Preparing ecc file: %3d%%" msgstr "Tvorba ecc souboru: %3d%%" -#: src/rs03-create.c:440 +#: src/rs03-create.c:424 #, c-format msgid "Preparing image: %3d%%" msgstr "Příprava bitové kopie: %3d%%" -#: src/rs03-create.c:688 +#: src/rs03-create.c:661 #, c-format msgid "Failed mmap()ing layer %d: %s\n" msgstr "" -#: src/rs03-create.c:717 +#: src/rs03-create.c:690 #, c-format msgid "" "Incomplete image\n" @@ -5235,7 +5213,7 @@ msgstr "" "být vytvořeny z kompletně čitelné bitové kopie.\n" "Operace přerušena a částečná data pro opravu chyb odstraněna." -#: src/rs03-create.c:725 +#: src/rs03-create.c:698 msgid "" "\n" "This image was probably mastered from defective source(s).\n" @@ -5247,44 +5225,44 @@ msgstr "" "Pro více informací proveďte \"Ověření\".\n" "\n" -#: src/rs03-create.c:936 +#: src/rs03-create.c:902 msgid "CPU bound" msgstr "Omezeno CPU" -#: src/rs03-create.c:940 +#: src/rs03-create.c:906 msgid "I/O bound" msgstr "Omezeno V/V" -#: src/rs03-create.c:1149 +#: src/rs03-create.c:1113 #, c-format msgid "%5.2fMiB/s current" msgstr "aktuálně %5.2fMiB/s" -#: src/rs03-create.c:1202 +#: src/rs03-create.c:1164 #, c-format msgid "%d threads with %s encoding and %s I/O" msgstr "" -#: src/rs03-create.c:1364 +#: src/rs03-create.c:1321 #, c-format msgid "Encoding with Method RS03: % MiB data, % MiB ecc (%d roots; %4.1f%% redundancy)." msgstr "Kódování metodou RS03: % MiB dat, % MiB ecc (%d bází; %4.1f%% redundance)." -#: src/rs03-create.c:1383 +#: src/rs03-create.c:1341 #, c-format msgid "" "Augmenting image with Method RS03 [%d threads, %s, %s I/O]:\n" "% MiB data, % MiB ecc (%d roots; %4.1f%% redundancy)." msgstr "" -#: src/rs03-create.c:1388 +#: src/rs03-create.c:1346 #, c-format msgid "" "Creating the error correction file with Method RS03 [%d threads, %s, %s I/O]:\n" "% MiB data, % MiB ecc (%d roots; %4.1f%% redundancy)." msgstr "" -#: src/rs03-create.c:1399 +#: src/rs03-create.c:1357 #, c-format msgid "" "Not enough space on medium left for error correction data.\n" @@ -5297,57 +5275,57 @@ msgstr "" "Pokud není možné zmenšení bitové kopie nebo použití většího disku,\n" "vytvořte samostatný soubor pro opravu chyb." -#: src/rs03-create.c:1425 +#: src/rs03-create.c:1383 msgid "" "BD-R size with no defect management enabled,\n" "remember it should you need to repair this image later!\n" msgstr "" -#: src/rs03-create.c:1459 +#: src/rs03-create.c:1417 #, c-format msgid "Avg performance: %5.2fs (%5.2fMiB/s) total\n" msgstr "Prům. výkon: %5.2fs (%5.2fMiB/s) celkem\n" -#: src/rs03-create.c:1463 +#: src/rs03-create.c:1420 #, c-format msgid "%5.2fMiB/s average" msgstr "%5.2fMiB/s průměr" -#: src/rs03-create.c:1465 +#: src/rs03-create.c:1422 #, c-format msgid "%d times CPU bound; %d times I/O bound" msgstr "%d krát omezeno CPU; %d omezeno V/V" -#: src/rs03-fix.c:243 +#: src/rs03-fix.c:217 #, c-format msgid "Error correction file using Method RS03, %d roots, %4.1f%% redundancy." msgstr "Soubor pro opravu chyb používá metodu RS03, %d bází, redundance %4.1f%%." -#: src/rs03-fix.c:247 +#: src/rs03-fix.c:221 #, c-format msgid "Image contains error correction data: Method RS03, %d roots, %4.1f%% redundancy." msgstr "Bitová kopie obsahuje data pro opravu chyb: metoda RS03, %d bází, %4.1f%% redundance." -#: src/rs03-fix.c:725 src/rs03-fix.c:849 +#: src/rs03-fix.c:684 src/rs03-fix.c:808 msgid "; ecc file: " msgstr "" -#: src/rs03-fix.c:785 +#: src/rs03-fix.c:744 #, c-format msgid "-> CRC-predicted error in sector %lld%s at byte %4d (value %02x '%c', expected %02x '%c')\n" msgstr "" -#: src/rs03-fix.c:788 +#: src/rs03-fix.c:747 #, c-format msgid "-> Non-predicted error in sector %lld%s at byte %4d (value %02x '%c', expected %02x '%c')\n" msgstr "" -#: src/rs03-fix.c:881 +#: src/rs03-fix.c:840 #, c-format msgid "Failed seeking to sector % in ecc file [%s]: %s" msgstr "Nezdařil se přechod na sektor % ecc souboru [%s]: %s" -#: src/rs03-fix.c:886 +#: src/rs03-fix.c:845 #, c-format msgid "" "could not write ecc file sector %:\n" @@ -5356,31 +5334,31 @@ msgstr "" "nelze zapsat sektor ecc souboru %:\n" "%s" -#: src/rs03-preferences.c:345 src/rs03-preferences.c:788 -#: src/rs03-preferences.c:794 src/rs03-preferences.c:795 +#: src/rs03-preferences.c:347 src/rs03-preferences.c:790 +#: src/rs03-preferences.c:796 src/rs03-preferences.c:797 #, c-format msgid "%d sectors" msgstr "%d sektorů" -#: src/rs03-preferences.c:364 src/rs03-preferences.c:904 -#: src/rs03-preferences.c:910 src/rs03-preferences.c:911 +#: src/rs03-preferences.c:366 src/rs03-preferences.c:906 +#: src/rs03-preferences.c:912 src/rs03-preferences.c:913 #, c-format msgid "%d threads" msgstr "%d vláken" -#: src/rs03-preferences.c:487 src/rs03-preferences.c:494 +#: src/rs03-preferences.c:489 src/rs03-preferences.c:496 msgid "Error correction data storage" msgstr "Uložení dat pro opravu chyb" -#: src/rs03-preferences.c:495 +#: src/rs03-preferences.c:497 msgid "Store ECC data in: " msgstr "Uložit ECC data do: " -#: src/rs03-preferences.c:508 +#: src/rs03-preferences.c:510 msgid "File" msgstr "Soubor" -#: src/rs03-preferences.c:535 +#: src/rs03-preferences.c:537 msgid "" "Error correction data storage\n" "\n" @@ -5390,7 +5368,7 @@ msgstr "" "\n" "Zvolte metodu uložení informací pro opravu chyb:\n" -#: src/rs03-preferences.c:540 +#: src/rs03-preferences.c:542 msgid "" "Augmented image (recommended)\n" "The error correction data will be stored along with the user data on the same medium. This requires the creation of an image file prior to writing the medium. The error correction data will be appended to that image and fill up the remaining space.\n" @@ -5400,7 +5378,7 @@ msgstr "" "Data pro opravu chyb budou uložena na stejném disku spolu s chráněnými daty. Tato metoda vyžaduje před vypálením vytvoření bitové kopie disku. Data pro opravu chyb pak budou přidána k této bitové kopii a vyplní zbývající volný prostor.\n" "Poškozené sektory v oblasti s daty pro opravu chyb snižují schopnost opravy, ale neznemožní ji zcela - pro uchování a/nebo ochranu dat pro opravu není vyžadován samostatný disk.\n" -#: src/rs03-preferences.c:550 +#: src/rs03-preferences.c:552 msgid "" "Error correction file\n" "Error correction files are the only way of protecting existing media as they can be stored somewhere else. They are kept on a separate medium which must also be protected by dvdisaster. This prevents from losing the error correction files in case of a medium defect.\n" @@ -5408,23 +5386,23 @@ msgstr "" "Soubor pro opravu chyb\n" "Soubory pro opravu chyb jsou jediným způsobem jak ochránit existující disky, protože mohou být uloženy odděleně. Mohou být např. uloženy na samostatném disku, který ovšem musí být také chráněn pomocí dvdisaster. Tím zabráníte ztrátě dat pro opravu chyb v případě poškození použitého disku.\n" -#: src/rs03-preferences.c:570 +#: src/rs03-preferences.c:572 msgid "no settings for augmented images" msgstr "pro rozšířené bitové kopie není žádné nastavení" -#: src/rs03-preferences.c:781 +#: src/rs03-preferences.c:783 msgid "I/O parameters" msgstr "" -#: src/rs03-preferences.c:789 +#: src/rs03-preferences.c:791 msgid "Sector preloading" msgstr "" -#: src/rs03-preferences.c:801 +#: src/rs03-preferences.c:803 msgid "Preload" msgstr "" -#: src/rs03-preferences.c:829 +#: src/rs03-preferences.c:831 msgid "" "Sector preloading\n" "\n" @@ -5436,23 +5414,23 @@ msgid "" "A preload value of n will used approx. n MiB of RAM." msgstr "" -#: src/rs03-preferences.c:841 +#: src/rs03-preferences.c:843 msgid "I/O strategy" msgstr "" -#: src/rs03-preferences.c:842 +#: src/rs03-preferences.c:844 msgid "I/O strategy: " msgstr "" -#: src/rs03-preferences.c:855 +#: src/rs03-preferences.c:857 msgid "read/write" msgstr "" -#: src/rs03-preferences.c:861 +#: src/rs03-preferences.c:863 msgid "memory mapped" msgstr "" -#: src/rs03-preferences.c:881 +#: src/rs03-preferences.c:883 msgid "" "I/O strategy\n" "\n" @@ -5463,11 +5441,11 @@ msgid "" "The memory mapped option uses the kernel's memory mapping scheme for direct access to the image file. This has the advantage of minimal overhead, but may be adversely affected by poor caching and preloading decisions made by the kernel (since the kernel does not know what dvdisaster is going to do with the data). This scheme performs well when encoding in a RAM-based file system (such as /dev/shm on GNU/Linux) and on very fast media with low latency such as SSDs." msgstr "" -#: src/rs03-preferences.c:901 src/rs03-preferences.c:905 +#: src/rs03-preferences.c:903 src/rs03-preferences.c:907 msgid "Multithreading" msgstr "Vícevláknové zpracování" -#: src/rs03-preferences.c:946 +#: src/rs03-preferences.c:948 msgid "" "Multithreading\n" "\n" @@ -5485,35 +5463,35 @@ msgstr "" "\n" "Výkonnost se nebude zvyšovat lineárně. Výkonnost pevných disků je více omezující než výkonnost procesorů. Při použití 4 nebo více jader pak může výkonnost ovlivnit i výkon paměťového systému." -#: src/rs03-preferences.c:961 src/rs03-preferences.c:968 +#: src/rs03-preferences.c:963 src/rs03-preferences.c:970 msgid "Encoding algorithm" msgstr "" -#: src/rs03-preferences.c:969 +#: src/rs03-preferences.c:971 msgid "Use: " msgstr "" -#: src/rs03-preferences.c:982 +#: src/rs03-preferences.c:984 msgid "32bit" msgstr "" -#: src/rs03-preferences.c:988 +#: src/rs03-preferences.c:990 msgid "64bit" msgstr "" -#: src/rs03-preferences.c:995 +#: src/rs03-preferences.c:997 msgid "SSE2" msgstr "" -#: src/rs03-preferences.c:1002 +#: src/rs03-preferences.c:1004 msgid "AltiVec" msgstr "" -#: src/rs03-preferences.c:1009 +#: src/rs03-preferences.c:1011 msgid "auto" msgstr "" -#: src/rs03-preferences.c:1036 +#: src/rs03-preferences.c:1038 msgid "" "Encoding algorithm\n" "\n" @@ -5523,93 +5501,107 @@ msgid "" "Available extensions are SSE2 for x86 based processors and AltiVec on PowerPC processors. These extensions encode with 128bit wide operations and will usually provide the fastest encoding variant. If \"auto\" is selected, the SSE2/AltiVec algorithms will be selected if the processor supports them; otherwise the 64bit algorithm will be used." msgstr "" -#: src/rs03-recognize.c:593 +#: src/rs03-recognize.c:595 #, c-format msgid "Failed seeking to sector %lld in image: %s" msgstr "Nezdařil se přechod na sektor %lld bitové kopie: %s" -#: src/rs03-recognize.c:598 +#: src/rs03-recognize.c:600 #, c-format msgid "Failed reading sector %lld in image: %s" msgstr "Čtení sektoru %lld bitové kopie %s se nezdařilo" -#: src/rs03-verify.c:193 +#: src/rs03-verify.c:196 msgid "Error correction properties" msgstr "Vlastnosti ochrany dat" -#: src/rs03-verify.c:204 +#: src/rs03-verify.c:207 msgid "Type:" msgstr "Typ:" -#: src/rs03-verify.c:273 +#: src/rs03-verify.c:276 msgid "Data integrity" msgstr "Integrita dat" -#: src/rs03-verify.c:338 src/rs03-verify.c:1353 +#: src/rs03-verify.c:341 src/rs03-verify.c:1272 msgid "Ecc block test:" msgstr "Kontrola ecc bloku:" -#: src/rs03-verify.c:503 src/rs03-verify.c:736 src/rs03-verify.c:1274 +#: src/rs03-verify.c:498 src/rs03-verify.c:699 src/rs03-verify.c:1193 msgid "Checking the image and error correction files." msgstr "Kontrola souboru bitové kopie a souboru pro opravu chyb." -#: src/rs03-verify.c:504 +#: src/rs03-verify.c:499 msgid "- Checking ecc blocks (deep verify) -" msgstr "- Kontrola ecc bloků (důkladné ověření) -" -#: src/rs03-verify.c:521 +#: src/rs03-verify.c:513 #, c-format msgid "Out of memory; try reducing sector prefetch!" msgstr "Nedostatek paměti; zkuste snížit přednačítání sektorů!" -#: src/rs03-verify.c:524 +#: src/rs03-verify.c:515 msgid "* Ecc block test : out of memory; try reducing sector prefetch!\n" msgstr "* kontrola ecc bloků: Nedostatek paměti; zkuste snížit přednačítání sektorů!\n" -#: src/rs03-verify.c:609 src/rs03-verify.c:1241 +#: src/rs03-verify.c:596 src/rs03-verify.c:1157 #, c-format msgid "%d%% tested" msgstr "%d%% zkontrolováno" -#: src/rs03-verify.c:612 +#: src/rs03-verify.c:598 #, c-format msgid "- Ecc block test : %d%% tested" msgstr "- kontrola ecc bloků: %d%% zkontrolováno" -#: src/rs03-verify.c:620 +#: src/rs03-verify.c:603 #, c-format msgid "% good, % bad; %d%% tested" msgstr "% v pořádku, % poškozených; %d%% zkontrolováno" -#: src/rs03-verify.c:623 +#: src/rs03-verify.c:605 #, c-format msgid "* Ecc block test : % good, % bad; %d%% tested" msgstr "* kontrola ecc bloků: % v pořádku, % poškozeno; %d%% zkontrolováno" -#: src/rs03-verify.c:635 +#: src/rs03-verify.c:614 msgid "pass" msgstr "úspěšné" -#: src/rs03-verify.c:638 +#: src/rs03-verify.c:616 msgid "- Ecc block test : pass\n" msgstr "- kontrola ecc bloků: úspěšná\n" -#: src/rs03-verify.c:645 +#: src/rs03-verify.c:620 #, c-format msgid "% good, % bad; % bad sub blocks" msgstr "% v pořádku, % poškozených; % poškozených subbloků" -#: src/rs03-verify.c:648 +#: src/rs03-verify.c:622 #, c-format msgid "* Ecc block test : % good, % bad; % bad sub blocks\n" msgstr "* kontrola ecc bloků: % v pořádku, % poškozeno; % poškozené sub bloky\n" -#: src/rs03-verify.c:740 +#: src/rs03-verify.c:688 +#, c-format +msgid "" +"\n" +"%s present.\n" +msgstr "" + +#: src/rs03-verify.c:691 +#, c-format +msgid "" +"\n" +"%s not present.\n" +msgstr "" + +#: src/rs03-verify.c:702 #, c-format msgid "%s present.\n" msgstr "%s existuje.\n" -#: src/rs03-verify.c:760 +#: src/rs03-verify.c:719 msgid "" "\n" "Error correction properties:\n" @@ -5617,47 +5609,47 @@ msgstr "" "\n" "Vlastnosti opravy chyb:\n" -#: src/rs03-verify.c:772 +#: src/rs03-verify.c:731 #, c-format msgid "Ecc file is % sectors shorter than expected." msgstr "Soubor ecc je o % sektorů kratší než očekáváno." -#: src/rs03-verify.c:774 +#: src/rs03-verify.c:733 #, c-format msgid "Ecc file is % sectors longer than expected." msgstr "Soubor ecc je o % sektorů delší než očekáváno." -#: src/rs03-verify.c:782 +#: src/rs03-verify.c:739 #, c-format msgid "* Warning : %s\n" msgstr "* Upozornění : %s\n" -#: src/rs03-verify.c:791 +#: src/rs03-verify.c:748 msgid "- type : Error correction file\n" msgstr "- typ : soubor pro opravu chyb\n" -#: src/rs03-verify.c:792 +#: src/rs03-verify.c:749 msgid "- type : Augmented image\n" msgstr "- typ : Rozšířená bitová kopie\n" -#: src/rs03-verify.c:797 +#: src/rs03-verify.c:752 msgid "Error correction file" msgstr "Soubor pro opravu chyb" -#: src/rs03-verify.c:798 +#: src/rs03-verify.c:755 msgid "Augmented image" msgstr "Rozšířená bitová kopie" -#: src/rs03-verify.c:830 src/rs03-verify.c:842 +#: src/rs03-verify.c:783 src/rs03-verify.c:791 msgid "- created by : dvdisaster" msgstr "- vytvořeno pomocí : dvdisaster" -#: src/rs03-verify.c:864 +#: src/rs03-verify.c:810 #, c-format msgid "- requires : dvdisaster-%s\n" msgstr "- vyžaduje : dvdisaster-%s\n" -#: src/rs03-verify.c:872 +#: src/rs03-verify.c:815 #, c-format msgid "" "* requires : dvdisaster-%s (BAD)\n" @@ -5665,11 +5657,11 @@ msgid "" "* : Please upgrade dvdisaster.\n" msgstr "" -#: src/rs03-verify.c:896 +#: src/rs03-verify.c:835 msgid "none available" msgstr "není k dispozici" -#: src/rs03-verify.c:962 +#: src/rs03-verify.c:886 msgid "" "\n" "Data integrity:\n" @@ -5677,95 +5669,95 @@ msgstr "" "\n" "Integrita dat:\n" -#: src/rs03-verify.c:991 +#: src/rs03-verify.c:910 #, c-format msgid "% in image; % in ecc file" msgstr "% v bitové kopii; % v ecc souboru" -#: src/rs03-verify.c:994 +#: src/rs03-verify.c:914 #, c-format msgid "% sectors + %d bytes in image; % in ecc file" msgstr "% sektorů + %d bajtů v bitové kopii; % v ecc souboru" -#: src/rs03-verify.c:1000 +#: src/rs03-verify.c:919 #, c-format msgid "- sectors : % in image; " msgstr "- sektory : % v bitové kopii; " -#: src/rs03-verify.c:1001 +#: src/rs03-verify.c:920 #, c-format msgid "- sectors : % sectors + %d bytes in image; " msgstr "- sektory : % sektorů + %d bajtů v bitové kopii; " -#: src/rs03-verify.c:1003 +#: src/rs03-verify.c:922 #, c-format msgid "% in ecc file\n" msgstr "% v ecc souboru\n" -#: src/rs03-verify.c:1009 +#: src/rs03-verify.c:925 #, c-format msgid "% total / % data" msgstr "% celkem / % data" -#: src/rs03-verify.c:1012 +#: src/rs03-verify.c:927 #, c-format msgid "- medium sectors : % total / % data\n" msgstr "- sektory disku : % celkem / % data\n" -#: src/rs03-verify.c:1029 +#: src/rs03-verify.c:943 #, c-format msgid "%s (%s expected)" msgstr "" -#: src/rs03-verify.c:1034 +#: src/rs03-verify.c:948 #, c-format msgid "Image file is %d bytes shorter than expected." msgstr "Soubor obrazu je o %d bajtů kratší než očekáváno." -#: src/rs03-verify.c:1036 +#: src/rs03-verify.c:950 #, c-format msgid "Image file is %d bytes longer than expected." msgstr "Soubor obrazu je o %d bajtů delší než očekáváno." -#: src/rs03-verify.c:1050 +#: src/rs03-verify.c:963 #, c-format msgid "* sectors : %s (%s expected); % sectors in ecc file\n" msgstr "" -#: src/rs03-verify.c:1053 +#: src/rs03-verify.c:966 #, c-format msgid "* medium sectors : %s (%s expected)\n" msgstr "" -#: src/rs03-verify.c:1077 +#: src/rs03-verify.c:994 #, c-format msgid "Failed seeking to start of ecc file: %s\n" msgstr "Přechod na začátek ecc souboru selhal: %s\n" -#: src/rs03-verify.c:1177 +#: src/rs03-verify.c:1093 msgid " (in ecc file)" msgstr " (v ecc souboru)" -#: src/rs03-verify.c:1185 +#: src/rs03-verify.c:1101 #, c-format msgid "* missing sector : %%s\n" msgstr "* chybějící sektor : %%s\n" -#: src/rs03-verify.c:1186 +#: src/rs03-verify.c:1102 #, c-format msgid "* missing sectors : % - %%s\n" msgstr "* chybějící sektory: % - %%s\n" -#: src/rs03-verify.c:1251 src/rs03-verify.c:1294 +#: src/rs03-verify.c:1168 src/rs03-verify.c:1213 #, c-format msgid "% sectors missing; % signature errors" msgstr "% sektorů chybí; % chyb podpisu" -#: src/rs03-verify.c:1277 +#: src/rs03-verify.c:1196 msgid "Error correction file:" msgstr "Soubor pro opravu chyb:" -#: src/rs03-verify.c:1311 +#: src/rs03-verify.c:1231 #, c-format msgid "" "- good image/file : all sectors present\n" @@ -5774,42 +5766,42 @@ msgstr "" "- dobrá bitová kopie/soubor: všechny sektory přítomny\n" "- md5 součet dat : %s\n" -#: src/rs03-verify.c:1315 +#: src/rs03-verify.c:1235 #, c-format msgid "* BAD image/file : % sectors missing\n" msgstr "* POŠKOZENÁ bitová kopie/soubor: % chybějících sektorů\n" -#: src/rs03-verify.c:1329 +#: src/rs03-verify.c:1249 #, c-format msgid " ... crc section : % sectors missing; % signature errors\n" msgstr " ... crc sekce : % sektorů chybí; % chyb podpisu\n" -#: src/rs03-verify.c:1362 +#: src/rs03-verify.c:1277 #, c-format msgid "Skipped; not useful on known defective image" msgstr "Vynecháno; u poškozených bitových kopií nemá smysl" -#: src/rs03-verify.c:1366 +#: src/rs03-verify.c:1280 msgid "* Ecc block test : skipped; not useful on defective image\n" msgstr "* kontrola ecc bloků: vynechána; u poškozených bitových kopií nemá smysl\n" -#: src/rs03-window.c:85 +#: src/rs03-window.c:81 msgid "1. Reserving space:" msgstr "1. vyhrazování prostoru:" -#: src/rs03-window.c:104 +#: src/rs03-window.c:100 msgid "Encoder info:" msgstr "Informace kodéru:" -#: src/rs03-window.c:113 +#: src/rs03-window.c:109 msgid "Performance:" msgstr "Výkon:" -#: src/rs03-window.c:122 +#: src/rs03-window.c:118 msgid "State:" msgstr "Stav:" -#: src/scsi-freebsd.c:47 src/scsi-linux.c:51 +#: src/scsi-freebsd.c:49 src/scsi-linux.c:53 msgid "" "Can not access /dev for devices\n" "No drives will be pre-selected.\n" @@ -5817,13 +5809,13 @@ msgstr "" "Nelze získat přístup k /dev pro výčet zařízení\n" "Nebudou předvybrány žádné mechaniky.\n" -#: src/scsi-freebsd.c:102 src/scsi-linux.c:91 src/scsi-win32.c:84 +#: src/scsi-freebsd.c:104 src/scsi-linux.c:93 src/scsi-win32.c:84 msgid "" "No optical drives found in /dev.\n" "No drives will be pre-selected.\n" msgstr "" -#: src/scsi-layer.c:104 +#: src/scsi-layer.c:106 #, c-format msgid "" "Can open %s, but INQUIRY fails.\n" @@ -5836,27 +5828,27 @@ msgstr "" "a pokoušíte se k ní přistupovat prostřednictvím /dev/cdrom nebo /dev/hd?.\n" "Místo toho použijte /dev/scd? nebo /dev/sr?, nebo zakažte emulaci ide-scsi.\n" -#: src/scsi-layer.c:112 +#: src/scsi-layer.c:114 #, c-format msgid "INQUIRY failed. Something is wrong with drive %s.\n" msgstr "Příkaz INQUIRY selhal. Něco není v pořádku s mechanikou %s.\n" -#: src/scsi-layer.c:141 +#: src/scsi-layer.c:143 #, c-format msgid "Device %s (%s) is not an optical drive." msgstr "Zařízení %s (%s) není CD-ROM mechanika." -#: src/scsi-layer.c:142 +#: src/scsi-layer.c:144 #, c-format msgid "Device %s (%s) is a hard disk." msgstr "Zařízení %s (%s) je pevný disk." -#: src/scsi-layer.c:433 +#: src/scsi-layer.c:435 #, c-format msgid "Incomplete %s" msgstr "neúplný %s" -#: src/scsi-layer.c:471 +#: src/scsi-layer.c:473 #, c-format msgid "" "%s\n" @@ -5865,16 +5857,16 @@ msgstr "" "%s\n" "Nepodařilo se zjistit délku TOC.\n" -#: src/scsi-layer.c:476 +#: src/scsi-layer.c:478 msgid "blank" msgstr "prázdný" -#: src/scsi-layer.c:491 src/scsi-layer.c:552 +#: src/scsi-layer.c:493 src/scsi-layer.c:554 #, c-format msgid "TOC info too long (%d), probably multisession.\n" msgstr "Informace TOC je příliš dlouhá (%d), pravděpodobně jde o multisession.\n" -#: src/scsi-layer.c:506 +#: src/scsi-layer.c:508 #, c-format msgid "" "%s\n" @@ -5883,7 +5875,7 @@ msgstr "" "%s\n" "Nepodařilo se načíst TOC.\n" -#: src/scsi-layer.c:533 +#: src/scsi-layer.c:535 #, c-format msgid "" "%s\n" @@ -5892,12 +5884,12 @@ msgstr "" "%s\n" "Nepodařilo se zjistit celou délku TOC.\n" -#: src/scsi-layer.c:546 +#: src/scsi-layer.c:548 #, c-format msgid "TOC info too short, length %d.\n" msgstr "Informace TOC příliš krátká, délka %d.\n" -#: src/scsi-layer.c:568 +#: src/scsi-layer.c:570 #, c-format msgid "" "%s\n" @@ -5906,7 +5898,7 @@ msgstr "" "%s\n" "Nepodařilo se přečíst celou TOC.\n" -#: src/scsi-layer.c:577 +#: src/scsi-layer.c:579 #, c-format msgid "" "\n" @@ -5915,11 +5907,11 @@ msgstr "" "\n" "Neočekávaný formát TOC (délka %d):\n" -#: src/scsi-layer.c:585 +#: src/scsi-layer.c:587 msgid "Consider sending a bug report.\n" msgstr "Zvažte zaslání hlášení o chybě.\n" -#: src/scsi-layer.c:638 +#: src/scsi-layer.c:643 #, c-format msgid "" "%s\n" @@ -5928,12 +5920,12 @@ msgstr "" "%s\n" "Nepodařilo se zjistit délku struktury DVD.\n" -#: src/scsi-layer.c:650 +#: src/scsi-layer.c:655 #, c-format msgid "Could not query dvd physical structure - implausible packet length %d\n" msgstr "Nepodařilo se zjistit fyzickou strukturu DVD - nepřijatelná délka paketu %d\n" -#: src/scsi-layer.c:668 +#: src/scsi-layer.c:673 #, c-format msgid "" "%s\n" @@ -5942,12 +5934,12 @@ msgstr "" "%s\n" "Nepodařilo se zjistit fyzickou strukturu DVD.\n" -#: src/scsi-layer.c:697 src/scsi-layer.c:707 +#: src/scsi-layer.c:702 src/scsi-layer.c:712 #, c-format msgid "READ DVD STRUCTURE: implausible medium size, %-%=% sectors\n" msgstr "ČÍST STRUKTURU DVD: nepravděpodobná velikost disku, %-%=% sektorů\n" -#: src/scsi-layer.c:976 +#: src/scsi-layer.c:981 #, c-format msgid "" "%s\n" @@ -5956,7 +5948,7 @@ msgstr "" "%s\n" "Nepodařilo se zjistit délku struktury BD disku.\n" -#: src/scsi-layer.c:1000 +#: src/scsi-layer.c:1005 #, c-format msgid "" "%s\n" @@ -5965,7 +5957,7 @@ msgstr "" "%s\n" "Nepodařilo se zjistit strukturu BD disku.\n" -#: src/scsi-layer.c:1704 +#: src/scsi-layer.c:1709 #, c-format msgid "" "%s\n" @@ -5974,12 +5966,12 @@ msgstr "" "%s\n" "Nepodařilo se zjistit délku struktury DVD pro kód formátu 1.\n" -#: src/scsi-layer.c:1715 +#: src/scsi-layer.c:1720 #, c-format msgid "Could not query dvd copyright info - implausible packet length %d\n" msgstr "Získání copyright informací DVD se nezdařilo - nepřijatelná délka paketu %d\n" -#: src/scsi-layer.c:1730 +#: src/scsi-layer.c:1735 #, c-format msgid "" "%s\n" @@ -5988,23 +5980,23 @@ msgstr "" "%s\n" "Získání copyright informací se nezdařilo.\n" -#: src/scsi-layer.c:1791 +#: src/scsi-layer.c:1796 msgid "is undecideable because of read error" msgstr "není rozhodnuto kvůli chybě čtení" -#: src/scsi-layer.c:1797 +#: src/scsi-layer.c:1802 msgid "looks GOOD" msgstr "vypadá DOBŘE" -#: src/scsi-layer.c:1803 +#: src/scsi-layer.c:1808 msgid "gives unformatted size (UNUSABLE)" msgstr "má neformátovanou velikost (NEPOUŽITELNÉ)" -#: src/scsi-layer.c:1808 +#: src/scsi-layer.c:1813 msgid "is UNUSABLE" msgstr "je NEPOUŽITELNÝ" -#: src/scsi-layer.c:1834 +#: src/scsi-layer.c:1839 #, c-format msgid "" "%s\n" @@ -6013,12 +6005,12 @@ msgstr "" "%s\n" "Dotaz na velikost disku selhal.\n" -#: src/scsi-layer.c:1856 +#: src/scsi-layer.c:1861 #, c-format msgid "READ CAPACITY: implausible medium size, % sectors\n" msgstr "ČÍST KAPACITU: nepravděpodobná velikost disku, % sektorů\n" -#: src/scsi-layer.c:1932 +#: src/scsi-layer.c:1937 #, c-format msgid "" "Different media sizes depending on query method:\n" @@ -6031,7 +6023,7 @@ msgstr "" "ČÍST STRUKTURU DVD: % sektorů\n" "\n" -#: src/scsi-layer.c:1937 +#: src/scsi-layer.c:1942 msgid "" "Evaluation of returned medium sizes:\n" "\n" @@ -6039,15 +6031,15 @@ msgstr "" "Vyhodnocení oznámených velikostí disku:\n" "\n" -#: src/scsi-layer.c:1992 +#: src/scsi-layer.c:1997 msgid "Using value from READ CAPACITY" msgstr "Bude použita hodnota z READ CAPACITY" -#: src/scsi-layer.c:1996 +#: src/scsi-layer.c:2001 msgid "Using value from READ DVD STRUCTURE" msgstr "Bude použita hodnota z READ DVD STRUCTURE" -#: src/scsi-layer.c:2006 +#: src/scsi-layer.c:2011 #, c-format msgid "" "FAILED to determine image size.\n" @@ -6058,7 +6050,7 @@ msgstr "" "Bude použita menší hodnota, protože je to správně pro >90%% všech mechanik,\n" "ale POKRAČUJTE NA VLASTNÍ NEBEZPEČÍ (bitová kopie může být neúplná/nepoužitelná)" -#: src/scsi-layer.c:2011 +#: src/scsi-layer.c:2016 #, c-format msgid "" "Final decision: %s\n" @@ -6067,7 +6059,7 @@ msgstr "" "Konečné rozhodnutí: %s\n" "\n" -#: src/scsi-layer.c:2019 +#: src/scsi-layer.c:2024 msgid "" "Failed to determine image size.\n" "Try using a different drive." @@ -6075,7 +6067,7 @@ msgstr "" "Selhalo určení velikosti bitové kopie.\n" "Zkuste použít jinou mechaniku." -#: src/scsi-layer.c:2146 src/scsi-layer.c:2172 +#: src/scsi-layer.c:2151 src/scsi-layer.c:2177 #, c-format msgid "" "%s\n" @@ -6084,7 +6076,7 @@ msgstr "" "%s\n" "Disk se nepodařilo načíst/vysunout.\n" -#: src/scsi-layer.c:2162 +#: src/scsi-layer.c:2167 #, c-format msgid "" "%s\n" @@ -6093,37 +6085,37 @@ msgstr "" "%s\n" "Disk se nepodařilo odemknout.\n" -#: src/scsi-layer.c:2228 +#: src/scsi-layer.c:2230 #, c-format msgid "Waiting 10 seconds for drive: %d\n" msgstr "Čekám na roztočení mechaniky: %d\n" -#: src/scsi-layer.c:2511 +#: src/scsi-layer.c:2505 #, c-format msgid "Sectors % - %: %s\n" msgstr "Sektory % - %: %s\n" -#: src/scsi-layer.c:2525 +#: src/scsi-layer.c:2519 #, c-format msgid "Sector %, try %d: %s Sector returned: %d.\n" msgstr "Sektor %, pokus %d: %s Vrácený sektor: %d.\n" -#: src/scsi-layer.c:2531 +#: src/scsi-layer.c:2525 #, c-format msgid "Sector %, try %d: %s\n" msgstr "Sektor %, pokus %d: %s\n" -#: src/scsi-layer.c:2542 +#: src/scsi-layer.c:2536 #, c-format msgid "Sector %, try %d: success\n" msgstr "Sektor %, pokus %d: úspěch\n" -#: src/scsi-layer.c:2614 +#: src/scsi-layer.c:2608 #, c-format msgid "Device %s: no medium present\n" msgstr "Mechanika %s: neobsahuje disk\n" -#: src/scsi-layer.c:2619 +#: src/scsi-layer.c:2613 #, c-format msgid "" "Device %s does not become ready:\n" @@ -6134,7 +6126,7 @@ msgstr "" "%s\n" "\n" -#: src/scsi-layer.c:2625 +#: src/scsi-layer.c:2619 #, c-format msgid "" "\n" @@ -6143,63 +6135,63 @@ msgstr "" "\n" "Zařízení: %s, %s\n" -#: src/scsi-layer.c:2632 +#: src/scsi-layer.c:2626 msgid "Drive failed to report media type." msgstr "Mechanika neohlásila typ disku." -#: src/scsi-layer.c:2647 src/scsi-layer.c:2759 +#: src/scsi-layer.c:2641 src/scsi-layer.c:2753 #, c-format msgid "This software does not support \"%s\" type media." msgstr "Tento program nepodporuje \"%s\" disky." -#: src/scsi-layer.c:2655 +#: src/scsi-layer.c:2649 #, c-format msgid "This software does not support multisession (%d sessions) media." msgstr "Tento program nepodporuje multisession (%d sessions) disky." -#: src/scsi-layer.c:2686 src/scsi-layer.c:2695 +#: src/scsi-layer.c:2680 src/scsi-layer.c:2689 msgid "Using READ CD" msgstr "Je použito READ CD" -#: src/scsi-layer.c:2687 +#: src/scsi-layer.c:2681 msgid ", RAW reading" msgstr ", přímé čtení" -#: src/scsi-layer.c:2690 +#: src/scsi-layer.c:2684 #, c-format msgid ", Mode page 1 ERP = %02xh" msgstr ", stránka režimu 1 ERP = %02xh" -#: src/scsi-layer.c:2693 +#: src/scsi-layer.c:2687 msgid ", C2 scanning" msgstr ", kontrola C2" -#: src/scsi-layer.c:2700 +#: src/scsi-layer.c:2694 msgid "Using READ(10).\n" msgstr "Je použit READ(10).\n" -#: src/scsi-layer.c:2736 +#: src/scsi-layer.c:2730 #, c-format msgid "Medium: %s, % sectors%s" msgstr "Disk: %s, % sektorů%s" -#: src/scsi-layer.c:2740 +#: src/scsi-layer.c:2734 #, c-format msgid "Medium \"%s\": %s, % sectors%s created %s" msgstr "Disk \"%s\": %s, % sektorů%s vytvořeno %s" -#: src/scsi-netbsd.c:103 +#: src/scsi-netbsd.c:105 msgid "" "No optical drives found.\n" "No drives will be pre-selected.\n" msgstr "" -#: src/scsi-simulated.c:37 +#: src/scsi-simulated.c:39 #, c-format msgid "Simulated CD (%s)" msgstr "" -#: src/scsi-unknown.c:35 +#: src/scsi-unknown.c:37 msgid "" "* Unsupported operating system - no SCSI layer available.\n" "* No drives can be used.\n" @@ -6221,41 +6213,11 @@ msgstr "" msgid "Could not open device %s." msgstr "" -#: src/show-html.c:78 -msgid "windowtitle|Choose a browser" -msgstr "Vybrat prohlížeč" - -#: src/show-html.c:115 -msgid "windowtitle|Browser required" -msgstr "Vyžadován prohlížeč" - -#: src/show-html.c:131 -msgid "" -"Could not find a suitable browser.\n" -"\n" -"Which browser would you like to use\n" -"for reading the online documentation?\n" -"\n" -"Please enter its name (e.g. mozilla) or\n" -"use the \"Search\" button for a file dialog.\n" -msgstr "" -"Nebyl nalezen vyhovující prohlížeč.\n" -"\n" -"Který prohlížeč chcete použít\n" -"ke čtení online dokumentace?\n" -"\n" -"Zadejte jeho název (např. mozilla) nebo použijte\n" -"tlačítko \"Procházet\" a vyberte příslušný soubor.\n" - -#: src/show-html.c:144 src/show-manual.c:145 -msgid "Search" -msgstr "Procházet" - -#: src/show-html.c:337 src/show-manual.c:324 +#: src/show-manual.c:83 msgid "Documentation not installed." msgstr "Dokumentace není nainstalována." -#: src/show-html.c:382 src/show-manual.c:340 +#: src/show-manual.c:98 #, c-format msgid "" "Documentation file\n" @@ -6263,85 +6225,158 @@ msgid "" "not found.\n" msgstr "" -#: src/show-html.c:391 -msgid "Please hang on until the browser comes up!" -msgstr "Počkejte na spuštění prohlížeče!" - -#: src/show-manual.c:79 -msgid "windowtitle|Choose a PDF viewer" +#: src/show-manual.c:114 +msgid "Could not create pipe before fork" msgstr "" -#: src/show-manual.c:116 -msgid "windowtitle|PDF viewer required" +#: src/show-manual.c:122 +msgid "Could not fork to start xdg-open" msgstr "" -#: src/show-manual.c:132 +#: src/show-manual.c:145 +#, c-format msgid "" -"Could not find a suitable PDF viewer.\n" -"\n" -"Which PDF viewer would you like to use\n" -"for reading the online documentation?\n" -"\n" -"Please enter its name (e.g. xpdf) or\n" -"use the \"Search\" button for a file dialog.\n" +"execvp could not execute \"xdg-open\":\n" +"%s\n" +"Is xdg-open installed correctly?\n" msgstr "" -#: src/show-manual.c:349 -msgid "Please hang on until the viewer comes up!" -msgstr "" - -#: src/udf.c:257 +#: src/udf.c:259 msgid "Unnamed" msgstr "Bez názvu" -#: src/udf.c:348 +#: src/udf.c:350 msgid "Example disc" msgstr "Vzorový disk" -#: src/welcome-window.c:82 +#: src/welcome-window.c:84 msgid "" -"This is v0.79.6-pl8. The patchlevel series are enhanced from the last upstream pre-release.\n" -"We add support for a CLI version, BD-R TL/QL, a Windows build, an option to produce bigger BD-R RS03,\n" +"This is v0.79.10-pl1. The patchlevel series are enhanced from the last upstream release.\n" +"We add support for BD-R TL/QL, a Windows build, an option to produce bigger BD-R RS03,\n" "images, support for stripping ECC from ISOs, re-enabled adaptive reading (except for RS03), and more.\n" "\n" -"Please refer to the Help > Change log menu for all the details.\n" -"The warning message from the pre-release version is retained below.\n" +"Please refer to the Help > Change log menu for all the details." msgstr "" -#: src/welcome-window.c:89 -msgid "" -"Please note:\n" -"This is a pre-release for expert users.\n" -"It may contain unfinished features.\n" -"Adaptive reading is unavailable in this version.\n" -"It will be re-introduced in one of the next releases." -msgstr "" - -#: src/welcome-window.c:97 +#: src/welcome-window.c:92 msgid "Show this message again" msgstr "Zobrazit i při příštím spuštění" -#: src/welcome-window.c:143 +#: src/welcome-window.c:138 msgid "Welcome to dvdisaster!" msgstr "Vítá vás dvdisaster!" -#: src/welcome-window.c:145 +#: src/welcome-window.c:140 msgid "" "\n" "dvdisaster creates error correction data to protect\n" "optical media (CD,DVD,BD) against data loss.\n" msgstr "" -#: src/welcome-window.c:148 +#: src/welcome-window.c:143 msgid "" "Please see the [manual] for typical uses of dvdisaster.\n" "\n" msgstr "" -#: src/welcome-window.c:151 +#: src/welcome-window.c:146 msgid "New in this Version:" msgstr "Novinky v této verzi:" +#~ msgid "windowtitle|Modifying dvdisaster" +#~ msgstr "Úpravy dvdisaster" + +#~ msgid "" +#~ "Modifying dvdisaster\n" +#~ "Your changes are not ours." +#~ msgstr "" +#~ "Úpravy dvdisaster\n" +#~ "Vaše úpravy nejsou naše." + +#~ msgid "Copyright 2004-2017 Carsten Gnoerlich" +#~ msgstr "" +#~ "Copyright 2004-2017 Carsten Gnörlich\n" +#~ "Česká lokalizace\n" +#~ "\t\t2011 Jindřich Šesták\n" +#~ "\t\t2006 Luboš Staněk" + +#~ msgid "" +#~ "\n" +#~ "e-mail: carsten@dvdisaster.org -or- cgnoerlich@fsfe.org" +#~ msgstr "" +#~ "\n" +#~ "e-mail: carsten@dvdisaster.org -nebo- cgnoerlich@fsfe.org" + +#~ msgid "Read position: %3d.%1d%% (%4.1fx)" +#~ msgstr "Pozice čtení: %3d.%1d%% (%4.1fx)" + +#~ msgid "" +#~ "%d sectors missing at the end of the disc.\n" +#~ "This is okay if the CD was written in TAO (track at once) mode.\n" +#~ "The Image will be truncated accordingly. See the manual for details.\n" +#~ msgstr "" +#~ "Na konci disku chybí %d sektorů.\n" +#~ "To je v pořádku, pokud bylo CD zapsáno v režimu TAO (track at once).\n" +#~ "Bitová kopie bude příslušně zkrácena. Další podrobnosti najdete v příručce.\n" + +#~ msgid "" +#~ "%d sectors missing at the end of the disc.\n" +#~ "This is okay if the CD was written in TAO (track at once) mode.\n" +#~ "The Image will be truncated accordingly. See the manual for details.\n" +#~ "Use the --dao option to disable image truncating.\n" +#~ msgstr "" +#~ "Na konci disku chybí %d sektorů.\n" +#~ "To je v pořádku, pokud bylo CD zapsáno v režimu TAO (track at once).\n" +#~ "Bitová kopie bude příslušně zkrácena. Další podrobnosti najdete v příručce.\n" +#~ "Zkrácení bitové kopie můžete zakázat použitím parametru --dao.\n" + +#~ msgid "" +#~ "* requires : dvdisaster-%d.%d (BAD)\n" +#~ "* Warning : The following output might be incorrect.\n" +#~ "* : Please visit http://www.dvdisaster.org for an upgrade.\n" +#~ msgstr "" +#~ "* vyžaduje : dvdisaster-%d.%d (ŠPATNĚ)\n" +#~ "* Upozornění : Následující výstup nemusí být správný.\n" +#~ "* : Pro aktualizaci navštivte http://www.dvdisaster.org.\n" + +#~ msgid "" +#~ "* requires : dvdisaster-%s (BAD)\n" +#~ "* Warning : The following output might be incorrect.\n" +#~ "* : Please visit http://www.dvdisaster.org for an upgrade.\n" +#~ msgstr "" +#~ "* vyžaduje : dvdisaster-%s (ŠPATNĚ)\n" +#~ "* Upozornění : Následující výstup nemusí být správný.\n" +#~ "* : Pro aktualizaci navštivte http://www.dvdisaster.org.\n" + +#~ msgid "windowtitle|Choose a browser" +#~ msgstr "Vybrat prohlížeč" + +#~ msgid "windowtitle|Browser required" +#~ msgstr "Vyžadován prohlížeč" + +#~ msgid "" +#~ "Could not find a suitable browser.\n" +#~ "\n" +#~ "Which browser would you like to use\n" +#~ "for reading the online documentation?\n" +#~ "\n" +#~ "Please enter its name (e.g. mozilla) or\n" +#~ "use the \"Search\" button for a file dialog.\n" +#~ msgstr "" +#~ "Nebyl nalezen vyhovující prohlížeč.\n" +#~ "\n" +#~ "Který prohlížeč chcete použít\n" +#~ "ke čtení online dokumentace?\n" +#~ "\n" +#~ "Zadejte jeho název (např. mozilla) nebo použijte\n" +#~ "tlačítko \"Procházet\" a vyberte příslušný soubor.\n" + +#~ msgid "Search" +#~ msgstr "Procházet" + +#~ msgid "Please hang on until the browser comes up!" +#~ msgstr "Počkejte na spuštění prohlížeče!" + #~ msgid "" #~ "\n" #~ "Common usage examples:\n" @@ -7002,63 +7037,6 @@ msgstr "Novinky v této verzi:" #~ msgid "This software does not support encrypted media.\n" #~ msgstr "Tento program nepodporuje zašifrované disky.\n" -#~ msgid "Copyright 2004-2018 Carsten Gnoerlich" -#~ msgstr "" -#~ "Copyright 2004-2018 Carsten Gnörlich\n" -#~ "Česká lokalizace\n" -#~ "\t\t2011 Jindřich Šesták\n" -#~ "\t\t2006 Luboš Staněk" - -#~ msgid "windowtitle|Modifying dvdisaster" -#~ msgstr "Úpravy dvdisaster" - -#~ msgid "" -#~ "Modifying dvdisaster\n" -#~ "Your changes are not ours." -#~ msgstr "" -#~ "Úpravy dvdisaster\n" -#~ "Vaše úpravy nejsou naše." - -#~ msgid "" -#~ "Modified version Copyright 2018 (please fill in - [directions])\n" -#~ "Copyright 2004-2018 Carsten Gnoerlich" -#~ msgstr "" -#~ "Upravená verze Copyright 2018 (doplňte - [directions])\n" -#~ "Copyright 2004-2018 Carsten Gnörlich" - -#~ msgid "" -#~ "* requires : dvdisaster-%d.%d (BAD)\n" -#~ "* Warning : The following output might be incorrect.\n" -#~ "* : Please visit http://www.dvdisaster.org for an upgrade.\n" -#~ msgstr "" -#~ "* vyžaduje : dvdisaster-%d.%d (ŠPATNĚ)\n" -#~ "* Upozornění : Následující výstup nemusí být správný.\n" -#~ "* : Pro aktualizaci navštivte http://www.dvdisaster.org.\n" - -#~ msgid "" -#~ "* requires : dvdisaster-%s (BAD)\n" -#~ "* Warning : The following output might be incorrect.\n" -#~ "* : Please visit http://www.dvdisaster.org for an upgrade.\n" -#~ msgstr "" -#~ "* vyžaduje : dvdisaster-%s (ŠPATNĚ)\n" -#~ "* Upozornění : Následující výstup nemusí být správný.\n" -#~ "* : Pro aktualizaci navštivte http://www.dvdisaster.org.\n" - -#~ msgid "" -#~ "\n" -#~ "This program is not the original. It is based on the\n" -#~ "source code of dvdisaster, but contains third-party changes.\n" -#~ "\n" -#~ "Please do not bother the original authors of dvdisaster\n" -#~ "([www.dvdisaster.org]) about issues with this version.\n" -#~ msgstr "" -#~ "\n" -#~ "Tento program není originál. Je založen na zdrojovém\n" -#~ "kódu dvdisaster, ale obsahuje úpravy třetí strany.\n" -#~ "\n" -#~ "Prosím neobtěžujte originální autory dvdisaster\n" -#~ "([www.dvdisaster.org]) problémy s touto verzí.\n" - #~ msgid "created by dvdisaster-%d.%d\n" #~ msgstr "vytvořeno pomocí dvdisaster-%d.%d\n" diff --git a/locale/de.po b/locale/de.po index 62acf31..2d7a81c 100644 --- a/locale/de.po +++ b/locale/de.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: dvdisaster 0.52.1\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-06-27 23:00+0200\n" +"POT-Creation-Date: 2021-10-09 14:18+0200\n" "PO-Revision-Date: 2004-11-30 19:48+0100\n" "Last-Translator: Carsten Gnörlich \n" "Language-Team: German \n" @@ -18,7 +18,7 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: src/closure.c:391 +#: src/closure.c:296 #, c-format msgid "" "# dvdisaster-%s configuration file\n" @@ -31,24 +31,24 @@ msgstr "" "# Sie wird bei jedem Aufruf von dvdisaster neu überschrieben.\n" "\n" -#: src/closure.c:613 +#: src/closure.c:564 msgid "medium.iso" msgstr "abbild.iso" -#: src/closure.c:614 +#: src/closure.c:565 msgid "medium.ecc" msgstr "abbild.ecc" -#: src/closure.c:615 +#: src/closure.c:566 msgid "sector-" msgstr "sektor_" -#: src/debug.c:56 src/debug.c:155 src/debug.c:293 +#: src/debug.c:58 src/debug.c:157 src/debug.c:295 #, c-format msgid "Number of erasures must be > 0 and <= %d\n" msgstr "Die Anzahl von Auslöschungen muß > 0 und <= %d sein\n" -#: src/debug.c:70 src/debug.c:160 +#: src/debug.c:72 src/debug.c:162 #, c-format msgid "" "\n" @@ -57,34 +57,34 @@ msgstr "" "\n" "Erzeuge zufällige reparierbare Auslöschungen (%s; für %d Nullstellen, max. %d Auslöschungen).\n" -#: src/debug.c:103 src/debug.c:191 src/debug.c:239 src/debug.c:363 -#: src/debug.c:707 src/debug.c:807 src/debug.c:850 src/debug.c:1181 -#: src/debug.c:1189 src/debug.c:1266 src/rs01-common.c:175 -#: src/rs02-common.c:239 src/rs02-create.c:377 src/rs02-create.c:1032 -#: src/rs02-fix.c:414 src/rs02-verify.c:404 src/rs03-common.c:340 -#: src/rs03-create.c:756 src/rs03-create.c:781 +#: src/debug.c:105 src/debug.c:193 src/debug.c:241 src/debug.c:365 +#: src/debug.c:708 src/debug.c:808 src/debug.c:851 src/debug.c:1182 +#: src/debug.c:1190 src/debug.c:1267 src/rs01-common.c:177 +#: src/rs02-common.c:241 src/rs02-create.c:347 src/rs02-create.c:990 +#: src/rs02-fix.c:381 src/rs02-verify.c:398 src/rs03-common.c:341 +#: src/rs03-create.c:729 src/rs03-create.c:754 #, c-format msgid "Failed seeking to sector % in image: %s" msgstr "Ansteuern von Sektor % im Abbild fehlgeschlagen: %s" -#: src/debug.c:111 src/debug.c:196 src/debug.c:243 src/debug.c:368 -#: src/debug.c:545 src/debug.c:662 src/debug.c:713 src/debug.c:1193 -#: src/debug.c:1270 src/debug.c:1310 src/rs02-create.c:400 -#: src/rs02-create.c:426 src/rs02-create.c:1035 src/rs03-create.c:761 -#: src/rs03-create.c:785 src/udf.c:830 src/udf.c:888 src/udf.c:945 -#: src/udf.c:958 src/udf.c:963 src/udf.c:966 src/udf.c:969 src/udf.c:972 -#: src/udf.c:975 src/udf.c:978 +#: src/debug.c:113 src/debug.c:198 src/debug.c:245 src/debug.c:370 +#: src/debug.c:546 src/debug.c:663 src/debug.c:714 src/debug.c:1194 +#: src/debug.c:1271 src/debug.c:1311 src/rs02-create.c:370 +#: src/rs02-create.c:396 src/rs02-create.c:993 src/rs03-create.c:734 +#: src/rs03-create.c:758 src/udf.c:831 src/udf.c:889 src/udf.c:946 +#: src/udf.c:959 src/udf.c:964 src/udf.c:967 src/udf.c:970 src/udf.c:973 +#: src/udf.c:976 src/udf.c:979 #, c-format msgid "Failed writing to sector % in image: %s" msgstr "Schreiben von Sektor % im Abbild fehlgeschlagen: %s" -#: src/debug.c:119 src/debug.c:249 src/debug.c:374 src/debug.c:666 -#: src/debug.c:720 src/debug.c:1284 +#: src/debug.c:121 src/debug.c:251 src/debug.c:376 src/debug.c:667 +#: src/debug.c:721 src/debug.c:1285 #, c-format msgid "Progress: %3d%%" msgstr "Fortschritt: %3d%%" -#: src/debug.c:124 src/debug.c:254 src/debug.c:379 +#: src/debug.c:126 src/debug.c:256 src/debug.c:381 #, c-format msgid "" "Progress: 100%%\n" @@ -96,7 +96,7 @@ msgstr "" "erneut anwenden. Anderenfalls werden >= %d Auslöschungen pro ECC-Bereich\n" "erzeugt und das Abbild kann nicht mehr wiederhergestellt werden.\n" -#: src/debug.c:299 +#: src/debug.c:301 #, c-format msgid "" "\n" @@ -105,7 +105,7 @@ msgstr "" "\n" "RS03-Fehlerkorrektur-Datei mit %d Nullstellen.\n" -#: src/debug.c:300 +#: src/debug.c:302 #, c-format msgid "" "\n" @@ -114,18 +114,18 @@ msgstr "" "\n" "Mit RS03 erweitertes Abbild mit %d Nullstellen.\n" -#: src/debug.c:301 +#: src/debug.c:303 #, c-format msgid "Generating at most %d random correctable erasures.\n" msgstr "Erzeuge höchstens %d zufällige korrigierbare Auslöschungen.\n" -#: src/debug.c:443 src/debug.c:501 src/debug.c:565 src/debug.c:606 -#: src/debug.c:689 src/debug.c:795 src/debug.c:836 src/debug.c:882 -#: src/debug.c:936 src/debug.c:1161 src/debug.c:1169 src/debug.c:1225 -#: src/debug.c:1230 src/misc.c:1393 src/raw-editor.c:364 src/read-adaptive.c:73 -#: src/read-adaptive.c:93 src/read-adaptive.c:1552 src/read-adaptive.c:1588 -#: src/read-linear.c:289 src/read-linear.c:291 src/read-linear.c:327 -#: src/read-linear.c:329 src/rs01-create.c:303 src/rs03-create.c:1352 +#: src/debug.c:445 src/debug.c:503 src/debug.c:566 src/debug.c:607 +#: src/debug.c:690 src/debug.c:796 src/debug.c:837 src/debug.c:883 +#: src/debug.c:937 src/debug.c:1162 src/debug.c:1170 src/debug.c:1226 +#: src/debug.c:1231 src/misc.c:763 src/raw-editor.c:366 src/read-adaptive.c:75 +#: src/read-adaptive.c:95 src/read-adaptive.c:1471 src/read-adaptive.c:1501 +#: src/read-linear.c:273 src/read-linear.c:275 src/read-linear.c:306 +#: src/read-linear.c:308 src/rs01-create.c:279 src/rs03-create.c:1308 #, c-format msgid "" "Can't open %s:\n" @@ -134,74 +134,74 @@ msgstr "" "Kann %s nicht öffnen:\n" "%s" -#: src/debug.c:448 src/debug.c:1140 src/debug.c:1216 +#: src/debug.c:450 src/debug.c:1141 src/debug.c:1217 msgid "2nd argument is missing" msgstr "Das zweite Argument fehlt" -#: src/debug.c:455 src/debug.c:1146 +#: src/debug.c:457 src/debug.c:1147 msgid "3rd argument is missing" msgstr "Das dritte Argument fehlt" -#: src/debug.c:462 src/debug.c:802 src/debug.c:843 src/debug.c:891 -#: src/debug.c:954 +#: src/debug.c:464 src/debug.c:803 src/debug.c:844 src/debug.c:892 +#: src/debug.c:955 #, c-format msgid "Sector must be in range [0..%]\n" msgstr "Sektor muß im Bereich [0..%] liegen\n" -#: src/debug.c:465 +#: src/debug.c:467 msgid "Byte position must be in range [0..2047]" msgstr "Byte-Position muß im Bereich [0..2047] liegen" -#: src/debug.c:468 +#: src/debug.c:470 msgid "Byte value must be in range [0..255]" msgstr "Byte muß einen Wert von [0..255] haben" -#: src/debug.c:470 +#: src/debug.c:472 #, c-format msgid "Setting byte %d in sector % to value %d.\n" msgstr "Setze Byte %d in Sektor % auf den Wert %d.\n" -#: src/debug.c:477 src/debug.c:531 src/debug.c:694 src/rs02-create.c:210 -#: src/rs02-verify.c:719 src/rs03-verify.c:1073 +#: src/debug.c:479 src/debug.c:532 src/debug.c:695 src/rs02-create.c:194 +#: src/rs02-verify.c:698 src/rs03-verify.c:990 #, c-format msgid "Failed seeking to start of image: %s\n" msgstr "Ansteuern des Abbild-Anfangs fehlgeschlagen: %s\n" -#: src/debug.c:481 +#: src/debug.c:483 msgid "Could not write the new byte value" msgstr "Konnte den neuen Byte-Wert nicht schreiben" -#: src/debug.c:524 src/read-adaptive.c:830 +#: src/debug.c:525 src/read-adaptive.c:805 #, c-format msgid "Sectors must be in range [0..%].\n" msgstr "Sektoren müssen im Intervall [0..%] liegen.\n" -#: src/debug.c:526 +#: src/debug.c:527 #, c-format msgid "Erasing sectors [%,%]\n" msgstr "Lösche Sektoren [%,%]\n" -#: src/debug.c:572 +#: src/debug.c:573 #, c-format msgid "New length must be in range [0..%].\n" msgstr "Neue Länge muß im Bereich [0..%] liegen.\n" -#: src/debug.c:574 src/misc.c:1404 +#: src/debug.c:575 src/misc.c:774 #, c-format msgid "Truncating image to % sectors.\n" msgstr "Verkürze das Abbild auf % Sektoren.\n" -#: src/debug.c:579 src/misc.c:1425 src/read-linear.c:1477 src/rs01-fix.c:230 -#: src/rs01-fix.c:253 src/rs01-fix.c:275 src/rs01-fix.c:315 -#: src/rs02-create.c:117 src/rs02-create.c:171 src/rs02-fix.c:268 -#: src/rs02-fix.c:288 src/rs02-fix.c:306 src/rs03-create.c:256 -#: src/rs03-create.c:345 src/rs03-fix.c:298 src/rs03-fix.c:337 -#: src/rs03-fix.c:359 src/rs03-fix.c:379 +#: src/debug.c:580 src/misc.c:795 src/read-linear.c:1458 src/rs01-fix.c:219 +#: src/rs01-fix.c:242 src/rs01-fix.c:259 src/rs01-fix.c:293 +#: src/rs02-create.c:107 src/rs02-create.c:155 src/rs02-fix.c:240 +#: src/rs02-fix.c:260 src/rs02-fix.c:274 src/rs03-create.c:246 +#: src/rs03-create.c:327 src/rs03-fix.c:268 src/rs03-fix.c:304 +#: src/rs03-fix.c:326 src/rs03-fix.c:342 #, c-format msgid "Could not truncate %s: %s\n" msgstr "Konnte %s nicht abschneiden: %s\n" -#: src/debug.c:610 +#: src/debug.c:611 #, c-format msgid "" "\n" @@ -220,8 +220,8 @@ msgstr "" "dvdisaster --debug %s % --random-seed %d\n" "\n" -#: src/debug.c:674 src/read-adaptive.c:382 src/read-linear.c:133 -#: src/read-linear.c:136 +#: src/debug.c:675 src/read-adaptive.c:382 src/read-linear.c:127 +#: src/read-linear.c:130 #, c-format msgid "" "Error closing image file:\n" @@ -230,11 +230,11 @@ msgstr "" "Fehler beim Schließen des Abbildes:\n" "%s" -#: src/debug.c:690 +#: src/debug.c:691 msgid "Replacing the \"unreadable sector\" markers with zeros.\n" msgstr "Ersetze die \"unlesbarer Sektor\"-Markierungen durch Nullen.\n" -#: src/debug.c:700 +#: src/debug.c:701 #, c-format msgid "" "Could not read image sector %:\n" @@ -243,20 +243,20 @@ msgstr "" "Konnte Abbild-Sektor % nicht lesen:\n" "%s\n" -#: src/debug.c:725 +#: src/debug.c:726 #, c-format msgid "% \"unreadable sector\" markers replaced.\n" msgstr "% \"unlesbarer Sektor\"-Markierungen ersetzt.\n" -#: src/debug.c:811 src/debug.c:854 src/debug.c:1185 src/debug.c:1252 -#: src/debug.c:1256 src/debug.c:1306 src/rs01-common.c:191 -#: src/rs02-common.c:244 src/rs02-create.c:229 src/rs02-fix.c:417 -#: src/rs03-common.c:345 +#: src/debug.c:812 src/debug.c:855 src/debug.c:1186 src/debug.c:1253 +#: src/debug.c:1257 src/debug.c:1307 src/rs01-common.c:193 +#: src/rs02-common.c:246 src/rs02-create.c:211 src/rs02-fix.c:384 +#: src/rs03-common.c:346 #, c-format msgid "Failed reading sector % in image: %s" msgstr "Lesen von Sektor % im Abbild fehlgeschlagen: %s" -#: src/debug.c:845 src/debug.c:894 src/debug.c:957 +#: src/debug.c:846 src/debug.c:895 src/debug.c:958 #, c-format msgid "" "Contents of sector %:\n" @@ -265,43 +265,43 @@ msgstr "" "Inhalt von Sektor %:\n" "\n" -#: src/debug.c:905 +#: src/debug.c:906 #, c-format msgid "Failed reading sector %: %s" msgstr "Lesen von Sektor % fehlgeschlagen: %s" -#: src/debug.c:944 +#: src/debug.c:945 msgid "Raw reading only possible on CD media\n" msgstr "\"Raw\"-Lesen ist nur mit CD-Datenträgern möglich\n" -#: src/debug.c:1152 +#: src/debug.c:1153 msgid "4th argument is missing" msgstr "Das vierte Argument fehlt" -#: src/debug.c:1165 +#: src/debug.c:1166 #, c-format msgid "Source sector must be in range [0..%]\n" msgstr "Quell-Sektor muß im Bereich [0..%] liegen\n" -#: src/debug.c:1173 +#: src/debug.c:1174 #, c-format msgid "Destination sector must be in range [0..%]\n" msgstr "Ziel-Sektor muß im Bereich [0..%] liegen\n" -#: src/debug.c:1177 +#: src/debug.c:1178 #, c-format msgid "Copying sector % from %s to sector % in %s.\n" msgstr "Kopiere Sektor % von %s in Sektor % von %s.\n" -#: src/ds-marker.c:267 +#: src/ds-marker.c:269 msgid "Stop reporting these errors" msgstr "Diese Fehler nicht mehr zeigen" -#: src/ds-marker.c:268 +#: src/ds-marker.c:270 msgid "Continue reporting" msgstr "Weiterhin zeigen" -#: src/ds-marker.c:302 +#: src/ds-marker.c:297 msgid "" "* ... more unrecoverable sectors found ...\n" "* further messages are suppressed unless the -v option is given.\n" @@ -309,7 +309,7 @@ msgstr "" "* ... mehr nicht wiederherstellbare Sektoren gefunden ...\n" "* weitere Ausgaben werden unterdrückt solange die Option -v nicht angegeben wird.\n" -#: src/ds-marker.c:318 +#: src/ds-marker.c:311 #, c-format msgid "" "\n" @@ -324,7 +324,7 @@ msgstr "" "%s\n" "\n" -#: src/ds-marker.c:321 +#: src/ds-marker.c:312 #, c-format msgid "" "\n" @@ -341,7 +341,7 @@ msgstr "" "* %s\n" "* " -#: src/ds-marker.c:331 +#: src/ds-marker.c:322 #, c-format msgid "" "Unrecoverable sector found!\n" @@ -371,7 +371,7 @@ msgstr "" "zu diesem Abbild Fehlerkorrektur-Daten zu erstellen - leider gibt\n" "es keine besseren Nachrichten.\n" -#: src/ds-marker.c:358 +#: src/ds-marker.c:345 #, c-format msgid "" "Unrecoverable sector found!\n" @@ -401,7 +401,7 @@ msgstr "" "zu diesem Abbild Fehlerkorrektur-Daten zu erstellen - leider gibt\n" "es keine besseren Nachrichten.\n" -#: src/ds-marker.c:388 +#: src/ds-marker.c:371 #, c-format msgid "" "Unrecoverable sector found!\n" @@ -429,7 +429,7 @@ msgstr "" "zu diesem Abbild Fehlerkorrektur-Daten zu erstellen - leider gibt\n" "es keine besseren Nachrichten.\n" -#: src/ds-marker.c:415 +#: src/ds-marker.c:394 #, c-format msgid "" "Unrecoverable sector found!\n" @@ -453,83 +453,83 @@ msgstr "" #. TRANSLATORS: #. This is a dummy entry which is supposed to translate into "ok". #. Please do not return anything else here. -#: src/dvdisaster.c:168 src/dvdisaster.c:180 +#: src/dvdisaster.c:170 src/dvdisaster.c:182 msgid "test phrase for verifying the locale installation" msgstr "ok" -#: src/dvdisaster.c:372 +#: src/dvdisaster.c:374 msgid "-o/--ecc-target expects 'file' or 'image'" msgstr "-o/--ecc-target erwartet 'file' oder 'image'" -#: src/dvdisaster.c:398 +#: src/dvdisaster.c:400 #, c-format msgid "--threads must be 1..%d\n" msgstr "--threads muß zwischen 1..%d liegen\n" -#: src/dvdisaster.c:415 +#: src/dvdisaster.c:417 msgid "--cache-size must at least be 8MiB; 16MiB or higher is recommended." msgstr "--cache-size muß mindestens 8MiB sein; 16MiB oder mehr werden empfohlen." -#: src/dvdisaster.c:417 +#: src/dvdisaster.c:419 #, c-format msgid "--cache-size maximum is %dMiB." msgstr "--cache-size: Größter zulässiger Wert ist %dMiB." -#: src/dvdisaster.c:440 +#: src/dvdisaster.c:442 msgid "--encoding-algorithm: SSE2 not supported on this processor!" msgstr "--encoding-algorithm: SSE2 wird von diesem Prozessor nicht unterstützt!" -#: src/dvdisaster.c:444 +#: src/dvdisaster.c:446 msgid "--encoding-algorithm: valid types are 32bit, 64bit, SSE2" msgstr "--encoding-algorithm: gültige Werte sind 32bit, 64bit, SSE2" -#: src/dvdisaster.c:451 +#: src/dvdisaster.c:453 msgid "--encoding-algorithm: AltiVec not supported on this processor!" msgstr "--encoding-algorithm: AltiVec wird von diesem Prozessor nicht unterstützt!" -#: src/dvdisaster.c:455 +#: src/dvdisaster.c:457 msgid "--encoding-algorithm: valid types are 32bit, 64bit, AltiVec" msgstr "--encoding-algorithm: gültige Werte sind 32bit, 64bit, AltiVec" -#: src/dvdisaster.c:458 +#: src/dvdisaster.c:460 msgid "--encoding-algorithm: valid types are 32bit, 64bit" msgstr "--encoding-algorithm: gültige Werte sind 32bit, 64bit" -#: src/dvdisaster.c:467 +#: src/dvdisaster.c:469 msgid "--encoding-io-strategy: mmap not supported on this OS" msgstr "--encoding-io-strategy: mmap wird für dieses Betriebssystem nicht unterstützt" -#: src/dvdisaster.c:471 +#: src/dvdisaster.c:473 msgid "--encoding-io-strategy: valid types are readwrite and mmap" msgstr "--encoding-io-strategy: gültige Werte sind readwrite und mmap" -#: src/dvdisaster.c:481 +#: src/dvdisaster.c:483 msgid "Valid args for --driver: sg,cdrom" msgstr "Zulässige Werte für --driver: sg,cdrom" -#: src/dvdisaster.c:483 +#: src/dvdisaster.c:485 msgid "--driver is only supported on GNU/Linux" msgstr "--driver wird nur unter GNU/Linux unterstützt" -#: src/dvdisaster.c:497 +#: src/dvdisaster.c:499 msgid "--fixed-speed-values is only allowed in debug mode" msgstr "--fixed-speed-values ist nur im Debugging-Modus erlaubt" -#: src/dvdisaster.c:552 +#: src/dvdisaster.c:554 #, c-format msgid "--prefetch-sectors must be in range 32...%d" msgstr "" -#: src/dvdisaster.c:606 +#: src/dvdisaster.c:608 msgid "--set-version is only allowed in debug mode" msgstr "--set-version ist nur im Debugging-Modus erlaubt" -#: src/dvdisaster.c:713 +#: src/dvdisaster.c:715 #, c-format msgid "?? illegal getopt return value %d\n" msgstr "?? ungültiger Rückgabewert von getopt: %d\n" -#: src/dvdisaster.c:806 src/main-window.c:149 +#: src/dvdisaster.c:808 src/main-window.c:153 #, c-format msgid "" "\n" @@ -540,8 +540,8 @@ msgstr "" "Das Verfahren %s ist nicht vorhanden.\n" "Verwenden Sie -m ohne Parameter um eine Liste zu erhalten.\n" -#: src/dvdisaster.c:817 src/rs01-create.c:285 src/rs02-create.c:1075 -#: src/rs03-create.c:1320 +#: src/dvdisaster.c:819 src/rs01-create.c:261 src/rs02-create.c:1031 +#: src/rs03-create.c:1276 #, c-format msgid "" "\n" @@ -550,25 +550,25 @@ msgstr "" "\n" "Öffne %s" -#: src/dvdisaster.c:824 src/rs01-create.c:294 src/rs02-create.c:175 -#: src/rs02-create.c:1085 src/rs03-create.c:349 src/rs03-create.c:1335 +#: src/dvdisaster.c:826 src/rs01-create.c:270 src/rs02-create.c:159 +#: src/rs02-create.c:1041 src/rs03-create.c:331 src/rs03-create.c:1291 #, c-format msgid ": % medium sectors.\n" msgstr ": % Datenträger-Sektoren.\n" -#: src/dvdisaster.c:825 src/rs01-create.c:295 src/rs02-create.c:176 -#: src/rs02-create.c:1086 src/rs03-create.c:350 src/rs03-create.c:1336 +#: src/dvdisaster.c:827 src/rs01-create.c:271 src/rs02-create.c:160 +#: src/rs02-create.c:1042 src/rs03-create.c:332 src/rs03-create.c:1292 #, c-format msgid ": % medium sectors and %d bytes.\n" msgstr ": % Datenträger-Sektoren und %d Bytes.\n" -#: src/dvdisaster.c:852 src/main-window.c:212 +#: src/dvdisaster.c:854 src/main-window.c:216 msgid "RS01 method not available for comparing files." msgstr "RS01-Methode zum Überprüfen der Dateien nicht verfügbar." #. TRANSLATORS: Program options like -r and --read are not to be translated #. to avoid confusion when discussing the program in international forums. -#: src/dvdisaster.c:950 +#: src/dvdisaster.c:952 msgid "" "\n" "Common usage examples:\n" @@ -594,7 +594,7 @@ msgstr "" " dvdisaster -u,--unlink # Löscht .iso - Dateien nach Beenden der vorherigen Aktionen.\n" "\n" -#: src/dvdisaster.c:960 +#: src/dvdisaster.c:962 #, c-format msgid "" "Drive and file specification:\n" @@ -611,23 +611,23 @@ msgstr "" " -e,--ecc Name - Name der Fehlerkorrektur-Datei (Standard: medium.ecc)\n" " -o,--ecc-target [file image] - Ablageziel für Fehlerkorrektur-Daten in RS03\n" -#: src/dvdisaster.c:970 +#: src/dvdisaster.c:972 msgid "Tweaking options (see manual before using!)\n" msgstr "Feineinstellung (Beachten Sie die Hinweise in der Dokumentation!):\n" -#: src/dvdisaster.c:971 +#: src/dvdisaster.c:973 msgid " -a,--assume x,y,... - assume image is augmented with codec(s) x,y,...\n" msgstr " -a,--assume x,y,... - Nimm an daß das Abbild mit Kodierer(n) x,y,... erweitert wurde\n" -#: src/dvdisaster.c:972 +#: src/dvdisaster.c:974 msgid " -j,--jump n - jump n sectors forward after a read error (default: 16)\n" msgstr " -j,--jump n - überspringe n Sektoren nach einem Lesefehler (Standard: 16)\n" -#: src/dvdisaster.c:973 +#: src/dvdisaster.c:975 msgid " -m n - list/select error correction methods (default: RS01)\n" msgstr " -m n - Fehlerkorrektur-Methoden anzeigen/auswählen (Standard: RS01)\n" -#: src/dvdisaster.c:974 +#: src/dvdisaster.c:976 #, c-format msgid "" " -n,--redundancy n%% - error correction data redundancy\n" @@ -636,266 +636,270 @@ msgstr "" " -n,--redundancy n%% - Redundanz der Fehlerkorrektur-Daten\n" " zulässige Werte hängen vom Kodierer ab (siehe Dokumentation)\n" -#: src/dvdisaster.c:976 +#: src/dvdisaster.c:978 msgid " -v,--verbose - more diagnostic messages\n" msgstr " -v,--verbose - mehr erläuternde Ausgaben\n" -#: src/dvdisaster.c:977 +#: src/dvdisaster.c:979 msgid " -x,--threads n - use n threads for en-/decoding (if supported by codec)\n" msgstr " -x,--threads n - verwende n Kontrollfäden für RS03-(De-)Kodierung\n" -#: src/dvdisaster.c:978 +#: src/dvdisaster.c:980 msgid " --adaptive-read - use optimized strategy for reading damaged media\n" msgstr " --adaptive-read - verwende optimiertes Leseverfahren für defekte Datenträger\n" -#: src/dvdisaster.c:979 +#: src/dvdisaster.c:981 msgid " --auto-suffix - automatically add .iso and .ecc file suffixes\n" msgstr " --auto-suffix - automatisches Anfügen der .iso- und .ecc-Dateiendungen\n" -#: src/dvdisaster.c:980 +#: src/dvdisaster.c:982 msgid " --cache-size n - image cache size in MiB during -c mode (default: 32MiB)\n" msgstr " --cache-size n - Zwischenspeicher in MiB bei .ecc-Datei-Erzeugung (Standard: 32MiB)\n" -#: src/dvdisaster.c:981 +#: src/dvdisaster.c:983 msgid " --dao - assume DAO disc; do not trim image end\n" msgstr " --dao - unterstelle DAO; Abbild am Ende nicht kürzen\n" -#: src/dvdisaster.c:982 +#: src/dvdisaster.c:984 msgid " --defective-dump d - directory for saving incomplete raw sectors\n" msgstr " --defective-dump d - Verzeichnis zum Speichern unvollständiger Roh-Sektoren\n" -#: src/dvdisaster.c:984 +#: src/dvdisaster.c:986 msgid " --driver=sg/cdrom - use sg(default) or alternative cdrom driver (see man page!)\n" msgstr " --driver=sg/cdrom - Verwende den sg-(Voreinstellung) oder den alternativen cdrom-Treiber (siehe Handbuch!)\n" -#: src/dvdisaster.c:986 +#: src/dvdisaster.c:988 msgid " --eject - eject medium after successful read\n" msgstr " --eject - Datenträger nach erfolgreichem Lesen auswerfen\n" -#: src/dvdisaster.c:987 +#: src/dvdisaster.c:989 msgid " --encoding-algorithm n - possible values: 32bit,64bit,SSE2,AltiVec\n" msgstr " --encoding-algorithm n - mögliche Werte: 32bit,64bit,SSE2,AltiVec\n" -#: src/dvdisaster.c:988 +#: src/dvdisaster.c:990 msgid " --encoding-io-strategy n - possible values: readwrite, mmap\n" msgstr " --encoding-io-strategy n - mögliche Werte: readwrite, mmap\n" -#: src/dvdisaster.c:989 +#: src/dvdisaster.c:991 msgid " --fill-unreadable n - fill unreadable sectors with byte n\n" msgstr " --fill-unreadable n - fülle unlesbare Sektoren mit Byte n\n" -#: src/dvdisaster.c:990 +#: src/dvdisaster.c:992 msgid " --ignore-fatal-sense - continue reading after potentially fatal error conditon\n" msgstr " --ignore-fatal-sense - Lesen nach möglicherweise schwerwiegenden Fehlern fortsetzen\n" -#: src/dvdisaster.c:991 +#: src/dvdisaster.c:993 msgid " --ignore-iso-size - ignore image size from ISO/UDF data (dangerous - see man page!)\n" msgstr " --ignore-iso-size - Abbildgröße aus ISO/UDF-Daten nicht verwenden (gefährlich - siehe Handbuch!)\n" -#: src/dvdisaster.c:992 +#: src/dvdisaster.c:994 msgid " --internal-rereads n - drive may attempt n rereads before reporting an error\n" msgstr " --internal-rereads n - Laufwerk unternimmt n Leseversuche bevor es einen Fehler zurückmeldet\n" -#: src/dvdisaster.c:993 +#: src/dvdisaster.c:995 msgid " --medium-info - print info about medium in drive\n" msgstr " --medium-info - Information über eingelegten Datenträger ausgeben\n" -#: src/dvdisaster.c:994 +#: src/dvdisaster.c:996 msgid " --no-bdr-defect-management - use bigger RS03 images for BD-R (see man page!)\n" msgstr "" -#: src/dvdisaster.c:995 +#: src/dvdisaster.c:997 msgid " --no-progress - do not print progress information\n" msgstr " --no-progress - keine Fortschrittsanzeige ausgeben\n" -#: src/dvdisaster.c:996 +#: src/dvdisaster.c:998 msgid " --old-ds-marker - mark missing sectors compatible with dvdisaster <= 0.70\n" msgstr " --old-ds-marker - markiere fehlende Sektoren kompatibel mit dvdisaster <= 0.70\n" -#: src/dvdisaster.c:997 +#: src/dvdisaster.c:999 msgid " --prefetch-sectors n - prefetch n sectors for RS03 encoding (uses ~nMiB)\n" msgstr " --prefetch-sectors n - n Sektoren für RS03-Kodierung im Voraus laden (braucht ~nMiB)\n" -#: src/dvdisaster.c:998 +#: src/dvdisaster.c:1000 msgid " --raw-mode n - mode for raw reading CD media (20 or 21)\n" msgstr " --raw-mode n - \"raw-modus\" zum Lesen von CD (20 or 21)\n" -#: src/dvdisaster.c:999 +#: src/dvdisaster.c:1001 msgid " --read-attempts n-m - attempts n up to m reads of a defective sector\n" msgstr " --read-attempts n-m - versucht beschädigten Sektor n bis m-mal zu lesen\n" -#: src/dvdisaster.c:1000 +#: src/dvdisaster.c:1002 msgid " --read-medium n - read the whole medium up to n times\n" msgstr " --read-medium n - liest den gesamten Datenträger bis zu n-mal\n" -#: src/dvdisaster.c:1001 +#: src/dvdisaster.c:1003 msgid " --read-raw - performs read in raw mode if possible\n" msgstr " --read-raw - liest in der \"raw\"-Betriebsart sofern möglich\n" -#: src/dvdisaster.c:1002 +#: src/dvdisaster.c:1004 msgid " --regtest - tweaks output for compatibility with regtests\n" msgstr "" -#: src/dvdisaster.c:1003 +#: src/dvdisaster.c:1005 msgid " --resource-file p - get resource file from given path\n" msgstr " --resource-file p - verwendet die Konfigurationdatei aus dem angegebenen Pfad\n" -#: src/dvdisaster.c:1004 +#: src/dvdisaster.c:1006 msgid " --speed-warning n - print warning if speed changes by more than n percent\n" msgstr " --speed-warning n - warnt bei Geschwindigkeitsänderung um mehr als n Prozent\n" -#: src/dvdisaster.c:1005 +#: src/dvdisaster.c:1007 msgid " --spinup-delay n - wait n seconds for drive to spin up\n" msgstr " --spinup-delay n - gibt dem Laufwerk n Sekunden Zeit zum Hochlaufen\n" -#: src/dvdisaster.c:1009 -msgid "Debugging options (purposefully undocumented and possibly harmful)\n" -msgstr "Optionen zum Testen (absichtlich undokumentiert und möglicherweise schädlich!)\n" - -#: src/dvdisaster.c:1010 -msgid " --debug - enables the following options\n" -msgstr " --debug - schaltet die folgenden Optionen frei\n" - -#: src/dvdisaster.c:1011 -msgid " --permissive-medium-type - allow more media types, even theoretically unsupported ones\n" +#: src/dvdisaster.c:1008 +msgid " --version - print version and some configuration info\n" msgstr "" #: src/dvdisaster.c:1012 +msgid "Debugging options (purposefully undocumented and possibly harmful)\n" +msgstr "Optionen zum Testen (absichtlich undokumentiert und möglicherweise schädlich!)\n" + +#: src/dvdisaster.c:1013 +msgid " --debug - enables the following options\n" +msgstr " --debug - schaltet die folgenden Optionen frei\n" + +#: src/dvdisaster.c:1014 +msgid " --permissive-medium-type - allow more media types, even theoretically unsupported ones\n" +msgstr "" + +#: src/dvdisaster.c:1015 msgid " --byteset s,i,b - set byte i in sector s to b\n" msgstr " --byteset s,i,b - setze Byte i in Sektor s auf Wert b\n" -#: src/dvdisaster.c:1013 +#: src/dvdisaster.c:1016 msgid " --cdump - creates C #include file dumps instead of hexdumps\n" msgstr " --cdump - Erzeugt C-Include-Dateien anstelle von hexadezimalen Ausgaben\n" -#: src/dvdisaster.c:1014 +#: src/dvdisaster.c:1017 msgid " --compare-images a,b - compare sectors in images a and b\n" msgstr " --compare-images a,b - Vergleicht Sektoren in den Abbildern a und b\n" -#: src/dvdisaster.c:1015 +#: src/dvdisaster.c:1018 msgid " --copy-sector a,n,b,m - copy sector n from image a to sector m in image b\n" msgstr " --copy-sector a,n,b,m - Kopiert Sektor n aus Abbild a in Sektor m von Abbild b\n" -#: src/dvdisaster.c:1016 +#: src/dvdisaster.c:1019 msgid " --erase sector - erase the given sector\n" msgstr " --erase sector - Löscht den angegebenen Sektor\n" -#: src/dvdisaster.c:1017 +#: src/dvdisaster.c:1020 msgid " --erase n-m - erase sectors n - m, inclusively\n" msgstr " --erase n-m - Löscht die Sektoren n - m (einschließlich n,m)\n" -#: src/dvdisaster.c:1018 +#: src/dvdisaster.c:1021 msgid " --examine-rs02 - force RS02 exhaustive search\n" msgstr "" -#: src/dvdisaster.c:1019 +#: src/dvdisaster.c:1022 msgid " --examine-rs03 - force RS03 exhaustive search\n" msgstr "" -#: src/dvdisaster.c:1020 +#: src/dvdisaster.c:1023 msgid " --fixed-speed-values - output fixed speed values for better output diffing\n" msgstr " --fixed-speed-values - feste Geschwindigkeitswerte zur besseren Bearbeitung der Ausgabe\n" -#: src/dvdisaster.c:1021 +#: src/dvdisaster.c:1024 msgid " --ignore-rs03-header - ignore RS03 header when repairing (forcing a full search)\n" msgstr "" -#: src/dvdisaster.c:1022 +#: src/dvdisaster.c:1025 msgid " --marked-image n - create image with n marked random sectors\n" msgstr " --marked-image n - Erzeugt Abbild mit n markierten Sektoren aus Zufallszahlen\n" -#: src/dvdisaster.c:1023 +#: src/dvdisaster.c:1026 msgid " --merge-images a,b merge image a with b (a receives sectors from b)\n" msgstr " --merge-images a,b Vereinigt Abbild a mit b (a erhält Sektoren aus b)\n" -#: src/dvdisaster.c:1024 +#: src/dvdisaster.c:1027 msgid " --random-errors e - seed image with (correctable) random errors\n" msgstr " --random-errors e - Füllt Abbild mit zufälligen reparierbaren Fehlern\n" -#: src/dvdisaster.c:1025 +#: src/dvdisaster.c:1028 msgid " --random-image n - create image with n sectors of random numbers\n" msgstr " --random-image n - Erzeugt Abbild mit n Sektoren aus Zufallszahlen\n" -#: src/dvdisaster.c:1026 +#: src/dvdisaster.c:1029 msgid " --random-seed n - random seed for built-in random number generator\n" msgstr " --random-seed n - Anfangswert für den eingebauten Zufallszahlengenerator\n" -#: src/dvdisaster.c:1027 +#: src/dvdisaster.c:1030 msgid " --raw-sector n - shows hexdump of the given raw sector from medium in drive\n" msgstr " --raw-sector n - Zeigt hexadezimale Darstellung eines Roh-Sektors vom Datenträger\n" -#: src/dvdisaster.c:1028 +#: src/dvdisaster.c:1031 msgid " --read-sector n - shows hexdump of the given sector from medium in drive\n" msgstr " --read-sector n - Zeigt hexadezimale Darstellung des Inhalts eines Sektors vom Datenträger\n" -#: src/dvdisaster.c:1029 +#: src/dvdisaster.c:1032 msgid " --screen-shot - useful for generating screen shots\n" msgstr " --screen-shot - nützlich um Bildschirmfotos zu erzeugen\n" -#: src/dvdisaster.c:1030 +#: src/dvdisaster.c:1033 msgid " --send-cdb arg - executes given cdb at drive; kills system if used wrong\n" msgstr " --send-cdb arg - führt cdb im Laufwerk aus; kann bei Fehleingabe Systemabsturz erzeugen\n" -#: src/dvdisaster.c:1031 +#: src/dvdisaster.c:1034 msgid " --set-version - set program version for debugging purposes (dangerous!)\n" msgstr " --set-version - Programmversion für Debugging-Zwecke setzen (gefährlich!)\n" -#: src/dvdisaster.c:1032 +#: src/dvdisaster.c:1035 msgid " --show-header n - assumes given sector is a ecc header and prints it\n" msgstr " --show-header n - betrachtet den angegebenen Sektor als Ecc-Vorspann und gibt ihn aus\n" -#: src/dvdisaster.c:1033 +#: src/dvdisaster.c:1036 msgid " --show-sector n - shows hexdump of the given sector in an image file\n" msgstr " --show-sector n - Zeigt hexadezimale Darstellung des Sektor-Inhalts einer Abbild-Datei\n" -#: src/dvdisaster.c:1034 +#: src/dvdisaster.c:1037 msgid " --sim-cd image - simulate a SCSI-Level CD with contents supplied by the ISO image\n" msgstr " --sim-cd image - CD auf SCSI-Ebene simulieren mit dem Inhalt eines ISO-Abbilds\n" -#: src/dvdisaster.c:1035 +#: src/dvdisaster.c:1038 #, c-format msgid " --sim-defects n - simulate n%% defective sectors on medium\n" msgstr " --sim-defects n - simuliere n%% beschädigte Sektoren auf dem Datenträger\n" -#: src/dvdisaster.c:1036 +#: src/dvdisaster.c:1039 msgid " --truncate n - truncates image to n sectors\n" msgstr " --truncate n - Verkürzt Abbild auf n Sektoren Länge\n" -#: src/dvdisaster.c:1037 +#: src/dvdisaster.c:1040 msgid "" " --zero-unreadable - replace the \"unreadable sector\" markers with zeros\n" "\n" msgstr " --zero-unreadable - Ersetzt die \"unlesbare Sektoren\"-Markierungen durch Nullen\n" -#: src/dvdisaster.c:1067 +#: src/dvdisaster.c:1070 msgid "Optical drive 52X FW 1.02" msgstr "Optisches LW 52X FW 1.02" -#: src/ecc-rs01.c:41 +#: src/ecc-rs01.c:43 msgid "Error correction file (RS01)" msgstr "Fehlerkorrektur-Datei (RS01)" -#: src/ecc-rs01.c:42 +#: src/ecc-rs01.c:44 msgid "Classic Reed-Solomon method based on polynomial arithmetic" msgstr "Klassisches Reed-Solomon-Verfahren basierend auf Polynomen" -#: src/ecc-rs02.c:42 +#: src/ecc-rs02.c:44 msgid "Augmented image (RS02)" msgstr "Erweitertes Abbild (RS02)" -#: src/ecc-rs02.c:43 +#: src/ecc-rs02.c:45 msgid "Reed-Solomon method with improved tolerance for defective ecc data" msgstr "Reed-Solomon-Verfahren mit verbesserter Robustheit gegen beschädigte ecc-Daten" -#: src/ecc-rs03.c:42 +#: src/ecc-rs03.c:44 msgid "Multithreaded RS codec (RS03)" msgstr "Mehrprozessor-fähiger RS-Kodierer (RS03)" -#: src/ecc-rs03.c:43 +#: src/ecc-rs03.c:45 msgid "Multithreaded Reed-Solomon codec for error correction files and augmented images" msgstr "Mehrprozessor-fähiger Reed-Solomon-Kodierer für Fehlerkorrektur-Dateien und erweiterte Abbilder" -#: src/endian.c:76 +#: src/endian.c:78 msgid "" "\n" "Contents of Ecc Header:\n" @@ -905,11 +909,11 @@ msgstr "" "Inhalt des Ecc-Vorspanns:\n" "\n" -#: src/help-dialogs.c:394 +#: src/help-dialogs.c:395 msgid "windowtitle|Log data" msgstr "Protokollfenster" -#: src/help-dialogs.c:395 +#: src/help-dialogs.c:396 msgid "" "Log data\n" "Protocol of the current or previous action" @@ -917,11 +921,11 @@ msgstr "" "Protokolldaten\n" "Protokoll des momentanen oder letzten Vorgangs." -#: src/help-dialogs.c:411 +#: src/help-dialogs.c:412 msgid "windowtitle|GNU General Public License" msgstr "GNU General Public License" -#: src/help-dialogs.c:412 +#: src/help-dialogs.c:413 msgid "" "GNU General Public License\n" "The license terms of dvdisaster." @@ -929,7 +933,7 @@ msgstr "" "GNU General Public License\n" "Die Lizenzbedingungen von dvdisaster." -#: src/help-dialogs.c:502 +#: src/help-dialogs.c:503 #, c-format msgid "" "File\n" @@ -940,7 +944,7 @@ msgstr "" "%s\n" "nicht vorhanden" -#: src/help-dialogs.c:512 +#: src/help-dialogs.c:513 #, c-format msgid "" "File\n" @@ -951,7 +955,7 @@ msgstr "" "%s\n" "kann nicht zugegriffen werden" -#: src/help-dialogs.c:524 +#: src/help-dialogs.c:525 msgid "" "\n" "<- Error: Text file truncated here" @@ -959,35 +963,17 @@ msgstr "" "\n" "<- Fehler: Textdatei wurde hier abgeschnitten" -#: src/help-dialogs.c:593 -msgid "windowtitle|Modifying dvdisaster" -msgstr "dvdisaster verändern" - -#: src/help-dialogs.c:594 -msgid "" -"Modifying dvdisaster\n" -"Your changes are not ours." -msgstr "" -"dvdisaster verändern\n" -"Ihre Änderungen sind nicht unsere." - -#: src/help-dialogs.c:734 +#: src/help-dialogs.c:724 msgid "windowtitle|About dvdisaster" msgstr "Kurzinformation" -#: src/help-dialogs.c:754 +#: src/help-dialogs.c:742 src/misc.c:219 msgid "" -"[Modified version]\n" -"Copyright 2019-2021 Stephane Lesimple\n" -"Copyright 2005-2017 Debian Optical Media Tools Team\n" -"Copyright 2004-2017 Carsten Gnoerlich" +"Copyright 2004-2017 Carsten Gnoerlich.\n" +"Copyright 2019-2021 The dvdisaster development team." msgstr "" -#: src/help-dialogs.c:760 src/misc.c:218 -msgid "Copyright 2004-2017 Carsten Gnoerlich" -msgstr "Copyright 2004-2017 Carsten Gnörlich" - -#: src/help-dialogs.c:767 +#: src/help-dialogs.c:748 msgid "" "dvdisaster provides a margin of safety against data loss\n" "on optical media caused by aging or scratches.\n" @@ -999,7 +985,7 @@ msgstr "" "Es erzeugt Fehlerkorrektur-Daten, um bei nachfolgenden Datenträger-\n" "Problemen unlesbare Sektoren zu rekonstruieren.\n" -#: src/help-dialogs.c:772 +#: src/help-dialogs.c:753 msgid "" "This software comes with absolutely no warranty.\n" "This is free software and you are welcome to redistribute it\n" @@ -1008,26 +994,13 @@ msgstr "" "dvdisaster ist freie Software; es gelten die Bedingungen\n" "der [GNU General Public License] .\n" -#: src/help-dialogs.c:778 +#: src/help-dialogs.c:758 msgid "" "\n" -"This version is not the original. It has been patched\n" -"for Debian to support DVD-ROMs (with and without encryption),\n" -"and subsequently patched again to support a CLI-only build, among other things.\n" -"\n" -"Please do not bother the original authors of dvdisaster nor the Debian maintainer\n" -"but submit bugreports against [GitHub] instead.\n" +"e-mail: support@dvdisaster.org" msgstr "" -#: src/help-dialogs.c:794 -msgid "" -"\n" -"e-mail: carsten@dvdisaster.org -or- cgnoerlich@fsfe.org" -msgstr "" -"\n" -"e-mail: carsten@dvdisaster.org -oder- cgnoerlich@fsfe.org" - -#: src/help-dialogs.c:796 +#: src/help-dialogs.c:765 msgid "" "\n" "NetBSD port: Sergey Svishchev <svs@ropnet.ru>" @@ -1035,12 +1008,12 @@ msgstr "" "\n" "Anpassungen für NetBSD: Sergey Svishchev <svs@ropnet.ru>" -#: src/image.c:153 src/image.c:158 +#: src/image.c:156 src/image.c:161 #, c-format msgid "Image file %s not present or permission denied.\n" msgstr "Abbild-Datei %s nicht vorhanden oder Zugriff nicht erlaubt.\n" -#: src/image.c:168 src/image.c:173 +#: src/image.c:172 src/image.c:177 msgid "" "\n" "Error correction file type unknown.\n" @@ -1048,7 +1021,7 @@ msgstr "" "\n" "Typ der Fehlerkorrktur-Datei ist unbekannt.\n" -#: src/image.c:183 src/image.c:189 +#: src/image.c:188 src/image.c:194 msgid "" "\n" "Permission denied on ecc file (perhaps not writeable?).\n" @@ -1056,7 +1029,7 @@ msgstr "" "\n" "Zugriff auf Fehlerkorrektur-Datei nicht erlaubt (vielleicht keine Schreibrechte?).\n" -#: src/image.c:200 src/image.c:206 +#: src/image.c:206 src/image.c:212 msgid "" "\n" "No error correction file present.\n" @@ -1082,12 +1055,12 @@ msgstr "" "Sie können den Vorgang wiederholen\n" "nachdem Sie Speicherplatz freigegeben haben." -#: src/main-window.c:67 +#: src/main-window.c:70 #, c-format msgid "log: %s\n" msgstr "Protokoll: %s\n" -#: src/main-window.c:93 +#: src/main-window.c:97 msgid "" "The .iso image and error correction file\n" "must not be the same file!\n" @@ -1104,7 +1077,7 @@ msgstr "" "lassen Sie bitte das Feld für den Namen der\n" "Fehlerkorrektur-Datei leer." -#: src/main-window.c:103 +#: src/main-window.c:107 msgid "" "The error correction file type must not be \".iso\".\n" "\n" @@ -1119,204 +1092,204 @@ msgstr "" "lassen Sie bitte das Feld für den Namen der\n" "Fehlerkorrektur-Datei leer." -#: src/main-window.c:173 +#: src/main-window.c:177 msgid "Internal error: No suitable method for repairing image." msgstr "Interner Fehler: Keine passende Methode zur Reparatur des Abbilds." -#: src/main-window.c:280 +#: src/main-window.c:284 msgid "button|Read" msgstr "Lesen" -#: src/main-window.c:283 +#: src/main-window.c:287 msgid "tooltip|Read Image" msgstr "Abbild einlesen" -#: src/main-window.c:283 +#: src/main-window.c:288 msgid "Reads an optical disc image into a file (or tries to complete an existing image file)." msgstr "Liest das Abbild eines optischen Datenträgers in eine Datei ein (oder vervollständigt ein vorhandenes Abbild)." -#: src/main-window.c:297 +#: src/main-window.c:302 msgid "button|Create" msgstr "Erzeugen" -#: src/main-window.c:300 +#: src/main-window.c:305 msgid "tooltip|Create error correction data" msgstr "Fehlerkorrektur-Daten erzeugen" -#: src/main-window.c:300 +#: src/main-window.c:306 msgid "Creates error correction data. Requires an image file." msgstr "Erzeugt Fehlerkorrektur-Daten. Benötigt eine Abbild-Datei." -#: src/main-window.c:304 +#: src/main-window.c:310 msgid "button|Scan" msgstr "Prüfen" -#: src/main-window.c:307 +#: src/main-window.c:313 msgid "tooltip|Scan medium" msgstr "Datenträger untersuchen" -#: src/main-window.c:307 +#: src/main-window.c:314 msgid "Scans medium for unreadable sectors." msgstr "Untersucht den Datenträger auf Lesefehler." -#: src/main-window.c:311 +#: src/main-window.c:318 msgid "button|Fix" msgstr "Reparieren" -#: src/main-window.c:314 +#: src/main-window.c:321 msgid "tooltip|Repair image" msgstr "Abbild reparieren" -#: src/main-window.c:314 +#: src/main-window.c:322 msgid "Repairs an image. Requires an image file and error correction data." msgstr "Repariert ein Abbild. Benötigt eine Abbild-Datei und Fehlerkorrektur-Daten." -#: src/main-window.c:318 +#: src/main-window.c:326 msgid "button|Verify" msgstr "Vergleichen" -#: src/main-window.c:321 +#: src/main-window.c:329 msgid "tooltip|Consistency check" msgstr "Daten überprüfen" -#: src/main-window.c:321 +#: src/main-window.c:330 msgid "Tests consistency of error correction data and image file." msgstr "Überprüft das Abbild und die Fehlerkorrektur-Daten." -#: src/main-window.c:325 +#: src/main-window.c:334 msgid "button|Strip" msgstr "" -#: src/main-window.c:328 +#: src/main-window.c:337 msgid "tooltip|Strip ECC" msgstr "" -#: src/main-window.c:328 +#: src/main-window.c:338 msgid "Strip ECC data from an augmented image." msgstr "" -#: src/main-window.c:332 +#: src/main-window.c:342 msgid "button|Stop" msgstr "Abbrechen" -#: src/main-window.c:335 +#: src/main-window.c:345 msgid "tooltip|Abort action" msgstr "Vorgang abbrechen" -#: src/main-window.c:335 +#: src/main-window.c:346 msgid "Aborts an ongoing action." msgstr "Bricht den laufenden Vorgang ab." -#: src/main-window.c:492 +#: src/main-window.c:503 msgid "tooltip|Protocol for current action" msgstr "Protokoll des Vorgangs" -#: src/main-window.c:493 +#: src/main-window.c:504 msgid "Displays additional information created during the current or last action." msgstr "Zeigt zusätzliche Informationen über den laufenden oder zuletzt durchgeführten Vorgang an." -#: src/main-window.c:502 +#: src/main-window.c:513 msgid "View log" msgstr "Protokoll" -#: src/medium-info.c:57 +#: src/medium-info.c:58 msgid "Please wait..." msgstr "" -#: src/medium-info.c:118 +#: src/medium-info.c:112 msgid "Medium not present" msgstr "kein Datenträger" -#: src/medium-info.c:126 src/medium-info.c:488 +#: src/medium-info.c:119 src/medium-info.c:400 msgid "Physical medium info" msgstr "Physischer Datenträger" -#: src/medium-info.c:172 src/medium-info.c:178 +#: src/medium-info.c:141 src/medium-info.c:147 msgid "empty" msgstr "leer" -#: src/medium-info.c:173 +#: src/medium-info.c:142 msgid "appendable" msgstr "erweiterbar" -#: src/medium-info.c:174 +#: src/medium-info.c:143 msgid "finalized" msgstr "abgeschlossen" -#: src/medium-info.c:175 src/scsi-layer.c:100 +#: src/medium-info.c:144 src/scsi-layer.c:102 msgid "unknown" msgstr "unbekannt" -#: src/medium-info.c:179 +#: src/medium-info.c:148 msgid "incomplete" msgstr "unvollständig" -#: src/medium-info.c:180 +#: src/medium-info.c:149 msgid "damaged" msgstr "beschädigt" -#: src/medium-info.c:181 src/rs02-verify.c:695 src/rs02-verify.c:913 -#: src/rs02-verify.c:914 src/rs02-verify.c:915 src/rs03-verify.c:1340 -#: src/rs03-verify.c:1342 src/rs03-verify.c:1343 +#: src/medium-info.c:150 src/rs02-verify.c:673 src/rs02-verify.c:891 +#: src/rs02-verify.c:892 src/rs02-verify.c:893 src/rs03-verify.c:1259 +#: src/rs03-verify.c:1262 src/rs03-verify.c:1265 msgid "complete" msgstr "vollständig" -#: src/medium-info.c:192 +#: src/medium-info.c:155 #, c-format msgid "%s (%d sessions; last session %s)\n" msgstr "%s (%d Sitzungen; letzte Sitzung %s)\n" -#: src/medium-info.c:204 +#: src/medium-info.c:161 #, c-format msgid "% sectors (% MiB), from READ CAPACITY\n" msgstr "% Sektoren (% MiB), aus READ CAPACITY\n" -#: src/medium-info.c:213 +#: src/medium-info.c:164 #, c-format msgid "% sectors (% MiB), from DVD structure\n" msgstr "% Sektoren (% MiB), aus DVD-Struktur\n" -#: src/medium-info.c:223 src/medium-info.c:297 +#: src/medium-info.c:168 #, c-format msgid "% sectors (% MiB)\n" msgstr "% Sektoren (% MiB)\n" -#: src/medium-info.c:235 src/medium-info.c:561 +#: src/medium-info.c:180 src/medium-info.c:473 msgid "Filesystem info" msgstr "Dateisystem-Information" -#: src/medium-info.c:253 +#: src/medium-info.c:186 #, c-format msgid "%d sectors (% MiB)\n" msgstr "%d Sektoren (% MiB)\n" -#: src/medium-info.c:280 src/medium-info.c:594 +#: src/medium-info.c:207 src/medium-info.c:506 msgid "Augmented image info" msgstr "Erweitertes Abbild" -#: src/medium-info.c:287 src/medium-info.c:289 +#: src/medium-info.c:213 #, c-format msgid "%s, %d roots, %4.1f%% redundancy.\n" msgstr "%s, %d Nullstellen, %4.1f%% Redundanz.\n" -#: src/medium-info.c:295 +#: src/medium-info.c:217 #, c-format msgid "% sectors (% MiB)\n" msgstr "" -#: src/medium-info.c:319 +#: src/medium-info.c:229 msgid "yes" msgstr "" -#: src/medium-info.c:323 +#: src/medium-info.c:234 msgid "no" msgstr "" -#: src/medium-info.c:419 +#: src/medium-info.c:331 msgid "windowtitle|Medium info" msgstr "Datenträger-Info" -#: src/medium-info.c:434 +#: src/medium-info.c:346 msgid "" "Medium info\n" "Properties of the currently inserted medium" @@ -1324,91 +1297,91 @@ msgstr "" "Datenträger-Information\n" "Eigenschaften des momentan eingelegten Datenträgers" -#: src/medium-info.c:446 +#: src/medium-info.c:358 msgid "Drive selection" msgstr "Laufwerks-Auswahl" -#: src/medium-info.c:453 +#: src/medium-info.c:365 msgid "Drive:" msgstr "Laufwerk:" -#: src/medium-info.c:474 src/menubar.c:493 +#: src/medium-info.c:386 src/menubar.c:496 msgid "No drives found" msgstr "Keine Laufwerke gefunden" -#: src/medium-info.c:479 +#: src/medium-info.c:391 msgid " " msgstr " " -#: src/medium-info.c:482 +#: src/medium-info.c:394 msgid "Update medium info" msgstr "Erneut lesen" -#: src/medium-info.c:495 +#: src/medium-info.c:407 msgid "Medium type:" msgstr "Datenträger-Typ:" -#: src/medium-info.c:503 +#: src/medium-info.c:415 msgid "Book type:" msgstr "\"Book type\":" -#: src/medium-info.c:511 src/scsi-layer.c:2747 +#: src/medium-info.c:423 src/scsi-layer.c:2741 msgid "Manuf.-ID:" msgstr "Herst.-ID:" -#: src/medium-info.c:519 +#: src/medium-info.c:431 msgid "Drive profile:" msgstr "Laufwerks-Profil:" -#: src/medium-info.c:527 +#: src/medium-info.c:439 msgid "Disc status:" msgstr "Datenträger-Status:" -#: src/medium-info.c:535 +#: src/medium-info.c:447 msgid "Used sectors:" msgstr "Verwendete Sektoren:" -#: src/medium-info.c:551 +#: src/medium-info.c:463 msgid "Blank capacity:" msgstr "Leer-Kapazität:" -#: src/medium-info.c:568 +#: src/medium-info.c:480 msgid "Medium label:" msgstr "Datenträger-Bezeichnung:" -#: src/medium-info.c:576 +#: src/medium-info.c:488 msgid "File system size:" msgstr "Dateisystem-Größe:" -#: src/medium-info.c:584 +#: src/medium-info.c:496 msgid "Creation time:" msgstr "Zeitpunkt der Erzeugung:" -#: src/medium-info.c:601 +#: src/medium-info.c:513 msgid "Error correction data:" msgstr "Fehlerkorrektur-Daten:" -#: src/medium-info.c:609 +#: src/medium-info.c:521 msgid "Augmented image size:" msgstr "Größe des erweiterten Abbilds:" -#: src/medium-info.c:617 +#: src/medium-info.c:529 msgid "dvdisaster version:" msgstr "dvdisaster-Version:" -#: src/medium-info.c:625 +#: src/medium-info.c:537 msgid "Exhaustive search:" msgstr "" -#: src/medium-info.c:632 +#: src/medium-info.c:544 msgid "Run exhaustive search" msgstr "" -#: src/menubar.c:131 +#: src/menubar.c:133 msgid "windowtitle|Change log" msgstr "Änderungsbericht" -#: src/menubar.c:132 +#: src/menubar.c:134 msgid "" "Change log\n" "Major differences from earlier program versions." @@ -1416,11 +1389,11 @@ msgstr "" "Änderungsbericht\n" "Die wichtigsten Unterschiede zu den Vorgängerversionen (nur in Englisch)." -#: src/menubar.c:138 +#: src/menubar.c:140 msgid "windowtitle|Credits" msgstr "Danksagung" -#: src/menubar.c:139 +#: src/menubar.c:141 msgid "" "Credits\n" "Thanks go out to..." @@ -1428,11 +1401,11 @@ msgstr "" "Danksagung\n" "Ein herzliches Dankeschön an..." -#: src/menubar.c:145 +#: src/menubar.c:147 msgid "windowtitle|To do list" msgstr "Aufgabenliste" -#: src/menubar.c:146 +#: src/menubar.c:148 msgid "" "To do list\n" "A sneak preview of coming features ... perhaps ;-)" @@ -1440,139 +1413,139 @@ msgstr "" "Aufgabenliste\n" "Eine Vorschau auf zukünftige Erweiterungen ... vielleicht ;-) (nur in Englisch)" -#: src/menubar.c:213 +#: src/menubar.c:215 msgid "menu|Select Image" msgstr "Abbild auswählen" -#: src/menubar.c:214 +#: src/menubar.c:216 msgid "menu|Select Parity File" msgstr "Fehlerkorrektur-Datei auswählen" -#: src/menubar.c:215 +#: src/menubar.c:217 msgid "menu|Quit" msgstr "Beenden" -#: src/menubar.c:217 +#: src/menubar.c:219 msgid "menu|File" msgstr "Datei" -#: src/menubar.c:224 +#: src/menubar.c:226 msgid "menu|Medium info" msgstr "Datenträger-Info" -#: src/menubar.c:229 +#: src/menubar.c:231 msgid "menu|Raw sector editor" msgstr "Roh-Sektoren bearbeiten" -#: src/menubar.c:231 +#: src/menubar.c:233 msgid "menu|Tools" msgstr "Werkzeuge" -#: src/menubar.c:239 +#: src/menubar.c:241 msgid "menu|About" msgstr "Kurzinformation" -#: src/menubar.c:240 +#: src/menubar.c:242 msgid "menu|User manual" msgstr "Benutzerhandbuch" -#: src/menubar.c:244 +#: src/menubar.c:246 msgid "menu|Credits" msgstr "Danksagung" -#: src/menubar.c:245 +#: src/menubar.c:247 msgid "menu|Licence (GPL)" msgstr "Lizenz (GPL)" -#: src/menubar.c:249 +#: src/menubar.c:251 msgid "menu|Change log" msgstr "Änderungsbericht" -#: src/menubar.c:250 +#: src/menubar.c:252 msgid "menu|To do list" msgstr "Aufgabenliste" -#: src/menubar.c:252 +#: src/menubar.c:254 msgid "menu|Help" msgstr "Hilfe" -#: src/menubar.c:336 +#: src/menubar.c:338 msgid "windowtitle|Image file selection" msgstr "Abbild-Datei auswählen" -#: src/menubar.c:373 +#: src/menubar.c:375 msgid "windowtitle|Error correction file selection" msgstr "Fehlerkorrektur-Datei auswählen" -#: src/menubar.c:475 src/menubar.c:499 +#: src/menubar.c:477 src/menubar.c:502 msgid "tooltip|Drive selection" msgstr "Laufwerk auswählen" -#: src/menubar.c:475 +#: src/menubar.c:478 msgid "Use the nearby drop-down list to select the input drive." msgstr "Klappen Sie die nebenstehende Liste aus um ein Laufwerk zu wählen." -#: src/menubar.c:499 +#: src/menubar.c:503 msgid "Selects the input drive for reading images." msgstr "Auswahl des Laufwerks zum Einlesen von Abbildern." -#: src/menubar.c:529 +#: src/menubar.c:533 msgid "tooltip|Image file selection" msgstr "Abbild-Datei auswählen" -#: src/menubar.c:529 +#: src/menubar.c:534 msgid "Selects a new image file." msgstr "Wählt eine neue Abbild-Datei aus." -#: src/menubar.c:530 +#: src/menubar.c:536 msgid "tooltip|Current image file" msgstr "Momentane Abbild-Datei" -#: src/menubar.c:530 +#: src/menubar.c:537 msgid "Shows the name of the current image file." msgstr "Zeigt den Namen der momentan verwendeten Abbild-Datei an." -#: src/menubar.c:554 +#: src/menubar.c:562 msgid "tooltip|Error correction file selection" msgstr "Fehlerkorrektur-Datei auswählen" -#: src/menubar.c:554 +#: src/menubar.c:563 msgid "Selects a new error correction file." msgstr "Wählt eine neue Fehlerkorrektur-Datei aus." -#: src/menubar.c:555 +#: src/menubar.c:565 msgid "tooltip|Current error correction file" msgstr "Momentane Fehlerkorrektur-Datei" -#: src/menubar.c:555 +#: src/menubar.c:566 msgid "Shows the name of the current error correction file." msgstr "Zeigt den Namen der momentan verwendeten Fehlerkorrektur-Datei an." -#: src/menubar.c:566 +#: src/menubar.c:577 msgid "tooltip|Preferences" msgstr "Einstellungen" -#: src/menubar.c:566 +#: src/menubar.c:578 msgid "Customize settings for creating images, error correction files and other stuff." msgstr "Einstellungen zum Erzeugen von Abbildern, für die Fehlerkorrektur und anderes." -#: src/menubar.c:576 +#: src/menubar.c:588 msgid "tooltip|User manual" msgstr "Benutzerhandbuch" -#: src/menubar.c:576 +#: src/menubar.c:589 msgid "Displays the user manual (external PDF viewer required)." msgstr "Ruft das Benutzerhandbuch auf (externes PDF-Anzeigeprogramm wird benötigt)." -#: src/menubar.c:586 +#: src/menubar.c:599 msgid "tooltip|Quit" msgstr "Beenden" -#: src/menubar.c:586 +#: src/menubar.c:599 msgid "Quit dvdisaster" msgstr "Beendet dvdisaster." -#: src/method.c:55 +#: src/method.c:57 msgid "" "\n" "List of available methods:\n" @@ -1582,7 +1555,7 @@ msgstr "" "Liste der verfügbaren Methoden:\n" "\n" -#: src/misc.c:224 +#: src/misc.c:225 msgid "" "This software comes with ABSOLUTELY NO WARRANTY. This\n" "is free software and you are welcome to redistribute it\n" @@ -1592,11 +1565,11 @@ msgstr "" "Dies ist freie Software; es gelten die Bedingungen der\n" "GNU GENERAL PUBLIC LICENSE aus dem Quelltext.\n" -#: src/misc.c:550 +#: src/misc.c:535 msgid "Warning" msgstr "Warnung" -#: src/misc.c:633 src/misc.c:643 +#: src/misc.c:610 src/misc.c:619 msgid "" "\n" "*\n" @@ -1608,26 +1581,40 @@ msgstr "" "* dvdisaster - kann Ausführung nicht fortsetzen:\n" "*\n" -#: src/misc.c:1307 -msgid "Do not ask again" -msgstr "Nicht mehr nachfragen" +#: src/misc.c:758 +msgid "Strip ECC aborted" +msgstr "" -#: src/misc.c:1331 +#: src/misc.c:766 +msgid "Image is not augmented (no dvdisaster signature found)." +msgstr "" + +#: src/misc.c:772 +#, c-format +msgid "Invalid end data sector (%), aborting" +msgstr "" + +#: src/misc.c:781 #, c-format msgid "" -"Image file already exists and does not match the medium:\n" -"\n" -"%s\n" -"\n" -"The existing image file will be deleted." +"We're about to truncate the image from % sectors (% MiB)\n" +"to % sectors (% MiB), removing any dvdisaster-added ECC data.\n" +"This will restore the image to its pre-augmented original size." msgstr "" -"Die bereits vorhandene Abbild-Datei paßt nicht zu dem Datenträger:\n" -"\n" -"%s\n" -"\n" -"Soll die Abbild-Datei gelöscht werden?" -#: src/misc.c:1353 +#: src/misc.c:788 +msgid "Aborted on user request" +msgstr "" + +#: src/misc.c:797 +msgid "Image successfully truncated back to its original size.\n" +msgstr "" + +#: src/misc.c:801 +msgid "Image successfully truncated" +msgstr "" + +#: src/misc-gui.c:241 #, c-format msgid "" "The error correction file is already present:\n" @@ -1642,94 +1629,80 @@ msgstr "" "\n" "Soll sie überschrieben werden?" -#: src/misc.c:1388 -msgid "Strip ECC aborted" -msgstr "" +#: src/misc-gui.c:639 +msgid "Do not ask again" +msgstr "Nicht mehr nachfragen" -#: src/misc.c:1396 -msgid "Image is not augmented (no dvdisaster signature found)." -msgstr "" - -#: src/misc.c:1402 -#, c-format -msgid "Invalid end data sector (%), aborting" -msgstr "" - -#: src/misc.c:1411 +#: src/misc-gui.c:660 #, c-format msgid "" -"We're about to truncate the image from % sectors (% MiB)\n" -"to % sectors (% MiB), removing any dvdisaster-added ECC data.\n" -"This will restore the image to its pre-augmented original size." +"Image file already exists and does not match the medium:\n" +"\n" +"%s\n" +"\n" +"The existing image file will be deleted." msgstr "" +"Die bereits vorhandene Abbild-Datei paßt nicht zu dem Datenträger:\n" +"\n" +"%s\n" +"\n" +"Soll die Abbild-Datei gelöscht werden?" -#: src/misc.c:1418 -msgid "Aborted on user request" -msgstr "" - -#: src/misc.c:1427 -msgid "Image successfully truncated back to its original size.\n" -msgstr "" - -#: src/misc.c:1431 -msgid "Image successfully truncated" -msgstr "" - -#: src/preferences.c:452 +#: src/preferences.c:454 msgid "Switched to the linear reading strategy." msgstr "Lineares Leseverfahren wurde ausgewählt." -#: src/preferences.c:838 +#: src/preferences.c:840 msgid "Color selection" msgstr "Farbe auswählen" -#: src/preferences.c:1059 +#: src/preferences.c:1061 msgid "Disabled automatic error correction file generation." msgstr "" "Automatisches Erzeugen der Fehlerkorrektur-Datei\n" "wurde abgeschaltet." -#: src/preferences.c:1222 src/preferences.c:2362 src/preferences.c:2371 +#: src/preferences.c:1224 src/preferences.c:2376 src/preferences.c:2385 msgid "Raw sector caching" msgstr "Roh-Sektoren aufbewahren" -#: src/preferences.c:1294 +#: src/preferences.c:1296 msgid "Log file" msgstr "Protokoll-Datei" -#: src/preferences.c:1316 +#: src/preferences.c:1318 msgid "Delete the log file?" msgstr "Protokoll-Datei löschen?" -#: src/preferences.c:1410 +#: src/preferences.c:1412 msgid "Preferences" msgstr "Einstellungen" -#: src/preferences.c:1440 src/rs03-preferences.c:514 +#: src/preferences.c:1442 src/rs03-preferences.c:516 msgid "Image" msgstr "Abbild" -#: src/preferences.c:1444 +#: src/preferences.c:1446 msgid "Image creation" msgstr "Abbild-Erzeugung" -#: src/preferences.c:1453 +#: src/preferences.c:1455 msgid "Reading strategy" msgstr "Lese-Verfahren" -#: src/preferences.c:1453 +#: src/preferences.c:1456 msgid "Reading strategy: " msgstr "Lese-Verfahren: " -#: src/preferences.c:1468 +#: src/preferences.c:1471 msgid "Linear" msgstr "Linear" -#: src/preferences.c:1476 +#: src/preferences.c:1479 msgid "Adaptive (for defective media)" msgstr "Angepaßt (an beschädigte Datenträger)" -#: src/preferences.c:1488 +#: src/preferences.c:1491 msgid "" "Reading strategy\n" "\n" @@ -1755,19 +1728,19 @@ msgstr "" "\n" "Das angepaßte Verfahren kann auch ohne Fehlerkorrektur-Daten benutzt werden; es wird aber empfohlen in diesem Fall das lineare Lesen zu verwenden." -#: src/preferences.c:1500 +#: src/preferences.c:1503 msgid "Reading range" msgstr "Lese-Bereich" -#: src/preferences.c:1500 +#: src/preferences.c:1504 msgid "Read/Scan from sector" msgstr "Lesen/Prüfen von Sektor" -#: src/preferences.c:1526 +#: src/preferences.c:1530 msgid "to sector" msgstr "bis Sektor" -#: src/preferences.c:1544 +#: src/preferences.c:1548 msgid "" "Reading range\n" "\n" @@ -1785,19 +1758,19 @@ msgstr "" "\n" "Diese Einstellungen gelten nur für die aktuelle Sitzung und werden nicht gespeichert." -#: src/preferences.c:1554 +#: src/preferences.c:1558 msgid "Error correction data recognization" msgstr "Erkennen von Fehlerkorrektur-Daten" -#: src/preferences.c:1563 +#: src/preferences.c:1567 msgid "Exhaustive RS02 header search" msgstr "Erschöpfende Suche nach RS02-Vorspännen" -#: src/preferences.c:1563 +#: src/preferences.c:1568 msgid "Perform exhaustive search for RS02 headers" msgstr "Erschöpfende Suche nach RS02-Vorspännen durchführen" -#: src/preferences.c:1584 +#: src/preferences.c:1589 msgid "" "Exhaustive RS02 header search\n" "\n" @@ -1815,15 +1788,15 @@ msgstr "" "\n" "Lassen Sie diese Option ausgeschaltet wenn Sie Datenträger oder Abbilder verarbeiten, die nicht mit RS02-Fehlerkorrektur-Daten erweitert wurden. Anderenfalls wird viel Zeit mit der vergeblichen Suche nach den Fehlerkorrektur-Daten verschwendet und die Abnutzung des Laufwerks erhöht." -#: src/preferences.c:1603 +#: src/preferences.c:1608 msgid "Recover RS03 signatures" msgstr "RS03-Datenstrukturen finden" -#: src/preferences.c:1603 +#: src/preferences.c:1609 msgid "Find and recover RS03 signatures" msgstr "RS03-Datenstrukturen suchen und wiederherstellen" -#: src/preferences.c:1624 +#: src/preferences.c:1630 msgid "" "Exhaustive RS03 header search\n" "\n" @@ -1841,19 +1814,19 @@ msgstr "" "\n" "Lassen Sie diese Option ausgeschaltet wenn Sie Datenträger oder Abbilder verarbeiten, die nicht mit RS03-Fehlerkorrektur-Daten erweitert wurden. Anderenfalls wird viel Zeit mit der vergeblichen Suche nach den Fehlerkorrektur-Daten verschwendet und die Abnutzung des Laufwerks erhöht." -#: src/preferences.c:1643 +#: src/preferences.c:1649 msgid "Image properties" msgstr "Abbild-Eigenschaften" -#: src/preferences.c:1652 +#: src/preferences.c:1658 msgid "Ignore ISO/UDF meta data" msgstr "ISO/UDF-Metadaten nicht verwenden" -#: src/preferences.c:1652 +#: src/preferences.c:1659 msgid "Ignore image size recorded in ISO/UDF file system" msgstr "Im ISO/UDF-Dateisystem gespeicherte Abbildgröße nicht verwenden" -#: src/preferences.c:1673 +#: src/preferences.c:1680 msgid "" "Ignore image size recorded in ISO/UDF filesystem\n" "\n" @@ -1875,15 +1848,15 @@ msgstr "" "Diese Reihenfolge ist sinnvoll weil die Laufwerke in vielen Fällen unzuverlässige Informationen über die Datenträger-Größe liefern. In einigen seltenen Fällen stimmt die Information in den ISO/UDF-Dateisystemen allerdings nicht. Einige GNU/Linux-Live-CDs haben dieses Problem. Wenn Sie ein Abbild von diesen CDs lesen und seine MD5-Prüfsumme nicht mit der veröffentlichten Prüfsumme übereinstimmt, versuchen Sie das Abbild noch einmal zu lesen nachdem Sie diese Einstellung aktiviert haben.\n" "Schalten Sie diese Funktion nicht grundlos ein da sehr wahrscheinlich nicht optimale oder beschädigte ISO-Abbilder das Ergebnis sein werden, insbesondere wenn Sie vorhaben Fehlerkorrektur-Daten zu dem Abbild zu erzeugen." -#: src/preferences.c:1692 +#: src/preferences.c:1699 msgid "DAO mode" msgstr "DAO-Abbild" -#: src/preferences.c:1692 +#: src/preferences.c:1700 msgid "Assume image to be written in DAO mode (don't truncate)" msgstr "Unterstelle DAO-Abbild (nicht am Ende kürzen)" -#: src/preferences.c:1713 +#: src/preferences.c:1721 msgid "" "Assume DAO mode\n" "\n" @@ -1902,19 +1875,19 @@ msgstr "" "\n" "Tip: Brennen Sie CDs im Modus \"DAO / Disc at once\" (manchmal auch \"SAO / Session at once\" genannt), um diese Probleme zu vermeiden." -#: src/preferences.c:1728 +#: src/preferences.c:1736 msgid "Image format" msgstr "Abbild-Format" -#: src/preferences.c:1737 +#: src/preferences.c:1745 msgid "Missing sector tags" msgstr "Kennzeichnung fehlender Sektoren" -#: src/preferences.c:1737 +#: src/preferences.c:1746 msgid "Use old style missing sector tags (not recommended)" msgstr "Nach alter Methode kennzeichnen (nicht empfohlen)" -#: src/preferences.c:1758 +#: src/preferences.c:1767 msgid "" "Missing sector tagging\n" "\n" @@ -1928,15 +1901,15 @@ msgstr "" "Nur dvdisaster 0.72 und die nachfolgenden Versionen erkennen die neue Kennzeichnung. Aktivieren Sie diesen Schalter wenn Sie vorhaben das Abbild später mit einer älteren Version von dvdisaster zu bearbeiten. Diese Version würde die betreffenden Sektoren sonst nicht als fehlend erkennen.\n" "Bemerkung: dvdisaster >= 0.72 erkennt die alten und neuen Formate automatisch; dieser Schalter beinflußt nur die Erzeugung neuer Abbilder." -#: src/preferences.c:1778 +#: src/preferences.c:1787 msgid "Filling of unreadable sectors" msgstr "Auffüllen von unlesbaren Sektoren" -#: src/preferences.c:1779 +#: src/preferences.c:1788 msgid "Fill unreadable sectors with byte:" msgstr "Unlesbare Sektoren auffüllen mit Byte:" -#: src/preferences.c:1819 +#: src/preferences.c:1828 msgid "" "Filling of unreadable sectors\n" "\n" @@ -1947,31 +1920,31 @@ msgstr "" "\n" "dvdisaster kennzeichnet unlesbare Sektoren mit einem Füllmuster, dessen Vorkommen auf einem unbeschädigten Datenträger sehr unwahrscheinlich ist. Einige andere Datenrettungsprogramme erwarten aber, daß unlesbare Sektoren mit einem bestimmten Byte aufgefüllt sind. Um den Austausch von Abbildern mit diesen Programmen zu ermöglichen, müssen Sie das \"richtige\" Byte angeben:\n" -#: src/preferences.c:1828 +#: src/preferences.c:1837 msgid "0xb0 (176 decimal): for compatibility with h2cdimage published by \"c't\", a German periodical.\n" msgstr "0xb0 (dezimal 176): bewirkt Kompatibilität mit dem Programm h2cdimage des c't-Magazins.\n" -#: src/preferences.c:1832 +#: src/preferences.c:1841 msgid "Note: Using zero filling (0x00, decimal 0) is highly discouraged. Most media contain regular zero filled sectors which can not be told apart from unreadable sectors if zero filling is used." msgstr "Hinweis: Das Auffüllen mit Nullen (0x00, dezimal 0) ist nicht empfehlenswert. Die meisten Datenträger enthalten auch im unbeschädigten Zustand Sektoren, die mit Null aufgefüllt sind. Diese Sektoren können später nicht von unlesbaren Sektoren unterschieden werden, wenn Nullen zur Markierung verwendet werden." -#: src/preferences.c:1839 +#: src/preferences.c:1848 msgid "Drive" msgstr "Laufwerk" -#: src/preferences.c:1843 src/preferences.c:1846 +#: src/preferences.c:1852 src/preferences.c:1855 msgid "Drive initialisation" msgstr "Laufwerk vorbereiten" -#: src/preferences.c:1847 +#: src/preferences.c:1856 msgid "Wait" msgstr "Warte" -#: src/preferences.c:1850 +#: src/preferences.c:1859 msgid "seconds for drive to spin up" msgstr "Sekunden auf das Hochdrehen des Laufwerks" -#: src/preferences.c:1880 +#: src/preferences.c:1889 msgid "" "Drive initialisation\n" "\n" @@ -1981,23 +1954,23 @@ msgstr "" "\n" "Gibt dem Laufwerk die angegebene Anzahl Sekunden Zeit zum Hochdrehen. Dadurch erscheinen keine abrupten Geschwindigkeitsänderungen am Anfang der Lesekurve." -#: src/preferences.c:1886 +#: src/preferences.c:1895 msgid "Raw reading parameters" msgstr "Lesen von \"raw\"-Sektoren" -#: src/preferences.c:1895 +#: src/preferences.c:1904 msgid "Raw reading mode" msgstr "\"Raw\"-Lese-Verfahren" -#: src/preferences.c:1895 +#: src/preferences.c:1905 msgid "Raw reading mode: " msgstr "\"Raw\"-Lese-Verfahren:" -#: src/preferences.c:1927 +#: src/preferences.c:1937 msgid "other:" msgstr "anderer:" -#: src/preferences.c:1961 +#: src/preferences.c:1971 msgid "" "Raw reading mode\n" "\n" @@ -2021,19 +1994,19 @@ msgstr "" "\n" "0x01 Einige Laufwerke liefern die gewünschten Ergebnisse mit diesem Wert, obwohl dies nach den SCSI-Spezifikationen keinen Sinn ergibt. Geben Sie diesen Wert in das \"anderer\"-Feld ein, wenn die anderen Werte nicht funktionieren. Mehr Informationen finden Sie in der Dokumentation zur \"mode page 01h\" in Kapitel 6 der MMC-3-Spezifikation oder einer späteren Ausgabe von MMC." -#: src/preferences.c:1987 +#: src/preferences.c:1997 msgid "Internal read attempts" msgstr "Leseversuche innerhalb des Laufwerks" -#: src/preferences.c:1988 +#: src/preferences.c:1998 msgid "Reread defective sectors" msgstr "Beschädigte Sektoren" -#: src/preferences.c:1991 +#: src/preferences.c:2001 msgid "times" msgstr "mal lesen" -#: src/preferences.c:2022 +#: src/preferences.c:2032 msgid "" "Internal read attempts\n" "\n" @@ -2049,15 +2022,15 @@ msgstr "" "Ein Wert von 0 oder 1 verkürzt die Bearbeitungszeit und die Belastung des Laufwerks; allerdings ignorieren viele Laufwerke diese Einstellungen.\n" "Benutzen Sie den Wert -1 um die Standardeinstellungen des Laufwerks zu verwenden." -#: src/preferences.c:2035 src/preferences.c:2038 +#: src/preferences.c:2045 src/preferences.c:2048 msgid "Fatal error handling" msgstr "Behandlung schwerwiegender Fehler" -#: src/preferences.c:2039 +#: src/preferences.c:2049 msgid "Ignore fatal errors" msgstr "Schwerwiegende Fehler nicht beachten" -#: src/preferences.c:2066 +#: src/preferences.c:2076 msgid "" "Fatal error handling\n" "\n" @@ -2069,15 +2042,15 @@ msgstr "" "Normalerweise beendet dvdisaster seinen Lesevorgang, wenn das Laufwerk einen schwerwiegenden Fehler meldet. Dies verhindert weitere fruchtlose Leseversuche und eine mögliche Beschädigung des Laufwerks.\n" "Einige Laufwerke melden allerdings grundlos schwerwiegende Fehler. Für diese Laufwerke mag es nötig sein, diese Fehler nicht zu beachten, um beschädigte Datenträger unterbrechungsfrei einlesen zu können." -#: src/preferences.c:2076 +#: src/preferences.c:2086 msgid "Media ejection" msgstr "Datenträger auswerfen" -#: src/preferences.c:2079 src/preferences.c:2080 +#: src/preferences.c:2089 src/preferences.c:2090 msgid "Eject medium after successful read" msgstr "Datenträger nach erfolgreichem Lesen auswerfen" -#: src/preferences.c:2107 +#: src/preferences.c:2117 msgid "" "Medium ejection\n" "\n" @@ -2091,23 +2064,23 @@ msgstr "" "\n" "Bitte beachten Sie daß dies möglicherweise vom Betriebssystem nicht zugelassen wird. Verwenden Sie in diesem Fall die Benutzeroberfläche Ihrer Arbeitsumgebung zum Auswerfen des Datenträgers." -#: src/preferences.c:2117 +#: src/preferences.c:2127 msgid "Read attempts" msgstr "Leseversuche" -#: src/preferences.c:2121 +#: src/preferences.c:2131 msgid "Sector read errors" msgstr "Lesefehler in Sektoren" -#: src/preferences.c:2130 +#: src/preferences.c:2140 msgid "Raw reading" msgstr "\"Raw\"-Lesen" -#: src/preferences.c:2130 +#: src/preferences.c:2141 msgid "Read and analyze raw sectors" msgstr "Sektoren \"raw\" lesen und untersuchen" -#: src/preferences.c:2152 +#: src/preferences.c:2163 msgid "" "Raw reading (affects CD media only)\n" "\n" @@ -2136,17 +2109,17 @@ msgstr "" "\n" "Zum Aufbewahren von Roh-Sektoren muß zusätzlich die betreffende Option aktiviert sein." -#: src/preferences.c:2169 +#: src/preferences.c:2180 msgid "Minimum number of reading attempts" msgstr "Mindestens durchgeführte Anzahl von Leseversuchen" -#: src/preferences.c:2171 src/preferences.c:2172 src/preferences.c:2177 -#: src/preferences.c:2178 +#: src/preferences.c:2183 src/preferences.c:2184 src/preferences.c:2189 +#: src/preferences.c:2190 #, c-format msgid "Min. %d reading attempts per sector" msgstr "Mindestens %d Leseversuche pro Sektor" -#: src/preferences.c:2199 +#: src/preferences.c:2211 msgid "" "Minimum number of reading attempts\n" "\n" @@ -2160,17 +2133,17 @@ msgstr "" "\n" "Mehr Leseversuche können die Ausbeute an lesbaren Sektoren bei Datenträgern erhöhen, die sich an der Grenze zur Unlesbarkeit befinden. Es erhöht aber auch die Bearbeitungszeit und den Verschleiß des Laufwerks." -#: src/preferences.c:2208 +#: src/preferences.c:2220 msgid "Maximum number of reading attempts" msgstr "Höchstens durchgeführte Anzahl von Leseversuchen" -#: src/preferences.c:2210 src/preferences.c:2211 src/preferences.c:2216 -#: src/preferences.c:2217 +#: src/preferences.c:2223 src/preferences.c:2224 src/preferences.c:2229 +#: src/preferences.c:2230 #, c-format msgid "Max. %d reading attempts per sector" msgstr "Höchstens %d Leseversuche pro Sektor" -#: src/preferences.c:2238 +#: src/preferences.c:2251 msgid "" "Maximum number of reading attempts\n" "\n" @@ -2184,23 +2157,23 @@ msgstr "" "\n" "Die Entscheidung für weitere Leseversuche wird anhand der Qualität der bisher gesammelten Daten getroffen; dies wiederum wird von den Fähigkeiten des optischen Laufwerks und des Betriebssystems beeinflußt. Ob dvdisaster den Höchstwert wirklich ausnutzt hängt daher von Ihrer System-Konfiguration ab." -#: src/preferences.c:2252 +#: src/preferences.c:2265 msgid "Treatment of unreadable areas" msgstr "Behandlung von unlesbaren Bereichen" -#: src/preferences.c:2254 src/preferences.c:2256 src/preferences.c:2257 -#: src/preferences.c:2265 +#: src/preferences.c:2268 src/preferences.c:2270 src/preferences.c:2271 +#: src/preferences.c:2279 #, c-format msgid "Skip %d sectors after read error" msgstr "Überspringe %d Sektoren nach einem Lesefehler" -#: src/preferences.c:2255 src/preferences.c:2260 src/preferences.c:2261 -#: src/preferences.c:2266 +#: src/preferences.c:2269 src/preferences.c:2274 src/preferences.c:2275 +#: src/preferences.c:2280 #, c-format msgid "Stop reading when unreadable intervals < %d" msgstr "Lesen beenden wenn unlesbare Bereiche < %d" -#: src/preferences.c:2292 +#: src/preferences.c:2306 msgid "" "Treatment of unreadable areas\n" "\n" @@ -2214,15 +2187,15 @@ msgstr "" "\n" "Auswirkungen auf das lineare Leseverfahren:" -#: src/preferences.c:2299 +#: src/preferences.c:2313 msgid "Skipping a large number of sectors (e.g. 1024) gives a quick overview of damaged areas, but will usually not collect enough data for repairing the image." msgstr "Das Überspringen einer großen Anzahl von Sektoren (z.B 1024) ergibt eine schnelle Übersicht über die Beschädigung des Datenträgers. Es liefert aber in der Regel nicht genügend Daten für eine erfolgreiche Fehlerkorrektur." -#: src/preferences.c:2303 +#: src/preferences.c:2317 msgid "Smaller values like 16, 32 or 64 are a good trade-off: The processing time will beconsiderably shortened, but still enough data for repairing the image is collected.\n" msgstr "Kleinere Werte von 16, 32 oder 64 sind ein guter Kompromiß zwischen verringerter Bearbeitungszeit und Wiederherstellbarkeit des Datenträger-Abbildes.\n" -#: src/preferences.c:2307 +#: src/preferences.c:2321 msgid "" "The adaptive reading strategy uses this setting only if no error correction data is available. In that case the reading process will stop when no unread areas larger than the selected size remain. Values smaller than 128 are not recommended as they cause the drive to carry out lots of laser head repositioning during the final phase of the reading process. If adaptive reading with a setting of 128 is not sufficient, try reading the remaining sectors with an additional linear reading pass.\n" "\n" @@ -2232,19 +2205,19 @@ msgstr "" "\n" "Auf DVD/BD-Datenträgern erstrecken sich Lesefehler aus technischen Gründen über mindestens 16 Sektoren. Daher sind Werte kleiner als 16 für DVD und BD nicht sinnvoll." -#: src/preferences.c:2320 src/preferences.c:2323 +#: src/preferences.c:2334 src/preferences.c:2337 msgid "Media read attempts" msgstr "Leseversuche für den gesamten Datenträger" -#: src/preferences.c:2324 +#: src/preferences.c:2338 msgid "Read the whole medium " msgstr "Gesamten Datenträger bis zu " -#: src/preferences.c:2340 +#: src/preferences.c:2354 msgid " times" msgstr " mal lesen" -#: src/preferences.c:2355 +#: src/preferences.c:2369 msgid "" "Media read attempts for the linear reading strategy\n" "\n" @@ -2259,15 +2232,15 @@ msgstr "" "\n" "Nur die fehlenden Sektoren werden in den zusätzlichen Durchläufen erneut versucht zu lesen." -#: src/preferences.c:2372 +#: src/preferences.c:2386 msgid "Keep uncorrectable raw sectors in the following directory:" msgstr "Unvollständige Roh-Sektoren in diesem Verzeichnis aufbewahren:" -#: src/preferences.c:2380 src/preferences.c:3196 +#: src/preferences.c:2394 src/preferences.c:3215 msgid "Select" msgstr "Auswählen" -#: src/preferences.c:2421 +#: src/preferences.c:2435 msgid "" "Raw sector caching\n" "\n" @@ -2287,15 +2260,15 @@ msgstr "" "Bitte beachten Sie, daß nicht alle Laufwerke und Betriebssysteme das teilweise Lesen von beschädigten Sektoren unterstützen. Es ist kein Fehler wenn das angegebene Verzeichnis leer bleibt.\n" "dvdisaster entfernt keine Dateien aus dem Verzeichnis; Sie müssen es selbst leeren wenn die Datenrekonstruktion erfolgreich war." -#: src/preferences.c:2439 +#: src/preferences.c:2453 msgid "Raw sector file prefix" msgstr "Anfang für Roh-Sektor-Dateinamen" -#: src/preferences.c:2440 +#: src/preferences.c:2454 msgid "Raw sector file prefix: " msgstr "Anfang für Roh-Sektor-Dateinamen: " -#: src/preferences.c:2463 +#: src/preferences.c:2477 msgid "" "Raw sector file prefix\n" "\n" @@ -2305,26 +2278,26 @@ msgstr "" "\n" "Verwenden Sie einen eindeutigen Anfang für jeden Datenträger, den Sie wiederherstellen möchten, zum Beispiel \"disc1-\" und so weiter." -#: src/preferences.c:2471 +#: src/preferences.c:2485 msgid "Error correction" msgstr "Fehlerkorrektur" -#: src/preferences.c:2473 +#: src/preferences.c:2487 msgid "Error correction method" msgstr "Fehlerkorrektur-Verfahren" -#: src/preferences.c:2474 +#: src/preferences.c:2488 msgid "Storage method:" msgstr "Abspeichern in:" -#: src/preferences.c:2514 +#: src/preferences.c:2528 msgid "" "Error correction method\n" "\n" "dvdisaster creates error correction data which is used to recover unreadable sectors if the disc becomes damaged later on. There are different codecs and ways available for storing the error correction information:\n" msgstr "dvdisaster erzeugt Fehlerkorrektur-Daten um Sektoren wiederzuherstellen, die bei einer späteren Beschädigung des Datenträgers unlesbar werden. Es gibt verschiedene Kodierer/Dekodierer und Möglichkeiten zum Speichern der Fehlerkorrektur-Daten:\n" -#: src/preferences.c:2520 +#: src/preferences.c:2534 msgid "" "The RS01 codec\n" "RS01 is the recommended codec for storing error correction data in separate files.\n" @@ -2332,7 +2305,7 @@ msgstr "" "Der RS01-Kodierer/Dekodierer\n" "RS01 ist der empfohlene Kodierer um Fehlerkorrektur-Daten in eigenständigen Dateien abzulegen.\n" -#: src/preferences.c:2523 +#: src/preferences.c:2537 msgid "" "The RS02 codec\n" "RS02 is the currently recommended codec for augmenting images with error correction data.\n" @@ -2340,7 +2313,7 @@ msgstr "" "Der RS02-Kodierer/Dekodierer\n" "RS02 ist der empfohlene Kodierer um Fehlerkorrektur-Daten direkt in einem Abbild abzulegen.\n" -#: src/preferences.c:2527 +#: src/preferences.c:2541 msgid "" "The RS03 codec (Warning: experimental)\n" "RS03 can either store error correction data in a separate file or augment the image with it. It provides multithreading to scale with multicore processors and contains some subtle improvements over RS01 and RS02. However it should not be used for productive work unless a stable version is released with dvdisaster V0.80." @@ -2348,23 +2321,23 @@ msgstr "" "Der RS03-Kodierer/Dekodierer (Warnung: experimentell)\n" "RS03 kann Fehlerkorrektur-Daten sowohl in eigenständigen Dateien ablegen als auch ein Abbild direkt damit erweitern. Er arbeitet mit mehreren Kontrollfäden um Mehrkern-Prozessoren besser auszunutzen. Gegenüber RS01 und RS02 gibt es weitere kleinere Verbesserungen. RS03 sollte aber erst für wichtige Anwendungen benutzt werden wenn eine stabile Version mit dvdisaster V0.80 veröffentlicht ist." -#: src/preferences.c:2565 +#: src/preferences.c:2578 msgid "Files" msgstr "Dateien" -#: src/preferences.c:2569 +#: src/preferences.c:2582 msgid "Local files (on hard disk)" msgstr "Lokale Dateien (auf Festplatte)" -#: src/preferences.c:2576 +#: src/preferences.c:2589 msgid "Automatic file suffixes" msgstr "Automatisches Anfügen von Dateiendungen" -#: src/preferences.c:2576 +#: src/preferences.c:2590 msgid "Automatically add .iso and .ecc file suffixes" msgstr "Automatisches Anfügen der .iso- und .ecc-Dateiendungen" -#: src/preferences.c:2601 +#: src/preferences.c:2615 msgid "" "Automatically add file suffixes\n" "\n" @@ -2374,19 +2347,19 @@ msgstr "" "\n" "Dieser Schalter bewirkt, daß Dateien automatisch mit den Endungen \".iso\" oder \".ecc\" versehen werden, sofern nicht bereits eine andere Endung angegeben wurde." -#: src/preferences.c:2607 +#: src/preferences.c:2621 msgid "Automatic file creation and deletion" msgstr "Automatisches Erzeugen und Löschen von Dateien" -#: src/preferences.c:2616 +#: src/preferences.c:2630 msgid "Automatic .ecc file creation" msgstr "Fehlerkorrektur-Datei automatisch erzeugen" -#: src/preferences.c:2616 +#: src/preferences.c:2631 msgid "Create error correction file after reading image" msgstr "Fehlerkorrektur-Datei erzeugen, nachdem Abbild eingelesen wurde" -#: src/preferences.c:2640 +#: src/preferences.c:2655 msgid "" "Automatic error correction file creation\n" "\n" @@ -2396,15 +2369,15 @@ msgstr "" "\n" "Nach dem erfolgreichen Einlesen eines Abbilds wird automatisch eine Fehlerkorrektur-Datei erzeugt. Zusammen mit der \"Abbild löschen\"- Funktion beschleunigt dies das Erstellen von Fehlerkorrektur-Dateien für mehrere Datenträger." -#: src/preferences.c:2647 +#: src/preferences.c:2662 msgid "Automatic image file removal" msgstr "Abbild-Datei automatisch löschen" -#: src/preferences.c:2647 +#: src/preferences.c:2663 msgid "Remove image after error correction file creation" msgstr "Abbild löschen, wenn Fehlerkorrektur-Datei erfolgreich erstellt wurde" -#: src/preferences.c:2671 +#: src/preferences.c:2687 msgid "" "Automatic image file removal\n" "\n" @@ -2414,15 +2387,15 @@ msgstr "" "\n" "Nach dem erfolgreichen Erstellen einer Fehlerkorrektur-Datei wird die zugehörige Abbild-Datei gelöscht, wenn dieser Schalter aktiviert ist." -#: src/preferences.c:2677 src/preferences.c:2686 +#: src/preferences.c:2693 src/preferences.c:2702 msgid "Confirm file overwriting" msgstr "Überschreiben von Dateien bestätigen" -#: src/preferences.c:2686 +#: src/preferences.c:2703 msgid "Ask before overwriting image and ecc files" msgstr "Nachfragen bevor Abbild- und Fehlerkorrektur-Dateien überschrieben werden" -#: src/preferences.c:2710 +#: src/preferences.c:2727 msgid "" "Ask before overwriting image and ecc files\n" "\n" @@ -2432,24 +2405,24 @@ msgstr "" "\n" "dvdisaster wird um Bestätigung zum Überschreiben von Abbild- und Fehlerkorrektur-Dateien bitten wenn diese Option ausgewählt ist." -#: src/preferences.c:2717 +#: src/preferences.c:2734 msgid "Appearance" msgstr "Darstellung" -#: src/preferences.c:2729 +#: src/preferences.c:2746 msgid "Sector coloring" msgstr "Sektor-Farben" -#: src/preferences.c:2740 src/rs01-verify.c:123 src/rs02-verify.c:118 -#: src/rs03-verify.c:127 +#: src/preferences.c:2757 src/rs01-verify.c:127 src/rs02-verify.c:120 +#: src/rs03-verify.c:130 msgid "Good sectors" msgstr "Gute Sektoren" -#: src/preferences.c:2740 +#: src/preferences.c:2757 msgid "Good sector" msgstr "Guter Sektor" -#: src/preferences.c:2765 +#: src/preferences.c:2782 msgid "" "Good sectors\n" "\n" @@ -2459,15 +2432,15 @@ msgstr "" "\n" "Diese Farbe kennzeichnet gute Sektoren." -#: src/preferences.c:2770 +#: src/preferences.c:2787 msgid "Checksum errors" msgstr "Prüfsummen-Fehler" -#: src/preferences.c:2770 +#: src/preferences.c:2787 msgid "Checksum error" msgstr "Prüfsummen-Fehler" -#: src/preferences.c:2795 +#: src/preferences.c:2812 msgid "" "Checksum errors\n" "\n" @@ -2477,15 +2450,15 @@ msgstr "" "\n" "Diese Farbe markiert Sektoren mit fehlerhaften Prüfsummen." -#: src/preferences.c:2800 +#: src/preferences.c:2817 msgid "Unreadable sectors" msgstr "Unlesbare Sektoren" -#: src/preferences.c:2800 +#: src/preferences.c:2817 msgid "Unreadable" msgstr "Unlesbar" -#: src/preferences.c:2825 +#: src/preferences.c:2842 msgid "" "Unreadable sectors\n" "\n" @@ -2495,15 +2468,15 @@ msgstr "" "\n" "Diese Farbe wird für unlesbare Sektoren verwendet." -#: src/preferences.c:2830 +#: src/preferences.c:2847 msgid "Present sectors" msgstr "Vorhandene Sektoren" -#: src/preferences.c:2830 +#: src/preferences.c:2847 msgid "Present sector" msgstr "Vorhandener Sektor" -#: src/preferences.c:2855 +#: src/preferences.c:2872 msgid "" "Present sectors\n" "\n" @@ -2513,15 +2486,15 @@ msgstr "" "\n" "Bereits vorhandene Sektoren werden mit dieser Farbe angezeigt." -#: src/preferences.c:2860 +#: src/preferences.c:2877 msgid "Ignored sectors" msgstr "Unberücksichtigt" -#: src/preferences.c:2860 +#: src/preferences.c:2877 msgid "Ignored sector" msgstr "Unberücksichtigt" -#: src/preferences.c:2885 +#: src/preferences.c:2902 msgid "" "Ignored sectors\n" "\n" @@ -2531,15 +2504,15 @@ msgstr "" "\n" "Mit dieser Farbe markierte Sektoren werden während des momentanen Programmlaufs nicht berücksichtigt." -#: src/preferences.c:2891 +#: src/preferences.c:2908 msgid "Highlit sectors" msgstr "Hervorgehoben" -#: src/preferences.c:2891 +#: src/preferences.c:2908 msgid "Highlit sector" msgstr "Hervorgehoben" -#: src/preferences.c:2916 +#: src/preferences.c:2933 msgid "" "Highlit sectors\n" "\n" @@ -2549,15 +2522,15 @@ msgstr "" "\n" "Diese Farbe wird beim angepaßten Lesen verwendet, um Sektoren kurzzeitig hervorzuheben." -#: src/preferences.c:2922 +#: src/preferences.c:2939 msgid "Text colors" msgstr "Text-Farben" -#: src/preferences.c:2932 +#: src/preferences.c:2949 msgid "Positive text" msgstr "Positiver Text" -#: src/preferences.c:2957 +#: src/preferences.c:2974 msgid "" "Positive text\n" "\n" @@ -2567,11 +2540,11 @@ msgstr "" "\n" "Gute Nachrichten werden in dieser Farbe ausgegeben." -#: src/preferences.c:2962 +#: src/preferences.c:2979 msgid "Negative text" msgstr "Negativer Text" -#: src/preferences.c:2987 +#: src/preferences.c:3004 msgid "" "Negative text\n" "\n" @@ -2581,15 +2554,15 @@ msgstr "" "\n" "Schlechte Nachrichten erscheinen in dieser Farbe." -#: src/preferences.c:2992 +#: src/preferences.c:3009 msgid "Curve colors" msgstr "Lesekurve und Fehlerkorrektur" -#: src/preferences.c:3001 +#: src/preferences.c:3018 msgid "Curve color" msgstr "Lesekurve" -#: src/preferences.c:3026 +#: src/preferences.c:3043 msgid "" "Curve color and labels\n" "\n" @@ -2599,11 +2572,11 @@ msgstr "" "\n" "Die Kurve der Lesegeschwindigkeit sowie ihre Beschriftungen erscheinen in dieser Farbe." -#: src/preferences.c:3032 src/read-linear-window.c:445 +#: src/preferences.c:3049 src/read-linear-window.c:455 msgid "C2 errors" msgstr "C2-Fehler" -#: src/preferences.c:3057 +#: src/preferences.c:3074 msgid "" "C2 error color\n" "\n" @@ -2613,11 +2586,11 @@ msgstr "" "\n" "Die logarithmische Balkengraphik zur Darstellung von C2-Fehlern wird in dieser Farbe während der \"Prüfen\"- und \"Lesen\"-Aktionen dargestellt." -#: src/preferences.c:3064 +#: src/preferences.c:3081 msgid "Error correction load" msgstr "Fehlerkorrektur" -#: src/preferences.c:3089 +#: src/preferences.c:3106 msgid "" "Error correction load\n" "\n" @@ -2627,19 +2600,19 @@ msgstr "" "\n" "Die Balkengraphik zur Auslastung der Fehlerkorrektur wird in dieser Farbe ausgegeben (während der \"Reparieren\"-Aktion)." -#: src/preferences.c:3101 +#: src/preferences.c:3118 msgid "Default color scheme" msgstr "Standard-Farbschema" -#: src/preferences.c:3109 +#: src/preferences.c:3126 msgid "Dialog boxes" msgstr "Dialog-Fenster" -#: src/preferences.c:3112 +#: src/preferences.c:3129 src/preferences.c:3130 msgid "Reverse OK / Cancel buttons" msgstr "OK / Abbrechen - Knöpfe vertauschen" -#: src/preferences.c:3137 +#: src/preferences.c:3155 msgid "" "Reverse OK / Cancel buttons\n" "\n" @@ -2653,19 +2626,19 @@ msgstr "" "\n" "Die Änderungen werden erst nach einem Neustart von dvdisaster wirksam." -#: src/preferences.c:3144 +#: src/preferences.c:3162 msgid "Misc" msgstr "Sonstiges" -#: src/preferences.c:3148 +#: src/preferences.c:3166 msgid "Logging" msgstr "Protokollierung" -#: src/preferences.c:3155 +#: src/preferences.c:3173 src/preferences.c:3174 msgid "Verbose logging" msgstr "Ausführliche Protokollierung" -#: src/preferences.c:3180 +#: src/preferences.c:3199 msgid "" "Verbose logging\n" "\n" @@ -2675,19 +2648,19 @@ msgstr "" "\n" "Im Protokoll-Fenster bzw. der Protokoll-Datei werden ausführlichere Informationen abgelegt. Dies ist hilfreich bei der Fehlersuche, kann aber die Ausführungsgeschwindigkeit beeinträchtigen." -#: src/preferences.c:3187 +#: src/preferences.c:3206 msgid "Logfile:" msgstr "Protokoll-Datei:" -#: src/preferences.c:3188 +#: src/preferences.c:3207 msgid "Copy log to file:" msgstr "Kopiere Protokoll in Datei:" -#: src/preferences.c:3197 +#: src/preferences.c:3216 msgid "Delete" msgstr "Löschen" -#: src/preferences.c:3245 +#: src/preferences.c:3264 msgid "" "Logfile\n" "\n" @@ -2697,289 +2670,289 @@ msgstr "" "\n" "Der Inhalt des Protokoll-Fensters wird zusätzlich in die angegebene Datei geschrieben. Dies ist hilfreich um Informationen über Programmabstürze zu sammeln, beeinträchtigt aber die Ausführungsgeschwindigkeit erheblich." -#: src/print-sense.c:613 +#: src/print-sense.c:615 #, c-format msgid "Sense error (0x%02x); " msgstr "Laufwerk meldet Fehler 0x%02x; " -#: src/print-sense.c:615 +#: src/print-sense.c:617 #, c-format msgid "Sense error: %s%c " msgstr "Laufwerk meldet Fehler: %s%c " -#: src/print-sense.c:629 +#: src/print-sense.c:631 #, c-format msgid "unknown asc/ascq code (0x%02x, 0x%02x)." msgstr "unbekannter asc/ascq-Kode (0x%02x, 0x%02x)." -#: src/raw-editor.c:297 +#: src/raw-editor.c:299 msgid "windowtitle|Raw sector dump selection" msgstr "Rohsektoren-Datei auswählen" -#: src/raw-editor.c:328 +#: src/raw-editor.c:330 #, c-format msgid "%s loaded, LBA %, %d samples." msgstr "%s geladen; LBA %, %d Sektor-Bruchstücke." -#: src/raw-editor.c:352 +#: src/raw-editor.c:354 msgid "EDC checksum does not match - sector still defective!" msgstr "EDC-Prüfsumme stimmt nicht - Sektor is immer noch beschädigt!" -#: src/raw-editor.c:357 +#: src/raw-editor.c:359 msgid "LBA does not match MSF code in sector!" msgstr "LBA paßt nicht zum MSF-Kode im Sektor!" -#: src/raw-editor.c:384 +#: src/raw-editor.c:386 msgid "Raw sector does not belong to the selected image!" msgstr "Rohsektor gehört nicht zum ausgewählten Abbild!" -#: src/raw-editor.c:390 src/read-adaptive.c:1348 src/read-adaptive.c:1428 -#: src/read-adaptive.c:1770 src/read-adaptive.c:1988 src/read-linear.c:426 -#: src/read-linear.c:708 src/read-linear.c:1048 src/rs01-fix.c:501 -#: src/rs01-fix.c:761 src/rs02-fix.c:786 src/rs03-fix.c:865 +#: src/raw-editor.c:392 src/read-adaptive.c:1279 src/read-adaptive.c:1351 +#: src/read-adaptive.c:1674 src/read-adaptive.c:1873 src/read-linear.c:394 +#: src/read-linear.c:667 src/read-linear.c:1018 src/rs01-fix.c:469 +#: src/rs01-fix.c:729 src/rs02-fix.c:750 src/rs03-fix.c:824 #, c-format msgid "Failed seeking to sector % in image [%s]: %s" msgstr "Ansteuern von Sektor % im Abbild fehlgeschlagen [%s]: %s" -#: src/raw-editor.c:397 src/read-adaptive.c:1362 src/read-adaptive.c:1434 -#: src/read-adaptive.c:1802 src/read-adaptive.c:1817 src/read-adaptive.c:1996 -#: src/read-linear.c:435 src/read-linear.c:715 src/rs01-fix.c:195 -#: src/rs01-fix.c:508 +#: src/raw-editor.c:399 src/read-adaptive.c:1293 src/read-adaptive.c:1357 +#: src/read-adaptive.c:1706 src/read-adaptive.c:1719 src/read-adaptive.c:1881 +#: src/read-linear.c:403 src/read-linear.c:674 src/rs01-fix.c:185 +#: src/rs01-fix.c:476 #, c-format msgid "Failed writing to sector % in image [%s]: %s" msgstr "Schreiben von Sektor % im Abbild fehlgeschlagen [%s]: %s" -#: src/raw-editor.c:418 +#: src/raw-editor.c:420 msgid "windowtitle|Load buffer from file" msgstr "Puffer aus Datei laden" -#: src/raw-editor.c:436 +#: src/raw-editor.c:438 msgid "windowtitle|Save buffer to file" msgstr "Puffer in Datei speichern" -#: src/raw-editor.c:474 +#: src/raw-editor.c:476 #, c-format msgid "Buffer loaded from %s." msgstr "Puffer aus Datei %s geladen." -#: src/raw-editor.c:489 +#: src/raw-editor.c:491 #, c-format msgid "Buffer saved to %s." msgstr "Puffer als Datei %s gespeichert." -#: src/raw-editor.c:576 +#: src/raw-editor.c:578 msgid "*** Well done: Sector has been recovered! ***" msgstr "*** Gut gemacht: Sektor ist wiederhergestellt! ***" -#: src/raw-editor.c:579 +#: src/raw-editor.c:582 #, c-format msgid "Current buffer state: P %d/%d, Q %d/%d" msgstr "Momentaner Pufferzustand: P %d/%d, Q %d/%d" -#: src/raw-editor.c:690 +#: src/raw-editor.c:694 #, c-format msgid "%c Vector %d has >2 erasures (nothing done)." msgstr "%c-Vektor %d hat >2 Auslöschungen (nichts wurde verändert)." -#: src/raw-editor.c:719 +#: src/raw-editor.c:723 #, c-format msgid "%c Vector %d already good." msgstr "%c-Vektor %d ist bereits in Ordnung." -#: src/raw-editor.c:727 +#: src/raw-editor.c:731 #, c-format msgid "%c Vector %d corrected (%d erasures)." msgstr "%c-Vektor %d korrigiert (%d Auslöschungen)." -#: src/raw-editor.c:730 +#: src/raw-editor.c:734 #, c-format msgid "%c Vector %d not correctable (%d erasures)." msgstr "%c-Vektor %d nicht korrigierbar (%d Auslöschungen)." -#: src/raw-editor.c:745 +#: src/raw-editor.c:749 #, c-format msgid "no replacements for P vector %d available" msgstr "keine Ersetzungsmöglichkeiten für P-Vektor %d verfügbar" -#: src/raw-editor.c:761 +#: src/raw-editor.c:765 #, c-format msgid "Exchanged P vector %d with version %d (of %d)." msgstr "P-Vektor %d durch Version %d (von %d) ersetzt." -#: src/raw-editor.c:783 +#: src/raw-editor.c:787 #, c-format msgid "no replacements for Q vector %d available" msgstr "keine Ersetzungsmöglichkeiten für Q-Vektor %d verfügbar." -#: src/raw-editor.c:797 +#: src/raw-editor.c:801 #, c-format msgid "Exchanged Q vector %d with version %d (of %d)." msgstr "Q-Vektor %d durch Version %d (von %d) ersetzt." -#: src/raw-editor.c:858 src/raw-editor.c:871 +#: src/raw-editor.c:862 src/raw-editor.c:875 #, c-format msgid "Showing sample %d (of %d)." msgstr "Zeige Sektor-Bruchstück %d (von %d)." -#: src/raw-editor.c:917 +#: src/raw-editor.c:921 msgid "Sector with lowest P failures selected." msgstr "Sektor mit geringsten P-Fehlern ausgewählt." -#: src/raw-editor.c:927 +#: src/raw-editor.c:931 msgid "Sector with lowest Q failures selected." msgstr "Sektor mit geringsten Q-Fehlern ausgewählt." -#: src/raw-editor.c:939 +#: src/raw-editor.c:942 #, c-format msgid "Smart L-EC: %s" msgstr "Smart L-EC: %s" -#: src/raw-editor.c:960 +#: src/raw-editor.c:963 msgid "Raw sector editor" msgstr "Rohsektoren-Editor" -#: src/raw-editor.c:982 +#: src/raw-editor.c:985 msgid "Please load a raw sector file!" msgstr "Bitte laden Sie eine Rohsektoren-Datei!" -#: src/raw-editor.c:994 +#: src/raw-editor.c:997 msgid "Browsing" msgstr "Sektor-Datei durchblättern" -#: src/raw-editor.c:1006 +#: src/raw-editor.c:1009 msgid "button|Load" msgstr "Laden" -#: src/raw-editor.c:1011 +#: src/raw-editor.c:1014 msgid "button|Save" msgstr "Speichern" -#: src/raw-editor.c:1017 +#: src/raw-editor.c:1020 msgid "button|Prev. sector" msgstr "Vorher. Sektor" -#: src/raw-editor.c:1022 +#: src/raw-editor.c:1025 msgid "button|Next sector" msgstr "Nächst. Sektor" -#: src/raw-editor.c:1027 +#: src/raw-editor.c:1030 msgid "button|Sort by P" msgstr "Nach P sortieren" -#: src/raw-editor.c:1032 +#: src/raw-editor.c:1035 msgid "button|Sort by Q" msgstr "Nach Q sortieren" -#: src/raw-editor.c:1039 +#: src/raw-editor.c:1042 msgid "Editing" msgstr "Bearbeiten" -#: src/raw-editor.c:1051 +#: src/raw-editor.c:1054 msgid "button|Load Buf" msgstr "Puffer laden" -#: src/raw-editor.c:1056 +#: src/raw-editor.c:1059 msgid "button|Save Buf" msgstr "Puffer speichern" -#: src/raw-editor.c:1061 +#: src/raw-editor.c:1064 msgid "button|Tag diffs" msgstr "Unterschiede markieren" -#: src/raw-editor.c:1066 +#: src/raw-editor.c:1069 msgid "button|Untag all" msgstr "Markierung aufheben" -#: src/raw-editor.c:1071 +#: src/raw-editor.c:1074 msgid "button|Redo" msgstr "Erneut anwenden" -#: src/raw-editor.c:1076 +#: src/raw-editor.c:1079 msgid "button|Undo" msgstr "Zurücknehmen" -#: src/raw-editor.c:1083 +#: src/raw-editor.c:1086 msgid "Correction" msgstr "Korrektur" -#: src/raw-editor.c:1086 +#: src/raw-editor.c:1089 msgid "button|P vector" msgstr "P-Vektor" -#: src/raw-editor.c:1091 +#: src/raw-editor.c:1094 msgid "button|Q vector" msgstr "Q-Vektor" -#: src/raw-editor.c:1096 +#: src/raw-editor.c:1099 msgid "button|Find other P" msgstr "Finde anderes P" -#: src/raw-editor.c:1101 +#: src/raw-editor.c:1104 msgid "button|Find other Q" msgstr "Finde anderes Q" -#: src/raw-editor.c:1106 +#: src/raw-editor.c:1109 msgid "button|Tag erasures" msgstr "Auslöschungen markieren" -#: src/raw-editor.c:1113 +#: src/raw-editor.c:1116 msgid "Heuristics" msgstr "Heuristiken" -#: src/raw-editor.c:1116 +#: src/raw-editor.c:1119 msgid "button|Smart L-EC" msgstr "Smart L-EC" -#: src/raw-sector-cache.c:35 src/raw-sector-cache.c:209 -#: src/raw-sector-cache.c:354 src/scsi-freebsd.c:131 src/scsi-freebsd.c:141 -#: src/scsi-linux.c:115 src/scsi-linux.c:124 src/scsi-netbsd.c:126 -#: src/scsi-netbsd.c:136 src/scsi-win32.c:256 +#: src/raw-sector-cache.c:37 src/raw-sector-cache.c:204 +#: src/raw-sector-cache.c:338 src/scsi-freebsd.c:133 src/scsi-freebsd.c:143 +#: src/scsi-linux.c:117 src/scsi-linux.c:126 src/scsi-netbsd.c:128 +#: src/scsi-netbsd.c:138 src/scsi-win32.c:256 #, c-format msgid "Could not open %s: %s" msgstr "Konnte %s nicht öffnen: %s" -#: src/raw-sector-cache.c:60 src/raw-sector-cache.c:124 -#: src/raw-sector-cache.c:130 src/raw-sector-cache.c:134 -#: src/raw-sector-cache.c:162 src/raw-sector-cache.c:267 +#: src/raw-sector-cache.c:62 src/raw-sector-cache.c:126 +#: src/raw-sector-cache.c:132 src/raw-sector-cache.c:136 +#: src/raw-sector-cache.c:164 src/raw-sector-cache.c:262 #, c-format msgid "Failed writing to defective sector file: %s" msgstr "Schreiben der Defekte-Sektoren-Datei fehlgeschlagen: %s" -#: src/raw-sector-cache.c:80 src/raw-sector-cache.c:105 -#: src/raw-sector-cache.c:223 src/raw-sector-cache.c:324 -#: src/raw-sector-cache.c:370 +#: src/raw-sector-cache.c:82 src/raw-sector-cache.c:107 +#: src/raw-sector-cache.c:218 src/raw-sector-cache.c:314 +#: src/raw-sector-cache.c:354 #, c-format msgid "Failed reading from defective sector file: %s" msgstr "Lesen der Defekte-Sektoren-Datei fehlgeschlagen: %s" -#: src/raw-sector-cache.c:88 +#: src/raw-sector-cache.c:90 msgid "Defective sector file is truncated" msgstr "Defekte-Sektoren-Datei ist unvollständig" -#: src/raw-sector-cache.c:112 src/raw-sector-cache.c:138 -#: src/raw-sector-cache.c:150 src/raw-sector-cache.c:216 -#: src/raw-sector-cache.c:231 +#: src/raw-sector-cache.c:114 src/raw-sector-cache.c:140 +#: src/raw-sector-cache.c:152 src/raw-sector-cache.c:211 +#: src/raw-sector-cache.c:226 #, c-format msgid "Failed seeking in defective sector file: %s" msgstr "Ansteuern der Defekte-Sektoren-Datei fehlgeschlagen: %s" -#: src/raw-sector-cache.c:169 +#: src/raw-sector-cache.c:171 msgid "Fingerprints of medium and defective sector cache do not match!" msgstr "" "Fingerabdrücke vom Abbild und der Defekte-Sektoren-Datei\n" "stimmen nicht überein!" -#: src/raw-sector-cache.c:203 +#: src/raw-sector-cache.c:198 #, c-format msgid " [Creating new cache file %s]\n" msgstr " [Erzeuge neue Datei %s]\n" -#: src/raw-sector-cache.c:280 +#: src/raw-sector-cache.c:270 #, c-format msgid " [Appended %d/%d sectors to cache file %s; LBA=%, ssize=%d, %d sectors]\n" msgstr " [%d/%d Sektoren der Datei %s hinzugefügt; LBA=%, S.-Größe=%d, %d Sektoren]\n" -#: src/read-adaptive.c:55 src/rs01-create.c:1080 +#: src/read-adaptive.c:57 src/rs01-create.c:1018 #, c-format msgid "" "Error closing error correction file:\n" @@ -2988,11 +2961,11 @@ msgstr "" "Fehler beim Schließen der Fehlerkorrektur-Datei:\n" "%s" -#: src/read-adaptive.c:78 src/read-adaptive.c:115 +#: src/read-adaptive.c:80 src/read-adaptive.c:117 msgid "Invalid or damaged ecc file" msgstr "Ungültige oder beschädigte Fehlerkorrektur-Datei" -#: src/read-adaptive.c:102 +#: src/read-adaptive.c:104 #, c-format msgid "" "Can't read ecc header:\n" @@ -3001,7 +2974,7 @@ msgstr "" "Kann den Ecc-Vorspann nicht lesen:\n" "%s" -#: src/read-adaptive.c:119 +#: src/read-adaptive.c:121 src/read-linear.c:867 #, c-format msgid "" "* Warning: This ecc file requires dvdisaster-%d.%d!\n" @@ -3010,80 +2983,75 @@ msgid "" "* or upgrade dvdisaster.\n" "\n" msgstr "" -"* Warnung: Diese Fehlerkorrektur-Datei benötigt dvdisaster-%d.%d!\n" -"* Die Verwendung dieser Datei kann fehlerhafte Ergebnisse verursachen.\n" -"* Bitte lesen Sie das Abbild ohne diese Fehlerkorrektur-Datei ein\n" -"* oder besorgen Sie sich eine neuere Version von dvdisaster.\n" -"\n" -#: src/read-adaptive.c:152 src/rs01-common.c:80 src/rs01-common.c:238 -#: src/rs01-create.c:326 src/rs01-verify.c:891 +#: src/read-adaptive.c:154 src/rs01-common.c:82 src/rs01-common.c:237 +#: src/rs01-create.c:299 src/rs01-verify.c:794 #, c-format msgid "Failed skipping the ecc header: %s" msgstr "Überspringen des Ecc-Vorspanns fehlgeschlagen: %s" -#: src/read-adaptive.c:161 src/read-adaptive.c:171 src/rs01-common.c:92 -#: src/rs01-common.c:102 src/rs01-common.c:350 +#: src/read-adaptive.c:163 src/read-adaptive.c:173 src/rs01-common.c:94 +#: src/rs01-common.c:104 src/rs01-common.c:347 #, c-format msgid "Error reading CRC information: %s" msgstr "Fehler beim Lesen der CRC-Information: %s" -#: src/read-adaptive.c:374 src/read-adaptive.c:1747 +#: src/read-adaptive.c:375 src/read-adaptive.c:1650 msgid "Aborted by unrecoverable error." msgstr "Abbruch durch nicht behebbaren Fehler." -#: src/read-adaptive.c:510 +#: src/read-adaptive.c:508 #, c-format msgid "Repairable: %2d.%1d%% (correctable: %; now reading [%..%], size %)" msgstr "Reparierbar: %2d.%1d%% (korrigierbar: %; lese in [%..%], Größe %)" -#: src/read-adaptive.c:515 +#: src/read-adaptive.c:513 #, c-format msgid "Repairable: %2d.%1d%% (missing: %; now reading [%..%], size %)" msgstr "Reparierbar: %2d.%1d%% (fehlend: %; lese in [%..%], Größe %)" -#: src/read-adaptive.c:655 src/read-adaptive.c:671 src/read-adaptive.c:701 +#: src/read-adaptive.c:651 src/read-adaptive.c:662 src/read-adaptive.c:692 #, c-format msgid "%s-type ECC found\n" msgstr "" -#: src/read-adaptive.c:674 +#: src/read-adaptive.c:665 src/read-linear.c:874 #, c-format msgid "" "* Warning: This image requires dvdisaster-%d.%d!\n" "* Proceeding could trigger incorrect behaviour.\n" -"* Please visit http://www.dvdisaster.org for an upgrade.\n" +"* Please upgrade dvdisaster.\n" "\n" msgstr "" -#: src/read-adaptive.c:703 +#: src/read-adaptive.c:694 msgid "" "Adaptive reading has not been adapted yet to handle RS03-augmented images properly.\n" "To quote the original author: \"behaviour with RS03 is unpredictable and undefined\".\n" "You should cancel and use the linear reading strategy instead. Continue at your own risk.\n" msgstr "" -#: src/read-adaptive.c:710 src/read-adaptive.c:773 src/read-adaptive.c:792 -#: src/read-adaptive.c:865 src/read-adaptive.c:960 src/read-adaptive.c:1030 -#: src/read-adaptive.c:1371 src/read-adaptive.c:1671 +#: src/read-adaptive.c:699 src/read-adaptive.c:758 src/read-adaptive.c:773 +#: src/read-adaptive.c:837 src/read-adaptive.c:926 src/read-adaptive.c:987 +#: src/read-adaptive.c:1300 src/read-adaptive.c:1576 msgid "Aborted by user request!" msgstr "Abbruch auf Benutzeranforderung!" -#: src/read-adaptive.c:721 +#: src/read-adaptive.c:709 #, c-format msgid "Stopping when unreadable intervals < %d." msgstr "Wird beendet wenn unlesbare Bereiche < %d." -#: src/read-adaptive.c:723 src/read-adaptive.c:729 +#: src/read-adaptive.c:711 src/read-adaptive.c:717 #, c-format msgid "Adaptive reading: %s\n" msgstr "Angepaßtes Leseverfahren: %s\n" -#: src/read-adaptive.c:728 +#: src/read-adaptive.c:716 msgid "Trying to collect enough data for error correction." msgstr "Versuche genügend Daten für die Fehlerkorrektur zu sammeln." -#: src/read-adaptive.c:764 +#: src/read-adaptive.c:751 #, c-format msgid "" "Medium contains % sectors more as recorded in the .ecc file\n" @@ -3094,7 +3062,7 @@ msgstr "" "(Datenträger: % Sektoren; in der .ecc-Datei erwartet: % Sektoren).\n" "Nur die ersten % Datenträger-Sektoren werden bearbeitet.\n" -#: src/read-adaptive.c:785 +#: src/read-adaptive.c:768 #, c-format msgid "" "Medium contains % sectors less as recorded in the .ecc file\n" @@ -3103,12 +3071,12 @@ msgstr "" "Der Datenträger enthält % Sektoren weniger als in der .ecc-Datei verzeichnet sind.\n" "(Datenträger: % Sektoren; in der .ecc-Datei erwartet: % Sektoren).\n" -#: src/read-adaptive.c:832 +#: src/read-adaptive.c:807 #, c-format msgid "Limiting sector range to [%,%].\n" msgstr "Begrenze Sektor-Bereich auf [%,%].\n" -#: src/read-adaptive.c:858 +#: src/read-adaptive.c:832 #, c-format msgid "" "Sector %d is missing. Can not compare medium and ecc fingerprints.\n" @@ -3118,7 +3086,7 @@ msgstr "" "der Fehlerkorrektur-Datei können nicht verglichen werden.\n" "Vergewissern Sie sich, daß die beiden zusammengehören.\n" -#: src/read-adaptive.c:874 +#: src/read-adaptive.c:845 msgid "" "Fingerprints of medium and ecc file do not match.\n" "Medium and ecc file do not belong together.\n" @@ -3126,15 +3094,15 @@ msgstr "" "Fingerabdrücke vom Datenträger und der Fehlerkorrektur-Datei\n" "sind unterschiedlich. Die beiden passen nicht zusammen.\n" -#: src/read-adaptive.c:917 src/read-linear.c:360 +#: src/read-adaptive.c:886 src/read-linear.c:337 msgid "Image file does not match the optical disc." msgstr "Abbild-Datei paßt nicht zu dem optischen Datenträger." -#: src/read-adaptive.c:924 +#: src/read-adaptive.c:893 msgid "Reading aborted. Please select a different image file." msgstr "Einlesen abgebrochen. Bitte wählen Sie eine andere Abbild-Datei." -#: src/read-adaptive.c:952 +#: src/read-adaptive.c:920 #, c-format msgid "" "Image file is % sectors longer than inserted medium\n" @@ -3143,68 +3111,68 @@ msgstr "" "Abbild-Datei ist % Sektoren länger als der Datenträger\n" "(Abbild-Datei: % Sektoren; Datenträger: % Sektoren).\n" -#: src/read-adaptive.c:980 src/read-adaptive.c:986 +#: src/read-adaptive.c:944 src/read-adaptive.c:948 msgid "Loading CRC data." msgstr "Einladen der Prüfsummen." -#: src/read-adaptive.c:1020 +#: src/read-adaptive.c:979 msgid "Analysing existing image file" msgstr "Untersuche vorhandenes Abbild" -#: src/read-adaptive.c:1040 src/rs01-common.c:280 src/rs02-verify.c:752 +#: src/read-adaptive.c:996 src/rs01-common.c:277 src/rs02-verify.c:730 #, c-format msgid "premature end in image (only %d bytes): %s\n" msgstr "Vorzeitiges Ende im Abbild (nur %d Bytes): %s\n" -#: src/read-adaptive.c:1127 +#: src/read-adaptive.c:1074 #, c-format msgid "Analysing existing image file: %2d%%" msgstr "Untersuche vorhandenes Abbild: %2d%%" -#: src/read-adaptive.c:1156 +#: src/read-adaptive.c:1101 msgid "Determining correctable sectors" msgstr "Ermittle korrigierbare Sektoren" -#: src/read-adaptive.c:1236 +#: src/read-adaptive.c:1176 #, c-format msgid "Analysing existing image file: % readable, % correctable, % still missing.\n" msgstr "Untersuche vorhandenes Abbild: % lesbar, % korrigierbar, % noch fehlend.\n" -#: src/read-adaptive.c:1238 +#: src/read-adaptive.c:1178 #, c-format msgid "Analysing existing image file: % readable, % still missing.\n" msgstr "Untersuche vorhandenes Abbild: % lesbar, % noch fehlend.\n" -#: src/read-adaptive.c:1295 src/read-linear.c:789 +#: src/read-adaptive.c:1228 src/read-linear.c:748 msgid "Ignore once" msgstr "Diesmal nicht beachten" -#: src/read-adaptive.c:1296 src/read-linear.c:790 +#: src/read-adaptive.c:1229 src/read-linear.c:749 msgid "Ignore always" msgstr "Immer nicht beachten" -#: src/read-adaptive.c:1297 src/read-linear.c:791 +#: src/read-adaptive.c:1230 src/read-linear.c:750 msgid "Abort" msgstr "Abbrechen" -#: src/read-adaptive.c:1333 +#: src/read-adaptive.c:1266 #, c-format msgid "Filling image area [%..%]" msgstr "Auffüllen des Abbild-Bereichs [%..%]" -#: src/read-adaptive.c:1465 src/read-linear.c:223 +#: src/read-adaptive.c:1388 src/read-linear.c:218 msgid "Reading aborted" msgstr "Lesevorgang abgebrochen" -#: src/read-adaptive.c:1469 src/read-linear.c:228 +#: src/read-adaptive.c:1391 src/read-linear.c:221 msgid "Preparing for reading the medium image." msgstr "Bereite Lesen des Datenträger-Abbilds vor." -#: src/read-adaptive.c:1470 src/read-linear.c:219 src/read-linear.c:229 +#: src/read-adaptive.c:1392 src/read-linear.c:215 src/read-linear.c:222 msgid "Medium: not yet determined" msgstr "Datenträger: Typ noch nicht bestimmt" -#: src/read-adaptive.c:1485 +#: src/read-adaptive.c:1406 msgid "" "Adaptive reading is unavailable in this version.\n" "It will be re-introduced in one of the next versions." @@ -3212,7 +3180,7 @@ msgstr "" "Angepaßtes Lesen ist in dieser Version nicht verfügbar.\n" "Es wird in einer der nächsten Versionen wieder eingeführt." -#: src/read-adaptive.c:1494 +#: src/read-adaptive.c:1415 msgid "" "* Warning: Using adaptive reading without error correction data\n" "* has little advantage over linear reading, but may\n" @@ -3226,20 +3194,20 @@ msgstr "" "* verursachen.\n" "* Bitte erwägen Sie die Verwendung des linearen Lesens.\n" -#: src/read-adaptive.c:1554 src/read-linear.c:293 +#: src/read-adaptive.c:1473 src/read-linear.c:277 #, c-format msgid "Creating new %s image.\n" msgstr "Erzeuge neues Abbild %s.\n" -#: src/read-adaptive.c:1559 src/read-linear.c:286 +#: src/read-adaptive.c:1476 src/read-linear.c:270 msgid "Reading new medium image." msgstr "Einlesen eines neuen Abbilds." -#: src/read-adaptive.c:1581 src/read-linear.c:319 +#: src/read-adaptive.c:1495 src/read-linear.c:298 msgid "Completing existing medium image." msgstr "Vervollständigen eines bestehenden Abbilds." -#: src/read-adaptive.c:1615 src/read-adaptive.c:1946 +#: src/read-adaptive.c:1528 src/read-adaptive.c:1842 msgid "" "\n" "Sufficient data for reconstructing the image is available.\n" @@ -3247,7 +3215,7 @@ msgstr "" "\n" "Genügend Daten zur Wiederherstellung des Abbildes vorhanden.\n" -#: src/read-adaptive.c:1731 src/read-linear.c:1115 +#: src/read-adaptive.c:1636 src/read-linear.c:1090 #, c-format msgid "" "Sector %: %s\n" @@ -3259,7 +3227,7 @@ msgstr "" "Verwenden Sie die --ignore-fatal-sense - Option um das\n" "Weitermachen zu erzwingen." -#: src/read-adaptive.c:1737 src/read-linear.c:1121 +#: src/read-adaptive.c:1641 src/read-linear.c:1096 #, c-format msgid "" "Sector %: %s\n" @@ -3272,28 +3240,28 @@ msgstr "" "Eine Fortsetzung ist gegebenenfalls nicht mehr möglich.\n" "Soll der Fehler nicht beachtet und weiter gelesen werden?" -#: src/read-adaptive.c:1793 src/rs01-fix.c:451 src/rs02-fix.c:464 -#: src/rs03-fix.c:522 +#: src/read-adaptive.c:1697 src/rs01-fix.c:422 src/rs02-fix.c:431 +#: src/rs03-fix.c:484 #, c-format msgid "CRC error in sector %\n" msgstr "Prüfsummen-Fehler in Sektor %\n" -#: src/read-adaptive.c:1972 src/scsi-layer.c:1776 +#: src/read-adaptive.c:1862 src/scsi-layer.c:1781 #, c-format msgid "Sectors %-%: %s\n" msgstr "Sektoren %-%: %s\n" -#: src/read-adaptive.c:1980 src/read-linear.c:1318 src/scsi-layer.c:1775 +#: src/read-adaptive.c:1865 src/read-linear.c:1284 src/scsi-layer.c:1780 #, c-format msgid "Sector %: %s\n" msgstr "Sektor %: %s\n" -#: src/read-adaptive.c:2111 +#: src/read-adaptive.c:1992 #, c-format msgid "Only %2d.%1d%% of the image are readable or correctable" msgstr "Nur %2d.%1d%% des Abbilds sind lesbar oder korrigierbar" -#: src/read-adaptive.c:2114 +#: src/read-adaptive.c:1995 #, c-format msgid "" "\n" @@ -3304,7 +3272,7 @@ msgstr "" "%s\n" "(% lesbar, % korrigierbar, % noch fehlend).\n" -#: src/read-adaptive.c:2130 +#: src/read-adaptive.c:2008 msgid "" "\n" "Good! All sectors have been read.\n" @@ -3312,12 +3280,12 @@ msgstr "" "\n" "Gut! Alle Sektoren wurden eingelesen.\n" -#: src/read-adaptive.c:2141 +#: src/read-adaptive.c:2016 #, c-format msgid "No unreadable intervals with >= %d sectors left." msgstr "Keine unlesbaren Bereiche mit >= %d Sektoren übrig." -#: src/read-adaptive.c:2144 +#: src/read-adaptive.c:2019 #, c-format msgid "" "\n" @@ -3328,42 +3296,42 @@ msgstr "" "%s\n" "%2d.%1d%% des Abbilds wurden eingelesen (% Sektoren).\n" -#: src/read-adaptive-window.c:81 +#: src/read-adaptive-window.c:84 msgid "Adaptive reading:" msgstr "Angepaßtes Leseverfahren:" -#: src/read-adaptive-window.c:109 +#: src/read-adaptive-window.c:112 msgid "Sectors processed" msgstr "Bearbeitete Sektoren" -#: src/read-adaptive-window.c:112 src/scsi-layer.c:1757 +#: src/read-adaptive-window.c:115 src/scsi-layer.c:1762 msgid "readable" msgstr "lesbar" -#: src/read-adaptive-window.c:116 +#: src/read-adaptive-window.c:119 msgid "correctable" msgstr "korrigierbar" -#: src/read-adaptive-window.c:120 +#: src/read-adaptive-window.c:123 msgid "missing" msgstr "fehlend" -#: src/read-adaptive-window.c:130 +#: src/read-adaptive-window.c:133 #, c-format msgid "Readable: %d.%d%% / %d.%d%% required" msgstr "Lesbar: %d.%d%% / %d.%d%% benötigt" -#: src/read-adaptive-window.c:137 +#: src/read-adaptive-window.c:140 #, c-format msgid "Total recoverable: %d.%d%%" msgstr "Insgesamt wiederherstellbar: %d.%d%%" -#: src/read-linear.c:126 +#: src/read-linear.c:122 #, c-format msgid "Aborted by unrecoverable error. % sectors read, % sectors unreadable/skipped so far." msgstr "Abbruch durch nicht behebbaren Fehler. % Sektoren gelesen, % Sektoren unlesbar oder übersprungen." -#: src/read-linear.c:182 +#: src/read-linear.c:176 msgid "" "Automatic error correction file creation\n" "is only possible after a full reading pass.\n" @@ -3371,77 +3339,77 @@ msgstr "" "Automatisches Erzeugen der Fehlerkorrektur-Datei\n" "ist nur nach einem vollen Lesedurchlauf möglich.\n" -#: src/read-linear.c:213 +#: src/read-linear.c:211 msgid "Scanning aborted" msgstr "Untersuchung abgebrochen" -#: src/read-linear.c:218 src/read-linear.c:252 +#: src/read-linear.c:214 src/read-linear.c:244 msgid "Scanning medium for read errors." msgstr "Untersuche Datenträger auf Lesefehler." -#: src/read-linear.c:260 src/read-linear.c:299 +#: src/read-linear.c:250 src/read-linear.c:281 msgid "Reading CRC information" msgstr "Lese CRC-Prüfsummen" -#: src/read-linear.c:368 +#: src/read-linear.c:344 #, c-format msgid "Reading aborted. Please select a different image file." msgstr "Einlesen abgebrochen. Bitte wählen Sie eine andere Abbild-Datei." -#: src/read-linear.c:388 +#: src/read-linear.c:363 #, c-format msgid "Completing image %s. Continuing with sector %.\n" msgstr "Vervollständige Abbild %s beginnend mit Sektor %.\n" -#: src/read-linear.c:396 +#: src/read-linear.c:369 #, c-format msgid "Completing image %s. Only missing sectors will be read.\n" msgstr "Vervollständige Abbild %s. Nur die fehlenden Sektoren werden gelesen.\n" -#: src/read-linear.c:461 src/read-linear.c:470 +#: src/read-linear.c:442 src/read-linear.c:447 msgid "Reading CRC information from ecc data" msgstr "Lese Prüfsummen aus Fehlerkorrektur-Daten" -#: src/read-linear.c:501 +#: src/read-linear.c:473 msgid "done.\n" msgstr "fertig.\n" -#: src/read-linear.c:522 src/scsi-layer.c:2103 +#: src/read-linear.c:493 src/scsi-layer.c:2108 #, c-format msgid "Waiting %d seconds for drive to spin up...\n" msgstr "Warte %d Sekunden auf das Hochdrehen des Laufwerks...\n" -#: src/read-linear.c:548 src/read-linear-window.c:104 +#: src/read-linear.c:515 src/read-linear-window.c:109 #, c-format msgid "Unreadable / skipped sectors: %" msgstr "Unlesbare / Übersprungene Sektoren: %" -#: src/read-linear.c:644 +#: src/read-linear.c:605 #, c-format msgid "Sector %: Speed increased to %4.1fx\n" msgstr "Sektor %: Lesegeschwindigkeit steigt auf %4.1fx\n" -#: src/read-linear.c:647 +#: src/read-linear.c:608 #, c-format msgid "Sector %: Speed dropped to %4.1fx\n" msgstr "Sektor %: Lesegeschwindigkeit fällt auf %4.1fx\n" -#: src/read-linear.c:653 +#: src/read-linear.c:614 #, c-format -msgid "Read position: %3d.%1d%% (nn.nx)" -msgstr "Leseposition: %3d.%1d%% (nn.nx)" +msgid "Read position: %3d.%1d%% (nn.nx), sector %/%, % sectors read OK, % read errors, % crc errors" +msgstr "" -#: src/read-linear.c:655 +#: src/read-linear.c:615 #, c-format -msgid "Read position: %3d.%1d%% (%4.1fx)" -msgstr "Leseposition: %3d.%1d%% (%4.1fx)" +msgid "Read position: %3d.%1d%% (%4.1fx), sector %/%, % sectors read OK, % read errors, % crc errors" +msgstr "" -#: src/read-linear.c:749 +#: src/read-linear.c:708 #, c-format msgid "* CRC error, sector: %lld\n" msgstr "* CRC-Fehler, Sektor : %lld\n" -#: src/read-linear.c:879 +#: src/read-linear.c:841 #, c-format msgid "" "This ecc file requires dvdisaster-%d.%d!\n" @@ -3451,53 +3419,42 @@ msgid "" "or upgrade dvdisaster.\n" "\n" msgstr "" -"Diese Fehlerkorrektur-Datei benötigt dvdisaster-%d.%d!\n" -"\n" -"Die Verwendung dieser Datei kann fehlerhafte Ergebnisse verursachen.\n" -"Bitte lesen Sie das Abbild ohne diese Fehlerkorrektur-Datei ein\n" -"oder besorgen Sie sich eine neuere Version von dvdisaster.\n" -"\n" -#: src/read-linear.c:887 +#: src/read-linear.c:849 #, c-format msgid "" "This image requires dvdisaster-%d.%d!\n" "\n" "Proceeding could trigger incorrect behaviour.\n" -"Please visit http://www.dvdisaster.org for an upgrade.\n" +"Please upgrade dvdisaster.\n" "\n" msgstr "" -"Dieses Abbild benötigt dvdisaster-%d.%d!\n" -"\n" -"Die Verwendung dieses Abbilds kann fehlerhafte Ergebnisse verursachen.\n" -"Bitte besorgen Sie sich unter http://www.dvdisaster.org eine neuere Version.\n" -"\n" # # # # -#: src/read-linear.c:898 src/read-linear.c:1002 src/read-linear.c:1132 +#: src/read-linear.c:858 src/read-linear.c:973 src/read-linear.c:1106 #, c-format msgid "Aborted by user request! % sectors read, % sectors unreadable/skipped so far." msgstr "Abbruch auf Benutzeranforderung! % Sektoren gelesen, % Sektoren unlesbar oder übersprungen." -#: src/read-linear.c:1060 +#: src/read-linear.c:1030 #, c-format msgid "unexpected read error in image for sector %" msgstr "Unerwarteter Lesefehler im Abbild bei Sektor %" -#: src/read-linear.c:1148 +#: src/read-linear.c:1122 #, c-format msgid "Sector %: %3d C2 errors.%s\n" msgstr "Sektor %: %3d C2-Fehler.%s\n" -#: src/read-linear.c:1285 +#: src/read-linear.c:1256 #, c-format msgid "Sector %: %s Skipping %d sectors.\n" msgstr "Sektor %: %s Überspringe %d Sektoren.\n" -#: src/read-linear.c:1356 +#: src/read-linear.c:1319 #, c-format msgid "" "Trying to complete image, reading pass %d of %d.\n" @@ -3506,7 +3463,7 @@ msgstr "" "Vervollständige Abbild, %dter Lesedurchlauf von %d.\n" "%s" -#: src/read-linear.c:1360 +#: src/read-linear.c:1321 #, c-format msgid "" "\n" @@ -3515,174 +3472,183 @@ msgstr "" "\n" "Vervollständige Abbild, %d ter Lesedurchlauf von %d.\n" -#: src/read-linear.c:1397 +#: src/read-linear.c:1358 #, c-format msgid "% sectors read. " msgstr "% Sektoren gelesen. " -#: src/read-linear.c:1398 +#: src/read-linear.c:1359 #, c-format msgid "% sectors read; % unreadable sectors." msgstr "% Sektoren gelesen; % unlesbare Sektoren." -#: src/read-linear.c:1410 +#: src/read-linear.c:1367 +#, c-format +msgid "All sectors are readable, but %d contain defective content." +msgstr "" + +#: src/read-linear.c:1377 #, c-format msgid "All sectors successfully read, but wrong image length (% sectors difference)" msgstr "Alle Sektoren erfolgreich eingelesen, aber falsche Abbildlänge (% Sektoren Unterschied)." -#: src/read-linear.c:1416 +#: src/read-linear.c:1383 msgid "All sectors successfully read, but wrong ecc md5sum." msgstr "Alle Sektoren erfolgreich gelesen, aber falsche MD5-Prüfsumme im ECC-Teil." -#: src/read-linear.c:1422 +#: src/read-linear.c:1389 msgid "All sectors successfully read, but incomplete or damaged checksums." msgstr "Alle Sektoren erfolgreich gelesen, aber unvollständige oder beschädigte Prüfsummen." -#: src/read-linear.c:1423 +#: src/read-linear.c:1390 msgid "All sectors successfully read. Checksums match." msgstr "Alle Sektoren erfolgreich eingelesen. Prüfsummen stimmen." -#: src/read-linear.c:1425 +#: src/read-linear.c:1392 msgid "All sectors successfully read." msgstr "Alle Sektoren erfolgreich eingelesen." -#: src/read-linear.c:1430 +#: src/read-linear.c:1397 #, c-format msgid "% unreadable sectors." msgstr "% unlesbare Sektoren." -#: src/read-linear.c:1433 +#: src/read-linear.c:1400 #, c-format msgid "% CRC errors and a md5sum mismatch in the CRC section." msgstr "% Prüfsummenfehler und eine falsche MD5-Prüfsumme im CRC-Bereich." -#: src/read-linear.c:1435 +#: src/read-linear.c:1402 #, c-format msgid "% CRC errors." msgstr "% Prüfsummen-Fehler." -#: src/read-linear.c:1437 +#: src/read-linear.c:1404 #, c-format msgid "% CRC errors, % unreadable sectors." msgstr "% Prüfsummen-Fehler, % unlesbare Sektoren." -#: src/read-linear.c:1446 +#: src/read-linear.c:1414 msgid "Scanning finished: " msgstr "Überprüfung beendet: " -#: src/read-linear.c:1448 +#: src/read-linear.c:1419 msgid "Reading finished: " msgstr "Einlesen beendet: " -#: src/read-linear.c:1462 +#: src/read-linear.c:1432 src/read-linear.c:1443 #, c-format msgid "" "%d sectors missing at the end of the disc.\n" "This is okay if the CD was written in TAO (track at once) mode.\n" -"The Image will be truncated accordingly. See the manual for details.\n" +"%s" msgstr "" -"%d Sektoren fehlen am Ende des Datenträgers. Dies ist in Ordnung\n" -"wenn der Datenträger im TAO (track at once)-Modus geschrieben wurde.\n" -"Das Abbild wird entsprechend verkürzt; mehr dazu steht im Benutzerhandbuch.\n" -#: src/read-linear.c:1469 -#, c-format +#: src/read-linear.c:1437 +msgid "See the manual for details.\n" +msgstr "" + +#: src/read-linear.c:1439 +msgid "The Image will be truncated accordingly. See the manual for details.\n" +msgstr "" + +#: src/read-linear.c:1448 +msgid "" +"See the manual for details.\n" +"Use the --dao option to disable this message.\n" +msgstr "" + +#: src/read-linear.c:1451 msgid "" -"%d sectors missing at the end of the disc.\n" -"This is okay if the CD was written in TAO (track at once) mode.\n" "The Image will be truncated accordingly. See the manual for details.\n" "Use the --dao option to disable image truncating.\n" msgstr "" -"%d Sektoren fehlen am Ende des Datenträgers. Dies ist in Ordnung\n" -"wenn der Datenträger im TAO (track at once)-Modus geschrieben wurde.\n" -"Das Abbild wird entsprechend verkürzt; mehr dazu steht im Benutzerhandbuch.\n" -"Verwenden Sie die --dao--Option um das Abschneiden zu unterdrücken.\n" -#: src/read-linear-window.c:97 +#: src/read-linear-window.c:102 #, c-format msgid "Current Speed: %d.%dx" msgstr "Momentane Geschwindigkeit: %d.%dx" -#: src/read-linear-window.c:254 src/read-linear-window.c:323 +#: src/read-linear-window.c:264 src/read-linear-window.c:333 msgid "Already present" msgstr "Bereits vorhanden" -#: src/read-linear-window.c:288 src/read-linear-window.c:330 -#: src/rs01-verify.c:126 src/rs02-verify.c:121 src/rs03-verify.c:130 +#: src/read-linear-window.c:298 src/read-linear-window.c:340 +#: src/rs01-verify.c:130 src/rs02-verify.c:123 src/rs03-verify.c:133 msgid "Sectors with CRC errors" msgstr "Prüfsummen-Fehler" -#: src/read-linear-window.c:311 +#: src/read-linear-window.c:321 msgid "Medium state" msgstr "Datenträger-Zustand" -#: src/read-linear-window.c:319 +#: src/read-linear-window.c:329 msgid "Not touched this time" msgstr "Diesmal unberücksichtigt" -#: src/read-linear-window.c:326 +#: src/read-linear-window.c:336 msgid "Successfully read" msgstr "Erfolgreich gelesen" -#: src/read-linear-window.c:333 +#: src/read-linear-window.c:343 msgid "Unreadable / skipped" msgstr "Unlesbar / Übersprungen" -#: src/read-linear-window.c:444 +#: src/read-linear-window.c:454 msgid "Speed" msgstr "Geschwindigkeit" -#: src/recover-raw.c:65 +#: src/recover-raw.c:66 #, c-format msgid "Sector % dumped to %s\n" msgstr "Sektor % nach %s ausgegeben\n" -#: src/rs01-common.c:252 src/rs02-verify.c:831 src/rs03-verify.c:1228 +#: src/rs01-common.c:251 src/rs02-verify.c:806 src/rs03-verify.c:1144 #, c-format msgid "- testing sectors : %3d%%" msgstr "- prüfe Sektoren : %3d%%" -#: src/rs01-common.c:253 +#: src/rs01-common.c:252 #, c-format msgid "Scanning image sectors: %3d%%" msgstr "Prüfe Abbild-Sektoren : %3d%%" -#: src/rs01-common.c:308 src/rs02-verify.c:784 +#: src/rs01-common.c:305 src/rs02-verify.c:762 #, c-format msgid "* missing sector : %\n" msgstr "* fehlender Sektor : %\n" -#: src/rs01-common.c:309 src/rs02-verify.c:785 +#: src/rs01-common.c:306 src/rs02-verify.c:763 #, c-format msgid "* missing sectors : % - %\n" msgstr "* fehlende Sektoren : % - %\n" -#: src/rs01-common.c:327 src/rs01-common.c:399 src/rs01-create.c:343 +#: src/rs01-common.c:324 src/rs01-common.c:395 src/rs01-create.c:316 #, c-format msgid "Error writing CRC information: %s" msgstr "Fehler beim Schreiben der CRC-Information: %s" -#: src/rs01-common.c:356 src/rs02-verify.c:797 src/rs03-verify.c:1202 +#: src/rs01-common.c:353 src/rs02-verify.c:775 src/rs03-verify.c:1118 #, c-format msgid "* CRC error, sector: %\n" msgstr "" -#: src/rs01-create.c:63 +#: src/rs01-create.c:65 #, c-format msgid "Redundancy %4.1f%% out of useful range [3.2%%..64.5%%]" msgstr "Redundanz %4.1f%% außerhalb des nutzbaren Bereiches [3.2%%..64.5%%]" -#: src/rs01-create.c:76 src/rs03-common.c:467 +#: src/rs01-create.c:78 src/rs03-common.c:468 #, c-format msgid "Ecc file size %m out of useful range [% .. %]" msgstr "Ecc-Datei-Größe %m außerhalb des nutzbaren Bereiches [% .. %]" -#: src/rs01-create.c:91 +#: src/rs01-create.c:93 #, c-format msgid "Redundancy %d out of useful range [8..100]." msgstr "Redundanz %d außerhalb des nutzbaren Bereiches [8..100]." -#: src/rs01-create.c:107 src/rs01-create.c:112 +#: src/rs01-create.c:105 src/rs01-create.c:106 #, c-format msgid "" "\n" @@ -3691,27 +3657,27 @@ msgstr "" "\n" "Abbild-Datei %s gelöscht.\n" -#: src/rs01-create.c:123 +#: src/rs01-create.c:113 #, c-format msgid "Image file %s not deleted: %s\n" msgstr "Abbild-Datei %s nicht gelöscht: %s\n" -#: src/rs01-create.c:160 src/rs01-fix.c:81 src/rs02-create.c:63 -#: src/rs02-fix.c:57 src/rs03-create.c:154 src/rs03-fix.c:57 +#: src/rs01-create.c:147 src/rs01-fix.c:79 src/rs02-create.c:61 +#: src/rs02-fix.c:55 src/rs03-create.c:152 src/rs03-fix.c:54 #, c-format msgid "Aborted by unrecoverable error." msgstr "Abbruch durch nicht behebbaren Fehler." -#: src/rs01-create.c:231 +#: src/rs01-create.c:212 msgid "Error correction file creation aborted" msgstr "Erzeugung der Fehlerkorrektur-Datei abgebrochen" -#: src/rs01-create.c:254 +#: src/rs01-create.c:235 #, c-format msgid "Encoding with Method RS01: %d roots, %4.1f%% redundancy." msgstr "Kodiere mit Methode RS01: %d Nullstellen, %4.1f%% Redundanz." -#: src/rs01-create.c:261 src/rs03-create.c:1373 +#: src/rs01-create.c:240 src/rs03-create.c:1331 #, c-format msgid "" "Creating the error correction file.\n" @@ -3720,49 +3686,49 @@ msgstr "" "Erzeuge die Fehlerkorrektur-Datei.\n" "%s" -#: src/rs01-create.c:275 src/rs03-create.c:297 +#: src/rs01-create.c:252 src/rs03-create.c:284 #, c-format msgid "Aborted to keep existing ecc file." msgstr "Abbruch um die vorhandene Fehlerkorrektur-Datei zu behalten." -#: src/rs01-create.c:291 src/rs02-create.c:1080 src/rs03-create.c:1329 +#: src/rs01-create.c:267 src/rs02-create.c:1036 src/rs03-create.c:1285 #, c-format msgid "Image file %s: %s." msgstr "Abbild-Datei %s: %s." -#: src/rs01-create.c:299 src/rs03-create.c:1348 +#: src/rs01-create.c:275 src/rs03-create.c:1304 msgid "No error correction file specified!\n" msgstr "Keine Fehlerkorrektur-Datei angegeben!\n" -#: src/rs01-create.c:312 +#: src/rs01-create.c:288 #, c-format msgid "Writing sector checksums: %3d%%" msgstr "Schreibe Sektoren-Prüfsummen: %3d%%" -#: src/rs01-create.c:317 +#: src/rs01-create.c:291 msgid "1. Writing image sector checksums:" msgstr "1. Schreibe Sektoren-Prüfsummen:" -#: src/rs01-create.c:369 src/rs01-window.c:131 +#: src/rs01-create.c:335 src/rs01-window.c:128 msgid "1. Calculating image sector checksums:" msgstr "1. Berechne Sektoren-Prüfsummen:" -#: src/rs01-create.c:388 src/rs01-create.c:538 src/rs01-create.c:636 +#: src/rs01-create.c:352 src/rs01-create.c:493 src/rs01-create.c:585 #, c-format msgid "Aborted by user request! (partial error correction file removed)" msgstr "Abbruch auf Benutzeranforderung! (unvollständige Fehlerkorrektur-Datei wurde entfernt)" -#: src/rs01-create.c:401 +#: src/rs01-create.c:361 #, c-format msgid "% sectors unread or missing due to errors.\n" msgstr "% unlesbare oder fehlende Sektoren im Abbild.\n" -#: src/rs01-create.c:458 +#: src/rs01-create.c:414 #, c-format msgid "Failed skipping ecc+crc header: %s" msgstr "Überspringen der Ecc/Crc-Vorspänne fehlgeschlagen: %s" -#: src/rs01-create.c:485 src/rs02-create.c:553 +#: src/rs01-create.c:441 src/rs02-create.c:519 #, c-format msgid "" "Failed allocating memory for I/O cache.\n" @@ -3773,24 +3739,24 @@ msgstr "" "reservieren. Momentane Anforderung: %d MiB.\n" "Versuchen Sie diesen Wert zu verkleinern.\n" -#: src/rs01-create.c:619 src/rs01-create.c:749 src/rs01-create.c:1049 -#: src/rs02-create.c:1005 src/rs03-create.c:1157 +#: src/rs01-create.c:569 src/rs01-create.c:693 src/rs01-create.c:987 +#: src/rs02-create.c:964 src/rs03-create.c:1121 #, c-format msgid "Ecc generation: %3d.%1d%%" msgstr "Kodierungs-Fortschritt: %3d.%1d%%" -#: src/rs01-create.c:769 src/rs01-fix.c:219 src/rs01-fix.c:243 -#: src/rs01-fix.c:295 src/rs01-fix.c:332 src/rs01-fix.c:352 src/rs01-fix.c:407 -#: src/rs01-verify.c:457 src/rs01-verify.c:916 src/rs02-create.c:130 -#: src/rs02-fix.c:260 src/rs02-fix.c:281 src/rs02-fix.c:372 -#: src/rs02-verify.c:741 src/rs03-create.c:269 src/rs03-fix.c:278 -#: src/rs03-fix.c:327 src/rs03-fix.c:350 src/rs03-fix.c:429 -#: src/rs03-verify.c:548 src/rs03-verify.c:1096 +#: src/rs01-create.c:712 src/rs01-fix.c:207 src/rs01-fix.c:232 +#: src/rs01-fix.c:278 src/rs01-fix.c:308 src/rs01-fix.c:325 src/rs01-fix.c:378 +#: src/rs01-verify.c:440 src/rs01-verify.c:812 src/rs02-create.c:118 +#: src/rs02-fix.c:233 src/rs02-fix.c:253 src/rs02-fix.c:339 +#: src/rs02-verify.c:719 src/rs03-create.c:257 src/rs03-fix.c:252 +#: src/rs03-fix.c:295 src/rs03-fix.c:317 src/rs03-fix.c:391 +#: src/rs03-verify.c:538 src/rs03-verify.c:1012 #, c-format msgid "Aborted by user request!" msgstr "Abbruch auf Benutzeranforderung!" -#: src/rs01-create.c:1062 +#: src/rs01-create.c:1000 #, c-format msgid "" "could not write to ecc file \"%s\":\n" @@ -3799,7 +3765,7 @@ msgstr "" "Konnte nicht in die Fehlerkorrektur-Datei schreiben: \"%s\":\n" "%s" -#: src/rs01-create.c:1077 +#: src/rs01-create.c:1015 #, c-format msgid "" "Can't write ecc header:\n" @@ -3808,12 +3774,12 @@ msgstr "" "Konnte den Vorspann der Fehlerkorrektur-Datei nicht schreiben:\n" "%s" -#: src/rs01-create.c:1085 src/rs02-create.c:1177 src/rs03-create.c:1446 +#: src/rs01-create.c:1023 src/rs02-create.c:1127 src/rs03-create.c:1404 #, c-format msgid "Ecc generation: 100.0%%\n" msgstr "Kodierungs-Fortschritt: 100.0%%\n" -#: src/rs01-create.c:1086 src/rs03-create.c:1453 +#: src/rs01-create.c:1024 src/rs03-create.c:1411 #, c-format msgid "" "Error correction file \"%s\" created.\n" @@ -3822,7 +3788,7 @@ msgstr "" "Fehlerkorrektur-Datei \"%s\" wurde erzeugt.\n" "Verwahren Sie die Datei auf einem zuverlässigen Datenträger.\n" -#: src/rs01-create.c:1095 src/rs03-create.c:1482 +#: src/rs01-create.c:1031 src/rs03-create.c:1436 msgid "" "The error correction file has been successfully created.\n" "Make sure to keep this file on a reliable medium." @@ -3830,27 +3796,27 @@ msgstr "" "Die Fehlerkorrektur-Datei wurde erfolgreich erzeugt.\n" "Verwahren Sie die Datei auf einem zuverlässigen Datenträger." -#: src/rs01-fix.c:39 src/rs02-fix.c:448 +#: src/rs01-fix.c:41 src/rs02-fix.c:415 #, c-format msgid "Failed seeking in crc area: %s" msgstr "Suchen im CRC-Abschnitt fehlgeschlagen: %s" -#: src/rs01-fix.c:44 src/rs02-fix.c:451 src/rs02-verify.c:444 +#: src/rs01-fix.c:46 src/rs02-fix.c:418 src/rs02-verify.c:438 #, c-format msgid "problem reading crc data: %s" msgstr "Problem beim Lesen der CRC-Daten: %s" -#: src/rs01-fix.c:148 src/rs02-fix.c:190 src/rs03-fix.c:189 +#: src/rs01-fix.c:138 src/rs02-fix.c:169 src/rs03-fix.c:166 msgid "Repairing of image aborted" msgstr "Reparatur des Abbildes abgebrochen" -#: src/rs01-fix.c:154 +#: src/rs01-fix.c:144 #, c-format msgid "Error correction file using Method RS01, %d roots, %4.1f%% redundancy." msgstr "Fehlerkorrektur-Datei verwendet Methode RS01, %d Nullstellen, %4.1f%% Redundanz." -#: src/rs01-fix.c:161 src/rs02-fix.c:197 src/rs02-fix.c:229 src/rs03-fix.c:200 -#: src/rs03-fix.c:252 +#: src/rs01-fix.c:151 src/rs02-fix.c:174 src/rs02-fix.c:205 src/rs03-fix.c:175 +#: src/rs03-fix.c:226 #, c-format msgid "" "Repairing the image.\n" @@ -3859,7 +3825,7 @@ msgstr "" "Repariere das Abbild.\n" "%s" -#: src/rs01-fix.c:166 src/rs02-fix.c:235 src/rs03-fix.c:258 +#: src/rs01-fix.c:156 src/rs02-fix.c:211 src/rs03-fix.c:232 #, c-format msgid "" "\n" @@ -3868,7 +3834,7 @@ msgstr "" "\n" "\"Fix\"-Modus(%s): Reparierbare Sektoren werden im Abbild wiederhergestellt.\n" -#: src/rs01-fix.c:201 +#: src/rs01-fix.c:191 #, c-format msgid "" "The image file is %lld sectors longer as noted in the\n" @@ -3886,7 +3852,7 @@ msgstr "" "\n" "%s" -#: src/rs01-fix.c:209 src/rs02-fix.c:250 src/rs03-fix.c:317 +#: src/rs01-fix.c:199 src/rs02-fix.c:225 src/rs03-fix.c:287 #, c-format msgid "" "Image file is % sectors longer than expected.\n" @@ -3897,17 +3863,17 @@ msgstr "" "Es wird ein TAO-Datenträger angenommen.\n" "% Sektoren werden vom Ende des Abbildes abgeschnitten.\n" -#: src/rs01-fix.c:238 src/rs02-fix.c:276 src/rs03-fix.c:345 +#: src/rs01-fix.c:227 src/rs02-fix.c:248 src/rs03-fix.c:312 msgid "Is it okay to remove the superfluous sectors?" msgstr "Dürfen die überflüssigen Sektoren abgeschnitten werden?" -#: src/rs01-fix.c:255 src/rs01-fix.c:277 src/rs02-fix.c:290 src/rs02-fix.c:308 -#: src/rs03-fix.c:361 src/rs03-fix.c:381 +#: src/rs01-fix.c:244 src/rs01-fix.c:261 src/rs02-fix.c:262 src/rs02-fix.c:276 +#: src/rs03-fix.c:328 src/rs03-fix.c:344 #, c-format msgid "Image has been truncated by % sectors.\n" msgstr "Die Abbild-Datei wurde um % Sektoren verkürzt.\n" -#: src/rs01-fix.c:268 src/rs02-fix.c:302 src/rs03-fix.c:373 +#: src/rs01-fix.c:252 src/rs02-fix.c:270 src/rs03-fix.c:336 msgid "" "Add the --truncate option to the program call\n" "to have the superfluous sectors removed." @@ -3915,7 +3881,7 @@ msgstr "" "Fügen Sie dem Programmaufruf die --truncate-Option hinzu\n" "um die überzähligen Sektoren zu entfernen." -#: src/rs01-fix.c:287 src/rs03-fix.c:270 +#: src/rs01-fix.c:270 src/rs03-fix.c:244 #, c-format msgid "" "The image file is %d bytes longer than noted\n" @@ -3926,7 +3892,7 @@ msgstr "" "der Fehlerkorrektur-Datei vermerkt wurde.\n" "Dürfen die überzähligen Sektoren abgeschnitten werden?\n" -#: src/rs01-fix.c:308 src/rs03-fix.c:291 +#: src/rs01-fix.c:286 src/rs03-fix.c:261 #, c-format msgid "" "The image file is %d bytes longer than noted\n" @@ -3939,12 +3905,12 @@ msgstr "" "Fügen Sie dem Programmaufruf die --truncate-Option hinzu\n" "um die überzähligen Sektoren zu entfernen." -#: src/rs01-fix.c:317 src/rs03-fix.c:300 +#: src/rs01-fix.c:295 src/rs03-fix.c:270 #, c-format msgid "Image has been truncated by %d bytes.\n" msgstr "Die Abbild-Datei wurde um %d Bytes verkürzt.\n" -#: src/rs01-fix.c:325 +#: src/rs01-fix.c:303 msgid "" "Image file appears to be truncated.\n" "Consider completing it with another reading pass before going on.\n" @@ -3952,7 +3918,7 @@ msgstr "" "Abbild ist zu kurz. Eine Vervollständigung\n" "mit einem weiteren Lese-Durchgang wird empfohlen.\n" -#: src/rs01-fix.c:344 +#: src/rs01-fix.c:319 #, c-format msgid "" "Sector %d is missing. Can not compare image and ecc fingerprints.\n" @@ -3962,7 +3928,7 @@ msgstr "" "der Fehlerkorrektur-Datei können nicht verglichen werden.\n" "Vergewissern Sie sich, daß die beiden zusammengehören.\n" -#: src/rs01-fix.c:360 +#: src/rs01-fix.c:332 msgid "" "Fingerprints of image and ecc file do not match.\n" "Image and ecc file do not belong together.\n" @@ -3970,17 +3936,17 @@ msgstr "" "Fingerabdrücke vom Abbild und der Fehlerkorrektur-Datei\n" "sind unterschiedlich. Die beiden passen nicht zusammen.\n" -#: src/rs01-fix.c:479 +#: src/rs01-fix.c:447 #, c-format msgid "* %3d unrepairable sectors: " msgstr "* %3d nicht reparierbare Sektoren:" -#: src/rs01-fix.c:527 +#: src/rs01-fix.c:495 #, c-format msgid "Failed seeking in ecc area: %s" msgstr "Suchen im ECC-Abschnitt fehlgeschlagen: %s" -#: src/rs01-fix.c:531 +#: src/rs01-fix.c:499 #, c-format msgid "" "Can't read ecc file:\n" @@ -3989,27 +3955,27 @@ msgstr "" "Kann nicht aus der Fehlerkorrektur-Datei lesen:\n" "%s" -#: src/rs01-fix.c:727 +#: src/rs01-fix.c:695 #, c-format msgid "-> Error located in sector % at byte %4d (value %02x '%c', expected %02x '%c')\n" msgstr "-> Fehler festgestellt in Sektor % in Byteposition %4d (Wert %02x '%c', erwartet %02x '%c')\n" -#: src/rs01-fix.c:734 +#: src/rs01-fix.c:702 #, c-format msgid "Unexpected byte error in sector %, byte %d\n" msgstr "Unerwarteter Byte-Fehler in Sektor %, Byte %d\n" -#: src/rs01-fix.c:740 +#: src/rs01-fix.c:708 #, c-format msgid "Bad error location %d; corrupted .ecc file?\n" msgstr "Ungültige Fehlerposition %d; beschädigte .ecc-Datei?\n" -#: src/rs01-fix.c:750 src/rs02-fix.c:752 src/rs03-fix.c:819 +#: src/rs01-fix.c:718 src/rs02-fix.c:716 src/rs03-fix.c:778 #, c-format msgid " %3d repaired sectors: " msgstr " %3d reparierte Sektoren: " -#: src/rs01-fix.c:769 src/rs02-fix.c:794 src/rs03-fix.c:870 +#: src/rs01-fix.c:737 src/rs02-fix.c:758 src/rs03-fix.c:829 #, c-format msgid "" "could not write medium sector %:\n" @@ -4018,175 +3984,175 @@ msgstr "" "Konnte Abbild-Sektor % nicht schreiben:\n" "%s" -#: src/rs01-fix.c:798 src/rs02-fix.c:835 src/rs03-fix.c:927 +#: src/rs01-fix.c:766 src/rs02-fix.c:797 src/rs03-fix.c:886 #, c-format msgid "Ecc progress: %3d.%1d%%" msgstr "Reparatur-Fortschritt: %3d.%1d%%" -#: src/rs01-fix.c:810 src/rs02-fix.c:849 src/rs03-fix.c:939 +#: src/rs01-fix.c:778 src/rs02-fix.c:811 src/rs03-fix.c:898 #, c-format msgid "Ecc progress: 100.0%%\n" msgstr "Reparatur-Fortschritt: 100.0%%\n" -#: src/rs01-fix.c:811 +#: src/rs01-fix.c:779 #, c-format msgid "Repaired sectors: % \n" msgstr "Reparierte Sektoren: % \n" -#: src/rs01-fix.c:813 src/rs02-fix.c:854 src/rs03-fix.c:944 +#: src/rs01-fix.c:781 src/rs02-fix.c:816 src/rs03-fix.c:905 #, c-format msgid "Unrepaired sectors: %\n" msgstr "Nicht reparierbare Sektoren: %\n" -#: src/rs01-fix.c:817 src/rs02-fix.c:858 src/rs03-fix.c:948 +#: src/rs01-fix.c:783 src/rs02-fix.c:818 src/rs03-fix.c:907 #, c-format msgid "Image sectors could not be fully restored (% repaired; % unrepaired)" msgstr "Keine vollständige Reparatur möglich (% Sektoren repariert; % nicht reparierbar)" -#: src/rs01-fix.c:824 src/rs02-fix.c:865 src/rs03-fix.c:956 +#: src/rs01-fix.c:789 src/rs02-fix.c:824 src/rs03-fix.c:914 msgid "Good! All sectors are already present." msgstr "Gut! Alle Sektoren sind bereits vorhanden." -#: src/rs01-fix.c:828 src/rs02-fix.c:869 src/rs03-fix.c:961 +#: src/rs01-fix.c:793 src/rs02-fix.c:828 src/rs03-fix.c:919 msgid "Good! All sectors are repaired." msgstr "Gut! Alle Sektoren wurden repariert." -#: src/rs01-fix.c:833 src/rs02-fix.c:874 src/rs03-fix.c:967 +#: src/rs01-fix.c:798 src/rs02-fix.c:833 src/rs03-fix.c:925 #, c-format msgid "Erasure counts per ecc block: avg = %.1f; worst = %d.\n" msgstr "Auslöschungen pro Ecc-Bereich: Mittelwert = %.1f; Schlechtester = %d.\n" -#: src/rs01-fix.c:839 src/rs02-fix.c:880 src/rs03-fix.c:973 +#: src/rs01-fix.c:803 src/rs02-fix.c:838 src/rs03-fix.c:930 msgid "Repair results:" msgstr "Reparaturergebnis:" -#: src/rs01-verify.c:48 src/rs01-verify.c:417 src/rs03-verify.c:61 +#: src/rs01-verify.c:50 src/rs01-verify.c:410 src/rs03-verify.c:64 msgid "n/a" msgstr "entfällt" -#: src/rs01-verify.c:129 src/rs01-verify.c:150 src/rs02-verify.c:124 -#: src/rs02-verify.c:145 src/rs03-verify.c:133 src/rs03-verify.c:154 +#: src/rs01-verify.c:133 src/rs01-verify.c:154 src/rs02-verify.c:126 +#: src/rs02-verify.c:147 src/rs03-verify.c:136 src/rs03-verify.c:157 msgid "Missing sectors" msgstr "Fehlende Sektoren" -#: src/rs01-verify.c:193 src/rs02-verify.c:182 +#: src/rs01-verify.c:197 src/rs02-verify.c:184 msgid "Image file summary" msgstr "Abbild-Datei" -#: src/rs01-verify.c:202 src/rs03-verify.c:282 +#: src/rs01-verify.c:206 src/rs03-verify.c:285 msgid "No image present." msgstr "Keine Abbild-Datei vorhanden." -#: src/rs01-verify.c:212 src/rs01-verify.c:302 src/rs02-verify.c:192 -#: src/rs02-verify.c:298 src/rs03-verify.c:293 +#: src/rs01-verify.c:216 src/rs01-verify.c:306 src/rs02-verify.c:194 +#: src/rs02-verify.c:300 src/rs03-verify.c:296 msgid "Medium sectors:" msgstr "Datentr.-Sektoren:" -#: src/rs01-verify.c:220 +#: src/rs01-verify.c:224 msgid "Checksum errors:" msgstr "Prüfsummen-Fehler:" -#: src/rs01-verify.c:228 +#: src/rs01-verify.c:232 msgid "Missing Sectors:" msgstr "Fehlende Sektoren:" -#: src/rs01-verify.c:236 src/rs01-verify.c:310 +#: src/rs01-verify.c:240 src/rs01-verify.c:314 msgid "Image checksum:" msgstr "Abbild-Prüfsumme:" -#: src/rs01-verify.c:248 src/rs02-verify.c:244 src/rs03-verify.c:262 +#: src/rs01-verify.c:252 src/rs02-verify.c:246 src/rs03-verify.c:265 msgid "Image state" msgstr "Datenträger-Zustand" -#: src/rs01-verify.c:259 +#: src/rs01-verify.c:263 msgid "Error correction file summary" msgstr "Fehlerkorrektur-Datei" -#: src/rs01-verify.c:278 src/rs02-verify.c:274 src/rs03-verify.c:222 +#: src/rs01-verify.c:282 src/rs02-verify.c:276 src/rs03-verify.c:225 msgid "Created by:" msgstr "Erzeugt von:" -#: src/rs01-verify.c:286 src/rs02-verify.c:282 src/rs03-verify.c:213 +#: src/rs01-verify.c:290 src/rs02-verify.c:284 src/rs03-verify.c:216 msgid "Method:" msgstr "Methode:" -#: src/rs01-verify.c:294 src/rs02-verify.c:290 src/rs03-verify.c:231 +#: src/rs01-verify.c:298 src/rs02-verify.c:292 src/rs03-verify.c:234 msgid "Requires:" msgstr "Benötigt:" -#: src/rs01-verify.c:318 src/rs03-verify.c:249 +#: src/rs01-verify.c:322 src/rs03-verify.c:252 msgid "Fingerprint:" msgstr "Fingerabdruck:" -#: src/rs01-verify.c:326 +#: src/rs01-verify.c:330 msgid "Ecc blocks:" msgstr "Ecc-Bereiche:" -#: src/rs01-verify.c:334 src/rs02-verify.c:50 src/rs02-verify.c:322 +#: src/rs01-verify.c:338 src/rs02-verify.c:52 src/rs02-verify.c:324 msgid "Ecc checksum:" msgstr "Ecc-Prüfsumme:" -#: src/rs01-verify.c:398 +#: src/rs01-verify.c:397 msgid "Comparison aborted" msgstr "Vergleich abgebrochen" -#: src/rs01-verify.c:405 src/rs01-verify.c:560 +#: src/rs01-verify.c:402 src/rs01-verify.c:523 msgid "Comparing image and error correction files." msgstr "Vergleiche Abbild- und Fehlerkorrektur-Dateien." -#: src/rs01-verify.c:406 src/rs03-verify.c:737 src/rs03-verify.c:748 +#: src/rs01-verify.c:403 src/rs03-verify.c:700 src/rs03-verify.c:708 msgid "- Checking image file -" msgstr "- Prüfe Abbild-Datei -" -#: src/rs01-verify.c:424 src/rs01-verify.c:567 src/rs01-verify.c:583 +#: src/rs01-verify.c:417 src/rs01-verify.c:529 src/rs01-verify.c:542 msgid "not present\n" msgstr "nicht vorhanden\n" -#: src/rs01-verify.c:434 src/rs02-verify.c:620 +#: src/rs01-verify.c:424 src/rs02-verify.c:601 #, c-format msgid "present, contains % medium sectors.\n" msgstr "vorhanden, enthält % Datenträger-Sektoren.\n" -#: src/rs01-verify.c:441 +#: src/rs01-verify.c:428 #, c-format msgid "present, contains % medium sectors and %d bytes.\n" msgstr "vorhanden, enthält % Datenträger-Sektoren und %d Bytes.\n" -#: src/rs01-verify.c:445 src/rs01-verify.c:726 src/rs01-verify.c:749 +#: src/rs01-verify.c:430 src/rs01-verify.c:659 src/rs01-verify.c:676 #, c-format msgid "% sectors + %d bytes" msgstr "% Sektoren + %d Bytes" -#: src/rs01-verify.c:471 +#: src/rs01-verify.c:454 #, c-format msgid "* truncated image : % sectors too short\n" msgstr "* zu kurzes Abbild : % Sektoren zu wenig\n" -#: src/rs01-verify.c:475 +#: src/rs01-verify.c:456 #, c-format msgid "% (% sectors too short)" msgstr "% (% Sektoren zu wenig)" -#: src/rs01-verify.c:499 +#: src/rs01-verify.c:478 #, c-format msgid "* image too long : % excess sectors\n" msgstr "* Abbild zu lang : % überzählige Sektoren\n" -#: src/rs01-verify.c:503 +#: src/rs01-verify.c:480 #, c-format msgid "% (% excess sectors)" msgstr "% (% überzählige Sektoren)" -#: src/rs01-verify.c:506 src/rs01-verify.c:549 +#: src/rs01-verify.c:483 src/rs01-verify.c:515 #, c-format msgid "Bad image." msgstr "Schlechtes Abbild." -#: src/rs01-verify.c:512 src/rs02-verify.c:707 src/rs03-verify.c:1060 +#: src/rs01-verify.c:487 src/rs02-verify.c:686 src/rs03-verify.c:973 msgid "* quick mode : image NOT scanned\n" msgstr "* kurze Überprüfung : Abbild wird nicht gelesen\n" -#: src/rs01-verify.c:520 +#: src/rs01-verify.c:495 #, c-format msgid "" "- good image : all sectors present\n" @@ -4195,12 +4161,12 @@ msgstr "" "- Gutes Abbild : Alle Sektoren vorhanden\n" "- Abbild-md5sum : %s\n" -#: src/rs01-verify.c:524 src/rs02-verify.c:926 src/rs03-verify.c:1388 +#: src/rs01-verify.c:497 src/rs02-verify.c:904 src/rs03-verify.c:1299 #, c-format msgid "Good image." msgstr "Gutes Abbild." -#: src/rs01-verify.c:530 +#: src/rs01-verify.c:501 #, c-format msgid "" "* suspicious image : all sectors present, but % CRC errors\n" @@ -4209,281 +4175,278 @@ msgstr "" "* Verdächtiges Abbild: alle Sektoren vorhanden, aber % Prüfsummen-Fehler\n" "- Abbild-md5sum : %s\n" -#: src/rs01-verify.c:535 +#: src/rs01-verify.c:504 #, c-format msgid "Image complete, but contains checksum errors!" msgstr "Abbild vollständig, aber mit Prüfsummen-Fehlern!" -#: src/rs01-verify.c:543 src/rs02-verify.c:892 +#: src/rs01-verify.c:510 src/rs02-verify.c:871 #, c-format msgid "* BAD image : % sectors missing\n" msgstr "* SCHLECHTES Abbild : % Sektoren fehlen\n" -#: src/rs01-verify.c:544 src/rs02-verify.c:896 src/rs03-verify.c:1320 +#: src/rs01-verify.c:511 src/rs02-verify.c:875 src/rs03-verify.c:1240 #, c-format msgid "* BAD image : % sectors missing, % CRC errors\n" msgstr "* SCHLECHTES Abbild : % Sektoren fehlen, % Prüfsummen-Fehler\n" -#: src/rs01-verify.c:561 src/rs03-verify.c:1275 +#: src/rs01-verify.c:524 src/rs03-verify.c:1194 msgid "- Checking ecc file -" msgstr "- Prüfe Fehlerkorrektur-Datei -" -#: src/rs01-verify.c:571 src/rs01-verify.c:601 +#: src/rs01-verify.c:531 src/rs01-verify.c:559 msgid "No error correction file present." msgstr "Keine Fehlerkorrektur-Datei vorhanden." -#: src/rs01-verify.c:580 +#: src/rs01-verify.c:539 msgid "permission denied\n" msgstr "" -#: src/rs01-verify.c:586 +#: src/rs01-verify.c:545 msgid "invalid\n" msgstr "ungültig\n" -#: src/rs01-verify.c:589 +#: src/rs01-verify.c:548 msgid "defective header (unusable)\n" msgstr "beschädigter Vorspann (unbrauchbar)\n" -#: src/rs01-verify.c:592 +#: src/rs01-verify.c:551 msgid "unknown codec (unusable)\n" msgstr "unbekannter Kodierer (unbrauchbar)\n" -#: src/rs01-verify.c:595 +#: src/rs01-verify.c:554 msgid "unusable\n" msgstr "unbrauchbar\n" -#: src/rs01-verify.c:625 src/rs01-verify.c:639 src/rs02-verify.c:957 -#: src/rs02-verify.c:972 +#: src/rs01-verify.c:582 src/rs01-verify.c:592 src/rs02-verify.c:930 +#: src/rs02-verify.c:941 msgid "created by dvdisaster" msgstr "Erzeugt von dvdisaster" -#: src/rs01-verify.c:651 +#: src/rs01-verify.c:601 msgid "created by dvdisaster-0.41.x.\n" msgstr "Erzeugt von dvdisaster-0.41.x.\n" -#: src/rs01-verify.c:663 src/rs02-verify.c:988 src/rs03-verify.c:806 +#: src/rs01-verify.c:610 src/rs02-verify.c:954 src/rs03-verify.c:762 #, c-format msgid "- method : %4s, %d roots, %4.1f%% redundancy.\n" msgstr "- Methode : %4s, %d Nullstellen, %4.1f%% Redundanz.\n" -#: src/rs01-verify.c:668 src/rs02-verify.c:994 src/rs03-verify.c:812 +#: src/rs01-verify.c:614 src/rs02-verify.c:958 src/rs03-verify.c:766 #, c-format msgid "%4s, %d roots, %4.1f%% redundancy" msgstr "%4s, %d Nullstellen, %4.1f%% Redundanz" -#: src/rs01-verify.c:676 src/rs02-verify.c:1002 +#: src/rs01-verify.c:621 src/rs02-verify.c:965 #, c-format msgid "- requires : dvdisaster-%d.%d (good)\n" msgstr "- Benötigt : dvdisaster-%d.%d (gut)\n" -#: src/rs01-verify.c:687 src/rs02-verify.c:1015 +#: src/rs01-verify.c:629 src/rs02-verify.c:975 #, c-format msgid "" "* requires : dvdisaster-%d.%d (BAD)\n" "* Warning : The following output might be incorrect.\n" "* : Please upgrade dvdisaster.\n" msgstr "" -"* Benötigt : dvdisaster-%d.%d (SCHLECHT)\n" -"* Warnung : Die folgenden Ausgaben können falsch sein.\n" -"* : Bitte verwenden Sie eine neuere Version von dvdisaster.\n" -#: src/rs01-verify.c:701 src/rs02-verify.c:1030 src/rs03-verify.c:883 +#: src/rs01-verify.c:641 src/rs02-verify.c:989 src/rs03-verify.c:824 #, c-format msgid "Please upgrade your version of dvdisaster!" msgstr "Bitte verwenden Sie eine neuere Version von dvdisaster!" -#: src/rs01-verify.c:714 +#: src/rs01-verify.c:652 #, c-format msgid "- medium sectors : %\n" msgstr "- Datentr.-Sektoren : %\n" -#: src/rs01-verify.c:721 +#: src/rs01-verify.c:656 #, c-format msgid "- medium sectors : % sectors + %d bytes\n" msgstr "- Datentr.-Sektoren : % Sektoren + %d Bytes\n" -#: src/rs01-verify.c:737 +#: src/rs01-verify.c:669 #, c-format msgid "- medium sectors : % (good)\n" msgstr "- Datentr.-Sektoren : % (gut)\n" -#: src/rs01-verify.c:744 +#: src/rs01-verify.c:673 #, c-format msgid "- medium sectors : % sectors + %d bytes (good)\n" msgstr "- Datentr.-Sektoren : % Sektoren + %d Bytes (gut)\n" -#: src/rs01-verify.c:758 src/rs02-verify.c:1054 +#: src/rs01-verify.c:684 src/rs02-verify.c:1009 #, c-format msgid "* medium sectors : % (BAD, perhaps TAO/DAO mismatch)\n" msgstr "* Datentr.-Sektoren : % (SCHLECHT, vielleicht TAO/DAO verwechselt)\n" -#: src/rs01-verify.c:771 src/rs02-verify.c:1056 +#: src/rs01-verify.c:696 src/rs02-verify.c:1011 #, c-format msgid "* medium sectors : % (BAD)\n" msgstr "* Datentr.-Sektoren : % (SCHLECHT)\n" -#: src/rs01-verify.c:777 src/rs01-verify.c:790 +#: src/rs01-verify.c:700 src/rs01-verify.c:709 #, c-format msgid "Image size does not match error correction file." msgstr "Abbild-Größe paßt nicht zum Wert in der Fehlerkorrektur-Datei." -#: src/rs01-verify.c:782 +#: src/rs01-verify.c:703 #, c-format msgid "* medium sectors : % sectors + %d bytes (BAD)\n" msgstr "* Datentr.-Sektoren : % Sektoren + %d Bytes (SCHLECHT)\n" -#: src/rs01-verify.c:787 +#: src/rs01-verify.c:706 #, c-format msgid "% sectors + %d bytes" msgstr "% Sektoren + %d Bytes" -#: src/rs01-verify.c:804 +#: src/rs01-verify.c:722 #, c-format msgid "- image md5sum : %s (good)\n" msgstr "- Abbild-md5sum : %s (gut)\n" -#: src/rs01-verify.c:805 +#: src/rs01-verify.c:726 #, c-format msgid "* image md5sum : %s (BAD)\n" msgstr "* Abbild-md5sum : %s (SCHLECHT)\n" -#: src/rs01-verify.c:817 +#: src/rs01-verify.c:734 #, c-format msgid "- image md5sum : %s\n" msgstr "- Abbild-md5sum : %s\n" -#: src/rs01-verify.c:827 src/rs03-verify.c:910 +#: src/rs01-verify.c:741 src/rs03-verify.c:846 msgid "* fingerprint match: NOT POSSIBLE - related sector is missing in image!\n" msgstr "* Fingerabdruck : Vergleich NICHT MÖGLICH - zugehöriger Sektor fehlt im Abbild!\n" -#: src/rs01-verify.c:830 src/rs03-verify.c:914 +#: src/rs01-verify.c:743 src/rs03-verify.c:848 #, c-format msgid "missing sector prevents calculation" msgstr "zugehöriger Sektor fehlt im Abbild" -#: src/rs01-verify.c:836 src/rs03-verify.c:920 +#: src/rs01-verify.c:749 src/rs03-verify.c:853 msgid "* fingerprint match: MISMATCH - .iso and .ecc don't belong together!\n" msgstr "* Fingerabdruck : PAßT NICHT - .iso und .ecc - Dateien gehören nicht zusammen!\n" -#: src/rs01-verify.c:841 src/rs03-verify.c:925 +#: src/rs01-verify.c:752 src/rs03-verify.c:856 #, c-format msgid "mismatch" msgstr "paßt nicht" -#: src/rs01-verify.c:844 src/rs03-verify.c:928 +#: src/rs01-verify.c:755 src/rs03-verify.c:859 #, c-format msgid "Image and error correction files do not belong together!" msgstr "Abbild- und Fehlerkorrektur-Dateien passen nicht zueinander!" -#: src/rs01-verify.c:849 src/rs03-verify.c:933 +#: src/rs01-verify.c:758 src/rs03-verify.c:862 msgid "- fingerprint match: good\n" msgstr "- Fingerabdruck : paßt (gut)\n" -#: src/rs01-verify.c:852 src/rs03-verify.c:936 +#: src/rs01-verify.c:759 src/rs03-verify.c:863 msgid "good" msgstr "gut" -#: src/rs01-verify.c:861 +#: src/rs01-verify.c:767 msgid "* quick mode : ecc file NOT scanned\n" msgstr "* kurze Überprüfung : Fehlerkorrektur-Datei wird nicht gelesen\n" -#: src/rs01-verify.c:869 +#: src/rs01-verify.c:775 #, c-format msgid "- ecc blocks : % (good)\n" msgstr "- Ecc-Bereiche : % (gut)\n" -#: src/rs01-verify.c:876 +#: src/rs01-verify.c:779 #, c-format msgid "* ecc blocks : % (BAD, expected %)\n" msgstr "* Ecc-Bereiche : % (SCHLECHT, erwartet: %)\n" -#: src/rs01-verify.c:879 +#: src/rs01-verify.c:782 #, c-format msgid "% (bad, expected %)" msgstr "% (schlecht, erwartet: %)" -#: src/rs01-verify.c:905 +#: src/rs01-verify.c:804 #, c-format msgid "- ecc md5sum : %3d%%" msgstr "- Ecc-md5sum : %3d%%" -#: src/rs01-verify.c:926 +#: src/rs01-verify.c:822 msgid "* ecc md5sum : BAD, ecc file may be damaged!\n" msgstr "* Ecc-md5sum : SCHLECHT, Fehlerkorrektur-Datei kann beschädigt sein!\n" -#: src/rs01-verify.c:929 +#: src/rs01-verify.c:823 #, c-format msgid "bad" msgstr "schlecht" -#: src/rs01-verify.c:931 +#: src/rs01-verify.c:825 #, c-format msgid "Error correction file may be damaged!" msgstr "Fehlerkorrektur-Datei ist möglicherweise beschädigt!" -#: src/rs01-verify.c:936 src/rs02-verify.c:1137 +#: src/rs01-verify.c:828 src/rs02-verify.c:1075 #, c-format msgid "- ecc md5sum : %s (good)\n" msgstr "- Ecc-md5sum : %s (gut) \n" -#: src/rs01-verify.c:953 +#: src/rs01-verify.c:841 #, c-format msgid "Good error correction file." msgstr "Gute Fehlerkorrektur-Datei." -#: src/rs01-window.c:140 src/rs02-window.c:89 src/rs03-window.c:94 +#: src/rs01-window.c:137 src/rs02-window.c:85 src/rs03-window.c:90 msgid "2. Creating error correction data:" msgstr "2. Erzeuge Fehlerkorrektur-Daten:" -#: src/rs01-window.c:164 +#: src/rs01-window.c:161 msgid "Show reading speed curve" msgstr "Zeige Lesegeschwindigkeits-Kurve" -#: src/rs01-window.c:203 src/rs02-window.c:141 src/rs03-window.c:174 +#: src/rs01-window.c:200 src/rs02-window.c:137 src/rs03-window.c:170 #, c-format msgid "Repaired: %" msgstr "Repariert: %" -#: src/rs01-window.c:204 src/rs02-window.c:142 src/rs03-window.c:175 +#: src/rs01-window.c:201 src/rs02-window.c:139 src/rs03-window.c:171 #, c-format msgid "Unrepairable: %" msgstr "Nicht reparierbar: %" -#: src/rs01-window.c:205 src/rs02-window.c:143 src/rs03-window.c:176 +#: src/rs01-window.c:202 src/rs02-window.c:141 src/rs03-window.c:172 #, c-format msgid "Progress: %3d.%1d%%" msgstr "Fortschritt: %3d.%1d%%" -#: src/rs01-window.c:414 src/rs02-window.c:348 src/rs03-window.c:381 +#: src/rs01-window.c:405 src/rs02-window.c:346 src/rs03-window.c:377 msgid "Errors/Ecc block" msgstr "Fehler/Ecc-Bereich" -#: src/rs01-window.c:450 src/rs02-window.c:378 src/rs03-preferences.c:318 -#: src/rs03-preferences.c:328 +#: src/rs01-window.c:441 src/rs02-window.c:376 src/rs03-preferences.c:320 +#: src/rs03-preferences.c:330 #, c-format msgid "%4.1f%% redundancy (%d roots)" msgstr "%4.1f%% Redundanz (%d Nullstellen)" -#: src/rs01-window.c:467 src/rs01-window.c:874 src/rs01-window.c:880 -#: src/rs01-window.c:881 src/rs02-window.c:395 src/rs02-window.c:1362 -#: src/rs02-window.c:1368 src/rs02-window.c:1369 +#: src/rs01-window.c:458 src/rs01-window.c:866 src/rs01-window.c:872 +#: src/rs01-window.c:873 src/rs02-window.c:393 src/rs02-window.c:1369 +#: src/rs02-window.c:1375 src/rs02-window.c:1376 #, c-format msgid "%d MiB of file cache" msgstr "%d MiB Datei-Zwischenspeicher" -#: src/rs01-window.c:669 src/rs03-preferences.c:558 +#: src/rs01-window.c:660 src/rs03-preferences.c:560 msgid "Redundancy for new error correction files" msgstr "Redundanz für neu erstellte Fehlerkorrektur-Dateien" -#: src/rs01-window.c:678 src/rs03-preferences.c:585 +#: src/rs01-window.c:669 src/rs03-preferences.c:587 msgid "Normal redundancy" msgstr "Normale Redundanz" -#: src/rs01-window.c:678 src/rs03-preferences.c:585 +#: src/rs01-window.c:669 src/rs03-preferences.c:587 msgid "Normal" msgstr "Normal" -#: src/rs01-window.c:701 src/rs03-preferences.c:609 +#: src/rs01-window.c:692 src/rs03-preferences.c:611 #, c-format msgid "" "Normal redundancy\n" @@ -4497,15 +4460,15 @@ msgstr "" "Mit dieser Einstellung werden Fehlerkorrektur-Dateien\n" "durch optimierten Programmcode besonders schnell erzeugt." -#: src/rs01-window.c:708 src/rs03-preferences.c:616 +#: src/rs01-window.c:699 src/rs03-preferences.c:618 msgid "High redundancy" msgstr "Hohe Redundanz" -#: src/rs01-window.c:708 src/rs03-preferences.c:616 +#: src/rs01-window.c:699 src/rs03-preferences.c:618 msgid "High" msgstr "Hoch" -#: src/rs01-window.c:731 src/rs03-preferences.c:639 +#: src/rs01-window.c:722 src/rs03-preferences.c:641 #, c-format msgid "" "High redundancy\n" @@ -4519,15 +4482,15 @@ msgstr "" "Mit dieser Einstellung werden Fehlerkorrektur-Dateien\n" "durch optimierten Programmcode besonders schnell erzeugt." -#: src/rs01-window.c:739 src/rs03-preferences.c:647 +#: src/rs01-window.c:730 src/rs03-preferences.c:648 msgid "Other redundancy" msgstr "Frei wählbare Redundanz" -#: src/rs01-window.c:739 src/rs03-preferences.c:647 +#: src/rs01-window.c:730 src/rs03-preferences.c:648 msgid "Other" msgstr "Andere:" -#: src/rs01-window.c:778 src/rs03-preferences.c:686 +#: src/rs01-window.c:769 src/rs03-preferences.c:687 #, c-format msgid "" "Other redundancy\n" @@ -4540,19 +4503,19 @@ msgstr "" "Freie Einstellung der Redundanz in Prozentwerten.\n" "Eine Fehlerkorrektur-Datei mit x%% Redundanz benötigt etwa x%% der Größe des zugehörigen Abbilds an Speicherplatz." -#: src/rs01-window.c:786 src/rs03-preferences.c:694 +#: src/rs01-window.c:777 src/rs03-preferences.c:695 msgid "Space-delimited redundancy" msgstr "Redundanz aus der Dateigröße ableiten" -#: src/rs01-window.c:786 src/rs02-window.c:1293 src/rs03-preferences.c:694 +#: src/rs01-window.c:778 src/rs02-window.c:1299 src/rs03-preferences.c:696 msgid "Use at most" msgstr "Verwende höchstens" -#: src/rs01-window.c:811 src/rs03-preferences.c:719 +#: src/rs01-window.c:803 src/rs03-preferences.c:721 msgid "MiB for error correction data" msgstr "MiB für Fehlerkorrektur-Daten" -#: src/rs01-window.c:828 src/rs03-preferences.c:736 +#: src/rs01-window.c:820 src/rs03-preferences.c:738 msgid "" "Space-delimited redundancy\n" "\n" @@ -4566,19 +4529,19 @@ msgstr "" "\n" "Vorsicht: Wenn man unterschiedlich große Abbilder mit der gleichen Einstellung bearbeitet, erhalten die kleineren Abbilder mehr Redundanz als die großen Abbilder. Das ist normalerweise nicht sinnvoll." -#: src/rs01-window.c:871 src/rs02-window.c:1359 +#: src/rs01-window.c:863 src/rs02-window.c:1366 msgid "Memory utilization" msgstr "Speichernutzung" -#: src/rs01-window.c:875 src/rs02-window.c:1363 +#: src/rs01-window.c:867 src/rs02-window.c:1370 msgid "File cache" msgstr "Datei-Zwischenspeicher" -#: src/rs01-window.c:887 src/rs02-window.c:1375 src/rs03-preferences.c:917 +#: src/rs01-window.c:879 src/rs02-window.c:1382 src/rs03-preferences.c:919 msgid "Use" msgstr "Verwende" -#: src/rs01-window.c:916 src/rs02-window.c:1404 +#: src/rs01-window.c:908 src/rs02-window.c:1412 msgid "" "File cache\n" "\n" @@ -4588,23 +4551,23 @@ msgstr "" "\n" "dvdisaster optimiert Zugriffe auf die Abbild- und Fehlerkorrektur-Datei durch einen eigenen Zwischenspeicher. Die Voreinstellung von 32MiB ist für die meisten Systeme passend." -#: src/rs02-common.c:580 src/rs02-common.c:592 src/rs02-verify.c:649 -#: src/rs03-common.c:643 +#: src/rs02-common.c:578 src/rs02-common.c:590 src/rs02-verify.c:628 +#: src/rs03-common.c:644 #, c-format msgid "Failed seeking to ecc header at %: %s\n" msgstr "Ansteuern des Ecc-Vorspanns bei Pos. % fehlgeschlagen: %s\n" -#: src/rs02-common.c:584 src/rs02-common.c:596 src/rs03-common.c:647 +#: src/rs02-common.c:582 src/rs02-common.c:594 src/rs03-common.c:648 #, c-format msgid "Failed writing ecc header at %: %s\n" msgstr "Schreiben des Ecc-Vorspanns bei Pos. % fehlgeschlagen: %s\n" -#: src/rs02-create.c:122 src/rs03-create.c:261 +#: src/rs02-create.c:111 src/rs03-create.c:250 #, c-format msgid "Aborted by user request! (partial ecc data removed from image)" msgstr "Abbruch auf Benutzeranforderung! (unvollständige Fehlerkorrektur-Daten wurden aus dem Abbild entfernt)" -#: src/rs02-create.c:156 src/rs03-create.c:318 +#: src/rs02-create.c:142 src/rs03-create.c:302 #, c-format msgid "" "Image \"%s\" already contains error correction information.\n" @@ -4613,11 +4576,11 @@ msgstr "" "Das Abbild \"%s\" enthält bereits Fehlerkorrektur-Daten.\n" "Es wird auf den Daten-Anteil (% Sektoren) verkürzt.\n" -#: src/rs02-create.c:173 src/rs03-create.c:347 +#: src/rs02-create.c:157 src/rs03-create.c:329 msgid "Image size is now" msgstr "Abbild-Größe ist jetzt" -#: src/rs02-create.c:236 +#: src/rs02-create.c:218 msgid "" "Image contains unread(able) sectors.\n" "Error correction information can only be\n" @@ -4627,7 +4590,7 @@ msgstr "" "Fehlerkorrektur-Daten können nur an vollständige\n" "Abbilder hinzugefügt werden.\n" -#: src/rs02-create.c:240 +#: src/rs02-create.c:222 #, c-format msgid "" "Sector % in the image is marked unreadable\n" @@ -4652,34 +4615,34 @@ msgstr "" "Fehlerkorrekur-Daten können nur für vollständige\n" "(unbeschädigte) Abbilder erstellt werden.\n" -#: src/rs02-create.c:257 src/rs02-create.c:327 src/rs02-create.c:340 +#: src/rs02-create.c:239 src/rs02-create.c:304 src/rs02-create.c:314 #, c-format msgid "Preparing image (checksums, adding space): %3d%%" msgstr "Abbild vorbereiten (Prüfsummen, Größe erweitern): %3d%%" -#: src/rs02-create.c:294 src/rs02-create.c:304 src/rs02-fix.c:96 -#: src/rs03-create.c:454 src/rs03-create.c:465 src/rs03-fix.c:94 +#: src/rs02-create.c:273 src/rs02-create.c:283 src/rs02-fix.c:90 +#: src/rs03-create.c:438 src/rs03-create.c:449 src/rs03-fix.c:87 #, c-format msgid "Failed seeking to end of image: %s\n" msgstr "Ansteuern des Abbild-Endes fehlgeschlagen: %s\n" -#: src/rs02-create.c:298 src/rs02-create.c:321 src/rs02-fix.c:109 -#: src/rs03-create.c:439 src/rs03-fix.c:112 +#: src/rs02-create.c:277 src/rs02-create.c:298 src/rs02-fix.c:103 +#: src/rs03-create.c:423 src/rs03-fix.c:105 #, c-format msgid "Failed expanding the image: %s\n" msgstr "Erweitern des Abbildes fehlgeschlagen: %s\n" -#: src/rs02-create.c:326 src/rs02-create.c:339 +#: src/rs02-create.c:303 src/rs02-create.c:313 #, c-format msgid "Preparing image (checksums taken from cache, adding space): %3d%%" msgstr "Abbild vorbereiten (Prüfsummen aus Zwischenspeicher entnommen; füge Platz hinzu): %3d%%" -#: src/rs02-create.c:1071 src/rs03-create.c:1309 +#: src/rs02-create.c:1027 src/rs03-create.c:1267 msgid "Error correction data creation aborted" msgstr "Erzeugen der Fehlerkorrektur-Daten abgebrochen" -#: src/rs02-create.c:1102 src/rs02-create.c:1122 src/rs03-create.c:1314 -#: src/rs03-create.c:1369 +#: src/rs02-create.c:1055 src/rs02-create.c:1073 src/rs03-create.c:1271 +#: src/rs03-create.c:1326 #, c-format msgid "" "Augmenting the image with error correction data.\n" @@ -4688,16 +4651,16 @@ msgstr "" "Erweitere das Abbild um Fehlerkorrektur-Daten.\n" "%s" -#: src/rs02-create.c:1103 src/rs03-create.c:1315 +#: src/rs02-create.c:1056 src/rs03-create.c:1272 msgid "- checking image -" msgstr "- prüfe Abbild -" -#: src/rs02-create.c:1118 +#: src/rs02-create.c:1069 #, c-format msgid "Encoding with Method RS02: % MiB data, % MiB ecc (%d roots; %4.1f%% redundancy)." msgstr "Kodiere mit Methode RS02: % MiB Daten, % MiB Fehlerkorrektur-Daten (%d Nullstellen; %4.1f%% Redundanz)." -#: src/rs02-create.c:1127 +#: src/rs02-create.c:1077 #, c-format msgid "" "Augmenting image with Method RS02:\n" @@ -4706,7 +4669,7 @@ msgstr "" "Erweitere das Abbild mit dem RS02-Verfahren:\n" "% MiB Daten, % MiB Fehlerkorrektur-Daten (%d Nullstellen; %4.1f%% Redundanz)." -#: src/rs02-create.c:1136 +#: src/rs02-create.c:1086 #, c-format msgid "" "Not enough space on medium left for error correction data.\n" @@ -4720,15 +4683,15 @@ msgstr "" "und kein größerer Datenträger zur Verfügung steht, erzeugen Sie bitte\n" "eine alleinstehende Fehlerkorrektur-Datei." -#: src/rs02-create.c:1146 src/rs03-create.c:1409 +#: src/rs02-create.c:1096 src/rs03-create.c:1367 #, c-format msgid "" "Using redundancies below 20% may not give\n" "the expected data loss protection.\n" msgstr "" -#: src/rs02-create.c:1178 src/rs02-create.c:1188 src/rs03-create.c:1448 -#: src/rs03-create.c:1476 +#: src/rs02-create.c:1128 src/rs02-create.c:1136 src/rs03-create.c:1406 +#: src/rs03-create.c:1429 #, c-format msgid "" "Image has been augmented with error correction data.\n" @@ -4737,21 +4700,21 @@ msgstr "" "Das Abbild wurde um Fehlerkorrektur-Daten erweitert.\n" "Die neue Abbild-Größe ist % MiB (% Sektoren).\n" -#: src/rs02-fix.c:119 src/rs02-fix.c:130 src/rs03-fix.c:122 src/rs03-fix.c:133 +#: src/rs02-fix.c:108 src/rs02-fix.c:114 src/rs03-fix.c:110 src/rs03-fix.c:116 #, c-format msgid "Expanding image: %3d%%" msgstr "Erweitere das Abbild: %3d%%" -#: src/rs02-fix.c:198 src/rs03-fix.c:201 +#: src/rs02-fix.c:175 src/rs03-fix.c:176 msgid "Opening files..." msgstr "Öffne Dateien..." -#: src/rs02-fix.c:224 +#: src/rs02-fix.c:200 #, c-format msgid "Image contains error correction data: Method RS02, %d roots, %4.1f%% redundancy." msgstr "Das Abbild enthält Fehlerkorrektur-Daten: Methode RS02, %d Nullstellen, %4.1f%% Redundanz." -#: src/rs02-fix.c:242 src/rs03-fix.c:309 +#: src/rs02-fix.c:218 src/rs03-fix.c:279 #, c-format msgid "" "The image file is %lld sectors longer as noted in the\n" @@ -4769,22 +4732,22 @@ msgstr "" "\n" "%s" -#: src/rs02-fix.c:499 src/rs03-fix.c:559 +#: src/rs02-fix.c:463 src/rs03-fix.c:518 #, c-format msgid "* Ecc block %: %3d unrepairable sectors: " msgstr "* Ecc-Bereich %: %3d unreparierbare Sektoren: " -#: src/rs02-fix.c:721 +#: src/rs02-fix.c:685 #, c-format msgid "-> CRC-predicted error in sector %lld at byte %4d (value %02x '%c', expected %02x '%c')\n" msgstr "-> Durch Prüfsumme erwarteter Fehler in Sektor %lld, Byte %4d (Wert %02x '%c', erwartet %02x '%c')\n" -#: src/rs02-fix.c:724 +#: src/rs02-fix.c:688 #, c-format msgid "-> Non-predicted error in sector %lld at byte %4d (value %02x '%c', expected %02x '%c')\n" msgstr "-> Nicht erwarteter Fehler in Sektor %lld, Byte %4d (Wert %02x '%c', erwartet %02x '%c')\n" -#: src/rs02-fix.c:851 src/rs03-fix.c:941 +#: src/rs02-fix.c:813 src/rs03-fix.c:901 #, c-format msgid "Repaired sectors: % (% data, % ecc)\n" msgstr "Reparierte Sektoren: % (% Daten, % Fehlerkorrektur)\n" @@ -4801,7 +4764,7 @@ msgstr "Weitersuchen" msgid "Disable RS02 initialization in the preferences" msgstr "RS02-Test in den Einstellungen dauerhaft abschalten" -#: src/rs02-recognize.c:305 +#: src/rs02-recognize.c:303 msgid "" "Faster medium initialization\n" "\n" @@ -4815,108 +4778,108 @@ msgstr "" "Informationen zu suchen. Wählen Sie \"Überspringe RS02-Test\" wenn Sie sicher sind,\n" "daß dieser Datenträger nicht mit RS02-Fehlerkorrektur-Informationen erweitert wurde." -#: src/rs02-verify.c:48 src/rs02-verify.c:200 src/rs02-verify.c:306 -#: src/rs03-verify.c:59 src/rs03-verify.c:240 src/rs03-verify.c:302 +#: src/rs02-verify.c:50 src/rs02-verify.c:202 src/rs02-verify.c:308 +#: src/rs03-verify.c:62 src/rs03-verify.c:243 src/rs03-verify.c:305 msgid "Data checksum:" msgstr "Daten-Prüfsumme:" -#: src/rs02-verify.c:49 src/rs02-verify.c:314 +#: src/rs02-verify.c:51 src/rs02-verify.c:316 msgid "CRC checksum:" msgstr "Crc-Prüfsumme:" -#: src/rs02-verify.c:208 +#: src/rs02-verify.c:210 msgid "Ecc headers:" msgstr "Ecc-Vorspänne:" -#: src/rs02-verify.c:216 src/rs03-verify.c:311 +#: src/rs02-verify.c:218 src/rs03-verify.c:314 msgid "Data section:" msgstr "Daten-Abschnitt:" -#: src/rs02-verify.c:224 src/rs03-verify.c:320 +#: src/rs02-verify.c:226 src/rs03-verify.c:323 msgid "Crc section:" msgstr "Crc-Abschnitt:" -#: src/rs02-verify.c:232 src/rs03-verify.c:329 +#: src/rs02-verify.c:234 src/rs03-verify.c:332 msgid "Ecc section:" msgstr "Ecc-Abschnitt:" -#: src/rs02-verify.c:255 +#: src/rs02-verify.c:257 msgid "Error correction data" msgstr "Fehlerkorrektur-Daten" -#: src/rs02-verify.c:512 src/rs03-verify.c:457 +#: src/rs02-verify.c:506 src/rs03-verify.c:458 #, c-format msgid "- erasure counts : avg = %.1f; worst = %d per ecc block.\n" msgstr "- Auslöschungen : Mittelwert = %.1f; Schlechtester = %d pro Ecc-Block\n" -#: src/rs02-verify.c:515 src/rs03-verify.c:460 +#: src/rs02-verify.c:509 src/rs03-verify.c:461 #, c-format msgid "- prognosis : % of % sectors recoverable (%d.%d%%)\n" msgstr "- Vorhersage : % von % Sektoren wiederherstellbar (%d.%d%%)\n" -#: src/rs02-verify.c:522 src/rs03-verify.c:465 +#: src/rs02-verify.c:515 src/rs03-verify.c:464 msgid "Erasure counts:" msgstr "Auslöschungen:" -#: src/rs02-verify.c:523 src/rs03-verify.c:466 +#: src/rs02-verify.c:516 src/rs03-verify.c:465 msgid "Prognosis:" msgstr "Vorhersage:" -#: src/rs02-verify.c:526 src/rs03-verify.c:469 +#: src/rs02-verify.c:519 src/rs03-verify.c:468 #, c-format msgid "avg = %.1f; worst = %d per ecc block." msgstr "Mittelwert = %.1f; Schlechtester = %d pro Ecc-Block." -#: src/rs02-verify.c:531 src/rs03-verify.c:474 +#: src/rs02-verify.c:524 src/rs03-verify.c:473 #, c-format msgid "% of % sectors recoverable (%d.%d%%)" msgstr "% von % Sektoren wiederherstellbar (%d.%d%%)" -#: src/rs02-verify.c:593 src/rs03-verify.c:700 +#: src/rs02-verify.c:579 src/rs03-verify.c:670 msgid "Check aborted" msgstr "Überprüfung abgebrochen" -#: src/rs02-verify.c:615 src/rs03-verify.c:747 +#: src/rs02-verify.c:597 src/rs03-verify.c:707 msgid "Checking the image file." msgstr "Überprüfe die Abbild-Datei." -#: src/rs02-verify.c:616 +#: src/rs02-verify.c:598 msgid "Image contains error correction data." msgstr "Das Abbild enthält Fehlerkorrektur-Daten." -#: src/rs02-verify.c:631 src/rs03-verify.c:1041 +#: src/rs02-verify.c:611 src/rs03-verify.c:955 #, c-format msgid "Image file is % sectors shorter than expected." msgstr "Das Abbild ist % Sektoren kürzer als erwartet." -#: src/rs02-verify.c:632 src/rs03-verify.c:1044 +#: src/rs02-verify.c:612 src/rs03-verify.c:958 #, c-format msgid "Image file is % sectors longer than expected." msgstr "Das Abbild ist % Sektoren länger als erwartet." -#: src/rs02-verify.c:653 +#: src/rs02-verify.c:632 #, c-format msgid "Failed reading ecc header at %: %s\n" msgstr "Lesen des Ecc-Vorspanns bei Pos. % fehlgeschlagen: %s\n" -#: src/rs02-verify.c:697 +#: src/rs02-verify.c:677 #, c-format msgid "% ok, % CRC errors, % missing" msgstr "% ok, % Prüfsummen-Fehler, % fehlen" -#: src/rs02-verify.c:837 src/rs02-verify.c:860 src/rs03-verify.c:1247 -#: src/rs03-verify.c:1290 +#: src/rs02-verify.c:812 src/rs02-verify.c:837 src/rs03-verify.c:1163 +#: src/rs03-verify.c:1208 #, c-format msgid "% sectors missing; % CRC errors" msgstr "% Sektoren fehlen; % Prüfsummen-Fehler" -#: src/rs02-verify.c:841 src/rs02-verify.c:845 src/rs02-verify.c:864 -#: src/rs02-verify.c:868 src/rs03-verify.c:1255 src/rs03-verify.c:1298 +#: src/rs02-verify.c:817 src/rs02-verify.c:822 src/rs02-verify.c:842 +#: src/rs02-verify.c:847 src/rs03-verify.c:1173 src/rs03-verify.c:1218 #, c-format msgid "% sectors missing" msgstr "% Sektoren fehlen" -#: src/rs02-verify.c:883 +#: src/rs02-verify.c:862 #, c-format msgid "" "- good image : all sectors present\n" @@ -4925,46 +4888,46 @@ msgstr "" "- Gutes Abbild : Alle Sektoren vorhanden\n" "- Daten-md5sum : %s\n" -#: src/rs02-verify.c:889 +#: src/rs02-verify.c:868 msgid "* suspicious image : contains damaged ecc headers\n" msgstr "* Verdächtiges Abbild: enthält beschädigte Ecc-Vorspänne\n" -#: src/rs02-verify.c:894 src/rs03-verify.c:1317 +#: src/rs02-verify.c:873 src/rs03-verify.c:1237 #, c-format msgid "* suspicious image : all sectors present, but % CRC errors\n" msgstr "* Verdächtiges Abbild: alle Sektoren vorhanden, aber % Prüfsummen-Fehler\n" -#: src/rs02-verify.c:900 +#: src/rs02-verify.c:879 #, c-format msgid " ... ecc headers : % ok, % CRC errors, % missing\n" msgstr " ... Ecc-Vorspänne : % ok, % Prüfsummen-Fehler, % fehlen\n" -#: src/rs02-verify.c:902 src/rs03-verify.c:1323 +#: src/rs02-verify.c:881 src/rs03-verify.c:1243 #, c-format msgid " ... data section : % sectors missing; % CRC errors\n" msgstr " ... Daten-Abschnitt: % Sektoren fehlen; % Prüfsummen-Fehler\n" -#: src/rs02-verify.c:905 src/rs03-verify.c:1326 +#: src/rs02-verify.c:884 src/rs03-verify.c:1246 #, c-format msgid " ... data md5sum : %s\n" msgstr " ... Daten-md5sum : %s\n" -#: src/rs02-verify.c:906 src/rs03-verify.c:1332 +#: src/rs02-verify.c:885 src/rs03-verify.c:1252 #, c-format msgid " ... crc section : % sectors missing\n" msgstr " ... CRC-Abschnitt : % Sektoren fehlen\n" -#: src/rs02-verify.c:907 src/rs03-verify.c:1334 +#: src/rs02-verify.c:886 src/rs03-verify.c:1254 #, c-format msgid " ... ecc section : % sectors missing\n" msgstr " ... ECC-Abschnitt : % Sektoren fehlen\n" -#: src/rs02-verify.c:930 src/rs03-verify.c:1392 +#: src/rs02-verify.c:909 src/rs03-verify.c:1304 #, c-format msgid "Damaged image." msgstr "Das Abbild ist beschädigt." -#: src/rs02-verify.c:944 +#: src/rs02-verify.c:917 msgid "" "\n" "Error correction data: " @@ -4972,88 +4935,88 @@ msgstr "" "\n" "Fehlerkorrektur-Daten: " -#: src/rs02-verify.c:1036 +#: src/rs02-verify.c:994 msgid "Please upgrade your version of dvdisaster!" msgstr "" -#: src/rs02-verify.c:1043 +#: src/rs02-verify.c:1001 #, c-format msgid "- medium sectors : % / % (good)\n" msgstr "- Datentr.-Sektoren : % / % (gut)\n" -#: src/rs02-verify.c:1063 +#: src/rs02-verify.c:1017 #, c-format msgid "Image size does not match recorded size." msgstr "Die Abbild-Größe entspricht nicht der aufgezeichneten Größe." -#: src/rs02-verify.c:1078 +#: src/rs02-verify.c:1031 #, c-format msgid "- data md5sum : %s (good)\n" msgstr "- Daten-md5sum : %s (gut)\n" -#: src/rs02-verify.c:1079 +#: src/rs02-verify.c:1032 #, c-format msgid "* data md5sum : %s (BAD)\n" msgstr "* Daten-md5sum : %s (SCHLECHT)\n" -#: src/rs02-verify.c:1092 src/rs03-verify.c:898 +#: src/rs02-verify.c:1043 src/rs03-verify.c:837 #, c-format msgid "- data md5sum : %s\n" msgstr "- Daten-md5sum : %s\n" -#: src/rs02-verify.c:1106 +#: src/rs02-verify.c:1054 #, c-format msgid "- crc md5sum : %s (good)\n" msgstr "- CRC-md5sum : %s (gut)\n" -#: src/rs02-verify.c:1113 +#: src/rs02-verify.c:1058 #, c-format msgid "* crc md5sum : %s (BAD)\n" msgstr "* CRC-md5sum : %s (SCHLECHT)\n" -#: src/rs02-verify.c:1123 +#: src/rs02-verify.c:1064 #, c-format msgid "- crc md5sum : %s\n" msgstr "- Crc-md5sum : %s\n" -#: src/rs02-verify.c:1144 +#: src/rs02-verify.c:1079 #, c-format msgid "* ecc md5sum : %s (BAD)\n" msgstr "* Ecc-md5sum : %s (SCHLECHT)\n" -#: src/rs02-verify.c:1154 +#: src/rs02-verify.c:1085 #, c-format msgid "- ecc md5sum : %s\n" msgstr "- Ecc-md5sum : %s\n" -#: src/rs02-verify.c:1179 src/rs03-verify.c:952 +#: src/rs02-verify.c:1103 src/rs03-verify.c:877 #, c-format msgid "Good error correction data." msgstr "Gute Fehlerkorrektur-Daten." -#: src/rs02-verify.c:1183 src/rs03-verify.c:1409 +#: src/rs02-verify.c:1109 src/rs03-verify.c:1323 #, c-format msgid "Full data recovery is likely." msgstr "Eine vollständige Wiederherstellung ist wahrscheinlich." -#: src/rs02-verify.c:1186 src/rs03-verify.c:1412 +#: src/rs02-verify.c:1114 src/rs03-verify.c:1328 #, c-format msgid "Full data recovery is NOT possible." msgstr "Eine vollständige Wiederherstellung ist NICHT möglich." -#: src/rs02-window.c:80 +#: src/rs02-window.c:76 msgid "1. Preparing image:" msgstr "1. Abbild vorbereiten:" -#: src/rs02-window.c:772 +#: src/rs02-window.c:770 msgid "Maximum image size" msgstr "Größte mögliche Abbildlänge" -#: src/rs02-window.c:784 +#: src/rs02-window.c:782 msgid "Using the smallest possible size from table" msgstr "Kleinsten möglichen Wert aus der Tabelle verwenden" -#: src/rs02-window.c:784 +#: src/rs02-window.c:783 msgid "Use smallest possible size from following table (in sectors):" msgstr "Verwende kleinsten möglichen Wert aus folgender Tabelle:" @@ -5075,15 +5038,15 @@ msgstr "" msgid "CD-R / CD-RW:" msgstr "CD-R / CD-RW:" -#: src/rs02-window.c:844 src/rs02-window.c:863 src/rs02-window.c:907 -#: src/rs02-window.c:926 src/rs02-window.c:970 src/rs02-window.c:989 -#: src/rs02-window.c:1033 src/rs02-window.c:1052 src/rs02-window.c:1095 -#: src/rs02-window.c:1114 src/rs02-window.c:1157 src/rs02-window.c:1176 -#: src/rs02-window.c:1221 src/rs02-window.c:1240 +#: src/rs02-window.c:844 src/rs02-window.c:863 src/rs02-window.c:908 +#: src/rs02-window.c:927 src/rs02-window.c:972 src/rs02-window.c:991 +#: src/rs02-window.c:1036 src/rs02-window.c:1055 src/rs02-window.c:1099 +#: src/rs02-window.c:1118 src/rs02-window.c:1162 src/rs02-window.c:1181 +#: src/rs02-window.c:1227 src/rs02-window.c:1246 msgid "query medium" msgstr "Datenträger abfragen" -#: src/rs02-window.c:875 +#: src/rs02-window.c:876 #, c-format msgid "" "CD medium size\n" @@ -5106,11 +5069,11 @@ msgstr "" "Bitte beachten Sie, daß Abbilder höchstens auf die dreifache Größe erweitert werden; dies entspricht einer größtmöglichen Redundanz von 200%%.\n" "Aber auch wenn diese Obergrenze noch nicht erreicht ist werden aus technischen Gründen ein paar Sektoren weniger als angegeben verwendet." -#: src/rs02-window.c:893 +#: src/rs02-window.c:894 msgid "DVD 1 layer:" msgstr "einlagige DVD:" -#: src/rs02-window.c:938 +#: src/rs02-window.c:940 #, c-format msgid "" "Single layer DVD medium size\n" @@ -5132,11 +5095,11 @@ msgstr "" "Bitte beachten Sie, daß Abbilder höchstens auf die dreifache Größe erweitert werden; dies entspricht einer größtmöglichen Redundanz von 200%%.\n" "Aber auch wenn diese Obergrenze noch nicht erreicht ist werden aus technischen Gründen ein paar Sektoren weniger als angegeben verwendet." -#: src/rs02-window.c:956 +#: src/rs02-window.c:958 msgid "DVD 2 layers:" msgstr "zweilagige DVD:" -#: src/rs02-window.c:1001 +#: src/rs02-window.c:1004 #, c-format msgid "" "Two layered DVD medium size\n" @@ -5158,11 +5121,11 @@ msgstr "" "Bitte beachten Sie, daß Abbilder höchstens auf die dreifache Größe erweitert werden; dies entspricht einer größtmöglichen Redundanz von 200%%.\n" "Aber auch wenn diese Obergrenze noch nicht erreicht ist werden aus technischen Gründen ein paar Sektoren weniger als angegeben verwendet." -#: src/rs02-window.c:1019 +#: src/rs02-window.c:1022 msgid "BD 1 layer:" msgstr "einlagige BD:" -#: src/rs02-window.c:1064 +#: src/rs02-window.c:1068 #, c-format msgid "" "Single layer BD medium size\n" @@ -5184,11 +5147,11 @@ msgstr "" "Bitte beachten Sie, daß Abbilder höchstens auf die dreifache Größe erweitert werden; dies entspricht einer größtmöglichen Redundanz von 200%%.\n" "Aber auch wenn diese Obergrenze noch nicht erreicht ist werden aus technischen Gründen ein paar Sektoren weniger als angegeben verwendet." -#: src/rs02-window.c:1081 +#: src/rs02-window.c:1085 msgid "BD 2 layers:" msgstr "zweilagige BD:" -#: src/rs02-window.c:1126 +#: src/rs02-window.c:1131 #, c-format msgid "" "Two layered BD medium size\n" @@ -5210,11 +5173,11 @@ msgstr "" "Bitte beachten Sie, daß Abbilder höchstens auf die dreifache Größe erweitert werden; dies entspricht einer größtmöglichen Redundanz von 200%%.\n" "Aber auch wenn diese Obergrenze noch nicht erreicht ist werden aus technischen Gründen ein paar Sektoren weniger als angegeben verwendet." -#: src/rs02-window.c:1143 +#: src/rs02-window.c:1148 msgid "BDXL 3 layers:" msgstr "dreilagige BDXL:" -#: src/rs02-window.c:1188 +#: src/rs02-window.c:1194 #, c-format msgid "" "Three layered BDXL medium size\n" @@ -5236,11 +5199,11 @@ msgstr "" "Bitte beachten Sie, daß Abbilder höchstens auf die dreifache Größe erweitert werden; dies entspricht einer größtmöglichen Redundanz von 200%%.\n" "Aber auch wenn diese Obergrenze noch nicht erreicht ist werden aus technischen Gründen ein paar Sektoren weniger als angegeben verwendet." -#: src/rs02-window.c:1207 +#: src/rs02-window.c:1213 msgid "BDXL 4 layers:" msgstr "" -#: src/rs02-window.c:1252 +#: src/rs02-window.c:1258 #, c-format msgid "" "Four layered BDXL medium size\n" @@ -5254,11 +5217,11 @@ msgid "" "Even if this limit is not reached the augmented image may be a few sectors smaller than specified for technical reasons." msgstr "" -#: src/rs02-window.c:1314 +#: src/rs02-window.c:1320 msgid "sectors." msgstr "Sektoren." -#: src/rs02-window.c:1327 +#: src/rs02-window.c:1334 #, c-format msgid "" "Use at most ... sectors\n" @@ -5277,47 +5240,47 @@ msgstr "" "Bitte beachten Sie, daß Abbilder höchstens auf die dreifache Größe erweitert werden; dies entspricht einer größtmöglichen Redundanz von 200%%.\n" "Aber auch wenn diese Obergrenze noch nicht erreicht ist werden aus technischen Gründen ein paar Sektoren weniger als angegeben verwendet." -#: src/rs03-common.c:440 +#: src/rs03-common.c:441 #, c-format msgid "Image file %s not present." msgstr "Abbild-Datei %s ist nicht vorhanden." -#: src/rs03-common.c:457 +#: src/rs03-common.c:458 #, c-format msgid "Redundancy %4.1f%% out of useful range [3.2%%..200%%]" msgstr "Redundanz %4.1f%% außerhalb des nutzbaren Bereiches [3.2%%..200%%]" -#: src/rs03-common.c:487 +#: src/rs03-common.c:488 #, c-format msgid "Redundancy %d out of useful range [8..170]." msgstr "Redundanz %d außerhalb des nutzbaren Bereiches [8..170]." -#: src/rs03-common.c:525 +#: src/rs03-common.c:526 #, c-format msgid "Medium size smaller than image size (% < %)" msgstr "Datenträger-Größer kleiner als Abbild (% < %)" -#: src/rs03-create.c:434 +#: src/rs03-create.c:418 #, c-format msgid "Failed expanding the ecc file: %s\n" msgstr "Fehler beim Erweitern der Fehlerkorrektur-Datei: %s\n" -#: src/rs03-create.c:435 +#: src/rs03-create.c:419 #, c-format msgid "Preparing ecc file: %3d%%" msgstr "Vorbereiten der Fehlerkorrektur-Datei: %3d%%" -#: src/rs03-create.c:440 +#: src/rs03-create.c:424 #, c-format msgid "Preparing image: %3d%%" msgstr "Abbild vorbereiten: %3d%%" -#: src/rs03-create.c:688 +#: src/rs03-create.c:661 #, c-format msgid "Failed mmap()ing layer %d: %s\n" msgstr "Fehler in mmap() für Schicht %d: %s\n" -#: src/rs03-create.c:717 +#: src/rs03-create.c:690 #, c-format msgid "" "Incomplete image\n" @@ -5338,7 +5301,7 @@ msgstr "" "Die Aktion wird abgebrochen und die teilweise erzeugten\n" "Fehlerkorrektur-Daten werden gelöscht." -#: src/rs03-create.c:725 +#: src/rs03-create.c:698 msgid "" "\n" "This image was probably mastered from defective source(s).\n" @@ -5351,30 +5314,30 @@ msgstr "" "Informationen zu erhalten.\n" "\n" -#: src/rs03-create.c:936 +#: src/rs03-create.c:902 msgid "CPU bound" msgstr "Prozessor-beschränkt" -#: src/rs03-create.c:940 +#: src/rs03-create.c:906 msgid "I/O bound" msgstr "E/A-beschränkt" -#: src/rs03-create.c:1149 +#: src/rs03-create.c:1113 #, c-format msgid "%5.2fMiB/s current" msgstr "%5.2fMiB/s momentan" -#: src/rs03-create.c:1202 +#: src/rs03-create.c:1164 #, c-format msgid "%d threads with %s encoding and %s I/O" msgstr "%d Kontrollfäden mit %s-Kodierung und %s-Ein-/Ausgabe" -#: src/rs03-create.c:1364 +#: src/rs03-create.c:1321 #, c-format msgid "Encoding with Method RS03: % MiB data, % MiB ecc (%d roots; %4.1f%% redundancy)." msgstr "Kodiere mit Verfahren RS03: % MiB Daten, % MiB ecc (%d Nullstellen; %4.1f%% Redundanz)." -#: src/rs03-create.c:1383 +#: src/rs03-create.c:1341 #, c-format msgid "" "Augmenting image with Method RS03 [%d threads, %s, %s I/O]:\n" @@ -5383,7 +5346,7 @@ msgstr "" "Erweitere das Abbild mit Verfahren RS03 [%d Kontrollfäden, %s, %s I/O]:\n" "% MiB Daten, % MiB Fehlerkorr. (%d Nullstellen; %4.1f%% Redundanz)." -#: src/rs03-create.c:1388 +#: src/rs03-create.c:1346 #, c-format msgid "" "Creating the error correction file with Method RS03 [%d threads, %s, %s I/O]:\n" @@ -5392,7 +5355,7 @@ msgstr "" "Erzeuge die Fehlerkorrektur-Datei mit Verfahren RS03 [%d Kontrollfäden, %s, %s I/O]:\n" "% MiB Daten, % MiB Fehlerkorr. (%d Nullstellen; %4.1f%% Redundanz)." -#: src/rs03-create.c:1399 +#: src/rs03-create.c:1357 #, c-format msgid "" "Not enough space on medium left for error correction data.\n" @@ -5406,59 +5369,59 @@ msgstr "" "und kein größerer Datenträger zur Verfügung steht, erzeugen Sie bitte\n" "eine alleinstehende Fehlerkorrektur-Datei." -#: src/rs03-create.c:1425 +#: src/rs03-create.c:1383 msgid "" "BD-R size with no defect management enabled,\n" "remember it should you need to repair this image later!\n" msgstr "" -#: src/rs03-create.c:1459 +#: src/rs03-create.c:1417 #, c-format msgid "Avg performance: %5.2fs (%5.2fMiB/s) total\n" msgstr "Durchschnittliche Leistung: %5.2fs (%5.2fMiB/s) insgesamt\n" -#: src/rs03-create.c:1463 +#: src/rs03-create.c:1420 #, c-format msgid "%5.2fMiB/s average" msgstr "%5.2fMiB/s durchschnittlich" -#: src/rs03-create.c:1465 +#: src/rs03-create.c:1422 #, c-format msgid "%d times CPU bound; %d times I/O bound" msgstr "%d mal Prozessor-beschränkt; %d mal E/A-beschränkt" -#: src/rs03-fix.c:243 +#: src/rs03-fix.c:217 #, c-format msgid "Error correction file using Method RS03, %d roots, %4.1f%% redundancy." msgstr "Fehlerkorrektur-Datei verwendet Methode RS03, %d Nullstellen, %4.1f%% Redundanz." -#: src/rs03-fix.c:247 +#: src/rs03-fix.c:221 #, c-format msgid "Image contains error correction data: Method RS03, %d roots, %4.1f%% redundancy." msgstr "Abbild enthält Fehlerkorrektur-Daten: RS03, %d Nullstellen, %4.1f%% Redundanz." -#: src/rs03-fix.c:725 src/rs03-fix.c:849 +#: src/rs03-fix.c:684 src/rs03-fix.c:808 msgid "; ecc file: " msgstr "; Fehlerkorrektur-Datei: " -#: src/rs03-fix.c:785 +#: src/rs03-fix.c:744 #, c-format msgid "-> CRC-predicted error in sector %lld%s at byte %4d (value %02x '%c', expected %02x '%c')\n" msgstr "-> CRC-erkannter Fehler in Sektor %lld%s, Bytepos. %4d (Wert %02x '%c', erwartet %02x '%c')\n" -#: src/rs03-fix.c:788 +#: src/rs03-fix.c:747 #, c-format msgid "-> Non-predicted error in sector %lld%s at byte %4d (value %02x '%c', expected %02x '%c')\n" msgstr "-> Nicht erwarteter Fehler in Sektor %lld%s, Bytepos. %4d (Wert %02x '%c', erwartet %02x '%c')\n" -#: src/rs03-fix.c:881 +#: src/rs03-fix.c:840 #, c-format msgid "Failed seeking to sector % in ecc file [%s]: %s" msgstr "" "Ansteuern von Sektor % in der Fehlerkorrektur-Datei fehlgeschlagen [%s]:\n" "%s" -#: src/rs03-fix.c:886 +#: src/rs03-fix.c:845 #, c-format msgid "" "could not write ecc file sector %:\n" @@ -5467,31 +5430,31 @@ msgstr "" "konnte Sektor % in der Fehlerkorrektur-Datei nicht schreiben:\n" "%s" -#: src/rs03-preferences.c:345 src/rs03-preferences.c:788 -#: src/rs03-preferences.c:794 src/rs03-preferences.c:795 +#: src/rs03-preferences.c:347 src/rs03-preferences.c:790 +#: src/rs03-preferences.c:796 src/rs03-preferences.c:797 #, c-format msgid "%d sectors" msgstr "%d Sektoren" -#: src/rs03-preferences.c:364 src/rs03-preferences.c:904 -#: src/rs03-preferences.c:910 src/rs03-preferences.c:911 +#: src/rs03-preferences.c:366 src/rs03-preferences.c:906 +#: src/rs03-preferences.c:912 src/rs03-preferences.c:913 #, c-format msgid "%d threads" msgstr "%d Kontrollfäden" -#: src/rs03-preferences.c:487 src/rs03-preferences.c:494 +#: src/rs03-preferences.c:489 src/rs03-preferences.c:496 msgid "Error correction data storage" msgstr "Ziel für Fehlerkorrektur-Daten" -#: src/rs03-preferences.c:495 +#: src/rs03-preferences.c:497 msgid "Store ECC data in: " msgstr "Fehlerkorrektur-Daten ablegen in:" -#: src/rs03-preferences.c:508 +#: src/rs03-preferences.c:510 msgid "File" msgstr "Datei" -#: src/rs03-preferences.c:535 +#: src/rs03-preferences.c:537 msgid "" "Error correction data storage\n" "\n" @@ -5501,7 +5464,7 @@ msgstr "" "\n" "Wählen Sie zwischen zwei Arten, die Fehlerkorrektur-Daten abzulegen:\n" -#: src/rs03-preferences.c:540 +#: src/rs03-preferences.c:542 msgid "" "Augmented image (recommended)\n" "The error correction data will be stored along with the user data on the same medium. This requires the creation of an image file prior to writing the medium. The error correction data will be appended to that image and fill up the remaining space.\n" @@ -5510,7 +5473,7 @@ msgstr "" "Erweitertes Abbild (empfohlen)\n" "Die Fehlerkorrektur-Daten werden zusammen mit den Nutzdaten auf dem gleichen Datenträger untergebracht. Dazu muß vor dem Schreiben des Datenträgers eine Abbild-Datei auf der Festplatte angelegt werden, die von dvdisaster um Fehlerkorrektur-Daten erweitert wird. Die Fehlerkorrektur-Daten nutzen den restlichen Speicherplatz auf dem Datenträger. Beschädigte Sektoren in den Fehlerkorrektur-Daten verringern die Fehlerkorrektur-Leistung, machen eine Korrektur aber nicht unmöglich - ein zusätzlicher Datenträger zum Aufbewahren oder Schützen der Fehlerkorrektur-Daten wird also nicht benötigt.\n" -#: src/rs03-preferences.c:550 +#: src/rs03-preferences.c:552 msgid "" "Error correction file\n" "Error correction files are the only way of protecting existing media as they can be stored somewhere else. They are kept on a separate medium which must also be protected by dvdisaster. This prevents from losing the error correction files in case of a medium defect.\n" @@ -5518,23 +5481,23 @@ msgstr "" "Fehlerkorrektur-Datei\n" "Fehlerkorrektur-Dateien sind die einzige Möglichkeit um bereits bestehende Datenträger zu schützen, da sie an einer beliebigen anderen Stelle gespeichert werden können. Die Dateien müssen allerdings auf einem Datenträger gespeichert werden, der ebenfalls durch dvdisaster geschützt ist. Dies verhindert einen Verlust der Fehlerkorrektur-Dateien durch einen Datenträger-Defekt.\n" -#: src/rs03-preferences.c:570 +#: src/rs03-preferences.c:572 msgid "no settings for augmented images" msgstr "keine Einstellungen für erweiterte Abbilder" -#: src/rs03-preferences.c:781 +#: src/rs03-preferences.c:783 msgid "I/O parameters" msgstr "Ein-/Ausgabe-Einstellungen" -#: src/rs03-preferences.c:789 +#: src/rs03-preferences.c:791 msgid "Sector preloading" msgstr "Sektoren im Voraus laden" -#: src/rs03-preferences.c:801 +#: src/rs03-preferences.c:803 msgid "Preload" msgstr "Im Voraus laden: " -#: src/rs03-preferences.c:829 +#: src/rs03-preferences.c:831 msgid "" "Sector preloading\n" "\n" @@ -5554,23 +5517,23 @@ msgstr "" "\n" "Wenn Sie einen Wert von n einstellen, werden ca. n MiB an RAM benötigt." -#: src/rs03-preferences.c:841 +#: src/rs03-preferences.c:843 msgid "I/O strategy" msgstr "Ein-/Ausgabe-Strategie" -#: src/rs03-preferences.c:842 +#: src/rs03-preferences.c:844 msgid "I/O strategy: " msgstr "Ein-/Ausgabe-Strategie: " -#: src/rs03-preferences.c:855 +#: src/rs03-preferences.c:857 msgid "read/write" msgstr "lesen/schreiben" -#: src/rs03-preferences.c:861 +#: src/rs03-preferences.c:863 msgid "memory mapped" msgstr "Speicher-Einblendung" -#: src/rs03-preferences.c:881 +#: src/rs03-preferences.c:883 msgid "" "I/O strategy\n" "\n" @@ -5588,11 +5551,11 @@ msgstr "" "\n" "Die Speicher-Einblendung nutzt die Möglichkeiten des Betriebssystems, Teile von Dateien direkt in den Arbeitsspeicher einzublenden. Dies hat den Vorteil daß es kaum Zusatzaufwand durch Umkopieren erzeugt, kann aber dadurch langsam werden, daß das Betriebssystem ungünstige Entscheidungen darüber trifft, welche Daten im Voraus geladen und zwischengespeichert werden (da das Betriebssystem nicht weiß was dvdisaster mit den Daten vor hat). Diese Methode funktioniert gut beim Kodieren in RAM-basierten Dateisystemen (wie z.B. /dev/shm in GNU/Linux) sowie auf sehr schnellen Massenspeichern mit geringen Such- und Übertragungszeiten wie z.B. SSDs." -#: src/rs03-preferences.c:901 src/rs03-preferences.c:905 +#: src/rs03-preferences.c:903 src/rs03-preferences.c:907 msgid "Multithreading" msgstr "Kontrollfäden" -#: src/rs03-preferences.c:946 +#: src/rs03-preferences.c:948 msgid "" "Multithreading\n" "\n" @@ -5609,35 +5572,35 @@ msgstr "" "\n" "Die Leistung wird nicht im gleichen Verhältnis mit der Anzahl der Kontrollfäden steigen. Die Festplattenleistung begrenzt die Kodierung stärker als die reine Prozessorleistung. Mit 4 oder mehr Kernen kann die Speicherbandbreite ebenfalls die Leistung begrenzen." -#: src/rs03-preferences.c:961 src/rs03-preferences.c:968 +#: src/rs03-preferences.c:963 src/rs03-preferences.c:970 msgid "Encoding algorithm" msgstr "Kodierungs-Verfahren" -#: src/rs03-preferences.c:969 +#: src/rs03-preferences.c:971 msgid "Use: " msgstr "Verwende:" -#: src/rs03-preferences.c:982 +#: src/rs03-preferences.c:984 msgid "32bit" msgstr "32bit" -#: src/rs03-preferences.c:988 +#: src/rs03-preferences.c:990 msgid "64bit" msgstr "64bit" -#: src/rs03-preferences.c:995 +#: src/rs03-preferences.c:997 msgid "SSE2" msgstr "SSE2" -#: src/rs03-preferences.c:1002 +#: src/rs03-preferences.c:1004 msgid "AltiVec" msgstr "AltiVec" -#: src/rs03-preferences.c:1009 +#: src/rs03-preferences.c:1011 msgid "auto" msgstr "auto" -#: src/rs03-preferences.c:1036 +#: src/rs03-preferences.c:1038 msgid "" "Encoding algorithm\n" "\n" @@ -5653,93 +5616,107 @@ msgstr "" "\n" "Auf x86-basierten Prozessoren kann die SSE2-Erweiterung genutzt werden während auf PowerPC-Prozessoren AltiVec verwendet werden kann. Diese Erweiterungen bieten eine Verarbeitungsbreite von 128bit und liefern üblicherweise die schnellsten Ergebnisse. Wenn \"auto\" ausgewählt ist, benutzt dvdisaster die SSE2/AltiVec-Erweiterungen wenn sie verfügbar sind und sonst den 64bit-Standardkodierer." -#: src/rs03-recognize.c:593 +#: src/rs03-recognize.c:595 #, c-format msgid "Failed seeking to sector %lld in image: %s" msgstr "Ansteuern von Sektor %lld im Abbild fehlgeschlagen: %s" -#: src/rs03-recognize.c:598 +#: src/rs03-recognize.c:600 #, c-format msgid "Failed reading sector %lld in image: %s" msgstr "Lesen von Sektor %lld im Abbild fehlgeschlagen: %s" -#: src/rs03-verify.c:193 +#: src/rs03-verify.c:196 msgid "Error correction properties" msgstr "Fehlerkorrektur-Eigenschaften" -#: src/rs03-verify.c:204 +#: src/rs03-verify.c:207 msgid "Type:" msgstr "Typ:" -#: src/rs03-verify.c:273 +#: src/rs03-verify.c:276 msgid "Data integrity" msgstr "Zustand der Daten" -#: src/rs03-verify.c:338 src/rs03-verify.c:1353 +#: src/rs03-verify.c:341 src/rs03-verify.c:1272 msgid "Ecc block test:" msgstr "Ecc-Bereich-Test:" -#: src/rs03-verify.c:503 src/rs03-verify.c:736 src/rs03-verify.c:1274 +#: src/rs03-verify.c:498 src/rs03-verify.c:699 src/rs03-verify.c:1193 msgid "Checking the image and error correction files." msgstr "Überprüfe die Abbild- und Fehlerkorrektur-Dateien." -#: src/rs03-verify.c:504 +#: src/rs03-verify.c:499 msgid "- Checking ecc blocks (deep verify) -" msgstr "- Prüfe Fehlerkorrektur-Blöcke (ausgiebiger Test) -" -#: src/rs03-verify.c:521 +#: src/rs03-verify.c:513 #, c-format msgid "Out of memory; try reducing sector prefetch!" msgstr "Zu wenig Speicher; bitte weniger Sektoren im Voraus laden!" -#: src/rs03-verify.c:524 +#: src/rs03-verify.c:515 msgid "* Ecc block test : out of memory; try reducing sector prefetch!\n" msgstr "* Ecc-Bereich-Test : Speichermangel; bitte weniger Sektoren im Voraus laden!\n" -#: src/rs03-verify.c:609 src/rs03-verify.c:1241 +#: src/rs03-verify.c:596 src/rs03-verify.c:1157 #, c-format msgid "%d%% tested" msgstr "%d%% überprüft" -#: src/rs03-verify.c:612 +#: src/rs03-verify.c:598 #, c-format msgid "- Ecc block test : %d%% tested" msgstr "- Ecc-Bereich-Test : %d%% überprüft" -#: src/rs03-verify.c:620 +#: src/rs03-verify.c:603 #, c-format msgid "% good, % bad; %d%% tested" msgstr "% gut, % schlecht; %d%% überprüft" -#: src/rs03-verify.c:623 +#: src/rs03-verify.c:605 #, c-format msgid "* Ecc block test : % good, % bad; %d%% tested" msgstr "* Ecc-Bereich-Test : % gut, % schlecht; %d%% überprüft" -#: src/rs03-verify.c:635 +#: src/rs03-verify.c:614 msgid "pass" msgstr "fehlerfrei" -#: src/rs03-verify.c:638 +#: src/rs03-verify.c:616 msgid "- Ecc block test : pass\n" msgstr "- Ecc-Bereich-Test : fehlerfrei\n" -#: src/rs03-verify.c:645 +#: src/rs03-verify.c:620 #, c-format msgid "% good, % bad; % bad sub blocks" msgstr "% gut, % schlecht; % schlechte Teilblöcke" -#: src/rs03-verify.c:648 +#: src/rs03-verify.c:622 #, c-format msgid "* Ecc block test : % good, % bad; % bad sub blocks\n" msgstr "* Ecc-Bereich-Test : % gut; % schlecht; % schlechte Teilblöcke\n" -#: src/rs03-verify.c:740 +#: src/rs03-verify.c:688 +#, c-format +msgid "" +"\n" +"%s present.\n" +msgstr "" + +#: src/rs03-verify.c:691 +#, c-format +msgid "" +"\n" +"%s not present.\n" +msgstr "" + +#: src/rs03-verify.c:702 #, c-format msgid "%s present.\n" msgstr "%s vorhanden.\n" -#: src/rs03-verify.c:760 +#: src/rs03-verify.c:719 msgid "" "\n" "Error correction properties:\n" @@ -5747,47 +5724,47 @@ msgstr "" "\n" "Eigenschaften der Fehlerkorrektur:\n" -#: src/rs03-verify.c:772 +#: src/rs03-verify.c:731 #, c-format msgid "Ecc file is % sectors shorter than expected." msgstr "Fehlerkorrektur-Datei ist % Sektoren kürzer als erwartet." -#: src/rs03-verify.c:774 +#: src/rs03-verify.c:733 #, c-format msgid "Ecc file is % sectors longer than expected." msgstr "Fehlerkorrektur-Datei ist % Sektoren länger als erwartet." -#: src/rs03-verify.c:782 +#: src/rs03-verify.c:739 #, c-format msgid "* Warning : %s\n" msgstr "* Warnung : %s\n" -#: src/rs03-verify.c:791 +#: src/rs03-verify.c:748 msgid "- type : Error correction file\n" msgstr "- Typ : Fehlerkorrektur-Datei\n" -#: src/rs03-verify.c:792 +#: src/rs03-verify.c:749 msgid "- type : Augmented image\n" msgstr "- Typ : Erweitertes Abbild\n" -#: src/rs03-verify.c:797 +#: src/rs03-verify.c:752 msgid "Error correction file" msgstr "Fehlerkorrektur-Datei" -#: src/rs03-verify.c:798 +#: src/rs03-verify.c:755 msgid "Augmented image" msgstr "Erweitertes Abbild" -#: src/rs03-verify.c:830 src/rs03-verify.c:842 +#: src/rs03-verify.c:783 src/rs03-verify.c:791 msgid "- created by : dvdisaster" msgstr "- Erzeugt von : dvdisaster" -#: src/rs03-verify.c:864 +#: src/rs03-verify.c:810 #, c-format msgid "- requires : dvdisaster-%s\n" msgstr "- Benötigt : dvdisaster-%s\n" -#: src/rs03-verify.c:872 +#: src/rs03-verify.c:815 #, c-format msgid "" "* requires : dvdisaster-%s (BAD)\n" @@ -5795,11 +5772,11 @@ msgid "" "* : Please upgrade dvdisaster.\n" msgstr "" -#: src/rs03-verify.c:896 +#: src/rs03-verify.c:835 msgid "none available" msgstr "nicht vorhanden" -#: src/rs03-verify.c:962 +#: src/rs03-verify.c:886 msgid "" "\n" "Data integrity:\n" @@ -5807,95 +5784,95 @@ msgstr "" "\n" "Zustand der Daten:\n" -#: src/rs03-verify.c:991 +#: src/rs03-verify.c:910 #, c-format msgid "% in image; % in ecc file" msgstr "% im Abbild; % in der Fehlerkorrektur-Datei" -#: src/rs03-verify.c:994 +#: src/rs03-verify.c:914 #, c-format msgid "% sectors + %d bytes in image; % in ecc file" msgstr "% Sekt. + %d Bytes im Abbild; % in Fehlerkorr.-Datei" -#: src/rs03-verify.c:1000 +#: src/rs03-verify.c:919 #, c-format msgid "- sectors : % in image; " msgstr "- Sektoren : % im Abbild; " -#: src/rs03-verify.c:1001 +#: src/rs03-verify.c:920 #, c-format msgid "- sectors : % sectors + %d bytes in image; " msgstr "- Sektoren : % Sektoren + %d Bytes im Abbild; " -#: src/rs03-verify.c:1003 +#: src/rs03-verify.c:922 #, c-format msgid "% in ecc file\n" msgstr "% in der Fehlerkorrektur-Datei\n" -#: src/rs03-verify.c:1009 +#: src/rs03-verify.c:925 #, c-format msgid "% total / % data" msgstr "% insges. / % Daten" -#: src/rs03-verify.c:1012 +#: src/rs03-verify.c:927 #, c-format msgid "- medium sectors : % total / % data\n" msgstr "- Datentr.-Sektoren : % insges. / % Daten\n" -#: src/rs03-verify.c:1029 +#: src/rs03-verify.c:943 #, c-format msgid "%s (%s expected)" msgstr "%s (%s erwartet)" -#: src/rs03-verify.c:1034 +#: src/rs03-verify.c:948 #, c-format msgid "Image file is %d bytes shorter than expected." msgstr "Abbild-Datei ist %d kürzer als erwartet." -#: src/rs03-verify.c:1036 +#: src/rs03-verify.c:950 #, c-format msgid "Image file is %d bytes longer than expected." msgstr "Abbild-Datei ist %d länger als erwartet." -#: src/rs03-verify.c:1050 +#: src/rs03-verify.c:963 #, c-format msgid "* sectors : %s (%s expected); % sectors in ecc file\n" msgstr "* Sektoren : %s (%s erwartet); % Sektoren in Ecc-Datei\n" -#: src/rs03-verify.c:1053 +#: src/rs03-verify.c:966 #, c-format msgid "* medium sectors : %s (%s expected)\n" msgstr "* Datentr.-Sektoren : %s (%s erwartet)\n" -#: src/rs03-verify.c:1077 +#: src/rs03-verify.c:994 #, c-format msgid "Failed seeking to start of ecc file: %s\n" msgstr "Ansteuern des Anfangs der Fehlerkorrektur-Datei fehlgeschlagen: %s\n" -#: src/rs03-verify.c:1177 +#: src/rs03-verify.c:1093 msgid " (in ecc file)" msgstr " (in der Fehlerkorrektur-Datei)" -#: src/rs03-verify.c:1185 +#: src/rs03-verify.c:1101 #, c-format msgid "* missing sector : %%s\n" msgstr "* fehlender Sektor : %%s\n" -#: src/rs03-verify.c:1186 +#: src/rs03-verify.c:1102 #, c-format msgid "* missing sectors : % - %%s\n" msgstr "* fehlende Sektoren : % - %%s\n" -#: src/rs03-verify.c:1251 src/rs03-verify.c:1294 +#: src/rs03-verify.c:1168 src/rs03-verify.c:1213 #, c-format msgid "% sectors missing; % signature errors" msgstr "% Sektoren fehlen; % fehlerhafte Kennzeichen" -#: src/rs03-verify.c:1277 +#: src/rs03-verify.c:1196 msgid "Error correction file:" msgstr "Fehlerkorrektur-Datei:" -#: src/rs03-verify.c:1311 +#: src/rs03-verify.c:1231 #, c-format msgid "" "- good image/file : all sectors present\n" @@ -5904,42 +5881,42 @@ msgstr "" "- Abbild/Datei gut : alle Sektoren vorhanden\n" "- Daten-md5sum : %s\n" -#: src/rs03-verify.c:1315 +#: src/rs03-verify.c:1235 #, c-format msgid "* BAD image/file : % sectors missing\n" msgstr "* SCHLECHT : % Sektoren fehlen\n" -#: src/rs03-verify.c:1329 +#: src/rs03-verify.c:1249 #, c-format msgid " ... crc section : % sectors missing; % signature errors\n" msgstr " ... Crc-Abschnitt : % Sektoren fehlen; % fehlerhafte Kennzeichen\n" -#: src/rs03-verify.c:1362 +#: src/rs03-verify.c:1277 #, c-format msgid "Skipped; not useful on known defective image" msgstr "Übersprungen da bei beschädigtem Abbild nicht sinnvoll" -#: src/rs03-verify.c:1366 +#: src/rs03-verify.c:1280 msgid "* Ecc block test : skipped; not useful on defective image\n" msgstr "* Ecc-Bereich-Test : Übersprungen da bei beschädigtem Abbild nicht sinnvoll\n" -#: src/rs03-window.c:85 +#: src/rs03-window.c:81 msgid "1. Reserving space:" msgstr "1. Speicherplatz reservieren:" -#: src/rs03-window.c:104 +#: src/rs03-window.c:100 msgid "Encoder info:" msgstr "Kodierer-Info:" -#: src/rs03-window.c:113 +#: src/rs03-window.c:109 msgid "Performance:" msgstr "Leistung:" -#: src/rs03-window.c:122 +#: src/rs03-window.c:118 msgid "State:" msgstr "Zustand:" -#: src/scsi-freebsd.c:47 src/scsi-linux.c:51 +#: src/scsi-freebsd.c:49 src/scsi-linux.c:53 msgid "" "Can not access /dev for devices\n" "No drives will be pre-selected.\n" @@ -5947,7 +5924,7 @@ msgstr "" "Kein Zugriff auf Laufwerke in /dev möglich.\n" "Es werden keine Laufwerke voreingestellt.\n" -#: src/scsi-freebsd.c:102 src/scsi-linux.c:91 src/scsi-win32.c:84 +#: src/scsi-freebsd.c:104 src/scsi-linux.c:93 src/scsi-win32.c:84 msgid "" "No optical drives found in /dev.\n" "No drives will be pre-selected.\n" @@ -5955,7 +5932,7 @@ msgstr "" "Keine optischen Laufwerke in /dev gefunden.\n" "Es werden keine Laufwerke voreingestellt.\n" -#: src/scsi-layer.c:104 +#: src/scsi-layer.c:106 #, c-format msgid "" "Can open %s, but INQUIRY fails.\n" @@ -5969,27 +5946,27 @@ msgstr "" "Verwenden Sie entweder /dev/scd? oder /dev/sr?,\n" "oder schalten Sie die ide-scsi-Emulation ab.\n" -#: src/scsi-layer.c:112 +#: src/scsi-layer.c:114 #, c-format msgid "INQUIRY failed. Something is wrong with drive %s.\n" msgstr "INQUIRY fehlgeschlagen. Irgendetwas stimmt nicht mit Laufwerk %s.\n" -#: src/scsi-layer.c:141 +#: src/scsi-layer.c:143 #, c-format msgid "Device %s (%s) is not an optical drive." msgstr "Gerät %s (%s) ist kein optisches Laufwerk." -#: src/scsi-layer.c:142 +#: src/scsi-layer.c:144 #, c-format msgid "Device %s (%s) is a hard disk." msgstr "Laufwerk %s (%s) ist eine Festplatte." -#: src/scsi-layer.c:433 +#: src/scsi-layer.c:435 #, c-format msgid "Incomplete %s" msgstr "Unvollständige %s" -#: src/scsi-layer.c:471 +#: src/scsi-layer.c:473 #, c-format msgid "" "%s\n" @@ -5998,16 +5975,16 @@ msgstr "" "%s\n" "Konnte Länge des Inhaltsverzeichnisses nicht ermitteln.\n" -#: src/scsi-layer.c:476 +#: src/scsi-layer.c:478 msgid "blank" msgstr "leer" -#: src/scsi-layer.c:491 src/scsi-layer.c:552 +#: src/scsi-layer.c:493 src/scsi-layer.c:554 #, c-format msgid "TOC info too long (%d), probably multisession.\n" msgstr "Inhaltsverzeichnis zu lang (%d), wahrscheinlich Mehrfach-Sitzung.\n" -#: src/scsi-layer.c:506 +#: src/scsi-layer.c:508 #, c-format msgid "" "%s\n" @@ -6016,7 +5993,7 @@ msgstr "" "%s\n" "Konnte Inhaltsverzeichnis nicht lesen.\n" -#: src/scsi-layer.c:533 +#: src/scsi-layer.c:535 #, c-format msgid "" "%s\n" @@ -6025,12 +6002,12 @@ msgstr "" "%s\n" "Konnte Länge des erweiterten Inhaltsverzeichnisses nicht ermitteln.\n" -#: src/scsi-layer.c:546 +#: src/scsi-layer.c:548 #, c-format msgid "TOC info too short, length %d.\n" msgstr "Inhaltsverzeichnis zu kurz, Länge %d.\n" -#: src/scsi-layer.c:568 +#: src/scsi-layer.c:570 #, c-format msgid "" "%s\n" @@ -6039,7 +6016,7 @@ msgstr "" "%s\n" "Konnte erweitertes Inhaltsverzeichnis nicht lesen.\n" -#: src/scsi-layer.c:577 +#: src/scsi-layer.c:579 #, c-format msgid "" "\n" @@ -6048,11 +6025,11 @@ msgstr "" "\n" "Unerwartetes Inhaltsverzeichnis-Format (Länge %d):\n" -#: src/scsi-layer.c:585 +#: src/scsi-layer.c:587 msgid "Consider sending a bug report.\n" msgstr "Erwägen Sie eine Fehlerbeschreibung einzusenden.\n" -#: src/scsi-layer.c:638 +#: src/scsi-layer.c:643 #, c-format msgid "" "%s\n" @@ -6061,14 +6038,14 @@ msgstr "" "%s\n" "Konnte Länge der DVD-Strukturbeschreibung nicht ermitteln.\n" -#: src/scsi-layer.c:650 +#: src/scsi-layer.c:655 #, c-format msgid "Could not query dvd physical structure - implausible packet length %d\n" msgstr "" "Konnte technische DVD-Strukturbeschreibung nicht ermitteln\n" "- ungültige Datenpaket-Größe %d\n" -#: src/scsi-layer.c:668 +#: src/scsi-layer.c:673 #, c-format msgid "" "%s\n" @@ -6077,12 +6054,12 @@ msgstr "" "%s\n" "Konnte technische DVD-Strukturbeschreibung nicht ermitteln.\n" -#: src/scsi-layer.c:697 src/scsi-layer.c:707 +#: src/scsi-layer.c:702 src/scsi-layer.c:712 #, c-format msgid "READ DVD STRUCTURE: implausible medium size, %-%=% sectors\n" msgstr "READ DVD STRUCTURE: ungültige Datenträger-Größe, %-%=% Sektoren\n" -#: src/scsi-layer.c:976 +#: src/scsi-layer.c:981 #, c-format msgid "" "%s\n" @@ -6091,7 +6068,7 @@ msgstr "" "%s\n" "Konnte Länge der BD-Strukturbeschreibung nicht ermitteln.\n" -#: src/scsi-layer.c:1000 +#: src/scsi-layer.c:1005 #, c-format msgid "" "%s\n" @@ -6100,7 +6077,7 @@ msgstr "" "%s\n" "Konnte technische DVD-Strukturbeschreibung nicht ermitteln.\n" -#: src/scsi-layer.c:1704 +#: src/scsi-layer.c:1709 #, c-format msgid "" "%s\n" @@ -6110,14 +6087,14 @@ msgstr "" "Konnte Länge der DVD-Strukturbeschreibung f�r Formatkode 1\n" "nicht ermitteln.\n" -#: src/scsi-layer.c:1715 +#: src/scsi-layer.c:1720 #, c-format msgid "Could not query dvd copyright info - implausible packet length %d\n" msgstr "" "Konnte DVD-Copyright-Information nicht ermitteln\n" "- ungültige Datenpaket-Größe %d\n" -#: src/scsi-layer.c:1730 +#: src/scsi-layer.c:1735 #, c-format msgid "" "%s\n" @@ -6126,23 +6103,23 @@ msgstr "" "%s\n" "Konnte DVD-Copyright-Information nicht ermitteln.\n" -#: src/scsi-layer.c:1791 +#: src/scsi-layer.c:1796 msgid "is undecideable because of read error" msgstr "ist aufgrund von Lesefehlern unbestimmbar" -#: src/scsi-layer.c:1797 +#: src/scsi-layer.c:1802 msgid "looks GOOD" msgstr "erscheint KORREKT" -#: src/scsi-layer.c:1803 +#: src/scsi-layer.c:1808 msgid "gives unformatted size (UNUSABLE)" msgstr "ist die unformatierte Größe (UNBRAUCHBAR)" -#: src/scsi-layer.c:1808 +#: src/scsi-layer.c:1813 msgid "is UNUSABLE" msgstr "ist UNBRAUCHBAR" -#: src/scsi-layer.c:1834 +#: src/scsi-layer.c:1839 #, c-format msgid "" "%s\n" @@ -6151,12 +6128,12 @@ msgstr "" "%s\n" "Konnte Datenträger-Größe nicht ermitteln.\n" -#: src/scsi-layer.c:1856 +#: src/scsi-layer.c:1861 #, c-format msgid "READ CAPACITY: implausible medium size, % sectors\n" msgstr "READ CAPACITY: ungültige Datenträger-Größe, % Sektoren\n" -#: src/scsi-layer.c:1932 +#: src/scsi-layer.c:1937 #, c-format msgid "" "Different media sizes depending on query method:\n" @@ -6169,7 +6146,7 @@ msgstr "" "READ DVD STRUCTURE: % Sektoren\n" "\n" -#: src/scsi-layer.c:1937 +#: src/scsi-layer.c:1942 msgid "" "Evaluation of returned medium sizes:\n" "\n" @@ -6177,15 +6154,15 @@ msgstr "" "Untersuchung der beiden Angaben:\n" "\n" -#: src/scsi-layer.c:1992 +#: src/scsi-layer.c:1997 msgid "Using value from READ CAPACITY" msgstr "Verwende den Wert von READ CAPACITY." -#: src/scsi-layer.c:1996 +#: src/scsi-layer.c:2001 msgid "Using value from READ DVD STRUCTURE" msgstr "Verwende den Wert von READ DVD STRUCTURE." -#: src/scsi-layer.c:2006 +#: src/scsi-layer.c:2011 #, c-format msgid "" "FAILED to determine image size.\n" @@ -6196,7 +6173,7 @@ msgstr "" "Verwende den kleineren Wert (funktioniert bei 90%% aller Laufwerke).\n" "Weitermachen auf EIGENE GEFAHR: das Abbild kann unvollständig/unbrauchbar sein." -#: src/scsi-layer.c:2011 +#: src/scsi-layer.c:2016 #, c-format msgid "" "Final decision: %s\n" @@ -6205,7 +6182,7 @@ msgstr "" "Abschließende Entscheidung: %s\n" "\n" -#: src/scsi-layer.c:2019 +#: src/scsi-layer.c:2024 msgid "" "Failed to determine image size.\n" "Try using a different drive." @@ -6213,7 +6190,7 @@ msgstr "" "Größe des Datenträger-Inhaltes ist unbestimmbar.\n" "Probieren Sie ein anderes Laufwerk." -#: src/scsi-layer.c:2146 src/scsi-layer.c:2172 +#: src/scsi-layer.c:2151 src/scsi-layer.c:2177 #, c-format msgid "" "%s\n" @@ -6222,7 +6199,7 @@ msgstr "" "%s\n" "Der Datenträger konnte nicht geladen/ausgeworfen werden.\n" -#: src/scsi-layer.c:2162 +#: src/scsi-layer.c:2167 #, c-format msgid "" "%s\n" @@ -6231,37 +6208,37 @@ msgstr "" "%s\n" "Der Datenträger konnte nicht freigegeben werden.\n" -#: src/scsi-layer.c:2228 +#: src/scsi-layer.c:2230 #, c-format msgid "Waiting 10 seconds for drive: %d\n" msgstr "Warte 10 Sekunden auf das Laufwerk: %d\n" -#: src/scsi-layer.c:2511 +#: src/scsi-layer.c:2505 #, c-format msgid "Sectors % - %: %s\n" msgstr "Sektoren % - %: %s\n" -#: src/scsi-layer.c:2525 +#: src/scsi-layer.c:2519 #, c-format msgid "Sector %, try %d: %s Sector returned: %d.\n" msgstr "Sektor %, Versuch %d: %s Zurückgegebener Sektor: %d.\n" -#: src/scsi-layer.c:2531 +#: src/scsi-layer.c:2525 #, c-format msgid "Sector %, try %d: %s\n" msgstr "Sektor %, Versuch %d: %s\n" -#: src/scsi-layer.c:2542 +#: src/scsi-layer.c:2536 #, c-format msgid "Sector %, try %d: success\n" msgstr "Sektor %, Versuch %d: erfolgreich\n" -#: src/scsi-layer.c:2614 +#: src/scsi-layer.c:2608 #, c-format msgid "Device %s: no medium present\n" msgstr "Laufwerk %s: kein Datenträger eingelegt\n" -#: src/scsi-layer.c:2619 +#: src/scsi-layer.c:2613 #, c-format msgid "" "Device %s does not become ready:\n" @@ -6272,7 +6249,7 @@ msgstr "" "%s\n" "\n" -#: src/scsi-layer.c:2625 +#: src/scsi-layer.c:2619 #, c-format msgid "" "\n" @@ -6281,54 +6258,54 @@ msgstr "" "\n" "Laufwerk: %s, %s\n" -#: src/scsi-layer.c:2632 +#: src/scsi-layer.c:2626 msgid "Drive failed to report media type." msgstr "Laufwerk erkennt den Datenträger-Typ nicht." -#: src/scsi-layer.c:2647 src/scsi-layer.c:2759 +#: src/scsi-layer.c:2641 src/scsi-layer.c:2753 #, c-format msgid "This software does not support \"%s\" type media." msgstr "Dieses Programm unterstützt keine Datenträger vom Typ \"%s\"." -#: src/scsi-layer.c:2655 +#: src/scsi-layer.c:2649 #, c-format msgid "This software does not support multisession (%d sessions) media." msgstr "" "Dieses Programm unterstützt keine Mehrfach-Sitzungen (%d Sitzungen).\n" "(für Anglophile: Multisession-CDs sind gemeint ;-)" -#: src/scsi-layer.c:2686 src/scsi-layer.c:2695 +#: src/scsi-layer.c:2680 src/scsi-layer.c:2689 msgid "Using READ CD" msgstr "Verwende READ CD" -#: src/scsi-layer.c:2687 +#: src/scsi-layer.c:2681 msgid ", RAW reading" msgstr ", \"RAW\"-Lesen" -#: src/scsi-layer.c:2690 +#: src/scsi-layer.c:2684 #, c-format msgid ", Mode page 1 ERP = %02xh" msgstr ", Mode page 1 ERP = %02xh" -#: src/scsi-layer.c:2693 +#: src/scsi-layer.c:2687 msgid ", C2 scanning" msgstr ", C2-Überprüfung" -#: src/scsi-layer.c:2700 +#: src/scsi-layer.c:2694 msgid "Using READ(10).\n" msgstr "Verwende READ(10).\n" -#: src/scsi-layer.c:2736 +#: src/scsi-layer.c:2730 #, c-format msgid "Medium: %s, % sectors%s" msgstr "Datenträger: %s, % Sektoren%s" -#: src/scsi-layer.c:2740 +#: src/scsi-layer.c:2734 #, c-format msgid "Medium \"%s\": %s, % sectors%s created %s" msgstr "Datenträger \"%s\": %s, % Sektoren%s erzeugt %s" -#: src/scsi-netbsd.c:103 +#: src/scsi-netbsd.c:105 msgid "" "No optical drives found.\n" "No drives will be pre-selected.\n" @@ -6336,12 +6313,12 @@ msgstr "" "Keine optischen Laufwerke gefunden.\n" "Es werden keine Laufwerke voreingestellt.\n" -#: src/scsi-simulated.c:37 +#: src/scsi-simulated.c:39 #, c-format msgid "Simulated CD (%s)" msgstr "Simulierte CD (%s)" -#: src/scsi-unknown.c:35 +#: src/scsi-unknown.c:37 msgid "" "* Unsupported operating system - no SCSI layer available.\n" "* No drives can be used.\n" @@ -6361,34 +6338,11 @@ msgstr "" msgid "Could not open device %s." msgstr "" -#: src/show-html.c:78 -msgid "windowtitle|Choose a browser" -msgstr "" - -#: src/show-html.c:115 -msgid "windowtitle|Browser required" -msgstr "" - -#: src/show-html.c:131 -msgid "" -"Could not find a suitable browser.\n" -"\n" -"Which browser would you like to use\n" -"for reading the online documentation?\n" -"\n" -"Please enter its name (e.g. mozilla) or\n" -"use the \"Search\" button for a file dialog.\n" -msgstr "" - -#: src/show-html.c:144 src/show-manual.c:145 -msgid "Search" -msgstr "Auswählen" - -#: src/show-html.c:337 src/show-manual.c:324 +#: src/show-manual.c:83 msgid "Documentation not installed." msgstr "Handbuch wurde nicht installiert." -#: src/show-html.c:382 src/show-manual.c:340 +#: src/show-manual.c:98 #, c-format msgid "" "Documentation file\n" @@ -6396,82 +6350,48 @@ msgid "" "not found.\n" msgstr "" -#: src/show-html.c:391 -msgid "Please hang on until the browser comes up!" +#: src/show-manual.c:114 +msgid "Could not create pipe before fork" msgstr "" -#: src/show-manual.c:79 -msgid "windowtitle|Choose a PDF viewer" -msgstr "Wählen Sie ein PDF-Anzeigeprogramm" +#: src/show-manual.c:122 +msgid "Could not fork to start xdg-open" +msgstr "" -#: src/show-manual.c:116 -msgid "windowtitle|PDF viewer required" -msgstr "Ein PDF-Anzeigeprogramm wird benötigt" - -#: src/show-manual.c:132 +#: src/show-manual.c:145 +#, c-format msgid "" -"Could not find a suitable PDF viewer.\n" -"\n" -"Which PDF viewer would you like to use\n" -"for reading the online documentation?\n" -"\n" -"Please enter its name (e.g. xpdf) or\n" -"use the \"Search\" button for a file dialog.\n" +"execvp could not execute \"xdg-open\":\n" +"%s\n" +"Is xdg-open installed correctly?\n" msgstr "" -"Kein passendes PDF-Anzeigeprogramm auffindbar.\n" -"\n" -"Welches PDF-Anzeigeprogramm möchten Sie verwenden\n" -"um die Dokumentation zu lesen?\n" -"\n" -"Bitte geben Sie den Programmnamen (z.B. xpdf) ein\n" -"oder drücken Sie den \"Auswählen\"-Knopf um einen\n" -"Auswahl-Dialog aufzurufen.\n" -#: src/show-manual.c:349 -msgid "Please hang on until the viewer comes up!" -msgstr "Bitte warten Sie bis das PDF-Anzeigeprogramm erscheint!" - -#: src/udf.c:257 +#: src/udf.c:259 msgid "Unnamed" msgstr "Unbenannt" -#: src/udf.c:348 +#: src/udf.c:350 msgid "Example disc" msgstr "Beispiel-Datenträger" -#: src/welcome-window.c:82 +#: src/welcome-window.c:84 msgid "" -"This is v0.79.6-pl8. The patchlevel series are enhanced from the last upstream pre-release.\n" -"We add support for a CLI version, BD-R TL/QL, a Windows build, an option to produce bigger BD-R RS03,\n" +"This is v0.79.10-pl1. The patchlevel series are enhanced from the last upstream release.\n" +"We add support for BD-R TL/QL, a Windows build, an option to produce bigger BD-R RS03,\n" "images, support for stripping ECC from ISOs, re-enabled adaptive reading (except for RS03), and more.\n" "\n" -"Please refer to the Help > Change log menu for all the details.\n" -"The warning message from the pre-release version is retained below.\n" +"Please refer to the Help > Change log menu for all the details." msgstr "" -#: src/welcome-window.c:89 -msgid "" -"Please note:\n" -"This is a pre-release for expert users.\n" -"It may contain unfinished features.\n" -"Adaptive reading is unavailable in this version.\n" -"It will be re-introduced in one of the next releases." -msgstr "" -"Bitte beachten Sie:\n" -"Dies ist eine Vorab-Veröffentlichung für erfahrene Nutzer.\n" -"Sie kann unfertige Funktionen enthalten.\n" -"Angepaßtes Lesen ist nicht verfügbar in dieser Version.\n" -"Es wird in einer der nächsten Versionen wieder eingeführt." - -#: src/welcome-window.c:97 +#: src/welcome-window.c:92 msgid "Show this message again" msgstr "Diesen Text erneut anzeigen" -#: src/welcome-window.c:143 +#: src/welcome-window.c:138 msgid "Welcome to dvdisaster!" msgstr "Willkommen bei dvdisaster!" -#: src/welcome-window.c:145 +#: src/welcome-window.c:140 msgid "" "\n" "dvdisaster creates error correction data to protect\n" @@ -6481,7 +6401,7 @@ msgstr "" "dvdisaster erzeugt Fehlerkorrektur-Daten, um optische\n" "Datenträger (CD, DVD, BD) gegen Datenverlust zu schützen.\n" -#: src/welcome-window.c:148 +#: src/welcome-window.c:143 msgid "" "Please see the [manual] for typical uses of dvdisaster.\n" "\n" @@ -6490,10 +6410,171 @@ msgstr "" "(leider nur in englischer Sprache verfügbar)\n" "\n" -#: src/welcome-window.c:151 +#: src/welcome-window.c:146 msgid "New in this Version:" msgstr "Neu in dieser Version:" +#~ msgid "windowtitle|Modifying dvdisaster" +#~ msgstr "dvdisaster verändern" + +#~ msgid "" +#~ "Modifying dvdisaster\n" +#~ "Your changes are not ours." +#~ msgstr "" +#~ "dvdisaster verändern\n" +#~ "Ihre Änderungen sind nicht unsere." + +#~ msgid "Copyright 2004-2017 Carsten Gnoerlich" +#~ msgstr "Copyright 2004-2017 Carsten Gnörlich" + +#~ msgid "" +#~ "\n" +#~ "e-mail: carsten@dvdisaster.org -or- cgnoerlich@fsfe.org" +#~ msgstr "" +#~ "\n" +#~ "e-mail: carsten@dvdisaster.org -oder- cgnoerlich@fsfe.org" + +#~ msgid "" +#~ "* Warning: This ecc file requires dvdisaster-%d.%d!\n" +#~ "* Proceeding could trigger incorrect behaviour.\n" +#~ "* Please read the image without using this ecc file\n" +#~ "* or visit http://www.dvdisaster.org for an upgrade.\n" +#~ "\n" +#~ msgstr "" +#~ "* Warnung: Diese Fehlerkorrektur-Datei benötigt dvdisaster-%d.%d!\n" +#~ "* Die Verwendung dieser Datei kann fehlerhafte Ergebnisse verursachen.\n" +#~ "* Bitte lesen Sie das Abbild ohne diese Fehlerkorrektur-Datei ein\n" +#~ "* oder besorgen Sie sich unter http://www.dvdisaster.org eine neuere Version.\n" +#~ "\n" + +#~ msgid "" +#~ "* Warning: This image requires dvdisaster-%d.%d!\n" +#~ "* Proceeding could trigger incorrect behaviour.\n" +#~ "* Please visit http://www.dvdisaster.org for an upgrade.\n" +#~ "\n" +#~ msgstr "" +#~ "* Warnung: Diese Abbild-Datei benötigt dvdisaster-%d.%d!\n" +#~ "* Die Verwendung dieses Abbilds kann fehlerhafte Ergebnisse verursachen.\n" +#~ "* Bitte besorgen Sie sich unter http://www.dvdisaster.org eine neuere Version.\n" +#~ "\n" + +#~ msgid "Read position: %3d.%1d%% (nn.nx)" +#~ msgstr "Leseposition: %3d.%1d%% (nn.nx)" + +#~ msgid "Read position: %3d.%1d%% (%4.1fx)" +#~ msgstr "Leseposition: %3d.%1d%% (%4.1fx)" + +#~ msgid "" +#~ "This ecc file requires dvdisaster-%d.%d!\n" +#~ "\n" +#~ "Proceeding could trigger incorrect behaviour.\n" +#~ "Please read the image without using this ecc file\n" +#~ "or visit http://www.dvdisaster.org for an upgrade.\n" +#~ "\n" +#~ msgstr "" +#~ "Diese Fehlerkorrektur-Datei benötigt dvdisaster-%d.%d!\n" +#~ "\n" +#~ "Die Verwendung dieser Datei kann fehlerhafte Ergebnisse verursachen.\n" +#~ "Bitte lesen Sie das Abbild ohne diese Fehlerkorrektur-Datei ein\n" +#~ "oder besorgen Sie sich unter http://www.dvdisaster.org eine neuere Version.\n" +#~ "\n" + +#~ msgid "" +#~ "This image requires dvdisaster-%d.%d!\n" +#~ "\n" +#~ "Proceeding could trigger incorrect behaviour.\n" +#~ "Please visit http://www.dvdisaster.org for an upgrade.\n" +#~ "\n" +#~ msgstr "" +#~ "Dieses Abbild benötigt dvdisaster-%d.%d!\n" +#~ "\n" +#~ "Die Verwendung dieses Abbilds kann fehlerhafte Ergebnisse verursachen.\n" +#~ "Bitte besorgen Sie sich unter http://www.dvdisaster.org eine neuere Version.\n" +#~ "\n" + +#~ msgid "" +#~ "%d sectors missing at the end of the disc.\n" +#~ "This is okay if the CD was written in TAO (track at once) mode.\n" +#~ "The Image will be truncated accordingly. See the manual for details.\n" +#~ msgstr "" +#~ "%d Sektoren fehlen am Ende des Datenträgers. Dies ist in Ordnung\n" +#~ "wenn der Datenträger im TAO (track at once)-Modus geschrieben wurde.\n" +#~ "Das Abbild wird entsprechend verkürzt; mehr dazu steht im Benutzerhandbuch.\n" + +#~ msgid "" +#~ "%d sectors missing at the end of the disc.\n" +#~ "This is okay if the CD was written in TAO (track at once) mode.\n" +#~ "The Image will be truncated accordingly. See the manual for details.\n" +#~ "Use the --dao option to disable image truncating.\n" +#~ msgstr "" +#~ "%d Sektoren fehlen am Ende des Datenträgers. Dies ist in Ordnung\n" +#~ "wenn der Datenträger im TAO (track at once)-Modus geschrieben wurde.\n" +#~ "Das Abbild wird entsprechend verkürzt; mehr dazu steht im Benutzerhandbuch.\n" +#~ "Verwenden Sie die --dao--Option um das Abschneiden zu unterdrücken.\n" + +#~ msgid "" +#~ "* requires : dvdisaster-%d.%d (BAD)\n" +#~ "* Warning : The following output might be incorrect.\n" +#~ "* : Please visit http://www.dvdisaster.org for an upgrade.\n" +#~ msgstr "" +#~ "* Benötigt : dvdisaster-%d.%d (SCHLECHT)\n" +#~ "* Warnung : Die folgenden Ausgaben können falsch sein.\n" +#~ "* : Bitte besuchen Sie http://www.dvdisaster.de\n" +#~ "* : um eine neuere Version herunterzuladen.\n" + +#~ msgid "" +#~ "* requires : dvdisaster-%s (BAD)\n" +#~ "* Warning : The following output might be incorrect.\n" +#~ "* : Please visit http://www.dvdisaster.org for an upgrade.\n" +#~ msgstr "" +#~ "* Benötigt : dvdisaster-%s (SCHLECHT)\n" +#~ "* Warnung : Die folgenden Ausgaben können falsch sein.\n" +#~ "* : Bitte besuchen Sie http://www.dvdisaster.de\n" +#~ "* : um eine neuere Version herunterzuladen.\n" + +#~ msgid "Search" +#~ msgstr "Auswählen" + +#~ msgid "windowtitle|Choose a PDF viewer" +#~ msgstr "Wählen Sie ein PDF-Anzeigeprogramm" + +#~ msgid "windowtitle|PDF viewer required" +#~ msgstr "Ein PDF-Anzeigeprogramm wird benötigt" + +#~ msgid "" +#~ "Could not find a suitable PDF viewer.\n" +#~ "\n" +#~ "Which PDF viewer would you like to use\n" +#~ "for reading the online documentation?\n" +#~ "\n" +#~ "Please enter its name (e.g. xpdf) or\n" +#~ "use the \"Search\" button for a file dialog.\n" +#~ msgstr "" +#~ "Kein passendes PDF-Anzeigeprogramm auffindbar.\n" +#~ "\n" +#~ "Welches PDF-Anzeigeprogramm möchten Sie verwenden\n" +#~ "um die Dokumentation zu lesen?\n" +#~ "\n" +#~ "Bitte geben Sie den Programmnamen (z.B. xpdf) ein\n" +#~ "oder drücken Sie den \"Auswählen\"-Knopf um einen\n" +#~ "Auswahl-Dialog aufzurufen.\n" + +#~ msgid "Please hang on until the viewer comes up!" +#~ msgstr "Bitte warten Sie bis das PDF-Anzeigeprogramm erscheint!" + +#~ msgid "" +#~ "Please note:\n" +#~ "This is a pre-release for expert users.\n" +#~ "It may contain unfinished features.\n" +#~ "Adaptive reading is unavailable in this version.\n" +#~ "It will be re-introduced in one of the next releases." +#~ msgstr "" +#~ "Bitte beachten Sie:\n" +#~ "Dies ist eine Vorab-Veröffentlichung für erfahrene Nutzer.\n" +#~ "Sie kann unfertige Funktionen enthalten.\n" +#~ "Angepaßtes Lesen ist nicht verfügbar in dieser Version.\n" +#~ "Es wird in einer der nächsten Versionen wieder eingeführt." + #~ msgid "" #~ "\n" #~ "Common usage examples:\n" diff --git a/locale/it.po b/locale/it.po index 2d25553..d45e01f 100644 --- a/locale/it.po +++ b/locale/it.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: dvdisaster 0.52.1\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-06-27 23:00+0200\n" +"POT-Creation-Date: 2021-10-09 14:18+0200\n" "PO-Revision-Date: 2005-01-01 14:24+0100\n" "Last-Translator: Andrea Polverini \n" "Language-Team: Italian <>\n" @@ -18,7 +18,7 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: src/closure.c:391 +#: src/closure.c:296 #, c-format msgid "" "# dvdisaster-%s configuration file\n" @@ -31,58 +31,58 @@ msgstr "" "# e sarà sovrascritto ogni volta che verrà eseguito dvdisaster\n" "\n" -#: src/closure.c:613 +#: src/closure.c:564 msgid "medium.iso" msgstr "" -#: src/closure.c:614 +#: src/closure.c:565 msgid "medium.ecc" msgstr "" -#: src/closure.c:615 +#: src/closure.c:566 msgid "sector-" msgstr "" -#: src/debug.c:56 src/debug.c:155 src/debug.c:293 +#: src/debug.c:58 src/debug.c:157 src/debug.c:295 #, c-format msgid "Number of erasures must be > 0 and <= %d\n" msgstr "" -#: src/debug.c:70 src/debug.c:160 +#: src/debug.c:72 src/debug.c:162 #, c-format msgid "" "\n" "Generating random correctable erasures (%s; for %d roots, max erasures = %d).\n" msgstr "" -#: src/debug.c:103 src/debug.c:191 src/debug.c:239 src/debug.c:363 -#: src/debug.c:707 src/debug.c:807 src/debug.c:850 src/debug.c:1181 -#: src/debug.c:1189 src/debug.c:1266 src/rs01-common.c:175 -#: src/rs02-common.c:239 src/rs02-create.c:377 src/rs02-create.c:1032 -#: src/rs02-fix.c:414 src/rs02-verify.c:404 src/rs03-common.c:340 -#: src/rs03-create.c:756 src/rs03-create.c:781 +#: src/debug.c:105 src/debug.c:193 src/debug.c:241 src/debug.c:365 +#: src/debug.c:708 src/debug.c:808 src/debug.c:851 src/debug.c:1182 +#: src/debug.c:1190 src/debug.c:1267 src/rs01-common.c:177 +#: src/rs02-common.c:241 src/rs02-create.c:347 src/rs02-create.c:990 +#: src/rs02-fix.c:381 src/rs02-verify.c:398 src/rs03-common.c:341 +#: src/rs03-create.c:729 src/rs03-create.c:754 #, c-format msgid "Failed seeking to sector % in image: %s" msgstr "" -#: src/debug.c:111 src/debug.c:196 src/debug.c:243 src/debug.c:368 -#: src/debug.c:545 src/debug.c:662 src/debug.c:713 src/debug.c:1193 -#: src/debug.c:1270 src/debug.c:1310 src/rs02-create.c:400 -#: src/rs02-create.c:426 src/rs02-create.c:1035 src/rs03-create.c:761 -#: src/rs03-create.c:785 src/udf.c:830 src/udf.c:888 src/udf.c:945 -#: src/udf.c:958 src/udf.c:963 src/udf.c:966 src/udf.c:969 src/udf.c:972 -#: src/udf.c:975 src/udf.c:978 +#: src/debug.c:113 src/debug.c:198 src/debug.c:245 src/debug.c:370 +#: src/debug.c:546 src/debug.c:663 src/debug.c:714 src/debug.c:1194 +#: src/debug.c:1271 src/debug.c:1311 src/rs02-create.c:370 +#: src/rs02-create.c:396 src/rs02-create.c:993 src/rs03-create.c:734 +#: src/rs03-create.c:758 src/udf.c:831 src/udf.c:889 src/udf.c:946 +#: src/udf.c:959 src/udf.c:964 src/udf.c:967 src/udf.c:970 src/udf.c:973 +#: src/udf.c:976 src/udf.c:979 #, c-format msgid "Failed writing to sector % in image: %s" msgstr "" -#: src/debug.c:119 src/debug.c:249 src/debug.c:374 src/debug.c:666 -#: src/debug.c:720 src/debug.c:1284 +#: src/debug.c:121 src/debug.c:251 src/debug.c:376 src/debug.c:667 +#: src/debug.c:721 src/debug.c:1285 #, c-format msgid "Progress: %3d%%" msgstr "Avanzamento: %3d%%" -#: src/debug.c:124 src/debug.c:254 src/debug.c:379 +#: src/debug.c:126 src/debug.c:256 src/debug.c:381 #, c-format msgid "" "Progress: 100%%\n" @@ -94,32 +94,32 @@ msgstr "" "Altrimenti accumulerete >= %d cancellazioni/Blocchi ECC e l'immagine sarà compromessa.\n" "\n" -#: src/debug.c:299 +#: src/debug.c:301 #, c-format msgid "" "\n" "RS03 error correction file with %d roots.\n" msgstr "" -#: src/debug.c:300 +#: src/debug.c:302 #, c-format msgid "" "\n" "RS03 augmented image with %d roots.\n" msgstr "" -#: src/debug.c:301 +#: src/debug.c:303 #, c-format msgid "Generating at most %d random correctable erasures.\n" msgstr "" -#: src/debug.c:443 src/debug.c:501 src/debug.c:565 src/debug.c:606 -#: src/debug.c:689 src/debug.c:795 src/debug.c:836 src/debug.c:882 -#: src/debug.c:936 src/debug.c:1161 src/debug.c:1169 src/debug.c:1225 -#: src/debug.c:1230 src/misc.c:1393 src/raw-editor.c:364 src/read-adaptive.c:73 -#: src/read-adaptive.c:93 src/read-adaptive.c:1552 src/read-adaptive.c:1588 -#: src/read-linear.c:289 src/read-linear.c:291 src/read-linear.c:327 -#: src/read-linear.c:329 src/rs01-create.c:303 src/rs03-create.c:1352 +#: src/debug.c:445 src/debug.c:503 src/debug.c:566 src/debug.c:607 +#: src/debug.c:690 src/debug.c:796 src/debug.c:837 src/debug.c:883 +#: src/debug.c:937 src/debug.c:1162 src/debug.c:1170 src/debug.c:1226 +#: src/debug.c:1231 src/misc.c:763 src/raw-editor.c:366 src/read-adaptive.c:75 +#: src/read-adaptive.c:95 src/read-adaptive.c:1471 src/read-adaptive.c:1501 +#: src/read-linear.c:273 src/read-linear.c:275 src/read-linear.c:306 +#: src/read-linear.c:308 src/rs01-create.c:279 src/rs03-create.c:1308 #, c-format msgid "" "Can't open %s:\n" @@ -128,74 +128,74 @@ msgstr "" "Impossibile aprire %s:\n" "%s" -#: src/debug.c:448 src/debug.c:1140 src/debug.c:1216 +#: src/debug.c:450 src/debug.c:1141 src/debug.c:1217 msgid "2nd argument is missing" msgstr "Il secondo argomento è mancante" -#: src/debug.c:455 src/debug.c:1146 +#: src/debug.c:457 src/debug.c:1147 msgid "3rd argument is missing" msgstr "Il terzo argomento è mancante" -#: src/debug.c:462 src/debug.c:802 src/debug.c:843 src/debug.c:891 -#: src/debug.c:954 +#: src/debug.c:464 src/debug.c:803 src/debug.c:844 src/debug.c:892 +#: src/debug.c:955 #, c-format msgid "Sector must be in range [0..%]\n" msgstr "I Settori devono rientrare nell'intervallo [0..%]\n" -#: src/debug.c:465 +#: src/debug.c:467 msgid "Byte position must be in range [0..2047]" msgstr "La Byte-Position deve rientrare nell'intervallo [0..2047]" -#: src/debug.c:468 +#: src/debug.c:470 msgid "Byte value must be in range [0..255]" msgstr "Il valore del Byte deve rientrare nell'intervallo [0..255]" -#: src/debug.c:470 +#: src/debug.c:472 #, c-format msgid "Setting byte %d in sector % to value %d.\n" msgstr "Settaggio del byte %d nel settore % al valore %d.\n" -#: src/debug.c:477 src/debug.c:531 src/debug.c:694 src/rs02-create.c:210 -#: src/rs02-verify.c:719 src/rs03-verify.c:1073 +#: src/debug.c:479 src/debug.c:532 src/debug.c:695 src/rs02-create.c:194 +#: src/rs02-verify.c:698 src/rs03-verify.c:990 #, c-format msgid "Failed seeking to start of image: %s\n" msgstr "" -#: src/debug.c:481 +#: src/debug.c:483 msgid "Could not write the new byte value" msgstr "Impossibile scrivere il nuovo valore del byte" -#: src/debug.c:524 src/read-adaptive.c:830 +#: src/debug.c:525 src/read-adaptive.c:805 #, c-format msgid "Sectors must be in range [0..%].\n" msgstr "I settori devi rientrare nell'intervallo [0..%].\n" -#: src/debug.c:526 +#: src/debug.c:527 #, c-format msgid "Erasing sectors [%,%]\n" msgstr "Cancellazione settori [%,%]\n" -#: src/debug.c:572 +#: src/debug.c:573 #, c-format msgid "New length must be in range [0..%].\n" msgstr "" -#: src/debug.c:574 src/misc.c:1404 +#: src/debug.c:575 src/misc.c:774 #, c-format msgid "Truncating image to % sectors.\n" msgstr "" -#: src/debug.c:579 src/misc.c:1425 src/read-linear.c:1477 src/rs01-fix.c:230 -#: src/rs01-fix.c:253 src/rs01-fix.c:275 src/rs01-fix.c:315 -#: src/rs02-create.c:117 src/rs02-create.c:171 src/rs02-fix.c:268 -#: src/rs02-fix.c:288 src/rs02-fix.c:306 src/rs03-create.c:256 -#: src/rs03-create.c:345 src/rs03-fix.c:298 src/rs03-fix.c:337 -#: src/rs03-fix.c:359 src/rs03-fix.c:379 +#: src/debug.c:580 src/misc.c:795 src/read-linear.c:1458 src/rs01-fix.c:219 +#: src/rs01-fix.c:242 src/rs01-fix.c:259 src/rs01-fix.c:293 +#: src/rs02-create.c:107 src/rs02-create.c:155 src/rs02-fix.c:240 +#: src/rs02-fix.c:260 src/rs02-fix.c:274 src/rs03-create.c:246 +#: src/rs03-create.c:327 src/rs03-fix.c:268 src/rs03-fix.c:304 +#: src/rs03-fix.c:326 src/rs03-fix.c:342 #, c-format msgid "Could not truncate %s: %s\n" msgstr "Non posso troncare %s: %s\n" -#: src/debug.c:610 +#: src/debug.c:611 #, c-format msgid "" "\n" @@ -214,8 +214,8 @@ msgstr "" "dvdisaster --debug %s % --random-seed %d\n" "\n" -#: src/debug.c:674 src/read-adaptive.c:382 src/read-linear.c:133 -#: src/read-linear.c:136 +#: src/debug.c:675 src/read-adaptive.c:382 src/read-linear.c:127 +#: src/read-linear.c:130 #, c-format msgid "" "Error closing image file:\n" @@ -224,11 +224,11 @@ msgstr "" "Errore durante la chiusura del file immagine:\n" "%s" -#: src/debug.c:690 +#: src/debug.c:691 msgid "Replacing the \"unreadable sector\" markers with zeros.\n" msgstr "Sostituzione dei marcatori \"unreadable sector\" con zeri.\n" -#: src/debug.c:700 +#: src/debug.c:701 #, c-format msgid "" "Could not read image sector %:\n" @@ -237,69 +237,69 @@ msgstr "" "Impossibile leggere il settore % dell'immagine:\n" "%s\n" -#: src/debug.c:725 +#: src/debug.c:726 #, c-format msgid "% \"unreadable sector\" markers replaced.\n" msgstr "% marcatori \"unreadable sector\" sostituiti.\n" -#: src/debug.c:811 src/debug.c:854 src/debug.c:1185 src/debug.c:1252 -#: src/debug.c:1256 src/debug.c:1306 src/rs01-common.c:191 -#: src/rs02-common.c:244 src/rs02-create.c:229 src/rs02-fix.c:417 -#: src/rs03-common.c:345 +#: src/debug.c:812 src/debug.c:855 src/debug.c:1186 src/debug.c:1253 +#: src/debug.c:1257 src/debug.c:1307 src/rs01-common.c:193 +#: src/rs02-common.c:246 src/rs02-create.c:211 src/rs02-fix.c:384 +#: src/rs03-common.c:346 #, c-format msgid "Failed reading sector % in image: %s" msgstr "" -#: src/debug.c:845 src/debug.c:894 src/debug.c:957 +#: src/debug.c:846 src/debug.c:895 src/debug.c:958 #, c-format msgid "" "Contents of sector %:\n" "\n" msgstr "Contenuto del settore %:\n" -#: src/debug.c:905 +#: src/debug.c:906 #, c-format msgid "Failed reading sector %: %s" msgstr "" -#: src/debug.c:944 +#: src/debug.c:945 msgid "Raw reading only possible on CD media\n" msgstr "" -#: src/debug.c:1152 +#: src/debug.c:1153 msgid "4th argument is missing" msgstr "" -#: src/debug.c:1165 +#: src/debug.c:1166 #, c-format msgid "Source sector must be in range [0..%]\n" msgstr "" -#: src/debug.c:1173 +#: src/debug.c:1174 #, c-format msgid "Destination sector must be in range [0..%]\n" msgstr "" -#: src/debug.c:1177 +#: src/debug.c:1178 #, c-format msgid "Copying sector % from %s to sector % in %s.\n" msgstr "" -#: src/ds-marker.c:267 +#: src/ds-marker.c:269 msgid "Stop reporting these errors" msgstr "" -#: src/ds-marker.c:268 +#: src/ds-marker.c:270 msgid "Continue reporting" msgstr "" -#: src/ds-marker.c:302 +#: src/ds-marker.c:297 msgid "" "* ... more unrecoverable sectors found ...\n" "* further messages are suppressed unless the -v option is given.\n" msgstr "" -#: src/ds-marker.c:318 +#: src/ds-marker.c:311 #, c-format msgid "" "\n" @@ -309,7 +309,7 @@ msgid "" "\n" msgstr "" -#: src/ds-marker.c:321 +#: src/ds-marker.c:312 #, c-format msgid "" "\n" @@ -320,7 +320,7 @@ msgid "" "* " msgstr "" -#: src/ds-marker.c:331 +#: src/ds-marker.c:322 #, c-format msgid "" "Unrecoverable sector found!\n" @@ -337,7 +337,7 @@ msgid "" "error correction data for it. Sorry for the bad news.\n" msgstr "" -#: src/ds-marker.c:358 +#: src/ds-marker.c:345 #, c-format msgid "" "Unrecoverable sector found!\n" @@ -354,7 +354,7 @@ msgid "" "error correction data for it. Sorry for the bad news.\n" msgstr "" -#: src/ds-marker.c:388 +#: src/ds-marker.c:371 #, c-format msgid "" "Unrecoverable sector found!\n" @@ -370,7 +370,7 @@ msgid "" "error correction data for it. Sorry for the bad news.\n" msgstr "" -#: src/ds-marker.c:415 +#: src/ds-marker.c:394 #, c-format msgid "" "Unrecoverable sector found!\n" @@ -386,83 +386,83 @@ msgstr "" #. TRANSLATORS: #. This is a dummy entry which is supposed to translate into "ok". #. Please do not return anything else here. -#: src/dvdisaster.c:168 src/dvdisaster.c:180 +#: src/dvdisaster.c:170 src/dvdisaster.c:182 msgid "test phrase for verifying the locale installation" msgstr "ok" -#: src/dvdisaster.c:372 +#: src/dvdisaster.c:374 msgid "-o/--ecc-target expects 'file' or 'image'" msgstr "" -#: src/dvdisaster.c:398 +#: src/dvdisaster.c:400 #, c-format msgid "--threads must be 1..%d\n" msgstr "" -#: src/dvdisaster.c:415 +#: src/dvdisaster.c:417 msgid "--cache-size must at least be 8MiB; 16MiB or higher is recommended." msgstr "" -#: src/dvdisaster.c:417 +#: src/dvdisaster.c:419 #, c-format msgid "--cache-size maximum is %dMiB." msgstr "" -#: src/dvdisaster.c:440 +#: src/dvdisaster.c:442 msgid "--encoding-algorithm: SSE2 not supported on this processor!" msgstr "" -#: src/dvdisaster.c:444 +#: src/dvdisaster.c:446 msgid "--encoding-algorithm: valid types are 32bit, 64bit, SSE2" msgstr "" -#: src/dvdisaster.c:451 +#: src/dvdisaster.c:453 msgid "--encoding-algorithm: AltiVec not supported on this processor!" msgstr "" -#: src/dvdisaster.c:455 +#: src/dvdisaster.c:457 msgid "--encoding-algorithm: valid types are 32bit, 64bit, AltiVec" msgstr "" -#: src/dvdisaster.c:458 +#: src/dvdisaster.c:460 msgid "--encoding-algorithm: valid types are 32bit, 64bit" msgstr "" -#: src/dvdisaster.c:467 +#: src/dvdisaster.c:469 msgid "--encoding-io-strategy: mmap not supported on this OS" msgstr "" -#: src/dvdisaster.c:471 +#: src/dvdisaster.c:473 msgid "--encoding-io-strategy: valid types are readwrite and mmap" msgstr "" -#: src/dvdisaster.c:481 +#: src/dvdisaster.c:483 msgid "Valid args for --driver: sg,cdrom" msgstr "" -#: src/dvdisaster.c:483 +#: src/dvdisaster.c:485 msgid "--driver is only supported on GNU/Linux" msgstr "" -#: src/dvdisaster.c:497 +#: src/dvdisaster.c:499 msgid "--fixed-speed-values is only allowed in debug mode" msgstr "" -#: src/dvdisaster.c:552 +#: src/dvdisaster.c:554 #, c-format msgid "--prefetch-sectors must be in range 32...%d" msgstr "" -#: src/dvdisaster.c:606 +#: src/dvdisaster.c:608 msgid "--set-version is only allowed in debug mode" msgstr "" -#: src/dvdisaster.c:713 +#: src/dvdisaster.c:715 #, c-format msgid "?? illegal getopt return value %d\n" msgstr "?? getopt ha restituito un valore illegale: %d\n" -#: src/dvdisaster.c:806 src/main-window.c:149 +#: src/dvdisaster.c:808 src/main-window.c:153 #, c-format msgid "" "\n" @@ -473,8 +473,8 @@ msgstr "" "Metodo %s non disponibile.\n" "Usare -m senza paramentri per visualizzare la lista dei metodi.\n" -#: src/dvdisaster.c:817 src/rs01-create.c:285 src/rs02-create.c:1075 -#: src/rs03-create.c:1320 +#: src/dvdisaster.c:819 src/rs01-create.c:261 src/rs02-create.c:1031 +#: src/rs03-create.c:1276 #, c-format msgid "" "\n" @@ -483,25 +483,25 @@ msgstr "" "\n" "Sto aprendo %s" -#: src/dvdisaster.c:824 src/rs01-create.c:294 src/rs02-create.c:175 -#: src/rs02-create.c:1085 src/rs03-create.c:349 src/rs03-create.c:1335 +#: src/dvdisaster.c:826 src/rs01-create.c:270 src/rs02-create.c:159 +#: src/rs02-create.c:1041 src/rs03-create.c:331 src/rs03-create.c:1291 #, c-format msgid ": % medium sectors.\n" msgstr ": % settori del supporto.\n" -#: src/dvdisaster.c:825 src/rs01-create.c:295 src/rs02-create.c:176 -#: src/rs02-create.c:1086 src/rs03-create.c:350 src/rs03-create.c:1336 +#: src/dvdisaster.c:827 src/rs01-create.c:271 src/rs02-create.c:160 +#: src/rs02-create.c:1042 src/rs03-create.c:332 src/rs03-create.c:1292 #, c-format msgid ": % medium sectors and %d bytes.\n" msgstr ": % settori del supporto e %d bytes.\n" -#: src/dvdisaster.c:852 src/main-window.c:212 +#: src/dvdisaster.c:854 src/main-window.c:216 msgid "RS01 method not available for comparing files." msgstr "" #. TRANSLATORS: Program options like -r and --read are not to be translated #. to avoid confusion when discussing the program in international forums. -#: src/dvdisaster.c:950 +#: src/dvdisaster.c:952 msgid "" "\n" "Common usage examples:\n" @@ -527,7 +527,7 @@ msgstr "" " dvdisaster -u,--unlink # Cancella i file .iso (Quando le altre azioni sono concluse)\n" "\n" -#: src/dvdisaster.c:960 +#: src/dvdisaster.c:962 #, c-format msgid "" "Drive and file specification:\n" @@ -538,300 +538,304 @@ msgid "" " -o,--ecc-target [file image] - where to put ecc data in RS03\n" msgstr "" -#: src/dvdisaster.c:970 +#: src/dvdisaster.c:972 msgid "Tweaking options (see manual before using!)\n" msgstr "Opzioni per \"smanettoni\" (Leggere il manuale prima di utilizzarle!!):\n" -#: src/dvdisaster.c:971 +#: src/dvdisaster.c:973 msgid " -a,--assume x,y,... - assume image is augmented with codec(s) x,y,...\n" msgstr "" -#: src/dvdisaster.c:972 +#: src/dvdisaster.c:974 msgid " -j,--jump n - jump n sectors forward after a read error (default: 16)\n" msgstr " -j,--jump n - Salta n settori in avanti dopo un errore di lettura (Standard: 16)\n" -#: src/dvdisaster.c:973 +#: src/dvdisaster.c:975 msgid " -m n - list/select error correction methods (default: RS01)\n" msgstr "" -#: src/dvdisaster.c:974 +#: src/dvdisaster.c:976 #, c-format msgid "" " -n,--redundancy n%% - error correction data redundancy\n" " allowed values depend on codec (see manual)\n" msgstr "" -#: src/dvdisaster.c:976 +#: src/dvdisaster.c:978 msgid " -v,--verbose - more diagnostic messages\n" msgstr "" -#: src/dvdisaster.c:977 +#: src/dvdisaster.c:979 msgid " -x,--threads n - use n threads for en-/decoding (if supported by codec)\n" msgstr "" -#: src/dvdisaster.c:978 +#: src/dvdisaster.c:980 msgid " --adaptive-read - use optimized strategy for reading damaged media\n" msgstr " --adaptive-read - usare la strategia ottimizzata per leggere i supporti danneggiati\n" -#: src/dvdisaster.c:979 +#: src/dvdisaster.c:981 msgid " --auto-suffix - automatically add .iso and .ecc file suffixes\n" msgstr " --auto-suffix - aggiungi automaticamente i suffissi .iso e .ecc\n" -#: src/dvdisaster.c:980 +#: src/dvdisaster.c:982 msgid " --cache-size n - image cache size in MiB during -c mode (default: 32MiB)\n" msgstr " --cache-size n - Dimensione della cache in MiB con la modalità -c (Standard: 32MiB)\n" -#: src/dvdisaster.c:981 +#: src/dvdisaster.c:983 msgid " --dao - assume DAO disc; do not trim image end\n" msgstr " --dao - Utilizza la modalità DAO; Il disco non sarà finalizzato\n" -#: src/dvdisaster.c:982 +#: src/dvdisaster.c:984 msgid " --defective-dump d - directory for saving incomplete raw sectors\n" msgstr "" -#: src/dvdisaster.c:984 +#: src/dvdisaster.c:986 msgid " --driver=sg/cdrom - use sg(default) or alternative cdrom driver (see man page!)\n" msgstr "" -#: src/dvdisaster.c:986 +#: src/dvdisaster.c:988 msgid " --eject - eject medium after successful read\n" msgstr "" -#: src/dvdisaster.c:987 +#: src/dvdisaster.c:989 msgid " --encoding-algorithm n - possible values: 32bit,64bit,SSE2,AltiVec\n" msgstr "" -#: src/dvdisaster.c:988 +#: src/dvdisaster.c:990 msgid " --encoding-io-strategy n - possible values: readwrite, mmap\n" msgstr "" -#: src/dvdisaster.c:989 +#: src/dvdisaster.c:991 msgid " --fill-unreadable n - fill unreadable sectors with byte n\n" msgstr " --fill-unreadable n - Riempi i settori illeggibili con il byte n\n" -#: src/dvdisaster.c:990 +#: src/dvdisaster.c:992 msgid " --ignore-fatal-sense - continue reading after potentially fatal error conditon\n" msgstr "" -#: src/dvdisaster.c:991 +#: src/dvdisaster.c:993 msgid " --ignore-iso-size - ignore image size from ISO/UDF data (dangerous - see man page!)\n" msgstr "" -#: src/dvdisaster.c:992 +#: src/dvdisaster.c:994 msgid " --internal-rereads n - drive may attempt n rereads before reporting an error\n" msgstr "" -#: src/dvdisaster.c:993 +#: src/dvdisaster.c:995 msgid " --medium-info - print info about medium in drive\n" msgstr "" -#: src/dvdisaster.c:994 +#: src/dvdisaster.c:996 msgid " --no-bdr-defect-management - use bigger RS03 images for BD-R (see man page!)\n" msgstr "" -#: src/dvdisaster.c:995 +#: src/dvdisaster.c:997 msgid " --no-progress - do not print progress information\n" msgstr "" -#: src/dvdisaster.c:996 +#: src/dvdisaster.c:998 msgid " --old-ds-marker - mark missing sectors compatible with dvdisaster <= 0.70\n" msgstr "" -#: src/dvdisaster.c:997 +#: src/dvdisaster.c:999 msgid " --prefetch-sectors n - prefetch n sectors for RS03 encoding (uses ~nMiB)\n" msgstr "" -#: src/dvdisaster.c:998 +#: src/dvdisaster.c:1000 msgid " --raw-mode n - mode for raw reading CD media (20 or 21)\n" msgstr "" -#: src/dvdisaster.c:999 +#: src/dvdisaster.c:1001 msgid " --read-attempts n-m - attempts n up to m reads of a defective sector\n" msgstr "" -#: src/dvdisaster.c:1000 +#: src/dvdisaster.c:1002 msgid " --read-medium n - read the whole medium up to n times\n" msgstr "" -#: src/dvdisaster.c:1001 +#: src/dvdisaster.c:1003 msgid " --read-raw - performs read in raw mode if possible\n" msgstr "" -#: src/dvdisaster.c:1002 +#: src/dvdisaster.c:1004 msgid " --regtest - tweaks output for compatibility with regtests\n" msgstr "" -#: src/dvdisaster.c:1003 +#: src/dvdisaster.c:1005 msgid " --resource-file p - get resource file from given path\n" msgstr "" -#: src/dvdisaster.c:1004 +#: src/dvdisaster.c:1006 msgid " --speed-warning n - print warning if speed changes by more than n percent\n" msgstr " --speed-warning n - Evidenzia messaggio di ATTENZIONE se la velocità cambia più del n percento.\n" -#: src/dvdisaster.c:1005 +#: src/dvdisaster.c:1007 msgid " --spinup-delay n - wait n seconds for drive to spin up\n" msgstr " --spinup-delay n - Attendere n secondi per far avviare il drive\n" -#: src/dvdisaster.c:1009 -msgid "Debugging options (purposefully undocumented and possibly harmful)\n" -msgstr "Opzioni di Debug (volutamente non documentate e possibilmente pericolose!)\n" - -#: src/dvdisaster.c:1010 -msgid " --debug - enables the following options\n" -msgstr " --debug - attiva le senguenti opzioni\n" - -#: src/dvdisaster.c:1011 -msgid " --permissive-medium-type - allow more media types, even theoretically unsupported ones\n" +#: src/dvdisaster.c:1008 +msgid " --version - print version and some configuration info\n" msgstr "" #: src/dvdisaster.c:1012 -msgid " --byteset s,i,b - set byte i in sector s to b\n" -msgstr " --byteset s,i,b - setta il byte i nel settore s al valore b\n" +msgid "Debugging options (purposefully undocumented and possibly harmful)\n" +msgstr "Opzioni di Debug (volutamente non documentate e possibilmente pericolose!)\n" #: src/dvdisaster.c:1013 -msgid " --cdump - creates C #include file dumps instead of hexdumps\n" -msgstr "" +msgid " --debug - enables the following options\n" +msgstr " --debug - attiva le senguenti opzioni\n" #: src/dvdisaster.c:1014 -msgid " --compare-images a,b - compare sectors in images a and b\n" +msgid " --permissive-medium-type - allow more media types, even theoretically unsupported ones\n" msgstr "" #: src/dvdisaster.c:1015 +msgid " --byteset s,i,b - set byte i in sector s to b\n" +msgstr " --byteset s,i,b - setta il byte i nel settore s al valore b\n" + +#: src/dvdisaster.c:1016 +msgid " --cdump - creates C #include file dumps instead of hexdumps\n" +msgstr "" + +#: src/dvdisaster.c:1017 +msgid " --compare-images a,b - compare sectors in images a and b\n" +msgstr "" + +#: src/dvdisaster.c:1018 msgid " --copy-sector a,n,b,m - copy sector n from image a to sector m in image b\n" msgstr "" -#: src/dvdisaster.c:1016 +#: src/dvdisaster.c:1019 msgid " --erase sector - erase the given sector\n" msgstr " --erase sector - Cancella il settore specificato\n" -#: src/dvdisaster.c:1017 +#: src/dvdisaster.c:1020 msgid " --erase n-m - erase sectors n - m, inclusively\n" msgstr " --erase n-m - Cancella i settori da n ad m inclusi\n" -#: src/dvdisaster.c:1018 +#: src/dvdisaster.c:1021 msgid " --examine-rs02 - force RS02 exhaustive search\n" msgstr "" -#: src/dvdisaster.c:1019 +#: src/dvdisaster.c:1022 msgid " --examine-rs03 - force RS03 exhaustive search\n" msgstr "" -#: src/dvdisaster.c:1020 +#: src/dvdisaster.c:1023 msgid " --fixed-speed-values - output fixed speed values for better output diffing\n" msgstr "" -#: src/dvdisaster.c:1021 +#: src/dvdisaster.c:1024 msgid " --ignore-rs03-header - ignore RS03 header when repairing (forcing a full search)\n" msgstr "" -#: src/dvdisaster.c:1022 +#: src/dvdisaster.c:1025 msgid " --marked-image n - create image with n marked random sectors\n" msgstr "" -#: src/dvdisaster.c:1023 +#: src/dvdisaster.c:1026 msgid " --merge-images a,b merge image a with b (a receives sectors from b)\n" msgstr "" -#: src/dvdisaster.c:1024 +#: src/dvdisaster.c:1027 msgid " --random-errors e - seed image with (correctable) random errors\n" msgstr "" -#: src/dvdisaster.c:1025 +#: src/dvdisaster.c:1028 msgid " --random-image n - create image with n sectors of random numbers\n" msgstr " --random-image n - create image with n sectors or random numbers\n" -#: src/dvdisaster.c:1026 +#: src/dvdisaster.c:1029 msgid " --random-seed n - random seed for built-in random number generator\n" msgstr " --random-seed n - random seed for built-in random number generator\n" -#: src/dvdisaster.c:1027 +#: src/dvdisaster.c:1030 msgid " --raw-sector n - shows hexdump of the given raw sector from medium in drive\n" msgstr "" -#: src/dvdisaster.c:1028 +#: src/dvdisaster.c:1031 msgid " --read-sector n - shows hexdump of the given sector from medium in drive\n" msgstr "" -#: src/dvdisaster.c:1029 +#: src/dvdisaster.c:1032 msgid " --screen-shot - useful for generating screen shots\n" msgstr "" -#: src/dvdisaster.c:1030 +#: src/dvdisaster.c:1033 msgid " --send-cdb arg - executes given cdb at drive; kills system if used wrong\n" msgstr " --send-cdb arg - executes given cdb at drive; kills system if used wrong\n" -#: src/dvdisaster.c:1031 +#: src/dvdisaster.c:1034 msgid " --set-version - set program version for debugging purposes (dangerous!)\n" msgstr "" -#: src/dvdisaster.c:1032 +#: src/dvdisaster.c:1035 msgid " --show-header n - assumes given sector is a ecc header and prints it\n" msgstr "" -#: src/dvdisaster.c:1033 +#: src/dvdisaster.c:1036 msgid " --show-sector n - shows hexdump of the given sector in an image file\n" msgstr " --show-sector n - mostra l'hexdump del settore dato\n" -#: src/dvdisaster.c:1034 +#: src/dvdisaster.c:1037 msgid " --sim-cd image - simulate a SCSI-Level CD with contents supplied by the ISO image\n" msgstr "" -#: src/dvdisaster.c:1035 +#: src/dvdisaster.c:1038 #, c-format msgid " --sim-defects n - simulate n%% defective sectors on medium\n" msgstr " --sim-defects n - simulate n%% defective sectors on medium\n" -#: src/dvdisaster.c:1036 +#: src/dvdisaster.c:1039 msgid " --truncate n - truncates image to n sectors\n" msgstr " --truncate n - truncates image to n sectors\n" -#: src/dvdisaster.c:1037 +#: src/dvdisaster.c:1040 msgid "" " --zero-unreadable - replace the \"unreadable sector\" markers with zeros\n" "\n" msgstr " --zero-unreadable - replace the \"unreadable sector\" markers with zeros\n" -#: src/dvdisaster.c:1067 +#: src/dvdisaster.c:1070 msgid "Optical drive 52X FW 1.02" msgstr "" -#: src/ecc-rs01.c:41 +#: src/ecc-rs01.c:43 msgid "Error correction file (RS01)" msgstr "" -#: src/ecc-rs01.c:42 +#: src/ecc-rs01.c:44 msgid "Classic Reed-Solomon method based on polynomial arithmetic" msgstr "Metodo classico Reed-Solomon basato sui polinomi aritmetici" -#: src/ecc-rs02.c:42 +#: src/ecc-rs02.c:44 msgid "Augmented image (RS02)" msgstr "" -#: src/ecc-rs02.c:43 +#: src/ecc-rs02.c:45 msgid "Reed-Solomon method with improved tolerance for defective ecc data" msgstr "" -#: src/ecc-rs03.c:42 +#: src/ecc-rs03.c:44 msgid "Multithreaded RS codec (RS03)" msgstr "" -#: src/ecc-rs03.c:43 +#: src/ecc-rs03.c:45 msgid "Multithreaded Reed-Solomon codec for error correction files and augmented images" msgstr "" -#: src/endian.c:76 +#: src/endian.c:78 msgid "" "\n" "Contents of Ecc Header:\n" "\n" msgstr "" -#: src/help-dialogs.c:394 +#: src/help-dialogs.c:395 msgid "windowtitle|Log data" msgstr "Protocollo" -#: src/help-dialogs.c:395 +#: src/help-dialogs.c:396 msgid "" "Log data\n" "Protocol of the current or previous action" @@ -839,11 +843,11 @@ msgstr "" "Protocollo\n" "Protocollo dell'operazione corrente o precedente" -#: src/help-dialogs.c:411 +#: src/help-dialogs.c:412 msgid "windowtitle|GNU General Public License" msgstr "Licenza pubblica GNU" -#: src/help-dialogs.c:412 +#: src/help-dialogs.c:413 msgid "" "GNU General Public License\n" "The license terms of dvdisaster." @@ -851,7 +855,7 @@ msgstr "" "Licenza pubblica GNU\n" "Termini di Licenza di dvdisaster." -#: src/help-dialogs.c:502 +#: src/help-dialogs.c:503 #, c-format msgid "" "File\n" @@ -862,7 +866,7 @@ msgstr "" "%s\n" "non presente" -#: src/help-dialogs.c:512 +#: src/help-dialogs.c:513 #, c-format msgid "" "File\n" @@ -870,39 +874,23 @@ msgid "" "not accessible" msgstr "" -#: src/help-dialogs.c:524 +#: src/help-dialogs.c:525 msgid "" "\n" "<- Error: Text file truncated here" msgstr "" -#: src/help-dialogs.c:593 -msgid "windowtitle|Modifying dvdisaster" -msgstr "" - -#: src/help-dialogs.c:594 -msgid "" -"Modifying dvdisaster\n" -"Your changes are not ours." -msgstr "" - -#: src/help-dialogs.c:734 +#: src/help-dialogs.c:724 msgid "windowtitle|About dvdisaster" msgstr "Info su dvdisaster" -#: src/help-dialogs.c:754 +#: src/help-dialogs.c:742 src/misc.c:219 msgid "" -"[Modified version]\n" -"Copyright 2019-2021 Stephane Lesimple\n" -"Copyright 2005-2017 Debian Optical Media Tools Team\n" -"Copyright 2004-2017 Carsten Gnoerlich" +"Copyright 2004-2017 Carsten Gnoerlich.\n" +"Copyright 2019-2021 The dvdisaster development team." msgstr "" -#: src/help-dialogs.c:760 src/misc.c:218 -msgid "Copyright 2004-2017 Carsten Gnoerlich" -msgstr "Copyright 2004-2017 Carsten Gnörlich" - -#: src/help-dialogs.c:767 +#: src/help-dialogs.c:748 msgid "" "dvdisaster provides a margin of safety against data loss\n" "on optical media caused by aging or scratches.\n" @@ -914,7 +902,7 @@ msgstr "" "Crea dei dati di correzione degli errori che saranno poi utilizzati per recuperare\n" "i settori illeggibili se il supporto dovesse danneggiarsi col tempo.\n" -#: src/help-dialogs.c:772 +#: src/help-dialogs.c:753 msgid "" "This software comes with absolutely no warranty.\n" "This is free software and you are welcome to redistribute it\n" @@ -926,47 +914,36 @@ msgstr "" "\n" "Traduzione italiana di Andrea Polverini (info@polve.com).\n" -#: src/help-dialogs.c:778 +#: src/help-dialogs.c:758 msgid "" "\n" -"This version is not the original. It has been patched\n" -"for Debian to support DVD-ROMs (with and without encryption),\n" -"and subsequently patched again to support a CLI-only build, among other things.\n" -"\n" -"Please do not bother the original authors of dvdisaster nor the Debian maintainer\n" -"but submit bugreports against [GitHub] instead.\n" +"e-mail: support@dvdisaster.org" msgstr "" -#: src/help-dialogs.c:794 -msgid "" -"\n" -"e-mail: carsten@dvdisaster.org -or- cgnoerlich@fsfe.org" -msgstr "" - -#: src/help-dialogs.c:796 +#: src/help-dialogs.c:765 msgid "" "\n" "NetBSD port: Sergey Svishchev <svs@ropnet.ru>" msgstr "" -#: src/image.c:153 src/image.c:158 +#: src/image.c:156 src/image.c:161 #, c-format msgid "Image file %s not present or permission denied.\n" msgstr "" -#: src/image.c:168 src/image.c:173 +#: src/image.c:172 src/image.c:177 msgid "" "\n" "Error correction file type unknown.\n" msgstr "" -#: src/image.c:183 src/image.c:189 +#: src/image.c:188 src/image.c:194 msgid "" "\n" "Permission denied on ecc file (perhaps not writeable?).\n" msgstr "" -#: src/image.c:200 src/image.c:206 +#: src/image.c:206 src/image.c:212 msgid "" "\n" "No error correction file present.\n" @@ -983,12 +960,12 @@ msgid "" "You can redo this operation after freeing some space." msgstr "" -#: src/main-window.c:67 +#: src/main-window.c:70 #, c-format msgid "log: %s\n" msgstr "" -#: src/main-window.c:93 +#: src/main-window.c:97 msgid "" "The .iso image and error correction file\n" "must not be the same file!\n" @@ -998,7 +975,7 @@ msgid "" "please leave the error correction file name blank." msgstr "" -#: src/main-window.c:103 +#: src/main-window.c:107 msgid "" "The error correction file type must not be \".iso\".\n" "\n" @@ -1007,294 +984,294 @@ msgid "" "please leave the error correction file name blank." msgstr "" -#: src/main-window.c:173 +#: src/main-window.c:177 msgid "Internal error: No suitable method for repairing image." msgstr "" -#: src/main-window.c:280 +#: src/main-window.c:284 msgid "button|Read" msgstr "Leggi" -#: src/main-window.c:283 +#: src/main-window.c:287 msgid "tooltip|Read Image" msgstr "Leggi Immagine" -#: src/main-window.c:283 +#: src/main-window.c:288 msgid "Reads an optical disc image into a file (or tries to complete an existing image file)." msgstr "Legge un'immagine CD/DVD in un file (oppure prova a completare un file immagine esistente)" -#: src/main-window.c:297 +#: src/main-window.c:302 msgid "button|Create" msgstr "Crea" -#: src/main-window.c:300 +#: src/main-window.c:305 msgid "tooltip|Create error correction data" msgstr "" -#: src/main-window.c:300 +#: src/main-window.c:306 msgid "Creates error correction data. Requires an image file." msgstr "" -#: src/main-window.c:304 +#: src/main-window.c:310 msgid "button|Scan" msgstr "Scansiona" -#: src/main-window.c:307 +#: src/main-window.c:313 msgid "tooltip|Scan medium" msgstr "Scansiona Supporto" -#: src/main-window.c:307 +#: src/main-window.c:314 msgid "Scans medium for unreadable sectors." msgstr "Scansiona il supporto per i settori illeggibili." -#: src/main-window.c:311 +#: src/main-window.c:318 msgid "button|Fix" msgstr "Ripara" -#: src/main-window.c:314 +#: src/main-window.c:321 msgid "tooltip|Repair image" msgstr "Ripara Immagine" -#: src/main-window.c:314 +#: src/main-window.c:322 msgid "Repairs an image. Requires an image file and error correction data." msgstr "" -#: src/main-window.c:318 +#: src/main-window.c:326 msgid "button|Verify" msgstr "" -#: src/main-window.c:321 +#: src/main-window.c:329 msgid "tooltip|Consistency check" msgstr "" -#: src/main-window.c:321 +#: src/main-window.c:330 msgid "Tests consistency of error correction data and image file." msgstr "" -#: src/main-window.c:325 +#: src/main-window.c:334 msgid "button|Strip" msgstr "" -#: src/main-window.c:328 +#: src/main-window.c:337 msgid "tooltip|Strip ECC" msgstr "" -#: src/main-window.c:328 +#: src/main-window.c:338 msgid "Strip ECC data from an augmented image." msgstr "" -#: src/main-window.c:332 +#: src/main-window.c:342 msgid "button|Stop" msgstr "Ferma" -#: src/main-window.c:335 +#: src/main-window.c:345 msgid "tooltip|Abort action" msgstr "Ferma Operazione" -#: src/main-window.c:335 +#: src/main-window.c:346 msgid "Aborts an ongoing action." msgstr "Ferma una operazione in esecuzione" -#: src/main-window.c:492 +#: src/main-window.c:503 msgid "tooltip|Protocol for current action" msgstr "Protocollo dell'operazione corrente" -#: src/main-window.c:493 +#: src/main-window.c:504 msgid "Displays additional information created during the current or last action." msgstr "Visualizza informazioni addizionali create durante l'operazione corrente o precedente." -#: src/main-window.c:502 +#: src/main-window.c:513 msgid "View log" msgstr "Protocollo" -#: src/medium-info.c:57 +#: src/medium-info.c:58 msgid "Please wait..." msgstr "" -#: src/medium-info.c:118 +#: src/medium-info.c:112 msgid "Medium not present" msgstr "" -#: src/medium-info.c:126 src/medium-info.c:488 +#: src/medium-info.c:119 src/medium-info.c:400 msgid "Physical medium info" msgstr "" -#: src/medium-info.c:172 src/medium-info.c:178 +#: src/medium-info.c:141 src/medium-info.c:147 msgid "empty" msgstr "" -#: src/medium-info.c:173 +#: src/medium-info.c:142 msgid "appendable" msgstr "" -#: src/medium-info.c:174 +#: src/medium-info.c:143 msgid "finalized" msgstr "" -#: src/medium-info.c:175 src/scsi-layer.c:100 +#: src/medium-info.c:144 src/scsi-layer.c:102 msgid "unknown" msgstr "sconosciuto" -#: src/medium-info.c:179 +#: src/medium-info.c:148 msgid "incomplete" msgstr "" -#: src/medium-info.c:180 +#: src/medium-info.c:149 msgid "damaged" msgstr "" -#: src/medium-info.c:181 src/rs02-verify.c:695 src/rs02-verify.c:913 -#: src/rs02-verify.c:914 src/rs02-verify.c:915 src/rs03-verify.c:1340 -#: src/rs03-verify.c:1342 src/rs03-verify.c:1343 +#: src/medium-info.c:150 src/rs02-verify.c:673 src/rs02-verify.c:891 +#: src/rs02-verify.c:892 src/rs02-verify.c:893 src/rs03-verify.c:1259 +#: src/rs03-verify.c:1262 src/rs03-verify.c:1265 msgid "complete" msgstr "" -#: src/medium-info.c:192 +#: src/medium-info.c:155 #, c-format msgid "%s (%d sessions; last session %s)\n" msgstr "" -#: src/medium-info.c:204 +#: src/medium-info.c:161 #, c-format msgid "% sectors (% MiB), from READ CAPACITY\n" msgstr "" -#: src/medium-info.c:213 +#: src/medium-info.c:164 #, c-format msgid "% sectors (% MiB), from DVD structure\n" msgstr "" -#: src/medium-info.c:223 src/medium-info.c:297 +#: src/medium-info.c:168 #, c-format msgid "% sectors (% MiB)\n" msgstr "" -#: src/medium-info.c:235 src/medium-info.c:561 +#: src/medium-info.c:180 src/medium-info.c:473 msgid "Filesystem info" msgstr "" -#: src/medium-info.c:253 +#: src/medium-info.c:186 #, c-format msgid "%d sectors (% MiB)\n" msgstr "" -#: src/medium-info.c:280 src/medium-info.c:594 +#: src/medium-info.c:207 src/medium-info.c:506 msgid "Augmented image info" msgstr "" -#: src/medium-info.c:287 src/medium-info.c:289 +#: src/medium-info.c:213 #, c-format msgid "%s, %d roots, %4.1f%% redundancy.\n" msgstr "" -#: src/medium-info.c:295 +#: src/medium-info.c:217 #, c-format msgid "% sectors (% MiB)\n" msgstr "" -#: src/medium-info.c:319 +#: src/medium-info.c:229 msgid "yes" msgstr "" -#: src/medium-info.c:323 +#: src/medium-info.c:234 msgid "no" msgstr "" -#: src/medium-info.c:419 +#: src/medium-info.c:331 msgid "windowtitle|Medium info" msgstr "" -#: src/medium-info.c:434 +#: src/medium-info.c:346 msgid "" "Medium info\n" "Properties of the currently inserted medium" msgstr "" -#: src/medium-info.c:446 +#: src/medium-info.c:358 msgid "Drive selection" msgstr "" -#: src/medium-info.c:453 +#: src/medium-info.c:365 msgid "Drive:" msgstr "" -#: src/medium-info.c:474 src/menubar.c:493 +#: src/medium-info.c:386 src/menubar.c:496 msgid "No drives found" msgstr "Nessun drive trovato" -#: src/medium-info.c:479 +#: src/medium-info.c:391 msgid " " msgstr "" -#: src/medium-info.c:482 +#: src/medium-info.c:394 msgid "Update medium info" msgstr "" -#: src/medium-info.c:495 +#: src/medium-info.c:407 msgid "Medium type:" msgstr "" -#: src/medium-info.c:503 +#: src/medium-info.c:415 msgid "Book type:" msgstr "" -#: src/medium-info.c:511 src/scsi-layer.c:2747 +#: src/medium-info.c:423 src/scsi-layer.c:2741 msgid "Manuf.-ID:" msgstr "" -#: src/medium-info.c:519 +#: src/medium-info.c:431 msgid "Drive profile:" msgstr "" -#: src/medium-info.c:527 +#: src/medium-info.c:439 msgid "Disc status:" msgstr "" -#: src/medium-info.c:535 +#: src/medium-info.c:447 msgid "Used sectors:" msgstr "" -#: src/medium-info.c:551 +#: src/medium-info.c:463 msgid "Blank capacity:" msgstr "" -#: src/medium-info.c:568 +#: src/medium-info.c:480 msgid "Medium label:" msgstr "" -#: src/medium-info.c:576 +#: src/medium-info.c:488 msgid "File system size:" msgstr "" -#: src/medium-info.c:584 +#: src/medium-info.c:496 msgid "Creation time:" msgstr "" -#: src/medium-info.c:601 +#: src/medium-info.c:513 msgid "Error correction data:" msgstr "" -#: src/medium-info.c:609 +#: src/medium-info.c:521 msgid "Augmented image size:" msgstr "" -#: src/medium-info.c:617 +#: src/medium-info.c:529 msgid "dvdisaster version:" msgstr "" -#: src/medium-info.c:625 +#: src/medium-info.c:537 msgid "Exhaustive search:" msgstr "" -#: src/medium-info.c:632 +#: src/medium-info.c:544 msgid "Run exhaustive search" msgstr "" -#: src/menubar.c:131 +#: src/menubar.c:133 msgid "windowtitle|Change log" msgstr "Change log" -#: src/menubar.c:132 +#: src/menubar.c:134 msgid "" "Change log\n" "Major differences from earlier program versions." @@ -1302,11 +1279,11 @@ msgstr "" "Change log\n" "Maggiori differenze dalle versioni più recenti." -#: src/menubar.c:138 +#: src/menubar.c:140 msgid "windowtitle|Credits" msgstr "Ringraziamenti" -#: src/menubar.c:139 +#: src/menubar.c:141 msgid "" "Credits\n" "Thanks go out to..." @@ -1314,11 +1291,11 @@ msgstr "" "Ringraziamenti\n" "I nostri ringraziamenti a..." -#: src/menubar.c:145 +#: src/menubar.c:147 msgid "windowtitle|To do list" msgstr "Da fare" -#: src/menubar.c:146 +#: src/menubar.c:148 msgid "" "To do list\n" "A sneak preview of coming features ... perhaps ;-)" @@ -1326,139 +1303,139 @@ msgstr "" "Da fare\n" "Un'anticipazione sulle nuove funzioni... magari ;-)" -#: src/menubar.c:213 +#: src/menubar.c:215 msgid "menu|Select Image" msgstr "Seleziona Immagine" -#: src/menubar.c:214 +#: src/menubar.c:216 msgid "menu|Select Parity File" msgstr "Seleziona File di Parità" -#: src/menubar.c:215 +#: src/menubar.c:217 msgid "menu|Quit" msgstr "Esci" -#: src/menubar.c:217 +#: src/menubar.c:219 msgid "menu|File" msgstr "File" -#: src/menubar.c:224 +#: src/menubar.c:226 msgid "menu|Medium info" msgstr "" -#: src/menubar.c:229 +#: src/menubar.c:231 msgid "menu|Raw sector editor" msgstr "" -#: src/menubar.c:231 +#: src/menubar.c:233 msgid "menu|Tools" msgstr "" -#: src/menubar.c:239 +#: src/menubar.c:241 msgid "menu|About" msgstr "Info" -#: src/menubar.c:240 +#: src/menubar.c:242 msgid "menu|User manual" msgstr "Manuale utente" -#: src/menubar.c:244 +#: src/menubar.c:246 msgid "menu|Credits" msgstr "Ringraziamenti" -#: src/menubar.c:245 +#: src/menubar.c:247 msgid "menu|Licence (GPL)" msgstr "Licenza (GPL)" -#: src/menubar.c:249 +#: src/menubar.c:251 msgid "menu|Change log" msgstr "Change Log" -#: src/menubar.c:250 +#: src/menubar.c:252 msgid "menu|To do list" msgstr "Da fare" -#: src/menubar.c:252 +#: src/menubar.c:254 msgid "menu|Help" msgstr "Aiuto" -#: src/menubar.c:336 +#: src/menubar.c:338 msgid "windowtitle|Image file selection" msgstr "Selezione dei file immagine" -#: src/menubar.c:373 +#: src/menubar.c:375 msgid "windowtitle|Error correction file selection" msgstr "Selezione del file di correzione degli errori" -#: src/menubar.c:475 src/menubar.c:499 +#: src/menubar.c:477 src/menubar.c:502 msgid "tooltip|Drive selection" msgstr "Seleziona Drive" -#: src/menubar.c:475 +#: src/menubar.c:478 msgid "Use the nearby drop-down list to select the input drive." msgstr "Usa il menu a tendina qui vicino per selezionare il drive di input." -#: src/menubar.c:499 +#: src/menubar.c:503 msgid "Selects the input drive for reading images." msgstr "Seleziona il drive di input per leggere le immagini." -#: src/menubar.c:529 +#: src/menubar.c:533 msgid "tooltip|Image file selection" msgstr "Selezione dei file immagine" -#: src/menubar.c:529 +#: src/menubar.c:534 msgid "Selects a new image file." msgstr "Seleziona un nuovo file immagine." -#: src/menubar.c:530 +#: src/menubar.c:536 msgid "tooltip|Current image file" msgstr "File immagine corrente" -#: src/menubar.c:530 +#: src/menubar.c:537 msgid "Shows the name of the current image file." msgstr "Mostra il nome del file immagine corrente." -#: src/menubar.c:554 +#: src/menubar.c:562 msgid "tooltip|Error correction file selection" msgstr "Selezione del file di correzione degli errori" -#: src/menubar.c:554 +#: src/menubar.c:563 msgid "Selects a new error correction file." msgstr "Seleziona un nuovo file di correzione errori." -#: src/menubar.c:555 +#: src/menubar.c:565 msgid "tooltip|Current error correction file" msgstr "File di correzione errori corrente" -#: src/menubar.c:555 +#: src/menubar.c:566 msgid "Shows the name of the current error correction file." msgstr "Mostra il nome del file di correzione errori corrente." -#: src/menubar.c:566 +#: src/menubar.c:577 msgid "tooltip|Preferences" msgstr "Preferenze" -#: src/menubar.c:566 +#: src/menubar.c:578 msgid "Customize settings for creating images, error correction files and other stuff." msgstr "Personalizza i settaggi della creazione di immagini, file di correzione degli errori ad altra roba." -#: src/menubar.c:576 +#: src/menubar.c:588 msgid "tooltip|User manual" msgstr "Manuale utente" -#: src/menubar.c:576 +#: src/menubar.c:589 msgid "Displays the user manual (external PDF viewer required)." msgstr "" -#: src/menubar.c:586 +#: src/menubar.c:599 msgid "tooltip|Quit" msgstr "Esci" -#: src/menubar.c:586 +#: src/menubar.c:599 msgid "Quit dvdisaster" msgstr "Chiudi dvdisaster" -#: src/method.c:55 +#: src/method.c:57 msgid "" "\n" "List of available methods:\n" @@ -1468,7 +1445,7 @@ msgstr "" "Elenco dei metodi disponibili:\n" "\n" -#: src/misc.c:224 +#: src/misc.c:225 msgid "" "This software comes with ABSOLUTELY NO WARRANTY. This\n" "is free software and you are welcome to redistribute it\n" @@ -1480,11 +1457,11 @@ msgstr "" "Per informazioni, leggete il file \"COPYING\".\n" "Traduzione italiana di Andrea Polverini (info@polve.com).\n" -#: src/misc.c:550 +#: src/misc.c:535 msgid "Warning" msgstr "Attenzione" -#: src/misc.c:633 src/misc.c:643 +#: src/misc.c:610 src/misc.c:619 msgid "" "\n" "*\n" @@ -1496,21 +1473,40 @@ msgstr "" "* dvdisaster - Impossibile proseguire:\n" "*\n" -#: src/misc.c:1307 -msgid "Do not ask again" +#: src/misc.c:758 +msgid "Strip ECC aborted" msgstr "" -#: src/misc.c:1331 +#: src/misc.c:766 +msgid "Image is not augmented (no dvdisaster signature found)." +msgstr "" + +#: src/misc.c:772 +#, c-format +msgid "Invalid end data sector (%), aborting" +msgstr "" + +#: src/misc.c:781 #, c-format msgid "" -"Image file already exists and does not match the medium:\n" -"\n" -"%s\n" -"\n" -"The existing image file will be deleted." +"We're about to truncate the image from % sectors (% MiB)\n" +"to % sectors (% MiB), removing any dvdisaster-added ECC data.\n" +"This will restore the image to its pre-augmented original size." msgstr "" -#: src/misc.c:1353 +#: src/misc.c:788 +msgid "Aborted on user request" +msgstr "" + +#: src/misc.c:797 +msgid "Image successfully truncated back to its original size.\n" +msgstr "" + +#: src/misc.c:801 +msgid "Image successfully truncated" +msgstr "" + +#: src/misc-gui.c:241 #, c-format msgid "" "The error correction file is already present:\n" @@ -1520,92 +1516,73 @@ msgid "" "Overwrite it?" msgstr "" -#: src/misc.c:1388 -msgid "Strip ECC aborted" +#: src/misc-gui.c:639 +msgid "Do not ask again" msgstr "" -#: src/misc.c:1396 -msgid "Image is not augmented (no dvdisaster signature found)." -msgstr "" - -#: src/misc.c:1402 -#, c-format -msgid "Invalid end data sector (%), aborting" -msgstr "" - -#: src/misc.c:1411 +#: src/misc-gui.c:660 #, c-format msgid "" -"We're about to truncate the image from % sectors (% MiB)\n" -"to % sectors (% MiB), removing any dvdisaster-added ECC data.\n" -"This will restore the image to its pre-augmented original size." +"Image file already exists and does not match the medium:\n" +"\n" +"%s\n" +"\n" +"The existing image file will be deleted." msgstr "" -#: src/misc.c:1418 -msgid "Aborted on user request" -msgstr "" - -#: src/misc.c:1427 -msgid "Image successfully truncated back to its original size.\n" -msgstr "" - -#: src/misc.c:1431 -msgid "Image successfully truncated" -msgstr "" - -#: src/preferences.c:452 +#: src/preferences.c:454 msgid "Switched to the linear reading strategy." msgstr "Settata la strategia di lettura lineare" -#: src/preferences.c:838 +#: src/preferences.c:840 msgid "Color selection" msgstr "" -#: src/preferences.c:1059 +#: src/preferences.c:1061 msgid "Disabled automatic error correction file generation." msgstr "Disabilitata la generazione automatica della correzione dei file." -#: src/preferences.c:1222 src/preferences.c:2362 src/preferences.c:2371 +#: src/preferences.c:1224 src/preferences.c:2376 src/preferences.c:2385 msgid "Raw sector caching" msgstr "" -#: src/preferences.c:1294 +#: src/preferences.c:1296 msgid "Log file" msgstr "" -#: src/preferences.c:1316 +#: src/preferences.c:1318 msgid "Delete the log file?" msgstr "" -#: src/preferences.c:1410 +#: src/preferences.c:1412 msgid "Preferences" msgstr "Preferenze" -#: src/preferences.c:1440 src/rs03-preferences.c:514 +#: src/preferences.c:1442 src/rs03-preferences.c:516 msgid "Image" msgstr "" -#: src/preferences.c:1444 +#: src/preferences.c:1446 msgid "Image creation" msgstr "" -#: src/preferences.c:1453 +#: src/preferences.c:1455 msgid "Reading strategy" msgstr "" -#: src/preferences.c:1453 +#: src/preferences.c:1456 msgid "Reading strategy: " msgstr "Strategia di lettura:" -#: src/preferences.c:1468 +#: src/preferences.c:1471 msgid "Linear" msgstr "Lineare" -#: src/preferences.c:1476 +#: src/preferences.c:1479 msgid "Adaptive (for defective media)" msgstr "Adattiva (per supporti difettosi)" -#: src/preferences.c:1488 +#: src/preferences.c:1491 msgid "" "Reading strategy\n" "\n" @@ -1620,19 +1597,19 @@ msgid "" "Using the adaptive strategy without error correction data is possible but it is recommended to use linear reading in that case." msgstr "" -#: src/preferences.c:1500 +#: src/preferences.c:1503 msgid "Reading range" msgstr "" -#: src/preferences.c:1500 +#: src/preferences.c:1504 msgid "Read/Scan from sector" msgstr "Leggi/Scansiona dal settore" -#: src/preferences.c:1526 +#: src/preferences.c:1530 msgid "to sector" msgstr "al settore" -#: src/preferences.c:1544 +#: src/preferences.c:1548 msgid "" "Reading range\n" "\n" @@ -1643,19 +1620,19 @@ msgid "" "These settings are only effective for the current session and will not be saved." msgstr "" -#: src/preferences.c:1554 +#: src/preferences.c:1558 msgid "Error correction data recognization" msgstr "" -#: src/preferences.c:1563 +#: src/preferences.c:1567 msgid "Exhaustive RS02 header search" msgstr "" -#: src/preferences.c:1563 +#: src/preferences.c:1568 msgid "Perform exhaustive search for RS02 headers" msgstr "" -#: src/preferences.c:1584 +#: src/preferences.c:1589 msgid "" "Exhaustive RS02 header search\n" "\n" @@ -1666,15 +1643,15 @@ msgid "" "Leave this option off when you are processing media or images which are not augmented with RS02 data. Otherwise you will waste a lot of time searching for the RS02 signatures and increase wear on the drive." msgstr "" -#: src/preferences.c:1603 +#: src/preferences.c:1608 msgid "Recover RS03 signatures" msgstr "" -#: src/preferences.c:1603 +#: src/preferences.c:1609 msgid "Find and recover RS03 signatures" msgstr "" -#: src/preferences.c:1624 +#: src/preferences.c:1630 msgid "" "Exhaustive RS03 header search\n" "\n" @@ -1685,19 +1662,19 @@ msgid "" "Leave this option off when you are processing media or images which are not augmented with RS03 data. Otherwise you will waste a lot of time searching for the RS03 signatures and increase wear on the drive." msgstr "" -#: src/preferences.c:1643 +#: src/preferences.c:1649 msgid "Image properties" msgstr "Proprietà dell'immagine" -#: src/preferences.c:1652 +#: src/preferences.c:1658 msgid "Ignore ISO/UDF meta data" msgstr "" -#: src/preferences.c:1652 +#: src/preferences.c:1659 msgid "Ignore image size recorded in ISO/UDF file system" msgstr "" -#: src/preferences.c:1673 +#: src/preferences.c:1680 msgid "" "Ignore image size recorded in ISO/UDF filesystem\n" "\n" @@ -1710,15 +1687,15 @@ msgid "" "Do not blindly turn this option on as it will most likely create sub optimal or corrupted ISO images, especially if you plan to use the image for error correction data generation." msgstr "" -#: src/preferences.c:1692 +#: src/preferences.c:1699 msgid "DAO mode" msgstr "" -#: src/preferences.c:1692 +#: src/preferences.c:1700 msgid "Assume image to be written in DAO mode (don't truncate)" msgstr "Assumi che l'immagine verrà scritta in modalità DAO (non troncare)" -#: src/preferences.c:1713 +#: src/preferences.c:1721 msgid "" "Assume DAO mode\n" "\n" @@ -1729,19 +1706,19 @@ msgid "" "Tip: To avoid these problems, consider using the \"DAO / Disc at once\" (sometimes also called \"SAO / Session at once\") mode for writing single session media." msgstr "" -#: src/preferences.c:1728 +#: src/preferences.c:1736 msgid "Image format" msgstr "" -#: src/preferences.c:1737 +#: src/preferences.c:1745 msgid "Missing sector tags" msgstr "" -#: src/preferences.c:1737 +#: src/preferences.c:1746 msgid "Use old style missing sector tags (not recommended)" msgstr "" -#: src/preferences.c:1758 +#: src/preferences.c:1767 msgid "" "Missing sector tagging\n" "\n" @@ -1750,15 +1727,15 @@ msgid "" "N.b.: dvdisaster >= 0.72 will automatically recognize both tag formats when reading images; setting this value only affects the creation of new images." msgstr "" -#: src/preferences.c:1778 +#: src/preferences.c:1787 msgid "Filling of unreadable sectors" msgstr "" -#: src/preferences.c:1779 +#: src/preferences.c:1788 msgid "Fill unreadable sectors with byte:" msgstr "Riempi i settori illeggibili con il byte:" -#: src/preferences.c:1819 +#: src/preferences.c:1828 msgid "" "Filling of unreadable sectors\n" "\n" @@ -1766,54 +1743,54 @@ msgid "" "In other data recovery software it is common to fill unreadable sectors with a certain byte value. To allow interoperability with such programs, you can specify the byte value they are using:\n" msgstr "" -#: src/preferences.c:1828 +#: src/preferences.c:1837 msgid "0xb0 (176 decimal): for compatibility with h2cdimage published by \"c't\", a German periodical.\n" msgstr "" -#: src/preferences.c:1832 +#: src/preferences.c:1841 msgid "Note: Using zero filling (0x00, decimal 0) is highly discouraged. Most media contain regular zero filled sectors which can not be told apart from unreadable sectors if zero filling is used." msgstr "" -#: src/preferences.c:1839 +#: src/preferences.c:1848 msgid "Drive" msgstr "Drive" -#: src/preferences.c:1843 src/preferences.c:1846 +#: src/preferences.c:1852 src/preferences.c:1855 msgid "Drive initialisation" msgstr "Inizializzazione del drive" -#: src/preferences.c:1847 +#: src/preferences.c:1856 msgid "Wait" msgstr "Attendere" -#: src/preferences.c:1850 +#: src/preferences.c:1859 msgid "seconds for drive to spin up" msgstr "secondi per far avviare il drive" -#: src/preferences.c:1880 +#: src/preferences.c:1889 msgid "" "Drive initialisation\n" "\n" "Waits the specified amount of seconds for letting the drive spin up. This avoids speed jumps at the beginning of the reading curve." msgstr "" -#: src/preferences.c:1886 +#: src/preferences.c:1895 msgid "Raw reading parameters" msgstr "" -#: src/preferences.c:1895 +#: src/preferences.c:1904 msgid "Raw reading mode" msgstr "" -#: src/preferences.c:1895 +#: src/preferences.c:1905 msgid "Raw reading mode: " msgstr "" -#: src/preferences.c:1927 +#: src/preferences.c:1937 msgid "other:" msgstr "" -#: src/preferences.c:1961 +#: src/preferences.c:1971 msgid "" "Raw reading mode\n" "\n" @@ -1827,19 +1804,19 @@ msgid "" "0x01 Some drives do the right thing when given this value, although this makes no sense according to the SCSI specs. Try entering this value in the \"other\" field if the other choices do not work. See the mode page 01h documentation in chapter 6 of MMC3 or later for additional information." msgstr "" -#: src/preferences.c:1987 +#: src/preferences.c:1997 msgid "Internal read attempts" msgstr "" -#: src/preferences.c:1988 +#: src/preferences.c:1998 msgid "Reread defective sectors" msgstr "" -#: src/preferences.c:1991 +#: src/preferences.c:2001 msgid "times" msgstr "" -#: src/preferences.c:2022 +#: src/preferences.c:2032 msgid "" "Internal read attempts\n" "\n" @@ -1849,15 +1826,15 @@ msgid "" "Use the value -1 to leave the drive at its default setting." msgstr "" -#: src/preferences.c:2035 src/preferences.c:2038 +#: src/preferences.c:2045 src/preferences.c:2048 msgid "Fatal error handling" msgstr "" -#: src/preferences.c:2039 +#: src/preferences.c:2049 msgid "Ignore fatal errors" msgstr "" -#: src/preferences.c:2066 +#: src/preferences.c:2076 msgid "" "Fatal error handling\n" "\n" @@ -1865,15 +1842,15 @@ msgid "" "However some drives produce unfounded fatal messages. For such drives ignoring fatal errors may be needed to do uninterrupted reading of damaged media." msgstr "" -#: src/preferences.c:2076 +#: src/preferences.c:2086 msgid "Media ejection" msgstr "" -#: src/preferences.c:2079 src/preferences.c:2080 +#: src/preferences.c:2089 src/preferences.c:2090 msgid "Eject medium after successful read" msgstr "" -#: src/preferences.c:2107 +#: src/preferences.c:2117 msgid "" "Medium ejection\n" "\n" @@ -1882,23 +1859,23 @@ msgid "" "Note that the desktop environment may prevent other applications from ejecting media. In that case eject the medium through the desktop user interface." msgstr "" -#: src/preferences.c:2117 +#: src/preferences.c:2127 msgid "Read attempts" msgstr "" -#: src/preferences.c:2121 +#: src/preferences.c:2131 msgid "Sector read errors" msgstr "" -#: src/preferences.c:2130 +#: src/preferences.c:2140 msgid "Raw reading" msgstr "" -#: src/preferences.c:2130 +#: src/preferences.c:2141 msgid "Read and analyze raw sectors" msgstr "" -#: src/preferences.c:2152 +#: src/preferences.c:2163 msgid "" "Raw reading (affects CD media only)\n" "\n" @@ -1914,17 +1891,17 @@ msgid "" "Raw sector caching also needs checking of the respective option." msgstr "" -#: src/preferences.c:2169 +#: src/preferences.c:2180 msgid "Minimum number of reading attempts" msgstr "" -#: src/preferences.c:2171 src/preferences.c:2172 src/preferences.c:2177 -#: src/preferences.c:2178 +#: src/preferences.c:2183 src/preferences.c:2184 src/preferences.c:2189 +#: src/preferences.c:2190 #, c-format msgid "Min. %d reading attempts per sector" msgstr "" -#: src/preferences.c:2199 +#: src/preferences.c:2211 msgid "" "Minimum number of reading attempts\n" "\n" @@ -1933,17 +1910,17 @@ msgid "" "Increasing the number of reading attempts may improve data recovery on marginal media, but will also increase processing time and mechanical wear on the drive." msgstr "" -#: src/preferences.c:2208 +#: src/preferences.c:2220 msgid "Maximum number of reading attempts" msgstr "" -#: src/preferences.c:2210 src/preferences.c:2211 src/preferences.c:2216 -#: src/preferences.c:2217 +#: src/preferences.c:2223 src/preferences.c:2224 src/preferences.c:2229 +#: src/preferences.c:2230 #, c-format msgid "Max. %d reading attempts per sector" msgstr "" -#: src/preferences.c:2238 +#: src/preferences.c:2251 msgid "" "Maximum number of reading attempts\n" "\n" @@ -1952,23 +1929,23 @@ msgid "" "The decision to do more attempts depends on the quality of data gathered so far, which in turn is influenced by the capabilities of your optical drive and the operating system. So depending on your configuration, you may or may not see dvdisaster using the maximum value." msgstr "" -#: src/preferences.c:2252 +#: src/preferences.c:2265 msgid "Treatment of unreadable areas" msgstr "" -#: src/preferences.c:2254 src/preferences.c:2256 src/preferences.c:2257 -#: src/preferences.c:2265 +#: src/preferences.c:2268 src/preferences.c:2270 src/preferences.c:2271 +#: src/preferences.c:2279 #, c-format msgid "Skip %d sectors after read error" msgstr "Salta %d settori dopo l'errore di lettura" -#: src/preferences.c:2255 src/preferences.c:2260 src/preferences.c:2261 -#: src/preferences.c:2266 +#: src/preferences.c:2269 src/preferences.c:2274 src/preferences.c:2275 +#: src/preferences.c:2280 #, c-format msgid "Stop reading when unreadable intervals < %d" msgstr "" -#: src/preferences.c:2292 +#: src/preferences.c:2306 msgid "" "Treatment of unreadable areas\n" "\n" @@ -1977,34 +1954,34 @@ msgid "" "Effects on the linear reading strategy:" msgstr "" -#: src/preferences.c:2299 +#: src/preferences.c:2313 msgid "Skipping a large number of sectors (e.g. 1024) gives a quick overview of damaged areas, but will usually not collect enough data for repairing the image." msgstr "" -#: src/preferences.c:2303 +#: src/preferences.c:2317 msgid "Smaller values like 16, 32 or 64 are a good trade-off: The processing time will beconsiderably shortened, but still enough data for repairing the image is collected.\n" msgstr "" -#: src/preferences.c:2307 +#: src/preferences.c:2321 msgid "" "The adaptive reading strategy uses this setting only if no error correction data is available. In that case the reading process will stop when no unread areas larger than the selected size remain. Values smaller than 128 are not recommended as they cause the drive to carry out lots of laser head repositioning during the final phase of the reading process. If adaptive reading with a setting of 128 is not sufficient, try reading the remaining sectors with an additional linear reading pass.\n" "\n" "On DVD and BD media read errors do usually extend over at least 16 sectors for technical reasons. Therefore selecting a value less than 16 is not recommended for DVD and BD." msgstr "" -#: src/preferences.c:2320 src/preferences.c:2323 +#: src/preferences.c:2334 src/preferences.c:2337 msgid "Media read attempts" msgstr "" -#: src/preferences.c:2324 +#: src/preferences.c:2338 msgid "Read the whole medium " msgstr "" -#: src/preferences.c:2340 +#: src/preferences.c:2354 msgid " times" msgstr "" -#: src/preferences.c:2355 +#: src/preferences.c:2369 msgid "" "Media read attempts for the linear reading strategy\n" "\n" @@ -2013,15 +1990,15 @@ msgid "" "Only the missing sectors will be tried in the additional reading passes." msgstr "" -#: src/preferences.c:2372 +#: src/preferences.c:2386 msgid "Keep uncorrectable raw sectors in the following directory:" msgstr "" -#: src/preferences.c:2380 src/preferences.c:3196 +#: src/preferences.c:2394 src/preferences.c:3215 msgid "Select" msgstr "" -#: src/preferences.c:2421 +#: src/preferences.c:2435 msgid "" "Raw sector caching\n" "\n" @@ -2033,305 +2010,305 @@ msgid "" "dvdisaster will not remove any files from the given directory; you need to clean it up manually after a successful medium recovery." msgstr "" -#: src/preferences.c:2439 +#: src/preferences.c:2453 msgid "Raw sector file prefix" msgstr "" -#: src/preferences.c:2440 +#: src/preferences.c:2454 msgid "Raw sector file prefix: " msgstr "" -#: src/preferences.c:2463 +#: src/preferences.c:2477 msgid "" "Raw sector file prefix\n" "\n" "Use a different prefix for each disc you are trying to recover, e.g. \"disc1-\" and so on." msgstr "" -#: src/preferences.c:2471 +#: src/preferences.c:2485 msgid "Error correction" msgstr "Correzione dell'errore" -#: src/preferences.c:2473 +#: src/preferences.c:2487 msgid "Error correction method" msgstr "" -#: src/preferences.c:2474 +#: src/preferences.c:2488 msgid "Storage method:" msgstr "" -#: src/preferences.c:2514 +#: src/preferences.c:2528 msgid "" "Error correction method\n" "\n" "dvdisaster creates error correction data which is used to recover unreadable sectors if the disc becomes damaged later on. There are different codecs and ways available for storing the error correction information:\n" msgstr "" -#: src/preferences.c:2520 +#: src/preferences.c:2534 msgid "" "The RS01 codec\n" "RS01 is the recommended codec for storing error correction data in separate files.\n" msgstr "" -#: src/preferences.c:2523 +#: src/preferences.c:2537 msgid "" "The RS02 codec\n" "RS02 is the currently recommended codec for augmenting images with error correction data.\n" msgstr "" -#: src/preferences.c:2527 +#: src/preferences.c:2541 msgid "" "The RS03 codec (Warning: experimental)\n" "RS03 can either store error correction data in a separate file or augment the image with it. It provides multithreading to scale with multicore processors and contains some subtle improvements over RS01 and RS02. However it should not be used for productive work unless a stable version is released with dvdisaster V0.80." msgstr "" -#: src/preferences.c:2565 +#: src/preferences.c:2578 msgid "Files" msgstr "" -#: src/preferences.c:2569 +#: src/preferences.c:2582 msgid "Local files (on hard disk)" msgstr "File locali (sul disco rigido)" -#: src/preferences.c:2576 +#: src/preferences.c:2589 msgid "Automatic file suffixes" msgstr "" -#: src/preferences.c:2576 +#: src/preferences.c:2590 msgid "Automatically add .iso and .ecc file suffixes" msgstr "Aggiungi automaticamente i suffissi .iso e .ecc" -#: src/preferences.c:2601 +#: src/preferences.c:2615 msgid "" "Automatically add file suffixes\n" "\n" "When this switch is set, files will be automatically appended with \".iso\" or \".ecc\" suffixes if no other file name extension is already present." msgstr "" -#: src/preferences.c:2607 +#: src/preferences.c:2621 msgid "Automatic file creation and deletion" msgstr "Creazione e cancellazione file automatica" -#: src/preferences.c:2616 +#: src/preferences.c:2630 msgid "Automatic .ecc file creation" msgstr "" -#: src/preferences.c:2616 +#: src/preferences.c:2631 msgid "Create error correction file after reading image" msgstr "Creazione del file di correzione errore dopo la lettura dell'immagine" -#: src/preferences.c:2640 +#: src/preferences.c:2655 msgid "" "Automatic error correction file creation\n" "\n" "Automatically creates an error correction file after reading an image. Together with the \"Remove image\" option this will speed up error correction file generation for a series of different media." msgstr "" -#: src/preferences.c:2647 +#: src/preferences.c:2662 msgid "Automatic image file removal" msgstr "" -#: src/preferences.c:2647 +#: src/preferences.c:2663 msgid "Remove image after error correction file creation" msgstr "Rimuovi l'immagine dopo la creazione del file di correzione degli errori" -#: src/preferences.c:2671 +#: src/preferences.c:2687 msgid "" "Automatic image file removal\n" "\n" "If this switch is set the image file will be deleted following the successful generation of the respective error correction file." msgstr "" -#: src/preferences.c:2677 src/preferences.c:2686 +#: src/preferences.c:2693 src/preferences.c:2702 msgid "Confirm file overwriting" msgstr "" -#: src/preferences.c:2686 +#: src/preferences.c:2703 msgid "Ask before overwriting image and ecc files" msgstr "" -#: src/preferences.c:2710 +#: src/preferences.c:2727 msgid "" "Ask before overwriting image and ecc files\n" "\n" "dvdisaster will ask you for confirmation when it is going to overwrite an existing image or error correction file if this option is checked." msgstr "" -#: src/preferences.c:2717 +#: src/preferences.c:2734 msgid "Appearance" msgstr "" -#: src/preferences.c:2729 +#: src/preferences.c:2746 msgid "Sector coloring" msgstr "" -#: src/preferences.c:2740 src/rs01-verify.c:123 src/rs02-verify.c:118 -#: src/rs03-verify.c:127 +#: src/preferences.c:2757 src/rs01-verify.c:127 src/rs02-verify.c:120 +#: src/rs03-verify.c:130 msgid "Good sectors" msgstr "Settori buoni" -#: src/preferences.c:2740 +#: src/preferences.c:2757 msgid "Good sector" msgstr "" -#: src/preferences.c:2765 +#: src/preferences.c:2782 msgid "" "Good sectors\n" "\n" "This color indicates good sectors." msgstr "" -#: src/preferences.c:2770 +#: src/preferences.c:2787 msgid "Checksum errors" msgstr "" -#: src/preferences.c:2770 +#: src/preferences.c:2787 msgid "Checksum error" msgstr "" -#: src/preferences.c:2795 +#: src/preferences.c:2812 msgid "" "Checksum errors\n" "\n" "This color is used for displaying sectors with wrong check sums." msgstr "" -#: src/preferences.c:2800 +#: src/preferences.c:2817 msgid "Unreadable sectors" msgstr "" -#: src/preferences.c:2800 +#: src/preferences.c:2817 msgid "Unreadable" msgstr "" -#: src/preferences.c:2825 +#: src/preferences.c:2842 msgid "" "Unreadable sectors\n" "\n" "This color is used for marking unreadable sectors." msgstr "" -#: src/preferences.c:2830 +#: src/preferences.c:2847 msgid "Present sectors" msgstr "" -#: src/preferences.c:2830 +#: src/preferences.c:2847 msgid "Present sector" msgstr "" -#: src/preferences.c:2855 +#: src/preferences.c:2872 msgid "" "Present sectors\n" "\n" "Sectors which are already present are marked with this color." msgstr "" -#: src/preferences.c:2860 +#: src/preferences.c:2877 msgid "Ignored sectors" msgstr "" -#: src/preferences.c:2860 +#: src/preferences.c:2877 msgid "Ignored sector" msgstr "" -#: src/preferences.c:2885 +#: src/preferences.c:2902 msgid "" "Ignored sectors\n" "\n" "Sectors marked with this color will not be processed in the current run." msgstr "" -#: src/preferences.c:2891 +#: src/preferences.c:2908 msgid "Highlit sectors" msgstr "" -#: src/preferences.c:2891 +#: src/preferences.c:2908 msgid "Highlit sector" msgstr "" -#: src/preferences.c:2916 +#: src/preferences.c:2933 msgid "" "Highlit sectors\n" "\n" "This color is used for temporarily highlighting sectors during adaptive reading." msgstr "" -#: src/preferences.c:2922 +#: src/preferences.c:2939 msgid "Text colors" msgstr "" -#: src/preferences.c:2932 +#: src/preferences.c:2949 msgid "Positive text" msgstr "" -#: src/preferences.c:2957 +#: src/preferences.c:2974 msgid "" "Positive text\n" "\n" "Good news are printed in this color." msgstr "" -#: src/preferences.c:2962 +#: src/preferences.c:2979 msgid "Negative text" msgstr "" -#: src/preferences.c:2987 +#: src/preferences.c:3004 msgid "" "Negative text\n" "\n" "Bad news are printed in this color." msgstr "" -#: src/preferences.c:2992 +#: src/preferences.c:3009 msgid "Curve colors" msgstr "" -#: src/preferences.c:3001 +#: src/preferences.c:3018 msgid "Curve color" msgstr "" -#: src/preferences.c:3026 +#: src/preferences.c:3043 msgid "" "Curve color and labels\n" "\n" "The reading speed curve, its left side and top labels are printed in this color." msgstr "" -#: src/preferences.c:3032 src/read-linear-window.c:445 +#: src/preferences.c:3049 src/read-linear-window.c:455 msgid "C2 errors" msgstr "" -#: src/preferences.c:3057 +#: src/preferences.c:3074 msgid "" "C2 error color\n" "\n" "The logarithmic bar graph showing the C2 errors is rendered in this color during the \"read\" and \"scan\" operations." msgstr "" -#: src/preferences.c:3064 +#: src/preferences.c:3081 msgid "Error correction load" msgstr "" -#: src/preferences.c:3089 +#: src/preferences.c:3106 msgid "" "Error correction load\n" "\n" "The bar graph showing the error correction load is rendered in this color during the \"Fix\" operation." msgstr "" -#: src/preferences.c:3101 +#: src/preferences.c:3118 msgid "Default color scheme" msgstr "" -#: src/preferences.c:3109 +#: src/preferences.c:3126 msgid "Dialog boxes" msgstr "" -#: src/preferences.c:3112 +#: src/preferences.c:3129 src/preferences.c:3130 msgid "Reverse OK / Cancel buttons" msgstr "" -#: src/preferences.c:3137 +#: src/preferences.c:3155 msgid "" "Reverse OK / Cancel buttons\n" "\n" @@ -2340,325 +2317,325 @@ msgid "" "Changes will become active after restarting dvdisaster." msgstr "" -#: src/preferences.c:3144 +#: src/preferences.c:3162 msgid "Misc" msgstr "" -#: src/preferences.c:3148 +#: src/preferences.c:3166 msgid "Logging" msgstr "" -#: src/preferences.c:3155 +#: src/preferences.c:3173 src/preferences.c:3174 msgid "Verbose logging" msgstr "" -#: src/preferences.c:3180 +#: src/preferences.c:3199 msgid "" "Verbose logging\n" "\n" "More information will be supplied in the Log window and/or log file. Useful for debugging, but may lead to slower performance." msgstr "" -#: src/preferences.c:3187 +#: src/preferences.c:3206 msgid "Logfile:" msgstr "" -#: src/preferences.c:3188 +#: src/preferences.c:3207 msgid "Copy log to file:" msgstr "" -#: src/preferences.c:3197 +#: src/preferences.c:3216 msgid "Delete" msgstr "" -#: src/preferences.c:3245 +#: src/preferences.c:3264 msgid "" "Logfile\n" "\n" "A copy of the logging information from the log window is written to the specified log file. This is useful to collect information on program crashes, but affects performance negatively." msgstr "" -#: src/print-sense.c:613 +#: src/print-sense.c:615 #, c-format msgid "Sense error (0x%02x); " msgstr "Errore sense 0x%02x; " -#: src/print-sense.c:615 +#: src/print-sense.c:617 #, c-format msgid "Sense error: %s%c " msgstr "" -#: src/print-sense.c:629 +#: src/print-sense.c:631 #, c-format msgid "unknown asc/ascq code (0x%02x, 0x%02x)." msgstr "Codice asc/ascq sconosciuto (0x%02x, 0x%02x)." -#: src/raw-editor.c:297 +#: src/raw-editor.c:299 msgid "windowtitle|Raw sector dump selection" msgstr "" -#: src/raw-editor.c:328 +#: src/raw-editor.c:330 #, c-format msgid "%s loaded, LBA %, %d samples." msgstr "" -#: src/raw-editor.c:352 +#: src/raw-editor.c:354 msgid "EDC checksum does not match - sector still defective!" msgstr "" -#: src/raw-editor.c:357 +#: src/raw-editor.c:359 msgid "LBA does not match MSF code in sector!" msgstr "" -#: src/raw-editor.c:384 +#: src/raw-editor.c:386 msgid "Raw sector does not belong to the selected image!" msgstr "" -#: src/raw-editor.c:390 src/read-adaptive.c:1348 src/read-adaptive.c:1428 -#: src/read-adaptive.c:1770 src/read-adaptive.c:1988 src/read-linear.c:426 -#: src/read-linear.c:708 src/read-linear.c:1048 src/rs01-fix.c:501 -#: src/rs01-fix.c:761 src/rs02-fix.c:786 src/rs03-fix.c:865 +#: src/raw-editor.c:392 src/read-adaptive.c:1279 src/read-adaptive.c:1351 +#: src/read-adaptive.c:1674 src/read-adaptive.c:1873 src/read-linear.c:394 +#: src/read-linear.c:667 src/read-linear.c:1018 src/rs01-fix.c:469 +#: src/rs01-fix.c:729 src/rs02-fix.c:750 src/rs03-fix.c:824 #, c-format msgid "Failed seeking to sector % in image [%s]: %s" msgstr "" -#: src/raw-editor.c:397 src/read-adaptive.c:1362 src/read-adaptive.c:1434 -#: src/read-adaptive.c:1802 src/read-adaptive.c:1817 src/read-adaptive.c:1996 -#: src/read-linear.c:435 src/read-linear.c:715 src/rs01-fix.c:195 -#: src/rs01-fix.c:508 +#: src/raw-editor.c:399 src/read-adaptive.c:1293 src/read-adaptive.c:1357 +#: src/read-adaptive.c:1706 src/read-adaptive.c:1719 src/read-adaptive.c:1881 +#: src/read-linear.c:403 src/read-linear.c:674 src/rs01-fix.c:185 +#: src/rs01-fix.c:476 #, c-format msgid "Failed writing to sector % in image [%s]: %s" msgstr "" -#: src/raw-editor.c:418 +#: src/raw-editor.c:420 msgid "windowtitle|Load buffer from file" msgstr "" -#: src/raw-editor.c:436 +#: src/raw-editor.c:438 msgid "windowtitle|Save buffer to file" msgstr "" -#: src/raw-editor.c:474 +#: src/raw-editor.c:476 #, c-format msgid "Buffer loaded from %s." msgstr "" -#: src/raw-editor.c:489 +#: src/raw-editor.c:491 #, c-format msgid "Buffer saved to %s." msgstr "" -#: src/raw-editor.c:576 +#: src/raw-editor.c:578 msgid "*** Well done: Sector has been recovered! ***" msgstr "" -#: src/raw-editor.c:579 +#: src/raw-editor.c:582 #, c-format msgid "Current buffer state: P %d/%d, Q %d/%d" msgstr "" -#: src/raw-editor.c:690 +#: src/raw-editor.c:694 #, c-format msgid "%c Vector %d has >2 erasures (nothing done)." msgstr "" -#: src/raw-editor.c:719 +#: src/raw-editor.c:723 #, c-format msgid "%c Vector %d already good." msgstr "" -#: src/raw-editor.c:727 +#: src/raw-editor.c:731 #, c-format msgid "%c Vector %d corrected (%d erasures)." msgstr "" -#: src/raw-editor.c:730 +#: src/raw-editor.c:734 #, c-format msgid "%c Vector %d not correctable (%d erasures)." msgstr "" -#: src/raw-editor.c:745 +#: src/raw-editor.c:749 #, c-format msgid "no replacements for P vector %d available" msgstr "" -#: src/raw-editor.c:761 +#: src/raw-editor.c:765 #, c-format msgid "Exchanged P vector %d with version %d (of %d)." msgstr "" -#: src/raw-editor.c:783 +#: src/raw-editor.c:787 #, c-format msgid "no replacements for Q vector %d available" msgstr "" -#: src/raw-editor.c:797 +#: src/raw-editor.c:801 #, c-format msgid "Exchanged Q vector %d with version %d (of %d)." msgstr "" -#: src/raw-editor.c:858 src/raw-editor.c:871 +#: src/raw-editor.c:862 src/raw-editor.c:875 #, c-format msgid "Showing sample %d (of %d)." msgstr "" -#: src/raw-editor.c:917 +#: src/raw-editor.c:921 msgid "Sector with lowest P failures selected." msgstr "" -#: src/raw-editor.c:927 +#: src/raw-editor.c:931 msgid "Sector with lowest Q failures selected." msgstr "" -#: src/raw-editor.c:939 +#: src/raw-editor.c:942 #, c-format msgid "Smart L-EC: %s" msgstr "" -#: src/raw-editor.c:960 +#: src/raw-editor.c:963 msgid "Raw sector editor" msgstr "" -#: src/raw-editor.c:982 +#: src/raw-editor.c:985 msgid "Please load a raw sector file!" msgstr "" -#: src/raw-editor.c:994 +#: src/raw-editor.c:997 msgid "Browsing" msgstr "" -#: src/raw-editor.c:1006 +#: src/raw-editor.c:1009 msgid "button|Load" msgstr "" -#: src/raw-editor.c:1011 +#: src/raw-editor.c:1014 msgid "button|Save" msgstr "" -#: src/raw-editor.c:1017 +#: src/raw-editor.c:1020 msgid "button|Prev. sector" msgstr "" -#: src/raw-editor.c:1022 +#: src/raw-editor.c:1025 msgid "button|Next sector" msgstr "" -#: src/raw-editor.c:1027 +#: src/raw-editor.c:1030 msgid "button|Sort by P" msgstr "" -#: src/raw-editor.c:1032 +#: src/raw-editor.c:1035 msgid "button|Sort by Q" msgstr "" -#: src/raw-editor.c:1039 +#: src/raw-editor.c:1042 msgid "Editing" msgstr "" -#: src/raw-editor.c:1051 +#: src/raw-editor.c:1054 msgid "button|Load Buf" msgstr "" -#: src/raw-editor.c:1056 +#: src/raw-editor.c:1059 msgid "button|Save Buf" msgstr "" -#: src/raw-editor.c:1061 +#: src/raw-editor.c:1064 msgid "button|Tag diffs" msgstr "" -#: src/raw-editor.c:1066 +#: src/raw-editor.c:1069 msgid "button|Untag all" msgstr "" -#: src/raw-editor.c:1071 +#: src/raw-editor.c:1074 msgid "button|Redo" msgstr "" -#: src/raw-editor.c:1076 +#: src/raw-editor.c:1079 msgid "button|Undo" msgstr "" -#: src/raw-editor.c:1083 +#: src/raw-editor.c:1086 msgid "Correction" msgstr "" -#: src/raw-editor.c:1086 +#: src/raw-editor.c:1089 msgid "button|P vector" msgstr "" -#: src/raw-editor.c:1091 +#: src/raw-editor.c:1094 msgid "button|Q vector" msgstr "" -#: src/raw-editor.c:1096 +#: src/raw-editor.c:1099 msgid "button|Find other P" msgstr "" -#: src/raw-editor.c:1101 +#: src/raw-editor.c:1104 msgid "button|Find other Q" msgstr "" -#: src/raw-editor.c:1106 +#: src/raw-editor.c:1109 msgid "button|Tag erasures" msgstr "" -#: src/raw-editor.c:1113 +#: src/raw-editor.c:1116 msgid "Heuristics" msgstr "" -#: src/raw-editor.c:1116 +#: src/raw-editor.c:1119 msgid "button|Smart L-EC" msgstr "" -#: src/raw-sector-cache.c:35 src/raw-sector-cache.c:209 -#: src/raw-sector-cache.c:354 src/scsi-freebsd.c:131 src/scsi-freebsd.c:141 -#: src/scsi-linux.c:115 src/scsi-linux.c:124 src/scsi-netbsd.c:126 -#: src/scsi-netbsd.c:136 src/scsi-win32.c:256 +#: src/raw-sector-cache.c:37 src/raw-sector-cache.c:204 +#: src/raw-sector-cache.c:338 src/scsi-freebsd.c:133 src/scsi-freebsd.c:143 +#: src/scsi-linux.c:117 src/scsi-linux.c:126 src/scsi-netbsd.c:128 +#: src/scsi-netbsd.c:138 src/scsi-win32.c:256 #, c-format msgid "Could not open %s: %s" msgstr "Non posso aprire %s: %s" -#: src/raw-sector-cache.c:60 src/raw-sector-cache.c:124 -#: src/raw-sector-cache.c:130 src/raw-sector-cache.c:134 -#: src/raw-sector-cache.c:162 src/raw-sector-cache.c:267 +#: src/raw-sector-cache.c:62 src/raw-sector-cache.c:126 +#: src/raw-sector-cache.c:132 src/raw-sector-cache.c:136 +#: src/raw-sector-cache.c:164 src/raw-sector-cache.c:262 #, c-format msgid "Failed writing to defective sector file: %s" msgstr "" -#: src/raw-sector-cache.c:80 src/raw-sector-cache.c:105 -#: src/raw-sector-cache.c:223 src/raw-sector-cache.c:324 -#: src/raw-sector-cache.c:370 +#: src/raw-sector-cache.c:82 src/raw-sector-cache.c:107 +#: src/raw-sector-cache.c:218 src/raw-sector-cache.c:314 +#: src/raw-sector-cache.c:354 #, c-format msgid "Failed reading from defective sector file: %s" msgstr "" -#: src/raw-sector-cache.c:88 +#: src/raw-sector-cache.c:90 msgid "Defective sector file is truncated" msgstr "" -#: src/raw-sector-cache.c:112 src/raw-sector-cache.c:138 -#: src/raw-sector-cache.c:150 src/raw-sector-cache.c:216 -#: src/raw-sector-cache.c:231 +#: src/raw-sector-cache.c:114 src/raw-sector-cache.c:140 +#: src/raw-sector-cache.c:152 src/raw-sector-cache.c:211 +#: src/raw-sector-cache.c:226 #, c-format msgid "Failed seeking in defective sector file: %s" msgstr "" -#: src/raw-sector-cache.c:169 +#: src/raw-sector-cache.c:171 msgid "Fingerprints of medium and defective sector cache do not match!" msgstr "" -#: src/raw-sector-cache.c:203 +#: src/raw-sector-cache.c:198 #, c-format msgid " [Creating new cache file %s]\n" msgstr "" -#: src/raw-sector-cache.c:280 +#: src/raw-sector-cache.c:270 #, c-format msgid " [Appended %d/%d sectors to cache file %s; LBA=%, ssize=%d, %d sectors]\n" msgstr "" -#: src/read-adaptive.c:55 src/rs01-create.c:1080 +#: src/read-adaptive.c:57 src/rs01-create.c:1018 #, c-format msgid "" "Error closing error correction file:\n" @@ -2667,11 +2644,11 @@ msgstr "" "Errore durante la chiusura del file di correzione di errore:\n" "%s" -#: src/read-adaptive.c:78 src/read-adaptive.c:115 +#: src/read-adaptive.c:80 src/read-adaptive.c:117 msgid "Invalid or damaged ecc file" msgstr "" -#: src/read-adaptive.c:102 +#: src/read-adaptive.c:104 #, c-format msgid "" "Can't read ecc header:\n" @@ -2680,7 +2657,7 @@ msgstr "" "Impossibile leggere lo header Ecc:\n" "%s" -#: src/read-adaptive.c:119 +#: src/read-adaptive.c:121 src/read-linear.c:867 #, c-format msgid "" "* Warning: This ecc file requires dvdisaster-%d.%d!\n" @@ -2690,74 +2667,74 @@ msgid "" "\n" msgstr "" -#: src/read-adaptive.c:152 src/rs01-common.c:80 src/rs01-common.c:238 -#: src/rs01-create.c:326 src/rs01-verify.c:891 +#: src/read-adaptive.c:154 src/rs01-common.c:82 src/rs01-common.c:237 +#: src/rs01-create.c:299 src/rs01-verify.c:794 #, c-format msgid "Failed skipping the ecc header: %s" msgstr "" -#: src/read-adaptive.c:161 src/read-adaptive.c:171 src/rs01-common.c:92 -#: src/rs01-common.c:102 src/rs01-common.c:350 +#: src/read-adaptive.c:163 src/read-adaptive.c:173 src/rs01-common.c:94 +#: src/rs01-common.c:104 src/rs01-common.c:347 #, c-format msgid "Error reading CRC information: %s" msgstr "Errore di lettura delle informazioni CRC: %s" -#: src/read-adaptive.c:374 src/read-adaptive.c:1747 +#: src/read-adaptive.c:375 src/read-adaptive.c:1650 msgid "Aborted by unrecoverable error." msgstr "Interrotto da un errore irrecuperabile." -#: src/read-adaptive.c:510 +#: src/read-adaptive.c:508 #, c-format msgid "Repairable: %2d.%1d%% (correctable: %; now reading [%..%], size %)" msgstr "Riparabili: %2d.%1d%% (correggibili: %; leggi [%..%], dimensione %)" -#: src/read-adaptive.c:515 +#: src/read-adaptive.c:513 #, c-format msgid "Repairable: %2d.%1d%% (missing: %; now reading [%..%], size %)" msgstr "Riparabili: %2d.%1d%% (mancante: %; leggi [%..%], dimensione %)" -#: src/read-adaptive.c:655 src/read-adaptive.c:671 src/read-adaptive.c:701 +#: src/read-adaptive.c:651 src/read-adaptive.c:662 src/read-adaptive.c:692 #, c-format msgid "%s-type ECC found\n" msgstr "" -#: src/read-adaptive.c:674 +#: src/read-adaptive.c:665 src/read-linear.c:874 #, c-format msgid "" "* Warning: This image requires dvdisaster-%d.%d!\n" "* Proceeding could trigger incorrect behaviour.\n" -"* Please visit http://www.dvdisaster.org for an upgrade.\n" +"* Please upgrade dvdisaster.\n" "\n" msgstr "" -#: src/read-adaptive.c:703 +#: src/read-adaptive.c:694 msgid "" "Adaptive reading has not been adapted yet to handle RS03-augmented images properly.\n" "To quote the original author: \"behaviour with RS03 is unpredictable and undefined\".\n" "You should cancel and use the linear reading strategy instead. Continue at your own risk.\n" msgstr "" -#: src/read-adaptive.c:710 src/read-adaptive.c:773 src/read-adaptive.c:792 -#: src/read-adaptive.c:865 src/read-adaptive.c:960 src/read-adaptive.c:1030 -#: src/read-adaptive.c:1371 src/read-adaptive.c:1671 +#: src/read-adaptive.c:699 src/read-adaptive.c:758 src/read-adaptive.c:773 +#: src/read-adaptive.c:837 src/read-adaptive.c:926 src/read-adaptive.c:987 +#: src/read-adaptive.c:1300 src/read-adaptive.c:1576 msgid "Aborted by user request!" msgstr "Annullato dall'utente!" -#: src/read-adaptive.c:721 +#: src/read-adaptive.c:709 #, c-format msgid "Stopping when unreadable intervals < %d." msgstr "Ferma quando gli intervalli non leggibili sono < %d." -#: src/read-adaptive.c:723 src/read-adaptive.c:729 +#: src/read-adaptive.c:711 src/read-adaptive.c:717 #, c-format msgid "Adaptive reading: %s\n" msgstr "Modo di lettura adattivo: %s\n" -#: src/read-adaptive.c:728 +#: src/read-adaptive.c:716 msgid "Trying to collect enough data for error correction." msgstr "Provo a raggruppare abbastanza dati per la correzione errori." -#: src/read-adaptive.c:764 +#: src/read-adaptive.c:751 #, c-format msgid "" "Medium contains % sectors more as recorded in the .ecc file\n" @@ -2769,7 +2746,7 @@ msgstr "" "(Supporto: % settori; attesi dal file .ecc: % settori).\n" "Solo i primi % settori del supporto saranno processati.\n" -#: src/read-adaptive.c:785 +#: src/read-adaptive.c:768 #, c-format msgid "" "Medium contains % sectors less as recorded in the .ecc file\n" @@ -2779,33 +2756,33 @@ msgstr "" "registrati nel file .ecc\n" "(Supporto: % settori; attesi dal file .ecc: % settori).\n" -#: src/read-adaptive.c:832 +#: src/read-adaptive.c:807 #, c-format msgid "Limiting sector range to [%,%].\n" msgstr "Limitazione ampiezza dei settori [%,%].\n" -#: src/read-adaptive.c:858 +#: src/read-adaptive.c:832 #, c-format msgid "" "Sector %d is missing. Can not compare medium and ecc fingerprints.\n" "Double check that the medium and the ecc file belong together.\n" msgstr "" -#: src/read-adaptive.c:874 +#: src/read-adaptive.c:845 msgid "" "Fingerprints of medium and ecc file do not match.\n" "Medium and ecc file do not belong together.\n" msgstr "" -#: src/read-adaptive.c:917 src/read-linear.c:360 +#: src/read-adaptive.c:886 src/read-linear.c:337 msgid "Image file does not match the optical disc." msgstr "Il file immagine non corrisponde al CD/DVD/BD." -#: src/read-adaptive.c:924 +#: src/read-adaptive.c:893 msgid "Reading aborted. Please select a different image file." msgstr "Lettura annullata. Prego selezionare un file immagine differente." -#: src/read-adaptive.c:952 +#: src/read-adaptive.c:920 #, c-format msgid "" "Image file is % sectors longer than inserted medium\n" @@ -2814,74 +2791,74 @@ msgstr "" "Il file immagine è % settori più lungo del supporto inserito\n" "(File immagine: % sectors; supporto: % sectors).\n" -#: src/read-adaptive.c:980 src/read-adaptive.c:986 +#: src/read-adaptive.c:944 src/read-adaptive.c:948 msgid "Loading CRC data." msgstr "" -#: src/read-adaptive.c:1020 +#: src/read-adaptive.c:979 msgid "Analysing existing image file" msgstr "Analizzo il file immagine esistente" -#: src/read-adaptive.c:1040 src/rs01-common.c:280 src/rs02-verify.c:752 +#: src/read-adaptive.c:996 src/rs01-common.c:277 src/rs02-verify.c:730 #, c-format msgid "premature end in image (only %d bytes): %s\n" msgstr "Fine prematura dell'immagine (solo %d Bytes): %s\n" -#: src/read-adaptive.c:1127 +#: src/read-adaptive.c:1074 #, c-format msgid "Analysing existing image file: %2d%%" msgstr "Analizzo il file immagine esistente: %2d%%" -#: src/read-adaptive.c:1156 +#: src/read-adaptive.c:1101 msgid "Determining correctable sectors" msgstr "Determino i settori correggibili" -#: src/read-adaptive.c:1236 +#: src/read-adaptive.c:1176 #, c-format msgid "Analysing existing image file: % readable, % correctable, % still missing.\n" msgstr "Analizzo il file immagine esistente: % leggibile, % correggibili, % ancora mancanti.\n" -#: src/read-adaptive.c:1238 +#: src/read-adaptive.c:1178 #, c-format msgid "Analysing existing image file: % readable, % still missing.\n" msgstr "Analizzo il file immagine esistente: % leggibile, % ancora mancanti.\n" -#: src/read-adaptive.c:1295 src/read-linear.c:789 +#: src/read-adaptive.c:1228 src/read-linear.c:748 msgid "Ignore once" msgstr "Ignora una volta" -#: src/read-adaptive.c:1296 src/read-linear.c:790 +#: src/read-adaptive.c:1229 src/read-linear.c:749 msgid "Ignore always" msgstr "Ignora sempre" -#: src/read-adaptive.c:1297 src/read-linear.c:791 +#: src/read-adaptive.c:1230 src/read-linear.c:750 msgid "Abort" msgstr "Ferma" -#: src/read-adaptive.c:1333 +#: src/read-adaptive.c:1266 #, c-format msgid "Filling image area [%..%]" msgstr "Riempio l'area immagine [%..%]" -#: src/read-adaptive.c:1465 src/read-linear.c:223 +#: src/read-adaptive.c:1388 src/read-linear.c:218 msgid "Reading aborted" msgstr "Lettura annullata" -#: src/read-adaptive.c:1469 src/read-linear.c:228 +#: src/read-adaptive.c:1391 src/read-linear.c:221 msgid "Preparing for reading the medium image." msgstr "Preparazione alla lettura dell'immagine del supporto" -#: src/read-adaptive.c:1470 src/read-linear.c:219 src/read-linear.c:229 +#: src/read-adaptive.c:1392 src/read-linear.c:215 src/read-linear.c:222 msgid "Medium: not yet determined" msgstr "Supporto: non ancora determinato" -#: src/read-adaptive.c:1485 +#: src/read-adaptive.c:1406 msgid "" "Adaptive reading is unavailable in this version.\n" "It will be re-introduced in one of the next versions." msgstr "" -#: src/read-adaptive.c:1494 +#: src/read-adaptive.c:1415 msgid "" "* Warning: Using adaptive reading without error correction data\n" "* has little advantage over linear reading, but may\n" @@ -2890,20 +2867,20 @@ msgid "" "* Please consider using linear reading instead.\n" msgstr "" -#: src/read-adaptive.c:1554 src/read-linear.c:293 +#: src/read-adaptive.c:1473 src/read-linear.c:277 #, c-format msgid "Creating new %s image.\n" msgstr "Creo una nuova immagine %s.\n" -#: src/read-adaptive.c:1559 src/read-linear.c:286 +#: src/read-adaptive.c:1476 src/read-linear.c:270 msgid "Reading new medium image." msgstr "Lettura dell'immagine del supporto." -#: src/read-adaptive.c:1581 src/read-linear.c:319 +#: src/read-adaptive.c:1495 src/read-linear.c:298 msgid "Completing existing medium image." msgstr "Completamento dell'immagine esistente del supporto." -#: src/read-adaptive.c:1615 src/read-adaptive.c:1946 +#: src/read-adaptive.c:1528 src/read-adaptive.c:1842 msgid "" "\n" "Sufficient data for reconstructing the image is available.\n" @@ -2911,7 +2888,7 @@ msgstr "" "\n" "Sono disponibili dati sufficienti per ricostruire l'immagine.\n" -#: src/read-adaptive.c:1731 src/read-linear.c:1115 +#: src/read-adaptive.c:1636 src/read-linear.c:1090 #, c-format msgid "" "Sector %: %s\n" @@ -2919,7 +2896,7 @@ msgid "" "Use the --ignore-fatal-sense option to override." msgstr "" -#: src/read-adaptive.c:1737 src/read-linear.c:1121 +#: src/read-adaptive.c:1641 src/read-linear.c:1096 #, c-format msgid "" "Sector %: %s\n" @@ -2932,28 +2909,28 @@ msgstr "" "Potrebbe non essere possibile recuperare questo errore.\n" "La lettura deve procedere ignorando questo errore?" -#: src/read-adaptive.c:1793 src/rs01-fix.c:451 src/rs02-fix.c:464 -#: src/rs03-fix.c:522 +#: src/read-adaptive.c:1697 src/rs01-fix.c:422 src/rs02-fix.c:431 +#: src/rs03-fix.c:484 #, c-format msgid "CRC error in sector %\n" msgstr "Errore CRC nel settore %\n" -#: src/read-adaptive.c:1972 src/scsi-layer.c:1776 +#: src/read-adaptive.c:1862 src/scsi-layer.c:1781 #, c-format msgid "Sectors %-%: %s\n" msgstr "Settori %-%: %s\n" -#: src/read-adaptive.c:1980 src/read-linear.c:1318 src/scsi-layer.c:1775 +#: src/read-adaptive.c:1865 src/read-linear.c:1284 src/scsi-layer.c:1780 #, c-format msgid "Sector %: %s\n" msgstr "Settore %: %s\n" -#: src/read-adaptive.c:2111 +#: src/read-adaptive.c:1992 #, c-format msgid "Only %2d.%1d%% of the image are readable or correctable" msgstr "Solo %2d.%1d%% dell'immagine è leggibile o correggibile" -#: src/read-adaptive.c:2114 +#: src/read-adaptive.c:1995 #, c-format msgid "" "\n" @@ -2964,7 +2941,7 @@ msgstr "" "%s\n" "(% leggibile, % correggibili, % ancora mancanti).\n" -#: src/read-adaptive.c:2130 +#: src/read-adaptive.c:2008 msgid "" "\n" "Good! All sectors have been read.\n" @@ -2972,12 +2949,12 @@ msgstr "" "\n" "Fatto! Tutti i settori sono stati letti.\n" -#: src/read-adaptive.c:2141 +#: src/read-adaptive.c:2016 #, c-format msgid "No unreadable intervals with >= %d sectors left." msgstr "Nessun intervallo illeggibile con >= %d settori rimasti." -#: src/read-adaptive.c:2144 +#: src/read-adaptive.c:2019 #, c-format msgid "" "\n" @@ -2988,42 +2965,42 @@ msgstr "" "%s\n" "%2d.%1d%% dell'immagine è stata letta (% settori).\n" -#: src/read-adaptive-window.c:81 +#: src/read-adaptive-window.c:84 msgid "Adaptive reading:" msgstr "Modo di lettura adattivo:" -#: src/read-adaptive-window.c:109 +#: src/read-adaptive-window.c:112 msgid "Sectors processed" msgstr "Settori processati" -#: src/read-adaptive-window.c:112 src/scsi-layer.c:1757 +#: src/read-adaptive-window.c:115 src/scsi-layer.c:1762 msgid "readable" msgstr "Leggibile" -#: src/read-adaptive-window.c:116 +#: src/read-adaptive-window.c:119 msgid "correctable" msgstr "Correggibili" -#: src/read-adaptive-window.c:120 +#: src/read-adaptive-window.c:123 msgid "missing" msgstr "Mancanti" -#: src/read-adaptive-window.c:130 +#: src/read-adaptive-window.c:133 #, c-format msgid "Readable: %d.%d%% / %d.%d%% required" msgstr "" -#: src/read-adaptive-window.c:137 +#: src/read-adaptive-window.c:140 #, c-format msgid "Total recoverable: %d.%d%%" msgstr "Totale recuperabile: %d.%d%%" -#: src/read-linear.c:126 +#: src/read-linear.c:122 #, c-format msgid "Aborted by unrecoverable error. % sectors read, % sectors unreadable/skipped so far." msgstr "Interrotto da un errore irrecuperabile. % settori letti, % settori illeggibili/saltati." -#: src/read-linear.c:182 +#: src/read-linear.c:176 msgid "" "Automatic error correction file creation\n" "is only possible after a full reading pass.\n" @@ -3031,77 +3008,77 @@ msgstr "" "La creazione del file di correzione automatica\n" "è possibile soltanto dopo un passaggio completo in lettura.\n" -#: src/read-linear.c:213 +#: src/read-linear.c:211 msgid "Scanning aborted" msgstr "Scansione annullata" -#: src/read-linear.c:218 src/read-linear.c:252 +#: src/read-linear.c:214 src/read-linear.c:244 msgid "Scanning medium for read errors." msgstr "Scansione del supporto per gli errori di lettura." -#: src/read-linear.c:260 src/read-linear.c:299 +#: src/read-linear.c:250 src/read-linear.c:281 msgid "Reading CRC information" msgstr "" -#: src/read-linear.c:368 +#: src/read-linear.c:344 #, c-format msgid "Reading aborted. Please select a different image file." msgstr "Lettura annullata. Prego selezionare un file immagine differente." -#: src/read-linear.c:388 +#: src/read-linear.c:363 #, c-format msgid "Completing image %s. Continuing with sector %.\n" msgstr "Completamento immagine %s. Continuo col settore %.\n" -#: src/read-linear.c:396 +#: src/read-linear.c:369 #, c-format msgid "Completing image %s. Only missing sectors will be read.\n" msgstr "Completamento immagine %s. Solo i settori mancanti saranno letti.\n" -#: src/read-linear.c:461 src/read-linear.c:470 +#: src/read-linear.c:442 src/read-linear.c:447 msgid "Reading CRC information from ecc data" msgstr "" -#: src/read-linear.c:501 +#: src/read-linear.c:473 msgid "done.\n" msgstr "compiuto.\n" -#: src/read-linear.c:522 src/scsi-layer.c:2103 +#: src/read-linear.c:493 src/scsi-layer.c:2108 #, c-format msgid "Waiting %d seconds for drive to spin up...\n" msgstr "Attendere %d secondi per far avviare il drive...\n" -#: src/read-linear.c:548 src/read-linear-window.c:104 +#: src/read-linear.c:515 src/read-linear-window.c:109 #, c-format msgid "Unreadable / skipped sectors: %" msgstr "Settori illeggibili / saltati: %" -#: src/read-linear.c:644 +#: src/read-linear.c:605 #, c-format msgid "Sector %: Speed increased to %4.1fx\n" msgstr "Settore %: Velocità incrementata a %4.1fx\n" -#: src/read-linear.c:647 +#: src/read-linear.c:608 #, c-format msgid "Sector %: Speed dropped to %4.1fx\n" msgstr "Settore %: Velocità diminuita a %4.1fx\n" -#: src/read-linear.c:653 +#: src/read-linear.c:614 #, c-format -msgid "Read position: %3d.%1d%% (nn.nx)" +msgid "Read position: %3d.%1d%% (nn.nx), sector %/%, % sectors read OK, % read errors, % crc errors" msgstr "" -#: src/read-linear.c:655 +#: src/read-linear.c:615 #, c-format -msgid "Read position: %3d.%1d%% (%4.1fx)" -msgstr "Settori processati: %3d.%1d%% (%4.1fx)" +msgid "Read position: %3d.%1d%% (%4.1fx), sector %/%, % sectors read OK, % read errors, % crc errors" +msgstr "" -#: src/read-linear.c:749 +#: src/read-linear.c:708 #, c-format msgid "* CRC error, sector: %lld\n" msgstr "* Errore CRC, Settore : %lld\n" -#: src/read-linear.c:879 +#: src/read-linear.c:841 #, c-format msgid "" "This ecc file requires dvdisaster-%d.%d!\n" @@ -3112,221 +3089,230 @@ msgid "" "\n" msgstr "" -#: src/read-linear.c:887 +#: src/read-linear.c:849 #, c-format msgid "" "This image requires dvdisaster-%d.%d!\n" "\n" "Proceeding could trigger incorrect behaviour.\n" -"Please visit http://www.dvdisaster.org for an upgrade.\n" +"Please upgrade dvdisaster.\n" "\n" msgstr "" # # # -#: src/read-linear.c:898 src/read-linear.c:1002 src/read-linear.c:1132 +#: src/read-linear.c:858 src/read-linear.c:973 src/read-linear.c:1106 #, c-format msgid "Aborted by user request! % sectors read, % sectors unreadable/skipped so far." msgstr "Annullato dall'utente! % settori letti, % settori illeggibili/saltati.." -#: src/read-linear.c:1060 +#: src/read-linear.c:1030 #, c-format msgid "unexpected read error in image for sector %" msgstr "Errore di lettura inatteso nell'immagine per il settore %" -#: src/read-linear.c:1148 +#: src/read-linear.c:1122 #, c-format msgid "Sector %: %3d C2 errors.%s\n" msgstr "" -#: src/read-linear.c:1285 +#: src/read-linear.c:1256 #, c-format msgid "Sector %: %s Skipping %d sectors.\n" msgstr "Settore %: %s Salto di %d settori.\n" -#: src/read-linear.c:1356 +#: src/read-linear.c:1319 #, c-format msgid "" "Trying to complete image, reading pass %d of %d.\n" "%s" msgstr "" -#: src/read-linear.c:1360 +#: src/read-linear.c:1321 #, c-format msgid "" "\n" "Trying to complete image, reading pass %d of %d.\n" msgstr "" -#: src/read-linear.c:1397 +#: src/read-linear.c:1358 #, c-format msgid "% sectors read. " msgstr "% settori letti. " -#: src/read-linear.c:1398 +#: src/read-linear.c:1359 #, c-format msgid "% sectors read; % unreadable sectors." msgstr "% settori letti; % settori illeggibili." -#: src/read-linear.c:1410 +#: src/read-linear.c:1367 +#, c-format +msgid "All sectors are readable, but %d contain defective content." +msgstr "" + +#: src/read-linear.c:1377 #, c-format msgid "All sectors successfully read, but wrong image length (% sectors difference)" msgstr "" -#: src/read-linear.c:1416 +#: src/read-linear.c:1383 msgid "All sectors successfully read, but wrong ecc md5sum." msgstr "" -#: src/read-linear.c:1422 +#: src/read-linear.c:1389 msgid "All sectors successfully read, but incomplete or damaged checksums." msgstr "" -#: src/read-linear.c:1423 +#: src/read-linear.c:1390 msgid "All sectors successfully read. Checksums match." msgstr "" -#: src/read-linear.c:1425 +#: src/read-linear.c:1392 msgid "All sectors successfully read." msgstr "Tutti i settori sono stati letti correttamente." -#: src/read-linear.c:1430 +#: src/read-linear.c:1397 #, c-format msgid "% unreadable sectors." msgstr "% settori illeggibili." -#: src/read-linear.c:1433 +#: src/read-linear.c:1400 #, c-format msgid "% CRC errors and a md5sum mismatch in the CRC section." msgstr "" -#: src/read-linear.c:1435 +#: src/read-linear.c:1402 #, c-format msgid "% CRC errors." msgstr "% errori CRC." -#: src/read-linear.c:1437 +#: src/read-linear.c:1404 #, c-format msgid "% CRC errors, % unreadable sectors." msgstr "% errori CRC, % settori illeggibili." -#: src/read-linear.c:1446 +#: src/read-linear.c:1414 msgid "Scanning finished: " msgstr "Scansione terminata:" -#: src/read-linear.c:1448 +#: src/read-linear.c:1419 msgid "Reading finished: " msgstr "Lettura terminata:" -#: src/read-linear.c:1462 +#: src/read-linear.c:1432 src/read-linear.c:1443 #, c-format msgid "" "%d sectors missing at the end of the disc.\n" "This is okay if the CD was written in TAO (track at once) mode.\n" -"The Image will be truncated accordingly. See the manual for details.\n" +"%s" msgstr "" -"%d mancanti alla fine del disco.\n" -"Questo è corretto se il disco è stato scritto in modalità TAO (track at once).\n" -"L'imagine sarà aggiustata di conseguenza.Leggere il manuale per i dettagli.\n" -#: src/read-linear.c:1469 -#, c-format +#: src/read-linear.c:1437 +msgid "See the manual for details.\n" +msgstr "" + +#: src/read-linear.c:1439 +msgid "The Image will be truncated accordingly. See the manual for details.\n" +msgstr "" + +#: src/read-linear.c:1448 +msgid "" +"See the manual for details.\n" +"Use the --dao option to disable this message.\n" +msgstr "" + +#: src/read-linear.c:1451 msgid "" -"%d sectors missing at the end of the disc.\n" -"This is okay if the CD was written in TAO (track at once) mode.\n" "The Image will be truncated accordingly. See the manual for details.\n" "Use the --dao option to disable image truncating.\n" msgstr "" -"%d mancanti alla fine del disco.\n" -"Questo è corretto se il disco è stato scritto in modalità TAO (track at once).\n" -"L'imagine sarà aggiustata di conseguenza.Leggere il manuale per i dettagli.\n" -"Usare l'opzione --dao per disabilitare l'aggiustamento dell'immagine.\n" -#: src/read-linear-window.c:97 +#: src/read-linear-window.c:102 #, c-format msgid "Current Speed: %d.%dx" msgstr "Velocità corrente: %d.%dx" -#: src/read-linear-window.c:254 src/read-linear-window.c:323 +#: src/read-linear-window.c:264 src/read-linear-window.c:333 msgid "Already present" msgstr "Già presente" -#: src/read-linear-window.c:288 src/read-linear-window.c:330 -#: src/rs01-verify.c:126 src/rs02-verify.c:121 src/rs03-verify.c:130 +#: src/read-linear-window.c:298 src/read-linear-window.c:340 +#: src/rs01-verify.c:130 src/rs02-verify.c:123 src/rs03-verify.c:133 msgid "Sectors with CRC errors" msgstr "Settori con errori CRC" -#: src/read-linear-window.c:311 +#: src/read-linear-window.c:321 msgid "Medium state" msgstr "Stato del supporto" -#: src/read-linear-window.c:319 +#: src/read-linear-window.c:329 msgid "Not touched this time" msgstr "Non toccato questa volta" -#: src/read-linear-window.c:326 +#: src/read-linear-window.c:336 msgid "Successfully read" msgstr "letto con successo" -#: src/read-linear-window.c:333 +#: src/read-linear-window.c:343 msgid "Unreadable / skipped" msgstr "Illeggibili / Saltati" -#: src/read-linear-window.c:444 +#: src/read-linear-window.c:454 msgid "Speed" msgstr "Velocità" -#: src/recover-raw.c:65 +#: src/recover-raw.c:66 #, c-format msgid "Sector % dumped to %s\n" msgstr "" -#: src/rs01-common.c:252 src/rs02-verify.c:831 src/rs03-verify.c:1228 +#: src/rs01-common.c:251 src/rs02-verify.c:806 src/rs03-verify.c:1144 #, c-format msgid "- testing sectors : %3d%%" msgstr "- Test dei settori : %3d%%" -#: src/rs01-common.c:253 +#: src/rs01-common.c:252 #, c-format msgid "Scanning image sectors: %3d%%" msgstr "Scansione dei settori dell'immagine : %3d%%" -#: src/rs01-common.c:308 src/rs02-verify.c:784 +#: src/rs01-common.c:305 src/rs02-verify.c:762 #, c-format msgid "* missing sector : %\n" msgstr "* Settore mancante : %\n" -#: src/rs01-common.c:309 src/rs02-verify.c:785 +#: src/rs01-common.c:306 src/rs02-verify.c:763 #, c-format msgid "* missing sectors : % - %\n" msgstr "* Settori mancanti : % - %\n" -#: src/rs01-common.c:327 src/rs01-common.c:399 src/rs01-create.c:343 +#: src/rs01-common.c:324 src/rs01-common.c:395 src/rs01-create.c:316 #, c-format msgid "Error writing CRC information: %s" msgstr "Errore di scrittura nelle informazioni CRC: %s" -#: src/rs01-common.c:356 src/rs02-verify.c:797 src/rs03-verify.c:1202 +#: src/rs01-common.c:353 src/rs02-verify.c:775 src/rs03-verify.c:1118 #, c-format msgid "* CRC error, sector: %\n" msgstr "" -#: src/rs01-create.c:63 +#: src/rs01-create.c:65 #, c-format msgid "Redundancy %4.1f%% out of useful range [3.2%%..64.5%%]" msgstr "Ridondanza %4.1f%% al di fuori dell'intervallo utilizzabile [3.2%%..64.5%%]" -#: src/rs01-create.c:76 src/rs03-common.c:467 +#: src/rs01-create.c:78 src/rs03-common.c:468 #, c-format msgid "Ecc file size %m out of useful range [% .. %]" msgstr "La dimensione del file Ecc %m è al di fuori dell'intervallo utilizzabile [% .. %]" -#: src/rs01-create.c:91 +#: src/rs01-create.c:93 #, c-format msgid "Redundancy %d out of useful range [8..100]." msgstr "Ridondanza %d al di fuori dell'intervallo utilizzabile [8..100]." -#: src/rs01-create.c:107 src/rs01-create.c:112 +#: src/rs01-create.c:105 src/rs01-create.c:106 #, c-format msgid "" "\n" @@ -3335,27 +3321,27 @@ msgstr "" "\n" "File immagine %s rimosso.\n" -#: src/rs01-create.c:123 +#: src/rs01-create.c:113 #, c-format msgid "Image file %s not deleted: %s\n" msgstr "Il file immagine %s non è stato rimosso: %s\n" -#: src/rs01-create.c:160 src/rs01-fix.c:81 src/rs02-create.c:63 -#: src/rs02-fix.c:57 src/rs03-create.c:154 src/rs03-fix.c:57 +#: src/rs01-create.c:147 src/rs01-fix.c:79 src/rs02-create.c:61 +#: src/rs02-fix.c:55 src/rs03-create.c:152 src/rs03-fix.c:54 #, c-format msgid "Aborted by unrecoverable error." msgstr "Interrotto da un errore irrecuperabile." -#: src/rs01-create.c:231 +#: src/rs01-create.c:212 msgid "Error correction file creation aborted" msgstr "La creazione del File di correzione errori è stata interrotta" -#: src/rs01-create.c:254 +#: src/rs01-create.c:235 #, c-format msgid "Encoding with Method RS01: %d roots, %4.1f%% redundancy." msgstr "Sto codificando con il Metodo RS01: %d Radici, %4.1f%% Ridondanza." -#: src/rs01-create.c:261 src/rs03-create.c:1373 +#: src/rs01-create.c:240 src/rs03-create.c:1331 #, c-format msgid "" "Creating the error correction file.\n" @@ -3364,49 +3350,49 @@ msgstr "" "Creazione del file di correzione errori.\n" "%s" -#: src/rs01-create.c:275 src/rs03-create.c:297 +#: src/rs01-create.c:252 src/rs03-create.c:284 #, c-format msgid "Aborted to keep existing ecc file." msgstr "" -#: src/rs01-create.c:291 src/rs02-create.c:1080 src/rs03-create.c:1329 +#: src/rs01-create.c:267 src/rs02-create.c:1036 src/rs03-create.c:1285 #, c-format msgid "Image file %s: %s." msgstr "" -#: src/rs01-create.c:299 src/rs03-create.c:1348 +#: src/rs01-create.c:275 src/rs03-create.c:1304 msgid "No error correction file specified!\n" msgstr "" -#: src/rs01-create.c:312 +#: src/rs01-create.c:288 #, c-format msgid "Writing sector checksums: %3d%%" msgstr "Scrittura checksum settori: %3d%%" -#: src/rs01-create.c:317 +#: src/rs01-create.c:291 msgid "1. Writing image sector checksums:" msgstr "1. Scrittura checksum settori:" -#: src/rs01-create.c:369 src/rs01-window.c:131 +#: src/rs01-create.c:335 src/rs01-window.c:128 msgid "1. Calculating image sector checksums:" msgstr "1. Calcolo del checksum dei settori dell'immagine:" -#: src/rs01-create.c:388 src/rs01-create.c:538 src/rs01-create.c:636 +#: src/rs01-create.c:352 src/rs01-create.c:493 src/rs01-create.c:585 #, c-format msgid "Aborted by user request! (partial error correction file removed)" msgstr "Annullato dall'utente! (Rimosso file di correzione errori parziale)" -#: src/rs01-create.c:401 +#: src/rs01-create.c:361 #, c-format msgid "% sectors unread or missing due to errors.\n" msgstr "% settori non letti o persi a causa di errori.\n" -#: src/rs01-create.c:458 +#: src/rs01-create.c:414 #, c-format msgid "Failed skipping ecc+crc header: %s" msgstr "" -#: src/rs01-create.c:485 src/rs02-create.c:553 +#: src/rs01-create.c:441 src/rs02-create.c:519 #, c-format msgid "" "Failed allocating memory for I/O cache.\n" @@ -3414,24 +3400,24 @@ msgid "" "Try reducing it.\n" msgstr "" -#: src/rs01-create.c:619 src/rs01-create.c:749 src/rs01-create.c:1049 -#: src/rs02-create.c:1005 src/rs03-create.c:1157 +#: src/rs01-create.c:569 src/rs01-create.c:693 src/rs01-create.c:987 +#: src/rs02-create.c:964 src/rs03-create.c:1121 #, c-format msgid "Ecc generation: %3d.%1d%%" msgstr "Generazione Ecc: %3d.%1d%%" -#: src/rs01-create.c:769 src/rs01-fix.c:219 src/rs01-fix.c:243 -#: src/rs01-fix.c:295 src/rs01-fix.c:332 src/rs01-fix.c:352 src/rs01-fix.c:407 -#: src/rs01-verify.c:457 src/rs01-verify.c:916 src/rs02-create.c:130 -#: src/rs02-fix.c:260 src/rs02-fix.c:281 src/rs02-fix.c:372 -#: src/rs02-verify.c:741 src/rs03-create.c:269 src/rs03-fix.c:278 -#: src/rs03-fix.c:327 src/rs03-fix.c:350 src/rs03-fix.c:429 -#: src/rs03-verify.c:548 src/rs03-verify.c:1096 +#: src/rs01-create.c:712 src/rs01-fix.c:207 src/rs01-fix.c:232 +#: src/rs01-fix.c:278 src/rs01-fix.c:308 src/rs01-fix.c:325 src/rs01-fix.c:378 +#: src/rs01-verify.c:440 src/rs01-verify.c:812 src/rs02-create.c:118 +#: src/rs02-fix.c:233 src/rs02-fix.c:253 src/rs02-fix.c:339 +#: src/rs02-verify.c:719 src/rs03-create.c:257 src/rs03-fix.c:252 +#: src/rs03-fix.c:295 src/rs03-fix.c:317 src/rs03-fix.c:391 +#: src/rs03-verify.c:538 src/rs03-verify.c:1012 #, c-format msgid "Aborted by user request!" msgstr "Annullato dall'utente!" -#: src/rs01-create.c:1062 +#: src/rs01-create.c:1000 #, c-format msgid "" "could not write to ecc file \"%s\":\n" @@ -3440,7 +3426,7 @@ msgstr "" "Impossibile scrivere il file Ecc: \"%s\":\n" "%s" -#: src/rs01-create.c:1077 +#: src/rs01-create.c:1015 #, c-format msgid "" "Can't write ecc header:\n" @@ -3449,12 +3435,12 @@ msgstr "" "Impossibile scrivere lo header Ecc:\n" "%s" -#: src/rs01-create.c:1085 src/rs02-create.c:1177 src/rs03-create.c:1446 +#: src/rs01-create.c:1023 src/rs02-create.c:1127 src/rs03-create.c:1404 #, c-format msgid "Ecc generation: 100.0%%\n" msgstr "Generazione Ecc: 100.0%%\n" -#: src/rs01-create.c:1086 src/rs03-create.c:1453 +#: src/rs01-create.c:1024 src/rs03-create.c:1411 #, c-format msgid "" "Error correction file \"%s\" created.\n" @@ -3463,7 +3449,7 @@ msgstr "" "Il file per la correzione dell'errore \"%s\" è stato generato.\n" "Siate sicuri di tenerlo su un supporto affidabile!\n" -#: src/rs01-create.c:1095 src/rs03-create.c:1482 +#: src/rs01-create.c:1031 src/rs03-create.c:1436 msgid "" "The error correction file has been successfully created.\n" "Make sure to keep this file on a reliable medium." @@ -3471,27 +3457,27 @@ msgstr "" "Il file per la correzione dell'errore è stato generato.\n" "Siate sicuri di tenerlo su un supporto affidabile." -#: src/rs01-fix.c:39 src/rs02-fix.c:448 +#: src/rs01-fix.c:41 src/rs02-fix.c:415 #, c-format msgid "Failed seeking in crc area: %s" msgstr "" -#: src/rs01-fix.c:44 src/rs02-fix.c:451 src/rs02-verify.c:444 +#: src/rs01-fix.c:46 src/rs02-fix.c:418 src/rs02-verify.c:438 #, c-format msgid "problem reading crc data: %s" msgstr "Ci sono problemi di lettura nei dati crc: %s" -#: src/rs01-fix.c:148 src/rs02-fix.c:190 src/rs03-fix.c:189 +#: src/rs01-fix.c:138 src/rs02-fix.c:169 src/rs03-fix.c:166 msgid "Repairing of image aborted" msgstr "Riparazione dell'immagine interrotta" -#: src/rs01-fix.c:154 +#: src/rs01-fix.c:144 #, c-format msgid "Error correction file using Method RS01, %d roots, %4.1f%% redundancy." msgstr "Correzione di errore file con metodo RS01, %d Radici, %4.1f%% Ridondanza." -#: src/rs01-fix.c:161 src/rs02-fix.c:197 src/rs02-fix.c:229 src/rs03-fix.c:200 -#: src/rs03-fix.c:252 +#: src/rs01-fix.c:151 src/rs02-fix.c:174 src/rs02-fix.c:205 src/rs03-fix.c:175 +#: src/rs03-fix.c:226 #, c-format msgid "" "Repairing the image.\n" @@ -3500,7 +3486,7 @@ msgstr "" "Riparazione dell'immagine.\n" "%s" -#: src/rs01-fix.c:166 src/rs02-fix.c:235 src/rs03-fix.c:258 +#: src/rs01-fix.c:156 src/rs02-fix.c:211 src/rs03-fix.c:232 #, c-format msgid "" "\n" @@ -3509,7 +3495,7 @@ msgstr "" "\n" "\"Modalità Fix(%s): I settori riparabili saranno riparati nell'immagine.\n" -#: src/rs01-fix.c:201 +#: src/rs01-fix.c:191 #, c-format msgid "" "The image file is %lld sectors longer as noted in the\n" @@ -3526,7 +3512,7 @@ msgstr "" "\n" "%s" -#: src/rs01-fix.c:209 src/rs02-fix.c:250 src/rs03-fix.c:317 +#: src/rs01-fix.c:199 src/rs02-fix.c:225 src/rs03-fix.c:287 #, c-format msgid "" "Image file is % sectors longer than expected.\n" @@ -3537,17 +3523,17 @@ msgstr "" "Si assume di utilizzare un supporto TAO.\n" "% Settori saranno tagliati fuori dalla fine dell'immagine.\n" -#: src/rs01-fix.c:238 src/rs02-fix.c:276 src/rs03-fix.c:345 +#: src/rs01-fix.c:227 src/rs02-fix.c:248 src/rs03-fix.c:312 msgid "Is it okay to remove the superfluous sectors?" msgstr "Tutto OK se rimuovo i settori superflui?" -#: src/rs01-fix.c:255 src/rs01-fix.c:277 src/rs02-fix.c:290 src/rs02-fix.c:308 -#: src/rs03-fix.c:361 src/rs03-fix.c:381 +#: src/rs01-fix.c:244 src/rs01-fix.c:261 src/rs02-fix.c:262 src/rs02-fix.c:276 +#: src/rs03-fix.c:328 src/rs03-fix.c:344 #, c-format msgid "Image has been truncated by % sectors.\n" msgstr "L'immagine è stata troncata di % settori.\n" -#: src/rs01-fix.c:268 src/rs02-fix.c:302 src/rs03-fix.c:373 +#: src/rs01-fix.c:252 src/rs02-fix.c:270 src/rs03-fix.c:336 msgid "" "Add the --truncate option to the program call\n" "to have the superfluous sectors removed." @@ -3555,7 +3541,7 @@ msgstr "" "Aggiungere l'opzione --truncate nei parametri del\n" "programma per rimuovere i settori superflui." -#: src/rs01-fix.c:287 src/rs03-fix.c:270 +#: src/rs01-fix.c:270 src/rs03-fix.c:244 #, c-format msgid "" "The image file is %d bytes longer than noted\n" @@ -3565,7 +3551,7 @@ msgstr "" "Il file immagine è %d bytes più lungo di quanto riportato\n" "nel file ecc. Tutto OK se rimuovo i bytes superflui?\n" -#: src/rs01-fix.c:308 src/rs03-fix.c:291 +#: src/rs01-fix.c:286 src/rs03-fix.c:261 #, c-format msgid "" "The image file is %d bytes longer than noted\n" @@ -3578,12 +3564,12 @@ msgstr "" "Aggiungere l'opzione --truncate nei parametri del\n" "programma per rimuovere i bytes superflui." -#: src/rs01-fix.c:317 src/rs03-fix.c:300 +#: src/rs01-fix.c:295 src/rs03-fix.c:270 #, c-format msgid "Image has been truncated by %d bytes.\n" msgstr "L'immagine è stata troncata di %d bytes.\n" -#: src/rs01-fix.c:325 +#: src/rs01-fix.c:303 msgid "" "Image file appears to be truncated.\n" "Consider completing it with another reading pass before going on.\n" @@ -3591,7 +3577,7 @@ msgstr "" "Il file immagine sembra essere interrotto.\n" "Si consiglia di completarlo con un'altro passaggio -r prima di procedere.\n" -#: src/rs01-fix.c:344 +#: src/rs01-fix.c:319 #, c-format msgid "" "Sector %d is missing. Can not compare image and ecc fingerprints.\n" @@ -3600,7 +3586,7 @@ msgstr "" "Il settore %d è mancante. Non posso comparare l'impronta ecc con l'immagine.\n" "Verifica che l'immagine ed il file ecc si appartengono reciprocamente.\n" -#: src/rs01-fix.c:360 +#: src/rs01-fix.c:332 msgid "" "Fingerprints of image and ecc file do not match.\n" "Image and ecc file do not belong together.\n" @@ -3608,17 +3594,17 @@ msgstr "" "L'impronta dell'immagine e del file ecc non coincidono.\n" "L'immagine ed il file ecc non si appartengono.\n" -#: src/rs01-fix.c:479 +#: src/rs01-fix.c:447 #, c-format msgid "* %3d unrepairable sectors: " msgstr "* %3d settori non riparabili:" -#: src/rs01-fix.c:527 +#: src/rs01-fix.c:495 #, c-format msgid "Failed seeking in ecc area: %s" msgstr "" -#: src/rs01-fix.c:531 +#: src/rs01-fix.c:499 #, c-format msgid "" "Can't read ecc file:\n" @@ -3627,27 +3613,27 @@ msgstr "" "Impossibile leggere il file ecc:\n" "%s" -#: src/rs01-fix.c:727 +#: src/rs01-fix.c:695 #, c-format msgid "-> Error located in sector % at byte %4d (value %02x '%c', expected %02x '%c')\n" msgstr "-> Errore nel settore % al Byte %4d (Valore %02x '%c', previsto %02x '%c')\n" -#: src/rs01-fix.c:734 +#: src/rs01-fix.c:702 #, c-format msgid "Unexpected byte error in sector %, byte %d\n" msgstr "Errore di byte inaspettato nel settore %, Byte %d\n" -#: src/rs01-fix.c:740 +#: src/rs01-fix.c:708 #, c-format msgid "Bad error location %d; corrupted .ecc file?\n" msgstr "Posizionamento sbagliato dell'errore %d; file .ecc corrotto?\n" -#: src/rs01-fix.c:750 src/rs02-fix.c:752 src/rs03-fix.c:819 +#: src/rs01-fix.c:718 src/rs02-fix.c:716 src/rs03-fix.c:778 #, c-format msgid " %3d repaired sectors: " msgstr " %3d Settori riparati: " -#: src/rs01-fix.c:769 src/rs02-fix.c:794 src/rs03-fix.c:870 +#: src/rs01-fix.c:737 src/rs02-fix.c:758 src/rs03-fix.c:829 #, c-format msgid "" "could not write medium sector %:\n" @@ -3656,175 +3642,175 @@ msgstr "" "Impossibile scrivere il settore % della periferica:\n" "%s" -#: src/rs01-fix.c:798 src/rs02-fix.c:835 src/rs03-fix.c:927 +#: src/rs01-fix.c:766 src/rs02-fix.c:797 src/rs03-fix.c:886 #, c-format msgid "Ecc progress: %3d.%1d%%" msgstr "Avanzamento Ecc: %3d.%1d%%" -#: src/rs01-fix.c:810 src/rs02-fix.c:849 src/rs03-fix.c:939 +#: src/rs01-fix.c:778 src/rs02-fix.c:811 src/rs03-fix.c:898 #, c-format msgid "Ecc progress: 100.0%%\n" msgstr "Avanzamento Ecc: 100.0%%\n" -#: src/rs01-fix.c:811 +#: src/rs01-fix.c:779 #, c-format msgid "Repaired sectors: % \n" msgstr "Settori riparati: % \n" -#: src/rs01-fix.c:813 src/rs02-fix.c:854 src/rs03-fix.c:944 +#: src/rs01-fix.c:781 src/rs02-fix.c:816 src/rs03-fix.c:905 #, c-format msgid "Unrepaired sectors: %\n" msgstr "Settori non riparati: %\n" -#: src/rs01-fix.c:817 src/rs02-fix.c:858 src/rs03-fix.c:948 +#: src/rs01-fix.c:783 src/rs02-fix.c:818 src/rs03-fix.c:907 #, c-format msgid "Image sectors could not be fully restored (% repaired; % unrepaired)" msgstr "I settori dell'immagine non possono essere comopletamente recuperati (% riparati; % non riparati)" -#: src/rs01-fix.c:824 src/rs02-fix.c:865 src/rs03-fix.c:956 +#: src/rs01-fix.c:789 src/rs02-fix.c:824 src/rs03-fix.c:914 msgid "Good! All sectors are already present." msgstr "Bene! Tutti i settori sono già presenti." -#: src/rs01-fix.c:828 src/rs02-fix.c:869 src/rs03-fix.c:961 +#: src/rs01-fix.c:793 src/rs02-fix.c:828 src/rs03-fix.c:919 msgid "Good! All sectors are repaired." msgstr "Bene! Tutti i settori sono stati riparati." -#: src/rs01-fix.c:833 src/rs02-fix.c:874 src/rs03-fix.c:967 +#: src/rs01-fix.c:798 src/rs02-fix.c:833 src/rs03-fix.c:925 #, c-format msgid "Erasure counts per ecc block: avg = %.1f; worst = %d.\n" msgstr "Conteggio cancellature per blocco ecc: Medio = %.1f; Peggiore = %d.\n" -#: src/rs01-fix.c:839 src/rs02-fix.c:880 src/rs03-fix.c:973 +#: src/rs01-fix.c:803 src/rs02-fix.c:838 src/rs03-fix.c:930 msgid "Repair results:" msgstr "Risultati della riparazione:" -#: src/rs01-verify.c:48 src/rs01-verify.c:417 src/rs03-verify.c:61 +#: src/rs01-verify.c:50 src/rs01-verify.c:410 src/rs03-verify.c:64 msgid "n/a" msgstr "Non disponibile" -#: src/rs01-verify.c:129 src/rs01-verify.c:150 src/rs02-verify.c:124 -#: src/rs02-verify.c:145 src/rs03-verify.c:133 src/rs03-verify.c:154 +#: src/rs01-verify.c:133 src/rs01-verify.c:154 src/rs02-verify.c:126 +#: src/rs02-verify.c:147 src/rs03-verify.c:136 src/rs03-verify.c:157 msgid "Missing sectors" msgstr "Settori mancanti" -#: src/rs01-verify.c:193 src/rs02-verify.c:182 +#: src/rs01-verify.c:197 src/rs02-verify.c:184 msgid "Image file summary" msgstr "Sommario file immagine" -#: src/rs01-verify.c:202 src/rs03-verify.c:282 +#: src/rs01-verify.c:206 src/rs03-verify.c:285 msgid "No image present." msgstr "File immagine non presente." -#: src/rs01-verify.c:212 src/rs01-verify.c:302 src/rs02-verify.c:192 -#: src/rs02-verify.c:298 src/rs03-verify.c:293 +#: src/rs01-verify.c:216 src/rs01-verify.c:306 src/rs02-verify.c:194 +#: src/rs02-verify.c:300 src/rs03-verify.c:296 msgid "Medium sectors:" msgstr "Settori del Media:" -#: src/rs01-verify.c:220 +#: src/rs01-verify.c:224 msgid "Checksum errors:" msgstr "Errori checksum:" -#: src/rs01-verify.c:228 +#: src/rs01-verify.c:232 msgid "Missing Sectors:" msgstr "Settori mancanti:" -#: src/rs01-verify.c:236 src/rs01-verify.c:310 +#: src/rs01-verify.c:240 src/rs01-verify.c:314 msgid "Image checksum:" msgstr "Immagine checksum:" -#: src/rs01-verify.c:248 src/rs02-verify.c:244 src/rs03-verify.c:262 +#: src/rs01-verify.c:252 src/rs02-verify.c:246 src/rs03-verify.c:265 msgid "Image state" msgstr "Stato immagine" -#: src/rs01-verify.c:259 +#: src/rs01-verify.c:263 msgid "Error correction file summary" msgstr "Sommario del file di Correzione errore" -#: src/rs01-verify.c:278 src/rs02-verify.c:274 src/rs03-verify.c:222 +#: src/rs01-verify.c:282 src/rs02-verify.c:276 src/rs03-verify.c:225 msgid "Created by:" msgstr "Creato da:" -#: src/rs01-verify.c:286 src/rs02-verify.c:282 src/rs03-verify.c:213 +#: src/rs01-verify.c:290 src/rs02-verify.c:284 src/rs03-verify.c:216 msgid "Method:" msgstr "Metodo:" -#: src/rs01-verify.c:294 src/rs02-verify.c:290 src/rs03-verify.c:231 +#: src/rs01-verify.c:298 src/rs02-verify.c:292 src/rs03-verify.c:234 msgid "Requires:" msgstr "Richiede:" -#: src/rs01-verify.c:318 src/rs03-verify.c:249 +#: src/rs01-verify.c:322 src/rs03-verify.c:252 msgid "Fingerprint:" msgstr "Impronta digitale:" -#: src/rs01-verify.c:326 +#: src/rs01-verify.c:330 msgid "Ecc blocks:" msgstr "Blocchi Ecc:" -#: src/rs01-verify.c:334 src/rs02-verify.c:50 src/rs02-verify.c:322 +#: src/rs01-verify.c:338 src/rs02-verify.c:52 src/rs02-verify.c:324 msgid "Ecc checksum:" msgstr "Ecc checksum:" -#: src/rs01-verify.c:398 +#: src/rs01-verify.c:397 msgid "Comparison aborted" msgstr "Comparazione abortita" -#: src/rs01-verify.c:405 src/rs01-verify.c:560 +#: src/rs01-verify.c:402 src/rs01-verify.c:523 msgid "Comparing image and error correction files." msgstr "Compara i file di immagine e correzione di errore" -#: src/rs01-verify.c:406 src/rs03-verify.c:737 src/rs03-verify.c:748 +#: src/rs01-verify.c:403 src/rs03-verify.c:700 src/rs03-verify.c:708 msgid "- Checking image file -" msgstr "- Controllo il file immagine -" -#: src/rs01-verify.c:424 src/rs01-verify.c:567 src/rs01-verify.c:583 +#: src/rs01-verify.c:417 src/rs01-verify.c:529 src/rs01-verify.c:542 msgid "not present\n" msgstr "Non presente\n" -#: src/rs01-verify.c:434 src/rs02-verify.c:620 +#: src/rs01-verify.c:424 src/rs02-verify.c:601 #, c-format msgid "present, contains % medium sectors.\n" msgstr "presente, contiene % settori della periferica\n" -#: src/rs01-verify.c:441 +#: src/rs01-verify.c:428 #, c-format msgid "present, contains % medium sectors and %d bytes.\n" msgstr "presente, contiene % settori della periferica e %d bytes.\n" -#: src/rs01-verify.c:445 src/rs01-verify.c:726 src/rs01-verify.c:749 +#: src/rs01-verify.c:430 src/rs01-verify.c:659 src/rs01-verify.c:676 #, c-format msgid "% sectors + %d bytes" msgstr "% settori + %d bytes" -#: src/rs01-verify.c:471 +#: src/rs01-verify.c:454 #, c-format msgid "* truncated image : % sectors too short\n" msgstr "* immagine troncata : % settori troppo corti\n" -#: src/rs01-verify.c:475 +#: src/rs01-verify.c:456 #, c-format msgid "% (% sectors too short)" msgstr "% (% settori troppo corti)" -#: src/rs01-verify.c:499 +#: src/rs01-verify.c:478 #, c-format msgid "* image too long : % excess sectors\n" msgstr "* Immagine troppo lunga: % settori in eccesso\n" -#: src/rs01-verify.c:503 +#: src/rs01-verify.c:480 #, c-format msgid "% (% excess sectors)" msgstr "% (% settori in eccesso)" -#: src/rs01-verify.c:506 src/rs01-verify.c:549 +#: src/rs01-verify.c:483 src/rs01-verify.c:515 #, c-format msgid "Bad image." msgstr "Immagine difettosa." -#: src/rs01-verify.c:512 src/rs02-verify.c:707 src/rs03-verify.c:1060 +#: src/rs01-verify.c:487 src/rs02-verify.c:686 src/rs03-verify.c:973 msgid "* quick mode : image NOT scanned\n" msgstr "" -#: src/rs01-verify.c:520 +#: src/rs01-verify.c:495 #, c-format msgid "" "- good image : all sectors present\n" @@ -3833,12 +3819,12 @@ msgstr "" "- Buona immagine : Tutti i settori presenti\n" "- Immagine md5sum : %s\n" -#: src/rs01-verify.c:524 src/rs02-verify.c:926 src/rs03-verify.c:1388 +#: src/rs01-verify.c:497 src/rs02-verify.c:904 src/rs03-verify.c:1299 #, c-format msgid "Good image." msgstr "Buona immagine." -#: src/rs01-verify.c:530 +#: src/rs01-verify.c:501 #, c-format msgid "" "* suspicious image : all sectors present, but % CRC errors\n" @@ -3847,74 +3833,74 @@ msgstr "" "* Immagine sospetta : tutti i settori presenti, ma ci sono % errori CRC\n" "- Immagine md5sum : %s\n" -#: src/rs01-verify.c:535 +#: src/rs01-verify.c:504 #, c-format msgid "Image complete, but contains checksum errors!" msgstr "Immagine completa, ma contiene errori nel checksum!" -#: src/rs01-verify.c:543 src/rs02-verify.c:892 +#: src/rs01-verify.c:510 src/rs02-verify.c:871 #, c-format msgid "* BAD image : % sectors missing\n" msgstr "* Immagine DIFETTOSA: % settori mancanti\n" -#: src/rs01-verify.c:544 src/rs02-verify.c:896 src/rs03-verify.c:1320 +#: src/rs01-verify.c:511 src/rs02-verify.c:875 src/rs03-verify.c:1240 #, c-format msgid "* BAD image : % sectors missing, % CRC errors\n" msgstr "* Immagine DIFETTOSA: % settori mancanti, % errori CRC\n" -#: src/rs01-verify.c:561 src/rs03-verify.c:1275 +#: src/rs01-verify.c:524 src/rs03-verify.c:1194 msgid "- Checking ecc file -" msgstr "- Controllo il file ecc -" -#: src/rs01-verify.c:571 src/rs01-verify.c:601 +#: src/rs01-verify.c:531 src/rs01-verify.c:559 msgid "No error correction file present." msgstr "File ecc non presente." -#: src/rs01-verify.c:580 +#: src/rs01-verify.c:539 msgid "permission denied\n" msgstr "" -#: src/rs01-verify.c:586 +#: src/rs01-verify.c:545 msgid "invalid\n" msgstr "" -#: src/rs01-verify.c:589 +#: src/rs01-verify.c:548 msgid "defective header (unusable)\n" msgstr "" -#: src/rs01-verify.c:592 +#: src/rs01-verify.c:551 msgid "unknown codec (unusable)\n" msgstr "" -#: src/rs01-verify.c:595 +#: src/rs01-verify.c:554 msgid "unusable\n" msgstr "" -#: src/rs01-verify.c:625 src/rs01-verify.c:639 src/rs02-verify.c:957 -#: src/rs02-verify.c:972 +#: src/rs01-verify.c:582 src/rs01-verify.c:592 src/rs02-verify.c:930 +#: src/rs02-verify.c:941 msgid "created by dvdisaster" msgstr "Creato da dvdisaster" -#: src/rs01-verify.c:651 +#: src/rs01-verify.c:601 msgid "created by dvdisaster-0.41.x.\n" msgstr "Creato da dvdisaster-0.41.x.\n" -#: src/rs01-verify.c:663 src/rs02-verify.c:988 src/rs03-verify.c:806 +#: src/rs01-verify.c:610 src/rs02-verify.c:954 src/rs03-verify.c:762 #, c-format msgid "- method : %4s, %d roots, %4.1f%% redundancy.\n" msgstr "- Metodo : %4s, %d radici, %4.1f%% Ridondanza.\n" -#: src/rs01-verify.c:668 src/rs02-verify.c:994 src/rs03-verify.c:812 +#: src/rs01-verify.c:614 src/rs02-verify.c:958 src/rs03-verify.c:766 #, c-format msgid "%4s, %d roots, %4.1f%% redundancy" msgstr "%4s, %d radici, %4.1f%% ridondanza" -#: src/rs01-verify.c:676 src/rs02-verify.c:1002 +#: src/rs01-verify.c:621 src/rs02-verify.c:965 #, c-format msgid "- requires : dvdisaster-%d.%d (good)\n" msgstr "- richiede : dvdisaster-%d.%d (buono)\n" -#: src/rs01-verify.c:687 src/rs02-verify.c:1015 +#: src/rs01-verify.c:629 src/rs02-verify.c:975 #, c-format msgid "" "* requires : dvdisaster-%d.%d (BAD)\n" @@ -3922,205 +3908,205 @@ msgid "" "* : Please upgrade dvdisaster.\n" msgstr "" -#: src/rs01-verify.c:701 src/rs02-verify.c:1030 src/rs03-verify.c:883 +#: src/rs01-verify.c:641 src/rs02-verify.c:989 src/rs03-verify.c:824 #, c-format msgid "Please upgrade your version of dvdisaster!" msgstr "Vi preghiamo di aggiornare la vostra versione di dvdisaster!" -#: src/rs01-verify.c:714 +#: src/rs01-verify.c:652 #, c-format msgid "- medium sectors : %\n" msgstr "* Settori del Media : %\n" -#: src/rs01-verify.c:721 +#: src/rs01-verify.c:656 #, c-format msgid "- medium sectors : % sectors + %d bytes\n" msgstr "" -#: src/rs01-verify.c:737 +#: src/rs01-verify.c:669 #, c-format msgid "- medium sectors : % (good)\n" msgstr "- settori del media : % (buoni)\n" -#: src/rs01-verify.c:744 +#: src/rs01-verify.c:673 #, c-format msgid "- medium sectors : % sectors + %d bytes (good)\n" msgstr "- settori del media : % settori + %d bytes (buoni)\n" -#: src/rs01-verify.c:758 src/rs02-verify.c:1054 +#: src/rs01-verify.c:684 src/rs02-verify.c:1009 #, c-format msgid "* medium sectors : % (BAD, perhaps TAO/DAO mismatch)\n" msgstr "* Settori del Media : % (Difettosi, probabile incongruenza TAO/DAO)\n" -#: src/rs01-verify.c:771 src/rs02-verify.c:1056 +#: src/rs01-verify.c:696 src/rs02-verify.c:1011 #, c-format msgid "* medium sectors : % (BAD)\n" msgstr "* Settori del Media : % (Difettosi)\n" -#: src/rs01-verify.c:777 src/rs01-verify.c:790 +#: src/rs01-verify.c:700 src/rs01-verify.c:709 #, c-format msgid "Image size does not match error correction file." msgstr "La dimensione dell'immagine non corrisponde al file di correzione errore." -#: src/rs01-verify.c:782 +#: src/rs01-verify.c:703 #, c-format msgid "* medium sectors : % sectors + %d bytes (BAD)\n" msgstr "* settori del media : % settori + %d bytes (Difettosi)\n" -#: src/rs01-verify.c:787 +#: src/rs01-verify.c:706 #, c-format msgid "% sectors + %d bytes" msgstr "" -#: src/rs01-verify.c:804 +#: src/rs01-verify.c:722 #, c-format msgid "- image md5sum : %s (good)\n" msgstr "- Immagine md5sum : %s (buona)\n" -#: src/rs01-verify.c:805 +#: src/rs01-verify.c:726 #, c-format msgid "* image md5sum : %s (BAD)\n" msgstr "* immagine md5sum : %s (Difettosa)\n" -#: src/rs01-verify.c:817 +#: src/rs01-verify.c:734 #, c-format msgid "- image md5sum : %s\n" msgstr "- immagine md5sum : %s\n" -#: src/rs01-verify.c:827 src/rs03-verify.c:910 +#: src/rs01-verify.c:741 src/rs03-verify.c:846 msgid "* fingerprint match: NOT POSSIBLE - related sector is missing in image!\n" msgstr "Corrispondenza impronta digitale: NON POSSIBILE - il settore riferito è mancante nell'immagine!\n" -#: src/rs01-verify.c:830 src/rs03-verify.c:914 +#: src/rs01-verify.c:743 src/rs03-verify.c:848 #, c-format msgid "missing sector prevents calculation" msgstr "il settore riferito è mancante nell'immagine" -#: src/rs01-verify.c:836 src/rs03-verify.c:920 +#: src/rs01-verify.c:749 src/rs03-verify.c:853 msgid "* fingerprint match: MISMATCH - .iso and .ecc don't belong together!\n" msgstr "" "* Corrispondenza impronta digitale:\n" " ERRORE - .iso e .ecc non appartengono alla stessa immagine!\n" -#: src/rs01-verify.c:841 src/rs03-verify.c:925 +#: src/rs01-verify.c:752 src/rs03-verify.c:856 #, c-format msgid "mismatch" msgstr "errore" -#: src/rs01-verify.c:844 src/rs03-verify.c:928 +#: src/rs01-verify.c:755 src/rs03-verify.c:859 #, c-format msgid "Image and error correction files do not belong together!" msgstr "L'immagine ed il file ecc non si appartengono." -#: src/rs01-verify.c:849 src/rs03-verify.c:933 +#: src/rs01-verify.c:758 src/rs03-verify.c:862 msgid "- fingerprint match: good\n" msgstr "- Corrispondenza impronta digitale: OK (buona)\n" -#: src/rs01-verify.c:852 src/rs03-verify.c:936 +#: src/rs01-verify.c:759 src/rs03-verify.c:863 msgid "good" msgstr "bene" -#: src/rs01-verify.c:861 +#: src/rs01-verify.c:767 msgid "* quick mode : ecc file NOT scanned\n" msgstr "" -#: src/rs01-verify.c:869 +#: src/rs01-verify.c:775 #, c-format msgid "- ecc blocks : % (good)\n" msgstr "- Blocchi Ecc : % (buoni)\n" -#: src/rs01-verify.c:876 +#: src/rs01-verify.c:779 #, c-format msgid "* ecc blocks : % (BAD, expected %)\n" msgstr "* Blocchi Ecc : % (Difettosi, atteso: %)\n" -#: src/rs01-verify.c:879 +#: src/rs01-verify.c:782 #, c-format msgid "% (bad, expected %)" msgstr "% (difettosi, atteso: %)" -#: src/rs01-verify.c:905 +#: src/rs01-verify.c:804 #, c-format msgid "- ecc md5sum : %3d%%" msgstr "- Ecc md5sum : %3d%%" -#: src/rs01-verify.c:926 +#: src/rs01-verify.c:822 msgid "* ecc md5sum : BAD, ecc file may be damaged!\n" msgstr "* Ecc md5sum : Difettoso, il file ecc potrebbe essere danneggiato!\n" -#: src/rs01-verify.c:929 +#: src/rs01-verify.c:823 #, c-format msgid "bad" msgstr "difettoso" -#: src/rs01-verify.c:931 +#: src/rs01-verify.c:825 #, c-format msgid "Error correction file may be damaged!" msgstr "Il file ecc potrebbe essere danneggiato!" -#: src/rs01-verify.c:936 src/rs02-verify.c:1137 +#: src/rs01-verify.c:828 src/rs02-verify.c:1075 #, c-format msgid "- ecc md5sum : %s (good)\n" msgstr "- Ecc-md5sum : %s (buono) \n" -#: src/rs01-verify.c:953 +#: src/rs01-verify.c:841 #, c-format msgid "Good error correction file." msgstr "File di correzione dell'immagine valido." -#: src/rs01-window.c:140 src/rs02-window.c:89 src/rs03-window.c:94 +#: src/rs01-window.c:137 src/rs02-window.c:85 src/rs03-window.c:90 msgid "2. Creating error correction data:" msgstr "2. Creazione dei dati di correzione degli errori:" -#: src/rs01-window.c:164 +#: src/rs01-window.c:161 msgid "Show reading speed curve" msgstr "Mostra la curva di velocità di lettura" -#: src/rs01-window.c:203 src/rs02-window.c:141 src/rs03-window.c:174 +#: src/rs01-window.c:200 src/rs02-window.c:137 src/rs03-window.c:170 #, c-format msgid "Repaired: %" msgstr "Riparato: %" -#: src/rs01-window.c:204 src/rs02-window.c:142 src/rs03-window.c:175 +#: src/rs01-window.c:201 src/rs02-window.c:139 src/rs03-window.c:171 #, c-format msgid "Unrepairable: %" msgstr "Non riparabile: % " -#: src/rs01-window.c:205 src/rs02-window.c:143 src/rs03-window.c:176 +#: src/rs01-window.c:202 src/rs02-window.c:141 src/rs03-window.c:172 #, c-format msgid "Progress: %3d.%1d%%" msgstr "Avanzamento: %3d.%1d%%" -#: src/rs01-window.c:414 src/rs02-window.c:348 src/rs03-window.c:381 +#: src/rs01-window.c:405 src/rs02-window.c:346 src/rs03-window.c:377 msgid "Errors/Ecc block" msgstr "Errori/Blocchi Ecc" -#: src/rs01-window.c:450 src/rs02-window.c:378 src/rs03-preferences.c:318 -#: src/rs03-preferences.c:328 +#: src/rs01-window.c:441 src/rs02-window.c:376 src/rs03-preferences.c:320 +#: src/rs03-preferences.c:330 #, c-format msgid "%4.1f%% redundancy (%d roots)" msgstr "%4.1f%% ridondanza (%d radici)" -#: src/rs01-window.c:467 src/rs01-window.c:874 src/rs01-window.c:880 -#: src/rs01-window.c:881 src/rs02-window.c:395 src/rs02-window.c:1362 -#: src/rs02-window.c:1368 src/rs02-window.c:1369 +#: src/rs01-window.c:458 src/rs01-window.c:866 src/rs01-window.c:872 +#: src/rs01-window.c:873 src/rs02-window.c:393 src/rs02-window.c:1369 +#: src/rs02-window.c:1375 src/rs02-window.c:1376 #, c-format msgid "%d MiB of file cache" msgstr "" -#: src/rs01-window.c:669 src/rs03-preferences.c:558 +#: src/rs01-window.c:660 src/rs03-preferences.c:560 msgid "Redundancy for new error correction files" msgstr "Ridondanza per i nuovi file di correzione degli errori" -#: src/rs01-window.c:678 src/rs03-preferences.c:585 +#: src/rs01-window.c:669 src/rs03-preferences.c:587 msgid "Normal redundancy" msgstr "" -#: src/rs01-window.c:678 src/rs03-preferences.c:585 +#: src/rs01-window.c:669 src/rs03-preferences.c:587 msgid "Normal" msgstr "Normale" -#: src/rs01-window.c:701 src/rs03-preferences.c:609 +#: src/rs01-window.c:692 src/rs03-preferences.c:611 #, c-format msgid "" "Normal redundancy\n" @@ -4129,15 +4115,15 @@ msgid "" "It invokes optimized program code to speed up the error correction file creation." msgstr "" -#: src/rs01-window.c:708 src/rs03-preferences.c:616 +#: src/rs01-window.c:699 src/rs03-preferences.c:618 msgid "High redundancy" msgstr "" -#: src/rs01-window.c:708 src/rs03-preferences.c:616 +#: src/rs01-window.c:699 src/rs03-preferences.c:618 msgid "High" msgstr "Alto" -#: src/rs01-window.c:731 src/rs03-preferences.c:639 +#: src/rs01-window.c:722 src/rs03-preferences.c:641 #, c-format msgid "" "High redundancy\n" @@ -4146,15 +4132,15 @@ msgid "" "It invokes optimized program code to speed up the error correction file creation." msgstr "" -#: src/rs01-window.c:739 src/rs03-preferences.c:647 +#: src/rs01-window.c:730 src/rs03-preferences.c:648 msgid "Other redundancy" msgstr "" -#: src/rs01-window.c:739 src/rs03-preferences.c:647 +#: src/rs01-window.c:730 src/rs03-preferences.c:648 msgid "Other" msgstr "Altro" -#: src/rs01-window.c:778 src/rs03-preferences.c:686 +#: src/rs01-window.c:769 src/rs03-preferences.c:687 #, c-format msgid "" "Other redundancy\n" @@ -4163,19 +4149,19 @@ msgid "" "An error correction file with x%% redundancy will be approximately x%% of the size of the corresponding image file." msgstr "" -#: src/rs01-window.c:786 src/rs03-preferences.c:694 +#: src/rs01-window.c:777 src/rs03-preferences.c:695 msgid "Space-delimited redundancy" msgstr "" -#: src/rs01-window.c:786 src/rs02-window.c:1293 src/rs03-preferences.c:694 +#: src/rs01-window.c:778 src/rs02-window.c:1299 src/rs03-preferences.c:696 msgid "Use at most" msgstr "Usare almeno" -#: src/rs01-window.c:811 src/rs03-preferences.c:719 +#: src/rs01-window.c:803 src/rs03-preferences.c:721 msgid "MiB for error correction data" msgstr "MiB per i dati di correzione degli errori" -#: src/rs01-window.c:828 src/rs03-preferences.c:736 +#: src/rs01-window.c:820 src/rs03-preferences.c:738 msgid "" "Space-delimited redundancy\n" "\n" @@ -4184,60 +4170,60 @@ msgid "" "Advance notice: When using the same size setting for images of vastly different size, smaller images receive more redundancy than larger ones. This is usually not what you want." msgstr "" -#: src/rs01-window.c:871 src/rs02-window.c:1359 +#: src/rs01-window.c:863 src/rs02-window.c:1366 msgid "Memory utilization" msgstr "Utilizzo Memoria" -#: src/rs01-window.c:875 src/rs02-window.c:1363 +#: src/rs01-window.c:867 src/rs02-window.c:1370 msgid "File cache" msgstr "" -#: src/rs01-window.c:887 src/rs02-window.c:1375 src/rs03-preferences.c:917 +#: src/rs01-window.c:879 src/rs02-window.c:1382 src/rs03-preferences.c:919 msgid "Use" msgstr "Usare" -#: src/rs01-window.c:916 src/rs02-window.c:1404 +#: src/rs01-window.c:908 src/rs02-window.c:1412 msgid "" "File cache\n" "\n" "dvdisaster optimizes access to the image and error correction files by maintaining its own cache. The preset of 32MiB is suitable for most systems." msgstr "" -#: src/rs02-common.c:580 src/rs02-common.c:592 src/rs02-verify.c:649 -#: src/rs03-common.c:643 +#: src/rs02-common.c:578 src/rs02-common.c:590 src/rs02-verify.c:628 +#: src/rs03-common.c:644 #, c-format msgid "Failed seeking to ecc header at %: %s\n" msgstr "" -#: src/rs02-common.c:584 src/rs02-common.c:596 src/rs03-common.c:647 +#: src/rs02-common.c:582 src/rs02-common.c:594 src/rs03-common.c:648 #, c-format msgid "Failed writing ecc header at %: %s\n" msgstr "" -#: src/rs02-create.c:122 src/rs03-create.c:261 +#: src/rs02-create.c:111 src/rs03-create.c:250 #, c-format msgid "Aborted by user request! (partial ecc data removed from image)" msgstr "" -#: src/rs02-create.c:156 src/rs03-create.c:318 +#: src/rs02-create.c:142 src/rs03-create.c:302 #, c-format msgid "" "Image \"%s\" already contains error correction information.\n" "Truncating image to data part (% sectors).\n" msgstr "" -#: src/rs02-create.c:173 src/rs03-create.c:347 +#: src/rs02-create.c:157 src/rs03-create.c:329 msgid "Image size is now" msgstr "" -#: src/rs02-create.c:236 +#: src/rs02-create.c:218 msgid "" "Image contains unread(able) sectors.\n" "Error correction information can only be\n" "appended to complete (undamaged) images.\n" msgstr "" -#: src/rs02-create.c:240 +#: src/rs02-create.c:222 #, c-format msgid "" "Sector % in the image is marked unreadable\n" @@ -4252,57 +4238,57 @@ msgid "" "appended to complete (undamaged) images.\n" msgstr "" -#: src/rs02-create.c:257 src/rs02-create.c:327 src/rs02-create.c:340 +#: src/rs02-create.c:239 src/rs02-create.c:304 src/rs02-create.c:314 #, c-format msgid "Preparing image (checksums, adding space): %3d%%" msgstr "" -#: src/rs02-create.c:294 src/rs02-create.c:304 src/rs02-fix.c:96 -#: src/rs03-create.c:454 src/rs03-create.c:465 src/rs03-fix.c:94 +#: src/rs02-create.c:273 src/rs02-create.c:283 src/rs02-fix.c:90 +#: src/rs03-create.c:438 src/rs03-create.c:449 src/rs03-fix.c:87 #, c-format msgid "Failed seeking to end of image: %s\n" msgstr "" -#: src/rs02-create.c:298 src/rs02-create.c:321 src/rs02-fix.c:109 -#: src/rs03-create.c:439 src/rs03-fix.c:112 +#: src/rs02-create.c:277 src/rs02-create.c:298 src/rs02-fix.c:103 +#: src/rs03-create.c:423 src/rs03-fix.c:105 #, c-format msgid "Failed expanding the image: %s\n" msgstr "" -#: src/rs02-create.c:326 src/rs02-create.c:339 +#: src/rs02-create.c:303 src/rs02-create.c:313 #, c-format msgid "Preparing image (checksums taken from cache, adding space): %3d%%" msgstr "" -#: src/rs02-create.c:1071 src/rs03-create.c:1309 +#: src/rs02-create.c:1027 src/rs03-create.c:1267 msgid "Error correction data creation aborted" msgstr "" -#: src/rs02-create.c:1102 src/rs02-create.c:1122 src/rs03-create.c:1314 -#: src/rs03-create.c:1369 +#: src/rs02-create.c:1055 src/rs02-create.c:1073 src/rs03-create.c:1271 +#: src/rs03-create.c:1326 #, c-format msgid "" "Augmenting the image with error correction data.\n" "%s" msgstr "" -#: src/rs02-create.c:1103 src/rs03-create.c:1315 +#: src/rs02-create.c:1056 src/rs03-create.c:1272 msgid "- checking image -" msgstr "" -#: src/rs02-create.c:1118 +#: src/rs02-create.c:1069 #, c-format msgid "Encoding with Method RS02: % MiB data, % MiB ecc (%d roots; %4.1f%% redundancy)." msgstr "Sto codificando con il Metodo RS02: % MiB dati, % MiB ecc (%d Radici, %4.1f%% Ridondanza)." -#: src/rs02-create.c:1127 +#: src/rs02-create.c:1077 #, c-format msgid "" "Augmenting image with Method RS02:\n" " % MiB data, % MiB ecc (%d roots; %4.1f%% redundancy)." msgstr "" -#: src/rs02-create.c:1136 +#: src/rs02-create.c:1086 #, c-format msgid "" "Not enough space on medium left for error correction data.\n" @@ -4311,36 +4297,36 @@ msgid "" "not an option, please create a separate error correction file." msgstr "" -#: src/rs02-create.c:1146 src/rs03-create.c:1409 +#: src/rs02-create.c:1096 src/rs03-create.c:1367 #, c-format msgid "" "Using redundancies below 20% may not give\n" "the expected data loss protection.\n" msgstr "" -#: src/rs02-create.c:1178 src/rs02-create.c:1188 src/rs03-create.c:1448 -#: src/rs03-create.c:1476 +#: src/rs02-create.c:1128 src/rs02-create.c:1136 src/rs03-create.c:1406 +#: src/rs03-create.c:1429 #, c-format msgid "" "Image has been augmented with error correction data.\n" "New image size is % MiB (% sectors).\n" msgstr "" -#: src/rs02-fix.c:119 src/rs02-fix.c:130 src/rs03-fix.c:122 src/rs03-fix.c:133 +#: src/rs02-fix.c:108 src/rs02-fix.c:114 src/rs03-fix.c:110 src/rs03-fix.c:116 #, c-format msgid "Expanding image: %3d%%" msgstr "" -#: src/rs02-fix.c:198 src/rs03-fix.c:201 +#: src/rs02-fix.c:175 src/rs03-fix.c:176 msgid "Opening files..." msgstr "Apertura files..." -#: src/rs02-fix.c:224 +#: src/rs02-fix.c:200 #, c-format msgid "Image contains error correction data: Method RS02, %d roots, %4.1f%% redundancy." msgstr "" -#: src/rs02-fix.c:242 src/rs03-fix.c:309 +#: src/rs02-fix.c:218 src/rs03-fix.c:279 #, c-format msgid "" "The image file is %lld sectors longer as noted in the\n" @@ -4351,22 +4337,22 @@ msgid "" "%s" msgstr "" -#: src/rs02-fix.c:499 src/rs03-fix.c:559 +#: src/rs02-fix.c:463 src/rs03-fix.c:518 #, c-format msgid "* Ecc block %: %3d unrepairable sectors: " msgstr "* Blocchi Ecc %: %3d settori non riparabili: " -#: src/rs02-fix.c:721 +#: src/rs02-fix.c:685 #, c-format msgid "-> CRC-predicted error in sector %lld at byte %4d (value %02x '%c', expected %02x '%c')\n" msgstr "" -#: src/rs02-fix.c:724 +#: src/rs02-fix.c:688 #, c-format msgid "-> Non-predicted error in sector %lld at byte %4d (value %02x '%c', expected %02x '%c')\n" msgstr "" -#: src/rs02-fix.c:851 src/rs03-fix.c:941 +#: src/rs02-fix.c:813 src/rs03-fix.c:901 #, c-format msgid "Repaired sectors: % (% data, % ecc)\n" msgstr "Settori riparati: % (% dati, % ecc)\n" @@ -4383,7 +4369,7 @@ msgstr "" msgid "Disable RS02 initialization in the preferences" msgstr "" -#: src/rs02-recognize.c:305 +#: src/rs02-recognize.c:303 msgid "" "Faster medium initialization\n" "\n" @@ -4392,108 +4378,108 @@ msgid "" "not augmented with RS02 error correction data." msgstr "" -#: src/rs02-verify.c:48 src/rs02-verify.c:200 src/rs02-verify.c:306 -#: src/rs03-verify.c:59 src/rs03-verify.c:240 src/rs03-verify.c:302 +#: src/rs02-verify.c:50 src/rs02-verify.c:202 src/rs02-verify.c:308 +#: src/rs03-verify.c:62 src/rs03-verify.c:243 src/rs03-verify.c:305 msgid "Data checksum:" msgstr "" -#: src/rs02-verify.c:49 src/rs02-verify.c:314 +#: src/rs02-verify.c:51 src/rs02-verify.c:316 msgid "CRC checksum:" msgstr "" -#: src/rs02-verify.c:208 +#: src/rs02-verify.c:210 msgid "Ecc headers:" msgstr "" -#: src/rs02-verify.c:216 src/rs03-verify.c:311 +#: src/rs02-verify.c:218 src/rs03-verify.c:314 msgid "Data section:" msgstr "" -#: src/rs02-verify.c:224 src/rs03-verify.c:320 +#: src/rs02-verify.c:226 src/rs03-verify.c:323 msgid "Crc section:" msgstr "" -#: src/rs02-verify.c:232 src/rs03-verify.c:329 +#: src/rs02-verify.c:234 src/rs03-verify.c:332 msgid "Ecc section:" msgstr "" -#: src/rs02-verify.c:255 +#: src/rs02-verify.c:257 msgid "Error correction data" msgstr "Dati di correzione degli errori" -#: src/rs02-verify.c:512 src/rs03-verify.c:457 +#: src/rs02-verify.c:506 src/rs03-verify.c:458 #, c-format msgid "- erasure counts : avg = %.1f; worst = %d per ecc block.\n" msgstr "" -#: src/rs02-verify.c:515 src/rs03-verify.c:460 +#: src/rs02-verify.c:509 src/rs03-verify.c:461 #, c-format msgid "- prognosis : % of % sectors recoverable (%d.%d%%)\n" msgstr "" -#: src/rs02-verify.c:522 src/rs03-verify.c:465 +#: src/rs02-verify.c:515 src/rs03-verify.c:464 msgid "Erasure counts:" msgstr "" -#: src/rs02-verify.c:523 src/rs03-verify.c:466 +#: src/rs02-verify.c:516 src/rs03-verify.c:465 msgid "Prognosis:" msgstr "" -#: src/rs02-verify.c:526 src/rs03-verify.c:469 +#: src/rs02-verify.c:519 src/rs03-verify.c:468 #, c-format msgid "avg = %.1f; worst = %d per ecc block." msgstr "" -#: src/rs02-verify.c:531 src/rs03-verify.c:474 +#: src/rs02-verify.c:524 src/rs03-verify.c:473 #, c-format msgid "% of % sectors recoverable (%d.%d%%)" msgstr "" -#: src/rs02-verify.c:593 src/rs03-verify.c:700 +#: src/rs02-verify.c:579 src/rs03-verify.c:670 msgid "Check aborted" msgstr "" -#: src/rs02-verify.c:615 src/rs03-verify.c:747 +#: src/rs02-verify.c:597 src/rs03-verify.c:707 msgid "Checking the image file." msgstr "Controllo il file immagine" -#: src/rs02-verify.c:616 +#: src/rs02-verify.c:598 msgid "Image contains error correction data." msgstr "" -#: src/rs02-verify.c:631 src/rs03-verify.c:1041 +#: src/rs02-verify.c:611 src/rs03-verify.c:955 #, c-format msgid "Image file is % sectors shorter than expected." msgstr "" -#: src/rs02-verify.c:632 src/rs03-verify.c:1044 +#: src/rs02-verify.c:612 src/rs03-verify.c:958 #, c-format msgid "Image file is % sectors longer than expected." msgstr "" -#: src/rs02-verify.c:653 +#: src/rs02-verify.c:632 #, c-format msgid "Failed reading ecc header at %: %s\n" msgstr "" -#: src/rs02-verify.c:697 +#: src/rs02-verify.c:677 #, c-format msgid "% ok, % CRC errors, % missing" msgstr "% ok, % errori CRC, % mancanti" -#: src/rs02-verify.c:837 src/rs02-verify.c:860 src/rs03-verify.c:1247 -#: src/rs03-verify.c:1290 +#: src/rs02-verify.c:812 src/rs02-verify.c:837 src/rs03-verify.c:1163 +#: src/rs03-verify.c:1208 #, c-format msgid "% sectors missing; % CRC errors" msgstr "% settori mancanti, % errori CRC" -#: src/rs02-verify.c:841 src/rs02-verify.c:845 src/rs02-verify.c:864 -#: src/rs02-verify.c:868 src/rs03-verify.c:1255 src/rs03-verify.c:1298 +#: src/rs02-verify.c:817 src/rs02-verify.c:822 src/rs02-verify.c:842 +#: src/rs02-verify.c:847 src/rs03-verify.c:1173 src/rs03-verify.c:1218 #, c-format msgid "% sectors missing" msgstr "% settori mancanti" -#: src/rs02-verify.c:883 +#: src/rs02-verify.c:862 #, c-format msgid "" "- good image : all sectors present\n" @@ -4502,133 +4488,133 @@ msgstr "" "- Buona immagine : Tutti i settori presenti\n" "- dati md5sum : %s\n" -#: src/rs02-verify.c:889 +#: src/rs02-verify.c:868 msgid "* suspicious image : contains damaged ecc headers\n" msgstr "" -#: src/rs02-verify.c:894 src/rs03-verify.c:1317 +#: src/rs02-verify.c:873 src/rs03-verify.c:1237 #, c-format msgid "* suspicious image : all sectors present, but % CRC errors\n" msgstr "* Immagine sospetta : tutti i settori presenti, ma ci sono % errori CRC\n" -#: src/rs02-verify.c:900 +#: src/rs02-verify.c:879 #, c-format msgid " ... ecc headers : % ok, % CRC errors, % missing\n" msgstr "" -#: src/rs02-verify.c:902 src/rs03-verify.c:1323 +#: src/rs02-verify.c:881 src/rs03-verify.c:1243 #, c-format msgid " ... data section : % sectors missing; % CRC errors\n" msgstr "" -#: src/rs02-verify.c:905 src/rs03-verify.c:1326 +#: src/rs02-verify.c:884 src/rs03-verify.c:1246 #, c-format msgid " ... data md5sum : %s\n" msgstr " ... dati md5sum : %s\n" -#: src/rs02-verify.c:906 src/rs03-verify.c:1332 +#: src/rs02-verify.c:885 src/rs03-verify.c:1252 #, c-format msgid " ... crc section : % sectors missing\n" msgstr "" -#: src/rs02-verify.c:907 src/rs03-verify.c:1334 +#: src/rs02-verify.c:886 src/rs03-verify.c:1254 #, c-format msgid " ... ecc section : % sectors missing\n" msgstr "" -#: src/rs02-verify.c:930 src/rs03-verify.c:1392 +#: src/rs02-verify.c:909 src/rs03-verify.c:1304 #, c-format msgid "Damaged image." msgstr "" -#: src/rs02-verify.c:944 +#: src/rs02-verify.c:917 msgid "" "\n" "Error correction data: " msgstr "" -#: src/rs02-verify.c:1036 +#: src/rs02-verify.c:994 msgid "Please upgrade your version of dvdisaster!" msgstr "" -#: src/rs02-verify.c:1043 +#: src/rs02-verify.c:1001 #, c-format msgid "- medium sectors : % / % (good)\n" msgstr "" -#: src/rs02-verify.c:1063 +#: src/rs02-verify.c:1017 #, c-format msgid "Image size does not match recorded size." msgstr "" -#: src/rs02-verify.c:1078 +#: src/rs02-verify.c:1031 #, c-format msgid "- data md5sum : %s (good)\n" msgstr "- dati md5sum : %s (buona)\n" -#: src/rs02-verify.c:1079 +#: src/rs02-verify.c:1032 #, c-format msgid "* data md5sum : %s (BAD)\n" msgstr "* dati md5sum : %s (Difettosa)\n" -#: src/rs02-verify.c:1092 src/rs03-verify.c:898 +#: src/rs02-verify.c:1043 src/rs03-verify.c:837 #, c-format msgid "- data md5sum : %s\n" msgstr "- dati md5sum : %s\n" -#: src/rs02-verify.c:1106 +#: src/rs02-verify.c:1054 #, c-format msgid "- crc md5sum : %s (good)\n" msgstr "- crc md5sum : %s (buona)\n" -#: src/rs02-verify.c:1113 +#: src/rs02-verify.c:1058 #, c-format msgid "* crc md5sum : %s (BAD)\n" msgstr "* crc md5sum : %s (Difettosa)\n" -#: src/rs02-verify.c:1123 +#: src/rs02-verify.c:1064 #, c-format msgid "- crc md5sum : %s\n" msgstr "- crc md5sum : %s\n" -#: src/rs02-verify.c:1144 +#: src/rs02-verify.c:1079 #, c-format msgid "* ecc md5sum : %s (BAD)\n" msgstr "* ecc md5sum : %s (Difettosa)\n" -#: src/rs02-verify.c:1154 +#: src/rs02-verify.c:1085 #, c-format msgid "- ecc md5sum : %s\n" msgstr "- Ecc-md5sum : %s\n" -#: src/rs02-verify.c:1179 src/rs03-verify.c:952 +#: src/rs02-verify.c:1103 src/rs03-verify.c:877 #, c-format msgid "Good error correction data." msgstr "" -#: src/rs02-verify.c:1183 src/rs03-verify.c:1409 +#: src/rs02-verify.c:1109 src/rs03-verify.c:1323 #, c-format msgid "Full data recovery is likely." msgstr "" -#: src/rs02-verify.c:1186 src/rs03-verify.c:1412 +#: src/rs02-verify.c:1114 src/rs03-verify.c:1328 #, c-format msgid "Full data recovery is NOT possible." msgstr "" -#: src/rs02-window.c:80 +#: src/rs02-window.c:76 msgid "1. Preparing image:" msgstr "" -#: src/rs02-window.c:772 +#: src/rs02-window.c:770 msgid "Maximum image size" msgstr "" -#: src/rs02-window.c:784 +#: src/rs02-window.c:782 msgid "Using the smallest possible size from table" msgstr "" -#: src/rs02-window.c:784 +#: src/rs02-window.c:783 msgid "Use smallest possible size from following table (in sectors):" msgstr "" @@ -4645,15 +4631,15 @@ msgstr "" msgid "CD-R / CD-RW:" msgstr "" -#: src/rs02-window.c:844 src/rs02-window.c:863 src/rs02-window.c:907 -#: src/rs02-window.c:926 src/rs02-window.c:970 src/rs02-window.c:989 -#: src/rs02-window.c:1033 src/rs02-window.c:1052 src/rs02-window.c:1095 -#: src/rs02-window.c:1114 src/rs02-window.c:1157 src/rs02-window.c:1176 -#: src/rs02-window.c:1221 src/rs02-window.c:1240 +#: src/rs02-window.c:844 src/rs02-window.c:863 src/rs02-window.c:908 +#: src/rs02-window.c:927 src/rs02-window.c:972 src/rs02-window.c:991 +#: src/rs02-window.c:1036 src/rs02-window.c:1055 src/rs02-window.c:1099 +#: src/rs02-window.c:1118 src/rs02-window.c:1162 src/rs02-window.c:1181 +#: src/rs02-window.c:1227 src/rs02-window.c:1246 msgid "query medium" msgstr "" -#: src/rs02-window.c:875 +#: src/rs02-window.c:876 #, c-format msgid "" "CD medium size\n" @@ -4667,11 +4653,11 @@ msgid "" "Even if this limit is not reached the augmented image may be a few sectors smaller than specified for technical reasons." msgstr "" -#: src/rs02-window.c:893 +#: src/rs02-window.c:894 msgid "DVD 1 layer:" msgstr "" -#: src/rs02-window.c:938 +#: src/rs02-window.c:940 #, c-format msgid "" "Single layer DVD medium size\n" @@ -4685,11 +4671,11 @@ msgid "" "Even if this limit is not reached the augmented image may be a few sectors smaller than specified for technical reasons." msgstr "" -#: src/rs02-window.c:956 +#: src/rs02-window.c:958 msgid "DVD 2 layers:" msgstr "" -#: src/rs02-window.c:1001 +#: src/rs02-window.c:1004 #, c-format msgid "" "Two layered DVD medium size\n" @@ -4703,11 +4689,11 @@ msgid "" "Even if this limit is not reached the augmented image may be a few sectors smaller than specified for technical reasons." msgstr "" -#: src/rs02-window.c:1019 +#: src/rs02-window.c:1022 msgid "BD 1 layer:" msgstr "" -#: src/rs02-window.c:1064 +#: src/rs02-window.c:1068 #, c-format msgid "" "Single layer BD medium size\n" @@ -4721,11 +4707,11 @@ msgid "" "Even if this limit is not reached the augmented image may be a few sectors smaller than specified for technical reasons." msgstr "" -#: src/rs02-window.c:1081 +#: src/rs02-window.c:1085 msgid "BD 2 layers:" msgstr "" -#: src/rs02-window.c:1126 +#: src/rs02-window.c:1131 #, c-format msgid "" "Two layered BD medium size\n" @@ -4739,11 +4725,11 @@ msgid "" "Even if this limit is not reached the augmented image may be a few sectors smaller than specified for technical reasons." msgstr "" -#: src/rs02-window.c:1143 +#: src/rs02-window.c:1148 msgid "BDXL 3 layers:" msgstr "" -#: src/rs02-window.c:1188 +#: src/rs02-window.c:1194 #, c-format msgid "" "Three layered BDXL medium size\n" @@ -4757,11 +4743,11 @@ msgid "" "Even if this limit is not reached the augmented image may be a few sectors smaller than specified for technical reasons." msgstr "" -#: src/rs02-window.c:1207 +#: src/rs02-window.c:1213 msgid "BDXL 4 layers:" msgstr "" -#: src/rs02-window.c:1252 +#: src/rs02-window.c:1258 #, c-format msgid "" "Four layered BDXL medium size\n" @@ -4775,11 +4761,11 @@ msgid "" "Even if this limit is not reached the augmented image may be a few sectors smaller than specified for technical reasons." msgstr "" -#: src/rs02-window.c:1314 +#: src/rs02-window.c:1320 msgid "sectors." msgstr "" -#: src/rs02-window.c:1327 +#: src/rs02-window.c:1334 #, c-format msgid "" "Use at most ... sectors\n" @@ -4791,47 +4777,47 @@ msgid "" "Even if this limit is not reached the augmented image may be a few sectors smaller than specified for technical reasons." msgstr "" -#: src/rs03-common.c:440 +#: src/rs03-common.c:441 #, c-format msgid "Image file %s not present." msgstr "File immagine %s non presente." -#: src/rs03-common.c:457 +#: src/rs03-common.c:458 #, c-format msgid "Redundancy %4.1f%% out of useful range [3.2%%..200%%]" msgstr "" -#: src/rs03-common.c:487 +#: src/rs03-common.c:488 #, c-format msgid "Redundancy %d out of useful range [8..170]." msgstr "" -#: src/rs03-common.c:525 +#: src/rs03-common.c:526 #, c-format msgid "Medium size smaller than image size (% < %)" msgstr "" -#: src/rs03-create.c:434 +#: src/rs03-create.c:418 #, c-format msgid "Failed expanding the ecc file: %s\n" msgstr "" -#: src/rs03-create.c:435 +#: src/rs03-create.c:419 #, c-format msgid "Preparing ecc file: %3d%%" msgstr "" -#: src/rs03-create.c:440 +#: src/rs03-create.c:424 #, c-format msgid "Preparing image: %3d%%" msgstr "" -#: src/rs03-create.c:688 +#: src/rs03-create.c:661 #, c-format msgid "Failed mmap()ing layer %d: %s\n" msgstr "" -#: src/rs03-create.c:717 +#: src/rs03-create.c:690 #, c-format msgid "" "Incomplete image\n" @@ -4843,7 +4829,7 @@ msgid "" "Exiting and removing partial error correction data." msgstr "" -#: src/rs03-create.c:725 +#: src/rs03-create.c:698 msgid "" "\n" "This image was probably mastered from defective source(s).\n" @@ -4851,44 +4837,44 @@ msgid "" "\n" msgstr "" -#: src/rs03-create.c:936 +#: src/rs03-create.c:902 msgid "CPU bound" msgstr "" -#: src/rs03-create.c:940 +#: src/rs03-create.c:906 msgid "I/O bound" msgstr "" -#: src/rs03-create.c:1149 +#: src/rs03-create.c:1113 #, c-format msgid "%5.2fMiB/s current" msgstr "" -#: src/rs03-create.c:1202 +#: src/rs03-create.c:1164 #, c-format msgid "%d threads with %s encoding and %s I/O" msgstr "" -#: src/rs03-create.c:1364 +#: src/rs03-create.c:1321 #, c-format msgid "Encoding with Method RS03: % MiB data, % MiB ecc (%d roots; %4.1f%% redundancy)." msgstr "" -#: src/rs03-create.c:1383 +#: src/rs03-create.c:1341 #, c-format msgid "" "Augmenting image with Method RS03 [%d threads, %s, %s I/O]:\n" "% MiB data, % MiB ecc (%d roots; %4.1f%% redundancy)." msgstr "" -#: src/rs03-create.c:1388 +#: src/rs03-create.c:1346 #, c-format msgid "" "Creating the error correction file with Method RS03 [%d threads, %s, %s I/O]:\n" "% MiB data, % MiB ecc (%d roots; %4.1f%% redundancy)." msgstr "" -#: src/rs03-create.c:1399 +#: src/rs03-create.c:1357 #, c-format msgid "" "Not enough space on medium left for error correction data.\n" @@ -4897,124 +4883,124 @@ msgid "" "an option, please create a separate error correction file." msgstr "" -#: src/rs03-create.c:1425 +#: src/rs03-create.c:1383 msgid "" "BD-R size with no defect management enabled,\n" "remember it should you need to repair this image later!\n" msgstr "" -#: src/rs03-create.c:1459 +#: src/rs03-create.c:1417 #, c-format msgid "Avg performance: %5.2fs (%5.2fMiB/s) total\n" msgstr "" -#: src/rs03-create.c:1463 +#: src/rs03-create.c:1420 #, c-format msgid "%5.2fMiB/s average" msgstr "" -#: src/rs03-create.c:1465 +#: src/rs03-create.c:1422 #, c-format msgid "%d times CPU bound; %d times I/O bound" msgstr "" -#: src/rs03-fix.c:243 +#: src/rs03-fix.c:217 #, c-format msgid "Error correction file using Method RS03, %d roots, %4.1f%% redundancy." msgstr "" -#: src/rs03-fix.c:247 +#: src/rs03-fix.c:221 #, c-format msgid "Image contains error correction data: Method RS03, %d roots, %4.1f%% redundancy." msgstr "" -#: src/rs03-fix.c:725 src/rs03-fix.c:849 +#: src/rs03-fix.c:684 src/rs03-fix.c:808 msgid "; ecc file: " msgstr "" -#: src/rs03-fix.c:785 +#: src/rs03-fix.c:744 #, c-format msgid "-> CRC-predicted error in sector %lld%s at byte %4d (value %02x '%c', expected %02x '%c')\n" msgstr "" -#: src/rs03-fix.c:788 +#: src/rs03-fix.c:747 #, c-format msgid "-> Non-predicted error in sector %lld%s at byte %4d (value %02x '%c', expected %02x '%c')\n" msgstr "" -#: src/rs03-fix.c:881 +#: src/rs03-fix.c:840 #, c-format msgid "Failed seeking to sector % in ecc file [%s]: %s" msgstr "" -#: src/rs03-fix.c:886 +#: src/rs03-fix.c:845 #, c-format msgid "" "could not write ecc file sector %:\n" "%s" msgstr "" -#: src/rs03-preferences.c:345 src/rs03-preferences.c:788 -#: src/rs03-preferences.c:794 src/rs03-preferences.c:795 +#: src/rs03-preferences.c:347 src/rs03-preferences.c:790 +#: src/rs03-preferences.c:796 src/rs03-preferences.c:797 #, c-format msgid "%d sectors" msgstr "" -#: src/rs03-preferences.c:364 src/rs03-preferences.c:904 -#: src/rs03-preferences.c:910 src/rs03-preferences.c:911 +#: src/rs03-preferences.c:366 src/rs03-preferences.c:906 +#: src/rs03-preferences.c:912 src/rs03-preferences.c:913 #, c-format msgid "%d threads" msgstr "" -#: src/rs03-preferences.c:487 src/rs03-preferences.c:494 +#: src/rs03-preferences.c:489 src/rs03-preferences.c:496 msgid "Error correction data storage" msgstr "" -#: src/rs03-preferences.c:495 +#: src/rs03-preferences.c:497 msgid "Store ECC data in: " msgstr "" -#: src/rs03-preferences.c:508 +#: src/rs03-preferences.c:510 msgid "File" msgstr "" -#: src/rs03-preferences.c:535 +#: src/rs03-preferences.c:537 msgid "" "Error correction data storage\n" "\n" "Select between two ways of storing the error correction information:\n" msgstr "" -#: src/rs03-preferences.c:540 +#: src/rs03-preferences.c:542 msgid "" "Augmented image (recommended)\n" "The error correction data will be stored along with the user data on the same medium. This requires the creation of an image file prior to writing the medium. The error correction data will be appended to that image and fill up the remaining space.\n" "Damaged sectors in the error correction information reduce the data recovery capacity, but do not make recovery impossible - a second medium for keeping or protecting the error correction information is not required.\n" msgstr "" -#: src/rs03-preferences.c:550 +#: src/rs03-preferences.c:552 msgid "" "Error correction file\n" "Error correction files are the only way of protecting existing media as they can be stored somewhere else. They are kept on a separate medium which must also be protected by dvdisaster. This prevents from losing the error correction files in case of a medium defect.\n" msgstr "" -#: src/rs03-preferences.c:570 +#: src/rs03-preferences.c:572 msgid "no settings for augmented images" msgstr "" -#: src/rs03-preferences.c:781 +#: src/rs03-preferences.c:783 msgid "I/O parameters" msgstr "" -#: src/rs03-preferences.c:789 +#: src/rs03-preferences.c:791 msgid "Sector preloading" msgstr "" -#: src/rs03-preferences.c:801 +#: src/rs03-preferences.c:803 msgid "Preload" msgstr "" -#: src/rs03-preferences.c:829 +#: src/rs03-preferences.c:831 msgid "" "Sector preloading\n" "\n" @@ -5026,23 +5012,23 @@ msgid "" "A preload value of n will used approx. n MiB of RAM." msgstr "" -#: src/rs03-preferences.c:841 +#: src/rs03-preferences.c:843 msgid "I/O strategy" msgstr "" -#: src/rs03-preferences.c:842 +#: src/rs03-preferences.c:844 msgid "I/O strategy: " msgstr "" -#: src/rs03-preferences.c:855 +#: src/rs03-preferences.c:857 msgid "read/write" msgstr "" -#: src/rs03-preferences.c:861 +#: src/rs03-preferences.c:863 msgid "memory mapped" msgstr "" -#: src/rs03-preferences.c:881 +#: src/rs03-preferences.c:883 msgid "" "I/O strategy\n" "\n" @@ -5053,11 +5039,11 @@ msgid "" "The memory mapped option uses the kernel's memory mapping scheme for direct access to the image file. This has the advantage of minimal overhead, but may be adversely affected by poor caching and preloading decisions made by the kernel (since the kernel does not know what dvdisaster is going to do with the data). This scheme performs well when encoding in a RAM-based file system (such as /dev/shm on GNU/Linux) and on very fast media with low latency such as SSDs." msgstr "" -#: src/rs03-preferences.c:901 src/rs03-preferences.c:905 +#: src/rs03-preferences.c:903 src/rs03-preferences.c:907 msgid "Multithreading" msgstr "" -#: src/rs03-preferences.c:946 +#: src/rs03-preferences.c:948 msgid "" "Multithreading\n" "\n" @@ -5068,35 +5054,35 @@ msgid "" "Performance will not scale linearly with the number of CPU cores. Hard disk performance is more limiting than raw CPU power. When using 4 cores or more, memory bandwidth may also affect performance." msgstr "" -#: src/rs03-preferences.c:961 src/rs03-preferences.c:968 +#: src/rs03-preferences.c:963 src/rs03-preferences.c:970 msgid "Encoding algorithm" msgstr "" -#: src/rs03-preferences.c:969 +#: src/rs03-preferences.c:971 msgid "Use: " msgstr "" -#: src/rs03-preferences.c:982 +#: src/rs03-preferences.c:984 msgid "32bit" msgstr "" -#: src/rs03-preferences.c:988 +#: src/rs03-preferences.c:990 msgid "64bit" msgstr "" -#: src/rs03-preferences.c:995 +#: src/rs03-preferences.c:997 msgid "SSE2" msgstr "" -#: src/rs03-preferences.c:1002 +#: src/rs03-preferences.c:1004 msgid "AltiVec" msgstr "" -#: src/rs03-preferences.c:1009 +#: src/rs03-preferences.c:1011 msgid "auto" msgstr "" -#: src/rs03-preferences.c:1036 +#: src/rs03-preferences.c:1038 msgid "" "Encoding algorithm\n" "\n" @@ -5106,139 +5092,153 @@ msgid "" "Available extensions are SSE2 for x86 based processors and AltiVec on PowerPC processors. These extensions encode with 128bit wide operations and will usually provide the fastest encoding variant. If \"auto\" is selected, the SSE2/AltiVec algorithms will be selected if the processor supports them; otherwise the 64bit algorithm will be used." msgstr "" -#: src/rs03-recognize.c:593 +#: src/rs03-recognize.c:595 #, c-format msgid "Failed seeking to sector %lld in image: %s" msgstr "" -#: src/rs03-recognize.c:598 +#: src/rs03-recognize.c:600 #, c-format msgid "Failed reading sector %lld in image: %s" msgstr "" -#: src/rs03-verify.c:193 +#: src/rs03-verify.c:196 msgid "Error correction properties" msgstr "" -#: src/rs03-verify.c:204 +#: src/rs03-verify.c:207 msgid "Type:" msgstr "" -#: src/rs03-verify.c:273 +#: src/rs03-verify.c:276 msgid "Data integrity" msgstr "" -#: src/rs03-verify.c:338 src/rs03-verify.c:1353 +#: src/rs03-verify.c:341 src/rs03-verify.c:1272 msgid "Ecc block test:" msgstr "" -#: src/rs03-verify.c:503 src/rs03-verify.c:736 src/rs03-verify.c:1274 +#: src/rs03-verify.c:498 src/rs03-verify.c:699 src/rs03-verify.c:1193 msgid "Checking the image and error correction files." msgstr "" -#: src/rs03-verify.c:504 +#: src/rs03-verify.c:499 msgid "- Checking ecc blocks (deep verify) -" msgstr "" -#: src/rs03-verify.c:521 +#: src/rs03-verify.c:513 #, c-format msgid "Out of memory; try reducing sector prefetch!" msgstr "" -#: src/rs03-verify.c:524 +#: src/rs03-verify.c:515 msgid "* Ecc block test : out of memory; try reducing sector prefetch!\n" msgstr "" -#: src/rs03-verify.c:609 src/rs03-verify.c:1241 +#: src/rs03-verify.c:596 src/rs03-verify.c:1157 #, c-format msgid "%d%% tested" msgstr "" -#: src/rs03-verify.c:612 +#: src/rs03-verify.c:598 #, c-format msgid "- Ecc block test : %d%% tested" msgstr "" -#: src/rs03-verify.c:620 +#: src/rs03-verify.c:603 #, c-format msgid "% good, % bad; %d%% tested" msgstr "" -#: src/rs03-verify.c:623 +#: src/rs03-verify.c:605 #, c-format msgid "* Ecc block test : % good, % bad; %d%% tested" msgstr "" -#: src/rs03-verify.c:635 +#: src/rs03-verify.c:614 msgid "pass" msgstr "" -#: src/rs03-verify.c:638 +#: src/rs03-verify.c:616 msgid "- Ecc block test : pass\n" msgstr "" -#: src/rs03-verify.c:645 +#: src/rs03-verify.c:620 #, c-format msgid "% good, % bad; % bad sub blocks" msgstr "" -#: src/rs03-verify.c:648 +#: src/rs03-verify.c:622 #, c-format msgid "* Ecc block test : % good, % bad; % bad sub blocks\n" msgstr "" -#: src/rs03-verify.c:740 +#: src/rs03-verify.c:688 +#, c-format +msgid "" +"\n" +"%s present.\n" +msgstr "" + +#: src/rs03-verify.c:691 +#, c-format +msgid "" +"\n" +"%s not present.\n" +msgstr "" + +#: src/rs03-verify.c:702 #, c-format msgid "%s present.\n" msgstr "" -#: src/rs03-verify.c:760 +#: src/rs03-verify.c:719 msgid "" "\n" "Error correction properties:\n" msgstr "" -#: src/rs03-verify.c:772 +#: src/rs03-verify.c:731 #, c-format msgid "Ecc file is % sectors shorter than expected." msgstr "" -#: src/rs03-verify.c:774 +#: src/rs03-verify.c:733 #, c-format msgid "Ecc file is % sectors longer than expected." msgstr "" -#: src/rs03-verify.c:782 +#: src/rs03-verify.c:739 #, c-format msgid "* Warning : %s\n" msgstr "" -#: src/rs03-verify.c:791 +#: src/rs03-verify.c:748 msgid "- type : Error correction file\n" msgstr "" -#: src/rs03-verify.c:792 +#: src/rs03-verify.c:749 msgid "- type : Augmented image\n" msgstr "" -#: src/rs03-verify.c:797 +#: src/rs03-verify.c:752 msgid "Error correction file" msgstr "" -#: src/rs03-verify.c:798 +#: src/rs03-verify.c:755 msgid "Augmented image" msgstr "" -#: src/rs03-verify.c:830 src/rs03-verify.c:842 +#: src/rs03-verify.c:783 src/rs03-verify.c:791 msgid "- created by : dvdisaster" msgstr "" -#: src/rs03-verify.c:864 +#: src/rs03-verify.c:810 #, c-format msgid "- requires : dvdisaster-%s\n" msgstr "" -#: src/rs03-verify.c:872 +#: src/rs03-verify.c:815 #, c-format msgid "" "* requires : dvdisaster-%s (BAD)\n" @@ -5246,147 +5246,147 @@ msgid "" "* : Please upgrade dvdisaster.\n" msgstr "" -#: src/rs03-verify.c:896 +#: src/rs03-verify.c:835 msgid "none available" msgstr "" -#: src/rs03-verify.c:962 +#: src/rs03-verify.c:886 msgid "" "\n" "Data integrity:\n" msgstr "" -#: src/rs03-verify.c:991 +#: src/rs03-verify.c:910 #, c-format msgid "% in image; % in ecc file" msgstr "" -#: src/rs03-verify.c:994 +#: src/rs03-verify.c:914 #, c-format msgid "% sectors + %d bytes in image; % in ecc file" msgstr "" -#: src/rs03-verify.c:1000 +#: src/rs03-verify.c:919 #, c-format msgid "- sectors : % in image; " msgstr "" -#: src/rs03-verify.c:1001 +#: src/rs03-verify.c:920 #, c-format msgid "- sectors : % sectors + %d bytes in image; " msgstr "" -#: src/rs03-verify.c:1003 +#: src/rs03-verify.c:922 #, c-format msgid "% in ecc file\n" msgstr "" -#: src/rs03-verify.c:1009 +#: src/rs03-verify.c:925 #, c-format msgid "% total / % data" msgstr "" -#: src/rs03-verify.c:1012 +#: src/rs03-verify.c:927 #, c-format msgid "- medium sectors : % total / % data\n" msgstr "" -#: src/rs03-verify.c:1029 +#: src/rs03-verify.c:943 #, c-format msgid "%s (%s expected)" msgstr "" -#: src/rs03-verify.c:1034 +#: src/rs03-verify.c:948 #, c-format msgid "Image file is %d bytes shorter than expected." msgstr "" -#: src/rs03-verify.c:1036 +#: src/rs03-verify.c:950 #, c-format msgid "Image file is %d bytes longer than expected." msgstr "" -#: src/rs03-verify.c:1050 +#: src/rs03-verify.c:963 #, c-format msgid "* sectors : %s (%s expected); % sectors in ecc file\n" msgstr "" -#: src/rs03-verify.c:1053 +#: src/rs03-verify.c:966 #, c-format msgid "* medium sectors : %s (%s expected)\n" msgstr "" -#: src/rs03-verify.c:1077 +#: src/rs03-verify.c:994 #, c-format msgid "Failed seeking to start of ecc file: %s\n" msgstr "" -#: src/rs03-verify.c:1177 +#: src/rs03-verify.c:1093 msgid " (in ecc file)" msgstr "" -#: src/rs03-verify.c:1185 +#: src/rs03-verify.c:1101 #, c-format msgid "* missing sector : %%s\n" msgstr "" -#: src/rs03-verify.c:1186 +#: src/rs03-verify.c:1102 #, c-format msgid "* missing sectors : % - %%s\n" msgstr "" -#: src/rs03-verify.c:1251 src/rs03-verify.c:1294 +#: src/rs03-verify.c:1168 src/rs03-verify.c:1213 #, c-format msgid "% sectors missing; % signature errors" msgstr "" -#: src/rs03-verify.c:1277 +#: src/rs03-verify.c:1196 msgid "Error correction file:" msgstr "" -#: src/rs03-verify.c:1311 +#: src/rs03-verify.c:1231 #, c-format msgid "" "- good image/file : all sectors present\n" "- data md5sum : %s\n" msgstr "" -#: src/rs03-verify.c:1315 +#: src/rs03-verify.c:1235 #, c-format msgid "* BAD image/file : % sectors missing\n" msgstr "" -#: src/rs03-verify.c:1329 +#: src/rs03-verify.c:1249 #, c-format msgid " ... crc section : % sectors missing; % signature errors\n" msgstr "" -#: src/rs03-verify.c:1362 +#: src/rs03-verify.c:1277 #, c-format msgid "Skipped; not useful on known defective image" msgstr "" -#: src/rs03-verify.c:1366 +#: src/rs03-verify.c:1280 msgid "* Ecc block test : skipped; not useful on defective image\n" msgstr "" -#: src/rs03-window.c:85 +#: src/rs03-window.c:81 msgid "1. Reserving space:" msgstr "" -#: src/rs03-window.c:104 +#: src/rs03-window.c:100 msgid "Encoder info:" msgstr "" -#: src/rs03-window.c:113 +#: src/rs03-window.c:109 msgid "Performance:" msgstr "" -#: src/rs03-window.c:122 +#: src/rs03-window.c:118 msgid "State:" msgstr "" -#: src/scsi-freebsd.c:47 src/scsi-linux.c:51 +#: src/scsi-freebsd.c:49 src/scsi-linux.c:53 msgid "" "Can not access /dev for devices\n" "No drives will be pre-selected.\n" @@ -5394,13 +5394,13 @@ msgstr "" "Impossibile accedere a /dev per le periferiche.\n" "Nessun drive sarà preselezionato.\n" -#: src/scsi-freebsd.c:102 src/scsi-linux.c:91 src/scsi-win32.c:84 +#: src/scsi-freebsd.c:104 src/scsi-linux.c:93 src/scsi-win32.c:84 msgid "" "No optical drives found in /dev.\n" "No drives will be pre-selected.\n" msgstr "" -#: src/scsi-layer.c:104 +#: src/scsi-layer.c:106 #, c-format msgid "" "Can open %s, but INQUIRY fails.\n" @@ -5414,27 +5414,27 @@ msgstr "" "Oppure prova ad usare /dev/scd? o /dev/sr?,\n" "oppure disabilita l'emulazione ide-scsi.\n" -#: src/scsi-layer.c:112 +#: src/scsi-layer.c:114 #, c-format msgid "INQUIRY failed. Something is wrong with drive %s.\n" msgstr "INQUIRY fallita. Qualcosa non va con il drive %s.\n" -#: src/scsi-layer.c:141 +#: src/scsi-layer.c:143 #, c-format msgid "Device %s (%s) is not an optical drive." msgstr "La periferica %s (%s) non è un CDROM." -#: src/scsi-layer.c:142 +#: src/scsi-layer.c:144 #, c-format msgid "Device %s (%s) is a hard disk." msgstr "La periferica %s (%s) è un disco rigido." -#: src/scsi-layer.c:433 +#: src/scsi-layer.c:435 #, c-format msgid "Incomplete %s" msgstr "" -#: src/scsi-layer.c:471 +#: src/scsi-layer.c:473 #, c-format msgid "" "%s\n" @@ -5443,16 +5443,16 @@ msgstr "" "%s\n" "Non riesco ad indentificare lunghezza della TOC.\n" -#: src/scsi-layer.c:476 +#: src/scsi-layer.c:478 msgid "blank" msgstr "" -#: src/scsi-layer.c:491 src/scsi-layer.c:552 +#: src/scsi-layer.c:493 src/scsi-layer.c:554 #, c-format msgid "TOC info too long (%d), probably multisession.\n" msgstr "TOC info troppo lunga (%d), probabile multisessione.\n" -#: src/scsi-layer.c:506 +#: src/scsi-layer.c:508 #, c-format msgid "" "%s\n" @@ -5461,7 +5461,7 @@ msgstr "" "%s\n" "Non riesco a leggere la TOC.\n" -#: src/scsi-layer.c:533 +#: src/scsi-layer.c:535 #, c-format msgid "" "%s\n" @@ -5470,12 +5470,12 @@ msgstr "" "%s\n" "Non riesco a leggere tutta la lunghezza della TOC.\n" -#: src/scsi-layer.c:546 +#: src/scsi-layer.c:548 #, c-format msgid "TOC info too short, length %d.\n" msgstr "TOC info troppo corta, lunghezza %d.\n" -#: src/scsi-layer.c:568 +#: src/scsi-layer.c:570 #, c-format msgid "" "%s\n" @@ -5484,7 +5484,7 @@ msgstr "" "%s\n" "Non riesco a leggere tutta la TOC.\n" -#: src/scsi-layer.c:577 +#: src/scsi-layer.c:579 #, c-format msgid "" "\n" @@ -5493,11 +5493,11 @@ msgstr "" "\n" "formato TOC inatteso (lunghezza %d):\n" -#: src/scsi-layer.c:585 +#: src/scsi-layer.c:587 msgid "Consider sending a bug report.\n" msgstr "Considera di inviare una comunicazione di errore.\n" -#: src/scsi-layer.c:638 +#: src/scsi-layer.c:643 #, c-format msgid "" "%s\n" @@ -5506,12 +5506,12 @@ msgstr "" "%s\n" "Non posso identificare la lunghezza della struttura del dvd.\n" -#: src/scsi-layer.c:650 +#: src/scsi-layer.c:655 #, c-format msgid "Could not query dvd physical structure - implausible packet length %d\n" msgstr "Non riesco ad identificare la struttura fisica del dvd - lunghezza pachetto non plausibile %d\n" -#: src/scsi-layer.c:668 +#: src/scsi-layer.c:673 #, c-format msgid "" "%s\n" @@ -5520,26 +5520,26 @@ msgstr "" "%s\n" "Non riesco ad identificare la struttura fisica del dvd\n" -#: src/scsi-layer.c:697 src/scsi-layer.c:707 +#: src/scsi-layer.c:702 src/scsi-layer.c:712 #, c-format msgid "READ DVD STRUCTURE: implausible medium size, %-%=% sectors\n" msgstr "" -#: src/scsi-layer.c:976 +#: src/scsi-layer.c:981 #, c-format msgid "" "%s\n" "Could not query BD disc structure length.\n" msgstr "" -#: src/scsi-layer.c:1000 +#: src/scsi-layer.c:1005 #, c-format msgid "" "%s\n" "Could not query BD disc structure.\n" msgstr "" -#: src/scsi-layer.c:1704 +#: src/scsi-layer.c:1709 #, c-format msgid "" "%s\n" @@ -5548,14 +5548,14 @@ msgstr "" "%s\n" "Non posso identificare la lunghezza della struttura dvd per il format code 1.\n" -#: src/scsi-layer.c:1715 +#: src/scsi-layer.c:1720 #, c-format msgid "Could not query dvd copyright info - implausible packet length %d\n" msgstr "" "Non posso identificare le informazioni del copyright del dvd\n" "- lunghezza del pacchetto non plausibile %d\n" -#: src/scsi-layer.c:1730 +#: src/scsi-layer.c:1735 #, c-format msgid "" "%s\n" @@ -5564,23 +5564,23 @@ msgstr "" "%s\n" "Non posso identificare le informazioni del copyright.\n" -#: src/scsi-layer.c:1791 +#: src/scsi-layer.c:1796 msgid "is undecideable because of read error" msgstr "Illeggibile per errori di lettura" -#: src/scsi-layer.c:1797 +#: src/scsi-layer.c:1802 msgid "looks GOOD" msgstr "sembra BUONA" -#: src/scsi-layer.c:1803 +#: src/scsi-layer.c:1808 msgid "gives unformatted size (UNUSABLE)" msgstr "rende la dimensione non formattata (INUTILIZZABILE)" -#: src/scsi-layer.c:1808 +#: src/scsi-layer.c:1813 msgid "is UNUSABLE" msgstr "è UTILIZZABILE" -#: src/scsi-layer.c:1834 +#: src/scsi-layer.c:1839 #, c-format msgid "" "%s\n" @@ -5589,12 +5589,12 @@ msgstr "" "%s\n" "Non riesco ad indentificare la dimensione del supporto.\n" -#: src/scsi-layer.c:1856 +#: src/scsi-layer.c:1861 #, c-format msgid "READ CAPACITY: implausible medium size, % sectors\n" msgstr "" -#: src/scsi-layer.c:1932 +#: src/scsi-layer.c:1937 #, c-format msgid "" "Different media sizes depending on query method:\n" @@ -5607,7 +5607,7 @@ msgstr "" "\"READ DVD STRUCTURE\": % Settori\n" "\n" -#: src/scsi-layer.c:1937 +#: src/scsi-layer.c:1942 msgid "" "Evaluation of returned medium sizes:\n" "\n" @@ -5615,15 +5615,15 @@ msgstr "" "Valutazione della dimensione del media:\n" "\n" -#: src/scsi-layer.c:1992 +#: src/scsi-layer.c:1997 msgid "Using value from READ CAPACITY" msgstr "Usa il valore dalla READ CAPACITY" -#: src/scsi-layer.c:1996 +#: src/scsi-layer.c:2001 msgid "Using value from READ DVD STRUCTURE" msgstr "Usa il valore dalla READ DVD STRUCTURE" -#: src/scsi-layer.c:2006 +#: src/scsi-layer.c:2011 #, c-format msgid "" "FAILED to determine image size.\n" @@ -5635,7 +5635,7 @@ msgstr "" "ma CONTINUATE A VOSTRO RISCHIO (l'immagine potrebbe essere\n" "incompleta o illeggibile)." -#: src/scsi-layer.c:2011 +#: src/scsi-layer.c:2016 #, c-format msgid "" "Final decision: %s\n" @@ -5644,7 +5644,7 @@ msgstr "" "Decisione finale: %s\n" "\n" -#: src/scsi-layer.c:2019 +#: src/scsi-layer.c:2024 msgid "" "Failed to determine image size.\n" "Try using a different drive." @@ -5652,51 +5652,51 @@ msgstr "" "Impossibile determinare la dimensione dell'immagine.\n" "Provare ad utilizzare un drive diverso." -#: src/scsi-layer.c:2146 src/scsi-layer.c:2172 +#: src/scsi-layer.c:2151 src/scsi-layer.c:2177 #, c-format msgid "" "%s\n" "Could not load/unload the medium.\n" msgstr "" -#: src/scsi-layer.c:2162 +#: src/scsi-layer.c:2167 #, c-format msgid "" "%s\n" "Could not unlock the medium.\n" msgstr "" -#: src/scsi-layer.c:2228 +#: src/scsi-layer.c:2230 #, c-format msgid "Waiting 10 seconds for drive: %d\n" msgstr "" -#: src/scsi-layer.c:2511 +#: src/scsi-layer.c:2505 #, c-format msgid "Sectors % - %: %s\n" msgstr "" -#: src/scsi-layer.c:2525 +#: src/scsi-layer.c:2519 #, c-format msgid "Sector %, try %d: %s Sector returned: %d.\n" msgstr "" -#: src/scsi-layer.c:2531 +#: src/scsi-layer.c:2525 #, c-format msgid "Sector %, try %d: %s\n" msgstr "" -#: src/scsi-layer.c:2542 +#: src/scsi-layer.c:2536 #, c-format msgid "Sector %, try %d: success\n" msgstr "" -#: src/scsi-layer.c:2614 +#: src/scsi-layer.c:2608 #, c-format msgid "Device %s: no medium present\n" msgstr "" -#: src/scsi-layer.c:2619 +#: src/scsi-layer.c:2613 #, c-format msgid "" "Device %s does not become ready:\n" @@ -5704,7 +5704,7 @@ msgid "" "\n" msgstr "" -#: src/scsi-layer.c:2625 +#: src/scsi-layer.c:2619 #, c-format msgid "" "\n" @@ -5713,63 +5713,63 @@ msgstr "" "\n" "Periferica: %s, %s\n" -#: src/scsi-layer.c:2632 +#: src/scsi-layer.c:2626 msgid "Drive failed to report media type." msgstr "" -#: src/scsi-layer.c:2647 src/scsi-layer.c:2759 +#: src/scsi-layer.c:2641 src/scsi-layer.c:2753 #, c-format msgid "This software does not support \"%s\" type media." msgstr "" -#: src/scsi-layer.c:2655 +#: src/scsi-layer.c:2649 #, c-format msgid "This software does not support multisession (%d sessions) media." msgstr "" -#: src/scsi-layer.c:2686 src/scsi-layer.c:2695 +#: src/scsi-layer.c:2680 src/scsi-layer.c:2689 msgid "Using READ CD" msgstr "" -#: src/scsi-layer.c:2687 +#: src/scsi-layer.c:2681 msgid ", RAW reading" msgstr "" -#: src/scsi-layer.c:2690 +#: src/scsi-layer.c:2684 #, c-format msgid ", Mode page 1 ERP = %02xh" msgstr "" -#: src/scsi-layer.c:2693 +#: src/scsi-layer.c:2687 msgid ", C2 scanning" msgstr "" -#: src/scsi-layer.c:2700 +#: src/scsi-layer.c:2694 msgid "Using READ(10).\n" msgstr "" -#: src/scsi-layer.c:2736 +#: src/scsi-layer.c:2730 #, c-format msgid "Medium: %s, % sectors%s" msgstr "Supporto: %s, % settori%s" -#: src/scsi-layer.c:2740 +#: src/scsi-layer.c:2734 #, c-format msgid "Medium \"%s\": %s, % sectors%s created %s" msgstr "Supporto \"%s\": %s, % settori%s creato %s" -#: src/scsi-netbsd.c:103 +#: src/scsi-netbsd.c:105 msgid "" "No optical drives found.\n" "No drives will be pre-selected.\n" msgstr "" -#: src/scsi-simulated.c:37 +#: src/scsi-simulated.c:39 #, c-format msgid "Simulated CD (%s)" msgstr "" -#: src/scsi-unknown.c:35 +#: src/scsi-unknown.c:37 msgid "" "* Unsupported operating system - no SCSI layer available.\n" "* No drives can be used.\n" @@ -5789,42 +5789,11 @@ msgstr "" msgid "Could not open device %s." msgstr "" -#: src/show-html.c:78 -msgid "windowtitle|Choose a browser" -msgstr "Scegli un Browser" - -#: src/show-html.c:115 -msgid "windowtitle|Browser required" -msgstr "E' richiesto un browser" - -#: src/show-html.c:131 -msgid "" -"Could not find a suitable browser.\n" -"\n" -"Which browser would you like to use\n" -"for reading the online documentation?\n" -"\n" -"Please enter its name (e.g. mozilla) or\n" -"use the \"Search\" button for a file dialog.\n" -msgstr "" -"Impossibile trovare un Browser adeguato.\n" -"\n" -"Che browser preferisci utilizzare per leggere\n" -"la documentazione online?\n" -"\n" -"Inserisci il suo nome (ad. es. mozilla)\n" -"oppure utilizza il pulsante \"Cerca\"\n" -"per la ricerca dei file.\n" - -#: src/show-html.c:144 src/show-manual.c:145 -msgid "Search" -msgstr "Cerca" - -#: src/show-html.c:337 src/show-manual.c:324 +#: src/show-manual.c:83 msgid "Documentation not installed." msgstr "" -#: src/show-html.c:382 src/show-manual.c:340 +#: src/show-manual.c:98 #, c-format msgid "" "Documentation file\n" @@ -5832,85 +5801,129 @@ msgid "" "not found.\n" msgstr "" -#: src/show-html.c:391 -msgid "Please hang on until the browser comes up!" -msgstr "Prego attendere finchè il browser non si avvia!" - -#: src/show-manual.c:79 -msgid "windowtitle|Choose a PDF viewer" +#: src/show-manual.c:114 +msgid "Could not create pipe before fork" msgstr "" -#: src/show-manual.c:116 -msgid "windowtitle|PDF viewer required" +#: src/show-manual.c:122 +msgid "Could not fork to start xdg-open" msgstr "" -#: src/show-manual.c:132 +#: src/show-manual.c:145 +#, c-format msgid "" -"Could not find a suitable PDF viewer.\n" -"\n" -"Which PDF viewer would you like to use\n" -"for reading the online documentation?\n" -"\n" -"Please enter its name (e.g. xpdf) or\n" -"use the \"Search\" button for a file dialog.\n" +"execvp could not execute \"xdg-open\":\n" +"%s\n" +"Is xdg-open installed correctly?\n" msgstr "" -#: src/show-manual.c:349 -msgid "Please hang on until the viewer comes up!" -msgstr "" - -#: src/udf.c:257 +#: src/udf.c:259 msgid "Unnamed" msgstr "Non intestato" -#: src/udf.c:348 +#: src/udf.c:350 msgid "Example disc" msgstr "" -#: src/welcome-window.c:82 +#: src/welcome-window.c:84 msgid "" -"This is v0.79.6-pl8. The patchlevel series are enhanced from the last upstream pre-release.\n" -"We add support for a CLI version, BD-R TL/QL, a Windows build, an option to produce bigger BD-R RS03,\n" +"This is v0.79.10-pl1. The patchlevel series are enhanced from the last upstream release.\n" +"We add support for BD-R TL/QL, a Windows build, an option to produce bigger BD-R RS03,\n" "images, support for stripping ECC from ISOs, re-enabled adaptive reading (except for RS03), and more.\n" "\n" -"Please refer to the Help > Change log menu for all the details.\n" -"The warning message from the pre-release version is retained below.\n" +"Please refer to the Help > Change log menu for all the details." msgstr "" -#: src/welcome-window.c:89 -msgid "" -"Please note:\n" -"This is a pre-release for expert users.\n" -"It may contain unfinished features.\n" -"Adaptive reading is unavailable in this version.\n" -"It will be re-introduced in one of the next releases." -msgstr "" - -#: src/welcome-window.c:97 +#: src/welcome-window.c:92 msgid "Show this message again" msgstr "" -#: src/welcome-window.c:143 +#: src/welcome-window.c:138 msgid "Welcome to dvdisaster!" msgstr "" -#: src/welcome-window.c:145 +#: src/welcome-window.c:140 msgid "" "\n" "dvdisaster creates error correction data to protect\n" "optical media (CD,DVD,BD) against data loss.\n" msgstr "" -#: src/welcome-window.c:148 +#: src/welcome-window.c:143 msgid "" "Please see the [manual] for typical uses of dvdisaster.\n" "\n" msgstr "" -#: src/welcome-window.c:151 +#: src/welcome-window.c:146 msgid "New in this Version:" msgstr "" +#~ msgid "Copyright 2004-2017 Carsten Gnoerlich" +#~ msgstr "Copyright 2004-2017 Carsten Gnörlich" + +#~ msgid "Read position: %3d.%1d%% (%4.1fx)" +#~ msgstr "Settori processati: %3d.%1d%% (%4.1fx)" + +#~ msgid "" +#~ "%d sectors missing at the end of the disc.\n" +#~ "This is okay if the CD was written in TAO (track at once) mode.\n" +#~ "The Image will be truncated accordingly. See the manual for details.\n" +#~ msgstr "" +#~ "%d mancanti alla fine del disco.\n" +#~ "Questo è corretto se il disco è stato scritto in modalità TAO (track at once).\n" +#~ "L'imagine sarà aggiustata di conseguenza.Leggere il manuale per i dettagli.\n" + +#~ msgid "" +#~ "%d sectors missing at the end of the disc.\n" +#~ "This is okay if the CD was written in TAO (track at once) mode.\n" +#~ "The Image will be truncated accordingly. See the manual for details.\n" +#~ "Use the --dao option to disable image truncating.\n" +#~ msgstr "" +#~ "%d mancanti alla fine del disco.\n" +#~ "Questo è corretto se il disco è stato scritto in modalità TAO (track at once).\n" +#~ "L'imagine sarà aggiustata di conseguenza.Leggere il manuale per i dettagli.\n" +#~ "Usare l'opzione --dao per disabilitare l'aggiustamento dell'immagine.\n" + +#~ msgid "" +#~ "* requires : dvdisaster-%d.%d (BAD)\n" +#~ "* Warning : The following output might be incorrect.\n" +#~ "* : Please visit http://www.dvdisaster.org for an upgrade.\n" +#~ msgstr "" +#~ "* Richiede : dvdisaster-%d.%d (BAD)\n" +#~ "* Attenzione : L'output seguente potrebbe essere non corretto.\n" +#~ "* : Prego visitare http://www.dvdisaster.org per un upgrade\n" + +#~ msgid "windowtitle|Choose a browser" +#~ msgstr "Scegli un Browser" + +#~ msgid "windowtitle|Browser required" +#~ msgstr "E' richiesto un browser" + +#~ msgid "" +#~ "Could not find a suitable browser.\n" +#~ "\n" +#~ "Which browser would you like to use\n" +#~ "for reading the online documentation?\n" +#~ "\n" +#~ "Please enter its name (e.g. mozilla) or\n" +#~ "use the \"Search\" button for a file dialog.\n" +#~ msgstr "" +#~ "Impossibile trovare un Browser adeguato.\n" +#~ "\n" +#~ "Che browser preferisci utilizzare per leggere\n" +#~ "la documentazione online?\n" +#~ "\n" +#~ "Inserisci il suo nome (ad. es. mozilla)\n" +#~ "oppure utilizza il pulsante \"Cerca\"\n" +#~ "per la ricerca dei file.\n" + +#~ msgid "Search" +#~ msgstr "Cerca" + +#~ msgid "Please hang on until the browser comes up!" +#~ msgstr "Prego attendere finchè il browser non si avvia!" + #~ msgid "" #~ "\n" #~ "Common usage examples:\n" @@ -6266,18 +6279,6 @@ msgstr "" #~ "non trovati.\n" #~ "Si prega di installare il pacchetto dvdisaster-doc.\n" -#~ msgid "Copyright 2004-2018 Carsten Gnoerlich" -#~ msgstr "Copyright 2004-2018 Carsten Gnörlich" - -#~ msgid "" -#~ "* requires : dvdisaster-%d.%d (BAD)\n" -#~ "* Warning : The following output might be incorrect.\n" -#~ "* : Please visit http://www.dvdisaster.org for an upgrade.\n" -#~ msgstr "" -#~ "* Richiede : dvdisaster-%d.%d (BAD)\n" -#~ "* Attenzione : L'output seguente potrebbe essere non corretto.\n" -#~ "* : Prego visitare http://www.dvdisaster.org per un upgrade\n" - #~ msgid "created by dvdisaster-%d.%d\n" #~ msgstr "Creato da dvdisaster-%d.%d\n" @@ -6463,6 +6464,13 @@ msgstr "" #~ msgid "--cache-size must at least be 1MiB; 16MiB or higher is recommended." #~ msgstr "la --cache-size deve essere minimo 1MiB; sono consigliati 16MiB o più." +#~ msgid "" +#~ "\n" +#~ "e-mail: carsten@dvdisaster.com -or- cgnoerlich@fsfe.org" +#~ msgstr "" +#~ "\n" +#~ "e-mail: carsten@dvdisaster.com o cgnoerlich@fsfe.org" + #~ msgid "illegal data_mode: %d" #~ msgstr "data_mode illegale: %d" diff --git a/locale/pt_BR.po b/locale/pt_BR.po index 64a9d07..4ade4a9 100644 --- a/locale/pt_BR.po +++ b/locale/pt_BR.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: dvdisaster 0.72.rc2\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-06-27 23:00+0200\n" +"POT-Creation-Date: 2021-10-09 14:18+0200\n" "PO-Revision-Date: 2010-06-09 11:13+0200\n" "Last-Translator: cg \n" "Language-Team: Portuguese\n" @@ -17,7 +17,7 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" -#: src/closure.c:391 +#: src/closure.c:296 #, c-format msgid "" "# dvdisaster-%s configuration file\n" @@ -30,58 +30,58 @@ msgstr "" "# que será sobreescrevido toda vez que o dvdisaster rodar.\n" "\n" -#: src/closure.c:613 +#: src/closure.c:564 msgid "medium.iso" msgstr "midia.iso" -#: src/closure.c:614 +#: src/closure.c:565 msgid "medium.ecc" msgstr "midia.ecc" -#: src/closure.c:615 +#: src/closure.c:566 msgid "sector-" msgstr "setor-" -#: src/debug.c:56 src/debug.c:155 src/debug.c:293 +#: src/debug.c:58 src/debug.c:157 src/debug.c:295 #, c-format msgid "Number of erasures must be > 0 and <= %d\n" msgstr "O número de rasuras deve ser > 0 e <= %d\n" -#: src/debug.c:70 src/debug.c:160 +#: src/debug.c:72 src/debug.c:162 #, c-format msgid "" "\n" "Generating random correctable erasures (%s; for %d roots, max erasures = %d).\n" msgstr "" -#: src/debug.c:103 src/debug.c:191 src/debug.c:239 src/debug.c:363 -#: src/debug.c:707 src/debug.c:807 src/debug.c:850 src/debug.c:1181 -#: src/debug.c:1189 src/debug.c:1266 src/rs01-common.c:175 -#: src/rs02-common.c:239 src/rs02-create.c:377 src/rs02-create.c:1032 -#: src/rs02-fix.c:414 src/rs02-verify.c:404 src/rs03-common.c:340 -#: src/rs03-create.c:756 src/rs03-create.c:781 +#: src/debug.c:105 src/debug.c:193 src/debug.c:241 src/debug.c:365 +#: src/debug.c:708 src/debug.c:808 src/debug.c:851 src/debug.c:1182 +#: src/debug.c:1190 src/debug.c:1267 src/rs01-common.c:177 +#: src/rs02-common.c:241 src/rs02-create.c:347 src/rs02-create.c:990 +#: src/rs02-fix.c:381 src/rs02-verify.c:398 src/rs03-common.c:341 +#: src/rs03-create.c:729 src/rs03-create.c:754 #, c-format msgid "Failed seeking to sector % in image: %s" msgstr "Falha ao ir para o setor % da imagem: %s" -#: src/debug.c:111 src/debug.c:196 src/debug.c:243 src/debug.c:368 -#: src/debug.c:545 src/debug.c:662 src/debug.c:713 src/debug.c:1193 -#: src/debug.c:1270 src/debug.c:1310 src/rs02-create.c:400 -#: src/rs02-create.c:426 src/rs02-create.c:1035 src/rs03-create.c:761 -#: src/rs03-create.c:785 src/udf.c:830 src/udf.c:888 src/udf.c:945 -#: src/udf.c:958 src/udf.c:963 src/udf.c:966 src/udf.c:969 src/udf.c:972 -#: src/udf.c:975 src/udf.c:978 +#: src/debug.c:113 src/debug.c:198 src/debug.c:245 src/debug.c:370 +#: src/debug.c:546 src/debug.c:663 src/debug.c:714 src/debug.c:1194 +#: src/debug.c:1271 src/debug.c:1311 src/rs02-create.c:370 +#: src/rs02-create.c:396 src/rs02-create.c:993 src/rs03-create.c:734 +#: src/rs03-create.c:758 src/udf.c:831 src/udf.c:889 src/udf.c:946 +#: src/udf.c:959 src/udf.c:964 src/udf.c:967 src/udf.c:970 src/udf.c:973 +#: src/udf.c:976 src/udf.c:979 #, c-format msgid "Failed writing to sector % in image: %s" msgstr "Falha ao gravar no setor % da imagem: %s" -#: src/debug.c:119 src/debug.c:249 src/debug.c:374 src/debug.c:666 -#: src/debug.c:720 src/debug.c:1284 +#: src/debug.c:121 src/debug.c:251 src/debug.c:376 src/debug.c:667 +#: src/debug.c:721 src/debug.c:1285 #, c-format msgid "Progress: %3d%%" msgstr "Progresso: %3d%%" -#: src/debug.c:124 src/debug.c:254 src/debug.c:379 +#: src/debug.c:126 src/debug.c:256 src/debug.c:381 #, c-format msgid "" "Progress: 100%%\n" @@ -92,32 +92,32 @@ msgstr "" "Recupere a imagem usando a opção --fix antes de fazer outro --random-busca de erros.\n" "Caso contrário, você acumulará >= %d bloco(s) de rasuras/ECC e a imagem será perdida.\n" -#: src/debug.c:299 +#: src/debug.c:301 #, c-format msgid "" "\n" "RS03 error correction file with %d roots.\n" msgstr "" -#: src/debug.c:300 +#: src/debug.c:302 #, c-format msgid "" "\n" "RS03 augmented image with %d roots.\n" msgstr "" -#: src/debug.c:301 +#: src/debug.c:303 #, c-format msgid "Generating at most %d random correctable erasures.\n" msgstr "" -#: src/debug.c:443 src/debug.c:501 src/debug.c:565 src/debug.c:606 -#: src/debug.c:689 src/debug.c:795 src/debug.c:836 src/debug.c:882 -#: src/debug.c:936 src/debug.c:1161 src/debug.c:1169 src/debug.c:1225 -#: src/debug.c:1230 src/misc.c:1393 src/raw-editor.c:364 src/read-adaptive.c:73 -#: src/read-adaptive.c:93 src/read-adaptive.c:1552 src/read-adaptive.c:1588 -#: src/read-linear.c:289 src/read-linear.c:291 src/read-linear.c:327 -#: src/read-linear.c:329 src/rs01-create.c:303 src/rs03-create.c:1352 +#: src/debug.c:445 src/debug.c:503 src/debug.c:566 src/debug.c:607 +#: src/debug.c:690 src/debug.c:796 src/debug.c:837 src/debug.c:883 +#: src/debug.c:937 src/debug.c:1162 src/debug.c:1170 src/debug.c:1226 +#: src/debug.c:1231 src/misc.c:763 src/raw-editor.c:366 src/read-adaptive.c:75 +#: src/read-adaptive.c:95 src/read-adaptive.c:1471 src/read-adaptive.c:1501 +#: src/read-linear.c:273 src/read-linear.c:275 src/read-linear.c:306 +#: src/read-linear.c:308 src/rs01-create.c:279 src/rs03-create.c:1308 #, c-format msgid "" "Can't open %s:\n" @@ -126,74 +126,74 @@ msgstr "" "Impossível abrir %s:\n" "%s" -#: src/debug.c:448 src/debug.c:1140 src/debug.c:1216 +#: src/debug.c:450 src/debug.c:1141 src/debug.c:1217 msgid "2nd argument is missing" msgstr "Falta o segundo argumento" -#: src/debug.c:455 src/debug.c:1146 +#: src/debug.c:457 src/debug.c:1147 msgid "3rd argument is missing" msgstr "Falta o terceiro argumento" -#: src/debug.c:462 src/debug.c:802 src/debug.c:843 src/debug.c:891 -#: src/debug.c:954 +#: src/debug.c:464 src/debug.c:803 src/debug.c:844 src/debug.c:892 +#: src/debug.c:955 #, c-format msgid "Sector must be in range [0..%]\n" msgstr "O setor deve estar no intervalo [0..%]\n" -#: src/debug.c:465 +#: src/debug.c:467 msgid "Byte position must be in range [0..2047]" msgstr "Posição do byte deve estar no intervalo [0..2047]" -#: src/debug.c:468 +#: src/debug.c:470 msgid "Byte value must be in range [0..255]" msgstr "O valor do byte deve estar no intervalo [0..255]" -#: src/debug.c:470 +#: src/debug.c:472 #, c-format msgid "Setting byte %d in sector % to value %d.\n" msgstr "Atribuindo ao byte %d no setor % o valor %d.\n" -#: src/debug.c:477 src/debug.c:531 src/debug.c:694 src/rs02-create.c:210 -#: src/rs02-verify.c:719 src/rs03-verify.c:1073 +#: src/debug.c:479 src/debug.c:532 src/debug.c:695 src/rs02-create.c:194 +#: src/rs02-verify.c:698 src/rs03-verify.c:990 #, c-format msgid "Failed seeking to start of image: %s\n" msgstr "Falha ao ir para o início da imagm: %s\n" -#: src/debug.c:481 +#: src/debug.c:483 msgid "Could not write the new byte value" msgstr "Impossível gravar o novo valor do byte" -#: src/debug.c:524 src/read-adaptive.c:830 +#: src/debug.c:525 src/read-adaptive.c:805 #, c-format msgid "Sectors must be in range [0..%].\n" msgstr "Os setores devem estar no intervalo [0..%].\n" -#: src/debug.c:526 +#: src/debug.c:527 #, c-format msgid "Erasing sectors [%,%]\n" msgstr "Apagando setores [%,%]\n" -#: src/debug.c:572 +#: src/debug.c:573 #, c-format msgid "New length must be in range [0..%].\n" msgstr "O novo tamanho deve estar no intervalo [0..%].\n" -#: src/debug.c:574 src/misc.c:1404 +#: src/debug.c:575 src/misc.c:774 #, c-format msgid "Truncating image to % sectors.\n" msgstr "Truncando imagem para % setores.\n" -#: src/debug.c:579 src/misc.c:1425 src/read-linear.c:1477 src/rs01-fix.c:230 -#: src/rs01-fix.c:253 src/rs01-fix.c:275 src/rs01-fix.c:315 -#: src/rs02-create.c:117 src/rs02-create.c:171 src/rs02-fix.c:268 -#: src/rs02-fix.c:288 src/rs02-fix.c:306 src/rs03-create.c:256 -#: src/rs03-create.c:345 src/rs03-fix.c:298 src/rs03-fix.c:337 -#: src/rs03-fix.c:359 src/rs03-fix.c:379 +#: src/debug.c:580 src/misc.c:795 src/read-linear.c:1458 src/rs01-fix.c:219 +#: src/rs01-fix.c:242 src/rs01-fix.c:259 src/rs01-fix.c:293 +#: src/rs02-create.c:107 src/rs02-create.c:155 src/rs02-fix.c:240 +#: src/rs02-fix.c:260 src/rs02-fix.c:274 src/rs03-create.c:246 +#: src/rs03-create.c:327 src/rs03-fix.c:268 src/rs03-fix.c:304 +#: src/rs03-fix.c:326 src/rs03-fix.c:342 #, c-format msgid "Could not truncate %s: %s\n" msgstr "Impossível truncar %s: %s\n" -#: src/debug.c:610 +#: src/debug.c:611 #, c-format msgid "" "\n" @@ -212,8 +212,8 @@ msgstr "" "dvdistater --debug %s % --random-seed %d\n" "\n" -#: src/debug.c:674 src/read-adaptive.c:382 src/read-linear.c:133 -#: src/read-linear.c:136 +#: src/debug.c:675 src/read-adaptive.c:382 src/read-linear.c:127 +#: src/read-linear.c:130 #, c-format msgid "" "Error closing image file:\n" @@ -222,11 +222,11 @@ msgstr "" "Erro ao fechar arquivo de imagem:\n" "%s" -#: src/debug.c:690 +#: src/debug.c:691 msgid "Replacing the \"unreadable sector\" markers with zeros.\n" msgstr "Substituindo os marcadores \"setor-ilegível\" por zeros.\n" -#: src/debug.c:700 +#: src/debug.c:701 #, c-format msgid "" "Could not read image sector %:\n" @@ -235,20 +235,20 @@ msgstr "" "Impossível ler o setor % da imagem:\n" "%s\n" -#: src/debug.c:725 +#: src/debug.c:726 #, c-format msgid "% \"unreadable sector\" markers replaced.\n" msgstr "% marcadores \"setor-ilegível\" substituidos.\n" -#: src/debug.c:811 src/debug.c:854 src/debug.c:1185 src/debug.c:1252 -#: src/debug.c:1256 src/debug.c:1306 src/rs01-common.c:191 -#: src/rs02-common.c:244 src/rs02-create.c:229 src/rs02-fix.c:417 -#: src/rs03-common.c:345 +#: src/debug.c:812 src/debug.c:855 src/debug.c:1186 src/debug.c:1253 +#: src/debug.c:1257 src/debug.c:1307 src/rs01-common.c:193 +#: src/rs02-common.c:246 src/rs02-create.c:211 src/rs02-fix.c:384 +#: src/rs03-common.c:346 #, c-format msgid "Failed reading sector % in image: %s" msgstr "Falha ao ler setor % da imagem: %s" -#: src/debug.c:845 src/debug.c:894 src/debug.c:957 +#: src/debug.c:846 src/debug.c:895 src/debug.c:958 #, c-format msgid "" "Contents of sector %:\n" @@ -257,49 +257,49 @@ msgstr "" "Conteúdo do setor %:\n" "\n" -#: src/debug.c:905 +#: src/debug.c:906 #, c-format msgid "Failed reading sector %: %s" msgstr "Falha ao ler setor %: %s" -#: src/debug.c:944 +#: src/debug.c:945 msgid "Raw reading only possible on CD media\n" msgstr "leitura em modo Raw só é possível em mídia CD\n" -#: src/debug.c:1152 +#: src/debug.c:1153 msgid "4th argument is missing" msgstr "Falta o quarto argumento" -#: src/debug.c:1165 +#: src/debug.c:1166 #, c-format msgid "Source sector must be in range [0..%]\n" msgstr "Setor fonte deve estar no intervalo [0..%]\n" -#: src/debug.c:1173 +#: src/debug.c:1174 #, c-format msgid "Destination sector must be in range [0..%]\n" msgstr "Setor de destinho deve estar no intervalo [0..%]\n" -#: src/debug.c:1177 +#: src/debug.c:1178 #, c-format msgid "Copying sector % from %s to sector % in %s.\n" msgstr "Copiando setor % de %s para o setor % em %s.\n" -#: src/ds-marker.c:267 +#: src/ds-marker.c:269 msgid "Stop reporting these errors" msgstr "Parar de reportar esses erros" -#: src/ds-marker.c:268 +#: src/ds-marker.c:270 msgid "Continue reporting" msgstr "Continuar reportando" -#: src/ds-marker.c:302 +#: src/ds-marker.c:297 msgid "" "* ... more unrecoverable sectors found ...\n" "* further messages are suppressed unless the -v option is given.\n" msgstr "" -#: src/ds-marker.c:318 +#: src/ds-marker.c:311 #, c-format msgid "" "\n" @@ -314,7 +314,7 @@ msgstr "" "%s\n" "\n" -#: src/ds-marker.c:321 +#: src/ds-marker.c:312 #, c-format msgid "" "\n" @@ -325,7 +325,7 @@ msgid "" "* " msgstr "" -#: src/ds-marker.c:331 +#: src/ds-marker.c:322 #, c-format msgid "" "Unrecoverable sector found!\n" @@ -342,7 +342,7 @@ msgid "" "error correction data for it. Sorry for the bad news.\n" msgstr "" -#: src/ds-marker.c:358 +#: src/ds-marker.c:345 #, c-format msgid "" "Unrecoverable sector found!\n" @@ -359,7 +359,7 @@ msgid "" "error correction data for it. Sorry for the bad news.\n" msgstr "" -#: src/ds-marker.c:388 +#: src/ds-marker.c:371 #, c-format msgid "" "Unrecoverable sector found!\n" @@ -386,7 +386,7 @@ msgstr "" "Também não será possível criar dados de correção de erros para ela.\n" "Desculpe pelas más notícias.\n" -#: src/ds-marker.c:415 +#: src/ds-marker.c:394 #, c-format msgid "" "Unrecoverable sector found!\n" @@ -402,83 +402,83 @@ msgstr "" #. TRANSLATORS: #. This is a dummy entry which is supposed to translate into "ok". #. Please do not return anything else here. -#: src/dvdisaster.c:168 src/dvdisaster.c:180 +#: src/dvdisaster.c:170 src/dvdisaster.c:182 msgid "test phrase for verifying the locale installation" msgstr "ok" -#: src/dvdisaster.c:372 +#: src/dvdisaster.c:374 msgid "-o/--ecc-target expects 'file' or 'image'" msgstr "" -#: src/dvdisaster.c:398 +#: src/dvdisaster.c:400 #, c-format msgid "--threads must be 1..%d\n" msgstr "--threads devem ser de 1..%d\n" -#: src/dvdisaster.c:415 +#: src/dvdisaster.c:417 msgid "--cache-size must at least be 8MiB; 16MiB or higher is recommended." msgstr "--cache-size deve ser pelo menos 8MiB; 16MiB ou mais são recomendados." -#: src/dvdisaster.c:417 +#: src/dvdisaster.c:419 #, c-format msgid "--cache-size maximum is %dMiB." msgstr "" -#: src/dvdisaster.c:440 +#: src/dvdisaster.c:442 msgid "--encoding-algorithm: SSE2 not supported on this processor!" msgstr "" -#: src/dvdisaster.c:444 +#: src/dvdisaster.c:446 msgid "--encoding-algorithm: valid types are 32bit, 64bit, SSE2" msgstr "" -#: src/dvdisaster.c:451 +#: src/dvdisaster.c:453 msgid "--encoding-algorithm: AltiVec not supported on this processor!" msgstr "" -#: src/dvdisaster.c:455 +#: src/dvdisaster.c:457 msgid "--encoding-algorithm: valid types are 32bit, 64bit, AltiVec" msgstr "" -#: src/dvdisaster.c:458 +#: src/dvdisaster.c:460 msgid "--encoding-algorithm: valid types are 32bit, 64bit" msgstr "" -#: src/dvdisaster.c:467 +#: src/dvdisaster.c:469 msgid "--encoding-io-strategy: mmap not supported on this OS" msgstr "" -#: src/dvdisaster.c:471 +#: src/dvdisaster.c:473 msgid "--encoding-io-strategy: valid types are readwrite and mmap" msgstr "" -#: src/dvdisaster.c:481 +#: src/dvdisaster.c:483 msgid "Valid args for --driver: sg,cdrom" msgstr "" -#: src/dvdisaster.c:483 +#: src/dvdisaster.c:485 msgid "--driver is only supported on GNU/Linux" msgstr "--driver suportado apenas no GNU/Linux" -#: src/dvdisaster.c:497 +#: src/dvdisaster.c:499 msgid "--fixed-speed-values is only allowed in debug mode" msgstr "" -#: src/dvdisaster.c:552 +#: src/dvdisaster.c:554 #, c-format msgid "--prefetch-sectors must be in range 32...%d" msgstr "" -#: src/dvdisaster.c:606 +#: src/dvdisaster.c:608 msgid "--set-version is only allowed in debug mode" msgstr "" -#: src/dvdisaster.c:713 +#: src/dvdisaster.c:715 #, c-format msgid "?? illegal getopt return value %d\n" msgstr "?? valor de retorno de getopt %d ilegal\n" -#: src/dvdisaster.c:806 src/main-window.c:149 +#: src/dvdisaster.c:808 src/main-window.c:153 #, c-format msgid "" "\n" @@ -489,8 +489,8 @@ msgstr "" "Método %s não disponível.\n" "Use -m sem parâmetros para uma lista de métodos.\n" -#: src/dvdisaster.c:817 src/rs01-create.c:285 src/rs02-create.c:1075 -#: src/rs03-create.c:1320 +#: src/dvdisaster.c:819 src/rs01-create.c:261 src/rs02-create.c:1031 +#: src/rs03-create.c:1276 #, c-format msgid "" "\n" @@ -499,25 +499,25 @@ msgstr "" "\n" "Abrindo %s" -#: src/dvdisaster.c:824 src/rs01-create.c:294 src/rs02-create.c:175 -#: src/rs02-create.c:1085 src/rs03-create.c:349 src/rs03-create.c:1335 +#: src/dvdisaster.c:826 src/rs01-create.c:270 src/rs02-create.c:159 +#: src/rs02-create.c:1041 src/rs03-create.c:331 src/rs03-create.c:1291 #, c-format msgid ": % medium sectors.\n" msgstr ": % setores da mídia.\n" -#: src/dvdisaster.c:825 src/rs01-create.c:295 src/rs02-create.c:176 -#: src/rs02-create.c:1086 src/rs03-create.c:350 src/rs03-create.c:1336 +#: src/dvdisaster.c:827 src/rs01-create.c:271 src/rs02-create.c:160 +#: src/rs02-create.c:1042 src/rs03-create.c:332 src/rs03-create.c:1292 #, c-format msgid ": % medium sectors and %d bytes.\n" msgstr ": % setores da mídia e %d bytes.\n" -#: src/dvdisaster.c:852 src/main-window.c:212 +#: src/dvdisaster.c:854 src/main-window.c:216 msgid "RS01 method not available for comparing files." msgstr "Método RS01 não está disponível para comparar arquivos." #. TRANSLATORS: Program options like -r and --read are not to be translated #. to avoid confusion when discussing the program in international forums. -#: src/dvdisaster.c:950 +#: src/dvdisaster.c:952 msgid "" "\n" "Common usage examples:\n" @@ -543,7 +543,7 @@ msgstr "" " dvdisaster -u,--unlink # Apaga arquivos .iso (quando outras ações estão completas)\n" "\n" -#: src/dvdisaster.c:960 +#: src/dvdisaster.c:962 #, c-format msgid "" "Drive and file specification:\n" @@ -554,300 +554,304 @@ msgid "" " -o,--ecc-target [file image] - where to put ecc data in RS03\n" msgstr "" -#: src/dvdisaster.c:970 +#: src/dvdisaster.c:972 msgid "Tweaking options (see manual before using!)\n" msgstr "Opções avançadas (leio o manual antes de usar!)\n" -#: src/dvdisaster.c:971 +#: src/dvdisaster.c:973 msgid " -a,--assume x,y,... - assume image is augmented with codec(s) x,y,...\n" msgstr "" -#: src/dvdisaster.c:972 +#: src/dvdisaster.c:974 msgid " -j,--jump n - jump n sectors forward after a read error (default: 16)\n" msgstr " -j,--jump n - pula n setores adiante após um erro de leitura (padrão: 16)\n" -#: src/dvdisaster.c:973 +#: src/dvdisaster.c:975 msgid " -m n - list/select error correction methods (default: RS01)\n" msgstr " -m n - lista/seleciona métodos de correção de erros (Padrão: (RS01)\n" -#: src/dvdisaster.c:974 +#: src/dvdisaster.c:976 #, c-format msgid "" " -n,--redundancy n%% - error correction data redundancy\n" " allowed values depend on codec (see manual)\n" msgstr "" -#: src/dvdisaster.c:976 +#: src/dvdisaster.c:978 msgid " -v,--verbose - more diagnostic messages\n" msgstr " -v,--verbose - mais mensagens de diagnóstico\n" -#: src/dvdisaster.c:977 +#: src/dvdisaster.c:979 msgid " -x,--threads n - use n threads for en-/decoding (if supported by codec)\n" msgstr "" -#: src/dvdisaster.c:978 +#: src/dvdisaster.c:980 msgid " --adaptive-read - use optimized strategy for reading damaged media\n" msgstr " --adaptive-read - usa estratégia otimizada para leitura de mídia danificada\n" -#: src/dvdisaster.c:979 +#: src/dvdisaster.c:981 msgid " --auto-suffix - automatically add .iso and .ecc file suffixes\n" msgstr " --auto-suffix - adiciona sufixos .iso e .ecc aos arquivos automaticamente\n" -#: src/dvdisaster.c:980 +#: src/dvdisaster.c:982 msgid " --cache-size n - image cache size in MiB during -c mode (default: 32MiB)\n" msgstr " --cache-size n - tamanho do cache da imagem em MiB durante o modo -c (padrão: 32MiB)\n" -#: src/dvdisaster.c:981 +#: src/dvdisaster.c:983 msgid " --dao - assume DAO disc; do not trim image end\n" msgstr " --dao - assume que é um disco DAO; não cortar o fim da imagem\n" -#: src/dvdisaster.c:982 +#: src/dvdisaster.c:984 msgid " --defective-dump d - directory for saving incomplete raw sectors\n" msgstr " --defective-dump d - diretório para salvar setores raw incompletos\n" -#: src/dvdisaster.c:984 +#: src/dvdisaster.c:986 msgid " --driver=sg/cdrom - use sg(default) or alternative cdrom driver (see man page!)\n" msgstr "" -#: src/dvdisaster.c:986 +#: src/dvdisaster.c:988 msgid " --eject - eject medium after successful read\n" msgstr " --eject - ejeta a mídia após uma leitura bem-sucedida\n" -#: src/dvdisaster.c:987 +#: src/dvdisaster.c:989 msgid " --encoding-algorithm n - possible values: 32bit,64bit,SSE2,AltiVec\n" msgstr "" -#: src/dvdisaster.c:988 +#: src/dvdisaster.c:990 msgid " --encoding-io-strategy n - possible values: readwrite, mmap\n" msgstr "" -#: src/dvdisaster.c:989 +#: src/dvdisaster.c:991 msgid " --fill-unreadable n - fill unreadable sectors with byte n\n" msgstr " --fill-unreadable n - preenche setores ilegíveis com o byte n\n" -#: src/dvdisaster.c:990 +#: src/dvdisaster.c:992 msgid " --ignore-fatal-sense - continue reading after potentially fatal error conditon\n" msgstr " --ignore-fatal-sense - continua a leitura após condição de erro possivelmente fatal\n" -#: src/dvdisaster.c:991 +#: src/dvdisaster.c:993 msgid " --ignore-iso-size - ignore image size from ISO/UDF data (dangerous - see man page!)\n" msgstr "" -#: src/dvdisaster.c:992 +#: src/dvdisaster.c:994 msgid " --internal-rereads n - drive may attempt n rereads before reporting an error\n" msgstr " --internal-rereads n - o dispositivo pode tentar n re-leituras antes de reportar um erro\n" -#: src/dvdisaster.c:993 +#: src/dvdisaster.c:995 msgid " --medium-info - print info about medium in drive\n" msgstr "" -#: src/dvdisaster.c:994 +#: src/dvdisaster.c:996 msgid " --no-bdr-defect-management - use bigger RS03 images for BD-R (see man page!)\n" msgstr "" -#: src/dvdisaster.c:995 +#: src/dvdisaster.c:997 msgid " --no-progress - do not print progress information\n" msgstr "" -#: src/dvdisaster.c:996 +#: src/dvdisaster.c:998 msgid " --old-ds-marker - mark missing sectors compatible with dvdisaster <= 0.70\n" msgstr "" -#: src/dvdisaster.c:997 +#: src/dvdisaster.c:999 msgid " --prefetch-sectors n - prefetch n sectors for RS03 encoding (uses ~nMiB)\n" msgstr "" -#: src/dvdisaster.c:998 +#: src/dvdisaster.c:1000 msgid " --raw-mode n - mode for raw reading CD media (20 or 21)\n" msgstr " --raw-mode n - modo para leitura de mídia CD em modo raw (20 ou 21)\n" -#: src/dvdisaster.c:999 +#: src/dvdisaster.c:1001 msgid " --read-attempts n-m - attempts n up to m reads of a defective sector\n" msgstr " --read-attempts n-m - tenta de n a m leituras em um setor defeituoso\n" -#: src/dvdisaster.c:1000 +#: src/dvdisaster.c:1002 msgid " --read-medium n - read the whole medium up to n times\n" msgstr " --read-medium n - faz uma leitura em modo raw, se possível\n" -#: src/dvdisaster.c:1001 +#: src/dvdisaster.c:1003 msgid " --read-raw - performs read in raw mode if possible\n" msgstr "" -#: src/dvdisaster.c:1002 +#: src/dvdisaster.c:1004 msgid " --regtest - tweaks output for compatibility with regtests\n" msgstr "" -#: src/dvdisaster.c:1003 +#: src/dvdisaster.c:1005 msgid " --resource-file p - get resource file from given path\n" msgstr "" -#: src/dvdisaster.c:1004 +#: src/dvdisaster.c:1006 msgid " --speed-warning n - print warning if speed changes by more than n percent\n" msgstr " --speed-warning n - mostra um aviso se a velocidade variar mais do que n porcento\n" -#: src/dvdisaster.c:1005 +#: src/dvdisaster.c:1007 msgid " --spinup-delay n - wait n seconds for drive to spin up\n" msgstr " --spinup-delay n - aguarda n segundos para que o drive gire\n" -#: src/dvdisaster.c:1009 -msgid "Debugging options (purposefully undocumented and possibly harmful)\n" -msgstr "Opções de depuração (propositalmente não-documentadas e possivelmente perigosas)\n" - -#: src/dvdisaster.c:1010 -msgid " --debug - enables the following options\n" -msgstr " --debug - habilita as opções seguintes\n" - -#: src/dvdisaster.c:1011 -msgid " --permissive-medium-type - allow more media types, even theoretically unsupported ones\n" +#: src/dvdisaster.c:1008 +msgid " --version - print version and some configuration info\n" msgstr "" #: src/dvdisaster.c:1012 +msgid "Debugging options (purposefully undocumented and possibly harmful)\n" +msgstr "Opções de depuração (propositalmente não-documentadas e possivelmente perigosas)\n" + +#: src/dvdisaster.c:1013 +msgid " --debug - enables the following options\n" +msgstr " --debug - habilita as opções seguintes\n" + +#: src/dvdisaster.c:1014 +msgid " --permissive-medium-type - allow more media types, even theoretically unsupported ones\n" +msgstr "" + +#: src/dvdisaster.c:1015 msgid " --byteset s,i,b - set byte i in sector s to b\n" msgstr " --byteset s,i,b - define o byte i no setores s ao b\n" -#: src/dvdisaster.c:1013 +#: src/dvdisaster.c:1016 msgid " --cdump - creates C #include file dumps instead of hexdumps\n" msgstr " --cdump - creates C #include file dumps instead of hexdumps\n" -#: src/dvdisaster.c:1014 +#: src/dvdisaster.c:1017 msgid " --compare-images a,b - compare sectors in images a and b\n" msgstr " --compare-images a,b - compara os setores nas imagens a e b\n" -#: src/dvdisaster.c:1015 +#: src/dvdisaster.c:1018 msgid " --copy-sector a,n,b,m - copy sector n from image a to sector m in image b\n" msgstr " --copy-sector a,n,b,m - copia o setor n da imagem a para o setor m da imagem b\n" -#: src/dvdisaster.c:1016 +#: src/dvdisaster.c:1019 msgid " --erase sector - erase the given sector\n" msgstr " --erase setor - apaga o setor escolhido\n" -#: src/dvdisaster.c:1017 +#: src/dvdisaster.c:1020 msgid " --erase n-m - erase sectors n - m, inclusively\n" msgstr " --erase n-m - apaga os setores n a m (inclusivo)\n" -#: src/dvdisaster.c:1018 +#: src/dvdisaster.c:1021 msgid " --examine-rs02 - force RS02 exhaustive search\n" msgstr "" -#: src/dvdisaster.c:1019 +#: src/dvdisaster.c:1022 msgid " --examine-rs03 - force RS03 exhaustive search\n" msgstr "" -#: src/dvdisaster.c:1020 +#: src/dvdisaster.c:1023 msgid " --fixed-speed-values - output fixed speed values for better output diffing\n" msgstr "" -#: src/dvdisaster.c:1021 +#: src/dvdisaster.c:1024 msgid " --ignore-rs03-header - ignore RS03 header when repairing (forcing a full search)\n" msgstr "" -#: src/dvdisaster.c:1022 +#: src/dvdisaster.c:1025 msgid " --marked-image n - create image with n marked random sectors\n" msgstr " --marked-image a,b - mescla a imagem a com a b (a recebe os setores de b)\n" -#: src/dvdisaster.c:1023 +#: src/dvdisaster.c:1026 msgid " --merge-images a,b merge image a with b (a receives sectors from b)\n" msgstr "" -#: src/dvdisaster.c:1024 +#: src/dvdisaster.c:1027 msgid " --random-errors e - seed image with (correctable) random errors\n" msgstr "" -#: src/dvdisaster.c:1025 +#: src/dvdisaster.c:1028 msgid " --random-image n - create image with n sectors of random numbers\n" msgstr " --random-image n - cria um arquivo de imagem com n setores de números aleatórios\n" -#: src/dvdisaster.c:1026 +#: src/dvdisaster.c:1029 msgid " --random-seed n - random seed for built-in random number generator\n" msgstr " --random-seed n - semente aleatória para o gerador de números aleatórios\n" -#: src/dvdisaster.c:1027 +#: src/dvdisaster.c:1030 msgid " --raw-sector n - shows hexdump of the given raw sector from medium in drive\n" msgstr "" -#: src/dvdisaster.c:1028 +#: src/dvdisaster.c:1031 msgid " --read-sector n - shows hexdump of the given sector from medium in drive\n" msgstr "" -#: src/dvdisaster.c:1029 +#: src/dvdisaster.c:1032 msgid " --screen-shot - useful for generating screen shots\n" msgstr " --screen-shot - útil para gerar capturas de tela\n" -#: src/dvdisaster.c:1030 +#: src/dvdisaster.c:1033 msgid " --send-cdb arg - executes given cdb at drive; kills system if used wrong\n" msgstr " --send-cdb arg - executa o cdb escolhido no drive; para o sistema se usado deforma errada\n" -#: src/dvdisaster.c:1031 +#: src/dvdisaster.c:1034 msgid " --set-version - set program version for debugging purposes (dangerous!)\n" msgstr "" -#: src/dvdisaster.c:1032 +#: src/dvdisaster.c:1035 msgid " --show-header n - assumes given sector is a ecc header and prints it\n" msgstr "" -#: src/dvdisaster.c:1033 +#: src/dvdisaster.c:1036 msgid " --show-sector n - shows hexdump of the given sector in an image file\n" msgstr " --show-sector n - shows hexdump of the given sector in an image file\n" -#: src/dvdisaster.c:1034 +#: src/dvdisaster.c:1037 msgid " --sim-cd image - simulate a SCSI-Level CD with contents supplied by the ISO image\n" msgstr "" -#: src/dvdisaster.c:1035 +#: src/dvdisaster.c:1038 #, c-format msgid " --sim-defects n - simulate n%% defective sectors on medium\n" msgstr " --sim-defects n - simula n%% setores defeituosos na mídia\n" -#: src/dvdisaster.c:1036 +#: src/dvdisaster.c:1039 msgid " --truncate n - truncates image to n sectors\n" msgstr " --truncate n - trunca a imagem para n setores\n" -#: src/dvdisaster.c:1037 +#: src/dvdisaster.c:1040 msgid "" " --zero-unreadable - replace the \"unreadable sector\" markers with zeros\n" "\n" msgstr " --zero-unreadable - substitui os marcadores \"setor-ilegível\" por zeros\n" -#: src/dvdisaster.c:1067 +#: src/dvdisaster.c:1070 msgid "Optical drive 52X FW 1.02" msgstr "Drive ótico 52X FW 1.02" -#: src/ecc-rs01.c:41 +#: src/ecc-rs01.c:43 msgid "Error correction file (RS01)" msgstr "Arquivo de correção de erros (RS01)" -#: src/ecc-rs01.c:42 +#: src/ecc-rs01.c:44 msgid "Classic Reed-Solomon method based on polynomial arithmetic" msgstr "Método clássico Reed-Solomon baseado em aritmética polinomial" -#: src/ecc-rs02.c:42 +#: src/ecc-rs02.c:44 msgid "Augmented image (RS02)" msgstr "Imagem aumentada (RS02)" -#: src/ecc-rs02.c:43 +#: src/ecc-rs02.c:45 msgid "Reed-Solomon method with improved tolerance for defective ecc data" msgstr "Método Reed-Solomon com tolerância a dados ecc defeituosos aumentada" -#: src/ecc-rs03.c:42 +#: src/ecc-rs03.c:44 msgid "Multithreaded RS codec (RS03)" msgstr "" -#: src/ecc-rs03.c:43 +#: src/ecc-rs03.c:45 msgid "Multithreaded Reed-Solomon codec for error correction files and augmented images" msgstr "" -#: src/endian.c:76 +#: src/endian.c:78 msgid "" "\n" "Contents of Ecc Header:\n" "\n" msgstr "" -#: src/help-dialogs.c:394 +#: src/help-dialogs.c:395 msgid "windowtitle|Log data" msgstr "Dados de log" -#: src/help-dialogs.c:395 +#: src/help-dialogs.c:396 msgid "" "Log data\n" "Protocol of the current or previous action" @@ -855,11 +859,11 @@ msgstr "" "Dados de log\n" "Protocolo da ação atual ou anterior" -#: src/help-dialogs.c:411 +#: src/help-dialogs.c:412 msgid "windowtitle|GNU General Public License" msgstr "Licença Pública Geral GNU" -#: src/help-dialogs.c:412 +#: src/help-dialogs.c:413 msgid "" "GNU General Public License\n" "The license terms of dvdisaster." @@ -867,7 +871,7 @@ msgstr "" "Licença Pública Geral GNU\n" "Os termos de licença do dvdisaster." -#: src/help-dialogs.c:502 +#: src/help-dialogs.c:503 #, c-format msgid "" "File\n" @@ -878,7 +882,7 @@ msgstr "" "%s\n" "não presente" -#: src/help-dialogs.c:512 +#: src/help-dialogs.c:513 #, c-format msgid "" "File\n" @@ -886,41 +890,23 @@ msgid "" "not accessible" msgstr "" -#: src/help-dialogs.c:524 +#: src/help-dialogs.c:525 msgid "" "\n" "<- Error: Text file truncated here" msgstr "" -#: src/help-dialogs.c:593 -msgid "windowtitle|Modifying dvdisaster" -msgstr "Modificando o dvdisaster" - -#: src/help-dialogs.c:594 -msgid "" -"Modifying dvdisaster\n" -"Your changes are not ours." -msgstr "" -"Modificando o dvdisaster\n" -"Suas mudanças não são nossas." - -#: src/help-dialogs.c:734 +#: src/help-dialogs.c:724 msgid "windowtitle|About dvdisaster" msgstr "windowtitle|Sobre o dvdisaster" -#: src/help-dialogs.c:754 +#: src/help-dialogs.c:742 src/misc.c:219 msgid "" -"[Modified version]\n" -"Copyright 2019-2021 Stephane Lesimple\n" -"Copyright 2005-2017 Debian Optical Media Tools Team\n" -"Copyright 2004-2017 Carsten Gnoerlich" +"Copyright 2004-2017 Carsten Gnoerlich.\n" +"Copyright 2019-2021 The dvdisaster development team." msgstr "" -#: src/help-dialogs.c:760 src/misc.c:218 -msgid "Copyright 2004-2017 Carsten Gnoerlich" -msgstr "Copyright 2004-2017 Carsten Gnoerlich" - -#: src/help-dialogs.c:767 +#: src/help-dialogs.c:748 msgid "" "dvdisaster provides a margin of safety against data loss\n" "on optical media caused by aging or scratches.\n" @@ -932,7 +918,7 @@ msgstr "" "Ele cria dados de correção de erros que são usados para recuperar\n" "setores ilegíveis se o disco ficar danificado posteriormente.\n" -#: src/help-dialogs.c:772 +#: src/help-dialogs.c:753 msgid "" "This software comes with absolutely no warranty.\n" "This is free software and you are welcome to redistribute it\n" @@ -944,26 +930,13 @@ msgstr "" "\n" "Tradução para português por Pablo Almeida (pabloalmeidaff9@gmail.com)\n" -#: src/help-dialogs.c:778 +#: src/help-dialogs.c:758 msgid "" "\n" -"This version is not the original. It has been patched\n" -"for Debian to support DVD-ROMs (with and without encryption),\n" -"and subsequently patched again to support a CLI-only build, among other things.\n" -"\n" -"Please do not bother the original authors of dvdisaster nor the Debian maintainer\n" -"but submit bugreports against [GitHub] instead.\n" +"e-mail: support@dvdisaster.org" msgstr "" -#: src/help-dialogs.c:794 -msgid "" -"\n" -"e-mail: carsten@dvdisaster.org -or- cgnoerlich@fsfe.org" -msgstr "" -"\n" -"e-mail: carsten@dvdisaster.org -ou- cgnoerlich@fsfe.org" - -#: src/help-dialogs.c:796 +#: src/help-dialogs.c:765 msgid "" "\n" "NetBSD port: Sergey Svishchev <svs@ropnet.ru>" @@ -971,24 +944,24 @@ msgstr "" "\n" "NetBSD port por: Sergey Svishcheg <svs@ropnet.ru>" -#: src/image.c:153 src/image.c:158 +#: src/image.c:156 src/image.c:161 #, c-format msgid "Image file %s not present or permission denied.\n" msgstr "" -#: src/image.c:168 src/image.c:173 +#: src/image.c:172 src/image.c:177 msgid "" "\n" "Error correction file type unknown.\n" msgstr "" -#: src/image.c:183 src/image.c:189 +#: src/image.c:188 src/image.c:194 msgid "" "\n" "Permission denied on ecc file (perhaps not writeable?).\n" msgstr "" -#: src/image.c:200 src/image.c:206 +#: src/image.c:206 src/image.c:212 msgid "" "\n" "No error correction file present.\n" @@ -1010,12 +983,12 @@ msgstr "" "\n" "Você pode refazer essa operação após liberar espaço." -#: src/main-window.c:67 +#: src/main-window.c:70 #, c-format msgid "log: %s\n" msgstr "" -#: src/main-window.c:93 +#: src/main-window.c:97 msgid "" "The .iso image and error correction file\n" "must not be the same file!\n" @@ -1025,7 +998,7 @@ msgid "" "please leave the error correction file name blank." msgstr "" -#: src/main-window.c:103 +#: src/main-window.c:107 msgid "" "The error correction file type must not be \".iso\".\n" "\n" @@ -1034,204 +1007,204 @@ msgid "" "please leave the error correction file name blank." msgstr "" -#: src/main-window.c:173 +#: src/main-window.c:177 msgid "Internal error: No suitable method for repairing image." msgstr "" -#: src/main-window.c:280 +#: src/main-window.c:284 msgid "button|Read" msgstr "Ler" -#: src/main-window.c:283 +#: src/main-window.c:287 msgid "tooltip|Read Image" msgstr "Ler Imagem" -#: src/main-window.c:283 +#: src/main-window.c:288 msgid "Reads an optical disc image into a file (or tries to complete an existing image file)." msgstr "Lê uma imagem de CD/DVD e grava em um arquivo (ou tenta completar um arquivo de imagem existente)." -#: src/main-window.c:297 +#: src/main-window.c:302 msgid "button|Create" msgstr "Criar" -#: src/main-window.c:300 +#: src/main-window.c:305 msgid "tooltip|Create error correction data" msgstr "Cria dados de correção de erros" -#: src/main-window.c:300 +#: src/main-window.c:306 msgid "Creates error correction data. Requires an image file." msgstr "Cria dados de correção de erros. Requer um arquivo de imagem." -#: src/main-window.c:304 +#: src/main-window.c:310 msgid "button|Scan" msgstr "Escanear" -#: src/main-window.c:307 +#: src/main-window.c:313 msgid "tooltip|Scan medium" msgstr "Escaneia a mídia" -#: src/main-window.c:307 +#: src/main-window.c:314 msgid "Scans medium for unreadable sectors." msgstr "Escaneia na mídia setores ilegíveis." -#: src/main-window.c:311 +#: src/main-window.c:318 msgid "button|Fix" msgstr "Consertar" -#: src/main-window.c:314 +#: src/main-window.c:321 msgid "tooltip|Repair image" msgstr "Consertar imagem" -#: src/main-window.c:314 +#: src/main-window.c:322 msgid "Repairs an image. Requires an image file and error correction data." msgstr "Conserta uma imagem. Requer um arquivo de imagem e dados de correção de erros." -#: src/main-window.c:318 +#: src/main-window.c:326 msgid "button|Verify" msgstr "Verificar" -#: src/main-window.c:321 +#: src/main-window.c:329 msgid "tooltip|Consistency check" msgstr "Testar consistência" -#: src/main-window.c:321 +#: src/main-window.c:330 msgid "Tests consistency of error correction data and image file." msgstr "Testa a consistência dos dados de correção de erros e do arquivo de imagem." -#: src/main-window.c:325 +#: src/main-window.c:334 msgid "button|Strip" msgstr "" -#: src/main-window.c:328 +#: src/main-window.c:337 msgid "tooltip|Strip ECC" msgstr "" -#: src/main-window.c:328 +#: src/main-window.c:338 msgid "Strip ECC data from an augmented image." msgstr "" -#: src/main-window.c:332 +#: src/main-window.c:342 msgid "button|Stop" msgstr "Parar" -#: src/main-window.c:335 +#: src/main-window.c:345 msgid "tooltip|Abort action" msgstr "Cancela a ação" -#: src/main-window.c:335 +#: src/main-window.c:346 msgid "Aborts an ongoing action." msgstr "Cancela uma ação em andamento." -#: src/main-window.c:492 +#: src/main-window.c:503 msgid "tooltip|Protocol for current action" msgstr "Protocol para a ação atual" -#: src/main-window.c:493 +#: src/main-window.c:504 msgid "Displays additional information created during the current or last action." msgstr "Mostra informações adicionais criadas durante esta ou a última sessão." -#: src/main-window.c:502 +#: src/main-window.c:513 msgid "View log" msgstr "Ver log" -#: src/medium-info.c:57 +#: src/medium-info.c:58 msgid "Please wait..." msgstr "" -#: src/medium-info.c:118 +#: src/medium-info.c:112 msgid "Medium not present" msgstr "Mídia não presente" -#: src/medium-info.c:126 src/medium-info.c:488 +#: src/medium-info.c:119 src/medium-info.c:400 msgid "Physical medium info" msgstr "Informação da mídia física" -#: src/medium-info.c:172 src/medium-info.c:178 +#: src/medium-info.c:141 src/medium-info.c:147 msgid "empty" msgstr "vazia" -#: src/medium-info.c:173 +#: src/medium-info.c:142 msgid "appendable" msgstr "anexável" -#: src/medium-info.c:174 +#: src/medium-info.c:143 msgid "finalized" msgstr "finalizada" -#: src/medium-info.c:175 src/scsi-layer.c:100 +#: src/medium-info.c:144 src/scsi-layer.c:102 msgid "unknown" msgstr "desconhecida" -#: src/medium-info.c:179 +#: src/medium-info.c:148 msgid "incomplete" msgstr "incompleta" -#: src/medium-info.c:180 +#: src/medium-info.c:149 msgid "damaged" msgstr "danificada" -#: src/medium-info.c:181 src/rs02-verify.c:695 src/rs02-verify.c:913 -#: src/rs02-verify.c:914 src/rs02-verify.c:915 src/rs03-verify.c:1340 -#: src/rs03-verify.c:1342 src/rs03-verify.c:1343 +#: src/medium-info.c:150 src/rs02-verify.c:673 src/rs02-verify.c:891 +#: src/rs02-verify.c:892 src/rs02-verify.c:893 src/rs03-verify.c:1259 +#: src/rs03-verify.c:1262 src/rs03-verify.c:1265 msgid "complete" msgstr "completa" -#: src/medium-info.c:192 +#: src/medium-info.c:155 #, c-format msgid "%s (%d sessions; last session %s)\n" msgstr "%s (%d sessões; última sessão %s)\n" -#: src/medium-info.c:204 +#: src/medium-info.c:161 #, c-format msgid "% sectors (% MiB), from READ CAPACITY\n" msgstr "% setores (% MiB), da CAPACIDADE DE LEITURA\n" -#: src/medium-info.c:213 +#: src/medium-info.c:164 #, c-format msgid "% sectors (% MiB), from DVD structure\n" msgstr "% setores (% MiB), da estrutura do DVD\n" -#: src/medium-info.c:223 src/medium-info.c:297 +#: src/medium-info.c:168 #, c-format msgid "% sectors (% MiB)\n" msgstr "% setores (% MiB)\n" -#: src/medium-info.c:235 src/medium-info.c:561 +#: src/medium-info.c:180 src/medium-info.c:473 msgid "Filesystem info" msgstr "Informação do sistema de arquivos" -#: src/medium-info.c:253 +#: src/medium-info.c:186 #, c-format msgid "%d sectors (% MiB)\n" msgstr "%d setores (% MiB)\n" -#: src/medium-info.c:280 src/medium-info.c:594 +#: src/medium-info.c:207 src/medium-info.c:506 msgid "Augmented image info" msgstr "Informação da imagem aumentada" -#: src/medium-info.c:287 src/medium-info.c:289 +#: src/medium-info.c:213 #, c-format msgid "%s, %d roots, %4.1f%% redundancy.\n" msgstr "%s, %d raízes, %4.1f%% de redundância.\n" -#: src/medium-info.c:295 +#: src/medium-info.c:217 #, c-format msgid "% sectors (% MiB)\n" msgstr "" -#: src/medium-info.c:319 +#: src/medium-info.c:229 msgid "yes" msgstr "" -#: src/medium-info.c:323 +#: src/medium-info.c:234 msgid "no" msgstr "" -#: src/medium-info.c:419 +#: src/medium-info.c:331 msgid "windowtitle|Medium info" msgstr "Informação da mídia" -#: src/medium-info.c:434 +#: src/medium-info.c:346 msgid "" "Medium info\n" "Properties of the currently inserted medium" @@ -1239,91 +1212,91 @@ msgstr "" "Informação da mídia\n" "Propriedades da mídia inserida atualmente" -#: src/medium-info.c:446 +#: src/medium-info.c:358 msgid "Drive selection" msgstr "Seleção de drive" -#: src/medium-info.c:453 +#: src/medium-info.c:365 msgid "Drive:" msgstr "Drive:" -#: src/medium-info.c:474 src/menubar.c:493 +#: src/medium-info.c:386 src/menubar.c:496 msgid "No drives found" msgstr "Nenhum drive encontrado" -#: src/medium-info.c:479 +#: src/medium-info.c:391 msgid " " msgstr " " -#: src/medium-info.c:482 +#: src/medium-info.c:394 msgid "Update medium info" msgstr "Atualizar informação da mídia" -#: src/medium-info.c:495 +#: src/medium-info.c:407 msgid "Medium type:" msgstr "Tipo de mídia:" -#: src/medium-info.c:503 +#: src/medium-info.c:415 msgid "Book type:" msgstr "Tipo de livro:" -#: src/medium-info.c:511 src/scsi-layer.c:2747 +#: src/medium-info.c:423 src/scsi-layer.c:2741 msgid "Manuf.-ID:" msgstr "ID do Manufatorador:" -#: src/medium-info.c:519 +#: src/medium-info.c:431 msgid "Drive profile:" msgstr "Perfil do drive:" -#: src/medium-info.c:527 +#: src/medium-info.c:439 msgid "Disc status:" msgstr "Estado do disco:" -#: src/medium-info.c:535 +#: src/medium-info.c:447 msgid "Used sectors:" msgstr "Setores usados:" -#: src/medium-info.c:551 +#: src/medium-info.c:463 msgid "Blank capacity:" msgstr "Espaço livre:" -#: src/medium-info.c:568 +#: src/medium-info.c:480 msgid "Medium label:" msgstr "Rótulo da mídia:" -#: src/medium-info.c:576 +#: src/medium-info.c:488 msgid "File system size:" msgstr "Tamanho do sistema de arquivos:" -#: src/medium-info.c:584 +#: src/medium-info.c:496 msgid "Creation time:" msgstr "Hora da criação:" -#: src/medium-info.c:601 +#: src/medium-info.c:513 msgid "Error correction data:" msgstr "Dados de correção de erros:" -#: src/medium-info.c:609 +#: src/medium-info.c:521 msgid "Augmented image size:" msgstr "Tamanho da imagem aumentada:" -#: src/medium-info.c:617 +#: src/medium-info.c:529 msgid "dvdisaster version:" msgstr "Versão do dvdisaster:" -#: src/medium-info.c:625 +#: src/medium-info.c:537 msgid "Exhaustive search:" msgstr "" -#: src/medium-info.c:632 +#: src/medium-info.c:544 msgid "Run exhaustive search" msgstr "" -#: src/menubar.c:131 +#: src/menubar.c:133 msgid "windowtitle|Change log" msgstr "Log de mudanças" -#: src/menubar.c:132 +#: src/menubar.c:134 msgid "" "Change log\n" "Major differences from earlier program versions." @@ -1331,11 +1304,11 @@ msgstr "" "Log de mudanças\n" "Principais diferenças das versões anteriores do programa." -#: src/menubar.c:138 +#: src/menubar.c:140 msgid "windowtitle|Credits" msgstr "Créditos" -#: src/menubar.c:139 +#: src/menubar.c:141 msgid "" "Credits\n" "Thanks go out to..." @@ -1343,11 +1316,11 @@ msgstr "" "Créditos\n" "Muito obrigado a..." -#: src/menubar.c:145 +#: src/menubar.c:147 msgid "windowtitle|To do list" msgstr "Lista de afazeres" -#: src/menubar.c:146 +#: src/menubar.c:148 msgid "" "To do list\n" "A sneak preview of coming features ... perhaps ;-)" @@ -1355,139 +1328,139 @@ msgstr "" "Lista de afazeres\n" "Uma pequena prévia das funções que estão por vir ... ou não ;-)" -#: src/menubar.c:213 +#: src/menubar.c:215 msgid "menu|Select Image" msgstr "Escolher Imagem" -#: src/menubar.c:214 +#: src/menubar.c:216 msgid "menu|Select Parity File" msgstr "Escolher Arquivo de Paridade" -#: src/menubar.c:215 +#: src/menubar.c:217 msgid "menu|Quit" msgstr "Sair" -#: src/menubar.c:217 +#: src/menubar.c:219 msgid "menu|File" msgstr "Arquivo" -#: src/menubar.c:224 +#: src/menubar.c:226 msgid "menu|Medium info" msgstr "Sobre a mídia" -#: src/menubar.c:229 +#: src/menubar.c:231 msgid "menu|Raw sector editor" msgstr "editor de setores Raw" -#: src/menubar.c:231 +#: src/menubar.c:233 msgid "menu|Tools" msgstr "Ferramentas" -#: src/menubar.c:239 +#: src/menubar.c:241 msgid "menu|About" msgstr "Sobre" -#: src/menubar.c:240 +#: src/menubar.c:242 msgid "menu|User manual" msgstr "Manual do usuário" -#: src/menubar.c:244 +#: src/menubar.c:246 msgid "menu|Credits" msgstr "Créditos" -#: src/menubar.c:245 +#: src/menubar.c:247 msgid "menu|Licence (GPL)" msgstr "Licença (GPL)" -#: src/menubar.c:249 +#: src/menubar.c:251 msgid "menu|Change log" msgstr "Log de mudanças" -#: src/menubar.c:250 +#: src/menubar.c:252 msgid "menu|To do list" msgstr "Lista de afazeres" -#: src/menubar.c:252 +#: src/menubar.c:254 msgid "menu|Help" msgstr "Ajuda" -#: src/menubar.c:336 +#: src/menubar.c:338 msgid "windowtitle|Image file selection" msgstr "Seleção de arquivo de imagem" -#: src/menubar.c:373 +#: src/menubar.c:375 msgid "windowtitle|Error correction file selection" msgstr "Seleção de arquivo de correção de erros" -#: src/menubar.c:475 src/menubar.c:499 +#: src/menubar.c:477 src/menubar.c:502 msgid "tooltip|Drive selection" msgstr "Seleção de Drive" -#: src/menubar.c:475 +#: src/menubar.c:478 msgid "Use the nearby drop-down list to select the input drive." msgstr "Use a lista \"drop-down\" ao lado para escolher o drive de entrada" -#: src/menubar.c:499 +#: src/menubar.c:503 msgid "Selects the input drive for reading images." msgstr "Seleciona o drive de entrada para ler imagens." -#: src/menubar.c:529 +#: src/menubar.c:533 msgid "tooltip|Image file selection" msgstr "Seleção do arquivo de imagem" -#: src/menubar.c:529 +#: src/menubar.c:534 msgid "Selects a new image file." msgstr "Seleciona um novo arquivo de imagem." -#: src/menubar.c:530 +#: src/menubar.c:536 msgid "tooltip|Current image file" msgstr "Arquivo de imagem atual" -#: src/menubar.c:530 +#: src/menubar.c:537 msgid "Shows the name of the current image file." msgstr "Mostra o nome do arquivo de imagem atual." -#: src/menubar.c:554 +#: src/menubar.c:562 msgid "tooltip|Error correction file selection" msgstr "Seleção do arquivo de correção de erros" -#: src/menubar.c:554 +#: src/menubar.c:563 msgid "Selects a new error correction file." msgstr "Seleciona um novo arquivo de correção de erros." -#: src/menubar.c:555 +#: src/menubar.c:565 msgid "tooltip|Current error correction file" msgstr "Arquivo de correção de erros atual" -#: src/menubar.c:555 +#: src/menubar.c:566 msgid "Shows the name of the current error correction file." msgstr "Mostra o nome do arquivo de correção de erros atual." -#: src/menubar.c:566 +#: src/menubar.c:577 msgid "tooltip|Preferences" msgstr "Preferências" -#: src/menubar.c:566 +#: src/menubar.c:578 msgid "Customize settings for creating images, error correction files and other stuff." msgstr "Personaliza configurações de criação de imagems, arquivos de correção de erros e outras coisas." -#: src/menubar.c:576 +#: src/menubar.c:588 msgid "tooltip|User manual" msgstr "Manual de usuário" -#: src/menubar.c:576 +#: src/menubar.c:589 msgid "Displays the user manual (external PDF viewer required)." msgstr "" -#: src/menubar.c:586 +#: src/menubar.c:599 msgid "tooltip|Quit" msgstr "Sair" -#: src/menubar.c:586 +#: src/menubar.c:599 msgid "Quit dvdisaster" msgstr "Sai do dvdisaster" -#: src/method.c:55 +#: src/method.c:57 msgid "" "\n" "List of available methods:\n" @@ -1497,7 +1470,7 @@ msgstr "" "Lista dos métodos disponíveis:\n" "\n" -#: src/misc.c:224 +#: src/misc.c:225 msgid "" "This software comes with ABSOLUTELY NO WARRANTY. This\n" "is free software and you are welcome to redistribute it\n" @@ -1511,11 +1484,11 @@ msgstr "" "\n" "Tradução para português por Pablo Almeida (pabloalmeidaff9@gmail.com)\n" -#: src/misc.c:550 +#: src/misc.c:535 msgid "Warning" msgstr "Alerta" -#: src/misc.c:633 src/misc.c:643 +#: src/misc.c:610 src/misc.c:619 msgid "" "\n" "*\n" @@ -1527,21 +1500,40 @@ msgstr "" "* dvdisaster - impossível continuar:\n" "*\n" -#: src/misc.c:1307 -msgid "Do not ask again" +#: src/misc.c:758 +msgid "Strip ECC aborted" msgstr "" -#: src/misc.c:1331 +#: src/misc.c:766 +msgid "Image is not augmented (no dvdisaster signature found)." +msgstr "" + +#: src/misc.c:772 +#, c-format +msgid "Invalid end data sector (%), aborting" +msgstr "" + +#: src/misc.c:781 #, c-format msgid "" -"Image file already exists and does not match the medium:\n" -"\n" -"%s\n" -"\n" -"The existing image file will be deleted." +"We're about to truncate the image from % sectors (% MiB)\n" +"to % sectors (% MiB), removing any dvdisaster-added ECC data.\n" +"This will restore the image to its pre-augmented original size." msgstr "" -#: src/misc.c:1353 +#: src/misc.c:788 +msgid "Aborted on user request" +msgstr "" + +#: src/misc.c:797 +msgid "Image successfully truncated back to its original size.\n" +msgstr "" + +#: src/misc.c:801 +msgid "Image successfully truncated" +msgstr "" + +#: src/misc-gui.c:241 #, c-format msgid "" "The error correction file is already present:\n" @@ -1551,92 +1543,73 @@ msgid "" "Overwrite it?" msgstr "" -#: src/misc.c:1388 -msgid "Strip ECC aborted" +#: src/misc-gui.c:639 +msgid "Do not ask again" msgstr "" -#: src/misc.c:1396 -msgid "Image is not augmented (no dvdisaster signature found)." -msgstr "" - -#: src/misc.c:1402 -#, c-format -msgid "Invalid end data sector (%), aborting" -msgstr "" - -#: src/misc.c:1411 +#: src/misc-gui.c:660 #, c-format msgid "" -"We're about to truncate the image from % sectors (% MiB)\n" -"to % sectors (% MiB), removing any dvdisaster-added ECC data.\n" -"This will restore the image to its pre-augmented original size." +"Image file already exists and does not match the medium:\n" +"\n" +"%s\n" +"\n" +"The existing image file will be deleted." msgstr "" -#: src/misc.c:1418 -msgid "Aborted on user request" -msgstr "" - -#: src/misc.c:1427 -msgid "Image successfully truncated back to its original size.\n" -msgstr "" - -#: src/misc.c:1431 -msgid "Image successfully truncated" -msgstr "" - -#: src/preferences.c:452 +#: src/preferences.c:454 msgid "Switched to the linear reading strategy." msgstr "Mudado para a estratégia de leitura linear" -#: src/preferences.c:838 +#: src/preferences.c:840 msgid "Color selection" msgstr "Seleção de Cores" -#: src/preferences.c:1059 +#: src/preferences.c:1061 msgid "Disabled automatic error correction file generation." msgstr "Geração de arquivos de correção de erros automática desativada." -#: src/preferences.c:1222 src/preferences.c:2362 src/preferences.c:2371 +#: src/preferences.c:1224 src/preferences.c:2376 src/preferences.c:2385 msgid "Raw sector caching" msgstr "Cache de setores Raw" -#: src/preferences.c:1294 +#: src/preferences.c:1296 msgid "Log file" msgstr "Arquivo de log" -#: src/preferences.c:1316 +#: src/preferences.c:1318 msgid "Delete the log file?" msgstr "Deletar o arquivo de log" -#: src/preferences.c:1410 +#: src/preferences.c:1412 msgid "Preferences" msgstr "Preferências" -#: src/preferences.c:1440 src/rs03-preferences.c:514 +#: src/preferences.c:1442 src/rs03-preferences.c:516 msgid "Image" msgstr "Imagem" -#: src/preferences.c:1444 +#: src/preferences.c:1446 msgid "Image creation" msgstr "Criação de imagem" -#: src/preferences.c:1453 +#: src/preferences.c:1455 msgid "Reading strategy" msgstr "Estratégia de leitura" -#: src/preferences.c:1453 +#: src/preferences.c:1456 msgid "Reading strategy: " msgstr "Estratégia de leitura: " -#: src/preferences.c:1468 +#: src/preferences.c:1471 msgid "Linear" msgstr "Linear" -#: src/preferences.c:1476 +#: src/preferences.c:1479 msgid "Adaptive (for defective media)" msgstr "Adaptativa (para mídias defeituosas)" -#: src/preferences.c:1488 +#: src/preferences.c:1491 msgid "" "Reading strategy\n" "\n" @@ -1662,19 +1635,19 @@ msgstr "" "\n" "Usar a estratégia adaptativa sem dados de correção de erros é possível mas é recomendado usar a leitura linear nesse caso." -#: src/preferences.c:1500 +#: src/preferences.c:1503 msgid "Reading range" msgstr "Intervalo de leitura" -#: src/preferences.c:1500 +#: src/preferences.c:1504 msgid "Read/Scan from sector" msgstr "Ler/Escanear do setor" -#: src/preferences.c:1526 +#: src/preferences.c:1530 msgid "to sector" msgstr "ao setor" -#: src/preferences.c:1544 +#: src/preferences.c:1548 msgid "" "Reading range\n" "\n" @@ -1692,19 +1665,19 @@ msgstr "" "\n" "Essas configurações são válidas apenas para a sessão atual e não serão salvas." -#: src/preferences.c:1554 +#: src/preferences.c:1558 msgid "Error correction data recognization" msgstr "" -#: src/preferences.c:1563 +#: src/preferences.c:1567 msgid "Exhaustive RS02 header search" msgstr "" -#: src/preferences.c:1563 +#: src/preferences.c:1568 msgid "Perform exhaustive search for RS02 headers" msgstr "" -#: src/preferences.c:1584 +#: src/preferences.c:1589 msgid "" "Exhaustive RS02 header search\n" "\n" @@ -1715,15 +1688,15 @@ msgid "" "Leave this option off when you are processing media or images which are not augmented with RS02 data. Otherwise you will waste a lot of time searching for the RS02 signatures and increase wear on the drive." msgstr "" -#: src/preferences.c:1603 +#: src/preferences.c:1608 msgid "Recover RS03 signatures" msgstr "" -#: src/preferences.c:1603 +#: src/preferences.c:1609 msgid "Find and recover RS03 signatures" msgstr "" -#: src/preferences.c:1624 +#: src/preferences.c:1630 msgid "" "Exhaustive RS03 header search\n" "\n" @@ -1734,19 +1707,19 @@ msgid "" "Leave this option off when you are processing media or images which are not augmented with RS03 data. Otherwise you will waste a lot of time searching for the RS03 signatures and increase wear on the drive." msgstr "" -#: src/preferences.c:1643 +#: src/preferences.c:1649 msgid "Image properties" msgstr "Propriedades da imagem" -#: src/preferences.c:1652 +#: src/preferences.c:1658 msgid "Ignore ISO/UDF meta data" msgstr "" -#: src/preferences.c:1652 +#: src/preferences.c:1659 msgid "Ignore image size recorded in ISO/UDF file system" msgstr "" -#: src/preferences.c:1673 +#: src/preferences.c:1680 msgid "" "Ignore image size recorded in ISO/UDF filesystem\n" "\n" @@ -1759,15 +1732,15 @@ msgid "" "Do not blindly turn this option on as it will most likely create sub optimal or corrupted ISO images, especially if you plan to use the image for error correction data generation." msgstr "" -#: src/preferences.c:1692 +#: src/preferences.c:1699 msgid "DAO mode" msgstr "Modo DAO" -#: src/preferences.c:1692 +#: src/preferences.c:1700 msgid "Assume image to be written in DAO mode (don't truncate)" msgstr "Assumir que a imagem será gravada no modo DAO (não truncar)" -#: src/preferences.c:1713 +#: src/preferences.c:1721 msgid "" "Assume DAO mode\n" "\n" @@ -1785,19 +1758,19 @@ msgstr "" "\n" "Dica: Para evitar esses problemas, considere usar o modo \"DAO / Disc at once\" (às vezes chamado de \"SAO / Session at once\") para gravar mídias de uma única sessão." -#: src/preferences.c:1728 +#: src/preferences.c:1736 msgid "Image format" msgstr "Formato da imagem" -#: src/preferences.c:1737 +#: src/preferences.c:1745 msgid "Missing sector tags" msgstr "Marcadores de setor desaparecido" -#: src/preferences.c:1737 +#: src/preferences.c:1746 msgid "Use old style missing sector tags (not recommended)" msgstr "" -#: src/preferences.c:1758 +#: src/preferences.c:1767 msgid "" "Missing sector tagging\n" "\n" @@ -1806,15 +1779,15 @@ msgid "" "N.b.: dvdisaster >= 0.72 will automatically recognize both tag formats when reading images; setting this value only affects the creation of new images." msgstr "" -#: src/preferences.c:1778 +#: src/preferences.c:1787 msgid "Filling of unreadable sectors" msgstr "Preenchimento de setores ilegíveis" -#: src/preferences.c:1779 +#: src/preferences.c:1788 msgid "Fill unreadable sectors with byte:" msgstr "Preencher setores ilegíveis com o byte:" -#: src/preferences.c:1819 +#: src/preferences.c:1828 msgid "" "Filling of unreadable sectors\n" "\n" @@ -1826,31 +1799,31 @@ msgstr "" "O dvdisaster marca setores ilegíveis com um padrão de preenchimento especial cuja possibilidade de ocorrer em mídias danificadas é muito baixa.\n" "Em outros softwares de recuperação de dados, é comum preencher setores ilegíveis com um certo valor de byte. Para permitir a interoperabilidade com tais programas, você pode especificar o valor de byte usado por eles:\n" -#: src/preferences.c:1828 +#: src/preferences.c:1837 msgid "0xb0 (176 decimal): for compatibility with h2cdimage published by \"c't\", a German periodical.\n" msgstr "0xb0 (176 decimal): para compatibilidade com o h2cdimage, publicado pela \"c't\", uma revista alemã.\n" -#: src/preferences.c:1832 +#: src/preferences.c:1841 msgid "Note: Using zero filling (0x00, decimal 0) is highly discouraged. Most media contain regular zero filled sectors which can not be told apart from unreadable sectors if zero filling is used." msgstr "Nota: Usar preenchimento com zeros (0x00, decimal 0) é altamente desencorajado. A maioria das mídias contêm setores normais preenchidos com zero que não podem ser diferenciados de setores ilegíveis se preechimento com zero for usado." -#: src/preferences.c:1839 +#: src/preferences.c:1848 msgid "Drive" msgstr "Drive" -#: src/preferences.c:1843 src/preferences.c:1846 +#: src/preferences.c:1852 src/preferences.c:1855 msgid "Drive initialisation" msgstr "Inicialização do drive" -#: src/preferences.c:1847 +#: src/preferences.c:1856 msgid "Wait" msgstr "Aguardar" -#: src/preferences.c:1850 +#: src/preferences.c:1859 msgid "seconds for drive to spin up" msgstr "segundos para o drive girar" -#: src/preferences.c:1880 +#: src/preferences.c:1889 msgid "" "Drive initialisation\n" "\n" @@ -1860,23 +1833,23 @@ msgstr "" "\n" "Espera a quantidade especificada de segundos para deixar o drive rodar. Isso evita variações de velocidade no início da curva de leitura." -#: src/preferences.c:1886 +#: src/preferences.c:1895 msgid "Raw reading parameters" msgstr "Parâmetros de leitura Raw" -#: src/preferences.c:1895 +#: src/preferences.c:1904 msgid "Raw reading mode" msgstr "Modo de leitura Raw" -#: src/preferences.c:1895 +#: src/preferences.c:1905 msgid "Raw reading mode: " msgstr "Modo de leitura Raw: " -#: src/preferences.c:1927 +#: src/preferences.c:1937 msgid "other:" msgstr "outro: " -#: src/preferences.c:1961 +#: src/preferences.c:1971 msgid "" "Raw reading mode\n" "\n" @@ -1899,19 +1872,19 @@ msgstr "" "\n" "0x01 Alguns drives fazem a coisa certa quando esse valor é escolhido, apesar de que isso não faz sentido algum, de acordo com a especificação SCSI. Tente colocar esse valor no campo \"outro\" se nenhuma das outras alternativas funcionar. Veja a documentação de modos na página 01h, capítulo 6 do MMC3 or superior para informações adicionais." -#: src/preferences.c:1987 +#: src/preferences.c:1997 msgid "Internal read attempts" msgstr "Tentativas de leitura internas" -#: src/preferences.c:1988 +#: src/preferences.c:1998 msgid "Reread defective sectors" msgstr "Re-ler setores defeituosos" -#: src/preferences.c:1991 +#: src/preferences.c:2001 msgid "times" msgstr "vezes" -#: src/preferences.c:2022 +#: src/preferences.c:2032 msgid "" "Internal read attempts\n" "\n" @@ -1927,15 +1900,15 @@ msgstr "" "Diminuir esse valor para 0 ou 1 pode acelerar o processamento de mídias danificadas e reduzir o desgaste do drive; porém, a maioria dos drives vai simplesmente ignorar o que você colocar aqui.\n" "Use o valor -1 para deixar o drive com sua configuração padrão." -#: src/preferences.c:2035 src/preferences.c:2038 +#: src/preferences.c:2045 src/preferences.c:2048 msgid "Fatal error handling" msgstr "Tratamento de erros fatais" -#: src/preferences.c:2039 +#: src/preferences.c:2049 msgid "Ignore fatal errors" msgstr "Ignorar erros fatais" -#: src/preferences.c:2066 +#: src/preferences.c:2076 msgid "" "Fatal error handling\n" "\n" @@ -1947,15 +1920,15 @@ msgstr "" "Por padrão, o dvdisaster para de ler quando o drive relata um erro fatal. Isso previne outras tentativas de leitura inúteis e possível dano ao drive.\n" "Porém, alguns drives produzem mensagens fatais sem fundamento. Para tais drives, ignorar erros fatais pode ser necessário para fazer a leitura ininterrupta de mídias danificadas." -#: src/preferences.c:2076 +#: src/preferences.c:2086 msgid "Media ejection" msgstr "Ejeção da mídia" -#: src/preferences.c:2079 src/preferences.c:2080 +#: src/preferences.c:2089 src/preferences.c:2090 msgid "Eject medium after successful read" msgstr "Ejetar mídia após uma leitura completa" -#: src/preferences.c:2107 +#: src/preferences.c:2117 msgid "" "Medium ejection\n" "\n" @@ -1968,23 +1941,23 @@ msgstr "" "\n" "Note que o ambiente de desktop pode prevenir que outras aplicações ejetem a mídia. Nesse caso, ejete a mídia através da interface de usuário do desktop." -#: src/preferences.c:2117 +#: src/preferences.c:2127 msgid "Read attempts" msgstr "Tentativas de leitura" -#: src/preferences.c:2121 +#: src/preferences.c:2131 msgid "Sector read errors" msgstr "Erros de leitura de setor" -#: src/preferences.c:2130 +#: src/preferences.c:2140 msgid "Raw reading" msgstr "Leitura Raw" -#: src/preferences.c:2130 +#: src/preferences.c:2141 msgid "Read and analyze raw sectors" msgstr "Ler e analisar setores Raw" -#: src/preferences.c:2152 +#: src/preferences.c:2163 msgid "" "Raw reading (affects CD media only)\n" "\n" @@ -2012,17 +1985,17 @@ msgstr "" "- a leitura linear estiver configurada para pular 0 setores após um erro de leitura.\n" "O cache de setores Raw também depende de ativação de sua respectiva opção." -#: src/preferences.c:2169 +#: src/preferences.c:2180 msgid "Minimum number of reading attempts" msgstr "Número mínimo de tentativas de leitura" -#: src/preferences.c:2171 src/preferences.c:2172 src/preferences.c:2177 -#: src/preferences.c:2178 +#: src/preferences.c:2183 src/preferences.c:2184 src/preferences.c:2189 +#: src/preferences.c:2190 #, c-format msgid "Min. %d reading attempts per sector" msgstr "Mín. de %d tentativas de leitura por setor" -#: src/preferences.c:2199 +#: src/preferences.c:2211 msgid "" "Minimum number of reading attempts\n" "\n" @@ -2036,17 +2009,17 @@ msgstr "" "\n" "Aumentar o número de tentativas de leitura pode melhorar a recuperação de dados em uma mídia ruim, mas também aumentará o tempo de processamento e o desgaste mecânico do drive." -#: src/preferences.c:2208 +#: src/preferences.c:2220 msgid "Maximum number of reading attempts" msgstr "Número máximo de tentativas de leitura" -#: src/preferences.c:2210 src/preferences.c:2211 src/preferences.c:2216 -#: src/preferences.c:2217 +#: src/preferences.c:2223 src/preferences.c:2224 src/preferences.c:2229 +#: src/preferences.c:2230 #, c-format msgid "Max. %d reading attempts per sector" msgstr "Máx. de %d tentativas de leitura por setor" -#: src/preferences.c:2238 +#: src/preferences.c:2251 msgid "" "Maximum number of reading attempts\n" "\n" @@ -2060,23 +2033,23 @@ msgstr "" "\n" "A decisão de fazer mais tentativas depende da qualidade dos dados obtidos até o momento, que, por sua vez, é influenciada pelas capacidades do seu drive de CD/DVD e sistema operacional. Então, dependendo das suas configurações, você pode ou não ver o dvdisaster usar o valor máximo." -#: src/preferences.c:2252 +#: src/preferences.c:2265 msgid "Treatment of unreadable areas" msgstr "Tratamento de áreas ilegíveis" -#: src/preferences.c:2254 src/preferences.c:2256 src/preferences.c:2257 -#: src/preferences.c:2265 +#: src/preferences.c:2268 src/preferences.c:2270 src/preferences.c:2271 +#: src/preferences.c:2279 #, c-format msgid "Skip %d sectors after read error" msgstr "Pular %d setores após um erro de leitura" -#: src/preferences.c:2255 src/preferences.c:2260 src/preferences.c:2261 -#: src/preferences.c:2266 +#: src/preferences.c:2269 src/preferences.c:2274 src/preferences.c:2275 +#: src/preferences.c:2280 #, c-format msgid "Stop reading when unreadable intervals < %d" msgstr "Parar de ler quando intervalos de leitura ilegíveis < %d" -#: src/preferences.c:2292 +#: src/preferences.c:2306 msgid "" "Treatment of unreadable areas\n" "\n" @@ -2090,15 +2063,15 @@ msgstr "" "\n" "Efeitos na estratégia de leitura linear:" -#: src/preferences.c:2299 +#: src/preferences.c:2313 msgid "Skipping a large number of sectors (e.g. 1024) gives a quick overview of damaged areas, but will usually not collect enough data for repairing the image." msgstr "Pular um grande número de setores (ex.: 1024) dá uma rápida imagem das áreas danificadas, mas, geralmente, não coleta dados suficientes para consertar a imagem." -#: src/preferences.c:2303 +#: src/preferences.c:2317 msgid "Smaller values like 16, 32 or 64 are a good trade-off: The processing time will beconsiderably shortened, but still enough data for repairing the image is collected.\n" msgstr "Valores menores como 16, 32 ou 64 são um bom negócio: o tempo de processamento é consideravelmente diminuído, mas dados suficientes para consertar a imagem ainda são coletados.\n" -#: src/preferences.c:2307 +#: src/preferences.c:2321 msgid "" "The adaptive reading strategy uses this setting only if no error correction data is available. In that case the reading process will stop when no unread areas larger than the selected size remain. Values smaller than 128 are not recommended as they cause the drive to carry out lots of laser head repositioning during the final phase of the reading process. If adaptive reading with a setting of 128 is not sufficient, try reading the remaining sectors with an additional linear reading pass.\n" "\n" @@ -2108,19 +2081,19 @@ msgstr "" "\n" "Em mídias DVD e BD, erros de leitura geralmente se estendem ao longo de pelo menos 16 setores por motivos técnicos. Portanto, escolher um valor menor do que 16 não é recomendado para DVDs e BDs." -#: src/preferences.c:2320 src/preferences.c:2323 +#: src/preferences.c:2334 src/preferences.c:2337 msgid "Media read attempts" msgstr "Tentativas de leitura da mídia" -#: src/preferences.c:2324 +#: src/preferences.c:2338 msgid "Read the whole medium " msgstr "Lê a mídia inteira " -#: src/preferences.c:2340 +#: src/preferences.c:2354 msgid " times" msgstr " vezes" -#: src/preferences.c:2355 +#: src/preferences.c:2369 msgid "" "Media read attempts for the linear reading strategy\n" "\n" @@ -2134,15 +2107,15 @@ msgstr "" "\n" "Apenas os setores desaparecidos receberão tentativas adicionais de leitura." -#: src/preferences.c:2372 +#: src/preferences.c:2386 msgid "Keep uncorrectable raw sectors in the following directory:" msgstr "Manter setores raw irrecuperáveis no seguinte diretório:" -#: src/preferences.c:2380 src/preferences.c:3196 +#: src/preferences.c:2394 src/preferences.c:3215 msgid "Select" msgstr "Selecionar" -#: src/preferences.c:2421 +#: src/preferences.c:2435 msgid "" "Raw sector caching\n" "\n" @@ -2162,15 +2135,15 @@ msgstr "" "Por favor, note que nem todos os drives e sistemas operacionais suportam leitura de dados parciais. Não é um erro do diretório de cache ficar vazio.\n" "O dvdisaster não removerá nenhum arquivo do diretório escolhido; você deve limpá-lo manualmente apóis uma recuperação bem-sucedida de mídia." -#: src/preferences.c:2439 +#: src/preferences.c:2453 msgid "Raw sector file prefix" msgstr "Prefixo de arquivos de setor Raw" -#: src/preferences.c:2440 +#: src/preferences.c:2454 msgid "Raw sector file prefix: " msgstr "Prefixo de arquivos de setor Raw: " -#: src/preferences.c:2463 +#: src/preferences.c:2477 msgid "" "Raw sector file prefix\n" "\n" @@ -2180,60 +2153,60 @@ msgstr "" "\n" "Usa um prefixo diferente para cada disco que você está tentando recuperar, por ex.: \"disco1-\" etc." -#: src/preferences.c:2471 +#: src/preferences.c:2485 msgid "Error correction" msgstr "Correção de erros" -#: src/preferences.c:2473 +#: src/preferences.c:2487 msgid "Error correction method" msgstr "Método de correção de erros" -#: src/preferences.c:2474 +#: src/preferences.c:2488 msgid "Storage method:" msgstr "Método de armazenamento:" -#: src/preferences.c:2514 +#: src/preferences.c:2528 msgid "" "Error correction method\n" "\n" "dvdisaster creates error correction data which is used to recover unreadable sectors if the disc becomes damaged later on. There are different codecs and ways available for storing the error correction information:\n" msgstr "" -#: src/preferences.c:2520 +#: src/preferences.c:2534 msgid "" "The RS01 codec\n" "RS01 is the recommended codec for storing error correction data in separate files.\n" msgstr "" -#: src/preferences.c:2523 +#: src/preferences.c:2537 msgid "" "The RS02 codec\n" "RS02 is the currently recommended codec for augmenting images with error correction data.\n" msgstr "" -#: src/preferences.c:2527 +#: src/preferences.c:2541 msgid "" "The RS03 codec (Warning: experimental)\n" "RS03 can either store error correction data in a separate file or augment the image with it. It provides multithreading to scale with multicore processors and contains some subtle improvements over RS01 and RS02. However it should not be used for productive work unless a stable version is released with dvdisaster V0.80." msgstr "" -#: src/preferences.c:2565 +#: src/preferences.c:2578 msgid "Files" msgstr "Arquivos" -#: src/preferences.c:2569 +#: src/preferences.c:2582 msgid "Local files (on hard disk)" msgstr "Arquivos locais (no disco rígido)" -#: src/preferences.c:2576 +#: src/preferences.c:2589 msgid "Automatic file suffixes" msgstr "Extensões de arquivo automáticas" -#: src/preferences.c:2576 +#: src/preferences.c:2590 msgid "Automatically add .iso and .ecc file suffixes" msgstr "Adicionar automaticamente extensões .iso e .ecc aos arquivos" -#: src/preferences.c:2601 +#: src/preferences.c:2615 msgid "" "Automatically add file suffixes\n" "\n" @@ -2243,19 +2216,19 @@ msgstr "" "\n" "Quando esta opção está ativa, os nomes do arquivo receberão automaticamente extensões \".iso\" ou \".ecc\" se não houver nenhuma outra extensão presente." -#: src/preferences.c:2607 +#: src/preferences.c:2621 msgid "Automatic file creation and deletion" msgstr "Criação e exclusão automática de arquivos" -#: src/preferences.c:2616 +#: src/preferences.c:2630 msgid "Automatic .ecc file creation" msgstr "Criação automática de arquivos .ecc" -#: src/preferences.c:2616 +#: src/preferences.c:2631 msgid "Create error correction file after reading image" msgstr "Criar arquivos de correção de erros após ler a imagem" -#: src/preferences.c:2640 +#: src/preferences.c:2655 msgid "" "Automatic error correction file creation\n" "\n" @@ -2265,15 +2238,15 @@ msgstr "" "\n" "Cria automaticamente um arquivo de correção de erros após ler uma imagem. Aliada à opção \"Remover imagem\", esta opção acelerará a geração de arquivos de correção de erros para uma série de mídias diferentes." -#: src/preferences.c:2647 +#: src/preferences.c:2662 msgid "Automatic image file removal" msgstr "Remoção automática de arquivos de imagem" -#: src/preferences.c:2647 +#: src/preferences.c:2663 msgid "Remove image after error correction file creation" msgstr "Remover a imagem após a criação de arquivos de correção de erros" -#: src/preferences.c:2671 +#: src/preferences.c:2687 msgid "" "Automatic image file removal\n" "\n" @@ -2283,39 +2256,39 @@ msgstr "" "\n" "Esse essa opção estiver ativa, a imagem será apagada após uma geração bem-sucedida de seu respectivo arquivo de correção de erros." -#: src/preferences.c:2677 src/preferences.c:2686 +#: src/preferences.c:2693 src/preferences.c:2702 msgid "Confirm file overwriting" msgstr "" -#: src/preferences.c:2686 +#: src/preferences.c:2703 msgid "Ask before overwriting image and ecc files" msgstr "" -#: src/preferences.c:2710 +#: src/preferences.c:2727 msgid "" "Ask before overwriting image and ecc files\n" "\n" "dvdisaster will ask you for confirmation when it is going to overwrite an existing image or error correction file if this option is checked." msgstr "" -#: src/preferences.c:2717 +#: src/preferences.c:2734 msgid "Appearance" msgstr "Aparência" -#: src/preferences.c:2729 +#: src/preferences.c:2746 msgid "Sector coloring" msgstr "Colorização dos setores" -#: src/preferences.c:2740 src/rs01-verify.c:123 src/rs02-verify.c:118 -#: src/rs03-verify.c:127 +#: src/preferences.c:2757 src/rs01-verify.c:127 src/rs02-verify.c:120 +#: src/rs03-verify.c:130 msgid "Good sectors" msgstr "Setores bons" -#: src/preferences.c:2740 +#: src/preferences.c:2757 msgid "Good sector" msgstr "Setor bom" -#: src/preferences.c:2765 +#: src/preferences.c:2782 msgid "" "Good sectors\n" "\n" @@ -2325,15 +2298,15 @@ msgstr "" "\n" "Essa cor indica setores bons." -#: src/preferences.c:2770 +#: src/preferences.c:2787 msgid "Checksum errors" msgstr "Erros de checksum" -#: src/preferences.c:2770 +#: src/preferences.c:2787 msgid "Checksum error" msgstr "Erro de checksum" -#: src/preferences.c:2795 +#: src/preferences.c:2812 msgid "" "Checksum errors\n" "\n" @@ -2342,15 +2315,15 @@ msgstr "" "Erros de checksum\n" "Esta cor é usada para indicar setores com checksums (verificação de integridade) errados." -#: src/preferences.c:2800 +#: src/preferences.c:2817 msgid "Unreadable sectors" msgstr "Setores ilegíveis" -#: src/preferences.c:2800 +#: src/preferences.c:2817 msgid "Unreadable" msgstr "Ilegível" -#: src/preferences.c:2825 +#: src/preferences.c:2842 msgid "" "Unreadable sectors\n" "\n" @@ -2360,15 +2333,15 @@ msgstr "" "\n" "Essa cor é usada para marcar setores ilegíveis." -#: src/preferences.c:2830 +#: src/preferences.c:2847 msgid "Present sectors" msgstr "Setores presentes" -#: src/preferences.c:2830 +#: src/preferences.c:2847 msgid "Present sector" msgstr "Setor presente" -#: src/preferences.c:2855 +#: src/preferences.c:2872 msgid "" "Present sectors\n" "\n" @@ -2378,15 +2351,15 @@ msgstr "" "\n" "Setores que já estão presentes são marcados com esta cor." -#: src/preferences.c:2860 +#: src/preferences.c:2877 msgid "Ignored sectors" msgstr "Setores ignorado" -#: src/preferences.c:2860 +#: src/preferences.c:2877 msgid "Ignored sector" msgstr "Setor ignorado" -#: src/preferences.c:2885 +#: src/preferences.c:2902 msgid "" "Ignored sectors\n" "\n" @@ -2396,15 +2369,15 @@ msgstr "" "\n" "Setores marcados com esta cor não serão processados na execução atual." -#: src/preferences.c:2891 +#: src/preferences.c:2908 msgid "Highlit sectors" msgstr "Setores destacados" -#: src/preferences.c:2891 +#: src/preferences.c:2908 msgid "Highlit sector" msgstr "Setor destacado" -#: src/preferences.c:2916 +#: src/preferences.c:2933 msgid "" "Highlit sectors\n" "\n" @@ -2414,15 +2387,15 @@ msgstr "" "\n" "Essa cor é usada para setores destacados temporariamente durante a leitura adaptativa." -#: src/preferences.c:2922 +#: src/preferences.c:2939 msgid "Text colors" msgstr "Cores de texto" -#: src/preferences.c:2932 +#: src/preferences.c:2949 msgid "Positive text" msgstr "Texto positivo" -#: src/preferences.c:2957 +#: src/preferences.c:2974 msgid "" "Positive text\n" "\n" @@ -2432,11 +2405,11 @@ msgstr "" "\n" "Boas notícias são mostradas nesta cor." -#: src/preferences.c:2962 +#: src/preferences.c:2979 msgid "Negative text" msgstr "Texto negativo" -#: src/preferences.c:2987 +#: src/preferences.c:3004 msgid "" "Negative text\n" "\n" @@ -2446,15 +2419,15 @@ msgstr "" "\n" "Más notícias são mostradas nesta cor." -#: src/preferences.c:2992 +#: src/preferences.c:3009 msgid "Curve colors" msgstr "Cores da curva" -#: src/preferences.c:3001 +#: src/preferences.c:3018 msgid "Curve color" msgstr "Cor da curva" -#: src/preferences.c:3026 +#: src/preferences.c:3043 msgid "" "Curve color and labels\n" "\n" @@ -2464,11 +2437,11 @@ msgstr "" "\n" "A curva da velocidade de leitura e suas marcações ao topo e à direita são mostradas nesta cor." -#: src/preferences.c:3032 src/read-linear-window.c:445 +#: src/preferences.c:3049 src/read-linear-window.c:455 msgid "C2 errors" msgstr "Erros C2" -#: src/preferences.c:3057 +#: src/preferences.c:3074 msgid "" "C2 error color\n" "\n" @@ -2478,11 +2451,11 @@ msgstr "" "\n" "O gráfico de barras logarítimico que mostra os erros C2 é renderizado nesta cor durante as operações \"Ler\" e \"Escanear\"." -#: src/preferences.c:3064 +#: src/preferences.c:3081 msgid "Error correction load" msgstr "Carregamento da correção de erros" -#: src/preferences.c:3089 +#: src/preferences.c:3106 msgid "" "Error correction load\n" "\n" @@ -2492,19 +2465,19 @@ msgstr "" "\n" "O gráfico em barras que mostra o carregamento da correção de erros é renderizado nesta cor durante a operação \"Consertar\"." -#: src/preferences.c:3101 +#: src/preferences.c:3118 msgid "Default color scheme" msgstr "Esquema de cores padrão" -#: src/preferences.c:3109 +#: src/preferences.c:3126 msgid "Dialog boxes" msgstr "Caixas de diálogo" -#: src/preferences.c:3112 +#: src/preferences.c:3129 src/preferences.c:3130 msgid "Reverse OK / Cancel buttons" msgstr "Inverter botões Sim / Cancelar" -#: src/preferences.c:3137 +#: src/preferences.c:3155 msgid "" "Reverse OK / Cancel buttons\n" "\n" @@ -2518,19 +2491,19 @@ msgstr "" "\n" "As mudanças se tornarão ativas após reiniciar o dvdisaster." -#: src/preferences.c:3144 +#: src/preferences.c:3162 msgid "Misc" msgstr "Outros" -#: src/preferences.c:3148 +#: src/preferences.c:3166 msgid "Logging" msgstr "Logs" -#: src/preferences.c:3155 +#: src/preferences.c:3173 src/preferences.c:3174 msgid "Verbose logging" msgstr "" -#: src/preferences.c:3180 +#: src/preferences.c:3199 msgid "" "Verbose logging\n" "\n" @@ -2540,19 +2513,19 @@ msgstr "" "\n" "Mais informações serão mostradas na janela de Log e/ou no arquivo de log. Útil para depuração, mas pode levar a um desempenho mais baixo." -#: src/preferences.c:3187 +#: src/preferences.c:3206 msgid "Logfile:" msgstr "Arquivo de Log" -#: src/preferences.c:3188 +#: src/preferences.c:3207 msgid "Copy log to file:" msgstr "Copiar relatório para o arquivo:" -#: src/preferences.c:3197 +#: src/preferences.c:3216 msgid "Delete" msgstr "Apagar" -#: src/preferences.c:3245 +#: src/preferences.c:3264 msgid "" "Logfile\n" "\n" @@ -2562,287 +2535,287 @@ msgstr "" "\n" "Uma cópia das informações de relatório da janela de log é gravado no arquivo de Log especificado. Isso é útil para coletar informações sobre travamentos do programa, mas afeta o desempenho negativamente." -#: src/print-sense.c:613 +#: src/print-sense.c:615 #, c-format msgid "Sense error (0x%02x); " msgstr "" -#: src/print-sense.c:615 +#: src/print-sense.c:617 #, c-format msgid "Sense error: %s%c " msgstr "" -#: src/print-sense.c:629 +#: src/print-sense.c:631 #, c-format msgid "unknown asc/ascq code (0x%02x, 0x%02x)." msgstr "código asc/ascq desconhecido (0x%02x, 0x%02x)." -#: src/raw-editor.c:297 +#: src/raw-editor.c:299 msgid "windowtitle|Raw sector dump selection" msgstr "Seleção de despejo de setores Raw" -#: src/raw-editor.c:328 +#: src/raw-editor.c:330 #, c-format msgid "%s loaded, LBA %, %d samples." msgstr "%s carregado, LBA %, %d amostras." -#: src/raw-editor.c:352 +#: src/raw-editor.c:354 msgid "EDC checksum does not match - sector still defective!" msgstr "checksum EDC não combina - setor ainda defeituoso!" -#: src/raw-editor.c:357 +#: src/raw-editor.c:359 msgid "LBA does not match MSF code in sector!" msgstr "LBA não combina com o código MSF no setor!" -#: src/raw-editor.c:384 +#: src/raw-editor.c:386 msgid "Raw sector does not belong to the selected image!" msgstr "O setor Raw não pertence à imagem selecionada!" -#: src/raw-editor.c:390 src/read-adaptive.c:1348 src/read-adaptive.c:1428 -#: src/read-adaptive.c:1770 src/read-adaptive.c:1988 src/read-linear.c:426 -#: src/read-linear.c:708 src/read-linear.c:1048 src/rs01-fix.c:501 -#: src/rs01-fix.c:761 src/rs02-fix.c:786 src/rs03-fix.c:865 +#: src/raw-editor.c:392 src/read-adaptive.c:1279 src/read-adaptive.c:1351 +#: src/read-adaptive.c:1674 src/read-adaptive.c:1873 src/read-linear.c:394 +#: src/read-linear.c:667 src/read-linear.c:1018 src/rs01-fix.c:469 +#: src/rs01-fix.c:729 src/rs02-fix.c:750 src/rs03-fix.c:824 #, c-format msgid "Failed seeking to sector % in image [%s]: %s" msgstr "Falha ao pular para o setor % na imagem [%s]: %s" -#: src/raw-editor.c:397 src/read-adaptive.c:1362 src/read-adaptive.c:1434 -#: src/read-adaptive.c:1802 src/read-adaptive.c:1817 src/read-adaptive.c:1996 -#: src/read-linear.c:435 src/read-linear.c:715 src/rs01-fix.c:195 -#: src/rs01-fix.c:508 +#: src/raw-editor.c:399 src/read-adaptive.c:1293 src/read-adaptive.c:1357 +#: src/read-adaptive.c:1706 src/read-adaptive.c:1719 src/read-adaptive.c:1881 +#: src/read-linear.c:403 src/read-linear.c:674 src/rs01-fix.c:185 +#: src/rs01-fix.c:476 #, c-format msgid "Failed writing to sector % in image [%s]: %s" msgstr "Falha ao gravar no setor % da imagem [%s]: %s" -#: src/raw-editor.c:418 +#: src/raw-editor.c:420 msgid "windowtitle|Load buffer from file" msgstr "Carregar buffer do arquivo" -#: src/raw-editor.c:436 +#: src/raw-editor.c:438 msgid "windowtitle|Save buffer to file" msgstr "Salvar buffer no arquivo" -#: src/raw-editor.c:474 +#: src/raw-editor.c:476 #, c-format msgid "Buffer loaded from %s." msgstr "Buffer lido de %s." -#: src/raw-editor.c:489 +#: src/raw-editor.c:491 #, c-format msgid "Buffer saved to %s." msgstr "Buffer salvo em %s." -#: src/raw-editor.c:576 +#: src/raw-editor.c:578 msgid "*** Well done: Sector has been recovered! ***" msgstr "*** Muito bem: O setor foi recuperado! ***" -#: src/raw-editor.c:579 +#: src/raw-editor.c:582 #, c-format msgid "Current buffer state: P %d/%d, Q %d/%d" msgstr "Estado atual do buffer: P %d/%d, Q %d/%d" -#: src/raw-editor.c:690 +#: src/raw-editor.c:694 #, c-format msgid "%c Vector %d has >2 erasures (nothing done)." msgstr "Vetor %c %d tem >2 rasuras (nada foi feito)." -#: src/raw-editor.c:719 +#: src/raw-editor.c:723 #, c-format msgid "%c Vector %d already good." msgstr "Vetor %c %d já está bom." -#: src/raw-editor.c:727 +#: src/raw-editor.c:731 #, c-format msgid "%c Vector %d corrected (%d erasures)." msgstr "Vetor %c %d corrigido (%d rasuras)." -#: src/raw-editor.c:730 +#: src/raw-editor.c:734 #, c-format msgid "%c Vector %d not correctable (%d erasures)." msgstr "Vetor %c %d não pode ser corrigido (%d rasuras)." -#: src/raw-editor.c:745 +#: src/raw-editor.c:749 #, c-format msgid "no replacements for P vector %d available" msgstr "nenhum substituto para o vetor P %d disponível" -#: src/raw-editor.c:761 +#: src/raw-editor.c:765 #, c-format msgid "Exchanged P vector %d with version %d (of %d)." msgstr "Feita a troca do vetor P %d com a versão %d (de %d)." -#: src/raw-editor.c:783 +#: src/raw-editor.c:787 #, c-format msgid "no replacements for Q vector %d available" msgstr "nenhum substituto para o vetor Q %d disponível" -#: src/raw-editor.c:797 +#: src/raw-editor.c:801 #, c-format msgid "Exchanged Q vector %d with version %d (of %d)." msgstr "Feita a troca do vetor Q %d com a versão %d (de %d)" -#: src/raw-editor.c:858 src/raw-editor.c:871 +#: src/raw-editor.c:862 src/raw-editor.c:875 #, c-format msgid "Showing sample %d (of %d)." msgstr "Mostrando amostra %d (de %d)." -#: src/raw-editor.c:917 +#: src/raw-editor.c:921 msgid "Sector with lowest P failures selected." msgstr "Setor com o menor número de falhas P selecionado." -#: src/raw-editor.c:927 +#: src/raw-editor.c:931 msgid "Sector with lowest Q failures selected." msgstr "Setor com o menor número de falhas Q selecionado." -#: src/raw-editor.c:939 +#: src/raw-editor.c:942 #, c-format msgid "Smart L-EC: %s" msgstr "Smart L-EC: %s" -#: src/raw-editor.c:960 +#: src/raw-editor.c:963 msgid "Raw sector editor" msgstr "Editor de setores Raw" -#: src/raw-editor.c:982 +#: src/raw-editor.c:985 msgid "Please load a raw sector file!" msgstr "Por favor, carregue um arquivo de setores Raw!" -#: src/raw-editor.c:994 +#: src/raw-editor.c:997 msgid "Browsing" msgstr "Navegando" -#: src/raw-editor.c:1006 +#: src/raw-editor.c:1009 msgid "button|Load" msgstr "Carregar" -#: src/raw-editor.c:1011 +#: src/raw-editor.c:1014 msgid "button|Save" msgstr "Salvar" -#: src/raw-editor.c:1017 +#: src/raw-editor.c:1020 msgid "button|Prev. sector" msgstr "Setor anterior" -#: src/raw-editor.c:1022 +#: src/raw-editor.c:1025 msgid "button|Next sector" msgstr "Próximo setor" -#: src/raw-editor.c:1027 +#: src/raw-editor.c:1030 msgid "button|Sort by P" msgstr "Ordenar por P" -#: src/raw-editor.c:1032 +#: src/raw-editor.c:1035 msgid "button|Sort by Q" msgstr "Ordenar por Q" -#: src/raw-editor.c:1039 +#: src/raw-editor.c:1042 msgid "Editing" msgstr "Editando" -#: src/raw-editor.c:1051 +#: src/raw-editor.c:1054 msgid "button|Load Buf" msgstr "Carregar Buf" -#: src/raw-editor.c:1056 +#: src/raw-editor.c:1059 msgid "button|Save Buf" msgstr "Salvar Buf" -#: src/raw-editor.c:1061 +#: src/raw-editor.c:1064 msgid "button|Tag diffs" msgstr "" -#: src/raw-editor.c:1066 +#: src/raw-editor.c:1069 msgid "button|Untag all" msgstr "Desmarcar tudo" -#: src/raw-editor.c:1071 +#: src/raw-editor.c:1074 msgid "button|Redo" msgstr "Refazer" -#: src/raw-editor.c:1076 +#: src/raw-editor.c:1079 msgid "button|Undo" msgstr "Desfazer" -#: src/raw-editor.c:1083 +#: src/raw-editor.c:1086 msgid "Correction" msgstr "Correção" -#: src/raw-editor.c:1086 +#: src/raw-editor.c:1089 msgid "button|P vector" msgstr "Vetor P" -#: src/raw-editor.c:1091 +#: src/raw-editor.c:1094 msgid "button|Q vector" msgstr "Vetor Q" -#: src/raw-editor.c:1096 +#: src/raw-editor.c:1099 msgid "button|Find other P" msgstr "Encontrar outro P" -#: src/raw-editor.c:1101 +#: src/raw-editor.c:1104 msgid "button|Find other Q" msgstr "Encontrar outro Q" -#: src/raw-editor.c:1106 +#: src/raw-editor.c:1109 msgid "button|Tag erasures" msgstr "Rasuras na marcação" -#: src/raw-editor.c:1113 +#: src/raw-editor.c:1116 msgid "Heuristics" msgstr "Heurísticas" -#: src/raw-editor.c:1116 +#: src/raw-editor.c:1119 msgid "button|Smart L-EC" msgstr "Smart L-EC" -#: src/raw-sector-cache.c:35 src/raw-sector-cache.c:209 -#: src/raw-sector-cache.c:354 src/scsi-freebsd.c:131 src/scsi-freebsd.c:141 -#: src/scsi-linux.c:115 src/scsi-linux.c:124 src/scsi-netbsd.c:126 -#: src/scsi-netbsd.c:136 src/scsi-win32.c:256 +#: src/raw-sector-cache.c:37 src/raw-sector-cache.c:204 +#: src/raw-sector-cache.c:338 src/scsi-freebsd.c:133 src/scsi-freebsd.c:143 +#: src/scsi-linux.c:117 src/scsi-linux.c:126 src/scsi-netbsd.c:128 +#: src/scsi-netbsd.c:138 src/scsi-win32.c:256 #, c-format msgid "Could not open %s: %s" msgstr "Impossível abrir %s: %s" -#: src/raw-sector-cache.c:60 src/raw-sector-cache.c:124 -#: src/raw-sector-cache.c:130 src/raw-sector-cache.c:134 -#: src/raw-sector-cache.c:162 src/raw-sector-cache.c:267 +#: src/raw-sector-cache.c:62 src/raw-sector-cache.c:126 +#: src/raw-sector-cache.c:132 src/raw-sector-cache.c:136 +#: src/raw-sector-cache.c:164 src/raw-sector-cache.c:262 #, c-format msgid "Failed writing to defective sector file: %s" msgstr "Falha ao gravar no arquivo com setor defeituoso: %s" -#: src/raw-sector-cache.c:80 src/raw-sector-cache.c:105 -#: src/raw-sector-cache.c:223 src/raw-sector-cache.c:324 -#: src/raw-sector-cache.c:370 +#: src/raw-sector-cache.c:82 src/raw-sector-cache.c:107 +#: src/raw-sector-cache.c:218 src/raw-sector-cache.c:314 +#: src/raw-sector-cache.c:354 #, c-format msgid "Failed reading from defective sector file: %s" msgstr "Falha ao ler do arquivo com setor defeituoso: %s" -#: src/raw-sector-cache.c:88 +#: src/raw-sector-cache.c:90 msgid "Defective sector file is truncated" msgstr "Arquivo de setor defeituoso está truncado" -#: src/raw-sector-cache.c:112 src/raw-sector-cache.c:138 -#: src/raw-sector-cache.c:150 src/raw-sector-cache.c:216 -#: src/raw-sector-cache.c:231 +#: src/raw-sector-cache.c:114 src/raw-sector-cache.c:140 +#: src/raw-sector-cache.c:152 src/raw-sector-cache.c:211 +#: src/raw-sector-cache.c:226 #, c-format msgid "Failed seeking in defective sector file: %s" msgstr "Falha ao pular para o arquivo de setor defeituoso: %s" -#: src/raw-sector-cache.c:169 +#: src/raw-sector-cache.c:171 msgid "Fingerprints of medium and defective sector cache do not match!" msgstr "Impressões Digitais da mídia e do cache de setores defeituosos não combinam!" -#: src/raw-sector-cache.c:203 +#: src/raw-sector-cache.c:198 #, c-format msgid " [Creating new cache file %s]\n" msgstr " [Criando novo arquivo de cache %s]\n" -#: src/raw-sector-cache.c:280 +#: src/raw-sector-cache.c:270 #, c-format msgid " [Appended %d/%d sectors to cache file %s; LBA=%, ssize=%d, %d sectors]\n" msgstr " [Anexados %d/%d setores ao arquivo de cache %s; LBA=%, ssize=%d, %d setores]\n" -#: src/read-adaptive.c:55 src/rs01-create.c:1080 +#: src/read-adaptive.c:57 src/rs01-create.c:1018 #, c-format msgid "" "Error closing error correction file:\n" @@ -2851,11 +2824,11 @@ msgstr "" "Erro ao fechar o arquivo de correção de erros:\n" "%s" -#: src/read-adaptive.c:78 src/read-adaptive.c:115 +#: src/read-adaptive.c:80 src/read-adaptive.c:117 msgid "Invalid or damaged ecc file" msgstr "Arquivo ecc inválido ou danificado" -#: src/read-adaptive.c:102 +#: src/read-adaptive.c:104 #, c-format msgid "" "Can't read ecc header:\n" @@ -2864,7 +2837,7 @@ msgstr "" "Impossível ler o cabeçalho do ecc:\n" "%s" -#: src/read-adaptive.c:119 +#: src/read-adaptive.c:121 src/read-linear.c:867 #, c-format msgid "" "* Warning: This ecc file requires dvdisaster-%d.%d!\n" @@ -2874,74 +2847,74 @@ msgid "" "\n" msgstr "" -#: src/read-adaptive.c:152 src/rs01-common.c:80 src/rs01-common.c:238 -#: src/rs01-create.c:326 src/rs01-verify.c:891 +#: src/read-adaptive.c:154 src/rs01-common.c:82 src/rs01-common.c:237 +#: src/rs01-create.c:299 src/rs01-verify.c:794 #, c-format msgid "Failed skipping the ecc header: %s" msgstr "Falha ao pular o cabeçalho ecc: %s" -#: src/read-adaptive.c:161 src/read-adaptive.c:171 src/rs01-common.c:92 -#: src/rs01-common.c:102 src/rs01-common.c:350 +#: src/read-adaptive.c:163 src/read-adaptive.c:173 src/rs01-common.c:94 +#: src/rs01-common.c:104 src/rs01-common.c:347 #, c-format msgid "Error reading CRC information: %s" msgstr "Erro ao ler informação de CRC: %s" -#: src/read-adaptive.c:374 src/read-adaptive.c:1747 +#: src/read-adaptive.c:375 src/read-adaptive.c:1650 msgid "Aborted by unrecoverable error." msgstr "Abortado por erro irrecuperável." -#: src/read-adaptive.c:510 +#: src/read-adaptive.c:508 #, c-format msgid "Repairable: %2d.%1d%% (correctable: %; now reading [%..%], size %)" msgstr "Reparáveis: %2d.%1d%% (corrigíveis: %; lendo agora [%..%], tamanho %)" -#: src/read-adaptive.c:515 +#: src/read-adaptive.c:513 #, c-format msgid "Repairable: %2d.%1d%% (missing: %; now reading [%..%], size %)" msgstr "Reparáveis: %2d.%1d%% (desaparecidos: %; lendo agora [%..%], tamanho %)" -#: src/read-adaptive.c:655 src/read-adaptive.c:671 src/read-adaptive.c:701 +#: src/read-adaptive.c:651 src/read-adaptive.c:662 src/read-adaptive.c:692 #, c-format msgid "%s-type ECC found\n" msgstr "" -#: src/read-adaptive.c:674 +#: src/read-adaptive.c:665 src/read-linear.c:874 #, c-format msgid "" "* Warning: This image requires dvdisaster-%d.%d!\n" "* Proceeding could trigger incorrect behaviour.\n" -"* Please visit http://www.dvdisaster.org for an upgrade.\n" +"* Please upgrade dvdisaster.\n" "\n" msgstr "" -#: src/read-adaptive.c:703 +#: src/read-adaptive.c:694 msgid "" "Adaptive reading has not been adapted yet to handle RS03-augmented images properly.\n" "To quote the original author: \"behaviour with RS03 is unpredictable and undefined\".\n" "You should cancel and use the linear reading strategy instead. Continue at your own risk.\n" msgstr "" -#: src/read-adaptive.c:710 src/read-adaptive.c:773 src/read-adaptive.c:792 -#: src/read-adaptive.c:865 src/read-adaptive.c:960 src/read-adaptive.c:1030 -#: src/read-adaptive.c:1371 src/read-adaptive.c:1671 +#: src/read-adaptive.c:699 src/read-adaptive.c:758 src/read-adaptive.c:773 +#: src/read-adaptive.c:837 src/read-adaptive.c:926 src/read-adaptive.c:987 +#: src/read-adaptive.c:1300 src/read-adaptive.c:1576 msgid "Aborted by user request!" msgstr "Abortado a pedido do usuário!" -#: src/read-adaptive.c:721 +#: src/read-adaptive.c:709 #, c-format msgid "Stopping when unreadable intervals < %d." msgstr "Para quando intervalos ilegíveis forem < %d." -#: src/read-adaptive.c:723 src/read-adaptive.c:729 +#: src/read-adaptive.c:711 src/read-adaptive.c:717 #, c-format msgid "Adaptive reading: %s\n" msgstr "Leitura adaptativa: %s\n" -#: src/read-adaptive.c:728 +#: src/read-adaptive.c:716 msgid "Trying to collect enough data for error correction." msgstr "Tentando coletar dados suficientes para correção de erros." -#: src/read-adaptive.c:764 +#: src/read-adaptive.c:751 #, c-format msgid "" "Medium contains % sectors more as recorded in the .ecc file\n" @@ -2952,7 +2925,7 @@ msgstr "" "(Mídia: % setores; esperado do arquivo .ecc: % setores).\n" "Apenas os primeiros % setores da mídia serão processados.\n" -#: src/read-adaptive.c:785 +#: src/read-adaptive.c:768 #, c-format msgid "" "Medium contains % sectors less as recorded in the .ecc file\n" @@ -2961,12 +2934,12 @@ msgstr "" "A mídia contém % setores a menos do que foram gravados no arquivo .ecc\n" "(Mídia: % setores; esperado do arquivo .ecc: % setores).\n" -#: src/read-adaptive.c:832 +#: src/read-adaptive.c:807 #, c-format msgid "Limiting sector range to [%,%].\n" msgstr "Limitando o intervalo de setores a [%,%].\n" -#: src/read-adaptive.c:858 +#: src/read-adaptive.c:832 #, c-format msgid "" "Sector %d is missing. Can not compare medium and ecc fingerprints.\n" @@ -2975,7 +2948,7 @@ msgstr "" "Setor %d está desaparecido. Não é possível comparar as impressões digitais da mídia e do ecc.\n" "Certifique-se de que a mídia e o arquivo ecc pertencem um ao outro.\n" -#: src/read-adaptive.c:874 +#: src/read-adaptive.c:845 msgid "" "Fingerprints of medium and ecc file do not match.\n" "Medium and ecc file do not belong together.\n" @@ -2983,15 +2956,15 @@ msgstr "" "Impressões digitais da mídia e do arquivo ecc não batem.\n" "A mídia e o arquivo ecc não pertencem um ao outro.\n" -#: src/read-adaptive.c:917 src/read-linear.c:360 +#: src/read-adaptive.c:886 src/read-linear.c:337 msgid "Image file does not match the optical disc." msgstr "O arquivo de imagem não combina com o CD/DVD/BD." -#: src/read-adaptive.c:924 +#: src/read-adaptive.c:893 msgid "Reading aborted. Please select a different image file." msgstr "Leitura abortada. Por favor, selecione um arquivo de imagem diferente." -#: src/read-adaptive.c:952 +#: src/read-adaptive.c:920 #, c-format msgid "" "Image file is % sectors longer than inserted medium\n" @@ -3000,74 +2973,74 @@ msgstr "" "O arquivo de imagem tem % setores a mais do que a mídia inserida\n" "(Imagem: % setores; mídia: % setores).\n" -#: src/read-adaptive.c:980 src/read-adaptive.c:986 +#: src/read-adaptive.c:944 src/read-adaptive.c:948 msgid "Loading CRC data." msgstr "Carregando dados CRC" -#: src/read-adaptive.c:1020 +#: src/read-adaptive.c:979 msgid "Analysing existing image file" msgstr "Analisando arquivo de imagem existente" -#: src/read-adaptive.c:1040 src/rs01-common.c:280 src/rs02-verify.c:752 +#: src/read-adaptive.c:996 src/rs01-common.c:277 src/rs02-verify.c:730 #, c-format msgid "premature end in image (only %d bytes): %s\n" msgstr "fim prematuro da imagem (apenas %d bytes): %s\n" -#: src/read-adaptive.c:1127 +#: src/read-adaptive.c:1074 #, c-format msgid "Analysing existing image file: %2d%%" msgstr "Analisando arquivo de imagem existente: %2d%%" -#: src/read-adaptive.c:1156 +#: src/read-adaptive.c:1101 msgid "Determining correctable sectors" msgstr "Determinando setores corrigíveis" -#: src/read-adaptive.c:1236 +#: src/read-adaptive.c:1176 #, c-format msgid "Analysing existing image file: % readable, % correctable, % still missing.\n" msgstr "Analisando arquivo de imagem existente: % legíveis, % corrigíveis, % ainda desaparecidos.\n" -#: src/read-adaptive.c:1238 +#: src/read-adaptive.c:1178 #, c-format msgid "Analysing existing image file: % readable, % still missing.\n" msgstr "Analisando arquivo de imagem existente: % legíveis, % ainda desaparecidos.\n" -#: src/read-adaptive.c:1295 src/read-linear.c:789 +#: src/read-adaptive.c:1228 src/read-linear.c:748 msgid "Ignore once" msgstr "Ignorar uma vez" -#: src/read-adaptive.c:1296 src/read-linear.c:790 +#: src/read-adaptive.c:1229 src/read-linear.c:749 msgid "Ignore always" msgstr "Ignorar sempre" -#: src/read-adaptive.c:1297 src/read-linear.c:791 +#: src/read-adaptive.c:1230 src/read-linear.c:750 msgid "Abort" msgstr "Abortar" -#: src/read-adaptive.c:1333 +#: src/read-adaptive.c:1266 #, c-format msgid "Filling image area [%..%]" msgstr "Preenchendo área da imagem [%..%]" -#: src/read-adaptive.c:1465 src/read-linear.c:223 +#: src/read-adaptive.c:1388 src/read-linear.c:218 msgid "Reading aborted" msgstr "Leitura abortada" -#: src/read-adaptive.c:1469 src/read-linear.c:228 +#: src/read-adaptive.c:1391 src/read-linear.c:221 msgid "Preparing for reading the medium image." msgstr "Preparando para ler a imagem da mídia" -#: src/read-adaptive.c:1470 src/read-linear.c:219 src/read-linear.c:229 +#: src/read-adaptive.c:1392 src/read-linear.c:215 src/read-linear.c:222 msgid "Medium: not yet determined" msgstr "Mídia: ainda não determinada" -#: src/read-adaptive.c:1485 +#: src/read-adaptive.c:1406 msgid "" "Adaptive reading is unavailable in this version.\n" "It will be re-introduced in one of the next versions." msgstr "" -#: src/read-adaptive.c:1494 +#: src/read-adaptive.c:1415 msgid "" "* Warning: Using adaptive reading without error correction data\n" "* has little advantage over linear reading, but may\n" @@ -3076,20 +3049,20 @@ msgid "" "* Please consider using linear reading instead.\n" msgstr "" -#: src/read-adaptive.c:1554 src/read-linear.c:293 +#: src/read-adaptive.c:1473 src/read-linear.c:277 #, c-format msgid "Creating new %s image.\n" msgstr "Criando nova imagem %s.\n" -#: src/read-adaptive.c:1559 src/read-linear.c:286 +#: src/read-adaptive.c:1476 src/read-linear.c:270 msgid "Reading new medium image." msgstr "Lendo a imagem da nova mídia." -#: src/read-adaptive.c:1581 src/read-linear.c:319 +#: src/read-adaptive.c:1495 src/read-linear.c:298 msgid "Completing existing medium image." msgstr "Completando a imagem da mídia existente." -#: src/read-adaptive.c:1615 src/read-adaptive.c:1946 +#: src/read-adaptive.c:1528 src/read-adaptive.c:1842 msgid "" "\n" "Sufficient data for reconstructing the image is available.\n" @@ -3097,7 +3070,7 @@ msgstr "" "\n" "Dados suficientes para reconstruir a imagem estão disponíveis.\n" -#: src/read-adaptive.c:1731 src/read-linear.c:1115 +#: src/read-adaptive.c:1636 src/read-linear.c:1090 #, c-format msgid "" "Sector %: %s\n" @@ -3108,7 +3081,7 @@ msgstr "" "Impossível se recuperar do erro acima.\n" "Use a opção --ignore-fatal-sense para passar direto." -#: src/read-adaptive.c:1737 src/read-linear.c:1121 +#: src/read-adaptive.c:1641 src/read-linear.c:1096 #, c-format msgid "" "Sector %: %s\n" @@ -3121,28 +3094,28 @@ msgstr "" "Pode não ser possível se recuperar desse erro.\n" "A leitura deve proceder e ignorar esse erro?" -#: src/read-adaptive.c:1793 src/rs01-fix.c:451 src/rs02-fix.c:464 -#: src/rs03-fix.c:522 +#: src/read-adaptive.c:1697 src/rs01-fix.c:422 src/rs02-fix.c:431 +#: src/rs03-fix.c:484 #, c-format msgid "CRC error in sector %\n" msgstr "Erro de CRC no setor %\n" -#: src/read-adaptive.c:1972 src/scsi-layer.c:1776 +#: src/read-adaptive.c:1862 src/scsi-layer.c:1781 #, c-format msgid "Sectors %-%: %s\n" msgstr "Setores %-%: %s\n" -#: src/read-adaptive.c:1980 src/read-linear.c:1318 src/scsi-layer.c:1775 +#: src/read-adaptive.c:1865 src/read-linear.c:1284 src/scsi-layer.c:1780 #, c-format msgid "Sector %: %s\n" msgstr "Setor %: %s\n" -#: src/read-adaptive.c:2111 +#: src/read-adaptive.c:1992 #, c-format msgid "Only %2d.%1d%% of the image are readable or correctable" msgstr "Apenas %2d.%1d%% da imagem é legível ou corrigível" -#: src/read-adaptive.c:2114 +#: src/read-adaptive.c:1995 #, c-format msgid "" "\n" @@ -3153,7 +3126,7 @@ msgstr "" "%s\n" "(% legíveis, % corrigíveis, % ainda desaparecidos).\n" -#: src/read-adaptive.c:2130 +#: src/read-adaptive.c:2008 msgid "" "\n" "Good! All sectors have been read.\n" @@ -3161,12 +3134,12 @@ msgstr "" "\n" "Legal! Todos os setores foram lidos.\n" -#: src/read-adaptive.c:2141 +#: src/read-adaptive.c:2016 #, c-format msgid "No unreadable intervals with >= %d sectors left." msgstr "Nenhum sobrou nenhum intervalo com mais de %d setores." -#: src/read-adaptive.c:2144 +#: src/read-adaptive.c:2019 #, c-format msgid "" "\n" @@ -3177,42 +3150,42 @@ msgstr "" "%s\n" "%2d.%1d%% da imagem foi lido (% setores).\n" -#: src/read-adaptive-window.c:81 +#: src/read-adaptive-window.c:84 msgid "Adaptive reading:" msgstr "Leitura adaptiva:" -#: src/read-adaptive-window.c:109 +#: src/read-adaptive-window.c:112 msgid "Sectors processed" msgstr "Setores processados" -#: src/read-adaptive-window.c:112 src/scsi-layer.c:1757 +#: src/read-adaptive-window.c:115 src/scsi-layer.c:1762 msgid "readable" msgstr "legível" -#: src/read-adaptive-window.c:116 +#: src/read-adaptive-window.c:119 msgid "correctable" msgstr "corrigível" -#: src/read-adaptive-window.c:120 +#: src/read-adaptive-window.c:123 msgid "missing" msgstr "desaparecidos" -#: src/read-adaptive-window.c:130 +#: src/read-adaptive-window.c:133 #, c-format msgid "Readable: %d.%d%% / %d.%d%% required" msgstr "Legível: %d.%d%% / %d.%d%% necessários" -#: src/read-adaptive-window.c:137 +#: src/read-adaptive-window.c:140 #, c-format msgid "Total recoverable: %d.%d%%" msgstr "Total recuperável: %d.%d%%" -#: src/read-linear.c:126 +#: src/read-linear.c:122 #, c-format msgid "Aborted by unrecoverable error. % sectors read, % sectors unreadable/skipped so far." msgstr "Abortado devido a erro irrecuperável. % setores lidos, % setores ilegíveis pulados até agora." -#: src/read-linear.c:182 +#: src/read-linear.c:176 msgid "" "Automatic error correction file creation\n" "is only possible after a full reading pass.\n" @@ -3220,77 +3193,77 @@ msgstr "" "Criação automática de arquivos de criação de erros\n" "só é possível após um processo de leitura completo.\n" -#: src/read-linear.c:213 +#: src/read-linear.c:211 msgid "Scanning aborted" msgstr "Busca abortada" -#: src/read-linear.c:218 src/read-linear.c:252 +#: src/read-linear.c:214 src/read-linear.c:244 msgid "Scanning medium for read errors." msgstr "Escaneando a mídia para erros de leitura." -#: src/read-linear.c:260 src/read-linear.c:299 +#: src/read-linear.c:250 src/read-linear.c:281 msgid "Reading CRC information" msgstr "Lendo informações de CRC" -#: src/read-linear.c:368 +#: src/read-linear.c:344 #, c-format msgid "Reading aborted. Please select a different image file." msgstr "Leitura abortada. Por favor, selecione um arquivo de imagem diferente." -#: src/read-linear.c:388 +#: src/read-linear.c:363 #, c-format msgid "Completing image %s. Continuing with sector %.\n" msgstr "Completando a imagem %s. Continuando com o setor %.\n" -#: src/read-linear.c:396 +#: src/read-linear.c:369 #, c-format msgid "Completing image %s. Only missing sectors will be read.\n" msgstr "Completando a imagem %s. Apenas setores desaparecidos serão lidos.\n" -#: src/read-linear.c:461 src/read-linear.c:470 +#: src/read-linear.c:442 src/read-linear.c:447 msgid "Reading CRC information from ecc data" msgstr "Lendo informação de CRC dos dados ecc" -#: src/read-linear.c:501 +#: src/read-linear.c:473 msgid "done.\n" msgstr "pronto.\n" -#: src/read-linear.c:522 src/scsi-layer.c:2103 +#: src/read-linear.c:493 src/scsi-layer.c:2108 #, c-format msgid "Waiting %d seconds for drive to spin up...\n" msgstr "Aguardando %d segundos para que o drive gire...\n" -#: src/read-linear.c:548 src/read-linear-window.c:104 +#: src/read-linear.c:515 src/read-linear-window.c:109 #, c-format msgid "Unreadable / skipped sectors: %" msgstr "Setores ilegíveis / pulados: %" -#: src/read-linear.c:644 +#: src/read-linear.c:605 #, c-format msgid "Sector %: Speed increased to %4.1fx\n" msgstr "Setor %: Velocidade aumentada para %4.1fx\n" -#: src/read-linear.c:647 +#: src/read-linear.c:608 #, c-format msgid "Sector %: Speed dropped to %4.1fx\n" msgstr "Setor %: Velocidade caiu para %4.1fx\n" -#: src/read-linear.c:653 +#: src/read-linear.c:614 #, c-format -msgid "Read position: %3d.%1d%% (nn.nx)" +msgid "Read position: %3d.%1d%% (nn.nx), sector %/%, % sectors read OK, % read errors, % crc errors" msgstr "" -#: src/read-linear.c:655 +#: src/read-linear.c:615 #, c-format -msgid "Read position: %3d.%1d%% (%4.1fx)" -msgstr "Posição de leitura: %3d.%1d%% (%4.1fx)" +msgid "Read position: %3d.%1d%% (%4.1fx), sector %/%, % sectors read OK, % read errors, % crc errors" +msgstr "" -#: src/read-linear.c:749 +#: src/read-linear.c:708 #, c-format msgid "* CRC error, sector: %lld\n" msgstr "* Erro de CRC, setor: %lld\n" -#: src/read-linear.c:879 +#: src/read-linear.c:841 #, c-format msgid "" "This ecc file requires dvdisaster-%d.%d!\n" @@ -3301,37 +3274,37 @@ msgid "" "\n" msgstr "" -#: src/read-linear.c:887 +#: src/read-linear.c:849 #, c-format msgid "" "This image requires dvdisaster-%d.%d!\n" "\n" "Proceeding could trigger incorrect behaviour.\n" -"Please visit http://www.dvdisaster.org for an upgrade.\n" +"Please upgrade dvdisaster.\n" "\n" msgstr "" -#: src/read-linear.c:898 src/read-linear.c:1002 src/read-linear.c:1132 +#: src/read-linear.c:858 src/read-linear.c:973 src/read-linear.c:1106 #, c-format msgid "Aborted by user request! % sectors read, % sectors unreadable/skipped so far." msgstr "Abortado pelo usuário! % setores lidos, % setores ilegíveis/pulados até agora." -#: src/read-linear.c:1060 +#: src/read-linear.c:1030 #, c-format msgid "unexpected read error in image for sector %" msgstr "erro de leitura inesperado na imagem no setor %" -#: src/read-linear.c:1148 +#: src/read-linear.c:1122 #, c-format msgid "Sector %: %3d C2 errors.%s\n" msgstr "Setor %: %3d erros C2.%s\n" -#: src/read-linear.c:1285 +#: src/read-linear.c:1256 #, c-format msgid "Sector %: %s Skipping %d sectors.\n" msgstr "Setor %: %s Pulando %d setores.\n" -#: src/read-linear.c:1356 +#: src/read-linear.c:1319 #, c-format msgid "" "Trying to complete image, reading pass %d of %d.\n" @@ -3340,7 +3313,7 @@ msgstr "" "Tentando completar a imagem, processo de leitura %d de %d.\n" "%s" -#: src/read-linear.c:1360 +#: src/read-linear.c:1321 #, c-format msgid "" "\n" @@ -3349,174 +3322,183 @@ msgstr "" "\n" "Tentando completar a imagem, processo de leitura %d de %d.\n" -#: src/read-linear.c:1397 +#: src/read-linear.c:1358 #, c-format msgid "% sectors read. " msgstr "% setores lidos. " -#: src/read-linear.c:1398 +#: src/read-linear.c:1359 #, c-format msgid "% sectors read; % unreadable sectors." msgstr "% setores lidos; % setores ilegíveis." -#: src/read-linear.c:1410 +#: src/read-linear.c:1367 +#, c-format +msgid "All sectors are readable, but %d contain defective content." +msgstr "" + +#: src/read-linear.c:1377 #, c-format msgid "All sectors successfully read, but wrong image length (% sectors difference)" msgstr "Todos os setores lidos com sucesso, mas o tamanho da imagem está errado (diferença de % setores)" -#: src/read-linear.c:1416 +#: src/read-linear.c:1383 msgid "All sectors successfully read, but wrong ecc md5sum." msgstr "" -#: src/read-linear.c:1422 +#: src/read-linear.c:1389 msgid "All sectors successfully read, but incomplete or damaged checksums." msgstr "" -#: src/read-linear.c:1423 +#: src/read-linear.c:1390 msgid "All sectors successfully read. Checksums match." msgstr "Todos os setores lidos com sucesso. Checksums combinam." -#: src/read-linear.c:1425 +#: src/read-linear.c:1392 msgid "All sectors successfully read." msgstr "Todos os setores lidos com sucesso." -#: src/read-linear.c:1430 +#: src/read-linear.c:1397 #, c-format msgid "% unreadable sectors." msgstr "% setores ilegíveis." -#: src/read-linear.c:1433 +#: src/read-linear.c:1400 #, c-format msgid "% CRC errors and a md5sum mismatch in the CRC section." msgstr "" -#: src/read-linear.c:1435 +#: src/read-linear.c:1402 #, c-format msgid "% CRC errors." msgstr "% erros de CRC." -#: src/read-linear.c:1437 +#: src/read-linear.c:1404 #, c-format msgid "% CRC errors, % unreadable sectors." msgstr "% erros de CRC, % setores ilegíveis." -#: src/read-linear.c:1446 +#: src/read-linear.c:1414 msgid "Scanning finished: " msgstr "Scan terminado: " -#: src/read-linear.c:1448 +#: src/read-linear.c:1419 msgid "Reading finished: " msgstr "Leitura terminada: " -#: src/read-linear.c:1462 +#: src/read-linear.c:1432 src/read-linear.c:1443 #, c-format msgid "" "%d sectors missing at the end of the disc.\n" "This is okay if the CD was written in TAO (track at once) mode.\n" -"The Image will be truncated accordingly. See the manual for details.\n" +"%s" msgstr "" -"faltam %d setores no fim do disco.\n" -"Isso está certo se o CD foi gravado no modo TAO (track at once).\n" -"A imagem será truncada desta forma. Veja o manual para detalhes.\n" -#: src/read-linear.c:1469 -#, c-format +#: src/read-linear.c:1437 +msgid "See the manual for details.\n" +msgstr "" + +#: src/read-linear.c:1439 +msgid "The Image will be truncated accordingly. See the manual for details.\n" +msgstr "" + +#: src/read-linear.c:1448 +msgid "" +"See the manual for details.\n" +"Use the --dao option to disable this message.\n" +msgstr "" + +#: src/read-linear.c:1451 msgid "" -"%d sectors missing at the end of the disc.\n" -"This is okay if the CD was written in TAO (track at once) mode.\n" "The Image will be truncated accordingly. See the manual for details.\n" "Use the --dao option to disable image truncating.\n" msgstr "" -"faltam %d setores no fim do disco.\n" -"Isso está certo se o CD foi gravado no modo TAO (track at once).\n" -"A imagem será truncada para a forma. Veja o manual para detalhes.\n" -"Use a opção --dao para impedir o programa de truncar a imagem.\n" -#: src/read-linear-window.c:97 +#: src/read-linear-window.c:102 #, c-format msgid "Current Speed: %d.%dx" msgstr "Velocidade atual: %d.%dx" -#: src/read-linear-window.c:254 src/read-linear-window.c:323 +#: src/read-linear-window.c:264 src/read-linear-window.c:333 msgid "Already present" msgstr "Já presente" -#: src/read-linear-window.c:288 src/read-linear-window.c:330 -#: src/rs01-verify.c:126 src/rs02-verify.c:121 src/rs03-verify.c:130 +#: src/read-linear-window.c:298 src/read-linear-window.c:340 +#: src/rs01-verify.c:130 src/rs02-verify.c:123 src/rs03-verify.c:133 msgid "Sectors with CRC errors" msgstr "Setores com erros de CRC" -#: src/read-linear-window.c:311 +#: src/read-linear-window.c:321 msgid "Medium state" msgstr "Estado da mídia" -#: src/read-linear-window.c:319 +#: src/read-linear-window.c:329 msgid "Not touched this time" msgstr "Não tocados dessa vez" -#: src/read-linear-window.c:326 +#: src/read-linear-window.c:336 msgid "Successfully read" msgstr "Lidos com sucesso" -#: src/read-linear-window.c:333 +#: src/read-linear-window.c:343 msgid "Unreadable / skipped" msgstr "Ilegíveis / pulados" -#: src/read-linear-window.c:444 +#: src/read-linear-window.c:454 msgid "Speed" msgstr "Velocidade" -#: src/recover-raw.c:65 +#: src/recover-raw.c:66 #, c-format msgid "Sector % dumped to %s\n" msgstr "Setor % despejado em %s\n" -#: src/rs01-common.c:252 src/rs02-verify.c:831 src/rs03-verify.c:1228 +#: src/rs01-common.c:251 src/rs02-verify.c:806 src/rs03-verify.c:1144 #, c-format msgid "- testing sectors : %3d%%" msgstr "- testando setores : %3d%%" -#: src/rs01-common.c:253 +#: src/rs01-common.c:252 #, c-format msgid "Scanning image sectors: %3d%%" msgstr "Escaneando os setores: %3d%%" -#: src/rs01-common.c:308 src/rs02-verify.c:784 +#: src/rs01-common.c:305 src/rs02-verify.c:762 #, c-format msgid "* missing sector : %\n" msgstr "* setor desaparecido : %\n" -#: src/rs01-common.c:309 src/rs02-verify.c:785 +#: src/rs01-common.c:306 src/rs02-verify.c:763 #, c-format msgid "* missing sectors : % - %\n" msgstr "* setores desaparecidos : % - %\n" -#: src/rs01-common.c:327 src/rs01-common.c:399 src/rs01-create.c:343 +#: src/rs01-common.c:324 src/rs01-common.c:395 src/rs01-create.c:316 #, c-format msgid "Error writing CRC information: %s" msgstr "Erro ao gravar informações de CRC: %s" -#: src/rs01-common.c:356 src/rs02-verify.c:797 src/rs03-verify.c:1202 +#: src/rs01-common.c:353 src/rs02-verify.c:775 src/rs03-verify.c:1118 #, c-format msgid "* CRC error, sector: %\n" msgstr "" -#: src/rs01-create.c:63 +#: src/rs01-create.c:65 #, c-format msgid "Redundancy %4.1f%% out of useful range [3.2%%..64.5%%]" msgstr "Redundância de %4.1f%% do intervalo útil [3.2%%..64.5%%]" -#: src/rs01-create.c:76 src/rs03-common.c:467 +#: src/rs01-create.c:78 src/rs03-common.c:468 #, c-format msgid "Ecc file size %m out of useful range [% .. %]" msgstr "Tamanho do arquivo ecc %m do intervalo útil [% .. %]" -#: src/rs01-create.c:91 +#: src/rs01-create.c:93 #, c-format msgid "Redundancy %d out of useful range [8..100]." msgstr "Redundância %d do intervalo útil [8..100]" -#: src/rs01-create.c:107 src/rs01-create.c:112 +#: src/rs01-create.c:105 src/rs01-create.c:106 #, c-format msgid "" "\n" @@ -3525,27 +3507,27 @@ msgstr "" "\n" "Arquivo de imagem %s apagado.\n" -#: src/rs01-create.c:123 +#: src/rs01-create.c:113 #, c-format msgid "Image file %s not deleted: %s\n" msgstr "Arquivo de imagem %s não apagado: %s\n" -#: src/rs01-create.c:160 src/rs01-fix.c:81 src/rs02-create.c:63 -#: src/rs02-fix.c:57 src/rs03-create.c:154 src/rs03-fix.c:57 +#: src/rs01-create.c:147 src/rs01-fix.c:79 src/rs02-create.c:61 +#: src/rs02-fix.c:55 src/rs03-create.c:152 src/rs03-fix.c:54 #, c-format msgid "Aborted by unrecoverable error." msgstr "Abortado por um erro irrecuperável." -#: src/rs01-create.c:231 +#: src/rs01-create.c:212 msgid "Error correction file creation aborted" msgstr "Criação do arquivo de correção de erros abortada" -#: src/rs01-create.c:254 +#: src/rs01-create.c:235 #, c-format msgid "Encoding with Method RS01: %d roots, %4.1f%% redundancy." msgstr "Codificando com o Método RS01: %d raízes, %4.1f%% de redundância." -#: src/rs01-create.c:261 src/rs03-create.c:1373 +#: src/rs01-create.c:240 src/rs03-create.c:1331 #, c-format msgid "" "Creating the error correction file.\n" @@ -3554,49 +3536,49 @@ msgstr "" "Criando o arquivo de correção de erros.\n" "%s" -#: src/rs01-create.c:275 src/rs03-create.c:297 +#: src/rs01-create.c:252 src/rs03-create.c:284 #, c-format msgid "Aborted to keep existing ecc file." msgstr "" -#: src/rs01-create.c:291 src/rs02-create.c:1080 src/rs03-create.c:1329 +#: src/rs01-create.c:267 src/rs02-create.c:1036 src/rs03-create.c:1285 #, c-format msgid "Image file %s: %s." msgstr "" -#: src/rs01-create.c:299 src/rs03-create.c:1348 +#: src/rs01-create.c:275 src/rs03-create.c:1304 msgid "No error correction file specified!\n" msgstr "" -#: src/rs01-create.c:312 +#: src/rs01-create.c:288 #, c-format msgid "Writing sector checksums: %3d%%" msgstr "Gravando checksum dos setores: %3d%%" -#: src/rs01-create.c:317 +#: src/rs01-create.c:291 msgid "1. Writing image sector checksums:" msgstr "1. Gravando checksums dos setores da imagem:" -#: src/rs01-create.c:369 src/rs01-window.c:131 +#: src/rs01-create.c:335 src/rs01-window.c:128 msgid "1. Calculating image sector checksums:" msgstr "1. Calculando checksums dos setores da imagem:" -#: src/rs01-create.c:388 src/rs01-create.c:538 src/rs01-create.c:636 +#: src/rs01-create.c:352 src/rs01-create.c:493 src/rs01-create.c:585 #, c-format msgid "Aborted by user request! (partial error correction file removed)" msgstr "Abortado pelo usuário! (arquivos de correção de erros parciais removidos)" -#: src/rs01-create.c:401 +#: src/rs01-create.c:361 #, c-format msgid "% sectors unread or missing due to errors.\n" msgstr "% setores não lidos ou desaparecidos graças a erros.\n" -#: src/rs01-create.c:458 +#: src/rs01-create.c:414 #, c-format msgid "Failed skipping ecc+crc header: %s" msgstr "Falha ao pular o cabeçalho ecc+crc: %s" -#: src/rs01-create.c:485 src/rs02-create.c:553 +#: src/rs01-create.c:441 src/rs02-create.c:519 #, c-format msgid "" "Failed allocating memory for I/O cache.\n" @@ -3607,24 +3589,24 @@ msgstr "" "Tamanho do cache é atualmente %d MiB.\n" "Tente reduzí-lo.\n" -#: src/rs01-create.c:619 src/rs01-create.c:749 src/rs01-create.c:1049 -#: src/rs02-create.c:1005 src/rs03-create.c:1157 +#: src/rs01-create.c:569 src/rs01-create.c:693 src/rs01-create.c:987 +#: src/rs02-create.c:964 src/rs03-create.c:1121 #, c-format msgid "Ecc generation: %3d.%1d%%" msgstr "Geração de ecc: %3d.%1d%%" -#: src/rs01-create.c:769 src/rs01-fix.c:219 src/rs01-fix.c:243 -#: src/rs01-fix.c:295 src/rs01-fix.c:332 src/rs01-fix.c:352 src/rs01-fix.c:407 -#: src/rs01-verify.c:457 src/rs01-verify.c:916 src/rs02-create.c:130 -#: src/rs02-fix.c:260 src/rs02-fix.c:281 src/rs02-fix.c:372 -#: src/rs02-verify.c:741 src/rs03-create.c:269 src/rs03-fix.c:278 -#: src/rs03-fix.c:327 src/rs03-fix.c:350 src/rs03-fix.c:429 -#: src/rs03-verify.c:548 src/rs03-verify.c:1096 +#: src/rs01-create.c:712 src/rs01-fix.c:207 src/rs01-fix.c:232 +#: src/rs01-fix.c:278 src/rs01-fix.c:308 src/rs01-fix.c:325 src/rs01-fix.c:378 +#: src/rs01-verify.c:440 src/rs01-verify.c:812 src/rs02-create.c:118 +#: src/rs02-fix.c:233 src/rs02-fix.c:253 src/rs02-fix.c:339 +#: src/rs02-verify.c:719 src/rs03-create.c:257 src/rs03-fix.c:252 +#: src/rs03-fix.c:295 src/rs03-fix.c:317 src/rs03-fix.c:391 +#: src/rs03-verify.c:538 src/rs03-verify.c:1012 #, c-format msgid "Aborted by user request!" msgstr "Abortado pelo usuário!" -#: src/rs01-create.c:1062 +#: src/rs01-create.c:1000 #, c-format msgid "" "could not write to ecc file \"%s\":\n" @@ -3633,7 +3615,7 @@ msgstr "" "impossível gravar no arquivo ecc \"%s\":\n" "%s" -#: src/rs01-create.c:1077 +#: src/rs01-create.c:1015 #, c-format msgid "" "Can't write ecc header:\n" @@ -3642,12 +3624,12 @@ msgstr "" "Impossível gravar no cabeçalho ecc:\n" "%s" -#: src/rs01-create.c:1085 src/rs02-create.c:1177 src/rs03-create.c:1446 +#: src/rs01-create.c:1023 src/rs02-create.c:1127 src/rs03-create.c:1404 #, c-format msgid "Ecc generation: 100.0%%\n" msgstr "Geração de ecc: 100.0%%\n" -#: src/rs01-create.c:1086 src/rs03-create.c:1453 +#: src/rs01-create.c:1024 src/rs03-create.c:1411 #, c-format msgid "" "Error correction file \"%s\" created.\n" @@ -3656,7 +3638,7 @@ msgstr "" "Arquivo de correção de erros \"%s\" criado.\n" "Lembre-se de manter este arquivo em uma mídia confiável.\n" -#: src/rs01-create.c:1095 src/rs03-create.c:1482 +#: src/rs01-create.c:1031 src/rs03-create.c:1436 msgid "" "The error correction file has been successfully created.\n" "Make sure to keep this file on a reliable medium." @@ -3664,27 +3646,27 @@ msgstr "" "O arquivo de correção de erros foi criado com sucesso.\n" "Lembre-se de manter este arquivo em uma mídia confiável." -#: src/rs01-fix.c:39 src/rs02-fix.c:448 +#: src/rs01-fix.c:41 src/rs02-fix.c:415 #, c-format msgid "Failed seeking in crc area: %s" msgstr "Falha ao buscar na área de crc: %s" -#: src/rs01-fix.c:44 src/rs02-fix.c:451 src/rs02-verify.c:444 +#: src/rs01-fix.c:46 src/rs02-fix.c:418 src/rs02-verify.c:438 #, c-format msgid "problem reading crc data: %s" msgstr "problema ao ler dados de crc: %s" -#: src/rs01-fix.c:148 src/rs02-fix.c:190 src/rs03-fix.c:189 +#: src/rs01-fix.c:138 src/rs02-fix.c:169 src/rs03-fix.c:166 msgid "Repairing of image aborted" msgstr "Conserto da imagem abortado" -#: src/rs01-fix.c:154 +#: src/rs01-fix.c:144 #, c-format msgid "Error correction file using Method RS01, %d roots, %4.1f%% redundancy." msgstr "Arquivo de correção de erros usando o Método RS01, %d raízes, %4.1f de redundância." -#: src/rs01-fix.c:161 src/rs02-fix.c:197 src/rs02-fix.c:229 src/rs03-fix.c:200 -#: src/rs03-fix.c:252 +#: src/rs01-fix.c:151 src/rs02-fix.c:174 src/rs02-fix.c:205 src/rs03-fix.c:175 +#: src/rs03-fix.c:226 #, c-format msgid "" "Repairing the image.\n" @@ -3693,7 +3675,7 @@ msgstr "" "Consertando a imagem.\n" "%s" -#: src/rs01-fix.c:166 src/rs02-fix.c:235 src/rs03-fix.c:258 +#: src/rs01-fix.c:156 src/rs02-fix.c:211 src/rs03-fix.c:232 #, c-format msgid "" "\n" @@ -3702,7 +3684,7 @@ msgstr "" "\n" "Modo de conserto(%s): Setores recuperáveis serão consertados na imagem.\n" -#: src/rs01-fix.c:201 +#: src/rs01-fix.c:191 #, c-format msgid "" "The image file is %lld sectors longer as noted in the\n" @@ -3719,7 +3701,7 @@ msgstr "" "\n" "%s" -#: src/rs01-fix.c:209 src/rs02-fix.c:250 src/rs03-fix.c:317 +#: src/rs01-fix.c:199 src/rs02-fix.c:225 src/rs03-fix.c:287 #, c-format msgid "" "Image file is % sectors longer than expected.\n" @@ -3730,17 +3712,17 @@ msgstr "" "Assumindo que é uma mídia de modo TAO.\n" "% setores serão removidos do fim da imagem.\n" -#: src/rs01-fix.c:238 src/rs02-fix.c:276 src/rs03-fix.c:345 +#: src/rs01-fix.c:227 src/rs02-fix.c:248 src/rs03-fix.c:312 msgid "Is it okay to remove the superfluous sectors?" msgstr "Tudo bem se os setores supérfluos forem removidos?" -#: src/rs01-fix.c:255 src/rs01-fix.c:277 src/rs02-fix.c:290 src/rs02-fix.c:308 -#: src/rs03-fix.c:361 src/rs03-fix.c:381 +#: src/rs01-fix.c:244 src/rs01-fix.c:261 src/rs02-fix.c:262 src/rs02-fix.c:276 +#: src/rs03-fix.c:328 src/rs03-fix.c:344 #, c-format msgid "Image has been truncated by % sectors.\n" msgstr "A imagem foi truncada para % setores.\n" -#: src/rs01-fix.c:268 src/rs02-fix.c:302 src/rs03-fix.c:373 +#: src/rs01-fix.c:252 src/rs02-fix.c:270 src/rs03-fix.c:336 msgid "" "Add the --truncate option to the program call\n" "to have the superfluous sectors removed." @@ -3748,7 +3730,7 @@ msgstr "" "Adicione a opção --truncate à chamada do programa\n" "para que os setores supérfluos sejam removidos." -#: src/rs01-fix.c:287 src/rs03-fix.c:270 +#: src/rs01-fix.c:270 src/rs03-fix.c:244 #, c-format msgid "" "The image file is %d bytes longer than noted\n" @@ -3759,7 +3741,7 @@ msgstr "" "no arquivo ecc. Os bytes supérfluos devem ser\n" "removidos do arquivo da imagem?\n" -#: src/rs01-fix.c:308 src/rs03-fix.c:291 +#: src/rs01-fix.c:286 src/rs03-fix.c:261 #, c-format msgid "" "The image file is %d bytes longer than noted\n" @@ -3772,12 +3754,12 @@ msgstr "" "Adicione a opção --truncate à chamada do programa\n" "para que os setores supérfluos sejam removidos." -#: src/rs01-fix.c:317 src/rs03-fix.c:300 +#: src/rs01-fix.c:295 src/rs03-fix.c:270 #, c-format msgid "Image has been truncated by %d bytes.\n" msgstr "A imagem foi truncada em %d bytes.\n" -#: src/rs01-fix.c:325 +#: src/rs01-fix.c:303 msgid "" "Image file appears to be truncated.\n" "Consider completing it with another reading pass before going on.\n" @@ -3785,7 +3767,7 @@ msgstr "" "O arquivo de imagem parece estar truncado.\n" "Considere completá-lo com outro processo de leitura antes de prosseguir.\n" -#: src/rs01-fix.c:344 +#: src/rs01-fix.c:319 #, c-format msgid "" "Sector %d is missing. Can not compare image and ecc fingerprints.\n" @@ -3794,7 +3776,7 @@ msgstr "" "O setor %d está desaparecido. Impossível comparar a imagem e as impressões digitais do ecc.\n" "Certifique-se de que a imagem e o arquivo ecc pertencem um ao outro.\n" -#: src/rs01-fix.c:360 +#: src/rs01-fix.c:332 msgid "" "Fingerprints of image and ecc file do not match.\n" "Image and ecc file do not belong together.\n" @@ -3802,17 +3784,17 @@ msgstr "" "As impressões digitais da imagem e do arquivo ecc não combinam.\n" "A imagem e o arquivo ecc não pertencem um ao outro.\n" -#: src/rs01-fix.c:479 +#: src/rs01-fix.c:447 #, c-format msgid "* %3d unrepairable sectors: " msgstr "* %3d setores irrecuperáveis: " -#: src/rs01-fix.c:527 +#: src/rs01-fix.c:495 #, c-format msgid "Failed seeking in ecc area: %s" msgstr "Falha ao buscar na área ecc: %s" -#: src/rs01-fix.c:531 +#: src/rs01-fix.c:499 #, c-format msgid "" "Can't read ecc file:\n" @@ -3821,27 +3803,27 @@ msgstr "" "Impossível ler o arquivo ecc:\n" "%s" -#: src/rs01-fix.c:727 +#: src/rs01-fix.c:695 #, c-format msgid "-> Error located in sector % at byte %4d (value %02x '%c', expected %02x '%c')\n" msgstr "-> Erro localizado no setor %, byte %4d (valor: %02x '%c', esperado: %02x '%c')\n" -#: src/rs01-fix.c:734 +#: src/rs01-fix.c:702 #, c-format msgid "Unexpected byte error in sector %, byte %d\n" msgstr "Erro de byte inesperado no setor %, byte %d\n" -#: src/rs01-fix.c:740 +#: src/rs01-fix.c:708 #, c-format msgid "Bad error location %d; corrupted .ecc file?\n" msgstr "Localização errada do erro %d; arquivo .ecc corrompido?\n" -#: src/rs01-fix.c:750 src/rs02-fix.c:752 src/rs03-fix.c:819 +#: src/rs01-fix.c:718 src/rs02-fix.c:716 src/rs03-fix.c:778 #, c-format msgid " %3d repaired sectors: " msgstr " %3d setores recuperados: " -#: src/rs01-fix.c:769 src/rs02-fix.c:794 src/rs03-fix.c:870 +#: src/rs01-fix.c:737 src/rs02-fix.c:758 src/rs03-fix.c:829 #, c-format msgid "" "could not write medium sector %:\n" @@ -3850,175 +3832,175 @@ msgstr "" "impossível gravar o setor % da mídia:\n" "%s" -#: src/rs01-fix.c:798 src/rs02-fix.c:835 src/rs03-fix.c:927 +#: src/rs01-fix.c:766 src/rs02-fix.c:797 src/rs03-fix.c:886 #, c-format msgid "Ecc progress: %3d.%1d%%" msgstr "Progresso do ecc: %3d.%1d%%" -#: src/rs01-fix.c:810 src/rs02-fix.c:849 src/rs03-fix.c:939 +#: src/rs01-fix.c:778 src/rs02-fix.c:811 src/rs03-fix.c:898 #, c-format msgid "Ecc progress: 100.0%%\n" msgstr "Progresso do Ecc: 100.0%%\n" -#: src/rs01-fix.c:811 +#: src/rs01-fix.c:779 #, c-format msgid "Repaired sectors: % \n" msgstr "Setores recuperados: % \n" -#: src/rs01-fix.c:813 src/rs02-fix.c:854 src/rs03-fix.c:944 +#: src/rs01-fix.c:781 src/rs02-fix.c:816 src/rs03-fix.c:905 #, c-format msgid "Unrepaired sectors: %\n" msgstr "Setores não-recuparados: %\n" -#: src/rs01-fix.c:817 src/rs02-fix.c:858 src/rs03-fix.c:948 +#: src/rs01-fix.c:783 src/rs02-fix.c:818 src/rs03-fix.c:907 #, c-format msgid "Image sectors could not be fully restored (% repaired; % unrepaired)" msgstr "Os setores da imagem não puderam ser completamente recuparados (% recuperados; % não recuperados)" -#: src/rs01-fix.c:824 src/rs02-fix.c:865 src/rs03-fix.c:956 +#: src/rs01-fix.c:789 src/rs02-fix.c:824 src/rs03-fix.c:914 msgid "Good! All sectors are already present." msgstr "Legal! Todos os setores já estão presentes." -#: src/rs01-fix.c:828 src/rs02-fix.c:869 src/rs03-fix.c:961 +#: src/rs01-fix.c:793 src/rs02-fix.c:828 src/rs03-fix.c:919 msgid "Good! All sectors are repaired." msgstr "Legal! Todos os setores foram consertados." -#: src/rs01-fix.c:833 src/rs02-fix.c:874 src/rs03-fix.c:967 +#: src/rs01-fix.c:798 src/rs02-fix.c:833 src/rs03-fix.c:925 #, c-format msgid "Erasure counts per ecc block: avg = %.1f; worst = %d.\n" msgstr "Contagem de rasuras por bloco ecc: média = %.1f; pior = %d.\n" -#: src/rs01-fix.c:839 src/rs02-fix.c:880 src/rs03-fix.c:973 +#: src/rs01-fix.c:803 src/rs02-fix.c:838 src/rs03-fix.c:930 msgid "Repair results:" msgstr "Resultados da recuperação:" -#: src/rs01-verify.c:48 src/rs01-verify.c:417 src/rs03-verify.c:61 +#: src/rs01-verify.c:50 src/rs01-verify.c:410 src/rs03-verify.c:64 msgid "n/a" msgstr "indisponível" -#: src/rs01-verify.c:129 src/rs01-verify.c:150 src/rs02-verify.c:124 -#: src/rs02-verify.c:145 src/rs03-verify.c:133 src/rs03-verify.c:154 +#: src/rs01-verify.c:133 src/rs01-verify.c:154 src/rs02-verify.c:126 +#: src/rs02-verify.c:147 src/rs03-verify.c:136 src/rs03-verify.c:157 msgid "Missing sectors" msgstr "Setores desaparecidos" -#: src/rs01-verify.c:193 src/rs02-verify.c:182 +#: src/rs01-verify.c:197 src/rs02-verify.c:184 msgid "Image file summary" msgstr "Sumário do arquivo de imagem" -#: src/rs01-verify.c:202 src/rs03-verify.c:282 +#: src/rs01-verify.c:206 src/rs03-verify.c:285 msgid "No image present." msgstr "Nenhuma imagem presente." -#: src/rs01-verify.c:212 src/rs01-verify.c:302 src/rs02-verify.c:192 -#: src/rs02-verify.c:298 src/rs03-verify.c:293 +#: src/rs01-verify.c:216 src/rs01-verify.c:306 src/rs02-verify.c:194 +#: src/rs02-verify.c:300 src/rs03-verify.c:296 msgid "Medium sectors:" msgstr "Setores da mídia:" -#: src/rs01-verify.c:220 +#: src/rs01-verify.c:224 msgid "Checksum errors:" msgstr "Erros de checksum:" -#: src/rs01-verify.c:228 +#: src/rs01-verify.c:232 msgid "Missing Sectors:" msgstr "Setores desaparecidos:" -#: src/rs01-verify.c:236 src/rs01-verify.c:310 +#: src/rs01-verify.c:240 src/rs01-verify.c:314 msgid "Image checksum:" msgstr "Checksum da imagem:" -#: src/rs01-verify.c:248 src/rs02-verify.c:244 src/rs03-verify.c:262 +#: src/rs01-verify.c:252 src/rs02-verify.c:246 src/rs03-verify.c:265 msgid "Image state" msgstr "Estado da imagem" -#: src/rs01-verify.c:259 +#: src/rs01-verify.c:263 msgid "Error correction file summary" msgstr "Sumário da correção de erros" -#: src/rs01-verify.c:278 src/rs02-verify.c:274 src/rs03-verify.c:222 +#: src/rs01-verify.c:282 src/rs02-verify.c:276 src/rs03-verify.c:225 msgid "Created by:" msgstr "Criada por:" -#: src/rs01-verify.c:286 src/rs02-verify.c:282 src/rs03-verify.c:213 +#: src/rs01-verify.c:290 src/rs02-verify.c:284 src/rs03-verify.c:216 msgid "Method:" msgstr "Método:" -#: src/rs01-verify.c:294 src/rs02-verify.c:290 src/rs03-verify.c:231 +#: src/rs01-verify.c:298 src/rs02-verify.c:292 src/rs03-verify.c:234 msgid "Requires:" msgstr "Requer:" -#: src/rs01-verify.c:318 src/rs03-verify.c:249 +#: src/rs01-verify.c:322 src/rs03-verify.c:252 msgid "Fingerprint:" msgstr "Impressão digital:" -#: src/rs01-verify.c:326 +#: src/rs01-verify.c:330 msgid "Ecc blocks:" msgstr "Blocos ecc:" -#: src/rs01-verify.c:334 src/rs02-verify.c:50 src/rs02-verify.c:322 +#: src/rs01-verify.c:338 src/rs02-verify.c:52 src/rs02-verify.c:324 msgid "Ecc checksum:" msgstr "Checksum do Ecc:" -#: src/rs01-verify.c:398 +#: src/rs01-verify.c:397 msgid "Comparison aborted" msgstr "Comparação abortada" -#: src/rs01-verify.c:405 src/rs01-verify.c:560 +#: src/rs01-verify.c:402 src/rs01-verify.c:523 msgid "Comparing image and error correction files." msgstr "Comparando a imagem e os arquivos de correção de erros." -#: src/rs01-verify.c:406 src/rs03-verify.c:737 src/rs03-verify.c:748 +#: src/rs01-verify.c:403 src/rs03-verify.c:700 src/rs03-verify.c:708 msgid "- Checking image file -" msgstr "- Verificando o arquivo de imagem -" -#: src/rs01-verify.c:424 src/rs01-verify.c:567 src/rs01-verify.c:583 +#: src/rs01-verify.c:417 src/rs01-verify.c:529 src/rs01-verify.c:542 msgid "not present\n" msgstr "não está presente\n" -#: src/rs01-verify.c:434 src/rs02-verify.c:620 +#: src/rs01-verify.c:424 src/rs02-verify.c:601 #, c-format msgid "present, contains % medium sectors.\n" msgstr "está presente, contém % setores na mídia.\n" -#: src/rs01-verify.c:441 +#: src/rs01-verify.c:428 #, c-format msgid "present, contains % medium sectors and %d bytes.\n" msgstr "está presente, contém % setores na mídia e %d bytes.\n" -#: src/rs01-verify.c:445 src/rs01-verify.c:726 src/rs01-verify.c:749 +#: src/rs01-verify.c:430 src/rs01-verify.c:659 src/rs01-verify.c:676 #, c-format msgid "% sectors + %d bytes" msgstr "% setores + %d bytes" -#: src/rs01-verify.c:471 +#: src/rs01-verify.c:454 #, c-format msgid "* truncated image : % sectors too short\n" msgstr "* imagem truncada : % setores a menos\n" -#: src/rs01-verify.c:475 +#: src/rs01-verify.c:456 #, c-format msgid "% (% sectors too short)" msgstr "% (% setores a menos)" -#: src/rs01-verify.c:499 +#: src/rs01-verify.c:478 #, c-format msgid "* image too long : % excess sectors\n" msgstr "* imagem grande demais : % setores em excesso\n" -#: src/rs01-verify.c:503 +#: src/rs01-verify.c:480 #, c-format msgid "% (% excess sectors)" msgstr "% (% setores em excesso)" -#: src/rs01-verify.c:506 src/rs01-verify.c:549 +#: src/rs01-verify.c:483 src/rs01-verify.c:515 #, c-format msgid "Bad image." msgstr "Imagem ruim." -#: src/rs01-verify.c:512 src/rs02-verify.c:707 src/rs03-verify.c:1060 +#: src/rs01-verify.c:487 src/rs02-verify.c:686 src/rs03-verify.c:973 msgid "* quick mode : image NOT scanned\n" msgstr "" -#: src/rs01-verify.c:520 +#: src/rs01-verify.c:495 #, c-format msgid "" "- good image : all sectors present\n" @@ -4027,12 +4009,12 @@ msgstr "" "- imagem boa : todos os setores presentes\n" "- md5sum da imagem : %s\n" -#: src/rs01-verify.c:524 src/rs02-verify.c:926 src/rs03-verify.c:1388 +#: src/rs01-verify.c:497 src/rs02-verify.c:904 src/rs03-verify.c:1299 #, c-format msgid "Good image." msgstr "Imagem boa." -#: src/rs01-verify.c:530 +#: src/rs01-verify.c:501 #, c-format msgid "" "* suspicious image : all sectors present, but % CRC errors\n" @@ -4041,74 +4023,74 @@ msgstr "" "* imagem suspeita : todos os setores presentes, mas % erros de CRC\n" "- md5sum da imagem : %s\n" -#: src/rs01-verify.c:535 +#: src/rs01-verify.c:504 #, c-format msgid "Image complete, but contains checksum errors!" msgstr "Imagem completa, mas contém erros de checksum!" -#: src/rs01-verify.c:543 src/rs02-verify.c:892 +#: src/rs01-verify.c:510 src/rs02-verify.c:871 #, c-format msgid "* BAD image : % sectors missing\n" msgstr "* Imagem RUIM : % setores desaparecidos\n" -#: src/rs01-verify.c:544 src/rs02-verify.c:896 src/rs03-verify.c:1320 +#: src/rs01-verify.c:511 src/rs02-verify.c:875 src/rs03-verify.c:1240 #, c-format msgid "* BAD image : % sectors missing, % CRC errors\n" msgstr "* Imagem RUIM : % setores desaparecidos, % erros de CRC\n" -#: src/rs01-verify.c:561 src/rs03-verify.c:1275 +#: src/rs01-verify.c:524 src/rs03-verify.c:1194 msgid "- Checking ecc file -" msgstr "- Verificando arquivo ecc -" -#: src/rs01-verify.c:571 src/rs01-verify.c:601 +#: src/rs01-verify.c:531 src/rs01-verify.c:559 msgid "No error correction file present." msgstr "Nenhum arquivo de correção de erros presente." -#: src/rs01-verify.c:580 +#: src/rs01-verify.c:539 msgid "permission denied\n" msgstr "" -#: src/rs01-verify.c:586 +#: src/rs01-verify.c:545 msgid "invalid\n" msgstr "" -#: src/rs01-verify.c:589 +#: src/rs01-verify.c:548 msgid "defective header (unusable)\n" msgstr "" -#: src/rs01-verify.c:592 +#: src/rs01-verify.c:551 msgid "unknown codec (unusable)\n" msgstr "" -#: src/rs01-verify.c:595 +#: src/rs01-verify.c:554 msgid "unusable\n" msgstr "" -#: src/rs01-verify.c:625 src/rs01-verify.c:639 src/rs02-verify.c:957 -#: src/rs02-verify.c:972 +#: src/rs01-verify.c:582 src/rs01-verify.c:592 src/rs02-verify.c:930 +#: src/rs02-verify.c:941 msgid "created by dvdisaster" msgstr "criado pelo dvdisaster" -#: src/rs01-verify.c:651 +#: src/rs01-verify.c:601 msgid "created by dvdisaster-0.41.x.\n" msgstr "criado pelo dvdisaster-0.41.x.\n" -#: src/rs01-verify.c:663 src/rs02-verify.c:988 src/rs03-verify.c:806 +#: src/rs01-verify.c:610 src/rs02-verify.c:954 src/rs03-verify.c:762 #, c-format msgid "- method : %4s, %d roots, %4.1f%% redundancy.\n" msgstr "- método : %4s, %d raízes, %4.1f%% de redundância.\n" -#: src/rs01-verify.c:668 src/rs02-verify.c:994 src/rs03-verify.c:812 +#: src/rs01-verify.c:614 src/rs02-verify.c:958 src/rs03-verify.c:766 #, c-format msgid "%4s, %d roots, %4.1f%% redundancy" msgstr "%4s, %d raízes, %4.1f%% de redundância" -#: src/rs01-verify.c:676 src/rs02-verify.c:1002 +#: src/rs01-verify.c:621 src/rs02-verify.c:965 #, c-format msgid "- requires : dvdisaster-%d.%d (good)\n" msgstr "- requer : dvdisaster-%d.%d (bom)\n" -#: src/rs01-verify.c:687 src/rs02-verify.c:1015 +#: src/rs01-verify.c:629 src/rs02-verify.c:975 #, c-format msgid "" "* requires : dvdisaster-%d.%d (BAD)\n" @@ -4116,203 +4098,203 @@ msgid "" "* : Please upgrade dvdisaster.\n" msgstr "" -#: src/rs01-verify.c:701 src/rs02-verify.c:1030 src/rs03-verify.c:883 +#: src/rs01-verify.c:641 src/rs02-verify.c:989 src/rs03-verify.c:824 #, c-format msgid "Please upgrade your version of dvdisaster!" msgstr "Por favor, atualize sua versão do dvdisaster!" -#: src/rs01-verify.c:714 +#: src/rs01-verify.c:652 #, c-format msgid "- medium sectors : %\n" msgstr "- setores da mídia : %\n" -#: src/rs01-verify.c:721 +#: src/rs01-verify.c:656 #, c-format msgid "- medium sectors : % sectors + %d bytes\n" msgstr "- setores da mídia : % setores + %d bytes\n" -#: src/rs01-verify.c:737 +#: src/rs01-verify.c:669 #, c-format msgid "- medium sectors : % (good)\n" msgstr "- setores da mídia : % (bom)\n" -#: src/rs01-verify.c:744 +#: src/rs01-verify.c:673 #, c-format msgid "- medium sectors : % sectors + %d bytes (good)\n" msgstr "- setores da mídia : % setores + %d bytes (good)\n" -#: src/rs01-verify.c:758 src/rs02-verify.c:1054 +#: src/rs01-verify.c:684 src/rs02-verify.c:1009 #, c-format msgid "* medium sectors : % (BAD, perhaps TAO/DAO mismatch)\n" msgstr "* setores da mídia : % (RUIM, talvez uma confusão entre TAO/DAO)\n" -#: src/rs01-verify.c:771 src/rs02-verify.c:1056 +#: src/rs01-verify.c:696 src/rs02-verify.c:1011 #, c-format msgid "* medium sectors : % (BAD)\n" msgstr "* setores da mídia : % (RUIM)\n" -#: src/rs01-verify.c:777 src/rs01-verify.c:790 +#: src/rs01-verify.c:700 src/rs01-verify.c:709 #, c-format msgid "Image size does not match error correction file." msgstr "O tamanho da imagem não bate com o arquivo de correção de erros." -#: src/rs01-verify.c:782 +#: src/rs01-verify.c:703 #, c-format msgid "* medium sectors : % sectors + %d bytes (BAD)\n" msgstr "* setores da mídia : % setores + %d bytes (BAD)\n" -#: src/rs01-verify.c:787 +#: src/rs01-verify.c:706 #, c-format msgid "% sectors + %d bytes" msgstr "% setores + %d bytes" -#: src/rs01-verify.c:804 +#: src/rs01-verify.c:722 #, c-format msgid "- image md5sum : %s (good)\n" msgstr "- md5sum da imagem : %s (bom)\n" -#: src/rs01-verify.c:805 +#: src/rs01-verify.c:726 #, c-format msgid "* image md5sum : %s (BAD)\n" msgstr "* md5sum da imagem : %s (RUIM)\n" -#: src/rs01-verify.c:817 +#: src/rs01-verify.c:734 #, c-format msgid "- image md5sum : %s\n" msgstr "- md5sum da imagem : %s\n" -#: src/rs01-verify.c:827 src/rs03-verify.c:910 +#: src/rs01-verify.c:741 src/rs03-verify.c:846 msgid "* fingerprint match: NOT POSSIBLE - related sector is missing in image!\n" msgstr "* impressão digital combina: IMPOSSÍVEL - o setor relacionado está desaparecido na imagem!\n" -#: src/rs01-verify.c:830 src/rs03-verify.c:914 +#: src/rs01-verify.c:743 src/rs03-verify.c:848 #, c-format msgid "missing sector prevents calculation" msgstr "setor desaparecido previne cálculo" -#: src/rs01-verify.c:836 src/rs03-verify.c:920 +#: src/rs01-verify.c:749 src/rs03-verify.c:853 msgid "* fingerprint match: MISMATCH - .iso and .ecc don't belong together!\n" msgstr "* impressão digital combina: ENGANO - .iso e .ecc não pertencem um ao outro!\n" -#: src/rs01-verify.c:841 src/rs03-verify.c:925 +#: src/rs01-verify.c:752 src/rs03-verify.c:856 #, c-format msgid "mismatch" msgstr "engano" -#: src/rs01-verify.c:844 src/rs03-verify.c:928 +#: src/rs01-verify.c:755 src/rs03-verify.c:859 #, c-format msgid "Image and error correction files do not belong together!" msgstr "Imagem e arquivos de correção de erros não pertencem um ao outro!" -#: src/rs01-verify.c:849 src/rs03-verify.c:933 +#: src/rs01-verify.c:758 src/rs03-verify.c:862 msgid "- fingerprint match: good\n" msgstr "- impressão digital combina: bom\n" -#: src/rs01-verify.c:852 src/rs03-verify.c:936 +#: src/rs01-verify.c:759 src/rs03-verify.c:863 msgid "good" msgstr "bom" -#: src/rs01-verify.c:861 +#: src/rs01-verify.c:767 msgid "* quick mode : ecc file NOT scanned\n" msgstr "" -#: src/rs01-verify.c:869 +#: src/rs01-verify.c:775 #, c-format msgid "- ecc blocks : % (good)\n" msgstr "- blocos ecc : % (bom)\n" -#: src/rs01-verify.c:876 +#: src/rs01-verify.c:779 #, c-format msgid "* ecc blocks : % (BAD, expected %)\n" msgstr "* blocos ecc : % (RUIM, esperado %)\n" -#: src/rs01-verify.c:879 +#: src/rs01-verify.c:782 #, c-format msgid "% (bad, expected %)" msgstr "% (ruim, esperado: %)" -#: src/rs01-verify.c:905 +#: src/rs01-verify.c:804 #, c-format msgid "- ecc md5sum : %3d%%" msgstr "- md5sum do ecc : %3d%%" -#: src/rs01-verify.c:926 +#: src/rs01-verify.c:822 msgid "* ecc md5sum : BAD, ecc file may be damaged!\n" msgstr "* md5sum do ecc : BAD, o arquivo ecc pode estar corrompido!\n" -#: src/rs01-verify.c:929 +#: src/rs01-verify.c:823 #, c-format msgid "bad" msgstr "ruim" -#: src/rs01-verify.c:931 +#: src/rs01-verify.c:825 #, c-format msgid "Error correction file may be damaged!" msgstr "Arquivo de correção de erros podem estar corrompido!" -#: src/rs01-verify.c:936 src/rs02-verify.c:1137 +#: src/rs01-verify.c:828 src/rs02-verify.c:1075 #, c-format msgid "- ecc md5sum : %s (good)\n" msgstr "- md5sum do ecc : %s (bom)\n" -#: src/rs01-verify.c:953 +#: src/rs01-verify.c:841 #, c-format msgid "Good error correction file." msgstr "Arquivo de correção de erros bom." -#: src/rs01-window.c:140 src/rs02-window.c:89 src/rs03-window.c:94 +#: src/rs01-window.c:137 src/rs02-window.c:85 src/rs03-window.c:90 msgid "2. Creating error correction data:" msgstr "2. Criando dados de correção de erros:" -#: src/rs01-window.c:164 +#: src/rs01-window.c:161 msgid "Show reading speed curve" msgstr "Mostrar curva de velocidade de leitura" -#: src/rs01-window.c:203 src/rs02-window.c:141 src/rs03-window.c:174 +#: src/rs01-window.c:200 src/rs02-window.c:137 src/rs03-window.c:170 #, c-format msgid "Repaired: %" msgstr "Consertado: %" -#: src/rs01-window.c:204 src/rs02-window.c:142 src/rs03-window.c:175 +#: src/rs01-window.c:201 src/rs02-window.c:139 src/rs03-window.c:171 #, c-format msgid "Unrepairable: %" msgstr "Irrecuperável: %" -#: src/rs01-window.c:205 src/rs02-window.c:143 src/rs03-window.c:176 +#: src/rs01-window.c:202 src/rs02-window.c:141 src/rs03-window.c:172 #, c-format msgid "Progress: %3d.%1d%%" msgstr "Progresso: %3d.%1d%%" -#: src/rs01-window.c:414 src/rs02-window.c:348 src/rs03-window.c:381 +#: src/rs01-window.c:405 src/rs02-window.c:346 src/rs03-window.c:377 msgid "Errors/Ecc block" msgstr "Erros/Bloco ecc" -#: src/rs01-window.c:450 src/rs02-window.c:378 src/rs03-preferences.c:318 -#: src/rs03-preferences.c:328 +#: src/rs01-window.c:441 src/rs02-window.c:376 src/rs03-preferences.c:320 +#: src/rs03-preferences.c:330 #, c-format msgid "%4.1f%% redundancy (%d roots)" msgstr "%4.1f%% de redundância (%d raízes)" -#: src/rs01-window.c:467 src/rs01-window.c:874 src/rs01-window.c:880 -#: src/rs01-window.c:881 src/rs02-window.c:395 src/rs02-window.c:1362 -#: src/rs02-window.c:1368 src/rs02-window.c:1369 +#: src/rs01-window.c:458 src/rs01-window.c:866 src/rs01-window.c:872 +#: src/rs01-window.c:873 src/rs02-window.c:393 src/rs02-window.c:1369 +#: src/rs02-window.c:1375 src/rs02-window.c:1376 #, c-format msgid "%d MiB of file cache" msgstr "%d MiB de cache de arquivos" -#: src/rs01-window.c:669 src/rs03-preferences.c:558 +#: src/rs01-window.c:660 src/rs03-preferences.c:560 msgid "Redundancy for new error correction files" msgstr "Redundância para novos arquivos de correção de erros" -#: src/rs01-window.c:678 src/rs03-preferences.c:585 +#: src/rs01-window.c:669 src/rs03-preferences.c:587 msgid "Normal redundancy" msgstr "Redundância normal" -#: src/rs01-window.c:678 src/rs03-preferences.c:585 +#: src/rs01-window.c:669 src/rs03-preferences.c:587 msgid "Normal" msgstr "Normal" -#: src/rs01-window.c:701 src/rs03-preferences.c:609 +#: src/rs01-window.c:692 src/rs03-preferences.c:611 #, c-format msgid "" "Normal redundancy\n" @@ -4325,15 +4307,15 @@ msgstr "" "O padrão \"normal\" cria uma redundância de 14.3%%.\n" "Ele invoca o código otimizado do programa para acelerar a criação de arquivos de correção de erros." -#: src/rs01-window.c:708 src/rs03-preferences.c:616 +#: src/rs01-window.c:699 src/rs03-preferences.c:618 msgid "High redundancy" msgstr "Redundância alta" -#: src/rs01-window.c:708 src/rs03-preferences.c:616 +#: src/rs01-window.c:699 src/rs03-preferences.c:618 msgid "High" msgstr "Alta" -#: src/rs01-window.c:731 src/rs03-preferences.c:639 +#: src/rs01-window.c:722 src/rs03-preferences.c:641 #, c-format msgid "" "High redundancy\n" @@ -4346,15 +4328,15 @@ msgstr "" "O padrão \"alta\" cria uma redundância de 33.5%%.\n" "Ele invoca o código otimizado do programa para acelerar criação de arquivos de correção de erros." -#: src/rs01-window.c:739 src/rs03-preferences.c:647 +#: src/rs01-window.c:730 src/rs03-preferences.c:648 msgid "Other redundancy" msgstr "Outra redundância" -#: src/rs01-window.c:739 src/rs03-preferences.c:647 +#: src/rs01-window.c:730 src/rs03-preferences.c:648 msgid "Other" msgstr "Outra" -#: src/rs01-window.c:778 src/rs03-preferences.c:686 +#: src/rs01-window.c:769 src/rs03-preferences.c:687 #, c-format msgid "" "Other redundancy\n" @@ -4367,19 +4349,19 @@ msgstr "" "Especifica a redundância em porcentagem.\n" "Um arquivo de correção de erros com x%% de redundância será aproximadamente x%% porcento do tamanho arquivo de imagem correspondente." -#: src/rs01-window.c:786 src/rs03-preferences.c:694 +#: src/rs01-window.c:777 src/rs03-preferences.c:695 msgid "Space-delimited redundancy" msgstr "Redundância delimitada por espaço" -#: src/rs01-window.c:786 src/rs02-window.c:1293 src/rs03-preferences.c:694 +#: src/rs01-window.c:778 src/rs02-window.c:1299 src/rs03-preferences.c:696 msgid "Use at most" msgstr "Usar no máximo" -#: src/rs01-window.c:811 src/rs03-preferences.c:719 +#: src/rs01-window.c:803 src/rs03-preferences.c:721 msgid "MiB for error correction data" msgstr "MiB para dados de correção de erros" -#: src/rs01-window.c:828 src/rs03-preferences.c:736 +#: src/rs01-window.c:820 src/rs03-preferences.c:738 msgid "" "Space-delimited redundancy\n" "\n" @@ -4393,19 +4375,19 @@ msgstr "" "\n" "Nota: Quando usa-se a mesma configuração de tamanho para imagens de tamanhos muito diferentes, imagens menores recebem mais redundância do que as maiores. Isso geralmente não é o que você quer." -#: src/rs01-window.c:871 src/rs02-window.c:1359 +#: src/rs01-window.c:863 src/rs02-window.c:1366 msgid "Memory utilization" msgstr "Utilização de memória" -#: src/rs01-window.c:875 src/rs02-window.c:1363 +#: src/rs01-window.c:867 src/rs02-window.c:1370 msgid "File cache" msgstr "Cache de arquivos" -#: src/rs01-window.c:887 src/rs02-window.c:1375 src/rs03-preferences.c:917 +#: src/rs01-window.c:879 src/rs02-window.c:1382 src/rs03-preferences.c:919 msgid "Use" msgstr "Usar" -#: src/rs01-window.c:916 src/rs02-window.c:1404 +#: src/rs01-window.c:908 src/rs02-window.c:1412 msgid "" "File cache\n" "\n" @@ -4415,23 +4397,23 @@ msgstr "" "\n" "O dvdisaster otimiza o acesso à imagem e arquivos de correção de erros mantendo seu próprio cache. O padrão de 32MiB é adequada à maioria dos sistemas." -#: src/rs02-common.c:580 src/rs02-common.c:592 src/rs02-verify.c:649 -#: src/rs03-common.c:643 +#: src/rs02-common.c:578 src/rs02-common.c:590 src/rs02-verify.c:628 +#: src/rs03-common.c:644 #, c-format msgid "Failed seeking to ecc header at %: %s\n" msgstr "Falha ao buscar no cabeçalho ecc em %: %s\n" -#: src/rs02-common.c:584 src/rs02-common.c:596 src/rs03-common.c:647 +#: src/rs02-common.c:582 src/rs02-common.c:594 src/rs03-common.c:648 #, c-format msgid "Failed writing ecc header at %: %s\n" msgstr "Falha ao gravar no cabeçalho ecc em %: %s\n" -#: src/rs02-create.c:122 src/rs03-create.c:261 +#: src/rs02-create.c:111 src/rs03-create.c:250 #, c-format msgid "Aborted by user request! (partial ecc data removed from image)" msgstr "Abortado pelo usuário! (dados ecc parciais removidos da imagem)" -#: src/rs02-create.c:156 src/rs03-create.c:318 +#: src/rs02-create.c:142 src/rs03-create.c:302 #, c-format msgid "" "Image \"%s\" already contains error correction information.\n" @@ -4440,11 +4422,11 @@ msgstr "" "Imagem \"%s\" já contém informações de correção de erros.\n" "Truncando a imagem para a parte com os dados (% setores).\n" -#: src/rs02-create.c:173 src/rs03-create.c:347 +#: src/rs02-create.c:157 src/rs03-create.c:329 msgid "Image size is now" msgstr "" -#: src/rs02-create.c:236 +#: src/rs02-create.c:218 msgid "" "Image contains unread(able) sectors.\n" "Error correction information can only be\n" @@ -4454,7 +4436,7 @@ msgstr "" "As informações de correção de erros só podem ser\n" "anexadas a imagens completas (não danificadas).\n" -#: src/rs02-create.c:240 +#: src/rs02-create.c:222 #, c-format msgid "" "Sector % in the image is marked unreadable\n" @@ -4479,34 +4461,34 @@ msgstr "" "Informações de correção de erros só podem ser\n" "anexadas a imagens completas (não danificadas).\n" -#: src/rs02-create.c:257 src/rs02-create.c:327 src/rs02-create.c:340 +#: src/rs02-create.c:239 src/rs02-create.c:304 src/rs02-create.c:314 #, c-format msgid "Preparing image (checksums, adding space): %3d%%" msgstr "Preparando imagem (checksums, adicionando espaço): %3d%%" -#: src/rs02-create.c:294 src/rs02-create.c:304 src/rs02-fix.c:96 -#: src/rs03-create.c:454 src/rs03-create.c:465 src/rs03-fix.c:94 +#: src/rs02-create.c:273 src/rs02-create.c:283 src/rs02-fix.c:90 +#: src/rs03-create.c:438 src/rs03-create.c:449 src/rs03-fix.c:87 #, c-format msgid "Failed seeking to end of image: %s\n" msgstr "Falha ao ir ao fim da imagem: %s\n" -#: src/rs02-create.c:298 src/rs02-create.c:321 src/rs02-fix.c:109 -#: src/rs03-create.c:439 src/rs03-fix.c:112 +#: src/rs02-create.c:277 src/rs02-create.c:298 src/rs02-fix.c:103 +#: src/rs03-create.c:423 src/rs03-fix.c:105 #, c-format msgid "Failed expanding the image: %s\n" msgstr "Falha ao expandir a imagem: %s\n" -#: src/rs02-create.c:326 src/rs02-create.c:339 +#: src/rs02-create.c:303 src/rs02-create.c:313 #, c-format msgid "Preparing image (checksums taken from cache, adding space): %3d%%" msgstr "" -#: src/rs02-create.c:1071 src/rs03-create.c:1309 +#: src/rs02-create.c:1027 src/rs03-create.c:1267 msgid "Error correction data creation aborted" msgstr "Criação de dados de correção de erros abortada" -#: src/rs02-create.c:1102 src/rs02-create.c:1122 src/rs03-create.c:1314 -#: src/rs03-create.c:1369 +#: src/rs02-create.c:1055 src/rs02-create.c:1073 src/rs03-create.c:1271 +#: src/rs03-create.c:1326 #, c-format msgid "" "Augmenting the image with error correction data.\n" @@ -4515,16 +4497,16 @@ msgstr "" "Aumentando a imagem com os dados de correção de erros.\n" "%s" -#: src/rs02-create.c:1103 src/rs03-create.c:1315 +#: src/rs02-create.c:1056 src/rs03-create.c:1272 msgid "- checking image -" msgstr "- verificando a imagem -" -#: src/rs02-create.c:1118 +#: src/rs02-create.c:1069 #, c-format msgid "Encoding with Method RS02: % MiB data, % MiB ecc (%d roots; %4.1f%% redundancy)." msgstr "Codificando com o Método RS02: % MiB de dados, % MiB de ecc (%d raízes; %4.1f%% de redundância)." -#: src/rs02-create.c:1127 +#: src/rs02-create.c:1077 #, c-format msgid "" "Augmenting image with Method RS02:\n" @@ -4533,7 +4515,7 @@ msgstr "" "Aumentando a imagem com o Método RS02:\n" " % MiB de dados, % MiB de ecc (%d raízes; %4.1f%% de redundância)." -#: src/rs02-create.c:1136 +#: src/rs02-create.c:1086 #, c-format msgid "" "Not enough space on medium left for error correction data.\n" @@ -4542,15 +4524,15 @@ msgid "" "not an option, please create a separate error correction file." msgstr "" -#: src/rs02-create.c:1146 src/rs03-create.c:1409 +#: src/rs02-create.c:1096 src/rs03-create.c:1367 #, c-format msgid "" "Using redundancies below 20% may not give\n" "the expected data loss protection.\n" msgstr "" -#: src/rs02-create.c:1178 src/rs02-create.c:1188 src/rs03-create.c:1448 -#: src/rs03-create.c:1476 +#: src/rs02-create.c:1128 src/rs02-create.c:1136 src/rs03-create.c:1406 +#: src/rs03-create.c:1429 #, c-format msgid "" "Image has been augmented with error correction data.\n" @@ -4559,21 +4541,21 @@ msgstr "" "A imagem foi aumentada com dados de correção de erros.\n" "O tamanho da nova imagem é % MiB (% setores).\n" -#: src/rs02-fix.c:119 src/rs02-fix.c:130 src/rs03-fix.c:122 src/rs03-fix.c:133 +#: src/rs02-fix.c:108 src/rs02-fix.c:114 src/rs03-fix.c:110 src/rs03-fix.c:116 #, c-format msgid "Expanding image: %3d%%" msgstr "Expandindo a imagem: %3d%%" -#: src/rs02-fix.c:198 src/rs03-fix.c:201 +#: src/rs02-fix.c:175 src/rs03-fix.c:176 msgid "Opening files..." msgstr "Abrindo arquivos..." -#: src/rs02-fix.c:224 +#: src/rs02-fix.c:200 #, c-format msgid "Image contains error correction data: Method RS02, %d roots, %4.1f%% redundancy." msgstr "A imagem contém dados de correção de erros: Método RS02, %d raízes, %4.1f%% de redundância." -#: src/rs02-fix.c:242 src/rs03-fix.c:309 +#: src/rs02-fix.c:218 src/rs03-fix.c:279 #, c-format msgid "" "The image file is %lld sectors longer as noted in the\n" @@ -4590,22 +4572,22 @@ msgstr "" "\n" "%s" -#: src/rs02-fix.c:499 src/rs03-fix.c:559 +#: src/rs02-fix.c:463 src/rs03-fix.c:518 #, c-format msgid "* Ecc block %: %3d unrepairable sectors: " msgstr "* Bloco ecc %: %3d setores irrecuperáveis: " -#: src/rs02-fix.c:721 +#: src/rs02-fix.c:685 #, c-format msgid "-> CRC-predicted error in sector %lld at byte %4d (value %02x '%c', expected %02x '%c')\n" msgstr "-> Erro de CRC previsto no setor %lld, byte %4d (valor: %02x '%c', esperado: %02x '%c')\n" -#: src/rs02-fix.c:724 +#: src/rs02-fix.c:688 #, c-format msgid "-> Non-predicted error in sector %lld at byte %4d (value %02x '%c', expected %02x '%c')\n" msgstr "-> Erro não previsto no setor %lld no byte %4d (valor: %02x '%c', esperado: %02x '%c')\n" -#: src/rs02-fix.c:851 src/rs03-fix.c:941 +#: src/rs02-fix.c:813 src/rs03-fix.c:901 #, c-format msgid "Repaired sectors: % (% data, % ecc)\n" msgstr "Setores recuperados: % (% dados, % ecc)\n" @@ -4622,7 +4604,7 @@ msgstr "Continuar a busca" msgid "Disable RS02 initialization in the preferences" msgstr "Desativar a inicialização RS02 nas preferências" -#: src/rs02-recognize.c:305 +#: src/rs02-recognize.c:303 msgid "" "Faster medium initialization\n" "\n" @@ -4636,108 +4618,108 @@ msgstr "" "Aperte \"Pular o teste RS02\" se você está certo de que essa mídia não foi\n" "aumentada com dados de correção de erros RS02." -#: src/rs02-verify.c:48 src/rs02-verify.c:200 src/rs02-verify.c:306 -#: src/rs03-verify.c:59 src/rs03-verify.c:240 src/rs03-verify.c:302 +#: src/rs02-verify.c:50 src/rs02-verify.c:202 src/rs02-verify.c:308 +#: src/rs03-verify.c:62 src/rs03-verify.c:243 src/rs03-verify.c:305 msgid "Data checksum:" msgstr "Checksum dos dados:" -#: src/rs02-verify.c:49 src/rs02-verify.c:314 +#: src/rs02-verify.c:51 src/rs02-verify.c:316 msgid "CRC checksum:" msgstr "Checksum do CRC:" -#: src/rs02-verify.c:208 +#: src/rs02-verify.c:210 msgid "Ecc headers:" msgstr "Cabeçalhos Ecc:" -#: src/rs02-verify.c:216 src/rs03-verify.c:311 +#: src/rs02-verify.c:218 src/rs03-verify.c:314 msgid "Data section:" msgstr "Seção de dados:" -#: src/rs02-verify.c:224 src/rs03-verify.c:320 +#: src/rs02-verify.c:226 src/rs03-verify.c:323 msgid "Crc section:" msgstr "Seção de Crc" -#: src/rs02-verify.c:232 src/rs03-verify.c:329 +#: src/rs02-verify.c:234 src/rs03-verify.c:332 msgid "Ecc section:" msgstr "Seção de ecc:" -#: src/rs02-verify.c:255 +#: src/rs02-verify.c:257 msgid "Error correction data" msgstr "Dados de correção de erros" -#: src/rs02-verify.c:512 src/rs03-verify.c:457 +#: src/rs02-verify.c:506 src/rs03-verify.c:458 #, c-format msgid "- erasure counts : avg = %.1f; worst = %d per ecc block.\n" msgstr "- contagem de rasuras : méd = %.1f; pior = %d por bloco ecc.\n" -#: src/rs02-verify.c:515 src/rs03-verify.c:460 +#: src/rs02-verify.c:509 src/rs03-verify.c:461 #, c-format msgid "- prognosis : % of % sectors recoverable (%d.%d%%)\n" msgstr "- prognóstico : % de % setores recuperáveis (%d.%d%%)\n" -#: src/rs02-verify.c:522 src/rs03-verify.c:465 +#: src/rs02-verify.c:515 src/rs03-verify.c:464 msgid "Erasure counts:" msgstr "Contagem de rasuras:" -#: src/rs02-verify.c:523 src/rs03-verify.c:466 +#: src/rs02-verify.c:516 src/rs03-verify.c:465 msgid "Prognosis:" msgstr "Prognóstico:" -#: src/rs02-verify.c:526 src/rs03-verify.c:469 +#: src/rs02-verify.c:519 src/rs03-verify.c:468 #, c-format msgid "avg = %.1f; worst = %d per ecc block." msgstr "méd = %.1f; pior = %d por bloco ecc." -#: src/rs02-verify.c:531 src/rs03-verify.c:474 +#: src/rs02-verify.c:524 src/rs03-verify.c:473 #, c-format msgid "% of % sectors recoverable (%d.%d%%)" msgstr "% de % setores recuperáveis (%d.%d%%)" -#: src/rs02-verify.c:593 src/rs03-verify.c:700 +#: src/rs02-verify.c:579 src/rs03-verify.c:670 msgid "Check aborted" msgstr "Verificação abortada" -#: src/rs02-verify.c:615 src/rs03-verify.c:747 +#: src/rs02-verify.c:597 src/rs03-verify.c:707 msgid "Checking the image file." msgstr "Verificando o arquivo de imagem." -#: src/rs02-verify.c:616 +#: src/rs02-verify.c:598 msgid "Image contains error correction data." msgstr "A imagem contém dados de correção de erros" -#: src/rs02-verify.c:631 src/rs03-verify.c:1041 +#: src/rs02-verify.c:611 src/rs03-verify.c:955 #, c-format msgid "Image file is % sectors shorter than expected." msgstr "O arquivo de imagem é % setores menor do que o esperado." -#: src/rs02-verify.c:632 src/rs03-verify.c:1044 +#: src/rs02-verify.c:612 src/rs03-verify.c:958 #, c-format msgid "Image file is % sectors longer than expected." msgstr "O arquivo de imagem é % setores maior do que o esperado." -#: src/rs02-verify.c:653 +#: src/rs02-verify.c:632 #, c-format msgid "Failed reading ecc header at %: %s\n" msgstr "Falha ao ler o cabeçalho ecc em %: %s\n" -#: src/rs02-verify.c:697 +#: src/rs02-verify.c:677 #, c-format msgid "% ok, % CRC errors, % missing" msgstr "% bons, % erros de CRC, % desaparecidos" -#: src/rs02-verify.c:837 src/rs02-verify.c:860 src/rs03-verify.c:1247 -#: src/rs03-verify.c:1290 +#: src/rs02-verify.c:812 src/rs02-verify.c:837 src/rs03-verify.c:1163 +#: src/rs03-verify.c:1208 #, c-format msgid "% sectors missing; % CRC errors" msgstr "% setores desaparecidos; % erros de CRC" -#: src/rs02-verify.c:841 src/rs02-verify.c:845 src/rs02-verify.c:864 -#: src/rs02-verify.c:868 src/rs03-verify.c:1255 src/rs03-verify.c:1298 +#: src/rs02-verify.c:817 src/rs02-verify.c:822 src/rs02-verify.c:842 +#: src/rs02-verify.c:847 src/rs03-verify.c:1173 src/rs03-verify.c:1218 #, c-format msgid "% sectors missing" msgstr "% setores desaparecidos" -#: src/rs02-verify.c:883 +#: src/rs02-verify.c:862 #, c-format msgid "" "- good image : all sectors present\n" @@ -4746,46 +4728,46 @@ msgstr "" "- imagem boa : todos os setores presentes\n" "- md5sum dos dados : %s\n" -#: src/rs02-verify.c:889 +#: src/rs02-verify.c:868 msgid "* suspicious image : contains damaged ecc headers\n" msgstr "" -#: src/rs02-verify.c:894 src/rs03-verify.c:1317 +#: src/rs02-verify.c:873 src/rs03-verify.c:1237 #, c-format msgid "* suspicious image : all sectors present, but % CRC errors\n" msgstr "* imagem suspeita : todos os setores presentes, mas % erros de CRC\n" -#: src/rs02-verify.c:900 +#: src/rs02-verify.c:879 #, c-format msgid " ... ecc headers : % ok, % CRC errors, % missing\n" msgstr " ... cabeçalhos ecc : % bons, % erros de CRC, % desaparecidos\n" -#: src/rs02-verify.c:902 src/rs03-verify.c:1323 +#: src/rs02-verify.c:881 src/rs03-verify.c:1243 #, c-format msgid " ... data section : % sectors missing; % CRC errors\n" msgstr " ... seção de dados : % setores desaparecidos; % erros de CRC\n" -#: src/rs02-verify.c:905 src/rs03-verify.c:1326 +#: src/rs02-verify.c:884 src/rs03-verify.c:1246 #, c-format msgid " ... data md5sum : %s\n" msgstr " ... md5sum dos dados : %s\n" -#: src/rs02-verify.c:906 src/rs03-verify.c:1332 +#: src/rs02-verify.c:885 src/rs03-verify.c:1252 #, c-format msgid " ... crc section : % sectors missing\n" msgstr " ... seção de crc : % setores desaparecidos\n" -#: src/rs02-verify.c:907 src/rs03-verify.c:1334 +#: src/rs02-verify.c:886 src/rs03-verify.c:1254 #, c-format msgid " ... ecc section : % sectors missing\n" msgstr " ... seção ecc : % setores desaparecidos\n" -#: src/rs02-verify.c:930 src/rs03-verify.c:1392 +#: src/rs02-verify.c:909 src/rs03-verify.c:1304 #, c-format msgid "Damaged image." msgstr "Imagem danificada." -#: src/rs02-verify.c:944 +#: src/rs02-verify.c:917 msgid "" "\n" "Error correction data: " @@ -4793,88 +4775,88 @@ msgstr "" "\n" "Dados de correção de erros: " -#: src/rs02-verify.c:1036 +#: src/rs02-verify.c:994 msgid "Please upgrade your version of dvdisaster!" msgstr "" -#: src/rs02-verify.c:1043 +#: src/rs02-verify.c:1001 #, c-format msgid "- medium sectors : % / % (good)\n" msgstr "- setores da mídia : % / % (bom)\n" -#: src/rs02-verify.c:1063 +#: src/rs02-verify.c:1017 #, c-format msgid "Image size does not match recorded size." msgstr "Tamanho da imagem não bate com o tamanho registrado." -#: src/rs02-verify.c:1078 +#: src/rs02-verify.c:1031 #, c-format msgid "- data md5sum : %s (good)\n" msgstr "- md5sum dos dados : %s (bom)\n" -#: src/rs02-verify.c:1079 +#: src/rs02-verify.c:1032 #, c-format msgid "* data md5sum : %s (BAD)\n" msgstr "* md5sum dos dados : %s (RUIM)\n" -#: src/rs02-verify.c:1092 src/rs03-verify.c:898 +#: src/rs02-verify.c:1043 src/rs03-verify.c:837 #, c-format msgid "- data md5sum : %s\n" msgstr "- md5sum dos dados : %s\n" -#: src/rs02-verify.c:1106 +#: src/rs02-verify.c:1054 #, c-format msgid "- crc md5sum : %s (good)\n" msgstr "- md5sum do crc : %s (bom)\n" -#: src/rs02-verify.c:1113 +#: src/rs02-verify.c:1058 #, c-format msgid "* crc md5sum : %s (BAD)\n" msgstr "* md5sum do crc : %s (RUIM)\n" -#: src/rs02-verify.c:1123 +#: src/rs02-verify.c:1064 #, c-format msgid "- crc md5sum : %s\n" msgstr "- md5sum do crc : %s\n" -#: src/rs02-verify.c:1144 +#: src/rs02-verify.c:1079 #, c-format msgid "* ecc md5sum : %s (BAD)\n" msgstr "* md5sum do ecc : %s (RUIM)\n" -#: src/rs02-verify.c:1154 +#: src/rs02-verify.c:1085 #, c-format msgid "- ecc md5sum : %s\n" msgstr "- md5sum do ecc : %s\n" -#: src/rs02-verify.c:1179 src/rs03-verify.c:952 +#: src/rs02-verify.c:1103 src/rs03-verify.c:877 #, c-format msgid "Good error correction data." msgstr "Dados de correção de erros bons." -#: src/rs02-verify.c:1183 src/rs03-verify.c:1409 +#: src/rs02-verify.c:1109 src/rs03-verify.c:1323 #, c-format msgid "Full data recovery is likely." msgstr "Recuperação dos dados completa é provável." -#: src/rs02-verify.c:1186 src/rs03-verify.c:1412 +#: src/rs02-verify.c:1114 src/rs03-verify.c:1328 #, c-format msgid "Full data recovery is NOT possible." msgstr "Recuperação completa dos dados NÃO É possível." -#: src/rs02-window.c:80 +#: src/rs02-window.c:76 msgid "1. Preparing image:" msgstr "1. Preparando a imagem: " -#: src/rs02-window.c:772 +#: src/rs02-window.c:770 msgid "Maximum image size" msgstr "Tamanho máximo da imagem" -#: src/rs02-window.c:784 +#: src/rs02-window.c:782 msgid "Using the smallest possible size from table" msgstr "Usando o menor tamanho possível da tabela" -#: src/rs02-window.c:784 +#: src/rs02-window.c:783 msgid "Use smallest possible size from following table (in sectors):" msgstr "Usar o menor tamanho possível da tabela seguinte (em setores):" @@ -4896,15 +4878,15 @@ msgstr "" msgid "CD-R / CD-RW:" msgstr "CD-R / CR-RW:" -#: src/rs02-window.c:844 src/rs02-window.c:863 src/rs02-window.c:907 -#: src/rs02-window.c:926 src/rs02-window.c:970 src/rs02-window.c:989 -#: src/rs02-window.c:1033 src/rs02-window.c:1052 src/rs02-window.c:1095 -#: src/rs02-window.c:1114 src/rs02-window.c:1157 src/rs02-window.c:1176 -#: src/rs02-window.c:1221 src/rs02-window.c:1240 +#: src/rs02-window.c:844 src/rs02-window.c:863 src/rs02-window.c:908 +#: src/rs02-window.c:927 src/rs02-window.c:972 src/rs02-window.c:991 +#: src/rs02-window.c:1036 src/rs02-window.c:1055 src/rs02-window.c:1099 +#: src/rs02-window.c:1118 src/rs02-window.c:1162 src/rs02-window.c:1181 +#: src/rs02-window.c:1227 src/rs02-window.c:1246 msgid "query medium" msgstr "consultar mídia" -#: src/rs02-window.c:875 +#: src/rs02-window.c:876 #, c-format msgid "" "CD medium size\n" @@ -4927,11 +4909,11 @@ msgstr "" "Por favor, note que imagens aumentadas, no máximo, triplicarão em tamanho, já que a redundância máxima possível é 200%%.\n" "Mesmo se esse limite não for alcançado, a imagem aumentada pode ser alguns setores menor do que o especificado por razões técnicas." -#: src/rs02-window.c:893 +#: src/rs02-window.c:894 msgid "DVD 1 layer:" msgstr "DVD de 1 camada:" -#: src/rs02-window.c:938 +#: src/rs02-window.c:940 #, c-format msgid "" "Single layer DVD medium size\n" @@ -4954,11 +4936,11 @@ msgstr "" "Por favor, note que imagens aumentadas, no máximo, triplicarão em tamanho, já que a redundância máxima possível é 200%%.\n" "Mesmo se esse limite não for alcançado, a imagem aumentada pode ser alguns setores menor do que o especificado por razões técnicas." -#: src/rs02-window.c:956 +#: src/rs02-window.c:958 msgid "DVD 2 layers:" msgstr "DVD de 2 camadas:" -#: src/rs02-window.c:1001 +#: src/rs02-window.c:1004 #, c-format msgid "" "Two layered DVD medium size\n" @@ -4981,11 +4963,11 @@ msgstr "" "Por favor, note que imagens aumentadas, no máximo, triplicarão em tamanho, já que a redundância máxima possível é 200%%.\n" "Mesmo se esse limite não for alcançado, a imagem aumentada pode ser alguns setores menor do que o especificado por razões técnicas." -#: src/rs02-window.c:1019 +#: src/rs02-window.c:1022 msgid "BD 1 layer:" msgstr "BD de uma camada:" -#: src/rs02-window.c:1064 +#: src/rs02-window.c:1068 #, c-format msgid "" "Single layer BD medium size\n" @@ -5008,11 +4990,11 @@ msgstr "" "Por favor, note que imagens aumentadas, no máximo, triplicarão em tamanho, já que a redundância máxima possível é 200%%.\n" "Mesmo se esse limite não for alcançado, a imagem aumentada pode ser alguns setores menor do que o especificado por razões técnicas." -#: src/rs02-window.c:1081 +#: src/rs02-window.c:1085 msgid "BD 2 layers:" msgstr "BD de 2 camadas:" -#: src/rs02-window.c:1126 +#: src/rs02-window.c:1131 #, c-format msgid "" "Two layered BD medium size\n" @@ -5035,11 +5017,11 @@ msgstr "" "Por favor, note que imagens aumentadas, no máximo, triplicarão em tamanho, já que a redundância máxima possível é 200%%.\n" "Mesmo se esse limite não for alcançado, a imagem aumentada pode ser alguns setores menor do que o especificado por razões técnicas." -#: src/rs02-window.c:1143 +#: src/rs02-window.c:1148 msgid "BDXL 3 layers:" msgstr "" -#: src/rs02-window.c:1188 +#: src/rs02-window.c:1194 #, c-format msgid "" "Three layered BDXL medium size\n" @@ -5053,11 +5035,11 @@ msgid "" "Even if this limit is not reached the augmented image may be a few sectors smaller than specified for technical reasons." msgstr "" -#: src/rs02-window.c:1207 +#: src/rs02-window.c:1213 msgid "BDXL 4 layers:" msgstr "" -#: src/rs02-window.c:1252 +#: src/rs02-window.c:1258 #, c-format msgid "" "Four layered BDXL medium size\n" @@ -5071,11 +5053,11 @@ msgid "" "Even if this limit is not reached the augmented image may be a few sectors smaller than specified for technical reasons." msgstr "" -#: src/rs02-window.c:1314 +#: src/rs02-window.c:1320 msgid "sectors." msgstr "setores." -#: src/rs02-window.c:1327 +#: src/rs02-window.c:1334 #, c-format msgid "" "Use at most ... sectors\n" @@ -5093,47 +5075,47 @@ msgstr "" "Por favor, note que imagens aumentadas terão, no máximo, o triplo do tamanho, já que a redundância máxima possível é de 200%%.\n" "Mesmo que esse limite não seja alcançado, a imagem aumentada pode ser alguns setores menor do que o especificado por razões técnicas." -#: src/rs03-common.c:440 +#: src/rs03-common.c:441 #, c-format msgid "Image file %s not present." msgstr "Arquivo de imagem %s não está presente." -#: src/rs03-common.c:457 +#: src/rs03-common.c:458 #, c-format msgid "Redundancy %4.1f%% out of useful range [3.2%%..200%%]" msgstr "" -#: src/rs03-common.c:487 +#: src/rs03-common.c:488 #, c-format msgid "Redundancy %d out of useful range [8..170]." msgstr "" -#: src/rs03-common.c:525 +#: src/rs03-common.c:526 #, c-format msgid "Medium size smaller than image size (% < %)" msgstr "" -#: src/rs03-create.c:434 +#: src/rs03-create.c:418 #, c-format msgid "Failed expanding the ecc file: %s\n" msgstr "" -#: src/rs03-create.c:435 +#: src/rs03-create.c:419 #, c-format msgid "Preparing ecc file: %3d%%" msgstr "" -#: src/rs03-create.c:440 +#: src/rs03-create.c:424 #, c-format msgid "Preparing image: %3d%%" msgstr "" -#: src/rs03-create.c:688 +#: src/rs03-create.c:661 #, c-format msgid "Failed mmap()ing layer %d: %s\n" msgstr "" -#: src/rs03-create.c:717 +#: src/rs03-create.c:690 #, c-format msgid "" "Incomplete image\n" @@ -5145,7 +5127,7 @@ msgid "" "Exiting and removing partial error correction data." msgstr "" -#: src/rs03-create.c:725 +#: src/rs03-create.c:698 msgid "" "\n" "This image was probably mastered from defective source(s).\n" @@ -5153,44 +5135,44 @@ msgid "" "\n" msgstr "" -#: src/rs03-create.c:936 +#: src/rs03-create.c:902 msgid "CPU bound" msgstr "" -#: src/rs03-create.c:940 +#: src/rs03-create.c:906 msgid "I/O bound" msgstr "" -#: src/rs03-create.c:1149 +#: src/rs03-create.c:1113 #, c-format msgid "%5.2fMiB/s current" msgstr "" -#: src/rs03-create.c:1202 +#: src/rs03-create.c:1164 #, c-format msgid "%d threads with %s encoding and %s I/O" msgstr "" -#: src/rs03-create.c:1364 +#: src/rs03-create.c:1321 #, c-format msgid "Encoding with Method RS03: % MiB data, % MiB ecc (%d roots; %4.1f%% redundancy)." msgstr "" -#: src/rs03-create.c:1383 +#: src/rs03-create.c:1341 #, c-format msgid "" "Augmenting image with Method RS03 [%d threads, %s, %s I/O]:\n" "% MiB data, % MiB ecc (%d roots; %4.1f%% redundancy)." msgstr "" -#: src/rs03-create.c:1388 +#: src/rs03-create.c:1346 #, c-format msgid "" "Creating the error correction file with Method RS03 [%d threads, %s, %s I/O]:\n" "% MiB data, % MiB ecc (%d roots; %4.1f%% redundancy)." msgstr "" -#: src/rs03-create.c:1399 +#: src/rs03-create.c:1357 #, c-format msgid "" "Not enough space on medium left for error correction data.\n" @@ -5199,124 +5181,124 @@ msgid "" "an option, please create a separate error correction file." msgstr "" -#: src/rs03-create.c:1425 +#: src/rs03-create.c:1383 msgid "" "BD-R size with no defect management enabled,\n" "remember it should you need to repair this image later!\n" msgstr "" -#: src/rs03-create.c:1459 +#: src/rs03-create.c:1417 #, c-format msgid "Avg performance: %5.2fs (%5.2fMiB/s) total\n" msgstr "" -#: src/rs03-create.c:1463 +#: src/rs03-create.c:1420 #, c-format msgid "%5.2fMiB/s average" msgstr "" -#: src/rs03-create.c:1465 +#: src/rs03-create.c:1422 #, c-format msgid "%d times CPU bound; %d times I/O bound" msgstr "" -#: src/rs03-fix.c:243 +#: src/rs03-fix.c:217 #, c-format msgid "Error correction file using Method RS03, %d roots, %4.1f%% redundancy." msgstr "" -#: src/rs03-fix.c:247 +#: src/rs03-fix.c:221 #, c-format msgid "Image contains error correction data: Method RS03, %d roots, %4.1f%% redundancy." msgstr "" -#: src/rs03-fix.c:725 src/rs03-fix.c:849 +#: src/rs03-fix.c:684 src/rs03-fix.c:808 msgid "; ecc file: " msgstr "" -#: src/rs03-fix.c:785 +#: src/rs03-fix.c:744 #, c-format msgid "-> CRC-predicted error in sector %lld%s at byte %4d (value %02x '%c', expected %02x '%c')\n" msgstr "" -#: src/rs03-fix.c:788 +#: src/rs03-fix.c:747 #, c-format msgid "-> Non-predicted error in sector %lld%s at byte %4d (value %02x '%c', expected %02x '%c')\n" msgstr "" -#: src/rs03-fix.c:881 +#: src/rs03-fix.c:840 #, c-format msgid "Failed seeking to sector % in ecc file [%s]: %s" msgstr "" -#: src/rs03-fix.c:886 +#: src/rs03-fix.c:845 #, c-format msgid "" "could not write ecc file sector %:\n" "%s" msgstr "" -#: src/rs03-preferences.c:345 src/rs03-preferences.c:788 -#: src/rs03-preferences.c:794 src/rs03-preferences.c:795 +#: src/rs03-preferences.c:347 src/rs03-preferences.c:790 +#: src/rs03-preferences.c:796 src/rs03-preferences.c:797 #, c-format msgid "%d sectors" msgstr "" -#: src/rs03-preferences.c:364 src/rs03-preferences.c:904 -#: src/rs03-preferences.c:910 src/rs03-preferences.c:911 +#: src/rs03-preferences.c:366 src/rs03-preferences.c:906 +#: src/rs03-preferences.c:912 src/rs03-preferences.c:913 #, c-format msgid "%d threads" msgstr "" -#: src/rs03-preferences.c:487 src/rs03-preferences.c:494 +#: src/rs03-preferences.c:489 src/rs03-preferences.c:496 msgid "Error correction data storage" msgstr "" -#: src/rs03-preferences.c:495 +#: src/rs03-preferences.c:497 msgid "Store ECC data in: " msgstr "" -#: src/rs03-preferences.c:508 +#: src/rs03-preferences.c:510 msgid "File" msgstr "" -#: src/rs03-preferences.c:535 +#: src/rs03-preferences.c:537 msgid "" "Error correction data storage\n" "\n" "Select between two ways of storing the error correction information:\n" msgstr "" -#: src/rs03-preferences.c:540 +#: src/rs03-preferences.c:542 msgid "" "Augmented image (recommended)\n" "The error correction data will be stored along with the user data on the same medium. This requires the creation of an image file prior to writing the medium. The error correction data will be appended to that image and fill up the remaining space.\n" "Damaged sectors in the error correction information reduce the data recovery capacity, but do not make recovery impossible - a second medium for keeping or protecting the error correction information is not required.\n" msgstr "" -#: src/rs03-preferences.c:550 +#: src/rs03-preferences.c:552 msgid "" "Error correction file\n" "Error correction files are the only way of protecting existing media as they can be stored somewhere else. They are kept on a separate medium which must also be protected by dvdisaster. This prevents from losing the error correction files in case of a medium defect.\n" msgstr "" -#: src/rs03-preferences.c:570 +#: src/rs03-preferences.c:572 msgid "no settings for augmented images" msgstr "" -#: src/rs03-preferences.c:781 +#: src/rs03-preferences.c:783 msgid "I/O parameters" msgstr "" -#: src/rs03-preferences.c:789 +#: src/rs03-preferences.c:791 msgid "Sector preloading" msgstr "" -#: src/rs03-preferences.c:801 +#: src/rs03-preferences.c:803 msgid "Preload" msgstr "" -#: src/rs03-preferences.c:829 +#: src/rs03-preferences.c:831 msgid "" "Sector preloading\n" "\n" @@ -5328,23 +5310,23 @@ msgid "" "A preload value of n will used approx. n MiB of RAM." msgstr "" -#: src/rs03-preferences.c:841 +#: src/rs03-preferences.c:843 msgid "I/O strategy" msgstr "" -#: src/rs03-preferences.c:842 +#: src/rs03-preferences.c:844 msgid "I/O strategy: " msgstr "" -#: src/rs03-preferences.c:855 +#: src/rs03-preferences.c:857 msgid "read/write" msgstr "" -#: src/rs03-preferences.c:861 +#: src/rs03-preferences.c:863 msgid "memory mapped" msgstr "" -#: src/rs03-preferences.c:881 +#: src/rs03-preferences.c:883 msgid "" "I/O strategy\n" "\n" @@ -5355,11 +5337,11 @@ msgid "" "The memory mapped option uses the kernel's memory mapping scheme for direct access to the image file. This has the advantage of minimal overhead, but may be adversely affected by poor caching and preloading decisions made by the kernel (since the kernel does not know what dvdisaster is going to do with the data). This scheme performs well when encoding in a RAM-based file system (such as /dev/shm on GNU/Linux) and on very fast media with low latency such as SSDs." msgstr "" -#: src/rs03-preferences.c:901 src/rs03-preferences.c:905 +#: src/rs03-preferences.c:903 src/rs03-preferences.c:907 msgid "Multithreading" msgstr "" -#: src/rs03-preferences.c:946 +#: src/rs03-preferences.c:948 msgid "" "Multithreading\n" "\n" @@ -5370,35 +5352,35 @@ msgid "" "Performance will not scale linearly with the number of CPU cores. Hard disk performance is more limiting than raw CPU power. When using 4 cores or more, memory bandwidth may also affect performance." msgstr "" -#: src/rs03-preferences.c:961 src/rs03-preferences.c:968 +#: src/rs03-preferences.c:963 src/rs03-preferences.c:970 msgid "Encoding algorithm" msgstr "" -#: src/rs03-preferences.c:969 +#: src/rs03-preferences.c:971 msgid "Use: " msgstr "" -#: src/rs03-preferences.c:982 +#: src/rs03-preferences.c:984 msgid "32bit" msgstr "" -#: src/rs03-preferences.c:988 +#: src/rs03-preferences.c:990 msgid "64bit" msgstr "" -#: src/rs03-preferences.c:995 +#: src/rs03-preferences.c:997 msgid "SSE2" msgstr "" -#: src/rs03-preferences.c:1002 +#: src/rs03-preferences.c:1004 msgid "AltiVec" msgstr "" -#: src/rs03-preferences.c:1009 +#: src/rs03-preferences.c:1011 msgid "auto" msgstr "" -#: src/rs03-preferences.c:1036 +#: src/rs03-preferences.c:1038 msgid "" "Encoding algorithm\n" "\n" @@ -5408,139 +5390,153 @@ msgid "" "Available extensions are SSE2 for x86 based processors and AltiVec on PowerPC processors. These extensions encode with 128bit wide operations and will usually provide the fastest encoding variant. If \"auto\" is selected, the SSE2/AltiVec algorithms will be selected if the processor supports them; otherwise the 64bit algorithm will be used." msgstr "" -#: src/rs03-recognize.c:593 +#: src/rs03-recognize.c:595 #, c-format msgid "Failed seeking to sector %lld in image: %s" msgstr "Falha ao ir para o setor %lld da imagem: %s" -#: src/rs03-recognize.c:598 +#: src/rs03-recognize.c:600 #, c-format msgid "Failed reading sector %lld in image: %s" msgstr "Falha ao ler setor %lld da imagem: %s" -#: src/rs03-verify.c:193 +#: src/rs03-verify.c:196 msgid "Error correction properties" msgstr "" -#: src/rs03-verify.c:204 +#: src/rs03-verify.c:207 msgid "Type:" msgstr "" -#: src/rs03-verify.c:273 +#: src/rs03-verify.c:276 msgid "Data integrity" msgstr "" -#: src/rs03-verify.c:338 src/rs03-verify.c:1353 +#: src/rs03-verify.c:341 src/rs03-verify.c:1272 msgid "Ecc block test:" msgstr "" -#: src/rs03-verify.c:503 src/rs03-verify.c:736 src/rs03-verify.c:1274 +#: src/rs03-verify.c:498 src/rs03-verify.c:699 src/rs03-verify.c:1193 msgid "Checking the image and error correction files." msgstr "" -#: src/rs03-verify.c:504 +#: src/rs03-verify.c:499 msgid "- Checking ecc blocks (deep verify) -" msgstr "" -#: src/rs03-verify.c:521 +#: src/rs03-verify.c:513 #, c-format msgid "Out of memory; try reducing sector prefetch!" msgstr "" -#: src/rs03-verify.c:524 +#: src/rs03-verify.c:515 msgid "* Ecc block test : out of memory; try reducing sector prefetch!\n" msgstr "" -#: src/rs03-verify.c:609 src/rs03-verify.c:1241 +#: src/rs03-verify.c:596 src/rs03-verify.c:1157 #, c-format msgid "%d%% tested" msgstr "" -#: src/rs03-verify.c:612 +#: src/rs03-verify.c:598 #, c-format msgid "- Ecc block test : %d%% tested" msgstr "" -#: src/rs03-verify.c:620 +#: src/rs03-verify.c:603 #, c-format msgid "% good, % bad; %d%% tested" msgstr "" -#: src/rs03-verify.c:623 +#: src/rs03-verify.c:605 #, c-format msgid "* Ecc block test : % good, % bad; %d%% tested" msgstr "" -#: src/rs03-verify.c:635 +#: src/rs03-verify.c:614 msgid "pass" msgstr "" -#: src/rs03-verify.c:638 +#: src/rs03-verify.c:616 msgid "- Ecc block test : pass\n" msgstr "" -#: src/rs03-verify.c:645 +#: src/rs03-verify.c:620 #, c-format msgid "% good, % bad; % bad sub blocks" msgstr "" -#: src/rs03-verify.c:648 +#: src/rs03-verify.c:622 #, c-format msgid "* Ecc block test : % good, % bad; % bad sub blocks\n" msgstr "" -#: src/rs03-verify.c:740 +#: src/rs03-verify.c:688 +#, c-format +msgid "" +"\n" +"%s present.\n" +msgstr "" + +#: src/rs03-verify.c:691 +#, c-format +msgid "" +"\n" +"%s not present.\n" +msgstr "" + +#: src/rs03-verify.c:702 #, c-format msgid "%s present.\n" msgstr "" -#: src/rs03-verify.c:760 +#: src/rs03-verify.c:719 msgid "" "\n" "Error correction properties:\n" msgstr "" -#: src/rs03-verify.c:772 +#: src/rs03-verify.c:731 #, c-format msgid "Ecc file is % sectors shorter than expected." msgstr "" -#: src/rs03-verify.c:774 +#: src/rs03-verify.c:733 #, c-format msgid "Ecc file is % sectors longer than expected." msgstr "" -#: src/rs03-verify.c:782 +#: src/rs03-verify.c:739 #, c-format msgid "* Warning : %s\n" msgstr "" -#: src/rs03-verify.c:791 +#: src/rs03-verify.c:748 msgid "- type : Error correction file\n" msgstr "" -#: src/rs03-verify.c:792 +#: src/rs03-verify.c:749 msgid "- type : Augmented image\n" msgstr "" -#: src/rs03-verify.c:797 +#: src/rs03-verify.c:752 msgid "Error correction file" msgstr "" -#: src/rs03-verify.c:798 +#: src/rs03-verify.c:755 msgid "Augmented image" msgstr "" -#: src/rs03-verify.c:830 src/rs03-verify.c:842 +#: src/rs03-verify.c:783 src/rs03-verify.c:791 msgid "- created by : dvdisaster" msgstr "" -#: src/rs03-verify.c:864 +#: src/rs03-verify.c:810 #, c-format msgid "- requires : dvdisaster-%s\n" msgstr "" -#: src/rs03-verify.c:872 +#: src/rs03-verify.c:815 #, c-format msgid "" "* requires : dvdisaster-%s (BAD)\n" @@ -5548,147 +5544,147 @@ msgid "" "* : Please upgrade dvdisaster.\n" msgstr "" -#: src/rs03-verify.c:896 +#: src/rs03-verify.c:835 msgid "none available" msgstr "" -#: src/rs03-verify.c:962 +#: src/rs03-verify.c:886 msgid "" "\n" "Data integrity:\n" msgstr "" -#: src/rs03-verify.c:991 +#: src/rs03-verify.c:910 #, c-format msgid "% in image; % in ecc file" msgstr "" -#: src/rs03-verify.c:994 +#: src/rs03-verify.c:914 #, c-format msgid "% sectors + %d bytes in image; % in ecc file" msgstr "" -#: src/rs03-verify.c:1000 +#: src/rs03-verify.c:919 #, c-format msgid "- sectors : % in image; " msgstr "" -#: src/rs03-verify.c:1001 +#: src/rs03-verify.c:920 #, c-format msgid "- sectors : % sectors + %d bytes in image; " msgstr "" -#: src/rs03-verify.c:1003 +#: src/rs03-verify.c:922 #, c-format msgid "% in ecc file\n" msgstr "" -#: src/rs03-verify.c:1009 +#: src/rs03-verify.c:925 #, c-format msgid "% total / % data" msgstr "" -#: src/rs03-verify.c:1012 +#: src/rs03-verify.c:927 #, c-format msgid "- medium sectors : % total / % data\n" msgstr "" -#: src/rs03-verify.c:1029 +#: src/rs03-verify.c:943 #, c-format msgid "%s (%s expected)" msgstr "" -#: src/rs03-verify.c:1034 +#: src/rs03-verify.c:948 #, c-format msgid "Image file is %d bytes shorter than expected." msgstr "" -#: src/rs03-verify.c:1036 +#: src/rs03-verify.c:950 #, c-format msgid "Image file is %d bytes longer than expected." msgstr "" -#: src/rs03-verify.c:1050 +#: src/rs03-verify.c:963 #, c-format msgid "* sectors : %s (%s expected); % sectors in ecc file\n" msgstr "" -#: src/rs03-verify.c:1053 +#: src/rs03-verify.c:966 #, c-format msgid "* medium sectors : %s (%s expected)\n" msgstr "" -#: src/rs03-verify.c:1077 +#: src/rs03-verify.c:994 #, c-format msgid "Failed seeking to start of ecc file: %s\n" msgstr "" -#: src/rs03-verify.c:1177 +#: src/rs03-verify.c:1093 msgid " (in ecc file)" msgstr "" -#: src/rs03-verify.c:1185 +#: src/rs03-verify.c:1101 #, c-format msgid "* missing sector : %%s\n" msgstr "" -#: src/rs03-verify.c:1186 +#: src/rs03-verify.c:1102 #, c-format msgid "* missing sectors : % - %%s\n" msgstr "" -#: src/rs03-verify.c:1251 src/rs03-verify.c:1294 +#: src/rs03-verify.c:1168 src/rs03-verify.c:1213 #, c-format msgid "% sectors missing; % signature errors" msgstr "" -#: src/rs03-verify.c:1277 +#: src/rs03-verify.c:1196 msgid "Error correction file:" msgstr "" -#: src/rs03-verify.c:1311 +#: src/rs03-verify.c:1231 #, c-format msgid "" "- good image/file : all sectors present\n" "- data md5sum : %s\n" msgstr "" -#: src/rs03-verify.c:1315 +#: src/rs03-verify.c:1235 #, c-format msgid "* BAD image/file : % sectors missing\n" msgstr "" -#: src/rs03-verify.c:1329 +#: src/rs03-verify.c:1249 #, c-format msgid " ... crc section : % sectors missing; % signature errors\n" msgstr "" -#: src/rs03-verify.c:1362 +#: src/rs03-verify.c:1277 #, c-format msgid "Skipped; not useful on known defective image" msgstr "" -#: src/rs03-verify.c:1366 +#: src/rs03-verify.c:1280 msgid "* Ecc block test : skipped; not useful on defective image\n" msgstr "" -#: src/rs03-window.c:85 +#: src/rs03-window.c:81 msgid "1. Reserving space:" msgstr "" -#: src/rs03-window.c:104 +#: src/rs03-window.c:100 msgid "Encoder info:" msgstr "" -#: src/rs03-window.c:113 +#: src/rs03-window.c:109 msgid "Performance:" msgstr "" -#: src/rs03-window.c:122 +#: src/rs03-window.c:118 msgid "State:" msgstr "" -#: src/scsi-freebsd.c:47 src/scsi-linux.c:51 +#: src/scsi-freebsd.c:49 src/scsi-linux.c:53 msgid "" "Can not access /dev for devices\n" "No drives will be pre-selected.\n" @@ -5696,13 +5692,13 @@ msgstr "" "Impossível acessar /dev para buscar dispositivos\n" "Nenhum drive será pré-selecionado.\n" -#: src/scsi-freebsd.c:102 src/scsi-linux.c:91 src/scsi-win32.c:84 +#: src/scsi-freebsd.c:104 src/scsi-linux.c:93 src/scsi-win32.c:84 msgid "" "No optical drives found in /dev.\n" "No drives will be pre-selected.\n" msgstr "" -#: src/scsi-layer.c:104 +#: src/scsi-layer.c:106 #, c-format msgid "" "Can open %s, but INQUIRY fails.\n" @@ -5715,27 +5711,27 @@ msgstr "" "e tentando acessá-lo via /dev/cdrom ou /dev/hd?.\n" "Use /dev/scd? ou /dev/sr? em vez disso, ou desative a emulação de ide-scsi.\n" -#: src/scsi-layer.c:112 +#: src/scsi-layer.c:114 #, c-format msgid "INQUIRY failed. Something is wrong with drive %s.\n" msgstr "A CONSULTA falhou. Há algo de errado com o drive %s.\n" -#: src/scsi-layer.c:141 +#: src/scsi-layer.c:143 #, c-format msgid "Device %s (%s) is not an optical drive." msgstr "O dispositivo %s (%s) não é um drive de CDROM." -#: src/scsi-layer.c:142 +#: src/scsi-layer.c:144 #, c-format msgid "Device %s (%s) is a hard disk." msgstr "O dispositivo %s (%s) é um disco rígido." -#: src/scsi-layer.c:433 +#: src/scsi-layer.c:435 #, c-format msgid "Incomplete %s" msgstr "%s incompleto" -#: src/scsi-layer.c:471 +#: src/scsi-layer.c:473 #, c-format msgid "" "%s\n" @@ -5744,16 +5740,16 @@ msgstr "" "%s\n" "Impossível consultar o tamanho TOC.\n" -#: src/scsi-layer.c:476 +#: src/scsi-layer.c:478 msgid "blank" msgstr "em branco" -#: src/scsi-layer.c:491 src/scsi-layer.c:552 +#: src/scsi-layer.c:493 src/scsi-layer.c:554 #, c-format msgid "TOC info too long (%d), probably multisession.\n" msgstr "Informação TOC grande demais (%d), provavelmente multiseção.\n" -#: src/scsi-layer.c:506 +#: src/scsi-layer.c:508 #, c-format msgid "" "%s\n" @@ -5762,7 +5758,7 @@ msgstr "" "%s\n" "Impossível ler TOC.\n" -#: src/scsi-layer.c:533 +#: src/scsi-layer.c:535 #, c-format msgid "" "%s\n" @@ -5771,12 +5767,12 @@ msgstr "" "%s\n" "Impossível consultar o tamanho total do TOC.\n" -#: src/scsi-layer.c:546 +#: src/scsi-layer.c:548 #, c-format msgid "TOC info too short, length %d.\n" msgstr "Informação TOC curta demais, tamanho %d.\n" -#: src/scsi-layer.c:568 +#: src/scsi-layer.c:570 #, c-format msgid "" "%s\n" @@ -5785,7 +5781,7 @@ msgstr "" "%s\n" "Impossível ler o TOC completo.\n" -#: src/scsi-layer.c:577 +#: src/scsi-layer.c:579 #, c-format msgid "" "\n" @@ -5794,11 +5790,11 @@ msgstr "" "\n" "Formato de TOC inesperado (tamanho %d):\n" -#: src/scsi-layer.c:585 +#: src/scsi-layer.c:587 msgid "Consider sending a bug report.\n" msgstr "Considere enviar um relatório de bug.\n" -#: src/scsi-layer.c:638 +#: src/scsi-layer.c:643 #, c-format msgid "" "%s\n" @@ -5807,12 +5803,12 @@ msgstr "" "%s\n" "Impossível consultar o tamanho da estrutura do dvd.\n" -#: src/scsi-layer.c:650 +#: src/scsi-layer.c:655 #, c-format msgid "Could not query dvd physical structure - implausible packet length %d\n" msgstr "Impossível consultar a estrutura física do dvd - tamanho de pacote inverossímil: %d\n" -#: src/scsi-layer.c:668 +#: src/scsi-layer.c:673 #, c-format msgid "" "%s\n" @@ -5821,12 +5817,12 @@ msgstr "" "%s\n" "Impossível consultar a estrutura do dvd.\n" -#: src/scsi-layer.c:697 src/scsi-layer.c:707 +#: src/scsi-layer.c:702 src/scsi-layer.c:712 #, c-format msgid "READ DVD STRUCTURE: implausible medium size, %-%=% sectors\n" msgstr "LER A ESTRUTURA DO DVD: tamanho da mídia inverossímil: %-%=% setores\n" -#: src/scsi-layer.c:976 +#: src/scsi-layer.c:981 #, c-format msgid "" "%s\n" @@ -5835,7 +5831,7 @@ msgstr "" "%s\n" "Impossível consultar o tamanho da estrutura do disco BD.\n" -#: src/scsi-layer.c:1000 +#: src/scsi-layer.c:1005 #, c-format msgid "" "%s\n" @@ -5844,7 +5840,7 @@ msgstr "" "%s\n" "Impossível consultar a estrutura do disco BD.\n" -#: src/scsi-layer.c:1704 +#: src/scsi-layer.c:1709 #, c-format msgid "" "%s\n" @@ -5853,12 +5849,12 @@ msgstr "" "%s\n" "Impossível consultar o tamanho da estrutura do dvd para o código de formato 1.\n" -#: src/scsi-layer.c:1715 +#: src/scsi-layer.c:1720 #, c-format msgid "Could not query dvd copyright info - implausible packet length %d\n" msgstr "Impossível consultar as informações de copyright do dvd - tamanho de pacote inverossímil: %d\n" -#: src/scsi-layer.c:1730 +#: src/scsi-layer.c:1735 #, c-format msgid "" "%s\n" @@ -5867,23 +5863,23 @@ msgstr "" "%s\n" "Impossível consultar as informações de copyright.\n" -#: src/scsi-layer.c:1791 +#: src/scsi-layer.c:1796 msgid "is undecideable because of read error" msgstr "é impossível de se resolver por causa de um erro de leitura" -#: src/scsi-layer.c:1797 +#: src/scsi-layer.c:1802 msgid "looks GOOD" msgstr "parece BOM" -#: src/scsi-layer.c:1803 +#: src/scsi-layer.c:1808 msgid "gives unformatted size (UNUSABLE)" msgstr "dá o tamanho não-formatado (INUTILIZÁVEL)" -#: src/scsi-layer.c:1808 +#: src/scsi-layer.c:1813 msgid "is UNUSABLE" msgstr "é INUTILIZÁVEL" -#: src/scsi-layer.c:1834 +#: src/scsi-layer.c:1839 #, c-format msgid "" "%s\n" @@ -5892,12 +5888,12 @@ msgstr "" "%s\n" "Impossível consultar o tamanho da mídia.\n" -#: src/scsi-layer.c:1856 +#: src/scsi-layer.c:1861 #, c-format msgid "READ CAPACITY: implausible medium size, % sectors\n" msgstr "CAPACIDADE DE LEITURA: tamanho da mídia inverossímil, % setores\n" -#: src/scsi-layer.c:1932 +#: src/scsi-layer.c:1937 #, c-format msgid "" "Different media sizes depending on query method:\n" @@ -5909,7 +5905,7 @@ msgstr "" "LEITURA DA CAPACIDADE: % setores\n" "LEITURA DA ESTRUTURA DO DVD : % setores\n" -#: src/scsi-layer.c:1937 +#: src/scsi-layer.c:1942 msgid "" "Evaluation of returned medium sizes:\n" "\n" @@ -5917,15 +5913,15 @@ msgstr "" "Avaliação dos tamanhos da mídia retornados:\n" "\n" -#: src/scsi-layer.c:1992 +#: src/scsi-layer.c:1997 msgid "Using value from READ CAPACITY" msgstr "Usando o valor da LEITURA DA CAPACIDADE" -#: src/scsi-layer.c:1996 +#: src/scsi-layer.c:2001 msgid "Using value from READ DVD STRUCTURE" msgstr "Usando o valor da LEITURA DA ESTRUTURA DO DVD" -#: src/scsi-layer.c:2006 +#: src/scsi-layer.c:2011 #, c-format msgid "" "FAILED to determine image size.\n" @@ -5936,7 +5932,7 @@ msgstr "" "Usar valores menores como este é adequado a mais de 90%% de todos os drives,\n" "mas CONTINUE COM A SUA CONTA EM RISCO (a imagem pode ficar incompleta/inutilizável)" -#: src/scsi-layer.c:2011 +#: src/scsi-layer.c:2016 #, c-format msgid "" "Final decision: %s\n" @@ -5945,7 +5941,7 @@ msgstr "" "Decisão final: %s\n" "\n" -#: src/scsi-layer.c:2019 +#: src/scsi-layer.c:2024 msgid "" "Failed to determine image size.\n" "Try using a different drive." @@ -5953,14 +5949,14 @@ msgstr "" "Falha ao determinar o tamanho da imagem.\n" "Tente usar um drive diferente." -#: src/scsi-layer.c:2146 src/scsi-layer.c:2172 +#: src/scsi-layer.c:2151 src/scsi-layer.c:2177 #, c-format msgid "" "%s\n" "Could not load/unload the medium.\n" msgstr "" -#: src/scsi-layer.c:2162 +#: src/scsi-layer.c:2167 #, c-format msgid "" "%s\n" @@ -5969,37 +5965,37 @@ msgstr "" "%s\n" "Impossível destravar a mídia.\n" -#: src/scsi-layer.c:2228 +#: src/scsi-layer.c:2230 #, c-format msgid "Waiting 10 seconds for drive: %d\n" msgstr "Aguardando 10 segundos pelo drive: %d\n" -#: src/scsi-layer.c:2511 +#: src/scsi-layer.c:2505 #, c-format msgid "Sectors % - %: %s\n" msgstr "Setores % - %: %s\n" -#: src/scsi-layer.c:2525 +#: src/scsi-layer.c:2519 #, c-format msgid "Sector %, try %d: %s Sector returned: %d.\n" msgstr "Setor %, tentativa %d: %s Setor retornado: %d.\n" -#: src/scsi-layer.c:2531 +#: src/scsi-layer.c:2525 #, c-format msgid "Sector %, try %d: %s\n" msgstr "Setor %, tentativa %d: %s\n" -#: src/scsi-layer.c:2542 +#: src/scsi-layer.c:2536 #, c-format msgid "Sector %, try %d: success\n" msgstr "Setor %, tentativa %d: sucesso\n" -#: src/scsi-layer.c:2614 +#: src/scsi-layer.c:2608 #, c-format msgid "Device %s: no medium present\n" msgstr "Dispositivo %s: nenhuma mídia presente\n" -#: src/scsi-layer.c:2619 +#: src/scsi-layer.c:2613 #, c-format msgid "" "Device %s does not become ready:\n" @@ -6010,7 +6006,7 @@ msgstr "" "%s\n" "\n" -#: src/scsi-layer.c:2625 +#: src/scsi-layer.c:2619 #, c-format msgid "" "\n" @@ -6019,63 +6015,63 @@ msgstr "" "\n" "Dispositivo: %s, %s\n" -#: src/scsi-layer.c:2632 +#: src/scsi-layer.c:2626 msgid "Drive failed to report media type." msgstr "O drive falhou ao informar o tipo de mídia." -#: src/scsi-layer.c:2647 src/scsi-layer.c:2759 +#: src/scsi-layer.c:2641 src/scsi-layer.c:2753 #, c-format msgid "This software does not support \"%s\" type media." msgstr "Este software não suporta mídias do tipo \"%s\"" -#: src/scsi-layer.c:2655 +#: src/scsi-layer.c:2649 #, c-format msgid "This software does not support multisession (%d sessions) media." msgstr "Este software não suporta mídias em multisessão (%d sessões)." -#: src/scsi-layer.c:2686 src/scsi-layer.c:2695 +#: src/scsi-layer.c:2680 src/scsi-layer.c:2689 msgid "Using READ CD" msgstr "Usando READ CD" -#: src/scsi-layer.c:2687 +#: src/scsi-layer.c:2681 msgid ", RAW reading" msgstr ", leitura RAW" -#: src/scsi-layer.c:2690 +#: src/scsi-layer.c:2684 #, c-format msgid ", Mode page 1 ERP = %02xh" msgstr "" -#: src/scsi-layer.c:2693 +#: src/scsi-layer.c:2687 msgid ", C2 scanning" msgstr ", escaneando C2" -#: src/scsi-layer.c:2700 +#: src/scsi-layer.c:2694 msgid "Using READ(10).\n" msgstr "Usando READ(10).\n" -#: src/scsi-layer.c:2736 +#: src/scsi-layer.c:2730 #, c-format msgid "Medium: %s, % sectors%s" msgstr "Mídia: %s, % setores%s" -#: src/scsi-layer.c:2740 +#: src/scsi-layer.c:2734 #, c-format msgid "Medium \"%s\": %s, % sectors%s created %s" msgstr "Mídia \"%s\": %s, % setores%s criou %s" -#: src/scsi-netbsd.c:103 +#: src/scsi-netbsd.c:105 msgid "" "No optical drives found.\n" "No drives will be pre-selected.\n" msgstr "" -#: src/scsi-simulated.c:37 +#: src/scsi-simulated.c:39 #, c-format msgid "Simulated CD (%s)" msgstr "" -#: src/scsi-unknown.c:35 +#: src/scsi-unknown.c:37 msgid "" "* Unsupported operating system - no SCSI layer available.\n" "* No drives can be used.\n" @@ -6097,41 +6093,11 @@ msgstr "" msgid "Could not open device %s." msgstr "" -#: src/show-html.c:78 -msgid "windowtitle|Choose a browser" -msgstr "Escolha um browser" - -#: src/show-html.c:115 -msgid "windowtitle|Browser required" -msgstr "Browser necessário" - -#: src/show-html.c:131 -msgid "" -"Could not find a suitable browser.\n" -"\n" -"Which browser would you like to use\n" -"for reading the online documentation?\n" -"\n" -"Please enter its name (e.g. mozilla) or\n" -"use the \"Search\" button for a file dialog.\n" -msgstr "" -"Impossível encontrar um browser adequado.\n" -"\n" -"Que browser você gostaria de usar\n" -"para ler a documentação online?\n" -"\n" -"Por favor, digite o nome dele (p.ex.: mozilla) ou\n" -"use o botão \"Buscar\" para um diálogo de seleção de arquivo.\n" - -#: src/show-html.c:144 src/show-manual.c:145 -msgid "Search" -msgstr "Buscar" - -#: src/show-html.c:337 src/show-manual.c:324 +#: src/show-manual.c:83 msgid "Documentation not installed." msgstr "Documentação não instalada." -#: src/show-html.c:382 src/show-manual.c:340 +#: src/show-manual.c:98 #, c-format msgid "" "Documentation file\n" @@ -6139,85 +6105,145 @@ msgid "" "not found.\n" msgstr "" -#: src/show-html.c:391 -msgid "Please hang on until the browser comes up!" -msgstr "Por favor, espere até que o browser abra!" - -#: src/show-manual.c:79 -msgid "windowtitle|Choose a PDF viewer" +#: src/show-manual.c:114 +msgid "Could not create pipe before fork" msgstr "" -#: src/show-manual.c:116 -msgid "windowtitle|PDF viewer required" +#: src/show-manual.c:122 +msgid "Could not fork to start xdg-open" msgstr "" -#: src/show-manual.c:132 +#: src/show-manual.c:145 +#, c-format msgid "" -"Could not find a suitable PDF viewer.\n" -"\n" -"Which PDF viewer would you like to use\n" -"for reading the online documentation?\n" -"\n" -"Please enter its name (e.g. xpdf) or\n" -"use the \"Search\" button for a file dialog.\n" +"execvp could not execute \"xdg-open\":\n" +"%s\n" +"Is xdg-open installed correctly?\n" msgstr "" -#: src/show-manual.c:349 -msgid "Please hang on until the viewer comes up!" -msgstr "" - -#: src/udf.c:257 +#: src/udf.c:259 msgid "Unnamed" msgstr "Sem título" -#: src/udf.c:348 +#: src/udf.c:350 msgid "Example disc" msgstr "Disco de exemplo" -#: src/welcome-window.c:82 +#: src/welcome-window.c:84 msgid "" -"This is v0.79.6-pl8. The patchlevel series are enhanced from the last upstream pre-release.\n" -"We add support for a CLI version, BD-R TL/QL, a Windows build, an option to produce bigger BD-R RS03,\n" +"This is v0.79.10-pl1. The patchlevel series are enhanced from the last upstream release.\n" +"We add support for BD-R TL/QL, a Windows build, an option to produce bigger BD-R RS03,\n" "images, support for stripping ECC from ISOs, re-enabled adaptive reading (except for RS03), and more.\n" "\n" -"Please refer to the Help > Change log menu for all the details.\n" -"The warning message from the pre-release version is retained below.\n" +"Please refer to the Help > Change log menu for all the details." msgstr "" -#: src/welcome-window.c:89 -msgid "" -"Please note:\n" -"This is a pre-release for expert users.\n" -"It may contain unfinished features.\n" -"Adaptive reading is unavailable in this version.\n" -"It will be re-introduced in one of the next releases." -msgstr "" - -#: src/welcome-window.c:97 +#: src/welcome-window.c:92 msgid "Show this message again" msgstr "Mostrar essa mensagem no futuro" -#: src/welcome-window.c:143 +#: src/welcome-window.c:138 msgid "Welcome to dvdisaster!" msgstr "Bem-vindo(a) ao dvdisaster!" -#: src/welcome-window.c:145 +#: src/welcome-window.c:140 msgid "" "\n" "dvdisaster creates error correction data to protect\n" "optical media (CD,DVD,BD) against data loss.\n" msgstr "" -#: src/welcome-window.c:148 +#: src/welcome-window.c:143 msgid "" "Please see the [manual] for typical uses of dvdisaster.\n" "\n" msgstr "" -#: src/welcome-window.c:151 +#: src/welcome-window.c:146 msgid "New in this Version:" msgstr "Novidades dessa versão:" +#~ msgid "windowtitle|Modifying dvdisaster" +#~ msgstr "Modificando o dvdisaster" + +#~ msgid "" +#~ "Modifying dvdisaster\n" +#~ "Your changes are not ours." +#~ msgstr "" +#~ "Modificando o dvdisaster\n" +#~ "Suas mudanças não são nossas." + +#~ msgid "Copyright 2004-2017 Carsten Gnoerlich" +#~ msgstr "Copyright 2004-2017 Carsten Gnoerlich" + +#~ msgid "" +#~ "\n" +#~ "e-mail: carsten@dvdisaster.org -or- cgnoerlich@fsfe.org" +#~ msgstr "" +#~ "\n" +#~ "e-mail: carsten@dvdisaster.org -ou- cgnoerlich@fsfe.org" + +#~ msgid "Read position: %3d.%1d%% (%4.1fx)" +#~ msgstr "Posição de leitura: %3d.%1d%% (%4.1fx)" + +#~ msgid "" +#~ "%d sectors missing at the end of the disc.\n" +#~ "This is okay if the CD was written in TAO (track at once) mode.\n" +#~ "The Image will be truncated accordingly. See the manual for details.\n" +#~ msgstr "" +#~ "faltam %d setores no fim do disco.\n" +#~ "Isso está certo se o CD foi gravado no modo TAO (track at once).\n" +#~ "A imagem será truncada desta forma. Veja o manual para detalhes.\n" + +#~ msgid "" +#~ "%d sectors missing at the end of the disc.\n" +#~ "This is okay if the CD was written in TAO (track at once) mode.\n" +#~ "The Image will be truncated accordingly. See the manual for details.\n" +#~ "Use the --dao option to disable image truncating.\n" +#~ msgstr "" +#~ "faltam %d setores no fim do disco.\n" +#~ "Isso está certo se o CD foi gravado no modo TAO (track at once).\n" +#~ "A imagem será truncada para a forma. Veja o manual para detalhes.\n" +#~ "Use a opção --dao para impedir o programa de truncar a imagem.\n" + +#~ msgid "" +#~ "* requires : dvdisaster-%d.%d (BAD)\n" +#~ "* Warning : The following output might be incorrect.\n" +#~ "* : Please visit http://www.dvdisaster.org for an upgrade.\n" +#~ msgstr "" +#~ "* requer : dvdisaster-%d.%d (RUIM)\n" +#~ "* Cuidado : A saída seguinte pode estar incorreta.\n" +#~ "* : Por favor, visite http://www.dvdisaster.org para uma atualização.\n" + +#~ msgid "windowtitle|Choose a browser" +#~ msgstr "Escolha um browser" + +#~ msgid "windowtitle|Browser required" +#~ msgstr "Browser necessário" + +#~ msgid "" +#~ "Could not find a suitable browser.\n" +#~ "\n" +#~ "Which browser would you like to use\n" +#~ "for reading the online documentation?\n" +#~ "\n" +#~ "Please enter its name (e.g. mozilla) or\n" +#~ "use the \"Search\" button for a file dialog.\n" +#~ msgstr "" +#~ "Impossível encontrar um browser adequado.\n" +#~ "\n" +#~ "Que browser você gostaria de usar\n" +#~ "para ler a documentação online?\n" +#~ "\n" +#~ "Por favor, digite o nome dele (p.ex.: mozilla) ou\n" +#~ "use o botão \"Buscar\" para um diálogo de seleção de arquivo.\n" + +#~ msgid "Search" +#~ msgstr "Buscar" + +#~ msgid "Please hang on until the browser comes up!" +#~ msgstr "Por favor, espere até que o browser abra!" + #~ msgid "" #~ "\n" #~ "Common usage examples:\n" @@ -6771,50 +6797,6 @@ msgstr "Novidades dessa versão:" #~ msgid "This software does not support encrypted media.\n" #~ msgstr "Este software não suporta mídias criptografadas.\n" -#~ msgid "Copyright 2004-2018 Carsten Gnoerlich" -#~ msgstr "Copyright 2004-2018 Carsten Gnoerlich" - -#~ msgid "windowtitle|Modifying dvdisaster" -#~ msgstr "Modificando o dvdisaster" - -#~ msgid "" -#~ "Modifying dvdisaster\n" -#~ "Your changes are not ours." -#~ msgstr "" -#~ "Modificando o dvdisaster\n" -#~ "Suas mudanças não são nossas." - -#~ msgid "" -#~ "Modified version Copyright 2018 (please fill in - [directions])\n" -#~ "Copyright 2004-2018 Carsten Gnoerlich" -#~ msgstr "" -#~ "Versão modificada Copyright 2018 (por favor, preencha - [instruções])\n" -#~ "Copyright 2004-2018 Carsten Gnoerlich" - -#~ msgid "" -#~ "* requires : dvdisaster-%d.%d (BAD)\n" -#~ "* Warning : The following output might be incorrect.\n" -#~ "* : Please visit http://www.dvdisaster.org for an upgrade.\n" -#~ msgstr "" -#~ "* requer : dvdisaster-%d.%d (RUIM)\n" -#~ "* Cuidado : A saída seguinte pode estar incorreta.\n" -#~ "* : Por favor, visite http://www.dvdisaster.org para uma atualização.\n" - -#~ msgid "" -#~ "\n" -#~ "This program is not the original. It is based on the\n" -#~ "source code of dvdisaster, but contains third-party changes.\n" -#~ "\n" -#~ "Please do not bother the original authors of dvdisaster\n" -#~ "([www.dvdisaster.org]) about issues with this version.\n" -#~ msgstr "" -#~ "\n" -#~ "Esse programa não é o original. Ele é baseado no\n" -#~ "código-fonte do dvdisaster, mas contém mudanças de terceiros.\n" -#~ "\n" -#~ "Por favor, não incomode os autores originais do dvdisaster\n" -#~ "([www.dvdisaster.org]) com problemas dessa versão.\n" - #~ msgid "created by dvdisaster-%d.%d\n" #~ msgstr "criado pelo dvdisaster-%d.%d\n" diff --git a/locale/ru.po b/locale/ru.po index 4612667..72b8d7d 100644 --- a/locale/ru.po +++ b/locale/ru.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: dvdisaster 0.70.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-06-27 23:00+0200\n" +"POT-Creation-Date: 2021-10-09 14:18+0200\n" "PO-Revision-Date: 2009-07-23 08:11+0300\n" "Last-Translator: Igor Gorbounov \n" "Language-Team: Russian\n" @@ -19,7 +19,7 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -#: src/closure.c:391 +#: src/closure.c:296 #, c-format msgid "" "# dvdisaster-%s configuration file\n" @@ -32,58 +32,58 @@ msgstr "" "# он автоматически перезаписывается при каждом запуске программы.\n" "\n" -#: src/closure.c:613 +#: src/closure.c:564 msgid "medium.iso" msgstr "medium.iso" -#: src/closure.c:614 +#: src/closure.c:565 msgid "medium.ecc" msgstr "medium.ecc" -#: src/closure.c:615 +#: src/closure.c:566 msgid "sector-" msgstr "сектор-" -#: src/debug.c:56 src/debug.c:155 src/debug.c:293 +#: src/debug.c:58 src/debug.c:157 src/debug.c:295 #, c-format msgid "Number of erasures must be > 0 and <= %d\n" msgstr "Число стертых мест должно быть > 0 и <= %d\n" -#: src/debug.c:70 src/debug.c:160 +#: src/debug.c:72 src/debug.c:162 #, c-format msgid "" "\n" "Generating random correctable erasures (%s; for %d roots, max erasures = %d).\n" msgstr "" -#: src/debug.c:103 src/debug.c:191 src/debug.c:239 src/debug.c:363 -#: src/debug.c:707 src/debug.c:807 src/debug.c:850 src/debug.c:1181 -#: src/debug.c:1189 src/debug.c:1266 src/rs01-common.c:175 -#: src/rs02-common.c:239 src/rs02-create.c:377 src/rs02-create.c:1032 -#: src/rs02-fix.c:414 src/rs02-verify.c:404 src/rs03-common.c:340 -#: src/rs03-create.c:756 src/rs03-create.c:781 +#: src/debug.c:105 src/debug.c:193 src/debug.c:241 src/debug.c:365 +#: src/debug.c:708 src/debug.c:808 src/debug.c:851 src/debug.c:1182 +#: src/debug.c:1190 src/debug.c:1267 src/rs01-common.c:177 +#: src/rs02-common.c:241 src/rs02-create.c:347 src/rs02-create.c:990 +#: src/rs02-fix.c:381 src/rs02-verify.c:398 src/rs03-common.c:341 +#: src/rs03-create.c:729 src/rs03-create.c:754 #, c-format msgid "Failed seeking to sector % in image: %s" msgstr "Не удалось найти сектор % в образе: %s" -#: src/debug.c:111 src/debug.c:196 src/debug.c:243 src/debug.c:368 -#: src/debug.c:545 src/debug.c:662 src/debug.c:713 src/debug.c:1193 -#: src/debug.c:1270 src/debug.c:1310 src/rs02-create.c:400 -#: src/rs02-create.c:426 src/rs02-create.c:1035 src/rs03-create.c:761 -#: src/rs03-create.c:785 src/udf.c:830 src/udf.c:888 src/udf.c:945 -#: src/udf.c:958 src/udf.c:963 src/udf.c:966 src/udf.c:969 src/udf.c:972 -#: src/udf.c:975 src/udf.c:978 +#: src/debug.c:113 src/debug.c:198 src/debug.c:245 src/debug.c:370 +#: src/debug.c:546 src/debug.c:663 src/debug.c:714 src/debug.c:1194 +#: src/debug.c:1271 src/debug.c:1311 src/rs02-create.c:370 +#: src/rs02-create.c:396 src/rs02-create.c:993 src/rs03-create.c:734 +#: src/rs03-create.c:758 src/udf.c:831 src/udf.c:889 src/udf.c:946 +#: src/udf.c:959 src/udf.c:964 src/udf.c:967 src/udf.c:970 src/udf.c:973 +#: src/udf.c:976 src/udf.c:979 #, c-format msgid "Failed writing to sector % in image: %s" msgstr "Не удалось записать сектор % в образе: %s" -#: src/debug.c:119 src/debug.c:249 src/debug.c:374 src/debug.c:666 -#: src/debug.c:720 src/debug.c:1284 +#: src/debug.c:121 src/debug.c:251 src/debug.c:376 src/debug.c:667 +#: src/debug.c:721 src/debug.c:1285 #, c-format msgid "Progress: %3d%%" msgstr "Степень выполнения: %3d%%" -#: src/debug.c:124 src/debug.c:254 src/debug.c:379 +#: src/debug.c:126 src/debug.c:256 src/debug.c:381 #, c-format msgid "" "Progress: 100%%\n" @@ -91,32 +91,32 @@ msgid "" "Otherwise you'll accumulate >= %d erasures/ECC block and the image will be lost.\n" msgstr "" -#: src/debug.c:299 +#: src/debug.c:301 #, c-format msgid "" "\n" "RS03 error correction file with %d roots.\n" msgstr "" -#: src/debug.c:300 +#: src/debug.c:302 #, c-format msgid "" "\n" "RS03 augmented image with %d roots.\n" msgstr "" -#: src/debug.c:301 +#: src/debug.c:303 #, c-format msgid "Generating at most %d random correctable erasures.\n" msgstr "" -#: src/debug.c:443 src/debug.c:501 src/debug.c:565 src/debug.c:606 -#: src/debug.c:689 src/debug.c:795 src/debug.c:836 src/debug.c:882 -#: src/debug.c:936 src/debug.c:1161 src/debug.c:1169 src/debug.c:1225 -#: src/debug.c:1230 src/misc.c:1393 src/raw-editor.c:364 src/read-adaptive.c:73 -#: src/read-adaptive.c:93 src/read-adaptive.c:1552 src/read-adaptive.c:1588 -#: src/read-linear.c:289 src/read-linear.c:291 src/read-linear.c:327 -#: src/read-linear.c:329 src/rs01-create.c:303 src/rs03-create.c:1352 +#: src/debug.c:445 src/debug.c:503 src/debug.c:566 src/debug.c:607 +#: src/debug.c:690 src/debug.c:796 src/debug.c:837 src/debug.c:883 +#: src/debug.c:937 src/debug.c:1162 src/debug.c:1170 src/debug.c:1226 +#: src/debug.c:1231 src/misc.c:763 src/raw-editor.c:366 src/read-adaptive.c:75 +#: src/read-adaptive.c:95 src/read-adaptive.c:1471 src/read-adaptive.c:1501 +#: src/read-linear.c:273 src/read-linear.c:275 src/read-linear.c:306 +#: src/read-linear.c:308 src/rs01-create.c:279 src/rs03-create.c:1308 #, c-format msgid "" "Can't open %s:\n" @@ -125,74 +125,74 @@ msgstr "" "Не удается открыть %s:\n" "%s" -#: src/debug.c:448 src/debug.c:1140 src/debug.c:1216 +#: src/debug.c:450 src/debug.c:1141 src/debug.c:1217 msgid "2nd argument is missing" msgstr "Отсутствует 2-й аргумент" -#: src/debug.c:455 src/debug.c:1146 +#: src/debug.c:457 src/debug.c:1147 msgid "3rd argument is missing" msgstr "Отсутствует 3-й аргумент" -#: src/debug.c:462 src/debug.c:802 src/debug.c:843 src/debug.c:891 -#: src/debug.c:954 +#: src/debug.c:464 src/debug.c:803 src/debug.c:844 src/debug.c:892 +#: src/debug.c:955 #, c-format msgid "Sector must be in range [0..%]\n" msgstr "Сектор должен быть в диапазоне [0..%]\n" -#: src/debug.c:465 +#: src/debug.c:467 msgid "Byte position must be in range [0..2047]" msgstr "Байт должен располагаться в диапазоне [0..2047]" -#: src/debug.c:468 +#: src/debug.c:470 msgid "Byte value must be in range [0..255]" msgstr "Байт должен иметь значение в диапазоне [0..255]" -#: src/debug.c:470 +#: src/debug.c:472 #, c-format msgid "Setting byte %d in sector % to value %d.\n" msgstr "Установка байта %d в секторе % в значение %d.\n" -#: src/debug.c:477 src/debug.c:531 src/debug.c:694 src/rs02-create.c:210 -#: src/rs02-verify.c:719 src/rs03-verify.c:1073 +#: src/debug.c:479 src/debug.c:532 src/debug.c:695 src/rs02-create.c:194 +#: src/rs02-verify.c:698 src/rs03-verify.c:990 #, c-format msgid "Failed seeking to start of image: %s\n" msgstr "Не удалось перейти к началу образа: %s\n" -#: src/debug.c:481 +#: src/debug.c:483 msgid "Could not write the new byte value" msgstr "Невозможно записать новое значение байта" -#: src/debug.c:524 src/read-adaptive.c:830 +#: src/debug.c:525 src/read-adaptive.c:805 #, c-format msgid "Sectors must be in range [0..%].\n" msgstr "Сектора должны быть в диапазоне [0..%].\n" -#: src/debug.c:526 +#: src/debug.c:527 #, c-format msgid "Erasing sectors [%,%]\n" msgstr "Стирание секторов [%,%]\n" -#: src/debug.c:572 +#: src/debug.c:573 #, c-format msgid "New length must be in range [0..%].\n" msgstr "Новая длина должна быть в диапазоне [0..%].\n" -#: src/debug.c:574 src/misc.c:1404 +#: src/debug.c:575 src/misc.c:774 #, c-format msgid "Truncating image to % sectors.\n" msgstr "Усечение образа до % секторов.\n" -#: src/debug.c:579 src/misc.c:1425 src/read-linear.c:1477 src/rs01-fix.c:230 -#: src/rs01-fix.c:253 src/rs01-fix.c:275 src/rs01-fix.c:315 -#: src/rs02-create.c:117 src/rs02-create.c:171 src/rs02-fix.c:268 -#: src/rs02-fix.c:288 src/rs02-fix.c:306 src/rs03-create.c:256 -#: src/rs03-create.c:345 src/rs03-fix.c:298 src/rs03-fix.c:337 -#: src/rs03-fix.c:359 src/rs03-fix.c:379 +#: src/debug.c:580 src/misc.c:795 src/read-linear.c:1458 src/rs01-fix.c:219 +#: src/rs01-fix.c:242 src/rs01-fix.c:259 src/rs01-fix.c:293 +#: src/rs02-create.c:107 src/rs02-create.c:155 src/rs02-fix.c:240 +#: src/rs02-fix.c:260 src/rs02-fix.c:274 src/rs03-create.c:246 +#: src/rs03-create.c:327 src/rs03-fix.c:268 src/rs03-fix.c:304 +#: src/rs03-fix.c:326 src/rs03-fix.c:342 #, c-format msgid "Could not truncate %s: %s\n" msgstr "Не удалось усечь %s: %s\n" -#: src/debug.c:610 +#: src/debug.c:611 #, c-format msgid "" "\n" @@ -211,8 +211,8 @@ msgstr "" "dvdisaster --debug %s % --random-seed %d\n" "\n" -#: src/debug.c:674 src/read-adaptive.c:382 src/read-linear.c:133 -#: src/read-linear.c:136 +#: src/debug.c:675 src/read-adaptive.c:382 src/read-linear.c:127 +#: src/read-linear.c:130 #, c-format msgid "" "Error closing image file:\n" @@ -221,11 +221,11 @@ msgstr "" "Ошибка при закрытии файла образа:\n" "%s" -#: src/debug.c:690 +#: src/debug.c:691 msgid "Replacing the \"unreadable sector\" markers with zeros.\n" msgstr "Замещение маркеров \"нечитаемый сектор\" нулями.\n" -#: src/debug.c:700 +#: src/debug.c:701 #, c-format msgid "" "Could not read image sector %:\n" @@ -234,20 +234,20 @@ msgstr "" "Не удалось прочитать сектор образа %:\n" "%s\n" -#: src/debug.c:725 +#: src/debug.c:726 #, c-format msgid "% \"unreadable sector\" markers replaced.\n" msgstr "Замещено % маркеров \"нечитаемый сектор\".\n" -#: src/debug.c:811 src/debug.c:854 src/debug.c:1185 src/debug.c:1252 -#: src/debug.c:1256 src/debug.c:1306 src/rs01-common.c:191 -#: src/rs02-common.c:244 src/rs02-create.c:229 src/rs02-fix.c:417 -#: src/rs03-common.c:345 +#: src/debug.c:812 src/debug.c:855 src/debug.c:1186 src/debug.c:1253 +#: src/debug.c:1257 src/debug.c:1307 src/rs01-common.c:193 +#: src/rs02-common.c:246 src/rs02-create.c:211 src/rs02-fix.c:384 +#: src/rs03-common.c:346 #, c-format msgid "Failed reading sector % in image: %s" msgstr "Не удалось прочитать сектор % в образе: %s" -#: src/debug.c:845 src/debug.c:894 src/debug.c:957 +#: src/debug.c:846 src/debug.c:895 src/debug.c:958 #, c-format msgid "" "Contents of sector %:\n" @@ -256,49 +256,49 @@ msgstr "" "Содержимое сектора %:\n" "\n" -#: src/debug.c:905 +#: src/debug.c:906 #, c-format msgid "Failed reading sector %: %s" msgstr "Не удалось прочитать сектор %: %s" -#: src/debug.c:944 +#: src/debug.c:945 msgid "Raw reading only possible on CD media\n" msgstr "Низкоуровневое чтение возможно только на CD-носителе\n" -#: src/debug.c:1152 +#: src/debug.c:1153 msgid "4th argument is missing" msgstr "4-й аргумент отсутствует" -#: src/debug.c:1165 +#: src/debug.c:1166 #, c-format msgid "Source sector must be in range [0..%]\n" msgstr "Сектор источника должен быть в диапазоне [0..%]\n" -#: src/debug.c:1173 +#: src/debug.c:1174 #, c-format msgid "Destination sector must be in range [0..%]\n" msgstr "Сектор назначения должен быть в диапазоне [0..%]\n" -#: src/debug.c:1177 +#: src/debug.c:1178 #, c-format msgid "Copying sector % from %s to sector % in %s.\n" msgstr "Копирование сектора % с %s в сектор % в %s.\n" -#: src/ds-marker.c:267 +#: src/ds-marker.c:269 msgid "Stop reporting these errors" msgstr "Прекратить сообщения об этих ошибках" -#: src/ds-marker.c:268 +#: src/ds-marker.c:270 msgid "Continue reporting" msgstr "Продолжить сообщения" -#: src/ds-marker.c:302 +#: src/ds-marker.c:297 msgid "" "* ... more unrecoverable sectors found ...\n" "* further messages are suppressed unless the -v option is given.\n" msgstr "" -#: src/ds-marker.c:318 +#: src/ds-marker.c:311 #, c-format msgid "" "\n" @@ -313,7 +313,7 @@ msgstr "" "%s\n" "\n" -#: src/ds-marker.c:321 +#: src/ds-marker.c:312 #, c-format msgid "" "\n" @@ -324,7 +324,7 @@ msgid "" "* " msgstr "" -#: src/ds-marker.c:331 +#: src/ds-marker.c:322 #, c-format msgid "" "Unrecoverable sector found!\n" @@ -341,7 +341,7 @@ msgid "" "error correction data for it. Sorry for the bad news.\n" msgstr "" -#: src/ds-marker.c:358 +#: src/ds-marker.c:345 #, c-format msgid "" "Unrecoverable sector found!\n" @@ -358,7 +358,7 @@ msgid "" "error correction data for it. Sorry for the bad news.\n" msgstr "" -#: src/ds-marker.c:388 +#: src/ds-marker.c:371 #, c-format msgid "" "Unrecoverable sector found!\n" @@ -385,7 +385,7 @@ msgstr "" "исправить. Невозможно и создать для него\n" "данные для исправления ошибок. Жаль, что новости плохие.\n" -#: src/ds-marker.c:415 +#: src/ds-marker.c:394 #, c-format msgid "" "Unrecoverable sector found!\n" @@ -401,83 +401,83 @@ msgstr "" #. TRANSLATORS: #. This is a dummy entry which is supposed to translate into "ok". #. Please do not return anything else here. -#: src/dvdisaster.c:168 src/dvdisaster.c:180 +#: src/dvdisaster.c:170 src/dvdisaster.c:182 msgid "test phrase for verifying the locale installation" msgstr "ok" -#: src/dvdisaster.c:372 +#: src/dvdisaster.c:374 msgid "-o/--ecc-target expects 'file' or 'image'" msgstr "" -#: src/dvdisaster.c:398 +#: src/dvdisaster.c:400 #, c-format msgid "--threads must be 1..%d\n" msgstr "--потоков должно быть 1..%d\n" -#: src/dvdisaster.c:415 +#: src/dvdisaster.c:417 msgid "--cache-size must at least be 8MiB; 16MiB or higher is recommended." msgstr "--cache-size должен быть не меньше 8МБ; рекомендуется 16МБ и больше." -#: src/dvdisaster.c:417 +#: src/dvdisaster.c:419 #, c-format msgid "--cache-size maximum is %dMiB." msgstr "" -#: src/dvdisaster.c:440 +#: src/dvdisaster.c:442 msgid "--encoding-algorithm: SSE2 not supported on this processor!" msgstr "" -#: src/dvdisaster.c:444 +#: src/dvdisaster.c:446 msgid "--encoding-algorithm: valid types are 32bit, 64bit, SSE2" msgstr "" -#: src/dvdisaster.c:451 +#: src/dvdisaster.c:453 msgid "--encoding-algorithm: AltiVec not supported on this processor!" msgstr "" -#: src/dvdisaster.c:455 +#: src/dvdisaster.c:457 msgid "--encoding-algorithm: valid types are 32bit, 64bit, AltiVec" msgstr "" -#: src/dvdisaster.c:458 +#: src/dvdisaster.c:460 msgid "--encoding-algorithm: valid types are 32bit, 64bit" msgstr "" -#: src/dvdisaster.c:467 +#: src/dvdisaster.c:469 msgid "--encoding-io-strategy: mmap not supported on this OS" msgstr "" -#: src/dvdisaster.c:471 +#: src/dvdisaster.c:473 msgid "--encoding-io-strategy: valid types are readwrite and mmap" msgstr "" -#: src/dvdisaster.c:481 +#: src/dvdisaster.c:483 msgid "Valid args for --driver: sg,cdrom" msgstr "" -#: src/dvdisaster.c:483 +#: src/dvdisaster.c:485 msgid "--driver is only supported on GNU/Linux" msgstr "только --driver поддерживается на GNU/Linux" -#: src/dvdisaster.c:497 +#: src/dvdisaster.c:499 msgid "--fixed-speed-values is only allowed in debug mode" msgstr "" -#: src/dvdisaster.c:552 +#: src/dvdisaster.c:554 #, c-format msgid "--prefetch-sectors must be in range 32...%d" msgstr "" -#: src/dvdisaster.c:606 +#: src/dvdisaster.c:608 msgid "--set-version is only allowed in debug mode" msgstr "" -#: src/dvdisaster.c:713 +#: src/dvdisaster.c:715 #, c-format msgid "?? illegal getopt return value %d\n" msgstr "?? неправильное возвращаемое значение getopt: %d\n" -#: src/dvdisaster.c:806 src/main-window.c:149 +#: src/dvdisaster.c:808 src/main-window.c:153 #, c-format msgid "" "\n" @@ -488,8 +488,8 @@ msgstr "" "Метод %s недоступен.\n" "Для получения списка методов используйте -m без параметров.\n" -#: src/dvdisaster.c:817 src/rs01-create.c:285 src/rs02-create.c:1075 -#: src/rs03-create.c:1320 +#: src/dvdisaster.c:819 src/rs01-create.c:261 src/rs02-create.c:1031 +#: src/rs03-create.c:1276 #, c-format msgid "" "\n" @@ -498,25 +498,25 @@ msgstr "" "\n" "Открытие %s" -#: src/dvdisaster.c:824 src/rs01-create.c:294 src/rs02-create.c:175 -#: src/rs02-create.c:1085 src/rs03-create.c:349 src/rs03-create.c:1335 +#: src/dvdisaster.c:826 src/rs01-create.c:270 src/rs02-create.c:159 +#: src/rs02-create.c:1041 src/rs03-create.c:331 src/rs03-create.c:1291 #, c-format msgid ": % medium sectors.\n" msgstr ": % секторов носителя.\n" -#: src/dvdisaster.c:825 src/rs01-create.c:295 src/rs02-create.c:176 -#: src/rs02-create.c:1086 src/rs03-create.c:350 src/rs03-create.c:1336 +#: src/dvdisaster.c:827 src/rs01-create.c:271 src/rs02-create.c:160 +#: src/rs02-create.c:1042 src/rs03-create.c:332 src/rs03-create.c:1292 #, c-format msgid ": % medium sectors and %d bytes.\n" msgstr ": % секторов носителя и %d байт.\n" -#: src/dvdisaster.c:852 src/main-window.c:212 +#: src/dvdisaster.c:854 src/main-window.c:216 msgid "RS01 method not available for comparing files." msgstr "Метод RS01 не применяется для сравнения файлов." #. TRANSLATORS: Program options like -r and --read are not to be translated #. to avoid confusion when discussing the program in international forums. -#: src/dvdisaster.c:950 +#: src/dvdisaster.c:952 msgid "" "\n" "Common usage examples:\n" @@ -542,7 +542,7 @@ msgstr "" " dvdisaster -u,--unlink # Удалить файлы .iso (по завершении других действий)\n" "\n" -#: src/dvdisaster.c:960 +#: src/dvdisaster.c:962 #, c-format msgid "" "Drive and file specification:\n" @@ -553,255 +553,259 @@ msgid "" " -o,--ecc-target [file image] - where to put ecc data in RS03\n" msgstr "" -#: src/dvdisaster.c:970 +#: src/dvdisaster.c:972 msgid "Tweaking options (see manual before using!)\n" msgstr "Параметры тонкой настройки (перед применением см. руководство!)\n" -#: src/dvdisaster.c:971 +#: src/dvdisaster.c:973 msgid " -a,--assume x,y,... - assume image is augmented with codec(s) x,y,...\n" msgstr "" -#: src/dvdisaster.c:972 +#: src/dvdisaster.c:974 msgid " -j,--jump n - jump n sectors forward after a read error (default: 16)\n" msgstr " -j,--jump n - переход на n секторов вперед после ошибки чтения (по умолчанию: 16)\n" -#: src/dvdisaster.c:973 +#: src/dvdisaster.c:975 msgid " -m n - list/select error correction methods (default: RS01)\n" msgstr " -m n - просмотреть/выбрать методы исправления ошибок (по умолчанию: RS01)\n" -#: src/dvdisaster.c:974 +#: src/dvdisaster.c:976 #, c-format msgid "" " -n,--redundancy n%% - error correction data redundancy\n" " allowed values depend on codec (see manual)\n" msgstr "" -#: src/dvdisaster.c:976 +#: src/dvdisaster.c:978 msgid " -v,--verbose - more diagnostic messages\n" msgstr " -v,--verbose - больше диагностических сообщений\n" -#: src/dvdisaster.c:977 +#: src/dvdisaster.c:979 msgid " -x,--threads n - use n threads for en-/decoding (if supported by codec)\n" msgstr "" -#: src/dvdisaster.c:978 +#: src/dvdisaster.c:980 msgid " --adaptive-read - use optimized strategy for reading damaged media\n" msgstr " --adaptive-read - использование оптимизированной стратегии чтения поврежденных носителей\n" -#: src/dvdisaster.c:979 +#: src/dvdisaster.c:981 msgid " --auto-suffix - automatically add .iso and .ecc file suffixes\n" msgstr " --auto-suffix - автоматически добавлять расширения имени файла .iso и .ecc\n" -#: src/dvdisaster.c:980 +#: src/dvdisaster.c:982 msgid " --cache-size n - image cache size in MiB during -c mode (default: 32MiB)\n" msgstr " --cache-size n - размер буфера образа в МБ в режиме -c (по умолчанию: 32МБ)\n" -#: src/dvdisaster.c:981 +#: src/dvdisaster.c:983 msgid " --dao - assume DAO disc; do not trim image end\n" msgstr " --dao - считать, что диск в режиме DAO; не отрезать конец образа\n" -#: src/dvdisaster.c:982 +#: src/dvdisaster.c:984 msgid " --defective-dump d - directory for saving incomplete raw sectors\n" msgstr " --defective-dump d - каталог для сохранения незавершенных необработанных секторов\n" -#: src/dvdisaster.c:984 +#: src/dvdisaster.c:986 msgid " --driver=sg/cdrom - use sg(default) or alternative cdrom driver (see man page!)\n" msgstr "" -#: src/dvdisaster.c:986 +#: src/dvdisaster.c:988 msgid " --eject - eject medium after successful read\n" msgstr " --eject - извлекать носитель после успешного чтения\n" -#: src/dvdisaster.c:987 +#: src/dvdisaster.c:989 msgid " --encoding-algorithm n - possible values: 32bit,64bit,SSE2,AltiVec\n" msgstr "" -#: src/dvdisaster.c:988 +#: src/dvdisaster.c:990 msgid " --encoding-io-strategy n - possible values: readwrite, mmap\n" msgstr "" -#: src/dvdisaster.c:989 +#: src/dvdisaster.c:991 msgid " --fill-unreadable n - fill unreadable sectors with byte n\n" msgstr " --fill-unreadable n - заполнять нечитаемые сектора байтом n\n" -#: src/dvdisaster.c:990 +#: src/dvdisaster.c:992 msgid " --ignore-fatal-sense - continue reading after potentially fatal error conditon\n" msgstr " --ignore-fatal-sense - продолжать чтение после возможной критической ошибки\n" -#: src/dvdisaster.c:991 +#: src/dvdisaster.c:993 msgid " --ignore-iso-size - ignore image size from ISO/UDF data (dangerous - see man page!)\n" msgstr "" -#: src/dvdisaster.c:992 +#: src/dvdisaster.c:994 msgid " --internal-rereads n - drive may attempt n rereads before reporting an error\n" msgstr " --internal-rereads n - привод может делать n повторных чтений перед сообщением об ошибке\n" -#: src/dvdisaster.c:993 +#: src/dvdisaster.c:995 msgid " --medium-info - print info about medium in drive\n" msgstr "" -#: src/dvdisaster.c:994 +#: src/dvdisaster.c:996 msgid " --no-bdr-defect-management - use bigger RS03 images for BD-R (see man page!)\n" msgstr "" -#: src/dvdisaster.c:995 +#: src/dvdisaster.c:997 msgid " --no-progress - do not print progress information\n" msgstr "" -#: src/dvdisaster.c:996 +#: src/dvdisaster.c:998 msgid " --old-ds-marker - mark missing sectors compatible with dvdisaster <= 0.70\n" msgstr "" -#: src/dvdisaster.c:997 +#: src/dvdisaster.c:999 msgid " --prefetch-sectors n - prefetch n sectors for RS03 encoding (uses ~nMiB)\n" msgstr "" -#: src/dvdisaster.c:998 +#: src/dvdisaster.c:1000 msgid " --raw-mode n - mode for raw reading CD media (20 or 21)\n" msgstr " --raw-mode n - режим для низкоуровневого чтения CD-носителей (20 или 21)\n" -#: src/dvdisaster.c:999 +#: src/dvdisaster.c:1001 msgid " --read-attempts n-m - attempts n up to m reads of a defective sector\n" msgstr " --read-attempts n-m - делается от n до m попыток чтения поврежденного сектора\n" -#: src/dvdisaster.c:1000 +#: src/dvdisaster.c:1002 msgid " --read-medium n - read the whole medium up to n times\n" msgstr " --read-medium n - читать весь носитель до n раз\n" -#: src/dvdisaster.c:1001 +#: src/dvdisaster.c:1003 msgid " --read-raw - performs read in raw mode if possible\n" msgstr " --read-raw - выполнять чтение в низкоуровневом режиме, если это возможно\n" -#: src/dvdisaster.c:1002 +#: src/dvdisaster.c:1004 msgid " --regtest - tweaks output for compatibility with regtests\n" msgstr "" -#: src/dvdisaster.c:1003 +#: src/dvdisaster.c:1005 msgid " --resource-file p - get resource file from given path\n" msgstr "" -#: src/dvdisaster.c:1004 +#: src/dvdisaster.c:1006 msgid " --speed-warning n - print warning if speed changes by more than n percent\n" msgstr " --speed-warning n - выводить предупреждение, если скорость изменяется больше, чем на n процентов\n" -#: src/dvdisaster.c:1005 +#: src/dvdisaster.c:1007 msgid " --spinup-delay n - wait n seconds for drive to spin up\n" msgstr " --spinup-delay n - выждать n секунд, пока привод не раскрутится\n" -#: src/dvdisaster.c:1009 -msgid "Debugging options (purposefully undocumented and possibly harmful)\n" -msgstr "Параметры отладки (намеренно недокументированные и, возможно, опасные)\n" - -#: src/dvdisaster.c:1010 -msgid " --debug - enables the following options\n" -msgstr " --debug - включает следующие параметры\n" - -#: src/dvdisaster.c:1011 -msgid " --permissive-medium-type - allow more media types, even theoretically unsupported ones\n" +#: src/dvdisaster.c:1008 +msgid " --version - print version and some configuration info\n" msgstr "" #: src/dvdisaster.c:1012 +msgid "Debugging options (purposefully undocumented and possibly harmful)\n" +msgstr "Параметры отладки (намеренно недокументированные и, возможно, опасные)\n" + +#: src/dvdisaster.c:1013 +msgid " --debug - enables the following options\n" +msgstr " --debug - включает следующие параметры\n" + +#: src/dvdisaster.c:1014 +msgid " --permissive-medium-type - allow more media types, even theoretically unsupported ones\n" +msgstr "" + +#: src/dvdisaster.c:1015 msgid " --byteset s,i,b - set byte i in sector s to b\n" msgstr " --byteset s,i,b - установить байт i в секторе s в значение b\n" -#: src/dvdisaster.c:1013 +#: src/dvdisaster.c:1016 msgid " --cdump - creates C #include file dumps instead of hexdumps\n" msgstr " --cdump - создает дампы в виде C #include-файлов вместо шестнадцатеричных дампов\n" -#: src/dvdisaster.c:1014 +#: src/dvdisaster.c:1017 msgid " --compare-images a,b - compare sectors in images a and b\n" msgstr " --compare-images a,b - сравнить сектора в образах a и b\n" -#: src/dvdisaster.c:1015 +#: src/dvdisaster.c:1018 msgid " --copy-sector a,n,b,m - copy sector n from image a to sector m in image b\n" msgstr " --copy-sector a,n,b,m - скопировать сектор n из образа a в сектор m образа b\n" -#: src/dvdisaster.c:1016 +#: src/dvdisaster.c:1019 msgid " --erase sector - erase the given sector\n" msgstr " --erase sector - стереть данный сектор\n" -#: src/dvdisaster.c:1017 +#: src/dvdisaster.c:1020 msgid " --erase n-m - erase sectors n - m, inclusively\n" msgstr " --erase n-m - стереть секторы n - m включительно\n" -#: src/dvdisaster.c:1018 +#: src/dvdisaster.c:1021 msgid " --examine-rs02 - force RS02 exhaustive search\n" msgstr "" -#: src/dvdisaster.c:1019 +#: src/dvdisaster.c:1022 msgid " --examine-rs03 - force RS03 exhaustive search\n" msgstr "" -#: src/dvdisaster.c:1020 +#: src/dvdisaster.c:1023 msgid " --fixed-speed-values - output fixed speed values for better output diffing\n" msgstr "" -#: src/dvdisaster.c:1021 +#: src/dvdisaster.c:1024 msgid " --ignore-rs03-header - ignore RS03 header when repairing (forcing a full search)\n" msgstr "" -#: src/dvdisaster.c:1022 +#: src/dvdisaster.c:1025 msgid " --marked-image n - create image with n marked random sectors\n" msgstr " --marked-image n - создать образ с n помеченными случайными секторами\n" -#: src/dvdisaster.c:1023 +#: src/dvdisaster.c:1026 msgid " --merge-images a,b merge image a with b (a receives sectors from b)\n" msgstr " --merge-images a,b объединить образ a с образом b (a получает секторы из b)\n" -#: src/dvdisaster.c:1024 +#: src/dvdisaster.c:1027 msgid " --random-errors e - seed image with (correctable) random errors\n" msgstr "" -#: src/dvdisaster.c:1025 +#: src/dvdisaster.c:1028 msgid " --random-image n - create image with n sectors of random numbers\n" msgstr " --random-image n - создать образ с n секторами со случайными номерами\n" -#: src/dvdisaster.c:1026 +#: src/dvdisaster.c:1029 msgid " --random-seed n - random seed for built-in random number generator\n" msgstr " --random-seed n - начальное значение для встроенного генератора случайных чисел\n" -#: src/dvdisaster.c:1027 +#: src/dvdisaster.c:1030 msgid " --raw-sector n - shows hexdump of the given raw sector from medium in drive\n" msgstr " --raw-sector n - показывает шестнадцатиричный дамп данного необработанного сектора с носителя в приводе\n" -#: src/dvdisaster.c:1028 +#: src/dvdisaster.c:1031 msgid " --read-sector n - shows hexdump of the given sector from medium in drive\n" msgstr " --read-sector n - показывает шестнадцатиричный дамп данного сектора с носителя в приводе\n" -#: src/dvdisaster.c:1029 +#: src/dvdisaster.c:1032 msgid " --screen-shot - useful for generating screen shots\n" msgstr " --screen-shot - useful for generating screen shots\n" -#: src/dvdisaster.c:1030 +#: src/dvdisaster.c:1033 msgid " --send-cdb arg - executes given cdb at drive; kills system if used wrong\n" msgstr " --send-cdb arg - выполнить cdb на приводе; при ошибке система снимается\n" -#: src/dvdisaster.c:1031 +#: src/dvdisaster.c:1034 msgid " --set-version - set program version for debugging purposes (dangerous!)\n" msgstr "" -#: src/dvdisaster.c:1032 +#: src/dvdisaster.c:1035 msgid " --show-header n - assumes given sector is a ecc header and prints it\n" msgstr "" -#: src/dvdisaster.c:1033 +#: src/dvdisaster.c:1036 msgid " --show-sector n - shows hexdump of the given sector in an image file\n" msgstr " --show-sector n - показывает содержимое данного сектора в шестнадцатеричном виде\n" -#: src/dvdisaster.c:1034 +#: src/dvdisaster.c:1037 msgid " --sim-cd image - simulate a SCSI-Level CD with contents supplied by the ISO image\n" msgstr "" -#: src/dvdisaster.c:1035 +#: src/dvdisaster.c:1038 #, c-format msgid " --sim-defects n - simulate n%% defective sectors on medium\n" msgstr " --sim-defects n - смоделировать n%% поврежденных секторов на носителе\n" -#: src/dvdisaster.c:1036 +#: src/dvdisaster.c:1039 msgid " --truncate n - truncates image to n sectors\n" msgstr " --truncate n - обрезает образ до n секторов\n" -#: src/dvdisaster.c:1037 +#: src/dvdisaster.c:1040 msgid "" " --zero-unreadable - replace the \"unreadable sector\" markers with zeros\n" "\n" @@ -809,46 +813,46 @@ msgstr "" " --zero-unreadable - заменить маркеры \"нечитаемый сектор\" нулями\n" "\n" -#: src/dvdisaster.c:1067 +#: src/dvdisaster.c:1070 msgid "Optical drive 52X FW 1.02" msgstr "Оптический привод 52X FW 1.02" -#: src/ecc-rs01.c:41 +#: src/ecc-rs01.c:43 msgid "Error correction file (RS01)" msgstr "Файл для исправления ошибок (RS01)" -#: src/ecc-rs01.c:42 +#: src/ecc-rs01.c:44 msgid "Classic Reed-Solomon method based on polynomial arithmetic" msgstr "Классический метод Рида-Соломона, основанный на полиномах" -#: src/ecc-rs02.c:42 +#: src/ecc-rs02.c:44 msgid "Augmented image (RS02)" msgstr "Расширенный образ (RS02)" -#: src/ecc-rs02.c:43 +#: src/ecc-rs02.c:45 msgid "Reed-Solomon method with improved tolerance for defective ecc data" msgstr "Метод Рида-Соломона с повышенной устойчивостью к поврежденным ecc-данным" -#: src/ecc-rs03.c:42 +#: src/ecc-rs03.c:44 msgid "Multithreaded RS codec (RS03)" msgstr "Многопоточный кодек РС (RS03)" -#: src/ecc-rs03.c:43 +#: src/ecc-rs03.c:45 msgid "Multithreaded Reed-Solomon codec for error correction files and augmented images" msgstr "Многопоточный кодек Рида-Соломона для файлов коррекции ошибок и расширенных образов" -#: src/endian.c:76 +#: src/endian.c:78 msgid "" "\n" "Contents of Ecc Header:\n" "\n" msgstr "" -#: src/help-dialogs.c:394 +#: src/help-dialogs.c:395 msgid "windowtitle|Log data" msgstr "Журнал" -#: src/help-dialogs.c:395 +#: src/help-dialogs.c:396 msgid "" "Log data\n" "Protocol of the current or previous action" @@ -856,11 +860,11 @@ msgstr "" "Журнал\n" "Протокол текущего или предыдущего действия" -#: src/help-dialogs.c:411 +#: src/help-dialogs.c:412 msgid "windowtitle|GNU General Public License" msgstr "GNU General Public License" -#: src/help-dialogs.c:412 +#: src/help-dialogs.c:413 msgid "" "GNU General Public License\n" "The license terms of dvdisaster." @@ -868,7 +872,7 @@ msgstr "" "GNU General Public License\n" "Лицензионные условия dvdisaster'а." -#: src/help-dialogs.c:502 +#: src/help-dialogs.c:503 #, c-format msgid "" "File\n" @@ -879,7 +883,7 @@ msgstr "" "%s\n" "отсутствует" -#: src/help-dialogs.c:512 +#: src/help-dialogs.c:513 #, c-format msgid "" "File\n" @@ -887,41 +891,23 @@ msgid "" "not accessible" msgstr "" -#: src/help-dialogs.c:524 +#: src/help-dialogs.c:525 msgid "" "\n" "<- Error: Text file truncated here" msgstr "" -#: src/help-dialogs.c:593 -msgid "windowtitle|Modifying dvdisaster" -msgstr "Изменение dvdisaster'а" - -#: src/help-dialogs.c:594 -msgid "" -"Modifying dvdisaster\n" -"Your changes are not ours." -msgstr "" -"Изменение dvdisaster'а\n" -"Ваши изменения не являются нашими." - -#: src/help-dialogs.c:734 +#: src/help-dialogs.c:724 msgid "windowtitle|About dvdisaster" msgstr "О программе dvdisaster" -#: src/help-dialogs.c:754 +#: src/help-dialogs.c:742 src/misc.c:219 msgid "" -"[Modified version]\n" -"Copyright 2019-2021 Stephane Lesimple\n" -"Copyright 2005-2017 Debian Optical Media Tools Team\n" -"Copyright 2004-2017 Carsten Gnoerlich" +"Copyright 2004-2017 Carsten Gnoerlich.\n" +"Copyright 2019-2021 The dvdisaster development team." msgstr "" -#: src/help-dialogs.c:760 src/misc.c:218 -msgid "Copyright 2004-2017 Carsten Gnoerlich" -msgstr "Copyright 2004-2017 Carsten Gnoerlich" - -#: src/help-dialogs.c:767 +#: src/help-dialogs.c:748 msgid "" "dvdisaster provides a margin of safety against data loss\n" "on optical media caused by aging or scratches.\n" @@ -933,7 +919,7 @@ msgstr "" "Он создает данные для исправления ошибок, которые используются\n" "для восстановления нечитаемых секторов, если диск впоследствии повреждается.\n" -#: src/help-dialogs.c:772 +#: src/help-dialogs.c:753 msgid "" "This software comes with absolutely no warranty.\n" "This is free software and you are welcome to redistribute it\n" @@ -945,26 +931,13 @@ msgstr "" "\n" "Русский перевод Игоря Горбунова <igor.gorbounov@gmail.com>\n" -#: src/help-dialogs.c:778 +#: src/help-dialogs.c:758 msgid "" "\n" -"This version is not the original. It has been patched\n" -"for Debian to support DVD-ROMs (with and without encryption),\n" -"and subsequently patched again to support a CLI-only build, among other things.\n" -"\n" -"Please do not bother the original authors of dvdisaster nor the Debian maintainer\n" -"but submit bugreports against [GitHub] instead.\n" +"e-mail: support@dvdisaster.org" msgstr "" -#: src/help-dialogs.c:794 -msgid "" -"\n" -"e-mail: carsten@dvdisaster.org -or- cgnoerlich@fsfe.org" -msgstr "" -"\n" -"e-mail: carsten@dvdisaster.org -или- cgnoerlich@fsfe.org" - -#: src/help-dialogs.c:796 +#: src/help-dialogs.c:765 msgid "" "\n" "NetBSD port: Sergey Svishchev <svs@ropnet.ru>" @@ -972,24 +945,24 @@ msgstr "" "\n" "Порт на NetBSD: Sergey Svishchev <svs@ropnet.ru>" -#: src/image.c:153 src/image.c:158 +#: src/image.c:156 src/image.c:161 #, c-format msgid "Image file %s not present or permission denied.\n" msgstr "" -#: src/image.c:168 src/image.c:173 +#: src/image.c:172 src/image.c:177 msgid "" "\n" "Error correction file type unknown.\n" msgstr "" -#: src/image.c:183 src/image.c:189 +#: src/image.c:188 src/image.c:194 msgid "" "\n" "Permission denied on ecc file (perhaps not writeable?).\n" msgstr "" -#: src/image.c:200 src/image.c:206 +#: src/image.c:206 src/image.c:212 msgid "" "\n" "No error correction file present.\n" @@ -1011,12 +984,12 @@ msgstr "" "\n" "Вы можете повторить эту операцию после того, как освободите место." -#: src/main-window.c:67 +#: src/main-window.c:70 #, c-format msgid "log: %s\n" msgstr "" -#: src/main-window.c:93 +#: src/main-window.c:97 msgid "" "The .iso image and error correction file\n" "must not be the same file!\n" @@ -1026,7 +999,7 @@ msgid "" "please leave the error correction file name blank." msgstr "" -#: src/main-window.c:103 +#: src/main-window.c:107 msgid "" "The error correction file type must not be \".iso\".\n" "\n" @@ -1035,204 +1008,204 @@ msgid "" "please leave the error correction file name blank." msgstr "" -#: src/main-window.c:173 +#: src/main-window.c:177 msgid "Internal error: No suitable method for repairing image." msgstr "" -#: src/main-window.c:280 +#: src/main-window.c:284 msgid "button|Read" msgstr "Читать" -#: src/main-window.c:283 +#: src/main-window.c:287 msgid "tooltip|Read Image" msgstr "Читать образ" -#: src/main-window.c:283 +#: src/main-window.c:288 msgid "Reads an optical disc image into a file (or tries to complete an existing image file)." msgstr "Считывание образа CD/DVD в файл (или попытка завершить существующий файл образа)." -#: src/main-window.c:297 +#: src/main-window.c:302 msgid "button|Create" msgstr "Создать" -#: src/main-window.c:300 +#: src/main-window.c:305 msgid "tooltip|Create error correction data" msgstr "Создать данные для исправления ошибок" -#: src/main-window.c:300 +#: src/main-window.c:306 msgid "Creates error correction data. Requires an image file." msgstr "Создание данных для исправления ошибок. Требуется файл образа." -#: src/main-window.c:304 +#: src/main-window.c:310 msgid "button|Scan" msgstr "Проверить" -#: src/main-window.c:307 +#: src/main-window.c:313 msgid "tooltip|Scan medium" msgstr "Проверить носитель" -#: src/main-window.c:307 +#: src/main-window.c:314 msgid "Scans medium for unreadable sectors." msgstr "Проверяет носитель на нечитаемые секторы." -#: src/main-window.c:311 +#: src/main-window.c:318 msgid "button|Fix" msgstr "Исправить" -#: src/main-window.c:314 +#: src/main-window.c:321 msgid "tooltip|Repair image" msgstr "Исправить образ" -#: src/main-window.c:314 +#: src/main-window.c:322 msgid "Repairs an image. Requires an image file and error correction data." msgstr "Исправление образа. Требуется файл образа и данные для исправления ошибок." -#: src/main-window.c:318 +#: src/main-window.c:326 msgid "button|Verify" msgstr "Сравнить" -#: src/main-window.c:321 +#: src/main-window.c:329 msgid "tooltip|Consistency check" msgstr "Проверка целостности" -#: src/main-window.c:321 +#: src/main-window.c:330 msgid "Tests consistency of error correction data and image file." msgstr "Проверяет соответствие данных для исправления ошибок и файла образа." -#: src/main-window.c:325 +#: src/main-window.c:334 msgid "button|Strip" msgstr "" -#: src/main-window.c:328 +#: src/main-window.c:337 msgid "tooltip|Strip ECC" msgstr "" -#: src/main-window.c:328 +#: src/main-window.c:338 msgid "Strip ECC data from an augmented image." msgstr "" -#: src/main-window.c:332 +#: src/main-window.c:342 msgid "button|Stop" msgstr "Прервать" -#: src/main-window.c:335 +#: src/main-window.c:345 msgid "tooltip|Abort action" msgstr "Прервать работу" -#: src/main-window.c:335 +#: src/main-window.c:346 msgid "Aborts an ongoing action." msgstr "Прерывание текущей работы." -#: src/main-window.c:492 +#: src/main-window.c:503 msgid "tooltip|Protocol for current action" msgstr "Журнал текущей работы" -#: src/main-window.c:493 +#: src/main-window.c:504 msgid "Displays additional information created during the current or last action." msgstr "Отображение дополнительной информации о текущей или последней работе." -#: src/main-window.c:502 +#: src/main-window.c:513 msgid "View log" msgstr "Просмотреть журнал" -#: src/medium-info.c:57 +#: src/medium-info.c:58 msgid "Please wait..." msgstr "" -#: src/medium-info.c:118 +#: src/medium-info.c:112 msgid "Medium not present" msgstr "Носителя нет" -#: src/medium-info.c:126 src/medium-info.c:488 +#: src/medium-info.c:119 src/medium-info.c:400 msgid "Physical medium info" msgstr "Информация о физическом носителе" -#: src/medium-info.c:172 src/medium-info.c:178 +#: src/medium-info.c:141 src/medium-info.c:147 msgid "empty" msgstr "пустой" -#: src/medium-info.c:173 +#: src/medium-info.c:142 msgid "appendable" msgstr "расширяемый" -#: src/medium-info.c:174 +#: src/medium-info.c:143 msgid "finalized" msgstr "законченный" -#: src/medium-info.c:175 src/scsi-layer.c:100 +#: src/medium-info.c:144 src/scsi-layer.c:102 msgid "unknown" msgstr "неизвестно" -#: src/medium-info.c:179 +#: src/medium-info.c:148 msgid "incomplete" msgstr "неполный" -#: src/medium-info.c:180 +#: src/medium-info.c:149 msgid "damaged" msgstr "поврежденный" -#: src/medium-info.c:181 src/rs02-verify.c:695 src/rs02-verify.c:913 -#: src/rs02-verify.c:914 src/rs02-verify.c:915 src/rs03-verify.c:1340 -#: src/rs03-verify.c:1342 src/rs03-verify.c:1343 +#: src/medium-info.c:150 src/rs02-verify.c:673 src/rs02-verify.c:891 +#: src/rs02-verify.c:892 src/rs02-verify.c:893 src/rs03-verify.c:1259 +#: src/rs03-verify.c:1262 src/rs03-verify.c:1265 msgid "complete" msgstr "завершена" -#: src/medium-info.c:192 +#: src/medium-info.c:155 #, c-format msgid "%s (%d sessions; last session %s)\n" msgstr "%s (%d сессий; последняя сессия %s)\n" -#: src/medium-info.c:204 +#: src/medium-info.c:161 #, c-format msgid "% sectors (% MiB), from READ CAPACITY\n" msgstr "% секторов (% МБ), из READ CAPACITY\n" -#: src/medium-info.c:213 +#: src/medium-info.c:164 #, c-format msgid "% sectors (% MiB), from DVD structure\n" msgstr "% секторов (% МБ), из структуры DVD\n" -#: src/medium-info.c:223 src/medium-info.c:297 +#: src/medium-info.c:168 #, c-format msgid "% sectors (% MiB)\n" msgstr "% секторов (% МБ)\n" -#: src/medium-info.c:235 src/medium-info.c:561 +#: src/medium-info.c:180 src/medium-info.c:473 msgid "Filesystem info" msgstr "Информация о файловой системе" -#: src/medium-info.c:253 +#: src/medium-info.c:186 #, c-format msgid "%d sectors (% MiB)\n" msgstr "%d секторов (% МБ)\n" -#: src/medium-info.c:280 src/medium-info.c:594 +#: src/medium-info.c:207 src/medium-info.c:506 msgid "Augmented image info" msgstr "Информация о расширенном образе" -#: src/medium-info.c:287 src/medium-info.c:289 +#: src/medium-info.c:213 #, c-format msgid "%s, %d roots, %4.1f%% redundancy.\n" msgstr "%s, %d корней, избыточность %4.1f%%.\n" -#: src/medium-info.c:295 +#: src/medium-info.c:217 #, c-format msgid "% sectors (% MiB)\n" msgstr "" -#: src/medium-info.c:319 +#: src/medium-info.c:229 msgid "yes" msgstr "" -#: src/medium-info.c:323 +#: src/medium-info.c:234 msgid "no" msgstr "" -#: src/medium-info.c:419 +#: src/medium-info.c:331 msgid "windowtitle|Medium info" msgstr "Информация о носителе" -#: src/medium-info.c:434 +#: src/medium-info.c:346 msgid "" "Medium info\n" "Properties of the currently inserted medium" @@ -1240,91 +1213,91 @@ msgstr "" "Информация о носителе\n" "Свойства вставленного носителя" -#: src/medium-info.c:446 +#: src/medium-info.c:358 msgid "Drive selection" msgstr "Выбор привода" -#: src/medium-info.c:453 +#: src/medium-info.c:365 msgid "Drive:" msgstr "Привод:" -#: src/medium-info.c:474 src/menubar.c:493 +#: src/medium-info.c:386 src/menubar.c:496 msgid "No drives found" msgstr "Нет приводов" -#: src/medium-info.c:479 +#: src/medium-info.c:391 msgid " " msgstr " " -#: src/medium-info.c:482 +#: src/medium-info.c:394 msgid "Update medium info" msgstr "Обновить информацию о носителе" -#: src/medium-info.c:495 +#: src/medium-info.c:407 msgid "Medium type:" msgstr "Тип носителя:" -#: src/medium-info.c:503 +#: src/medium-info.c:415 msgid "Book type:" msgstr "Формат (book type):" -#: src/medium-info.c:511 src/scsi-layer.c:2747 +#: src/medium-info.c:423 src/scsi-layer.c:2741 msgid "Manuf.-ID:" msgstr "Изгот.-ID:" -#: src/medium-info.c:519 +#: src/medium-info.c:431 msgid "Drive profile:" msgstr "Профиль привода:" -#: src/medium-info.c:527 +#: src/medium-info.c:439 msgid "Disc status:" msgstr "Состояние диска:" -#: src/medium-info.c:535 +#: src/medium-info.c:447 msgid "Used sectors:" msgstr "Использовано секторов:" -#: src/medium-info.c:551 +#: src/medium-info.c:463 msgid "Blank capacity:" msgstr "Емкость пустого носителя:" -#: src/medium-info.c:568 +#: src/medium-info.c:480 msgid "Medium label:" msgstr "Метка носителя:" -#: src/medium-info.c:576 +#: src/medium-info.c:488 msgid "File system size:" msgstr "Размер файловой системы:" -#: src/medium-info.c:584 +#: src/medium-info.c:496 msgid "Creation time:" msgstr "Время создания:" -#: src/medium-info.c:601 +#: src/medium-info.c:513 msgid "Error correction data:" msgstr "Данные для исправления ошибок:" -#: src/medium-info.c:609 +#: src/medium-info.c:521 msgid "Augmented image size:" msgstr "Размер расширенного образа:" -#: src/medium-info.c:617 +#: src/medium-info.c:529 msgid "dvdisaster version:" msgstr "Версия dvdisaster:" -#: src/medium-info.c:625 +#: src/medium-info.c:537 msgid "Exhaustive search:" msgstr "" -#: src/medium-info.c:632 +#: src/medium-info.c:544 msgid "Run exhaustive search" msgstr "" -#: src/menubar.c:131 +#: src/menubar.c:133 msgid "windowtitle|Change log" msgstr "Журнал изменений" -#: src/menubar.c:132 +#: src/menubar.c:134 msgid "" "Change log\n" "Major differences from earlier program versions." @@ -1332,11 +1305,11 @@ msgstr "" "Журнал изменений\n" "Основные отличия от предыдущих версий программы." -#: src/menubar.c:138 +#: src/menubar.c:140 msgid "windowtitle|Credits" msgstr "Благодарности" -#: src/menubar.c:139 +#: src/menubar.c:141 msgid "" "Credits\n" "Thanks go out to..." @@ -1344,11 +1317,11 @@ msgstr "" "Благодарности\n" "Большое спасибо..." -#: src/menubar.c:145 +#: src/menubar.c:147 msgid "windowtitle|To do list" msgstr "Список задач" -#: src/menubar.c:146 +#: src/menubar.c:148 msgid "" "To do list\n" "A sneak preview of coming features ... perhaps ;-)" @@ -1356,139 +1329,139 @@ msgstr "" "Список задач\n" "Предварительный обзор будущих возможностей ... вероятно ;-)" -#: src/menubar.c:213 +#: src/menubar.c:215 msgid "menu|Select Image" msgstr "Выбрать образ" -#: src/menubar.c:214 +#: src/menubar.c:216 msgid "menu|Select Parity File" msgstr "Выбрать файл для исправления ошибок" -#: src/menubar.c:215 +#: src/menubar.c:217 msgid "menu|Quit" msgstr "Выход" -#: src/menubar.c:217 +#: src/menubar.c:219 msgid "menu|File" msgstr "Файл" -#: src/menubar.c:224 +#: src/menubar.c:226 msgid "menu|Medium info" msgstr "Информация о носителе" -#: src/menubar.c:229 +#: src/menubar.c:231 msgid "menu|Raw sector editor" msgstr "Редактор необработанных секторов" -#: src/menubar.c:231 +#: src/menubar.c:233 msgid "menu|Tools" msgstr "Инструменты" -#: src/menubar.c:239 +#: src/menubar.c:241 msgid "menu|About" msgstr "О программе" -#: src/menubar.c:240 +#: src/menubar.c:242 msgid "menu|User manual" msgstr "Руководство пользователя" -#: src/menubar.c:244 +#: src/menubar.c:246 msgid "menu|Credits" msgstr "Благодарности" -#: src/menubar.c:245 +#: src/menubar.c:247 msgid "menu|Licence (GPL)" msgstr "Лицензия (GPL)" -#: src/menubar.c:249 +#: src/menubar.c:251 msgid "menu|Change log" msgstr "Журнал изменений" -#: src/menubar.c:250 +#: src/menubar.c:252 msgid "menu|To do list" msgstr "Список задач" -#: src/menubar.c:252 +#: src/menubar.c:254 msgid "menu|Help" msgstr "Справка" -#: src/menubar.c:336 +#: src/menubar.c:338 msgid "windowtitle|Image file selection" msgstr "Выбор файла образа" -#: src/menubar.c:373 +#: src/menubar.c:375 msgid "windowtitle|Error correction file selection" msgstr "Выбор файла для исправления ошибок" -#: src/menubar.c:475 src/menubar.c:499 +#: src/menubar.c:477 src/menubar.c:502 msgid "tooltip|Drive selection" msgstr "Выбор привода" -#: src/menubar.c:475 +#: src/menubar.c:478 msgid "Use the nearby drop-down list to select the input drive." msgstr "Выберите привод для чтения из расположенного рядом выпадающего списка." -#: src/menubar.c:499 +#: src/menubar.c:503 msgid "Selects the input drive for reading images." msgstr "Выбор привода для чтения образов." -#: src/menubar.c:529 +#: src/menubar.c:533 msgid "tooltip|Image file selection" msgstr "Выбор файла образа" -#: src/menubar.c:529 +#: src/menubar.c:534 msgid "Selects a new image file." msgstr "Выбор нового файла образа." -#: src/menubar.c:530 +#: src/menubar.c:536 msgid "tooltip|Current image file" msgstr "Текущий файл образа" -#: src/menubar.c:530 +#: src/menubar.c:537 msgid "Shows the name of the current image file." msgstr "Имя текущего файла образа." -#: src/menubar.c:554 +#: src/menubar.c:562 msgid "tooltip|Error correction file selection" msgstr "Выбор файла для исправления ошибок" -#: src/menubar.c:554 +#: src/menubar.c:563 msgid "Selects a new error correction file." msgstr "Выбор нового файла для исправления ошибок." -#: src/menubar.c:555 +#: src/menubar.c:565 msgid "tooltip|Current error correction file" msgstr "Текущий файл для исправления ошибок" -#: src/menubar.c:555 +#: src/menubar.c:566 msgid "Shows the name of the current error correction file." msgstr "Имя текущего файла для исправления ошибок." -#: src/menubar.c:566 +#: src/menubar.c:577 msgid "tooltip|Preferences" msgstr "Настройки" -#: src/menubar.c:566 +#: src/menubar.c:578 msgid "Customize settings for creating images, error correction files and other stuff." msgstr "Настройки для создания образов, файлов для исправления ошибок и т.п." -#: src/menubar.c:576 +#: src/menubar.c:588 msgid "tooltip|User manual" msgstr "Руководство пользователя" -#: src/menubar.c:576 +#: src/menubar.c:589 msgid "Displays the user manual (external PDF viewer required)." msgstr "" -#: src/menubar.c:586 +#: src/menubar.c:599 msgid "tooltip|Quit" msgstr "Выход" -#: src/menubar.c:586 +#: src/menubar.c:599 msgid "Quit dvdisaster" msgstr "Выход из dvdisaster" -#: src/method.c:55 +#: src/method.c:57 msgid "" "\n" "List of available methods:\n" @@ -1498,7 +1471,7 @@ msgstr "" "Список имеющихся методов:\n" "\n" -#: src/misc.c:224 +#: src/misc.c:225 msgid "" "This software comes with ABSOLUTELY NO WARRANTY. This\n" "is free software and you are welcome to redistribute it\n" @@ -1512,11 +1485,11 @@ msgstr "" "\n" "Русский перевод Игоря Горбунова \n" -#: src/misc.c:550 +#: src/misc.c:535 msgid "Warning" msgstr "Внимание" -#: src/misc.c:633 src/misc.c:643 +#: src/misc.c:610 src/misc.c:619 msgid "" "\n" "*\n" @@ -1528,21 +1501,40 @@ msgstr "" "* dvdisaster - невозможно продолжить:\n" "*\n" -#: src/misc.c:1307 -msgid "Do not ask again" +#: src/misc.c:758 +msgid "Strip ECC aborted" msgstr "" -#: src/misc.c:1331 +#: src/misc.c:766 +msgid "Image is not augmented (no dvdisaster signature found)." +msgstr "" + +#: src/misc.c:772 +#, c-format +msgid "Invalid end data sector (%), aborting" +msgstr "" + +#: src/misc.c:781 #, c-format msgid "" -"Image file already exists and does not match the medium:\n" -"\n" -"%s\n" -"\n" -"The existing image file will be deleted." +"We're about to truncate the image from % sectors (% MiB)\n" +"to % sectors (% MiB), removing any dvdisaster-added ECC data.\n" +"This will restore the image to its pre-augmented original size." msgstr "" -#: src/misc.c:1353 +#: src/misc.c:788 +msgid "Aborted on user request" +msgstr "" + +#: src/misc.c:797 +msgid "Image successfully truncated back to its original size.\n" +msgstr "" + +#: src/misc.c:801 +msgid "Image successfully truncated" +msgstr "" + +#: src/misc-gui.c:241 #, c-format msgid "" "The error correction file is already present:\n" @@ -1552,92 +1544,73 @@ msgid "" "Overwrite it?" msgstr "" -#: src/misc.c:1388 -msgid "Strip ECC aborted" +#: src/misc-gui.c:639 +msgid "Do not ask again" msgstr "" -#: src/misc.c:1396 -msgid "Image is not augmented (no dvdisaster signature found)." -msgstr "" - -#: src/misc.c:1402 -#, c-format -msgid "Invalid end data sector (%), aborting" -msgstr "" - -#: src/misc.c:1411 +#: src/misc-gui.c:660 #, c-format msgid "" -"We're about to truncate the image from % sectors (% MiB)\n" -"to % sectors (% MiB), removing any dvdisaster-added ECC data.\n" -"This will restore the image to its pre-augmented original size." +"Image file already exists and does not match the medium:\n" +"\n" +"%s\n" +"\n" +"The existing image file will be deleted." msgstr "" -#: src/misc.c:1418 -msgid "Aborted on user request" -msgstr "" - -#: src/misc.c:1427 -msgid "Image successfully truncated back to its original size.\n" -msgstr "" - -#: src/misc.c:1431 -msgid "Image successfully truncated" -msgstr "" - -#: src/preferences.c:452 +#: src/preferences.c:454 msgid "Switched to the linear reading strategy." msgstr "Переход на стратегию линейного чтения." -#: src/preferences.c:838 +#: src/preferences.c:840 msgid "Color selection" msgstr "Выбор цвета" -#: src/preferences.c:1059 +#: src/preferences.c:1061 msgid "Disabled automatic error correction file generation." msgstr "Выключено автоматическое создание файла для исправления ошибок." -#: src/preferences.c:1222 src/preferences.c:2362 src/preferences.c:2371 +#: src/preferences.c:1224 src/preferences.c:2376 src/preferences.c:2385 msgid "Raw sector caching" msgstr "Хранение необработанных секторов" -#: src/preferences.c:1294 +#: src/preferences.c:1296 msgid "Log file" msgstr "Файл журнала" -#: src/preferences.c:1316 +#: src/preferences.c:1318 msgid "Delete the log file?" msgstr "Удалить файл журнала?" -#: src/preferences.c:1410 +#: src/preferences.c:1412 msgid "Preferences" msgstr "Настройки" -#: src/preferences.c:1440 src/rs03-preferences.c:514 +#: src/preferences.c:1442 src/rs03-preferences.c:516 msgid "Image" msgstr "Образ" -#: src/preferences.c:1444 +#: src/preferences.c:1446 msgid "Image creation" msgstr "Создание образа" -#: src/preferences.c:1453 +#: src/preferences.c:1455 msgid "Reading strategy" msgstr "Стратегия чтения" -#: src/preferences.c:1453 +#: src/preferences.c:1456 msgid "Reading strategy: " msgstr "Стратегия чтения: " -#: src/preferences.c:1468 +#: src/preferences.c:1471 msgid "Linear" msgstr "Линейная" -#: src/preferences.c:1476 +#: src/preferences.c:1479 msgid "Adaptive (for defective media)" msgstr "Адаптивная (для поврежденного носителя)" -#: src/preferences.c:1488 +#: src/preferences.c:1491 msgid "" "Reading strategy\n" "\n" @@ -1663,19 +1636,19 @@ msgstr "" "\n" "Применение адаптивной стратегии без данных для исправления ошибок возможно, но в данном случае рекомендуется использовать линейное чтение." -#: src/preferences.c:1500 +#: src/preferences.c:1503 msgid "Reading range" msgstr "Диапазон чтения" -#: src/preferences.c:1500 +#: src/preferences.c:1504 msgid "Read/Scan from sector" msgstr "Читать/Проверять с сектора" -#: src/preferences.c:1526 +#: src/preferences.c:1530 msgid "to sector" msgstr "по сектор" -#: src/preferences.c:1544 +#: src/preferences.c:1548 msgid "" "Reading range\n" "\n" @@ -1693,19 +1666,19 @@ msgstr "" "\n" "Эти настройки действуют только в текущей сессии и не будут сохранены." -#: src/preferences.c:1554 +#: src/preferences.c:1558 msgid "Error correction data recognization" msgstr "" -#: src/preferences.c:1563 +#: src/preferences.c:1567 msgid "Exhaustive RS02 header search" msgstr "" -#: src/preferences.c:1563 +#: src/preferences.c:1568 msgid "Perform exhaustive search for RS02 headers" msgstr "" -#: src/preferences.c:1584 +#: src/preferences.c:1589 msgid "" "Exhaustive RS02 header search\n" "\n" @@ -1716,15 +1689,15 @@ msgid "" "Leave this option off when you are processing media or images which are not augmented with RS02 data. Otherwise you will waste a lot of time searching for the RS02 signatures and increase wear on the drive." msgstr "" -#: src/preferences.c:1603 +#: src/preferences.c:1608 msgid "Recover RS03 signatures" msgstr "" -#: src/preferences.c:1603 +#: src/preferences.c:1609 msgid "Find and recover RS03 signatures" msgstr "" -#: src/preferences.c:1624 +#: src/preferences.c:1630 msgid "" "Exhaustive RS03 header search\n" "\n" @@ -1735,19 +1708,19 @@ msgid "" "Leave this option off when you are processing media or images which are not augmented with RS03 data. Otherwise you will waste a lot of time searching for the RS03 signatures and increase wear on the drive." msgstr "" -#: src/preferences.c:1643 +#: src/preferences.c:1649 msgid "Image properties" msgstr "Свойства образа" -#: src/preferences.c:1652 +#: src/preferences.c:1658 msgid "Ignore ISO/UDF meta data" msgstr "" -#: src/preferences.c:1652 +#: src/preferences.c:1659 msgid "Ignore image size recorded in ISO/UDF file system" msgstr "" -#: src/preferences.c:1673 +#: src/preferences.c:1680 msgid "" "Ignore image size recorded in ISO/UDF filesystem\n" "\n" @@ -1760,15 +1733,15 @@ msgid "" "Do not blindly turn this option on as it will most likely create sub optimal or corrupted ISO images, especially if you plan to use the image for error correction data generation." msgstr "" -#: src/preferences.c:1692 +#: src/preferences.c:1699 msgid "DAO mode" msgstr "Режим DAO" -#: src/preferences.c:1692 +#: src/preferences.c:1700 msgid "Assume image to be written in DAO mode (don't truncate)" msgstr "Образ записывать в режиме DAO (не урезать)" -#: src/preferences.c:1713 +#: src/preferences.c:1721 msgid "" "Assume DAO mode\n" "\n" @@ -1786,19 +1759,19 @@ msgstr "" "\n" "Совет: Чтобы избежать этих проблем, рекомендуется использовать режим \"DAO / Диск целиком\" (называемый также иногда \"SAO / Сессия целиком\") для записи односессионного носителя." -#: src/preferences.c:1728 +#: src/preferences.c:1736 msgid "Image format" msgstr "Формат образа" -#: src/preferences.c:1737 +#: src/preferences.c:1745 msgid "Missing sector tags" msgstr "Теги недостающего сектора" -#: src/preferences.c:1737 +#: src/preferences.c:1746 msgid "Use old style missing sector tags (not recommended)" msgstr "" -#: src/preferences.c:1758 +#: src/preferences.c:1767 msgid "" "Missing sector tagging\n" "\n" @@ -1807,15 +1780,15 @@ msgid "" "N.b.: dvdisaster >= 0.72 will automatically recognize both tag formats when reading images; setting this value only affects the creation of new images." msgstr "" -#: src/preferences.c:1778 +#: src/preferences.c:1787 msgid "Filling of unreadable sectors" msgstr "Заполнение нечитаемых секторов" -#: src/preferences.c:1779 +#: src/preferences.c:1788 msgid "Fill unreadable sectors with byte:" msgstr "Заполнять нечитаемые секторы байтом:" -#: src/preferences.c:1819 +#: src/preferences.c:1828 msgid "" "Filling of unreadable sectors\n" "\n" @@ -1827,31 +1800,31 @@ msgstr "" "dvdisaster помечает нечитаемые сектора, заполняя их специальной комбинацией, которая очень маловероятна для неповрежденного носителя.\n" "В других программах восстановления данных принято заполнять нечитаемые сектора определенной байтовой величиной. Для обеспечения взаимодействия с такими программами можно указать байтовую величину, которую они используют:\n" -#: src/preferences.c:1828 +#: src/preferences.c:1837 msgid "0xb0 (176 decimal): for compatibility with h2cdimage published by \"c't\", a German periodical.\n" msgstr "0xb0 (176 десятичное): для совместимости с h2cdimage, опубликованной немецким журналом \"c't\".\n" -#: src/preferences.c:1832 +#: src/preferences.c:1841 msgid "Note: Using zero filling (0x00, decimal 0) is highly discouraged. Most media contain regular zero filled sectors which can not be told apart from unreadable sectors if zero filling is used." msgstr "Примечание: Заполнение нулями (0x00, десятичное 0) крайне не рекомендуется. Большинство носителей содержат нормальные сектора, заполненные нулями, которые невозможно отличить от нечитаемых секторов, если пользоваться нулевым заполнением." -#: src/preferences.c:1839 +#: src/preferences.c:1848 msgid "Drive" msgstr "Привод" -#: src/preferences.c:1843 src/preferences.c:1846 +#: src/preferences.c:1852 src/preferences.c:1855 msgid "Drive initialisation" msgstr "Подготовка привода" -#: src/preferences.c:1847 +#: src/preferences.c:1856 msgid "Wait" msgstr "Ждать" -#: src/preferences.c:1850 +#: src/preferences.c:1859 msgid "seconds for drive to spin up" msgstr "секунд для раскручивания привода" -#: src/preferences.c:1880 +#: src/preferences.c:1889 msgid "" "Drive initialisation\n" "\n" @@ -1861,23 +1834,23 @@ msgstr "" "\n" "Ожидает заданное количество секунд, чтобы дать приводу раскрутиться. Это позволяет избежать скачков скорости в начале кривой чтения." -#: src/preferences.c:1886 +#: src/preferences.c:1895 msgid "Raw reading parameters" msgstr "Параметры низкоуровневого чтения" -#: src/preferences.c:1895 +#: src/preferences.c:1904 msgid "Raw reading mode" msgstr "Режим низкоуровневого чтения" -#: src/preferences.c:1895 +#: src/preferences.c:1905 msgid "Raw reading mode: " msgstr "Режим низкоуровневого чтения:" -#: src/preferences.c:1927 +#: src/preferences.c:1937 msgid "other:" msgstr "другой:" -#: src/preferences.c:1961 +#: src/preferences.c:1971 msgid "" "Raw reading mode\n" "\n" @@ -1901,19 +1874,19 @@ msgstr "" "\n" "0x01 Некоторые приводы делают то, что нужно, когда им передается это значение, хотя это и не имеет смысла в соответствии со спецификациями на SCSI. Попробуйте ввести это значение в поле \"другой\", если другие варианты не работают. Дополнительную информацию по \"mode page 01h\" можно найти в главе 6 спецификации на MMC3 или на более позднюю модификацию MMC." -#: src/preferences.c:1987 +#: src/preferences.c:1997 msgid "Internal read attempts" msgstr "Попытки внутреннего чтения" -#: src/preferences.c:1988 +#: src/preferences.c:1998 msgid "Reread defective sectors" msgstr "Перечитать поврежденные сектора" -#: src/preferences.c:1991 +#: src/preferences.c:2001 msgid "times" msgstr "раз" -#: src/preferences.c:2022 +#: src/preferences.c:2032 msgid "" "Internal read attempts\n" "\n" @@ -1929,15 +1902,15 @@ msgstr "" "Снижение этого значение до 0 или 1 может ускорить обработку поврежденного носителя и снизить износ привода; однако, большинство приводов просто проигнорируют то, что Вы введете здесь.\n" "Используйте значение -1, чтобы оставить привод при его стандартных настройках." -#: src/preferences.c:2035 src/preferences.c:2038 +#: src/preferences.c:2045 src/preferences.c:2048 msgid "Fatal error handling" msgstr "Обработка неустранимых ошибок" -#: src/preferences.c:2039 +#: src/preferences.c:2049 msgid "Ignore fatal errors" msgstr "Игнорировать неустранимые ошибки" -#: src/preferences.c:2066 +#: src/preferences.c:2076 msgid "" "Fatal error handling\n" "\n" @@ -1949,15 +1922,15 @@ msgstr "" "По умолчанию dvdisaster прекращает чтение, когда привод сообщает о неустранимой ошибке. Это предотвращает дальнейшие бесплодные попытки чтения и возможное повреждение привода.\n" "Однако некоторые приводы выдают необоснованные сообщения о неустранимых ошибках. Для таких приводов игнорирование неустранимых ошибок может быть необходимо для выполнения непрерывного чтения поврежденного носителя." -#: src/preferences.c:2076 +#: src/preferences.c:2086 msgid "Media ejection" msgstr "Извлечь носитель" -#: src/preferences.c:2079 src/preferences.c:2080 +#: src/preferences.c:2089 src/preferences.c:2090 msgid "Eject medium after successful read" msgstr "Извлечь носитель после успешного чтения" -#: src/preferences.c:2107 +#: src/preferences.c:2117 msgid "" "Medium ejection\n" "\n" @@ -1971,23 +1944,23 @@ msgstr "" "\n" "Имейте в виду, что рабочая среда может не давать другим приложениям извлекать носитель. В этом случае извлекайте носитель с помощью пользовательского интерфейса рабочего стола." -#: src/preferences.c:2117 +#: src/preferences.c:2127 msgid "Read attempts" msgstr "Попытки чтения" -#: src/preferences.c:2121 +#: src/preferences.c:2131 msgid "Sector read errors" msgstr "Ошибки чтения сектора" -#: src/preferences.c:2130 +#: src/preferences.c:2140 msgid "Raw reading" msgstr "Низкоуровневое чтение" -#: src/preferences.c:2130 +#: src/preferences.c:2141 msgid "Read and analyze raw sectors" msgstr "Чтение и анализ необработанных секторов" -#: src/preferences.c:2152 +#: src/preferences.c:2163 msgid "" "Raw reading (affects CD media only)\n" "\n" @@ -2015,17 +1988,17 @@ msgstr "" "- линейное чтение настроено на пропуск 0 секторов после ошибки чтения.\n" "Для кэширования необработанных секторов требуется еще и активировать соответствующий параметр." -#: src/preferences.c:2169 +#: src/preferences.c:2180 msgid "Minimum number of reading attempts" msgstr "Минимальное число попыток чтения" -#: src/preferences.c:2171 src/preferences.c:2172 src/preferences.c:2177 -#: src/preferences.c:2178 +#: src/preferences.c:2183 src/preferences.c:2184 src/preferences.c:2189 +#: src/preferences.c:2190 #, c-format msgid "Min. %d reading attempts per sector" msgstr "Мин. %d попыток чтения на сектор" -#: src/preferences.c:2199 +#: src/preferences.c:2211 msgid "" "Minimum number of reading attempts\n" "\n" @@ -2039,17 +2012,17 @@ msgstr "" "\n" "Увеличение числа попыток чтения может улучшить восстановление данных на носителях, находящихся на границе читаемости, а также увеличит время обработки и механический износ привода." -#: src/preferences.c:2208 +#: src/preferences.c:2220 msgid "Maximum number of reading attempts" msgstr "Максимальное число попыток чтения" -#: src/preferences.c:2210 src/preferences.c:2211 src/preferences.c:2216 -#: src/preferences.c:2217 +#: src/preferences.c:2223 src/preferences.c:2224 src/preferences.c:2229 +#: src/preferences.c:2230 #, c-format msgid "Max. %d reading attempts per sector" msgstr "Макс. %d попыток чтения на сектор" -#: src/preferences.c:2238 +#: src/preferences.c:2251 msgid "" "Maximum number of reading attempts\n" "\n" @@ -2063,23 +2036,23 @@ msgstr "" "\n" "Решение сделать больше попыток чтения зависит от качества собранных к данному моменту данных, что, в свою очередь, зависит от возможностей привода CD/DVD и операционной системы. Поэтому, в зависимости от Вашей конфигурации, dvdisaster может использовать или не использовать максимальное значение." -#: src/preferences.c:2252 +#: src/preferences.c:2265 msgid "Treatment of unreadable areas" msgstr "Обработка нечитаемых обласетй" -#: src/preferences.c:2254 src/preferences.c:2256 src/preferences.c:2257 -#: src/preferences.c:2265 +#: src/preferences.c:2268 src/preferences.c:2270 src/preferences.c:2271 +#: src/preferences.c:2279 #, c-format msgid "Skip %d sectors after read error" msgstr "Пропустить %d секторов после ошибки чтения" -#: src/preferences.c:2255 src/preferences.c:2260 src/preferences.c:2261 -#: src/preferences.c:2266 +#: src/preferences.c:2269 src/preferences.c:2274 src/preferences.c:2275 +#: src/preferences.c:2280 #, c-format msgid "Stop reading when unreadable intervals < %d" msgstr "Прекращать чтение, когда нечитаемые интервалы < %d" -#: src/preferences.c:2292 +#: src/preferences.c:2306 msgid "" "Treatment of unreadable areas\n" "\n" @@ -2093,15 +2066,15 @@ msgstr "" "\n" "Как это влияет на линейную стратегию чтения:" -#: src/preferences.c:2299 +#: src/preferences.c:2313 msgid "Skipping a large number of sectors (e.g. 1024) gives a quick overview of damaged areas, but will usually not collect enough data for repairing the image." msgstr "Пропуск большого числа секторов (например, 1024) дает быстрый обзор поврежденных областей, но обычно не собирает достаточно данных для исправления образа." -#: src/preferences.c:2303 +#: src/preferences.c:2317 msgid "Smaller values like 16, 32 or 64 are a good trade-off: The processing time will beconsiderably shortened, but still enough data for repairing the image is collected.\n" msgstr "Меньшие значения, такие как 16, 32 или 64, являются хорошим компромиссом: время обработки значительно сокращается, но собирается еще достаточно данных для исправления образа.\n" -#: src/preferences.c:2307 +#: src/preferences.c:2321 msgid "" "The adaptive reading strategy uses this setting only if no error correction data is available. In that case the reading process will stop when no unread areas larger than the selected size remain. Values smaller than 128 are not recommended as they cause the drive to carry out lots of laser head repositioning during the final phase of the reading process. If adaptive reading with a setting of 128 is not sufficient, try reading the remaining sectors with an additional linear reading pass.\n" "\n" @@ -2111,19 +2084,19 @@ msgstr "" "\n" "На DVD- и BD-носителях ошибки чтения по техническим причинам обычно охватывают по меньшей мере 16 секторов. Поэтому для DVD и BD не рекомендуется выбор значения меньше 16." -#: src/preferences.c:2320 src/preferences.c:2323 +#: src/preferences.c:2334 src/preferences.c:2337 msgid "Media read attempts" msgstr "Попытки чтения носителя" -#: src/preferences.c:2324 +#: src/preferences.c:2338 msgid "Read the whole medium " msgstr "Читать весь носитель" -#: src/preferences.c:2340 +#: src/preferences.c:2354 msgid " times" msgstr " раз" -#: src/preferences.c:2355 +#: src/preferences.c:2369 msgid "" "Media read attempts for the linear reading strategy\n" "\n" @@ -2137,15 +2110,15 @@ msgstr "" "\n" "В дополнительных проходах чтения попытки будут делаться только для недостающих секторов." -#: src/preferences.c:2372 +#: src/preferences.c:2386 msgid "Keep uncorrectable raw sectors in the following directory:" msgstr "Хранить неисправимые необработанные сектора в следующем каталоге:" -#: src/preferences.c:2380 src/preferences.c:3196 +#: src/preferences.c:2394 src/preferences.c:3215 msgid "Select" msgstr "Выбрать" -#: src/preferences.c:2421 +#: src/preferences.c:2435 msgid "" "Raw sector caching\n" "\n" @@ -2165,15 +2138,15 @@ msgstr "" "Обратите внимание, что не все приводы и операционные системы поддерживают чтение частичных данных. Если каталог для хранения остается пустым, это не является ошибкой.\n" "dvdisaster не будет удалять файлы из данного каталога; Вам необходимо очистить его вручную после успешного восстановления носителя." -#: src/preferences.c:2439 +#: src/preferences.c:2453 msgid "Raw sector file prefix" msgstr "Префикс имени файла для необработанных секторов" -#: src/preferences.c:2440 +#: src/preferences.c:2454 msgid "Raw sector file prefix: " msgstr "Префикс имени файла для необработанных секторов:" -#: src/preferences.c:2463 +#: src/preferences.c:2477 msgid "" "Raw sector file prefix\n" "\n" @@ -2183,60 +2156,60 @@ msgstr "" "\n" "Используйте разные префиксы для дисков, которые Вы пытаетесь восстановить, например, \"disc1-\" и т.д." -#: src/preferences.c:2471 +#: src/preferences.c:2485 msgid "Error correction" msgstr "Исправление ошибок" -#: src/preferences.c:2473 +#: src/preferences.c:2487 msgid "Error correction method" msgstr "Метод исправления ошибок" -#: src/preferences.c:2474 +#: src/preferences.c:2488 msgid "Storage method:" msgstr "Хранить в:" -#: src/preferences.c:2514 +#: src/preferences.c:2528 msgid "" "Error correction method\n" "\n" "dvdisaster creates error correction data which is used to recover unreadable sectors if the disc becomes damaged later on. There are different codecs and ways available for storing the error correction information:\n" msgstr "" -#: src/preferences.c:2520 +#: src/preferences.c:2534 msgid "" "The RS01 codec\n" "RS01 is the recommended codec for storing error correction data in separate files.\n" msgstr "" -#: src/preferences.c:2523 +#: src/preferences.c:2537 msgid "" "The RS02 codec\n" "RS02 is the currently recommended codec for augmenting images with error correction data.\n" msgstr "" -#: src/preferences.c:2527 +#: src/preferences.c:2541 msgid "" "The RS03 codec (Warning: experimental)\n" "RS03 can either store error correction data in a separate file or augment the image with it. It provides multithreading to scale with multicore processors and contains some subtle improvements over RS01 and RS02. However it should not be used for productive work unless a stable version is released with dvdisaster V0.80." msgstr "" -#: src/preferences.c:2565 +#: src/preferences.c:2578 msgid "Files" msgstr "Файлы" -#: src/preferences.c:2569 +#: src/preferences.c:2582 msgid "Local files (on hard disk)" msgstr "Локальные файлы (на жестком диске)" -#: src/preferences.c:2576 +#: src/preferences.c:2589 msgid "Automatic file suffixes" msgstr "Автоматические расширения имени файла" -#: src/preferences.c:2576 +#: src/preferences.c:2590 msgid "Automatically add .iso and .ecc file suffixes" msgstr "Автоматически добавлять расширения .iso и .ecc" -#: src/preferences.c:2601 +#: src/preferences.c:2615 msgid "" "Automatically add file suffixes\n" "\n" @@ -2246,19 +2219,19 @@ msgstr "" "\n" "Когда этот параметр установлен, к именам файлов будут автоматически добавляться расширения \".iso\" или \".ecc\", если у файлов нет уже другого расширения." -#: src/preferences.c:2607 +#: src/preferences.c:2621 msgid "Automatic file creation and deletion" msgstr "Автоматическое создание и удаление файлов" -#: src/preferences.c:2616 +#: src/preferences.c:2630 msgid "Automatic .ecc file creation" msgstr "Автоматическое создание .ecc-файла" -#: src/preferences.c:2616 +#: src/preferences.c:2631 msgid "Create error correction file after reading image" msgstr "Создавать файл для исправления ошибок после чтения образа" -#: src/preferences.c:2640 +#: src/preferences.c:2655 msgid "" "Automatic error correction file creation\n" "\n" @@ -2268,15 +2241,15 @@ msgstr "" "\n" "Автоматически создает файл для исправления ошибок после чтения образа. Совместно с параметром \"Удалить образ\" это ускоряет создание файла для исправления ошибок для последовательности разных носителей." -#: src/preferences.c:2647 +#: src/preferences.c:2662 msgid "Automatic image file removal" msgstr "Автоматическое удаление файла образа" -#: src/preferences.c:2647 +#: src/preferences.c:2663 msgid "Remove image after error correction file creation" msgstr "Удалить образ после создания файла для исправления ошибок" -#: src/preferences.c:2671 +#: src/preferences.c:2687 msgid "" "Automatic image file removal\n" "\n" @@ -2286,39 +2259,39 @@ msgstr "" "\n" "Если этот параметр установлен, файл образа будет удален после успешного создания соответствующего файла для исправления ошибок." -#: src/preferences.c:2677 src/preferences.c:2686 +#: src/preferences.c:2693 src/preferences.c:2702 msgid "Confirm file overwriting" msgstr "" -#: src/preferences.c:2686 +#: src/preferences.c:2703 msgid "Ask before overwriting image and ecc files" msgstr "" -#: src/preferences.c:2710 +#: src/preferences.c:2727 msgid "" "Ask before overwriting image and ecc files\n" "\n" "dvdisaster will ask you for confirmation when it is going to overwrite an existing image or error correction file if this option is checked." msgstr "" -#: src/preferences.c:2717 +#: src/preferences.c:2734 msgid "Appearance" msgstr "Внешний вид" -#: src/preferences.c:2729 +#: src/preferences.c:2746 msgid "Sector coloring" msgstr "Расцветка секторов" -#: src/preferences.c:2740 src/rs01-verify.c:123 src/rs02-verify.c:118 -#: src/rs03-verify.c:127 +#: src/preferences.c:2757 src/rs01-verify.c:127 src/rs02-verify.c:120 +#: src/rs03-verify.c:130 msgid "Good sectors" msgstr "Хорошие сектора" -#: src/preferences.c:2740 +#: src/preferences.c:2757 msgid "Good sector" msgstr "Хороший сектор" -#: src/preferences.c:2765 +#: src/preferences.c:2782 msgid "" "Good sectors\n" "\n" @@ -2328,15 +2301,15 @@ msgstr "" "\n" "Этот цвет обозначает хорошие сектора." -#: src/preferences.c:2770 +#: src/preferences.c:2787 msgid "Checksum errors" msgstr "Ошибки контрольной суммы" -#: src/preferences.c:2770 +#: src/preferences.c:2787 msgid "Checksum error" msgstr "Ошибка контрольной суммы" -#: src/preferences.c:2795 +#: src/preferences.c:2812 msgid "" "Checksum errors\n" "\n" @@ -2346,15 +2319,15 @@ msgstr "" "\n" "Этот цвет используется для отображения секторов с неправильными контрольными суммами." -#: src/preferences.c:2800 +#: src/preferences.c:2817 msgid "Unreadable sectors" msgstr "Нечитаемые сектора" -#: src/preferences.c:2800 +#: src/preferences.c:2817 msgid "Unreadable" msgstr "Не читается" -#: src/preferences.c:2825 +#: src/preferences.c:2842 msgid "" "Unreadable sectors\n" "\n" @@ -2364,15 +2337,15 @@ msgstr "" "\n" "Этот цвет используется для обозначения нечитаемых секторов." -#: src/preferences.c:2830 +#: src/preferences.c:2847 msgid "Present sectors" msgstr "Имеющиеся сектора" -#: src/preferences.c:2830 +#: src/preferences.c:2847 msgid "Present sector" msgstr "Имеющийся сектор" -#: src/preferences.c:2855 +#: src/preferences.c:2872 msgid "" "Present sectors\n" "\n" @@ -2382,15 +2355,15 @@ msgstr "" "\n" "Сектора, которые уже присутствуют, помечены этим цветом." -#: src/preferences.c:2860 +#: src/preferences.c:2877 msgid "Ignored sectors" msgstr "Игнорируемые сектора" -#: src/preferences.c:2860 +#: src/preferences.c:2877 msgid "Ignored sector" msgstr "Игнорируемый сектор" -#: src/preferences.c:2885 +#: src/preferences.c:2902 msgid "" "Ignored sectors\n" "\n" @@ -2400,15 +2373,15 @@ msgstr "" "\n" "Сектора, помеченные этим цветом, не будут обрабатываться в текущем проходе." -#: src/preferences.c:2891 +#: src/preferences.c:2908 msgid "Highlit sectors" msgstr "Выделенные сектора" -#: src/preferences.c:2891 +#: src/preferences.c:2908 msgid "Highlit sector" msgstr "Выделенный сектор" -#: src/preferences.c:2916 +#: src/preferences.c:2933 msgid "" "Highlit sectors\n" "\n" @@ -2418,15 +2391,15 @@ msgstr "" "\n" "Этот цвет используется для временного выделения секторов при адаптивном чтении." -#: src/preferences.c:2922 +#: src/preferences.c:2939 msgid "Text colors" msgstr "Цвета текста" -#: src/preferences.c:2932 +#: src/preferences.c:2949 msgid "Positive text" msgstr "Положительный текст" -#: src/preferences.c:2957 +#: src/preferences.c:2974 msgid "" "Positive text\n" "\n" @@ -2436,11 +2409,11 @@ msgstr "" "\n" "Хорошие новости печатаются этим цветом." -#: src/preferences.c:2962 +#: src/preferences.c:2979 msgid "Negative text" msgstr "Негативный текст" -#: src/preferences.c:2987 +#: src/preferences.c:3004 msgid "" "Negative text\n" "\n" @@ -2450,15 +2423,15 @@ msgstr "" "\n" "Плохие новости печатаются этим цветом." -#: src/preferences.c:2992 +#: src/preferences.c:3009 msgid "Curve colors" msgstr "Цвета кривой" -#: src/preferences.c:3001 +#: src/preferences.c:3018 msgid "Curve color" msgstr "Цвет кривой" -#: src/preferences.c:3026 +#: src/preferences.c:3043 msgid "" "Curve color and labels\n" "\n" @@ -2468,11 +2441,11 @@ msgstr "" "\n" "Кривая скорости чтения, ее левая сторона и надписи вверху выводятся этим цветом." -#: src/preferences.c:3032 src/read-linear-window.c:445 +#: src/preferences.c:3049 src/read-linear-window.c:455 msgid "C2 errors" msgstr "Ошибки C2" -#: src/preferences.c:3057 +#: src/preferences.c:3074 msgid "" "C2 error color\n" "\n" @@ -2482,11 +2455,11 @@ msgstr "" "\n" "Логарифмическая гистограмма, отображающая ошибки C2, строится в этом цвете во время операций \"чтение\" и \"проверка\"." -#: src/preferences.c:3064 +#: src/preferences.c:3081 msgid "Error correction load" msgstr "Нагрузка при исправлении ошибок" -#: src/preferences.c:3089 +#: src/preferences.c:3106 msgid "" "Error correction load\n" "\n" @@ -2496,19 +2469,19 @@ msgstr "" "\n" "Гистограмма нагрузки при исправлении ошибок показывается этим цветом во время операции \"Исправление\"." -#: src/preferences.c:3101 +#: src/preferences.c:3118 msgid "Default color scheme" msgstr "Палитра по умолчанию" -#: src/preferences.c:3109 +#: src/preferences.c:3126 msgid "Dialog boxes" msgstr "Диалоговые окна" -#: src/preferences.c:3112 +#: src/preferences.c:3129 src/preferences.c:3130 msgid "Reverse OK / Cancel buttons" msgstr "Обратить кнопки ОК / Отменить" -#: src/preferences.c:3137 +#: src/preferences.c:3155 msgid "" "Reverse OK / Cancel buttons\n" "\n" @@ -2522,19 +2495,19 @@ msgstr "" "\n" "Изменения вступят в силу после перезапуска dvdisaster." -#: src/preferences.c:3144 +#: src/preferences.c:3162 msgid "Misc" msgstr "Разное" -#: src/preferences.c:3148 +#: src/preferences.c:3166 msgid "Logging" msgstr "Журналы" -#: src/preferences.c:3155 +#: src/preferences.c:3173 src/preferences.c:3174 msgid "Verbose logging" msgstr "Подробное журналирование" -#: src/preferences.c:3180 +#: src/preferences.c:3199 msgid "" "Verbose logging\n" "\n" @@ -2544,19 +2517,19 @@ msgstr "" "\n" "Больше информации будет выдаваться в окно журнала и/или журнальный файл. Полезно для отладки, но может привести к меньшей производительности." -#: src/preferences.c:3187 +#: src/preferences.c:3206 msgid "Logfile:" msgstr "Журнал:" -#: src/preferences.c:3188 +#: src/preferences.c:3207 msgid "Copy log to file:" msgstr "Скопировать журнал в файл:" -#: src/preferences.c:3197 +#: src/preferences.c:3216 msgid "Delete" msgstr "Удалить" -#: src/preferences.c:3245 +#: src/preferences.c:3264 msgid "" "Logfile\n" "\n" @@ -2566,287 +2539,287 @@ msgstr "" "\n" "Копия информации из окна журнала записывается в заданный файл. Это полезно для сбора информации по крахам программы, но негативно сказывается на производительности." -#: src/print-sense.c:613 +#: src/print-sense.c:615 #, c-format msgid "Sense error (0x%02x); " msgstr "Сообщение привода об ошибке (0x%02x); " -#: src/print-sense.c:615 +#: src/print-sense.c:617 #, c-format msgid "Sense error: %s%c " msgstr "Сообщение привода об ошибке: %s%c" -#: src/print-sense.c:629 +#: src/print-sense.c:631 #, c-format msgid "unknown asc/ascq code (0x%02x, 0x%02x)." msgstr "неизвестный asc/ascq-код (0x%02x, 0x%02x)." -#: src/raw-editor.c:297 +#: src/raw-editor.c:299 msgid "windowtitle|Raw sector dump selection" msgstr "Выбор дампа необработанных секторов" -#: src/raw-editor.c:328 +#: src/raw-editor.c:330 #, c-format msgid "%s loaded, LBA %, %d samples." msgstr "%s загружено, LBA %, %d выборок." -#: src/raw-editor.c:352 +#: src/raw-editor.c:354 msgid "EDC checksum does not match - sector still defective!" msgstr "Контрольная сумма EDC не совпадает - сектор все еще поврежден!" -#: src/raw-editor.c:357 +#: src/raw-editor.c:359 msgid "LBA does not match MSF code in sector!" msgstr "LBA не соответствует коду MSF в секторе!" -#: src/raw-editor.c:384 +#: src/raw-editor.c:386 msgid "Raw sector does not belong to the selected image!" msgstr "Сектор не принадлежит выбранному образу!" -#: src/raw-editor.c:390 src/read-adaptive.c:1348 src/read-adaptive.c:1428 -#: src/read-adaptive.c:1770 src/read-adaptive.c:1988 src/read-linear.c:426 -#: src/read-linear.c:708 src/read-linear.c:1048 src/rs01-fix.c:501 -#: src/rs01-fix.c:761 src/rs02-fix.c:786 src/rs03-fix.c:865 +#: src/raw-editor.c:392 src/read-adaptive.c:1279 src/read-adaptive.c:1351 +#: src/read-adaptive.c:1674 src/read-adaptive.c:1873 src/read-linear.c:394 +#: src/read-linear.c:667 src/read-linear.c:1018 src/rs01-fix.c:469 +#: src/rs01-fix.c:729 src/rs02-fix.c:750 src/rs03-fix.c:824 #, c-format msgid "Failed seeking to sector % in image [%s]: %s" msgstr "Не удалось перейти к сектору % образа [%s]: %s" -#: src/raw-editor.c:397 src/read-adaptive.c:1362 src/read-adaptive.c:1434 -#: src/read-adaptive.c:1802 src/read-adaptive.c:1817 src/read-adaptive.c:1996 -#: src/read-linear.c:435 src/read-linear.c:715 src/rs01-fix.c:195 -#: src/rs01-fix.c:508 +#: src/raw-editor.c:399 src/read-adaptive.c:1293 src/read-adaptive.c:1357 +#: src/read-adaptive.c:1706 src/read-adaptive.c:1719 src/read-adaptive.c:1881 +#: src/read-linear.c:403 src/read-linear.c:674 src/rs01-fix.c:185 +#: src/rs01-fix.c:476 #, c-format msgid "Failed writing to sector % in image [%s]: %s" msgstr "Не удалось записать в сектор % образа [%s]: %s" -#: src/raw-editor.c:418 +#: src/raw-editor.c:420 msgid "windowtitle|Load buffer from file" msgstr "Загрузка в буфер из файла" -#: src/raw-editor.c:436 +#: src/raw-editor.c:438 msgid "windowtitle|Save buffer to file" msgstr "Сохранить из буфера в файл" -#: src/raw-editor.c:474 +#: src/raw-editor.c:476 #, c-format msgid "Buffer loaded from %s." msgstr "Буфер загружен из %s." -#: src/raw-editor.c:489 +#: src/raw-editor.c:491 #, c-format msgid "Buffer saved to %s." msgstr "Буфер сохранен в %s." -#: src/raw-editor.c:576 +#: src/raw-editor.c:578 msgid "*** Well done: Sector has been recovered! ***" msgstr "*** Успешно: Сектор восстановлен! ***" -#: src/raw-editor.c:579 +#: src/raw-editor.c:582 #, c-format msgid "Current buffer state: P %d/%d, Q %d/%d" msgstr "Текущее состояние буфера: P %d/%d, Q %d/%d" -#: src/raw-editor.c:690 +#: src/raw-editor.c:694 #, c-format msgid "%c Vector %d has >2 erasures (nothing done)." msgstr "%c У вектора %d >2 стертых мест (ничего не сделано)." -#: src/raw-editor.c:719 +#: src/raw-editor.c:723 #, c-format msgid "%c Vector %d already good." msgstr "%c Вектор %d уже в порядке." -#: src/raw-editor.c:727 +#: src/raw-editor.c:731 #, c-format msgid "%c Vector %d corrected (%d erasures)." msgstr "%c Вектор %d исправлен (%d стертых мест)." -#: src/raw-editor.c:730 +#: src/raw-editor.c:734 #, c-format msgid "%c Vector %d not correctable (%d erasures)." msgstr "%c Вектор %d нельзя исправить (%d стертых мест)." -#: src/raw-editor.c:745 +#: src/raw-editor.c:749 #, c-format msgid "no replacements for P vector %d available" msgstr "нет замен для вектора P %d" -#: src/raw-editor.c:761 +#: src/raw-editor.c:765 #, c-format msgid "Exchanged P vector %d with version %d (of %d)." msgstr "Вектор P %d заменен версией %d (с %d)." -#: src/raw-editor.c:783 +#: src/raw-editor.c:787 #, c-format msgid "no replacements for Q vector %d available" msgstr "нет замен для вектора Q %d" -#: src/raw-editor.c:797 +#: src/raw-editor.c:801 #, c-format msgid "Exchanged Q vector %d with version %d (of %d)." msgstr "Вектор Q %d заменен версией %d (с %d)." -#: src/raw-editor.c:858 src/raw-editor.c:871 +#: src/raw-editor.c:862 src/raw-editor.c:875 #, c-format msgid "Showing sample %d (of %d)." msgstr "Показ выборки %d (из %d)." -#: src/raw-editor.c:917 +#: src/raw-editor.c:921 msgid "Sector with lowest P failures selected." msgstr "Выбран сектор с наименьшим числом ошибок P." -#: src/raw-editor.c:927 +#: src/raw-editor.c:931 msgid "Sector with lowest Q failures selected." msgstr "Выбран сектор с наименьшим числом ошибок Q." -#: src/raw-editor.c:939 +#: src/raw-editor.c:942 #, c-format msgid "Smart L-EC: %s" msgstr "Интеллектуальный L-EC: %s" -#: src/raw-editor.c:960 +#: src/raw-editor.c:963 msgid "Raw sector editor" msgstr "Редактор необработанных секторов" -#: src/raw-editor.c:982 +#: src/raw-editor.c:985 msgid "Please load a raw sector file!" msgstr "Загрузите файл с необработанными секторами!" -#: src/raw-editor.c:994 +#: src/raw-editor.c:997 msgid "Browsing" msgstr "Просмотр" -#: src/raw-editor.c:1006 +#: src/raw-editor.c:1009 msgid "button|Load" msgstr "Загрузить" -#: src/raw-editor.c:1011 +#: src/raw-editor.c:1014 msgid "button|Save" msgstr "Сохранить" -#: src/raw-editor.c:1017 +#: src/raw-editor.c:1020 msgid "button|Prev. sector" msgstr "Пред. сектор" -#: src/raw-editor.c:1022 +#: src/raw-editor.c:1025 msgid "button|Next sector" msgstr "След. сектор" -#: src/raw-editor.c:1027 +#: src/raw-editor.c:1030 msgid "button|Sort by P" msgstr "Сортировать по P" -#: src/raw-editor.c:1032 +#: src/raw-editor.c:1035 msgid "button|Sort by Q" msgstr "Сортировать по Q" -#: src/raw-editor.c:1039 +#: src/raw-editor.c:1042 msgid "Editing" msgstr "Редактирование" -#: src/raw-editor.c:1051 +#: src/raw-editor.c:1054 msgid "button|Load Buf" msgstr "Загрузить в буфер" -#: src/raw-editor.c:1056 +#: src/raw-editor.c:1059 msgid "button|Save Buf" msgstr "Сохранить из буфера" -#: src/raw-editor.c:1061 +#: src/raw-editor.c:1064 msgid "button|Tag diffs" msgstr "Пометить отличия" -#: src/raw-editor.c:1066 +#: src/raw-editor.c:1069 msgid "button|Untag all" msgstr "Снять пометки" -#: src/raw-editor.c:1071 +#: src/raw-editor.c:1074 msgid "button|Redo" msgstr "Вернуть" -#: src/raw-editor.c:1076 +#: src/raw-editor.c:1079 msgid "button|Undo" msgstr "Отменить" -#: src/raw-editor.c:1083 +#: src/raw-editor.c:1086 msgid "Correction" msgstr "Исправление" -#: src/raw-editor.c:1086 +#: src/raw-editor.c:1089 msgid "button|P vector" msgstr "Вектор P" -#: src/raw-editor.c:1091 +#: src/raw-editor.c:1094 msgid "button|Q vector" msgstr "Вектор Q" -#: src/raw-editor.c:1096 +#: src/raw-editor.c:1099 msgid "button|Find other P" msgstr "Найти другой P" -#: src/raw-editor.c:1101 +#: src/raw-editor.c:1104 msgid "button|Find other Q" msgstr "Найти другой Q" -#: src/raw-editor.c:1106 +#: src/raw-editor.c:1109 msgid "button|Tag erasures" msgstr "Пометить стертые места" -#: src/raw-editor.c:1113 +#: src/raw-editor.c:1116 msgid "Heuristics" msgstr "Эвристика" -#: src/raw-editor.c:1116 +#: src/raw-editor.c:1119 msgid "button|Smart L-EC" msgstr "Интеллектуальный L-EC" -#: src/raw-sector-cache.c:35 src/raw-sector-cache.c:209 -#: src/raw-sector-cache.c:354 src/scsi-freebsd.c:131 src/scsi-freebsd.c:141 -#: src/scsi-linux.c:115 src/scsi-linux.c:124 src/scsi-netbsd.c:126 -#: src/scsi-netbsd.c:136 src/scsi-win32.c:256 +#: src/raw-sector-cache.c:37 src/raw-sector-cache.c:204 +#: src/raw-sector-cache.c:338 src/scsi-freebsd.c:133 src/scsi-freebsd.c:143 +#: src/scsi-linux.c:117 src/scsi-linux.c:126 src/scsi-netbsd.c:128 +#: src/scsi-netbsd.c:138 src/scsi-win32.c:256 #, c-format msgid "Could not open %s: %s" msgstr "Не удалось открыть %s: %s" -#: src/raw-sector-cache.c:60 src/raw-sector-cache.c:124 -#: src/raw-sector-cache.c:130 src/raw-sector-cache.c:134 -#: src/raw-sector-cache.c:162 src/raw-sector-cache.c:267 +#: src/raw-sector-cache.c:62 src/raw-sector-cache.c:126 +#: src/raw-sector-cache.c:132 src/raw-sector-cache.c:136 +#: src/raw-sector-cache.c:164 src/raw-sector-cache.c:262 #, c-format msgid "Failed writing to defective sector file: %s" msgstr "Не удалось записать в файл поврежденных секторов: %s" -#: src/raw-sector-cache.c:80 src/raw-sector-cache.c:105 -#: src/raw-sector-cache.c:223 src/raw-sector-cache.c:324 -#: src/raw-sector-cache.c:370 +#: src/raw-sector-cache.c:82 src/raw-sector-cache.c:107 +#: src/raw-sector-cache.c:218 src/raw-sector-cache.c:314 +#: src/raw-sector-cache.c:354 #, c-format msgid "Failed reading from defective sector file: %s" msgstr "Не удалось прочитать из файла поврежденных секторов: %s" -#: src/raw-sector-cache.c:88 +#: src/raw-sector-cache.c:90 msgid "Defective sector file is truncated" msgstr "Файл поврежденных секторов укорочен" -#: src/raw-sector-cache.c:112 src/raw-sector-cache.c:138 -#: src/raw-sector-cache.c:150 src/raw-sector-cache.c:216 -#: src/raw-sector-cache.c:231 +#: src/raw-sector-cache.c:114 src/raw-sector-cache.c:140 +#: src/raw-sector-cache.c:152 src/raw-sector-cache.c:211 +#: src/raw-sector-cache.c:226 #, c-format msgid "Failed seeking in defective sector file: %s" msgstr "Не удалось переместиться в файле поврежденных секторов: %s" -#: src/raw-sector-cache.c:169 +#: src/raw-sector-cache.c:171 msgid "Fingerprints of medium and defective sector cache do not match!" msgstr "Отпечатки носителя и буфера поврежденных секторов не совпадают!" -#: src/raw-sector-cache.c:203 +#: src/raw-sector-cache.c:198 #, c-format msgid " [Creating new cache file %s]\n" msgstr " [Создание нового буферного файла %s]\n" -#: src/raw-sector-cache.c:280 +#: src/raw-sector-cache.c:270 #, c-format msgid " [Appended %d/%d sectors to cache file %s; LBA=%, ssize=%d, %d sectors]\n" msgstr " [Добавлено %d/%d секторов к буферному файлу %s; LBA=%, размер с.=%d, %d секторов]\n" -#: src/read-adaptive.c:55 src/rs01-create.c:1080 +#: src/read-adaptive.c:57 src/rs01-create.c:1018 #, c-format msgid "" "Error closing error correction file:\n" @@ -2855,11 +2828,11 @@ msgstr "" "Ошибка при закрытии файла для исправления ошибок:\n" "%s" -#: src/read-adaptive.c:78 src/read-adaptive.c:115 +#: src/read-adaptive.c:80 src/read-adaptive.c:117 msgid "Invalid or damaged ecc file" msgstr "Неправильный или поврежденный ecc-файл" -#: src/read-adaptive.c:102 +#: src/read-adaptive.c:104 #, c-format msgid "" "Can't read ecc header:\n" @@ -2868,7 +2841,7 @@ msgstr "" "Не удается прочитать ecc-заголовок:\n" "%s" -#: src/read-adaptive.c:119 +#: src/read-adaptive.c:121 src/read-linear.c:867 #, c-format msgid "" "* Warning: This ecc file requires dvdisaster-%d.%d!\n" @@ -2878,74 +2851,74 @@ msgid "" "\n" msgstr "" -#: src/read-adaptive.c:152 src/rs01-common.c:80 src/rs01-common.c:238 -#: src/rs01-create.c:326 src/rs01-verify.c:891 +#: src/read-adaptive.c:154 src/rs01-common.c:82 src/rs01-common.c:237 +#: src/rs01-create.c:299 src/rs01-verify.c:794 #, c-format msgid "Failed skipping the ecc header: %s" msgstr "Не удалось пропустить ecc-заголовок: %s" -#: src/read-adaptive.c:161 src/read-adaptive.c:171 src/rs01-common.c:92 -#: src/rs01-common.c:102 src/rs01-common.c:350 +#: src/read-adaptive.c:163 src/read-adaptive.c:173 src/rs01-common.c:94 +#: src/rs01-common.c:104 src/rs01-common.c:347 #, c-format msgid "Error reading CRC information: %s" msgstr "Ошибка при чтении CRC-информации: %s " -#: src/read-adaptive.c:374 src/read-adaptive.c:1747 +#: src/read-adaptive.c:375 src/read-adaptive.c:1650 msgid "Aborted by unrecoverable error." msgstr "Прервано из-за неисправимой ошибки." -#: src/read-adaptive.c:510 +#: src/read-adaptive.c:508 #, c-format msgid "Repairable: %2d.%1d%% (correctable: %; now reading [%..%], size %)" msgstr "Восстановимо: %2d.%1d%% (исправимо: %; сейчас читается [%..%], размер %)" -#: src/read-adaptive.c:515 +#: src/read-adaptive.c:513 #, c-format msgid "Repairable: %2d.%1d%% (missing: %; now reading [%..%], size %)" msgstr "Восстановимо: %2d.%1d%% (отсутствует: %; сейчас читается [%..%], размер %)" -#: src/read-adaptive.c:655 src/read-adaptive.c:671 src/read-adaptive.c:701 +#: src/read-adaptive.c:651 src/read-adaptive.c:662 src/read-adaptive.c:692 #, c-format msgid "%s-type ECC found\n" msgstr "" -#: src/read-adaptive.c:674 +#: src/read-adaptive.c:665 src/read-linear.c:874 #, c-format msgid "" "* Warning: This image requires dvdisaster-%d.%d!\n" "* Proceeding could trigger incorrect behaviour.\n" -"* Please visit http://www.dvdisaster.org for an upgrade.\n" +"* Please upgrade dvdisaster.\n" "\n" msgstr "" -#: src/read-adaptive.c:703 +#: src/read-adaptive.c:694 msgid "" "Adaptive reading has not been adapted yet to handle RS03-augmented images properly.\n" "To quote the original author: \"behaviour with RS03 is unpredictable and undefined\".\n" "You should cancel and use the linear reading strategy instead. Continue at your own risk.\n" msgstr "" -#: src/read-adaptive.c:710 src/read-adaptive.c:773 src/read-adaptive.c:792 -#: src/read-adaptive.c:865 src/read-adaptive.c:960 src/read-adaptive.c:1030 -#: src/read-adaptive.c:1371 src/read-adaptive.c:1671 +#: src/read-adaptive.c:699 src/read-adaptive.c:758 src/read-adaptive.c:773 +#: src/read-adaptive.c:837 src/read-adaptive.c:926 src/read-adaptive.c:987 +#: src/read-adaptive.c:1300 src/read-adaptive.c:1576 msgid "Aborted by user request!" msgstr "Прервано пользователем!" -#: src/read-adaptive.c:721 +#: src/read-adaptive.c:709 #, c-format msgid "Stopping when unreadable intervals < %d." msgstr "Останов, когда нечитаемые интервалы < %d." -#: src/read-adaptive.c:723 src/read-adaptive.c:729 +#: src/read-adaptive.c:711 src/read-adaptive.c:717 #, c-format msgid "Adaptive reading: %s\n" msgstr "Адаптивное чтение: %s\n" -#: src/read-adaptive.c:728 +#: src/read-adaptive.c:716 msgid "Trying to collect enough data for error correction." msgstr "Попытка собрать достаточно данных для исправления ошибок." -#: src/read-adaptive.c:764 +#: src/read-adaptive.c:751 #, c-format msgid "" "Medium contains % sectors more as recorded in the .ecc file\n" @@ -2956,7 +2929,7 @@ msgstr "" "(Носитель: % секторов; по .ecc-файлу: % секторов).\n" "Только первые % секторов носителя будут обработаны.\n" -#: src/read-adaptive.c:785 +#: src/read-adaptive.c:768 #, c-format msgid "" "Medium contains % sectors less as recorded in the .ecc file\n" @@ -2965,12 +2938,12 @@ msgstr "" "Носитель содержит на % секторов меньше, чем записано в .ecc-файле\n" "(Носитель: % секторов; по .ecc-файлу: % секторов).\n" -#: src/read-adaptive.c:832 +#: src/read-adaptive.c:807 #, c-format msgid "Limiting sector range to [%,%].\n" msgstr "Ограничение диапазона секторов до [%,%].\n" -#: src/read-adaptive.c:858 +#: src/read-adaptive.c:832 #, c-format msgid "" "Sector %d is missing. Can not compare medium and ecc fingerprints.\n" @@ -2979,7 +2952,7 @@ msgstr "" "Сектора %d не хватает. Не удается сравнить отпечатки носителя и ecc.\n" "Еще раз проверьте, что носитель и ecc-файл относятся друг к другу.\n" -#: src/read-adaptive.c:874 +#: src/read-adaptive.c:845 msgid "" "Fingerprints of medium and ecc file do not match.\n" "Medium and ecc file do not belong together.\n" @@ -2987,15 +2960,15 @@ msgstr "" "Отпечатки носителя и ecc-файла не совпадают.\n" "Носитель и ecc-файл не относятся друг к другу.\n" -#: src/read-adaptive.c:917 src/read-linear.c:360 +#: src/read-adaptive.c:886 src/read-linear.c:337 msgid "Image file does not match the optical disc." msgstr "Файл образа не подходит к CD/DVD/BD." -#: src/read-adaptive.c:924 +#: src/read-adaptive.c:893 msgid "Reading aborted. Please select a different image file." msgstr "Чтение прервано. Выберите другой файл образа." -#: src/read-adaptive.c:952 +#: src/read-adaptive.c:920 #, c-format msgid "" "Image file is % sectors longer than inserted medium\n" @@ -3004,74 +2977,74 @@ msgstr "" "Файл образа на % секторов длиннее, чем вставленный носитель\n" "(Файл образа: % секторов; носитель: % секторов).\n" -#: src/read-adaptive.c:980 src/read-adaptive.c:986 +#: src/read-adaptive.c:944 src/read-adaptive.c:948 msgid "Loading CRC data." msgstr "Загрузка CRC данных." -#: src/read-adaptive.c:1020 +#: src/read-adaptive.c:979 msgid "Analysing existing image file" msgstr "Анализ существующего файла образа" -#: src/read-adaptive.c:1040 src/rs01-common.c:280 src/rs02-verify.c:752 +#: src/read-adaptive.c:996 src/rs01-common.c:277 src/rs02-verify.c:730 #, c-format msgid "premature end in image (only %d bytes): %s\n" msgstr "преждевременный конец образа (только %d байт): %s\n" -#: src/read-adaptive.c:1127 +#: src/read-adaptive.c:1074 #, c-format msgid "Analysing existing image file: %2d%%" msgstr "Анализ существующего файла образа: %2d%%" -#: src/read-adaptive.c:1156 +#: src/read-adaptive.c:1101 msgid "Determining correctable sectors" msgstr "Определение исправимых секторов" -#: src/read-adaptive.c:1236 +#: src/read-adaptive.c:1176 #, c-format msgid "Analysing existing image file: % readable, % correctable, % still missing.\n" msgstr "Анализ существующего файла образа: % можно прочитать, % можно исправить, % еще отсутствуют.\n" -#: src/read-adaptive.c:1238 +#: src/read-adaptive.c:1178 #, c-format msgid "Analysing existing image file: % readable, % still missing.\n" msgstr "Анализ существующего файла образа: % можно прочитать, % еще отсутствуют.\n" -#: src/read-adaptive.c:1295 src/read-linear.c:789 +#: src/read-adaptive.c:1228 src/read-linear.c:748 msgid "Ignore once" msgstr "Игнорировать один раз" -#: src/read-adaptive.c:1296 src/read-linear.c:790 +#: src/read-adaptive.c:1229 src/read-linear.c:749 msgid "Ignore always" msgstr "Игнорировать всегда" -#: src/read-adaptive.c:1297 src/read-linear.c:791 +#: src/read-adaptive.c:1230 src/read-linear.c:750 msgid "Abort" msgstr "Прервать" -#: src/read-adaptive.c:1333 +#: src/read-adaptive.c:1266 #, c-format msgid "Filling image area [%..%]" msgstr "Заполнение области образа [%..%]" -#: src/read-adaptive.c:1465 src/read-linear.c:223 +#: src/read-adaptive.c:1388 src/read-linear.c:218 msgid "Reading aborted" msgstr "Чтение прервано" -#: src/read-adaptive.c:1469 src/read-linear.c:228 +#: src/read-adaptive.c:1391 src/read-linear.c:221 msgid "Preparing for reading the medium image." msgstr "Подготовка к чтению образа носителя." -#: src/read-adaptive.c:1470 src/read-linear.c:219 src/read-linear.c:229 +#: src/read-adaptive.c:1392 src/read-linear.c:215 src/read-linear.c:222 msgid "Medium: not yet determined" msgstr "Носитель: еще не определен" -#: src/read-adaptive.c:1485 +#: src/read-adaptive.c:1406 msgid "" "Adaptive reading is unavailable in this version.\n" "It will be re-introduced in one of the next versions." msgstr "" -#: src/read-adaptive.c:1494 +#: src/read-adaptive.c:1415 msgid "" "* Warning: Using adaptive reading without error correction data\n" "* has little advantage over linear reading, but may\n" @@ -3080,20 +3053,20 @@ msgid "" "* Please consider using linear reading instead.\n" msgstr "" -#: src/read-adaptive.c:1554 src/read-linear.c:293 +#: src/read-adaptive.c:1473 src/read-linear.c:277 #, c-format msgid "Creating new %s image.\n" msgstr "Создание нового %s образа.\n" -#: src/read-adaptive.c:1559 src/read-linear.c:286 +#: src/read-adaptive.c:1476 src/read-linear.c:270 msgid "Reading new medium image." msgstr "Чтение нового образа носителя." -#: src/read-adaptive.c:1581 src/read-linear.c:319 +#: src/read-adaptive.c:1495 src/read-linear.c:298 msgid "Completing existing medium image." msgstr "Завершение существующего образа носителя." -#: src/read-adaptive.c:1615 src/read-adaptive.c:1946 +#: src/read-adaptive.c:1528 src/read-adaptive.c:1842 msgid "" "\n" "Sufficient data for reconstructing the image is available.\n" @@ -3101,7 +3074,7 @@ msgstr "" "\n" "Достаточно данных для восстановления образа.\n" -#: src/read-adaptive.c:1731 src/read-linear.c:1115 +#: src/read-adaptive.c:1636 src/read-linear.c:1090 #, c-format msgid "" "Sector %: %s\n" @@ -3112,7 +3085,7 @@ msgstr "" "Не удается продолжить после приведенной выше ошибки.\n" "Используйте параметр --ignore-fatal-sense, чтобы не принимать во внимание." -#: src/read-adaptive.c:1737 src/read-linear.c:1121 +#: src/read-adaptive.c:1641 src/read-linear.c:1096 #, c-format msgid "" "Sector %: %s\n" @@ -3125,28 +3098,28 @@ msgstr "" "Продолжение невозможно из-за этой ошибки.\n" "Игнорировать эту ошибку и продолжать чтение?" -#: src/read-adaptive.c:1793 src/rs01-fix.c:451 src/rs02-fix.c:464 -#: src/rs03-fix.c:522 +#: src/read-adaptive.c:1697 src/rs01-fix.c:422 src/rs02-fix.c:431 +#: src/rs03-fix.c:484 #, c-format msgid "CRC error in sector %\n" msgstr "CRC-ошибка в секторе %\n" -#: src/read-adaptive.c:1972 src/scsi-layer.c:1776 +#: src/read-adaptive.c:1862 src/scsi-layer.c:1781 #, c-format msgid "Sectors %-%: %s\n" msgstr "Сектора %-%: %s\n" -#: src/read-adaptive.c:1980 src/read-linear.c:1318 src/scsi-layer.c:1775 +#: src/read-adaptive.c:1865 src/read-linear.c:1284 src/scsi-layer.c:1780 #, c-format msgid "Sector %: %s\n" msgstr "Сектор %: %s\n" -#: src/read-adaptive.c:2111 +#: src/read-adaptive.c:1992 #, c-format msgid "Only %2d.%1d%% of the image are readable or correctable" msgstr "Только %2d.%1d%% образа можно прочитать или исправить" -#: src/read-adaptive.c:2114 +#: src/read-adaptive.c:1995 #, c-format msgid "" "\n" @@ -3157,7 +3130,7 @@ msgstr "" "%s\n" "(% можно прочитать, % можно исправить, % еще отсутствует).\n" -#: src/read-adaptive.c:2130 +#: src/read-adaptive.c:2008 msgid "" "\n" "Good! All sectors have been read.\n" @@ -3165,12 +3138,12 @@ msgstr "" "\n" "Хорошо! Все сектора прочитаны.\n" -#: src/read-adaptive.c:2141 +#: src/read-adaptive.c:2016 #, c-format msgid "No unreadable intervals with >= %d sectors left." msgstr "Не осталось нечитаемых интервалов с >= %d секторов." -#: src/read-adaptive.c:2144 +#: src/read-adaptive.c:2019 #, c-format msgid "" "\n" @@ -3181,42 +3154,42 @@ msgstr "" "%s\n" "%2d.%1d%% образа прочитано (% секторов).\n" -#: src/read-adaptive-window.c:81 +#: src/read-adaptive-window.c:84 msgid "Adaptive reading:" msgstr "Адаптивное чтение:" -#: src/read-adaptive-window.c:109 +#: src/read-adaptive-window.c:112 msgid "Sectors processed" msgstr "Обработанные сектора" -#: src/read-adaptive-window.c:112 src/scsi-layer.c:1757 +#: src/read-adaptive-window.c:115 src/scsi-layer.c:1762 msgid "readable" msgstr "можно прочитать" -#: src/read-adaptive-window.c:116 +#: src/read-adaptive-window.c:119 msgid "correctable" msgstr "можно исправить" -#: src/read-adaptive-window.c:120 +#: src/read-adaptive-window.c:123 msgid "missing" msgstr "отсутствует" -#: src/read-adaptive-window.c:130 +#: src/read-adaptive-window.c:133 #, c-format msgid "Readable: %d.%d%% / %d.%d%% required" msgstr "Можно прочитать: %d.%d%% / %d.%d%% требуется" -#: src/read-adaptive-window.c:137 +#: src/read-adaptive-window.c:140 #, c-format msgid "Total recoverable: %d.%d%%" msgstr "Всего можно восстановить: %d.%d%%" -#: src/read-linear.c:126 +#: src/read-linear.c:122 #, c-format msgid "Aborted by unrecoverable error. % sectors read, % sectors unreadable/skipped so far." msgstr "Прервано из-за неисправимой ошибки. % секторов прочитано, % секторов не читаются или пропущены." -#: src/read-linear.c:182 +#: src/read-linear.c:176 msgid "" "Automatic error correction file creation\n" "is only possible after a full reading pass.\n" @@ -3224,77 +3197,77 @@ msgstr "" "Автоматическое создание файла для исправления ошибок\n" "возможно лишь после полного прохода чтения.\n" -#: src/read-linear.c:213 +#: src/read-linear.c:211 msgid "Scanning aborted" msgstr "Проверка прервана" -#: src/read-linear.c:218 src/read-linear.c:252 +#: src/read-linear.c:214 src/read-linear.c:244 msgid "Scanning medium for read errors." msgstr "Просмотр носителя на наличие ошибок чтения." -#: src/read-linear.c:260 src/read-linear.c:299 +#: src/read-linear.c:250 src/read-linear.c:281 msgid "Reading CRC information" msgstr "Чтение CRC-информации" -#: src/read-linear.c:368 +#: src/read-linear.c:344 #, c-format msgid "Reading aborted. Please select a different image file." msgstr "Чтение прервано. Выберите другой файл образа." -#: src/read-linear.c:388 +#: src/read-linear.c:363 #, c-format msgid "Completing image %s. Continuing with sector %.\n" msgstr "Завершение образа %s. Продолжение с сектора %.\n" -#: src/read-linear.c:396 +#: src/read-linear.c:369 #, c-format msgid "Completing image %s. Only missing sectors will be read.\n" msgstr "Завершение образа %s. Будут прочитаны только недостающие сектора.\n" -#: src/read-linear.c:461 src/read-linear.c:470 +#: src/read-linear.c:442 src/read-linear.c:447 msgid "Reading CRC information from ecc data" msgstr "Чтение CRC-информации из ecc-данных" -#: src/read-linear.c:501 +#: src/read-linear.c:473 msgid "done.\n" msgstr "готово.\n" -#: src/read-linear.c:522 src/scsi-layer.c:2103 +#: src/read-linear.c:493 src/scsi-layer.c:2108 #, c-format msgid "Waiting %d seconds for drive to spin up...\n" msgstr "Задержка на %d секунд для раскручивания привода...\n" -#: src/read-linear.c:548 src/read-linear-window.c:104 +#: src/read-linear.c:515 src/read-linear-window.c:109 #, c-format msgid "Unreadable / skipped sectors: %" msgstr "Нечитаемые / пропущенные сектора: %" -#: src/read-linear.c:644 +#: src/read-linear.c:605 #, c-format msgid "Sector %: Speed increased to %4.1fx\n" msgstr "Сектор %: Скорость увеличена до %4.1fx\n" -#: src/read-linear.c:647 +#: src/read-linear.c:608 #, c-format msgid "Sector %: Speed dropped to %4.1fx\n" msgstr "Сектор %: Скорость снижена до %4.1fx\n" -#: src/read-linear.c:653 +#: src/read-linear.c:614 #, c-format -msgid "Read position: %3d.%1d%% (nn.nx)" +msgid "Read position: %3d.%1d%% (nn.nx), sector %/%, % sectors read OK, % read errors, % crc errors" msgstr "" -#: src/read-linear.c:655 +#: src/read-linear.c:615 #, c-format -msgid "Read position: %3d.%1d%% (%4.1fx)" -msgstr "Положение чтения: %3d.%1d%% (%4.1fx)" +msgid "Read position: %3d.%1d%% (%4.1fx), sector %/%, % sectors read OK, % read errors, % crc errors" +msgstr "" -#: src/read-linear.c:749 +#: src/read-linear.c:708 #, c-format msgid "* CRC error, sector: %lld\n" msgstr "* CRC-ошибка, сектор: %lld\n" -#: src/read-linear.c:879 +#: src/read-linear.c:841 #, c-format msgid "" "This ecc file requires dvdisaster-%d.%d!\n" @@ -3305,40 +3278,40 @@ msgid "" "\n" msgstr "" -#: src/read-linear.c:887 +#: src/read-linear.c:849 #, c-format msgid "" "This image requires dvdisaster-%d.%d!\n" "\n" "Proceeding could trigger incorrect behaviour.\n" -"Please visit http://www.dvdisaster.org for an upgrade.\n" +"Please upgrade dvdisaster.\n" "\n" msgstr "" # # # -#: src/read-linear.c:898 src/read-linear.c:1002 src/read-linear.c:1132 +#: src/read-linear.c:858 src/read-linear.c:973 src/read-linear.c:1106 #, c-format msgid "Aborted by user request! % sectors read, % sectors unreadable/skipped so far." msgstr "Прервано пользователем! % секторов прочитано, % секторов не читаются или пропущены." -#: src/read-linear.c:1060 +#: src/read-linear.c:1030 #, c-format msgid "unexpected read error in image for sector %" msgstr "неожиданная ошибка чтения образа в секторе %" -#: src/read-linear.c:1148 +#: src/read-linear.c:1122 #, c-format msgid "Sector %: %3d C2 errors.%s\n" msgstr "Сектор %: %3d ошибок C2.%s\n" -#: src/read-linear.c:1285 +#: src/read-linear.c:1256 #, c-format msgid "Sector %: %s Skipping %d sectors.\n" msgstr "Сектор %: %s Пропуск %d секторов.\n" -#: src/read-linear.c:1356 +#: src/read-linear.c:1319 #, c-format msgid "" "Trying to complete image, reading pass %d of %d.\n" @@ -3347,7 +3320,7 @@ msgstr "" "Попытка завершить образ, проход чтения %d из %d.\n" "%s" -#: src/read-linear.c:1360 +#: src/read-linear.c:1321 #, c-format msgid "" "\n" @@ -3356,174 +3329,183 @@ msgstr "" "\n" "Попытка завершить образ, проход чтения %d из %d.\n" -#: src/read-linear.c:1397 +#: src/read-linear.c:1358 #, c-format msgid "% sectors read. " msgstr "% секторов прочитано. " -#: src/read-linear.c:1398 +#: src/read-linear.c:1359 #, c-format msgid "% sectors read; % unreadable sectors." msgstr "% секторов прочитано; % нечитаемых секторов." -#: src/read-linear.c:1410 +#: src/read-linear.c:1367 +#, c-format +msgid "All sectors are readable, but %d contain defective content." +msgstr "" + +#: src/read-linear.c:1377 #, c-format msgid "All sectors successfully read, but wrong image length (% sectors difference)" msgstr "Все сектора успешно прочитаны, но размер образа неправильный (разница на % секторов)" -#: src/read-linear.c:1416 +#: src/read-linear.c:1383 msgid "All sectors successfully read, but wrong ecc md5sum." msgstr "" -#: src/read-linear.c:1422 +#: src/read-linear.c:1389 msgid "All sectors successfully read, but incomplete or damaged checksums." msgstr "" -#: src/read-linear.c:1423 +#: src/read-linear.c:1390 msgid "All sectors successfully read. Checksums match." msgstr "Все сектора успешно прочитаны. Контрольные суммы совпадают." -#: src/read-linear.c:1425 +#: src/read-linear.c:1392 msgid "All sectors successfully read." msgstr "Все сектора успешно прочитаны." -#: src/read-linear.c:1430 +#: src/read-linear.c:1397 #, c-format msgid "% unreadable sectors." msgstr "% нечитаемых секторов." -#: src/read-linear.c:1433 +#: src/read-linear.c:1400 #, c-format msgid "% CRC errors and a md5sum mismatch in the CRC section." msgstr "" -#: src/read-linear.c:1435 +#: src/read-linear.c:1402 #, c-format msgid "% CRC errors." msgstr "% CRC-ошибок." -#: src/read-linear.c:1437 +#: src/read-linear.c:1404 #, c-format msgid "% CRC errors, % unreadable sectors." msgstr "% CRC-ошибок, % нечитаемых секторов." -#: src/read-linear.c:1446 +#: src/read-linear.c:1414 msgid "Scanning finished: " msgstr "Проверка завершена: " -#: src/read-linear.c:1448 +#: src/read-linear.c:1419 msgid "Reading finished: " msgstr "Чтение завершено: " -#: src/read-linear.c:1462 +#: src/read-linear.c:1432 src/read-linear.c:1443 #, c-format msgid "" "%d sectors missing at the end of the disc.\n" "This is okay if the CD was written in TAO (track at once) mode.\n" -"The Image will be truncated accordingly. See the manual for details.\n" +"%s" msgstr "" -"%d секторов не хватает в конце диска.\n" -"Это нормально, если CD записан в режиме TAO (track at once).\n" -"Образ будет соответственно укорочен. Подробнее см. в руководстве.\n" -#: src/read-linear.c:1469 -#, c-format +#: src/read-linear.c:1437 +msgid "See the manual for details.\n" +msgstr "" + +#: src/read-linear.c:1439 +msgid "The Image will be truncated accordingly. See the manual for details.\n" +msgstr "" + +#: src/read-linear.c:1448 +msgid "" +"See the manual for details.\n" +"Use the --dao option to disable this message.\n" +msgstr "" + +#: src/read-linear.c:1451 msgid "" -"%d sectors missing at the end of the disc.\n" -"This is okay if the CD was written in TAO (track at once) mode.\n" "The Image will be truncated accordingly. See the manual for details.\n" "Use the --dao option to disable image truncating.\n" msgstr "" -"%d секторов не хватает в конце диска.\n" -"Это нормально, если CD записан в режиме TAO (track at once).\n" -"Образ будет соответственно укорочен. Подробнее см. в руководстве.\n" -"Используйте параметр --dao для отключения укорачивания образов.\n" -#: src/read-linear-window.c:97 +#: src/read-linear-window.c:102 #, c-format msgid "Current Speed: %d.%dx" msgstr "Текущая скорость: %d.%dx" -#: src/read-linear-window.c:254 src/read-linear-window.c:323 +#: src/read-linear-window.c:264 src/read-linear-window.c:333 msgid "Already present" msgstr "Уже есть" -#: src/read-linear-window.c:288 src/read-linear-window.c:330 -#: src/rs01-verify.c:126 src/rs02-verify.c:121 src/rs03-verify.c:130 +#: src/read-linear-window.c:298 src/read-linear-window.c:340 +#: src/rs01-verify.c:130 src/rs02-verify.c:123 src/rs03-verify.c:133 msgid "Sectors with CRC errors" msgstr "Сектора с CRC-ошибками" -#: src/read-linear-window.c:311 +#: src/read-linear-window.c:321 msgid "Medium state" msgstr "Состояние носителя" -#: src/read-linear-window.c:319 +#: src/read-linear-window.c:329 msgid "Not touched this time" msgstr "В этот раз не затронут" -#: src/read-linear-window.c:326 +#: src/read-linear-window.c:336 msgid "Successfully read" msgstr "Успешно прочитано" -#: src/read-linear-window.c:333 +#: src/read-linear-window.c:343 msgid "Unreadable / skipped" msgstr "Нечитаемый / пропущенный" -#: src/read-linear-window.c:444 +#: src/read-linear-window.c:454 msgid "Speed" msgstr "Скорость" -#: src/recover-raw.c:65 +#: src/recover-raw.c:66 #, c-format msgid "Sector % dumped to %s\n" msgstr "Сектор % помещен в %s\n" -#: src/rs01-common.c:252 src/rs02-verify.c:831 src/rs03-verify.c:1228 +#: src/rs01-common.c:251 src/rs02-verify.c:806 src/rs03-verify.c:1144 #, c-format msgid "- testing sectors : %3d%%" msgstr "- проверка секторов : %3d%%" -#: src/rs01-common.c:253 +#: src/rs01-common.c:252 #, c-format msgid "Scanning image sectors: %3d%%" msgstr "Просмотр секторов образа: %3d%%" -#: src/rs01-common.c:308 src/rs02-verify.c:784 +#: src/rs01-common.c:305 src/rs02-verify.c:762 #, c-format msgid "* missing sector : %\n" msgstr "* недостающий сектор : %\n" -#: src/rs01-common.c:309 src/rs02-verify.c:785 +#: src/rs01-common.c:306 src/rs02-verify.c:763 #, c-format msgid "* missing sectors : % - %\n" msgstr "* недостающие сектора : % - %\n" -#: src/rs01-common.c:327 src/rs01-common.c:399 src/rs01-create.c:343 +#: src/rs01-common.c:324 src/rs01-common.c:395 src/rs01-create.c:316 #, c-format msgid "Error writing CRC information: %s" msgstr "Ошибка записи CRC-информации: %s" -#: src/rs01-common.c:356 src/rs02-verify.c:797 src/rs03-verify.c:1202 +#: src/rs01-common.c:353 src/rs02-verify.c:775 src/rs03-verify.c:1118 #, c-format msgid "* CRC error, sector: %\n" msgstr "" -#: src/rs01-create.c:63 +#: src/rs01-create.c:65 #, c-format msgid "Redundancy %4.1f%% out of useful range [3.2%%..64.5%%]" msgstr "Избыточность %4.1f%% вне полезного диапазона [3.2%%..64.5%%]" -#: src/rs01-create.c:76 src/rs03-common.c:467 +#: src/rs01-create.c:78 src/rs03-common.c:468 #, c-format msgid "Ecc file size %m out of useful range [% .. %]" msgstr "Размер %m ecc-файла вне полезного диапазона [% .. %]" -#: src/rs01-create.c:91 +#: src/rs01-create.c:93 #, c-format msgid "Redundancy %d out of useful range [8..100]." msgstr "Избыточность %d вне полезного диапазона [8..100]." -#: src/rs01-create.c:107 src/rs01-create.c:112 +#: src/rs01-create.c:105 src/rs01-create.c:106 #, c-format msgid "" "\n" @@ -3532,27 +3514,27 @@ msgstr "" "\n" "Файл образа %s удален.\n" -#: src/rs01-create.c:123 +#: src/rs01-create.c:113 #, c-format msgid "Image file %s not deleted: %s\n" msgstr "Файл образа %s не удален: %s\n" -#: src/rs01-create.c:160 src/rs01-fix.c:81 src/rs02-create.c:63 -#: src/rs02-fix.c:57 src/rs03-create.c:154 src/rs03-fix.c:57 +#: src/rs01-create.c:147 src/rs01-fix.c:79 src/rs02-create.c:61 +#: src/rs02-fix.c:55 src/rs03-create.c:152 src/rs03-fix.c:54 #, c-format msgid "Aborted by unrecoverable error." msgstr "Прервано из-за неисправимой ошибки." -#: src/rs01-create.c:231 +#: src/rs01-create.c:212 msgid "Error correction file creation aborted" msgstr "Создание файла для исправления ошибок прервано" -#: src/rs01-create.c:254 +#: src/rs01-create.c:235 #, c-format msgid "Encoding with Method RS01: %d roots, %4.1f%% redundancy." msgstr "Кодирование по методу RS01: %d корней, избыточность %4.1f%%." -#: src/rs01-create.c:261 src/rs03-create.c:1373 +#: src/rs01-create.c:240 src/rs03-create.c:1331 #, c-format msgid "" "Creating the error correction file.\n" @@ -3561,49 +3543,49 @@ msgstr "" "Создание файла для исправления ошибок.\n" "%s" -#: src/rs01-create.c:275 src/rs03-create.c:297 +#: src/rs01-create.c:252 src/rs03-create.c:284 #, c-format msgid "Aborted to keep existing ecc file." msgstr "" -#: src/rs01-create.c:291 src/rs02-create.c:1080 src/rs03-create.c:1329 +#: src/rs01-create.c:267 src/rs02-create.c:1036 src/rs03-create.c:1285 #, c-format msgid "Image file %s: %s." msgstr "" -#: src/rs01-create.c:299 src/rs03-create.c:1348 +#: src/rs01-create.c:275 src/rs03-create.c:1304 msgid "No error correction file specified!\n" msgstr "" -#: src/rs01-create.c:312 +#: src/rs01-create.c:288 #, c-format msgid "Writing sector checksums: %3d%%" msgstr "Запись контрольных сумм секторов: %3d%%" -#: src/rs01-create.c:317 +#: src/rs01-create.c:291 msgid "1. Writing image sector checksums:" msgstr "1. Запись контрольных сумм секторов образа:" -#: src/rs01-create.c:369 src/rs01-window.c:131 +#: src/rs01-create.c:335 src/rs01-window.c:128 msgid "1. Calculating image sector checksums:" msgstr "1. Вычисление контрольных сумм секторов образа:" -#: src/rs01-create.c:388 src/rs01-create.c:538 src/rs01-create.c:636 +#: src/rs01-create.c:352 src/rs01-create.c:493 src/rs01-create.c:585 #, c-format msgid "Aborted by user request! (partial error correction file removed)" msgstr "Прервано пользователем! (незавершенный файл для исправления ошибок удален)" -#: src/rs01-create.c:401 +#: src/rs01-create.c:361 #, c-format msgid "% sectors unread or missing due to errors.\n" msgstr "% секторов не прочитано или отсутствует из-за ошибок.\n" -#: src/rs01-create.c:458 +#: src/rs01-create.c:414 #, c-format msgid "Failed skipping ecc+crc header: %s" msgstr "Неудалось пропустить заголовок ecc+crc: %s" -#: src/rs01-create.c:485 src/rs02-create.c:553 +#: src/rs01-create.c:441 src/rs02-create.c:519 #, c-format msgid "" "Failed allocating memory for I/O cache.\n" @@ -3614,24 +3596,24 @@ msgstr "" "Сейчас размер буфера %d МБ.\n" "Попробуйте уменьшить его.\n" -#: src/rs01-create.c:619 src/rs01-create.c:749 src/rs01-create.c:1049 -#: src/rs02-create.c:1005 src/rs03-create.c:1157 +#: src/rs01-create.c:569 src/rs01-create.c:693 src/rs01-create.c:987 +#: src/rs02-create.c:964 src/rs03-create.c:1121 #, c-format msgid "Ecc generation: %3d.%1d%%" msgstr "Генерация ecc: %3d.%1d%%" -#: src/rs01-create.c:769 src/rs01-fix.c:219 src/rs01-fix.c:243 -#: src/rs01-fix.c:295 src/rs01-fix.c:332 src/rs01-fix.c:352 src/rs01-fix.c:407 -#: src/rs01-verify.c:457 src/rs01-verify.c:916 src/rs02-create.c:130 -#: src/rs02-fix.c:260 src/rs02-fix.c:281 src/rs02-fix.c:372 -#: src/rs02-verify.c:741 src/rs03-create.c:269 src/rs03-fix.c:278 -#: src/rs03-fix.c:327 src/rs03-fix.c:350 src/rs03-fix.c:429 -#: src/rs03-verify.c:548 src/rs03-verify.c:1096 +#: src/rs01-create.c:712 src/rs01-fix.c:207 src/rs01-fix.c:232 +#: src/rs01-fix.c:278 src/rs01-fix.c:308 src/rs01-fix.c:325 src/rs01-fix.c:378 +#: src/rs01-verify.c:440 src/rs01-verify.c:812 src/rs02-create.c:118 +#: src/rs02-fix.c:233 src/rs02-fix.c:253 src/rs02-fix.c:339 +#: src/rs02-verify.c:719 src/rs03-create.c:257 src/rs03-fix.c:252 +#: src/rs03-fix.c:295 src/rs03-fix.c:317 src/rs03-fix.c:391 +#: src/rs03-verify.c:538 src/rs03-verify.c:1012 #, c-format msgid "Aborted by user request!" msgstr "Прервано пользователем!" -#: src/rs01-create.c:1062 +#: src/rs01-create.c:1000 #, c-format msgid "" "could not write to ecc file \"%s\":\n" @@ -3640,7 +3622,7 @@ msgstr "" "не удалось записать ecc-файл \"%s\":\n" "%s" -#: src/rs01-create.c:1077 +#: src/rs01-create.c:1015 #, c-format msgid "" "Can't write ecc header:\n" @@ -3649,12 +3631,12 @@ msgstr "" "Не удается записать заголовок ecc:\n" "%s" -#: src/rs01-create.c:1085 src/rs02-create.c:1177 src/rs03-create.c:1446 +#: src/rs01-create.c:1023 src/rs02-create.c:1127 src/rs03-create.c:1404 #, c-format msgid "Ecc generation: 100.0%%\n" msgstr "Генерация ecc: 100.0%%\n" -#: src/rs01-create.c:1086 src/rs03-create.c:1453 +#: src/rs01-create.c:1024 src/rs03-create.c:1411 #, c-format msgid "" "Error correction file \"%s\" created.\n" @@ -3663,7 +3645,7 @@ msgstr "" "Создан файл для исправления ошибок \"%s\".\n" "Убедитесь, что этот файл находится на надежном носителе.\n" -#: src/rs01-create.c:1095 src/rs03-create.c:1482 +#: src/rs01-create.c:1031 src/rs03-create.c:1436 msgid "" "The error correction file has been successfully created.\n" "Make sure to keep this file on a reliable medium." @@ -3671,27 +3653,27 @@ msgstr "" "Файл для исправления ошибок успешно создан.\n" "Убедитесь, что этот файл находится на надежном носителе." -#: src/rs01-fix.c:39 src/rs02-fix.c:448 +#: src/rs01-fix.c:41 src/rs02-fix.c:415 #, c-format msgid "Failed seeking in crc area: %s" msgstr "Не удался поиск в crc-области: %s" -#: src/rs01-fix.c:44 src/rs02-fix.c:451 src/rs02-verify.c:444 +#: src/rs01-fix.c:46 src/rs02-fix.c:418 src/rs02-verify.c:438 #, c-format msgid "problem reading crc data: %s" msgstr "проблема при чтении crc-данных: %s" -#: src/rs01-fix.c:148 src/rs02-fix.c:190 src/rs03-fix.c:189 +#: src/rs01-fix.c:138 src/rs02-fix.c:169 src/rs03-fix.c:166 msgid "Repairing of image aborted" msgstr "Исправление образа прервано" -#: src/rs01-fix.c:154 +#: src/rs01-fix.c:144 #, c-format msgid "Error correction file using Method RS01, %d roots, %4.1f%% redundancy." msgstr "Файл для исправления ошибок по методу RS01, %d корней, избыточность %4.1f%%." -#: src/rs01-fix.c:161 src/rs02-fix.c:197 src/rs02-fix.c:229 src/rs03-fix.c:200 -#: src/rs03-fix.c:252 +#: src/rs01-fix.c:151 src/rs02-fix.c:174 src/rs02-fix.c:205 src/rs03-fix.c:175 +#: src/rs03-fix.c:226 #, c-format msgid "" "Repairing the image.\n" @@ -3700,7 +3682,7 @@ msgstr "" "Исправление образа.\n" "%s" -#: src/rs01-fix.c:166 src/rs02-fix.c:235 src/rs03-fix.c:258 +#: src/rs01-fix.c:156 src/rs02-fix.c:211 src/rs03-fix.c:232 #, c-format msgid "" "\n" @@ -3709,7 +3691,7 @@ msgstr "" "\n" "Режим исправления(%s): Поддающиеся восстановлению сектора будут исправлены в образе.\n" -#: src/rs01-fix.c:201 +#: src/rs01-fix.c:191 #, c-format msgid "" "The image file is %lld sectors longer as noted in the\n" @@ -3726,7 +3708,7 @@ msgstr "" "\n" "%s" -#: src/rs01-fix.c:209 src/rs02-fix.c:250 src/rs03-fix.c:317 +#: src/rs01-fix.c:199 src/rs02-fix.c:225 src/rs03-fix.c:287 #, c-format msgid "" "Image file is % sectors longer than expected.\n" @@ -3737,17 +3719,17 @@ msgstr "" "Предполагается, что это носитель в режиме TAO.\n" "% секторов будет удалено в конце образа.\n" -#: src/rs01-fix.c:238 src/rs02-fix.c:276 src/rs03-fix.c:345 +#: src/rs01-fix.c:227 src/rs02-fix.c:248 src/rs03-fix.c:312 msgid "Is it okay to remove the superfluous sectors?" msgstr "Можно удалить лишние сектора?" -#: src/rs01-fix.c:255 src/rs01-fix.c:277 src/rs02-fix.c:290 src/rs02-fix.c:308 -#: src/rs03-fix.c:361 src/rs03-fix.c:381 +#: src/rs01-fix.c:244 src/rs01-fix.c:261 src/rs02-fix.c:262 src/rs02-fix.c:276 +#: src/rs03-fix.c:328 src/rs03-fix.c:344 #, c-format msgid "Image has been truncated by % sectors.\n" msgstr "Образ укорочен на % секторов.\n" -#: src/rs01-fix.c:268 src/rs02-fix.c:302 src/rs03-fix.c:373 +#: src/rs01-fix.c:252 src/rs02-fix.c:270 src/rs03-fix.c:336 msgid "" "Add the --truncate option to the program call\n" "to have the superfluous sectors removed." @@ -3755,7 +3737,7 @@ msgstr "" "Добавьте параметр --truncate к вызову программы,\n" "чтобы лишние сектора были удалены." -#: src/rs01-fix.c:287 src/rs03-fix.c:270 +#: src/rs01-fix.c:270 src/rs03-fix.c:244 #, c-format msgid "" "The image file is %d bytes longer than noted\n" @@ -3766,7 +3748,7 @@ msgstr "" "в ecc-файле. Можно удалить лишние байты\n" "из файла образа?\n" -#: src/rs01-fix.c:308 src/rs03-fix.c:291 +#: src/rs01-fix.c:286 src/rs03-fix.c:261 #, c-format msgid "" "The image file is %d bytes longer than noted\n" @@ -3779,12 +3761,12 @@ msgstr "" "Добавьте параметр --truncate к вызову программы,\n" "чтобы лишние сектора были удалены." -#: src/rs01-fix.c:317 src/rs03-fix.c:300 +#: src/rs01-fix.c:295 src/rs03-fix.c:270 #, c-format msgid "Image has been truncated by %d bytes.\n" msgstr "Образ укорочен на %d байт.\n" -#: src/rs01-fix.c:325 +#: src/rs01-fix.c:303 msgid "" "Image file appears to be truncated.\n" "Consider completing it with another reading pass before going on.\n" @@ -3792,7 +3774,7 @@ msgstr "" "Файл образа, по-видимому, укорочен.\n" "Рекомендуется сначала завершить его еще одним проходом чтения.\n" -#: src/rs01-fix.c:344 +#: src/rs01-fix.c:319 #, c-format msgid "" "Sector %d is missing. Can not compare image and ecc fingerprints.\n" @@ -3801,7 +3783,7 @@ msgstr "" "Сектор %d отсутствует. Не удается сравнить отпечатки файла образа и ecc-файла.\n" "Еще раз проверьте, что файл образа и ecc-файл подходят друг к другу.\n" -#: src/rs01-fix.c:360 +#: src/rs01-fix.c:332 msgid "" "Fingerprints of image and ecc file do not match.\n" "Image and ecc file do not belong together.\n" @@ -3809,17 +3791,17 @@ msgstr "" "Отпечатки файла образа и ecc-файла не соответствуют друг другу.\n" "Файл образа и ecc-файл не подходят друг к другу.\n" -#: src/rs01-fix.c:479 +#: src/rs01-fix.c:447 #, c-format msgid "* %3d unrepairable sectors: " msgstr "* %3d не поддающиеся исправлению сектора: " -#: src/rs01-fix.c:527 +#: src/rs01-fix.c:495 #, c-format msgid "Failed seeking in ecc area: %s" msgstr "Не удался поиск в crc-области: %s" -#: src/rs01-fix.c:531 +#: src/rs01-fix.c:499 #, c-format msgid "" "Can't read ecc file:\n" @@ -3828,27 +3810,27 @@ msgstr "" "Не удается прочитать ecc-файл:\n" "%s" -#: src/rs01-fix.c:727 +#: src/rs01-fix.c:695 #, c-format msgid "-> Error located in sector % at byte %4d (value %02x '%c', expected %02x '%c')\n" msgstr "-> Ошибка находится в секторе % в байте %4d (значение %02x '%c', ожидалось %02x '%c')\n" -#: src/rs01-fix.c:734 +#: src/rs01-fix.c:702 #, c-format msgid "Unexpected byte error in sector %, byte %d\n" msgstr "Неожиданная байтовая ошибка в секторе %, байт %d\n" -#: src/rs01-fix.c:740 +#: src/rs01-fix.c:708 #, c-format msgid "Bad error location %d; corrupted .ecc file?\n" msgstr "Неправильное местоположение ошибки %d; поврежденный .ecc-файл?\n" -#: src/rs01-fix.c:750 src/rs02-fix.c:752 src/rs03-fix.c:819 +#: src/rs01-fix.c:718 src/rs02-fix.c:716 src/rs03-fix.c:778 #, c-format msgid " %3d repaired sectors: " msgstr " %3d исправленные сектора: " -#: src/rs01-fix.c:769 src/rs02-fix.c:794 src/rs03-fix.c:870 +#: src/rs01-fix.c:737 src/rs02-fix.c:758 src/rs03-fix.c:829 #, c-format msgid "" "could not write medium sector %:\n" @@ -3857,175 +3839,175 @@ msgstr "" "не удалось записать сектор % носителя:\n" "%s" -#: src/rs01-fix.c:798 src/rs02-fix.c:835 src/rs03-fix.c:927 +#: src/rs01-fix.c:766 src/rs02-fix.c:797 src/rs03-fix.c:886 #, c-format msgid "Ecc progress: %3d.%1d%%" msgstr "Прогресс исправления: %3d.%1d%%" -#: src/rs01-fix.c:810 src/rs02-fix.c:849 src/rs03-fix.c:939 +#: src/rs01-fix.c:778 src/rs02-fix.c:811 src/rs03-fix.c:898 #, c-format msgid "Ecc progress: 100.0%%\n" msgstr "Прогресс исправления: 100.0%%\n" -#: src/rs01-fix.c:811 +#: src/rs01-fix.c:779 #, c-format msgid "Repaired sectors: % \n" msgstr "Исправленные сектора: % \n" -#: src/rs01-fix.c:813 src/rs02-fix.c:854 src/rs03-fix.c:944 +#: src/rs01-fix.c:781 src/rs02-fix.c:816 src/rs03-fix.c:905 #, c-format msgid "Unrepaired sectors: %\n" msgstr "Не исправленные сектора: %\n" -#: src/rs01-fix.c:817 src/rs02-fix.c:858 src/rs03-fix.c:948 +#: src/rs01-fix.c:783 src/rs02-fix.c:818 src/rs03-fix.c:907 #, c-format msgid "Image sectors could not be fully restored (% repaired; % unrepaired)" msgstr "Сектора образа не могут быть полностью восстановлены (% исправлено; % не исправлено)" -#: src/rs01-fix.c:824 src/rs02-fix.c:865 src/rs03-fix.c:956 +#: src/rs01-fix.c:789 src/rs02-fix.c:824 src/rs03-fix.c:914 msgid "Good! All sectors are already present." msgstr "Хорошо! Все сектора уже есть." -#: src/rs01-fix.c:828 src/rs02-fix.c:869 src/rs03-fix.c:961 +#: src/rs01-fix.c:793 src/rs02-fix.c:828 src/rs03-fix.c:919 msgid "Good! All sectors are repaired." msgstr "Хорошо! Все сектора исправлены." -#: src/rs01-fix.c:833 src/rs02-fix.c:874 src/rs03-fix.c:967 +#: src/rs01-fix.c:798 src/rs02-fix.c:833 src/rs03-fix.c:925 #, c-format msgid "Erasure counts per ecc block: avg = %.1f; worst = %d.\n" msgstr "Количество стертых мест на ecc-блок: среднее = %.1f; худшее = %d.\n" -#: src/rs01-fix.c:839 src/rs02-fix.c:880 src/rs03-fix.c:973 +#: src/rs01-fix.c:803 src/rs02-fix.c:838 src/rs03-fix.c:930 msgid "Repair results:" msgstr "Результаты исправления:" -#: src/rs01-verify.c:48 src/rs01-verify.c:417 src/rs03-verify.c:61 +#: src/rs01-verify.c:50 src/rs01-verify.c:410 src/rs03-verify.c:64 msgid "n/a" msgstr "нет" -#: src/rs01-verify.c:129 src/rs01-verify.c:150 src/rs02-verify.c:124 -#: src/rs02-verify.c:145 src/rs03-verify.c:133 src/rs03-verify.c:154 +#: src/rs01-verify.c:133 src/rs01-verify.c:154 src/rs02-verify.c:126 +#: src/rs02-verify.c:147 src/rs03-verify.c:136 src/rs03-verify.c:157 msgid "Missing sectors" msgstr "Недостающие сектора" -#: src/rs01-verify.c:193 src/rs02-verify.c:182 +#: src/rs01-verify.c:197 src/rs02-verify.c:184 msgid "Image file summary" msgstr "Отчет по файлу образа" -#: src/rs01-verify.c:202 src/rs03-verify.c:282 +#: src/rs01-verify.c:206 src/rs03-verify.c:285 msgid "No image present." msgstr "Нет образов." -#: src/rs01-verify.c:212 src/rs01-verify.c:302 src/rs02-verify.c:192 -#: src/rs02-verify.c:298 src/rs03-verify.c:293 +#: src/rs01-verify.c:216 src/rs01-verify.c:306 src/rs02-verify.c:194 +#: src/rs02-verify.c:300 src/rs03-verify.c:296 msgid "Medium sectors:" msgstr "Секторов на носителе:" -#: src/rs01-verify.c:220 +#: src/rs01-verify.c:224 msgid "Checksum errors:" msgstr "Ошибки контрольной суммы:" -#: src/rs01-verify.c:228 +#: src/rs01-verify.c:232 msgid "Missing Sectors:" msgstr "Недостающие сектора:" -#: src/rs01-verify.c:236 src/rs01-verify.c:310 +#: src/rs01-verify.c:240 src/rs01-verify.c:314 msgid "Image checksum:" msgstr "Контрольная сумма образа:" -#: src/rs01-verify.c:248 src/rs02-verify.c:244 src/rs03-verify.c:262 +#: src/rs01-verify.c:252 src/rs02-verify.c:246 src/rs03-verify.c:265 msgid "Image state" msgstr "Состояние образа" -#: src/rs01-verify.c:259 +#: src/rs01-verify.c:263 msgid "Error correction file summary" msgstr "Отчет по файлу для исправления ошибок" -#: src/rs01-verify.c:278 src/rs02-verify.c:274 src/rs03-verify.c:222 +#: src/rs01-verify.c:282 src/rs02-verify.c:276 src/rs03-verify.c:225 msgid "Created by:" msgstr "Создано:" -#: src/rs01-verify.c:286 src/rs02-verify.c:282 src/rs03-verify.c:213 +#: src/rs01-verify.c:290 src/rs02-verify.c:284 src/rs03-verify.c:216 msgid "Method:" msgstr "Метод:" -#: src/rs01-verify.c:294 src/rs02-verify.c:290 src/rs03-verify.c:231 +#: src/rs01-verify.c:298 src/rs02-verify.c:292 src/rs03-verify.c:234 msgid "Requires:" msgstr "Требует:" -#: src/rs01-verify.c:318 src/rs03-verify.c:249 +#: src/rs01-verify.c:322 src/rs03-verify.c:252 msgid "Fingerprint:" msgstr "Отпечаток:" -#: src/rs01-verify.c:326 +#: src/rs01-verify.c:330 msgid "Ecc blocks:" msgstr "Ecc-блоки:" -#: src/rs01-verify.c:334 src/rs02-verify.c:50 src/rs02-verify.c:322 +#: src/rs01-verify.c:338 src/rs02-verify.c:52 src/rs02-verify.c:324 msgid "Ecc checksum:" msgstr "Контрольная сумма ecc:" -#: src/rs01-verify.c:398 +#: src/rs01-verify.c:397 msgid "Comparison aborted" msgstr "Сравнение прервано" -#: src/rs01-verify.c:405 src/rs01-verify.c:560 +#: src/rs01-verify.c:402 src/rs01-verify.c:523 msgid "Comparing image and error correction files." msgstr "Сравнение файлов образа и исправления ошибок." -#: src/rs01-verify.c:406 src/rs03-verify.c:737 src/rs03-verify.c:748 +#: src/rs01-verify.c:403 src/rs03-verify.c:700 src/rs03-verify.c:708 msgid "- Checking image file -" msgstr "- Проверка файла образа -" -#: src/rs01-verify.c:424 src/rs01-verify.c:567 src/rs01-verify.c:583 +#: src/rs01-verify.c:417 src/rs01-verify.c:529 src/rs01-verify.c:542 msgid "not present\n" msgstr "отсутствует\n" -#: src/rs01-verify.c:434 src/rs02-verify.c:620 +#: src/rs01-verify.c:424 src/rs02-verify.c:601 #, c-format msgid "present, contains % medium sectors.\n" msgstr "присутствует, содержит % секторов носителя.\n" -#: src/rs01-verify.c:441 +#: src/rs01-verify.c:428 #, c-format msgid "present, contains % medium sectors and %d bytes.\n" msgstr "присутствует, содержит % секторов носителя и %d байт.\n" -#: src/rs01-verify.c:445 src/rs01-verify.c:726 src/rs01-verify.c:749 +#: src/rs01-verify.c:430 src/rs01-verify.c:659 src/rs01-verify.c:676 #, c-format msgid "% sectors + %d bytes" msgstr "% секторов + %d байт" -#: src/rs01-verify.c:471 +#: src/rs01-verify.c:454 #, c-format msgid "* truncated image : % sectors too short\n" msgstr "* укороченный образ : на % секторов меньше, чем надо\n" -#: src/rs01-verify.c:475 +#: src/rs01-verify.c:456 #, c-format msgid "% (% sectors too short)" msgstr "% (% секторов слишком короткие)" -#: src/rs01-verify.c:499 +#: src/rs01-verify.c:478 #, c-format msgid "* image too long : % excess sectors\n" msgstr "* образ слишком длинный : % лишних секторов\n" -#: src/rs01-verify.c:503 +#: src/rs01-verify.c:480 #, c-format msgid "% (% excess sectors)" msgstr "% (% лишние сектора)" -#: src/rs01-verify.c:506 src/rs01-verify.c:549 +#: src/rs01-verify.c:483 src/rs01-verify.c:515 #, c-format msgid "Bad image." msgstr "Плохой образ." -#: src/rs01-verify.c:512 src/rs02-verify.c:707 src/rs03-verify.c:1060 +#: src/rs01-verify.c:487 src/rs02-verify.c:686 src/rs03-verify.c:973 msgid "* quick mode : image NOT scanned\n" msgstr "" -#: src/rs01-verify.c:520 +#: src/rs01-verify.c:495 #, c-format msgid "" "- good image : all sectors present\n" @@ -4034,12 +4016,12 @@ msgstr "" "- хороший образ : все сектора есть\n" "- md5sum образа : %s\n" -#: src/rs01-verify.c:524 src/rs02-verify.c:926 src/rs03-verify.c:1388 +#: src/rs01-verify.c:497 src/rs02-verify.c:904 src/rs03-verify.c:1299 #, c-format msgid "Good image." msgstr "Хороший образ." -#: src/rs01-verify.c:530 +#: src/rs01-verify.c:501 #, c-format msgid "" "* suspicious image : all sectors present, but % CRC errors\n" @@ -4048,74 +4030,74 @@ msgstr "" "* подозрительный образ : все сектора есть, но % CRC-ошибок\n" "- md5sum образа : %s\n" -#: src/rs01-verify.c:535 +#: src/rs01-verify.c:504 #, c-format msgid "Image complete, but contains checksum errors!" msgstr "Образ завершен, но содержит ошибки контрольной суммы!" -#: src/rs01-verify.c:543 src/rs02-verify.c:892 +#: src/rs01-verify.c:510 src/rs02-verify.c:871 #, c-format msgid "* BAD image : % sectors missing\n" msgstr "* ПЛОХОЙ образ : % секторов не хватает\n" -#: src/rs01-verify.c:544 src/rs02-verify.c:896 src/rs03-verify.c:1320 +#: src/rs01-verify.c:511 src/rs02-verify.c:875 src/rs03-verify.c:1240 #, c-format msgid "* BAD image : % sectors missing, % CRC errors\n" msgstr "* ПЛОХОЙ образ : % секторов не хватает, % CRC-ошибок\n" -#: src/rs01-verify.c:561 src/rs03-verify.c:1275 +#: src/rs01-verify.c:524 src/rs03-verify.c:1194 msgid "- Checking ecc file -" msgstr "- Проверка ecc-файла -" -#: src/rs01-verify.c:571 src/rs01-verify.c:601 +#: src/rs01-verify.c:531 src/rs01-verify.c:559 msgid "No error correction file present." msgstr "Нет файла для исправления ошибок." -#: src/rs01-verify.c:580 +#: src/rs01-verify.c:539 msgid "permission denied\n" msgstr "" -#: src/rs01-verify.c:586 +#: src/rs01-verify.c:545 msgid "invalid\n" msgstr "" -#: src/rs01-verify.c:589 +#: src/rs01-verify.c:548 msgid "defective header (unusable)\n" msgstr "" -#: src/rs01-verify.c:592 +#: src/rs01-verify.c:551 msgid "unknown codec (unusable)\n" msgstr "" -#: src/rs01-verify.c:595 +#: src/rs01-verify.c:554 msgid "unusable\n" msgstr "" -#: src/rs01-verify.c:625 src/rs01-verify.c:639 src/rs02-verify.c:957 -#: src/rs02-verify.c:972 +#: src/rs01-verify.c:582 src/rs01-verify.c:592 src/rs02-verify.c:930 +#: src/rs02-verify.c:941 msgid "created by dvdisaster" msgstr "создано с помощью dvdisaster" -#: src/rs01-verify.c:651 +#: src/rs01-verify.c:601 msgid "created by dvdisaster-0.41.x.\n" msgstr "создано с помощью dvdisaster-0.41.x.\n" -#: src/rs01-verify.c:663 src/rs02-verify.c:988 src/rs03-verify.c:806 +#: src/rs01-verify.c:610 src/rs02-verify.c:954 src/rs03-verify.c:762 #, c-format msgid "- method : %4s, %d roots, %4.1f%% redundancy.\n" msgstr "- метод : %4s, %d корней, избыточность %4.1f%%.\n" -#: src/rs01-verify.c:668 src/rs02-verify.c:994 src/rs03-verify.c:812 +#: src/rs01-verify.c:614 src/rs02-verify.c:958 src/rs03-verify.c:766 #, c-format msgid "%4s, %d roots, %4.1f%% redundancy" msgstr "%4s, %d корней, избыточность %4.1f%%" -#: src/rs01-verify.c:676 src/rs02-verify.c:1002 +#: src/rs01-verify.c:621 src/rs02-verify.c:965 #, c-format msgid "- requires : dvdisaster-%d.%d (good)\n" msgstr "- требуется : dvdisaster-%d.%d (хорошо)\n" -#: src/rs01-verify.c:687 src/rs02-verify.c:1015 +#: src/rs01-verify.c:629 src/rs02-verify.c:975 #, c-format msgid "" "* requires : dvdisaster-%d.%d (BAD)\n" @@ -4123,203 +4105,203 @@ msgid "" "* : Please upgrade dvdisaster.\n" msgstr "" -#: src/rs01-verify.c:701 src/rs02-verify.c:1030 src/rs03-verify.c:883 +#: src/rs01-verify.c:641 src/rs02-verify.c:989 src/rs03-verify.c:824 #, c-format msgid "Please upgrade your version of dvdisaster!" msgstr "Обновите Вашу версию программы dvdisaster!" -#: src/rs01-verify.c:714 +#: src/rs01-verify.c:652 #, c-format msgid "- medium sectors : %\n" msgstr "- секторов носителя : %\n" -#: src/rs01-verify.c:721 +#: src/rs01-verify.c:656 #, c-format msgid "- medium sectors : % sectors + %d bytes\n" msgstr "- секторов носителя : % секторов + %d байт\n" -#: src/rs01-verify.c:737 +#: src/rs01-verify.c:669 #, c-format msgid "- medium sectors : % (good)\n" msgstr "- сектора носителя : % (хорошо)\n" -#: src/rs01-verify.c:744 +#: src/rs01-verify.c:673 #, c-format msgid "- medium sectors : % sectors + %d bytes (good)\n" msgstr "- сектора носителя : % секторов + %d байт (хорошо)\n" -#: src/rs01-verify.c:758 src/rs02-verify.c:1054 +#: src/rs01-verify.c:684 src/rs02-verify.c:1009 #, c-format msgid "* medium sectors : % (BAD, perhaps TAO/DAO mismatch)\n" msgstr "* сектора носителя : % (ПЛОХО, возможно, несоответствие TAO/DAO)\n" -#: src/rs01-verify.c:771 src/rs02-verify.c:1056 +#: src/rs01-verify.c:696 src/rs02-verify.c:1011 #, c-format msgid "* medium sectors : % (BAD)\n" msgstr "* сектора носителя : % (ПЛОХО)\n" -#: src/rs01-verify.c:777 src/rs01-verify.c:790 +#: src/rs01-verify.c:700 src/rs01-verify.c:709 #, c-format msgid "Image size does not match error correction file." msgstr "Размер образа не соответствует файлу для исправления ошибок." -#: src/rs01-verify.c:782 +#: src/rs01-verify.c:703 #, c-format msgid "* medium sectors : % sectors + %d bytes (BAD)\n" msgstr "* сектора носителя : % секторов + %d байт (ПЛОХО)\n" -#: src/rs01-verify.c:787 +#: src/rs01-verify.c:706 #, c-format msgid "% sectors + %d bytes" msgstr "% секторов + %d байт" -#: src/rs01-verify.c:804 +#: src/rs01-verify.c:722 #, c-format msgid "- image md5sum : %s (good)\n" msgstr "- md5sum образа : %s (хорошо)\n" -#: src/rs01-verify.c:805 +#: src/rs01-verify.c:726 #, c-format msgid "* image md5sum : %s (BAD)\n" msgstr "* md5sum образа : %s (ПЛОХО)\n" -#: src/rs01-verify.c:817 +#: src/rs01-verify.c:734 #, c-format msgid "- image md5sum : %s\n" msgstr "- md5sum образа : %s\n" -#: src/rs01-verify.c:827 src/rs03-verify.c:910 +#: src/rs01-verify.c:741 src/rs03-verify.c:846 msgid "* fingerprint match: NOT POSSIBLE - related sector is missing in image!\n" msgstr "* соответствие отпечатка: НЕВОЗМОЖНО - соответствующий сектор отсутствует в образе!\n" -#: src/rs01-verify.c:830 src/rs03-verify.c:914 +#: src/rs01-verify.c:743 src/rs03-verify.c:848 #, c-format msgid "missing sector prevents calculation" msgstr "недостающие сектора мешают расчету" -#: src/rs01-verify.c:836 src/rs03-verify.c:920 +#: src/rs01-verify.c:749 src/rs03-verify.c:853 msgid "* fingerprint match: MISMATCH - .iso and .ecc don't belong together!\n" msgstr "* соответствие отпечатка: НЕСООТВЕТСТВИЕ - .iso и .ecc не подходят друг к другу!\n" -#: src/rs01-verify.c:841 src/rs03-verify.c:925 +#: src/rs01-verify.c:752 src/rs03-verify.c:856 #, c-format msgid "mismatch" msgstr "несоответствие" -#: src/rs01-verify.c:844 src/rs03-verify.c:928 +#: src/rs01-verify.c:755 src/rs03-verify.c:859 #, c-format msgid "Image and error correction files do not belong together!" msgstr "Образ и файл для исправления ошибок не относятся друг к другу!" -#: src/rs01-verify.c:849 src/rs03-verify.c:933 +#: src/rs01-verify.c:758 src/rs03-verify.c:862 msgid "- fingerprint match: good\n" msgstr "- соответствие отпечатка: хорошее\n" -#: src/rs01-verify.c:852 src/rs03-verify.c:936 +#: src/rs01-verify.c:759 src/rs03-verify.c:863 msgid "good" msgstr "хорошо" -#: src/rs01-verify.c:861 +#: src/rs01-verify.c:767 msgid "* quick mode : ecc file NOT scanned\n" msgstr "" -#: src/rs01-verify.c:869 +#: src/rs01-verify.c:775 #, c-format msgid "- ecc blocks : % (good)\n" msgstr "- ecc-блоки : % (хорошо)\n" -#: src/rs01-verify.c:876 +#: src/rs01-verify.c:779 #, c-format msgid "* ecc blocks : % (BAD, expected %)\n" msgstr "* ecc-блоки : % (ПЛОХО, ожидалось %)\n" -#: src/rs01-verify.c:879 +#: src/rs01-verify.c:782 #, c-format msgid "% (bad, expected %)" msgstr "% (плохо, ожидалось %)" -#: src/rs01-verify.c:905 +#: src/rs01-verify.c:804 #, c-format msgid "- ecc md5sum : %3d%%" msgstr "- ecc md5sum : %3d%%" -#: src/rs01-verify.c:926 +#: src/rs01-verify.c:822 msgid "* ecc md5sum : BAD, ecc file may be damaged!\n" msgstr "* ecc md5sum : ПЛОХО, ecc-файл может быть поврежден!\n" -#: src/rs01-verify.c:929 +#: src/rs01-verify.c:823 #, c-format msgid "bad" msgstr "плохо" -#: src/rs01-verify.c:931 +#: src/rs01-verify.c:825 #, c-format msgid "Error correction file may be damaged!" msgstr "Файл для исправления ошибок может быть поврежден!" -#: src/rs01-verify.c:936 src/rs02-verify.c:1137 +#: src/rs01-verify.c:828 src/rs02-verify.c:1075 #, c-format msgid "- ecc md5sum : %s (good)\n" msgstr "- ecc md5sum : %s (хорошо)\n" -#: src/rs01-verify.c:953 +#: src/rs01-verify.c:841 #, c-format msgid "Good error correction file." msgstr "Хороший файл для исправления ошибок." -#: src/rs01-window.c:140 src/rs02-window.c:89 src/rs03-window.c:94 +#: src/rs01-window.c:137 src/rs02-window.c:85 src/rs03-window.c:90 msgid "2. Creating error correction data:" msgstr "2. Создание данных для для исправления ошибок:" -#: src/rs01-window.c:164 +#: src/rs01-window.c:161 msgid "Show reading speed curve" msgstr "показать кривую скорости чтения" -#: src/rs01-window.c:203 src/rs02-window.c:141 src/rs03-window.c:174 +#: src/rs01-window.c:200 src/rs02-window.c:137 src/rs03-window.c:170 #, c-format msgid "Repaired: %" msgstr "Исправлено: %" -#: src/rs01-window.c:204 src/rs02-window.c:142 src/rs03-window.c:175 +#: src/rs01-window.c:201 src/rs02-window.c:139 src/rs03-window.c:171 #, c-format msgid "Unrepairable: %" msgstr "Не исправляются: %" -#: src/rs01-window.c:205 src/rs02-window.c:143 src/rs03-window.c:176 +#: src/rs01-window.c:202 src/rs02-window.c:141 src/rs03-window.c:172 #, c-format msgid "Progress: %3d.%1d%%" msgstr "Прогресс: %3d.%1d%%" -#: src/rs01-window.c:414 src/rs02-window.c:348 src/rs03-window.c:381 +#: src/rs01-window.c:405 src/rs02-window.c:346 src/rs03-window.c:377 msgid "Errors/Ecc block" msgstr "Ошибки/Ecc-блок" -#: src/rs01-window.c:450 src/rs02-window.c:378 src/rs03-preferences.c:318 -#: src/rs03-preferences.c:328 +#: src/rs01-window.c:441 src/rs02-window.c:376 src/rs03-preferences.c:320 +#: src/rs03-preferences.c:330 #, c-format msgid "%4.1f%% redundancy (%d roots)" msgstr "избыточность %4.1f%% (%d корней)" -#: src/rs01-window.c:467 src/rs01-window.c:874 src/rs01-window.c:880 -#: src/rs01-window.c:881 src/rs02-window.c:395 src/rs02-window.c:1362 -#: src/rs02-window.c:1368 src/rs02-window.c:1369 +#: src/rs01-window.c:458 src/rs01-window.c:866 src/rs01-window.c:872 +#: src/rs01-window.c:873 src/rs02-window.c:393 src/rs02-window.c:1369 +#: src/rs02-window.c:1375 src/rs02-window.c:1376 #, c-format msgid "%d MiB of file cache" msgstr "%d МБ файлового буфера" -#: src/rs01-window.c:669 src/rs03-preferences.c:558 +#: src/rs01-window.c:660 src/rs03-preferences.c:560 msgid "Redundancy for new error correction files" msgstr "Избыточность для новых файлов исправления ошибок" -#: src/rs01-window.c:678 src/rs03-preferences.c:585 +#: src/rs01-window.c:669 src/rs03-preferences.c:587 msgid "Normal redundancy" msgstr "Нормальная избыточность" -#: src/rs01-window.c:678 src/rs03-preferences.c:585 +#: src/rs01-window.c:669 src/rs03-preferences.c:587 msgid "Normal" msgstr "Нормальная" -#: src/rs01-window.c:701 src/rs03-preferences.c:609 +#: src/rs01-window.c:692 src/rs03-preferences.c:611 #, c-format msgid "" "Normal redundancy\n" @@ -4332,15 +4314,15 @@ msgstr "" "Предустановленный параметр \"нормальная\" создает избыточность в 14.3%%.\n" "Это позволяет использовать оптимизированный программный код для ускорения создания файла для исправления ошибок." -#: src/rs01-window.c:708 src/rs03-preferences.c:616 +#: src/rs01-window.c:699 src/rs03-preferences.c:618 msgid "High redundancy" msgstr "Высокая избыточность" -#: src/rs01-window.c:708 src/rs03-preferences.c:616 +#: src/rs01-window.c:699 src/rs03-preferences.c:618 msgid "High" msgstr "Высокая" -#: src/rs01-window.c:731 src/rs03-preferences.c:639 +#: src/rs01-window.c:722 src/rs03-preferences.c:641 #, c-format msgid "" "High redundancy\n" @@ -4353,15 +4335,15 @@ msgstr "" "Предустановленный параметр \"high\" создает избыточность в 33.5%%.\n" "Это позволяет использовать оптимизированный программный код для ускорения создания файла для исправления ошибок." -#: src/rs01-window.c:739 src/rs03-preferences.c:647 +#: src/rs01-window.c:730 src/rs03-preferences.c:648 msgid "Other redundancy" msgstr "Другая избыточность" -#: src/rs01-window.c:739 src/rs03-preferences.c:647 +#: src/rs01-window.c:730 src/rs03-preferences.c:648 msgid "Other" msgstr "Другая" -#: src/rs01-window.c:778 src/rs03-preferences.c:686 +#: src/rs01-window.c:769 src/rs03-preferences.c:687 #, c-format msgid "" "Other redundancy\n" @@ -4374,19 +4356,19 @@ msgstr "" "Задает избыточность в процентах.\n" "Файл для исправления ошибок с избыточностью в x%% будет составлять приблизительно x%% размера соответствующего файла образа." -#: src/rs01-window.c:786 src/rs03-preferences.c:694 +#: src/rs01-window.c:777 src/rs03-preferences.c:695 msgid "Space-delimited redundancy" msgstr "Избыточность, ограниченная местом" -#: src/rs01-window.c:786 src/rs02-window.c:1293 src/rs03-preferences.c:694 +#: src/rs01-window.c:778 src/rs02-window.c:1299 src/rs03-preferences.c:696 msgid "Use at most" msgstr "Использовать не больше" -#: src/rs01-window.c:811 src/rs03-preferences.c:719 +#: src/rs01-window.c:803 src/rs03-preferences.c:721 msgid "MiB for error correction data" msgstr "МБ для данных для исправления ошибок" -#: src/rs01-window.c:828 src/rs03-preferences.c:736 +#: src/rs01-window.c:820 src/rs03-preferences.c:738 msgid "" "Space-delimited redundancy\n" "\n" @@ -4400,19 +4382,19 @@ msgstr "" "\n" "Предупреждение: Когда один и тот же размер используется для образов очень разного размера, для меньших образов получается избыточность больше, чем для более крупных. Обычно это не то, что Вам нужно." -#: src/rs01-window.c:871 src/rs02-window.c:1359 +#: src/rs01-window.c:863 src/rs02-window.c:1366 msgid "Memory utilization" msgstr "Использование памяти" -#: src/rs01-window.c:875 src/rs02-window.c:1363 +#: src/rs01-window.c:867 src/rs02-window.c:1370 msgid "File cache" msgstr "Файловый буфер" -#: src/rs01-window.c:887 src/rs02-window.c:1375 src/rs03-preferences.c:917 +#: src/rs01-window.c:879 src/rs02-window.c:1382 src/rs03-preferences.c:919 msgid "Use" msgstr "Используется" -#: src/rs01-window.c:916 src/rs02-window.c:1404 +#: src/rs01-window.c:908 src/rs02-window.c:1412 msgid "" "File cache\n" "\n" @@ -4422,23 +4404,23 @@ msgstr "" "\n" "dvdisaster оптимизирует доступ к образам и файлам для исправления ошибок с помощью собственного буфера. Предустановленное значение в 32 МБ подходит для большинства систем." -#: src/rs02-common.c:580 src/rs02-common.c:592 src/rs02-verify.c:649 -#: src/rs03-common.c:643 +#: src/rs02-common.c:578 src/rs02-common.c:590 src/rs02-verify.c:628 +#: src/rs03-common.c:644 #, c-format msgid "Failed seeking to ecc header at %: %s\n" msgstr "Не удалось перейти к ecc-заголовку в %: %s\n" -#: src/rs02-common.c:584 src/rs02-common.c:596 src/rs03-common.c:647 +#: src/rs02-common.c:582 src/rs02-common.c:594 src/rs03-common.c:648 #, c-format msgid "Failed writing ecc header at %: %s\n" msgstr "Не удалось записать ecc-заголовок в %: %s\n" -#: src/rs02-create.c:122 src/rs03-create.c:261 +#: src/rs02-create.c:111 src/rs03-create.c:250 #, c-format msgid "Aborted by user request! (partial ecc data removed from image)" msgstr "Прервано пользователем! (незавершенные ecc-данные удалены из образа)" -#: src/rs02-create.c:156 src/rs03-create.c:318 +#: src/rs02-create.c:142 src/rs03-create.c:302 #, c-format msgid "" "Image \"%s\" already contains error correction information.\n" @@ -4447,11 +4429,11 @@ msgstr "" "Образ \"%s\" уже содержит информацию для для исправления ошибок.\n" "Укорочение образа до части с данными (% секторов).\n" -#: src/rs02-create.c:173 src/rs03-create.c:347 +#: src/rs02-create.c:157 src/rs03-create.c:329 msgid "Image size is now" msgstr "" -#: src/rs02-create.c:236 +#: src/rs02-create.c:218 msgid "" "Image contains unread(able) sectors.\n" "Error correction information can only be\n" @@ -4461,7 +4443,7 @@ msgstr "" "Информация для исправления ошибок может быть лишь\n" "добавлена к полным (неповрежденным) образам.\n" -#: src/rs02-create.c:240 +#: src/rs02-create.c:222 #, c-format msgid "" "Sector % in the image is marked unreadable\n" @@ -4486,34 +4468,34 @@ msgstr "" "Информация для исправления ошибок может быть\n" "добавлена только к полным (неповрежденным) образам.\n" -#: src/rs02-create.c:257 src/rs02-create.c:327 src/rs02-create.c:340 +#: src/rs02-create.c:239 src/rs02-create.c:304 src/rs02-create.c:314 #, c-format msgid "Preparing image (checksums, adding space): %3d%%" msgstr "Подготовка образа (контрольные суммы, увеличение размера): %3d%%" -#: src/rs02-create.c:294 src/rs02-create.c:304 src/rs02-fix.c:96 -#: src/rs03-create.c:454 src/rs03-create.c:465 src/rs03-fix.c:94 +#: src/rs02-create.c:273 src/rs02-create.c:283 src/rs02-fix.c:90 +#: src/rs03-create.c:438 src/rs03-create.c:449 src/rs03-fix.c:87 #, c-format msgid "Failed seeking to end of image: %s\n" msgstr "Не удалось перейти к концу образа: %s\n" -#: src/rs02-create.c:298 src/rs02-create.c:321 src/rs02-fix.c:109 -#: src/rs03-create.c:439 src/rs03-fix.c:112 +#: src/rs02-create.c:277 src/rs02-create.c:298 src/rs02-fix.c:103 +#: src/rs03-create.c:423 src/rs03-fix.c:105 #, c-format msgid "Failed expanding the image: %s\n" msgstr "Не удалось увеличить образ: %s\n" -#: src/rs02-create.c:326 src/rs02-create.c:339 +#: src/rs02-create.c:303 src/rs02-create.c:313 #, c-format msgid "Preparing image (checksums taken from cache, adding space): %3d%%" msgstr "" -#: src/rs02-create.c:1071 src/rs03-create.c:1309 +#: src/rs02-create.c:1027 src/rs03-create.c:1267 msgid "Error correction data creation aborted" msgstr "Создание данных для исправления ошибок прервано" -#: src/rs02-create.c:1102 src/rs02-create.c:1122 src/rs03-create.c:1314 -#: src/rs03-create.c:1369 +#: src/rs02-create.c:1055 src/rs02-create.c:1073 src/rs03-create.c:1271 +#: src/rs03-create.c:1326 #, c-format msgid "" "Augmenting the image with error correction data.\n" @@ -4522,16 +4504,16 @@ msgstr "" "Присоединение к образу данных для исправления ошибок.\n" "%s" -#: src/rs02-create.c:1103 src/rs03-create.c:1315 +#: src/rs02-create.c:1056 src/rs03-create.c:1272 msgid "- checking image -" msgstr "- проверка образа -" -#: src/rs02-create.c:1118 +#: src/rs02-create.c:1069 #, c-format msgid "Encoding with Method RS02: % MiB data, % MiB ecc (%d roots; %4.1f%% redundancy)." msgstr "Кодирование методом RS02: % МБ данных, % МБ ecc (%d корней; избыточность %4.1f%%)." -#: src/rs02-create.c:1127 +#: src/rs02-create.c:1077 #, c-format msgid "" "Augmenting image with Method RS02:\n" @@ -4540,7 +4522,7 @@ msgstr "" "Увеличение образа с использованием метода RS02:\n" " % МБ данных, % МБ ecc (%d корней; избыточность %4.1f%%)." -#: src/rs02-create.c:1136 +#: src/rs02-create.c:1086 #, c-format msgid "" "Not enough space on medium left for error correction data.\n" @@ -4549,15 +4531,15 @@ msgid "" "not an option, please create a separate error correction file." msgstr "" -#: src/rs02-create.c:1146 src/rs03-create.c:1409 +#: src/rs02-create.c:1096 src/rs03-create.c:1367 #, c-format msgid "" "Using redundancies below 20% may not give\n" "the expected data loss protection.\n" msgstr "" -#: src/rs02-create.c:1178 src/rs02-create.c:1188 src/rs03-create.c:1448 -#: src/rs03-create.c:1476 +#: src/rs02-create.c:1128 src/rs02-create.c:1136 src/rs03-create.c:1406 +#: src/rs03-create.c:1429 #, c-format msgid "" "Image has been augmented with error correction data.\n" @@ -4566,21 +4548,21 @@ msgstr "" "Образ увеличен за счет добавления данных для исправления ошибок.\n" "Новый размер образа % МБ (% секторов).\n" -#: src/rs02-fix.c:119 src/rs02-fix.c:130 src/rs03-fix.c:122 src/rs03-fix.c:133 +#: src/rs02-fix.c:108 src/rs02-fix.c:114 src/rs03-fix.c:110 src/rs03-fix.c:116 #, c-format msgid "Expanding image: %3d%%" msgstr "Увеличение образа: %3d%%" -#: src/rs02-fix.c:198 src/rs03-fix.c:201 +#: src/rs02-fix.c:175 src/rs03-fix.c:176 msgid "Opening files..." msgstr "Открывание файлов..." -#: src/rs02-fix.c:224 +#: src/rs02-fix.c:200 #, c-format msgid "Image contains error correction data: Method RS02, %d roots, %4.1f%% redundancy." msgstr "Образ содержит данные для исправления ошибок: метод RS02, %d корней, избыточность %4.1f%%." -#: src/rs02-fix.c:242 src/rs03-fix.c:309 +#: src/rs02-fix.c:218 src/rs03-fix.c:279 #, c-format msgid "" "The image file is %lld sectors longer as noted in the\n" @@ -4597,22 +4579,22 @@ msgstr "" "\n" "%s" -#: src/rs02-fix.c:499 src/rs03-fix.c:559 +#: src/rs02-fix.c:463 src/rs03-fix.c:518 #, c-format msgid "* Ecc block %: %3d unrepairable sectors: " msgstr "* Ecc-блок %: %3d невосстановимые сектора: " -#: src/rs02-fix.c:721 +#: src/rs02-fix.c:685 #, c-format msgid "-> CRC-predicted error in sector %lld at byte %4d (value %02x '%c', expected %02x '%c')\n" msgstr "-> Выявленная по CRC ошибка в секторе %lld в байте %4d (значение %02x '%c', ожидалось %02x '%c')\n" -#: src/rs02-fix.c:724 +#: src/rs02-fix.c:688 #, c-format msgid "-> Non-predicted error in sector %lld at byte %4d (value %02x '%c', expected %02x '%c')\n" msgstr "-> Неожиданная ошибка в секторе %lld в байте %4d (значение %02x '%c', ожидалось %02x '%c')\n" -#: src/rs02-fix.c:851 src/rs03-fix.c:941 +#: src/rs02-fix.c:813 src/rs03-fix.c:901 #, c-format msgid "Repaired sectors: % (% data, % ecc)\n" msgstr "Исправленные сектора: % (% data, % ecc)\n" @@ -4629,7 +4611,7 @@ msgstr "Продолжить поиск" msgid "Disable RS02 initialization in the preferences" msgstr "Отключить инициализацию RS02 в настройках" -#: src/rs02-recognize.c:305 +#: src/rs02-recognize.c:303 msgid "" "Faster medium initialization\n" "\n" @@ -4643,108 +4625,108 @@ msgstr "" "Нажмите \"Пропустить тест RS02\", если Вы уверены, что этот носитель не был\n" "дополнен данными для исправления ошибок методом RS02." -#: src/rs02-verify.c:48 src/rs02-verify.c:200 src/rs02-verify.c:306 -#: src/rs03-verify.c:59 src/rs03-verify.c:240 src/rs03-verify.c:302 +#: src/rs02-verify.c:50 src/rs02-verify.c:202 src/rs02-verify.c:308 +#: src/rs03-verify.c:62 src/rs03-verify.c:243 src/rs03-verify.c:305 msgid "Data checksum:" msgstr "Контрольная сумма данных:" -#: src/rs02-verify.c:49 src/rs02-verify.c:314 +#: src/rs02-verify.c:51 src/rs02-verify.c:316 msgid "CRC checksum:" msgstr "Контрольная сумма CRC:" -#: src/rs02-verify.c:208 +#: src/rs02-verify.c:210 msgid "Ecc headers:" msgstr "Ecc-заголовки:" -#: src/rs02-verify.c:216 src/rs03-verify.c:311 +#: src/rs02-verify.c:218 src/rs03-verify.c:314 msgid "Data section:" msgstr "Раздел данных:" -#: src/rs02-verify.c:224 src/rs03-verify.c:320 +#: src/rs02-verify.c:226 src/rs03-verify.c:323 msgid "Crc section:" msgstr "Раздел crc:" -#: src/rs02-verify.c:232 src/rs03-verify.c:329 +#: src/rs02-verify.c:234 src/rs03-verify.c:332 msgid "Ecc section:" msgstr "Раздел ecc:" -#: src/rs02-verify.c:255 +#: src/rs02-verify.c:257 msgid "Error correction data" msgstr "Данные для исправления ошибок" -#: src/rs02-verify.c:512 src/rs03-verify.c:457 +#: src/rs02-verify.c:506 src/rs03-verify.c:458 #, c-format msgid "- erasure counts : avg = %.1f; worst = %d per ecc block.\n" msgstr "- количество стертых областей : среднее = %.1f; наихудшее = %d на ecc-блок.\n" -#: src/rs02-verify.c:515 src/rs03-verify.c:460 +#: src/rs02-verify.c:509 src/rs03-verify.c:461 #, c-format msgid "- prognosis : % of % sectors recoverable (%d.%d%%)\n" msgstr "- прогноз : % из % секторов восстановимы (%d.%d%%)\n" -#: src/rs02-verify.c:522 src/rs03-verify.c:465 +#: src/rs02-verify.c:515 src/rs03-verify.c:464 msgid "Erasure counts:" msgstr "Количество стертых областей:" -#: src/rs02-verify.c:523 src/rs03-verify.c:466 +#: src/rs02-verify.c:516 src/rs03-verify.c:465 msgid "Prognosis:" msgstr "Прогноз:" -#: src/rs02-verify.c:526 src/rs03-verify.c:469 +#: src/rs02-verify.c:519 src/rs03-verify.c:468 #, c-format msgid "avg = %.1f; worst = %d per ecc block." msgstr "срдн. = %.1f; худш. = %d на ecc-блок." -#: src/rs02-verify.c:531 src/rs03-verify.c:474 +#: src/rs02-verify.c:524 src/rs03-verify.c:473 #, c-format msgid "% of % sectors recoverable (%d.%d%%)" msgstr "% из % секторов можно восстановить (%d.%d%%)" -#: src/rs02-verify.c:593 src/rs03-verify.c:700 +#: src/rs02-verify.c:579 src/rs03-verify.c:670 msgid "Check aborted" msgstr "Проверка прервана" -#: src/rs02-verify.c:615 src/rs03-verify.c:747 +#: src/rs02-verify.c:597 src/rs03-verify.c:707 msgid "Checking the image file." msgstr "Проверка файла образа." -#: src/rs02-verify.c:616 +#: src/rs02-verify.c:598 msgid "Image contains error correction data." msgstr "Образ содержит данные для исправления ошибок." -#: src/rs02-verify.c:631 src/rs03-verify.c:1041 +#: src/rs02-verify.c:611 src/rs03-verify.c:955 #, c-format msgid "Image file is % sectors shorter than expected." msgstr "Файл образа на % секторов короче, чем ожидалось." -#: src/rs02-verify.c:632 src/rs03-verify.c:1044 +#: src/rs02-verify.c:612 src/rs03-verify.c:958 #, c-format msgid "Image file is % sectors longer than expected." msgstr "Файл образа на % секторов больше, чем ожидалось." -#: src/rs02-verify.c:653 +#: src/rs02-verify.c:632 #, c-format msgid "Failed reading ecc header at %: %s\n" msgstr "Не удалось прочитать ecc-заголовок в %: %s\n" -#: src/rs02-verify.c:697 +#: src/rs02-verify.c:677 #, c-format msgid "% ok, % CRC errors, % missing" msgstr "% ok, % CRC-ошибок, % не хватает" -#: src/rs02-verify.c:837 src/rs02-verify.c:860 src/rs03-verify.c:1247 -#: src/rs03-verify.c:1290 +#: src/rs02-verify.c:812 src/rs02-verify.c:837 src/rs03-verify.c:1163 +#: src/rs03-verify.c:1208 #, c-format msgid "% sectors missing; % CRC errors" msgstr "% секторов не хватает; % CRC-ошибок" -#: src/rs02-verify.c:841 src/rs02-verify.c:845 src/rs02-verify.c:864 -#: src/rs02-verify.c:868 src/rs03-verify.c:1255 src/rs03-verify.c:1298 +#: src/rs02-verify.c:817 src/rs02-verify.c:822 src/rs02-verify.c:842 +#: src/rs02-verify.c:847 src/rs03-verify.c:1173 src/rs03-verify.c:1218 #, c-format msgid "% sectors missing" msgstr "% секторов не хватает" -#: src/rs02-verify.c:883 +#: src/rs02-verify.c:862 #, c-format msgid "" "- good image : all sectors present\n" @@ -4753,46 +4735,46 @@ msgstr "" "- хороший образ : все сектора есть\n" "- md5sum данных : %s\n" -#: src/rs02-verify.c:889 +#: src/rs02-verify.c:868 msgid "* suspicious image : contains damaged ecc headers\n" msgstr "* подозрительный образ : содержит поврежденные ecc-заголовки\n" -#: src/rs02-verify.c:894 src/rs03-verify.c:1317 +#: src/rs02-verify.c:873 src/rs03-verify.c:1237 #, c-format msgid "* suspicious image : all sectors present, but % CRC errors\n" msgstr "* подозрительный образ : все сектора есть, но % CRC-ошибок\n" -#: src/rs02-verify.c:900 +#: src/rs02-verify.c:879 #, c-format msgid " ... ecc headers : % ok, % CRC errors, % missing\n" msgstr " ... ecc-заголовков : % ok, % CRC-ошибок, % не хватает\n" -#: src/rs02-verify.c:902 src/rs03-verify.c:1323 +#: src/rs02-verify.c:881 src/rs03-verify.c:1243 #, c-format msgid " ... data section : % sectors missing; % CRC errors\n" msgstr " ... раздел данных : % секторов не хватает; % CRC-ошибок\n" -#: src/rs02-verify.c:905 src/rs03-verify.c:1326 +#: src/rs02-verify.c:884 src/rs03-verify.c:1246 #, c-format msgid " ... data md5sum : %s\n" msgstr " ... md5sum данных : %s\n" -#: src/rs02-verify.c:906 src/rs03-verify.c:1332 +#: src/rs02-verify.c:885 src/rs03-verify.c:1252 #, c-format msgid " ... crc section : % sectors missing\n" msgstr " ... раздел crc : % секторов не хватает\n" -#: src/rs02-verify.c:907 src/rs03-verify.c:1334 +#: src/rs02-verify.c:886 src/rs03-verify.c:1254 #, c-format msgid " ... ecc section : % sectors missing\n" msgstr " ... раздел ecc : % секторов не хватает\n" -#: src/rs02-verify.c:930 src/rs03-verify.c:1392 +#: src/rs02-verify.c:909 src/rs03-verify.c:1304 #, c-format msgid "Damaged image." msgstr "Поврежденный образ." -#: src/rs02-verify.c:944 +#: src/rs02-verify.c:917 msgid "" "\n" "Error correction data: " @@ -4800,88 +4782,88 @@ msgstr "" "\n" "Данные для исправления ошибок: " -#: src/rs02-verify.c:1036 +#: src/rs02-verify.c:994 msgid "Please upgrade your version of dvdisaster!" msgstr "" -#: src/rs02-verify.c:1043 +#: src/rs02-verify.c:1001 #, c-format msgid "- medium sectors : % / % (good)\n" msgstr "- секторов носителя : % / % (хорошо)\n" -#: src/rs02-verify.c:1063 +#: src/rs02-verify.c:1017 #, c-format msgid "Image size does not match recorded size." msgstr "Размер образа не совпадает с записанным размером." -#: src/rs02-verify.c:1078 +#: src/rs02-verify.c:1031 #, c-format msgid "- data md5sum : %s (good)\n" msgstr "- md5sum данных : %s (хорошо)\n" -#: src/rs02-verify.c:1079 +#: src/rs02-verify.c:1032 #, c-format msgid "* data md5sum : %s (BAD)\n" msgstr "* md5sum данных : %s (ПЛОХО)\n" -#: src/rs02-verify.c:1092 src/rs03-verify.c:898 +#: src/rs02-verify.c:1043 src/rs03-verify.c:837 #, c-format msgid "- data md5sum : %s\n" msgstr "- md5sum данных : %s\n" -#: src/rs02-verify.c:1106 +#: src/rs02-verify.c:1054 #, c-format msgid "- crc md5sum : %s (good)\n" msgstr "- crc md5sum : %s (хорошо)\n" -#: src/rs02-verify.c:1113 +#: src/rs02-verify.c:1058 #, c-format msgid "* crc md5sum : %s (BAD)\n" msgstr "* crc md5sum : %s (ПЛОХО)\n" -#: src/rs02-verify.c:1123 +#: src/rs02-verify.c:1064 #, c-format msgid "- crc md5sum : %s\n" msgstr "- crc md5sum : %s\n" -#: src/rs02-verify.c:1144 +#: src/rs02-verify.c:1079 #, c-format msgid "* ecc md5sum : %s (BAD)\n" msgstr "* ecc md5sum : %s (ПЛОХО)\n" -#: src/rs02-verify.c:1154 +#: src/rs02-verify.c:1085 #, c-format msgid "- ecc md5sum : %s\n" msgstr "- ecc md5sum : %s\n" -#: src/rs02-verify.c:1179 src/rs03-verify.c:952 +#: src/rs02-verify.c:1103 src/rs03-verify.c:877 #, c-format msgid "Good error correction data." msgstr "Хорошие данные для исправления ошибок." -#: src/rs02-verify.c:1183 src/rs03-verify.c:1409 +#: src/rs02-verify.c:1109 src/rs03-verify.c:1323 #, c-format msgid "Full data recovery is likely." msgstr "Вероятно полное восстановление данных." -#: src/rs02-verify.c:1186 src/rs03-verify.c:1412 +#: src/rs02-verify.c:1114 src/rs03-verify.c:1328 #, c-format msgid "Full data recovery is NOT possible." msgstr "Полное восстановление данных НЕВОЗМОЖНО." -#: src/rs02-window.c:80 +#: src/rs02-window.c:76 msgid "1. Preparing image:" msgstr "1. Подготовка образа:" -#: src/rs02-window.c:772 +#: src/rs02-window.c:770 msgid "Maximum image size" msgstr "Максимальный размер образа" -#: src/rs02-window.c:784 +#: src/rs02-window.c:782 msgid "Using the smallest possible size from table" msgstr "Используется наименьший возможный размер из таблицы" -#: src/rs02-window.c:784 +#: src/rs02-window.c:783 msgid "Use smallest possible size from following table (in sectors):" msgstr "Использовать наименьший возможный размер из следующей таблицы (в секторах):" @@ -4903,15 +4885,15 @@ msgstr "" msgid "CD-R / CD-RW:" msgstr "CD-R / CD-RW:" -#: src/rs02-window.c:844 src/rs02-window.c:863 src/rs02-window.c:907 -#: src/rs02-window.c:926 src/rs02-window.c:970 src/rs02-window.c:989 -#: src/rs02-window.c:1033 src/rs02-window.c:1052 src/rs02-window.c:1095 -#: src/rs02-window.c:1114 src/rs02-window.c:1157 src/rs02-window.c:1176 -#: src/rs02-window.c:1221 src/rs02-window.c:1240 +#: src/rs02-window.c:844 src/rs02-window.c:863 src/rs02-window.c:908 +#: src/rs02-window.c:927 src/rs02-window.c:972 src/rs02-window.c:991 +#: src/rs02-window.c:1036 src/rs02-window.c:1055 src/rs02-window.c:1099 +#: src/rs02-window.c:1118 src/rs02-window.c:1162 src/rs02-window.c:1181 +#: src/rs02-window.c:1227 src/rs02-window.c:1246 msgid "query medium" msgstr "запросить носитель" -#: src/rs02-window.c:875 +#: src/rs02-window.c:876 #, c-format msgid "" "CD medium size\n" @@ -4934,11 +4916,11 @@ msgstr "" "Обратите внимание, что расширенные образы по крайней мере утраиваются в размере, так как наибольшая возможная избыточность составляет 200%%.\n" "Даже если этот предел не достигнут, расширенный образ по техническим причинам может быть на несколько сегментов меньше, чем задан." -#: src/rs02-window.c:893 +#: src/rs02-window.c:894 msgid "DVD 1 layer:" msgstr "Однослойный DVD:" -#: src/rs02-window.c:938 +#: src/rs02-window.c:940 #, c-format msgid "" "Single layer DVD medium size\n" @@ -4961,11 +4943,11 @@ msgstr "" "Имейте в виду, что расширенные образы по крайней мере утраиваются в размере, так как наибольшая возможная избыточность составляет 200%%.\n" "Даже если этот предел не достигается, расширенный образ по техническим причинам может быть на несколько секторов меньше, чем указано." -#: src/rs02-window.c:956 +#: src/rs02-window.c:958 msgid "DVD 2 layers:" msgstr "Двухслойный DVD:" -#: src/rs02-window.c:1001 +#: src/rs02-window.c:1004 #, c-format msgid "" "Two layered DVD medium size\n" @@ -4988,11 +4970,11 @@ msgstr "" "Обратите внимание, что расширенные образы по меньшей мере утраиваются в размере, так как наибольшая возможная избыточность составляет 200%%.\n" "Даже если этот предел не достигается, расширенный образ по техническим причинам может быть на несколько секторов меньше, чем указано." -#: src/rs02-window.c:1019 +#: src/rs02-window.c:1022 msgid "BD 1 layer:" msgstr "1 слой BD:" -#: src/rs02-window.c:1064 +#: src/rs02-window.c:1068 #, c-format msgid "" "Single layer BD medium size\n" @@ -5015,11 +4997,11 @@ msgstr "" "Имейте в виду, что расширенные образы будут по крайней мере в три раза больше размером, так как максимальная возможная избыточность составляет 200%%.\n" "Даже если этот предел не достигнут, расширенный образ может быть на несколько секторов меньше, чем указано, по техническим причинам." -#: src/rs02-window.c:1081 +#: src/rs02-window.c:1085 msgid "BD 2 layers:" msgstr "2 слоя BD:" -#: src/rs02-window.c:1126 +#: src/rs02-window.c:1131 #, c-format msgid "" "Two layered BD medium size\n" @@ -5042,11 +5024,11 @@ msgstr "" "Имейте в виду, что расширенные образы будут по крайней мере в три раза больше размером, так как максимальная возможная избыточность составляет 200%%.\n" "Даже если этот предел не достигнут, расширенный образ может быть на несколько секторов меньше, чем указано, по техническим причинам." -#: src/rs02-window.c:1143 +#: src/rs02-window.c:1148 msgid "BDXL 3 layers:" msgstr "" -#: src/rs02-window.c:1188 +#: src/rs02-window.c:1194 #, c-format msgid "" "Three layered BDXL medium size\n" @@ -5060,11 +5042,11 @@ msgid "" "Even if this limit is not reached the augmented image may be a few sectors smaller than specified for technical reasons." msgstr "" -#: src/rs02-window.c:1207 +#: src/rs02-window.c:1213 msgid "BDXL 4 layers:" msgstr "" -#: src/rs02-window.c:1252 +#: src/rs02-window.c:1258 #, c-format msgid "" "Four layered BDXL medium size\n" @@ -5078,11 +5060,11 @@ msgid "" "Even if this limit is not reached the augmented image may be a few sectors smaller than specified for technical reasons." msgstr "" -#: src/rs02-window.c:1314 +#: src/rs02-window.c:1320 msgid "sectors." msgstr "секторов." -#: src/rs02-window.c:1327 +#: src/rs02-window.c:1334 #, c-format msgid "" "Use at most ... sectors\n" @@ -5101,47 +5083,47 @@ msgstr "" "Обратите внимание, что расширенные образы самое большее утраиваются в размере, так как наибольшая возможная избыточность составляет 200%%.\n" "Даже если этот предел не достигается, расширенный образ по техническим причинам может быть на несколько секторов меньше, чем указано." -#: src/rs03-common.c:440 +#: src/rs03-common.c:441 #, c-format msgid "Image file %s not present." msgstr "Файл образа %s отсутствует." -#: src/rs03-common.c:457 +#: src/rs03-common.c:458 #, c-format msgid "Redundancy %4.1f%% out of useful range [3.2%%..200%%]" msgstr "" -#: src/rs03-common.c:487 +#: src/rs03-common.c:488 #, c-format msgid "Redundancy %d out of useful range [8..170]." msgstr "" -#: src/rs03-common.c:525 +#: src/rs03-common.c:526 #, c-format msgid "Medium size smaller than image size (% < %)" msgstr "" -#: src/rs03-create.c:434 +#: src/rs03-create.c:418 #, c-format msgid "Failed expanding the ecc file: %s\n" msgstr "" -#: src/rs03-create.c:435 +#: src/rs03-create.c:419 #, c-format msgid "Preparing ecc file: %3d%%" msgstr "" -#: src/rs03-create.c:440 +#: src/rs03-create.c:424 #, c-format msgid "Preparing image: %3d%%" msgstr "" -#: src/rs03-create.c:688 +#: src/rs03-create.c:661 #, c-format msgid "Failed mmap()ing layer %d: %s\n" msgstr "" -#: src/rs03-create.c:717 +#: src/rs03-create.c:690 #, c-format msgid "" "Incomplete image\n" @@ -5153,7 +5135,7 @@ msgid "" "Exiting and removing partial error correction data." msgstr "" -#: src/rs03-create.c:725 +#: src/rs03-create.c:698 msgid "" "\n" "This image was probably mastered from defective source(s).\n" @@ -5161,44 +5143,44 @@ msgid "" "\n" msgstr "" -#: src/rs03-create.c:936 +#: src/rs03-create.c:902 msgid "CPU bound" msgstr "" -#: src/rs03-create.c:940 +#: src/rs03-create.c:906 msgid "I/O bound" msgstr "" -#: src/rs03-create.c:1149 +#: src/rs03-create.c:1113 #, c-format msgid "%5.2fMiB/s current" msgstr "" -#: src/rs03-create.c:1202 +#: src/rs03-create.c:1164 #, c-format msgid "%d threads with %s encoding and %s I/O" msgstr "" -#: src/rs03-create.c:1364 +#: src/rs03-create.c:1321 #, c-format msgid "Encoding with Method RS03: % MiB data, % MiB ecc (%d roots; %4.1f%% redundancy)." msgstr "Кодирование методом RS03: % МБ данные, % МБ ecc (%d корней; избыточность %4.1f%%)." -#: src/rs03-create.c:1383 +#: src/rs03-create.c:1341 #, c-format msgid "" "Augmenting image with Method RS03 [%d threads, %s, %s I/O]:\n" "% MiB data, % MiB ecc (%d roots; %4.1f%% redundancy)." msgstr "" -#: src/rs03-create.c:1388 +#: src/rs03-create.c:1346 #, c-format msgid "" "Creating the error correction file with Method RS03 [%d threads, %s, %s I/O]:\n" "% MiB data, % MiB ecc (%d roots; %4.1f%% redundancy)." msgstr "" -#: src/rs03-create.c:1399 +#: src/rs03-create.c:1357 #, c-format msgid "" "Not enough space on medium left for error correction data.\n" @@ -5207,124 +5189,124 @@ msgid "" "an option, please create a separate error correction file." msgstr "" -#: src/rs03-create.c:1425 +#: src/rs03-create.c:1383 msgid "" "BD-R size with no defect management enabled,\n" "remember it should you need to repair this image later!\n" msgstr "" -#: src/rs03-create.c:1459 +#: src/rs03-create.c:1417 #, c-format msgid "Avg performance: %5.2fs (%5.2fMiB/s) total\n" msgstr "Ср. производительность: %5.2fs (%5.2fМБ/с) в сумме\n" -#: src/rs03-create.c:1463 +#: src/rs03-create.c:1420 #, c-format msgid "%5.2fMiB/s average" msgstr "" -#: src/rs03-create.c:1465 +#: src/rs03-create.c:1422 #, c-format msgid "%d times CPU bound; %d times I/O bound" msgstr "" -#: src/rs03-fix.c:243 +#: src/rs03-fix.c:217 #, c-format msgid "Error correction file using Method RS03, %d roots, %4.1f%% redundancy." msgstr "" -#: src/rs03-fix.c:247 +#: src/rs03-fix.c:221 #, c-format msgid "Image contains error correction data: Method RS03, %d roots, %4.1f%% redundancy." msgstr "Образ содержит данные для исправления ошибок: метод RS03, %d корней, избыточность%4.1f%%." -#: src/rs03-fix.c:725 src/rs03-fix.c:849 +#: src/rs03-fix.c:684 src/rs03-fix.c:808 msgid "; ecc file: " msgstr "" -#: src/rs03-fix.c:785 +#: src/rs03-fix.c:744 #, c-format msgid "-> CRC-predicted error in sector %lld%s at byte %4d (value %02x '%c', expected %02x '%c')\n" msgstr "" -#: src/rs03-fix.c:788 +#: src/rs03-fix.c:747 #, c-format msgid "-> Non-predicted error in sector %lld%s at byte %4d (value %02x '%c', expected %02x '%c')\n" msgstr "" -#: src/rs03-fix.c:881 +#: src/rs03-fix.c:840 #, c-format msgid "Failed seeking to sector % in ecc file [%s]: %s" msgstr "" -#: src/rs03-fix.c:886 +#: src/rs03-fix.c:845 #, c-format msgid "" "could not write ecc file sector %:\n" "%s" msgstr "" -#: src/rs03-preferences.c:345 src/rs03-preferences.c:788 -#: src/rs03-preferences.c:794 src/rs03-preferences.c:795 +#: src/rs03-preferences.c:347 src/rs03-preferences.c:790 +#: src/rs03-preferences.c:796 src/rs03-preferences.c:797 #, c-format msgid "%d sectors" msgstr "" -#: src/rs03-preferences.c:364 src/rs03-preferences.c:904 -#: src/rs03-preferences.c:910 src/rs03-preferences.c:911 +#: src/rs03-preferences.c:366 src/rs03-preferences.c:906 +#: src/rs03-preferences.c:912 src/rs03-preferences.c:913 #, c-format msgid "%d threads" msgstr "" -#: src/rs03-preferences.c:487 src/rs03-preferences.c:494 +#: src/rs03-preferences.c:489 src/rs03-preferences.c:496 msgid "Error correction data storage" msgstr "" -#: src/rs03-preferences.c:495 +#: src/rs03-preferences.c:497 msgid "Store ECC data in: " msgstr "" -#: src/rs03-preferences.c:508 +#: src/rs03-preferences.c:510 msgid "File" msgstr "" -#: src/rs03-preferences.c:535 +#: src/rs03-preferences.c:537 msgid "" "Error correction data storage\n" "\n" "Select between two ways of storing the error correction information:\n" msgstr "" -#: src/rs03-preferences.c:540 +#: src/rs03-preferences.c:542 msgid "" "Augmented image (recommended)\n" "The error correction data will be stored along with the user data on the same medium. This requires the creation of an image file prior to writing the medium. The error correction data will be appended to that image and fill up the remaining space.\n" "Damaged sectors in the error correction information reduce the data recovery capacity, but do not make recovery impossible - a second medium for keeping or protecting the error correction information is not required.\n" msgstr "" -#: src/rs03-preferences.c:550 +#: src/rs03-preferences.c:552 msgid "" "Error correction file\n" "Error correction files are the only way of protecting existing media as they can be stored somewhere else. They are kept on a separate medium which must also be protected by dvdisaster. This prevents from losing the error correction files in case of a medium defect.\n" msgstr "" -#: src/rs03-preferences.c:570 +#: src/rs03-preferences.c:572 msgid "no settings for augmented images" msgstr "" -#: src/rs03-preferences.c:781 +#: src/rs03-preferences.c:783 msgid "I/O parameters" msgstr "" -#: src/rs03-preferences.c:789 +#: src/rs03-preferences.c:791 msgid "Sector preloading" msgstr "" -#: src/rs03-preferences.c:801 +#: src/rs03-preferences.c:803 msgid "Preload" msgstr "" -#: src/rs03-preferences.c:829 +#: src/rs03-preferences.c:831 msgid "" "Sector preloading\n" "\n" @@ -5336,23 +5318,23 @@ msgid "" "A preload value of n will used approx. n MiB of RAM." msgstr "" -#: src/rs03-preferences.c:841 +#: src/rs03-preferences.c:843 msgid "I/O strategy" msgstr "" -#: src/rs03-preferences.c:842 +#: src/rs03-preferences.c:844 msgid "I/O strategy: " msgstr "" -#: src/rs03-preferences.c:855 +#: src/rs03-preferences.c:857 msgid "read/write" msgstr "" -#: src/rs03-preferences.c:861 +#: src/rs03-preferences.c:863 msgid "memory mapped" msgstr "" -#: src/rs03-preferences.c:881 +#: src/rs03-preferences.c:883 msgid "" "I/O strategy\n" "\n" @@ -5363,11 +5345,11 @@ msgid "" "The memory mapped option uses the kernel's memory mapping scheme for direct access to the image file. This has the advantage of minimal overhead, but may be adversely affected by poor caching and preloading decisions made by the kernel (since the kernel does not know what dvdisaster is going to do with the data). This scheme performs well when encoding in a RAM-based file system (such as /dev/shm on GNU/Linux) and on very fast media with low latency such as SSDs." msgstr "" -#: src/rs03-preferences.c:901 src/rs03-preferences.c:905 +#: src/rs03-preferences.c:903 src/rs03-preferences.c:907 msgid "Multithreading" msgstr "" -#: src/rs03-preferences.c:946 +#: src/rs03-preferences.c:948 msgid "" "Multithreading\n" "\n" @@ -5378,35 +5360,35 @@ msgid "" "Performance will not scale linearly with the number of CPU cores. Hard disk performance is more limiting than raw CPU power. When using 4 cores or more, memory bandwidth may also affect performance." msgstr "" -#: src/rs03-preferences.c:961 src/rs03-preferences.c:968 +#: src/rs03-preferences.c:963 src/rs03-preferences.c:970 msgid "Encoding algorithm" msgstr "" -#: src/rs03-preferences.c:969 +#: src/rs03-preferences.c:971 msgid "Use: " msgstr "" -#: src/rs03-preferences.c:982 +#: src/rs03-preferences.c:984 msgid "32bit" msgstr "" -#: src/rs03-preferences.c:988 +#: src/rs03-preferences.c:990 msgid "64bit" msgstr "" -#: src/rs03-preferences.c:995 +#: src/rs03-preferences.c:997 msgid "SSE2" msgstr "" -#: src/rs03-preferences.c:1002 +#: src/rs03-preferences.c:1004 msgid "AltiVec" msgstr "" -#: src/rs03-preferences.c:1009 +#: src/rs03-preferences.c:1011 msgid "auto" msgstr "" -#: src/rs03-preferences.c:1036 +#: src/rs03-preferences.c:1038 msgid "" "Encoding algorithm\n" "\n" @@ -5416,139 +5398,153 @@ msgid "" "Available extensions are SSE2 for x86 based processors and AltiVec on PowerPC processors. These extensions encode with 128bit wide operations and will usually provide the fastest encoding variant. If \"auto\" is selected, the SSE2/AltiVec algorithms will be selected if the processor supports them; otherwise the 64bit algorithm will be used." msgstr "" -#: src/rs03-recognize.c:593 +#: src/rs03-recognize.c:595 #, c-format msgid "Failed seeking to sector %lld in image: %s" msgstr "Не удалось найти сектор %lld в образе: %s" -#: src/rs03-recognize.c:598 +#: src/rs03-recognize.c:600 #, c-format msgid "Failed reading sector %lld in image: %s" msgstr "Не удалось прочитать сектор %lld в образе: %s" -#: src/rs03-verify.c:193 +#: src/rs03-verify.c:196 msgid "Error correction properties" msgstr "" -#: src/rs03-verify.c:204 +#: src/rs03-verify.c:207 msgid "Type:" msgstr "" -#: src/rs03-verify.c:273 +#: src/rs03-verify.c:276 msgid "Data integrity" msgstr "" -#: src/rs03-verify.c:338 src/rs03-verify.c:1353 +#: src/rs03-verify.c:341 src/rs03-verify.c:1272 msgid "Ecc block test:" msgstr "" -#: src/rs03-verify.c:503 src/rs03-verify.c:736 src/rs03-verify.c:1274 +#: src/rs03-verify.c:498 src/rs03-verify.c:699 src/rs03-verify.c:1193 msgid "Checking the image and error correction files." msgstr "" -#: src/rs03-verify.c:504 +#: src/rs03-verify.c:499 msgid "- Checking ecc blocks (deep verify) -" msgstr "" -#: src/rs03-verify.c:521 +#: src/rs03-verify.c:513 #, c-format msgid "Out of memory; try reducing sector prefetch!" msgstr "" -#: src/rs03-verify.c:524 +#: src/rs03-verify.c:515 msgid "* Ecc block test : out of memory; try reducing sector prefetch!\n" msgstr "" -#: src/rs03-verify.c:609 src/rs03-verify.c:1241 +#: src/rs03-verify.c:596 src/rs03-verify.c:1157 #, c-format msgid "%d%% tested" msgstr "" -#: src/rs03-verify.c:612 +#: src/rs03-verify.c:598 #, c-format msgid "- Ecc block test : %d%% tested" msgstr "" -#: src/rs03-verify.c:620 +#: src/rs03-verify.c:603 #, c-format msgid "% good, % bad; %d%% tested" msgstr "" -#: src/rs03-verify.c:623 +#: src/rs03-verify.c:605 #, c-format msgid "* Ecc block test : % good, % bad; %d%% tested" msgstr "" -#: src/rs03-verify.c:635 +#: src/rs03-verify.c:614 msgid "pass" msgstr "" -#: src/rs03-verify.c:638 +#: src/rs03-verify.c:616 msgid "- Ecc block test : pass\n" msgstr "" -#: src/rs03-verify.c:645 +#: src/rs03-verify.c:620 #, c-format msgid "% good, % bad; % bad sub blocks" msgstr "" -#: src/rs03-verify.c:648 +#: src/rs03-verify.c:622 #, c-format msgid "* Ecc block test : % good, % bad; % bad sub blocks\n" msgstr "" -#: src/rs03-verify.c:740 +#: src/rs03-verify.c:688 +#, c-format +msgid "" +"\n" +"%s present.\n" +msgstr "" + +#: src/rs03-verify.c:691 +#, c-format +msgid "" +"\n" +"%s not present.\n" +msgstr "" + +#: src/rs03-verify.c:702 #, c-format msgid "%s present.\n" msgstr "" -#: src/rs03-verify.c:760 +#: src/rs03-verify.c:719 msgid "" "\n" "Error correction properties:\n" msgstr "" -#: src/rs03-verify.c:772 +#: src/rs03-verify.c:731 #, c-format msgid "Ecc file is % sectors shorter than expected." msgstr "" -#: src/rs03-verify.c:774 +#: src/rs03-verify.c:733 #, c-format msgid "Ecc file is % sectors longer than expected." msgstr "" -#: src/rs03-verify.c:782 +#: src/rs03-verify.c:739 #, c-format msgid "* Warning : %s\n" msgstr "" -#: src/rs03-verify.c:791 +#: src/rs03-verify.c:748 msgid "- type : Error correction file\n" msgstr "" -#: src/rs03-verify.c:792 +#: src/rs03-verify.c:749 msgid "- type : Augmented image\n" msgstr "" -#: src/rs03-verify.c:797 +#: src/rs03-verify.c:752 msgid "Error correction file" msgstr "" -#: src/rs03-verify.c:798 +#: src/rs03-verify.c:755 msgid "Augmented image" msgstr "" -#: src/rs03-verify.c:830 src/rs03-verify.c:842 +#: src/rs03-verify.c:783 src/rs03-verify.c:791 msgid "- created by : dvdisaster" msgstr "" -#: src/rs03-verify.c:864 +#: src/rs03-verify.c:810 #, c-format msgid "- requires : dvdisaster-%s\n" msgstr "" -#: src/rs03-verify.c:872 +#: src/rs03-verify.c:815 #, c-format msgid "" "* requires : dvdisaster-%s (BAD)\n" @@ -5556,147 +5552,147 @@ msgid "" "* : Please upgrade dvdisaster.\n" msgstr "" -#: src/rs03-verify.c:896 +#: src/rs03-verify.c:835 msgid "none available" msgstr "" -#: src/rs03-verify.c:962 +#: src/rs03-verify.c:886 msgid "" "\n" "Data integrity:\n" msgstr "" -#: src/rs03-verify.c:991 +#: src/rs03-verify.c:910 #, c-format msgid "% in image; % in ecc file" msgstr "" -#: src/rs03-verify.c:994 +#: src/rs03-verify.c:914 #, c-format msgid "% sectors + %d bytes in image; % in ecc file" msgstr "" -#: src/rs03-verify.c:1000 +#: src/rs03-verify.c:919 #, c-format msgid "- sectors : % in image; " msgstr "" -#: src/rs03-verify.c:1001 +#: src/rs03-verify.c:920 #, c-format msgid "- sectors : % sectors + %d bytes in image; " msgstr "" -#: src/rs03-verify.c:1003 +#: src/rs03-verify.c:922 #, c-format msgid "% in ecc file\n" msgstr "" -#: src/rs03-verify.c:1009 +#: src/rs03-verify.c:925 #, c-format msgid "% total / % data" msgstr "" -#: src/rs03-verify.c:1012 +#: src/rs03-verify.c:927 #, c-format msgid "- medium sectors : % total / % data\n" msgstr "" -#: src/rs03-verify.c:1029 +#: src/rs03-verify.c:943 #, c-format msgid "%s (%s expected)" msgstr "" -#: src/rs03-verify.c:1034 +#: src/rs03-verify.c:948 #, c-format msgid "Image file is %d bytes shorter than expected." msgstr "" -#: src/rs03-verify.c:1036 +#: src/rs03-verify.c:950 #, c-format msgid "Image file is %d bytes longer than expected." msgstr "" -#: src/rs03-verify.c:1050 +#: src/rs03-verify.c:963 #, c-format msgid "* sectors : %s (%s expected); % sectors in ecc file\n" msgstr "" -#: src/rs03-verify.c:1053 +#: src/rs03-verify.c:966 #, c-format msgid "* medium sectors : %s (%s expected)\n" msgstr "" -#: src/rs03-verify.c:1077 +#: src/rs03-verify.c:994 #, c-format msgid "Failed seeking to start of ecc file: %s\n" msgstr "" -#: src/rs03-verify.c:1177 +#: src/rs03-verify.c:1093 msgid " (in ecc file)" msgstr "" -#: src/rs03-verify.c:1185 +#: src/rs03-verify.c:1101 #, c-format msgid "* missing sector : %%s\n" msgstr "" -#: src/rs03-verify.c:1186 +#: src/rs03-verify.c:1102 #, c-format msgid "* missing sectors : % - %%s\n" msgstr "" -#: src/rs03-verify.c:1251 src/rs03-verify.c:1294 +#: src/rs03-verify.c:1168 src/rs03-verify.c:1213 #, c-format msgid "% sectors missing; % signature errors" msgstr "" -#: src/rs03-verify.c:1277 +#: src/rs03-verify.c:1196 msgid "Error correction file:" msgstr "" -#: src/rs03-verify.c:1311 +#: src/rs03-verify.c:1231 #, c-format msgid "" "- good image/file : all sectors present\n" "- data md5sum : %s\n" msgstr "" -#: src/rs03-verify.c:1315 +#: src/rs03-verify.c:1235 #, c-format msgid "* BAD image/file : % sectors missing\n" msgstr "" -#: src/rs03-verify.c:1329 +#: src/rs03-verify.c:1249 #, c-format msgid " ... crc section : % sectors missing; % signature errors\n" msgstr "" -#: src/rs03-verify.c:1362 +#: src/rs03-verify.c:1277 #, c-format msgid "Skipped; not useful on known defective image" msgstr "" -#: src/rs03-verify.c:1366 +#: src/rs03-verify.c:1280 msgid "* Ecc block test : skipped; not useful on defective image\n" msgstr "" -#: src/rs03-window.c:85 +#: src/rs03-window.c:81 msgid "1. Reserving space:" msgstr "" -#: src/rs03-window.c:104 +#: src/rs03-window.c:100 msgid "Encoder info:" msgstr "" -#: src/rs03-window.c:113 +#: src/rs03-window.c:109 msgid "Performance:" msgstr "" -#: src/rs03-window.c:122 +#: src/rs03-window.c:118 msgid "State:" msgstr "" -#: src/scsi-freebsd.c:47 src/scsi-linux.c:51 +#: src/scsi-freebsd.c:49 src/scsi-linux.c:53 msgid "" "Can not access /dev for devices\n" "No drives will be pre-selected.\n" @@ -5704,13 +5700,13 @@ msgstr "" "Не удается получить доступ к устройствам в /dev\n" "Не будет предустановленных приводов.\n" -#: src/scsi-freebsd.c:102 src/scsi-linux.c:91 src/scsi-win32.c:84 +#: src/scsi-freebsd.c:104 src/scsi-linux.c:93 src/scsi-win32.c:84 msgid "" "No optical drives found in /dev.\n" "No drives will be pre-selected.\n" msgstr "" -#: src/scsi-layer.c:104 +#: src/scsi-layer.c:106 #, c-format msgid "" "Can open %s, but INQUIRY fails.\n" @@ -5723,27 +5719,27 @@ msgstr "" "и делается попытка доступа к нему через /dev/cdrom или /dev/hd?.\n" "Вместо этого используйте /dev/scd? или /dev/sr?, или отключите эмуляцию ide-scsi.\n" -#: src/scsi-layer.c:112 +#: src/scsi-layer.c:114 #, c-format msgid "INQUIRY failed. Something is wrong with drive %s.\n" msgstr "INQUIRY не удается. Что-то не в порядке с приводом %s.\n" -#: src/scsi-layer.c:141 +#: src/scsi-layer.c:143 #, c-format msgid "Device %s (%s) is not an optical drive." msgstr "Устройство %s (%s) не является приводом CDROM." -#: src/scsi-layer.c:142 +#: src/scsi-layer.c:144 #, c-format msgid "Device %s (%s) is a hard disk." msgstr "Устройство %s (%s) является жестким диском." -#: src/scsi-layer.c:433 +#: src/scsi-layer.c:435 #, c-format msgid "Incomplete %s" msgstr "Не завершено %s" -#: src/scsi-layer.c:471 +#: src/scsi-layer.c:473 #, c-format msgid "" "%s\n" @@ -5752,16 +5748,16 @@ msgstr "" "%s\n" "Не удалось запросить размер TOC.\n" -#: src/scsi-layer.c:476 +#: src/scsi-layer.c:478 msgid "blank" msgstr "пустой" -#: src/scsi-layer.c:491 src/scsi-layer.c:552 +#: src/scsi-layer.c:493 src/scsi-layer.c:554 #, c-format msgid "TOC info too long (%d), probably multisession.\n" msgstr "Информация в TOC слишком большая (%d), вероятно многосессионная запись.\n" -#: src/scsi-layer.c:506 +#: src/scsi-layer.c:508 #, c-format msgid "" "%s\n" @@ -5770,7 +5766,7 @@ msgstr "" "%s\n" "Не удалось прочитать TOC.\n" -#: src/scsi-layer.c:533 +#: src/scsi-layer.c:535 #, c-format msgid "" "%s\n" @@ -5779,12 +5775,12 @@ msgstr "" "%s\n" "Не удалось запросить весь размер TOC.\n" -#: src/scsi-layer.c:546 +#: src/scsi-layer.c:548 #, c-format msgid "TOC info too short, length %d.\n" msgstr "Информация в TOC слишком мала, длина %d.\n" -#: src/scsi-layer.c:568 +#: src/scsi-layer.c:570 #, c-format msgid "" "%s\n" @@ -5793,7 +5789,7 @@ msgstr "" "%s\n" "Не удалось прочитать всю TOC.\n" -#: src/scsi-layer.c:577 +#: src/scsi-layer.c:579 #, c-format msgid "" "\n" @@ -5802,11 +5798,11 @@ msgstr "" "\n" "Неожиданный формат TOC (длина %d):\n" -#: src/scsi-layer.c:585 +#: src/scsi-layer.c:587 msgid "Consider sending a bug report.\n" msgstr "Рекомендуется отправить отчет об ошибке.\n" -#: src/scsi-layer.c:638 +#: src/scsi-layer.c:643 #, c-format msgid "" "%s\n" @@ -5815,12 +5811,12 @@ msgstr "" "%s\n" "Не удалось запросить размер dvd-структуры.\n" -#: src/scsi-layer.c:650 +#: src/scsi-layer.c:655 #, c-format msgid "Could not query dvd physical structure - implausible packet length %d\n" msgstr "Не удалось запросить физическую структуру dvd - неправдоподобная длина пакета %d\n" -#: src/scsi-layer.c:668 +#: src/scsi-layer.c:673 #, c-format msgid "" "%s\n" @@ -5829,12 +5825,12 @@ msgstr "" "%s\n" "Не удалось запросить физическую структуру dvd.\n" -#: src/scsi-layer.c:697 src/scsi-layer.c:707 +#: src/scsi-layer.c:702 src/scsi-layer.c:712 #, c-format msgid "READ DVD STRUCTURE: implausible medium size, %-%=% sectors\n" msgstr "READ DVD STRUCTURE: неправильный размер носителя, %-%=% секторов\n" -#: src/scsi-layer.c:976 +#: src/scsi-layer.c:981 #, c-format msgid "" "%s\n" @@ -5843,7 +5839,7 @@ msgstr "" "%s\n" "Не удалось запросить размер структуры BD диска.\n" -#: src/scsi-layer.c:1000 +#: src/scsi-layer.c:1005 #, c-format msgid "" "%s\n" @@ -5852,7 +5848,7 @@ msgstr "" "%s\n" "Не удалось запросить структуру BD диска.\n" -#: src/scsi-layer.c:1704 +#: src/scsi-layer.c:1709 #, c-format msgid "" "%s\n" @@ -5861,12 +5857,12 @@ msgstr "" "%s\n" "Не удалось запросить размер dvd-структуры для кода формата 1.\n" -#: src/scsi-layer.c:1715 +#: src/scsi-layer.c:1720 #, c-format msgid "Could not query dvd copyright info - implausible packet length %d\n" msgstr "Не удалось запросить информацию об авторских правах dvd - неправдоподобный размер пакета %d\n" -#: src/scsi-layer.c:1730 +#: src/scsi-layer.c:1735 #, c-format msgid "" "%s\n" @@ -5875,23 +5871,23 @@ msgstr "" "%s\n" "Не удалось запросить информацию об авторских правах.\n" -#: src/scsi-layer.c:1791 +#: src/scsi-layer.c:1796 msgid "is undecideable because of read error" msgstr "не ясно из-за ошибок чтения" -#: src/scsi-layer.c:1797 +#: src/scsi-layer.c:1802 msgid "looks GOOD" msgstr "выглядит ПРАВИЛЬНО" -#: src/scsi-layer.c:1803 +#: src/scsi-layer.c:1808 msgid "gives unformatted size (UNUSABLE)" msgstr "дает неформатированный размер (НЕПРИГОДНО)" -#: src/scsi-layer.c:1808 +#: src/scsi-layer.c:1813 msgid "is UNUSABLE" msgstr "НЕПРИГОДНО" -#: src/scsi-layer.c:1834 +#: src/scsi-layer.c:1839 #, c-format msgid "" "%s\n" @@ -5900,12 +5896,12 @@ msgstr "" "%s\n" "Не удалось запросить размер носителя.\n" -#: src/scsi-layer.c:1856 +#: src/scsi-layer.c:1861 #, c-format msgid "READ CAPACITY: implausible medium size, % sectors\n" msgstr "READ CAPACITY: неправильный размер носителя, % секторов\n" -#: src/scsi-layer.c:1932 +#: src/scsi-layer.c:1937 #, c-format msgid "" "Different media sizes depending on query method:\n" @@ -5918,7 +5914,7 @@ msgstr "" "READ DVD STRUCTURE: % секторов\n" "\n" -#: src/scsi-layer.c:1937 +#: src/scsi-layer.c:1942 msgid "" "Evaluation of returned medium sizes:\n" "\n" @@ -5926,15 +5922,15 @@ msgstr "" "Оценка полученных размеров носителя:\n" "\n" -#: src/scsi-layer.c:1992 +#: src/scsi-layer.c:1997 msgid "Using value from READ CAPACITY" msgstr "Используется значение из READ CAPACITY" -#: src/scsi-layer.c:1996 +#: src/scsi-layer.c:2001 msgid "Using value from READ DVD STRUCTURE" msgstr "Используется значение из READ DVD STRUCTURE" -#: src/scsi-layer.c:2006 +#: src/scsi-layer.c:2011 #, c-format msgid "" "FAILED to determine image size.\n" @@ -5945,7 +5941,7 @@ msgstr "" "Использование значения меньшего, чем это, работает на >90%% приводов,\n" "но ПРОДОЛЖАЙТЕ НА СВОЙ РИСК (образ может быть неполным/непригодным)" -#: src/scsi-layer.c:2011 +#: src/scsi-layer.c:2016 #, c-format msgid "" "Final decision: %s\n" @@ -5954,7 +5950,7 @@ msgstr "" "Окончательное решение: %s\n" "\n" -#: src/scsi-layer.c:2019 +#: src/scsi-layer.c:2024 msgid "" "Failed to determine image size.\n" "Try using a different drive." @@ -5962,7 +5958,7 @@ msgstr "" "Не удалось определить размер образа.\n" "Попробуйте другой привод." -#: src/scsi-layer.c:2146 src/scsi-layer.c:2172 +#: src/scsi-layer.c:2151 src/scsi-layer.c:2177 #, c-format msgid "" "%s\n" @@ -5971,7 +5967,7 @@ msgstr "" "%s\n" "Не удалось загрузить/выгрузить носитель.\n" -#: src/scsi-layer.c:2162 +#: src/scsi-layer.c:2167 #, c-format msgid "" "%s\n" @@ -5980,37 +5976,37 @@ msgstr "" "%s\n" "Не удалось разблокировать носитель.\n" -#: src/scsi-layer.c:2228 +#: src/scsi-layer.c:2230 #, c-format msgid "Waiting 10 seconds for drive: %d\n" msgstr "Выжидание 10 секунд для привода: %d\n" -#: src/scsi-layer.c:2511 +#: src/scsi-layer.c:2505 #, c-format msgid "Sectors % - %: %s\n" msgstr "Сектора % - %: %s\n" -#: src/scsi-layer.c:2525 +#: src/scsi-layer.c:2519 #, c-format msgid "Sector %, try %d: %s Sector returned: %d.\n" msgstr "Сектор %, попытка %d: %s Возвращен сектор: %d.\n" -#: src/scsi-layer.c:2531 +#: src/scsi-layer.c:2525 #, c-format msgid "Sector %, try %d: %s\n" msgstr "Сектор %, попытка %d: %s\n" -#: src/scsi-layer.c:2542 +#: src/scsi-layer.c:2536 #, c-format msgid "Sector %, try %d: success\n" msgstr "Сектор %, попытка %d: успешно\n" -#: src/scsi-layer.c:2614 +#: src/scsi-layer.c:2608 #, c-format msgid "Device %s: no medium present\n" msgstr "Устройство %s: нет носителя\n" -#: src/scsi-layer.c:2619 +#: src/scsi-layer.c:2613 #, c-format msgid "" "Device %s does not become ready:\n" @@ -6021,7 +6017,7 @@ msgstr "" "%s\n" "\n" -#: src/scsi-layer.c:2625 +#: src/scsi-layer.c:2619 #, c-format msgid "" "\n" @@ -6030,63 +6026,63 @@ msgstr "" "\n" "Устройство: %s, %s\n" -#: src/scsi-layer.c:2632 +#: src/scsi-layer.c:2626 msgid "Drive failed to report media type." msgstr "Не удалось получить от привода сообщение о типе носителя." -#: src/scsi-layer.c:2647 src/scsi-layer.c:2759 +#: src/scsi-layer.c:2641 src/scsi-layer.c:2753 #, c-format msgid "This software does not support \"%s\" type media." msgstr "Эта программа не поддерживает \"%s\" тип носителя." -#: src/scsi-layer.c:2655 +#: src/scsi-layer.c:2649 #, c-format msgid "This software does not support multisession (%d sessions) media." msgstr "Эта программа не поддерживает многосессионные (%d сессиий) носители." -#: src/scsi-layer.c:2686 src/scsi-layer.c:2695 +#: src/scsi-layer.c:2680 src/scsi-layer.c:2689 msgid "Using READ CD" msgstr "Используется READ CD" -#: src/scsi-layer.c:2687 +#: src/scsi-layer.c:2681 msgid ", RAW reading" msgstr ", чтение \"RAW\"" -#: src/scsi-layer.c:2690 +#: src/scsi-layer.c:2684 #, c-format msgid ", Mode page 1 ERP = %02xh" msgstr ", Mode page 1 ERP = %02xh" -#: src/scsi-layer.c:2693 +#: src/scsi-layer.c:2687 msgid ", C2 scanning" msgstr ", поиск ошибок C2" -#: src/scsi-layer.c:2700 +#: src/scsi-layer.c:2694 msgid "Using READ(10).\n" msgstr "Используется READ(10).\n" -#: src/scsi-layer.c:2736 +#: src/scsi-layer.c:2730 #, c-format msgid "Medium: %s, % sectors%s" msgstr "Носитель: %s, % секторов%s" -#: src/scsi-layer.c:2740 +#: src/scsi-layer.c:2734 #, c-format msgid "Medium \"%s\": %s, % sectors%s created %s" msgstr "Носитель \"%s\": %s, % секторов%s создан %s" -#: src/scsi-netbsd.c:103 +#: src/scsi-netbsd.c:105 msgid "" "No optical drives found.\n" "No drives will be pre-selected.\n" msgstr "" -#: src/scsi-simulated.c:37 +#: src/scsi-simulated.c:39 #, c-format msgid "Simulated CD (%s)" msgstr "" -#: src/scsi-unknown.c:35 +#: src/scsi-unknown.c:37 msgid "" "* Unsupported operating system - no SCSI layer available.\n" "* No drives can be used.\n" @@ -6108,41 +6104,11 @@ msgstr "" msgid "Could not open device %s." msgstr "" -#: src/show-html.c:78 -msgid "windowtitle|Choose a browser" -msgstr "Выберите браузер" - -#: src/show-html.c:115 -msgid "windowtitle|Browser required" -msgstr "Требуется браузер" - -#: src/show-html.c:131 -msgid "" -"Could not find a suitable browser.\n" -"\n" -"Which browser would you like to use\n" -"for reading the online documentation?\n" -"\n" -"Please enter its name (e.g. mozilla) or\n" -"use the \"Search\" button for a file dialog.\n" -msgstr "" -"Не удалось найти подходящий браузер.\n" -"\n" -"Какой браузер вы бы хотели использовать\n" -"для чтения интерактивной документации?\n" -"\n" -"Введите имя (например, mozilla) или\n" -"с помощью кнопки \"Выбор\" вызовите диалог выбора файла.\n" - -#: src/show-html.c:144 src/show-manual.c:145 -msgid "Search" -msgstr "Выбор" - -#: src/show-html.c:337 src/show-manual.c:324 +#: src/show-manual.c:83 msgid "Documentation not installed." msgstr "Документация не установлена" -#: src/show-html.c:382 src/show-manual.c:340 +#: src/show-manual.c:98 #, c-format msgid "" "Documentation file\n" @@ -6150,85 +6116,145 @@ msgid "" "not found.\n" msgstr "" -#: src/show-html.c:391 -msgid "Please hang on until the browser comes up!" -msgstr "Подождите, пока загрузится браузер!" - -#: src/show-manual.c:79 -msgid "windowtitle|Choose a PDF viewer" +#: src/show-manual.c:114 +msgid "Could not create pipe before fork" msgstr "" -#: src/show-manual.c:116 -msgid "windowtitle|PDF viewer required" +#: src/show-manual.c:122 +msgid "Could not fork to start xdg-open" msgstr "" -#: src/show-manual.c:132 +#: src/show-manual.c:145 +#, c-format msgid "" -"Could not find a suitable PDF viewer.\n" -"\n" -"Which PDF viewer would you like to use\n" -"for reading the online documentation?\n" -"\n" -"Please enter its name (e.g. xpdf) or\n" -"use the \"Search\" button for a file dialog.\n" +"execvp could not execute \"xdg-open\":\n" +"%s\n" +"Is xdg-open installed correctly?\n" msgstr "" -#: src/show-manual.c:349 -msgid "Please hang on until the viewer comes up!" -msgstr "" - -#: src/udf.c:257 +#: src/udf.c:259 msgid "Unnamed" msgstr "Без названия" -#: src/udf.c:348 +#: src/udf.c:350 msgid "Example disc" msgstr "Пример диска" -#: src/welcome-window.c:82 +#: src/welcome-window.c:84 msgid "" -"This is v0.79.6-pl8. The patchlevel series are enhanced from the last upstream pre-release.\n" -"We add support for a CLI version, BD-R TL/QL, a Windows build, an option to produce bigger BD-R RS03,\n" +"This is v0.79.10-pl1. The patchlevel series are enhanced from the last upstream release.\n" +"We add support for BD-R TL/QL, a Windows build, an option to produce bigger BD-R RS03,\n" "images, support for stripping ECC from ISOs, re-enabled adaptive reading (except for RS03), and more.\n" "\n" -"Please refer to the Help > Change log menu for all the details.\n" -"The warning message from the pre-release version is retained below.\n" +"Please refer to the Help > Change log menu for all the details." msgstr "" -#: src/welcome-window.c:89 -msgid "" -"Please note:\n" -"This is a pre-release for expert users.\n" -"It may contain unfinished features.\n" -"Adaptive reading is unavailable in this version.\n" -"It will be re-introduced in one of the next releases." -msgstr "" - -#: src/welcome-window.c:97 +#: src/welcome-window.c:92 msgid "Show this message again" msgstr "Показывать это сообщение еще раз" -#: src/welcome-window.c:143 +#: src/welcome-window.c:138 msgid "Welcome to dvdisaster!" msgstr "Добро пожаловать в dvdisaster!" -#: src/welcome-window.c:145 +#: src/welcome-window.c:140 msgid "" "\n" "dvdisaster creates error correction data to protect\n" "optical media (CD,DVD,BD) against data loss.\n" msgstr "" -#: src/welcome-window.c:148 +#: src/welcome-window.c:143 msgid "" "Please see the [manual] for typical uses of dvdisaster.\n" "\n" msgstr "" -#: src/welcome-window.c:151 +#: src/welcome-window.c:146 msgid "New in this Version:" msgstr "Новое в этой версии:" +#~ msgid "windowtitle|Modifying dvdisaster" +#~ msgstr "Изменение dvdisaster'а" + +#~ msgid "" +#~ "Modifying dvdisaster\n" +#~ "Your changes are not ours." +#~ msgstr "" +#~ "Изменение dvdisaster'а\n" +#~ "Ваши изменения не являются нашими." + +#~ msgid "Copyright 2004-2017 Carsten Gnoerlich" +#~ msgstr "Copyright 2004-2017 Carsten Gnoerlich" + +#~ msgid "" +#~ "\n" +#~ "e-mail: carsten@dvdisaster.org -or- cgnoerlich@fsfe.org" +#~ msgstr "" +#~ "\n" +#~ "e-mail: carsten@dvdisaster.org -или- cgnoerlich@fsfe.org" + +#~ msgid "Read position: %3d.%1d%% (%4.1fx)" +#~ msgstr "Положение чтения: %3d.%1d%% (%4.1fx)" + +#~ msgid "" +#~ "%d sectors missing at the end of the disc.\n" +#~ "This is okay if the CD was written in TAO (track at once) mode.\n" +#~ "The Image will be truncated accordingly. See the manual for details.\n" +#~ msgstr "" +#~ "%d секторов не хватает в конце диска.\n" +#~ "Это нормально, если CD записан в режиме TAO (track at once).\n" +#~ "Образ будет соответственно укорочен. Подробнее см. в руководстве.\n" + +#~ msgid "" +#~ "%d sectors missing at the end of the disc.\n" +#~ "This is okay if the CD was written in TAO (track at once) mode.\n" +#~ "The Image will be truncated accordingly. See the manual for details.\n" +#~ "Use the --dao option to disable image truncating.\n" +#~ msgstr "" +#~ "%d секторов не хватает в конце диска.\n" +#~ "Это нормально, если CD записан в режиме TAO (track at once).\n" +#~ "Образ будет соответственно укорочен. Подробнее см. в руководстве.\n" +#~ "Используйте параметр --dao для отключения укорачивания образов.\n" + +#~ msgid "" +#~ "* requires : dvdisaster-%d.%d (BAD)\n" +#~ "* Warning : The following output might be incorrect.\n" +#~ "* : Please visit http://www.dvdisaster.org for an upgrade.\n" +#~ msgstr "" +#~ "* требуется : dvdisaster-%d.%d (ПЛОХО)\n" +#~ "* Внимание : Следующий результат может быть неправильным.\n" +#~ "* : Посетите http://www.dvdisaster.org за обновлением.\n" + +#~ msgid "windowtitle|Choose a browser" +#~ msgstr "Выберите браузер" + +#~ msgid "windowtitle|Browser required" +#~ msgstr "Требуется браузер" + +#~ msgid "" +#~ "Could not find a suitable browser.\n" +#~ "\n" +#~ "Which browser would you like to use\n" +#~ "for reading the online documentation?\n" +#~ "\n" +#~ "Please enter its name (e.g. mozilla) or\n" +#~ "use the \"Search\" button for a file dialog.\n" +#~ msgstr "" +#~ "Не удалось найти подходящий браузер.\n" +#~ "\n" +#~ "Какой браузер вы бы хотели использовать\n" +#~ "для чтения интерактивной документации?\n" +#~ "\n" +#~ "Введите имя (например, mozilla) или\n" +#~ "с помощью кнопки \"Выбор\" вызовите диалог выбора файла.\n" + +#~ msgid "Search" +#~ msgstr "Выбор" + +#~ msgid "Please hang on until the browser comes up!" +#~ msgstr "Подождите, пока загрузится браузер!" + #~ msgid "" #~ "\n" #~ "Common usage examples:\n" @@ -6786,50 +6812,6 @@ msgstr "Новое в этой версии:" #~ msgid "This software does not support encrypted media.\n" #~ msgstr "Эта программа не поддерживает шифрованные носители.\n" -#~ msgid "Copyright 2004-2018 Carsten Gnoerlich" -#~ msgstr "Copyright 2004-2018 Carsten Gnoerlich" - -#~ msgid "windowtitle|Modifying dvdisaster" -#~ msgstr "Изменение dvdisaster'а" - -#~ msgid "" -#~ "Modifying dvdisaster\n" -#~ "Your changes are not ours." -#~ msgstr "" -#~ "Изменение dvdisaster'а\n" -#~ "Ваши изменения не являются нашими." - -#~ msgid "" -#~ "Modified version Copyright 2018 (please fill in - [directions])\n" -#~ "Copyright 2004-2018 Carsten Gnoerlich" -#~ msgstr "" -#~ "Измененнная версия Copyright 2018 (пожалуйста, заполните - [инструкции])\n" -#~ "Copyright 2004-2018 Carsten Gnoerlich" - -#~ msgid "" -#~ "* requires : dvdisaster-%d.%d (BAD)\n" -#~ "* Warning : The following output might be incorrect.\n" -#~ "* : Please visit http://www.dvdisaster.org for an upgrade.\n" -#~ msgstr "" -#~ "* требуется : dvdisaster-%d.%d (ПЛОХО)\n" -#~ "* Внимание : Следующий результат может быть неправильным.\n" -#~ "* : Посетите http://www.dvdisaster.org за обновлением.\n" - -#~ msgid "" -#~ "\n" -#~ "This program is not the original. It is based on the\n" -#~ "source code of dvdisaster, but contains third-party changes.\n" -#~ "\n" -#~ "Please do not bother the original authors of dvdisaster\n" -#~ "([www.dvdisaster.org]) about issues with this version.\n" -#~ msgstr "" -#~ "\n" -#~ "Эта программа не является оригиналом. В ее основе\n" -#~ "исходный код dvdisaster'а, но в ней есть изменения, сделанные сторонними разработчиками.\n" -#~ "\n" -#~ "Пожалуйста, не беспокойте авторов dvdisaster'а\n" -#~ "([www.dvdisaster.org]) проблемами этой версии.\n" - #~ msgid "created by dvdisaster-%d.%d\n" #~ msgstr "создано с помощью dvdisaster-%d.%d\n" diff --git a/locale/sv.po b/locale/sv.po index 39cbf9b..b35422a 100644 --- a/locale/sv.po +++ b/locale/sv.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: dvdisaster\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-06-27 23:00+0200\n" +"POT-Creation-Date: 2021-10-09 14:18+0200\n" "PO-Revision-Date: 2006-06-14 23:48+0100\n" "Last-Translator: Daniel Nylander \n" "Language-Team: Swedish \n" @@ -17,7 +17,7 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: src/closure.c:391 +#: src/closure.c:296 #, c-format msgid "" "# dvdisaster-%s configuration file\n" @@ -30,58 +30,58 @@ msgstr "" "# som kommer att skrivas över varje gång dvdisaster körs.\n" "\n" -#: src/closure.c:613 +#: src/closure.c:564 msgid "medium.iso" msgstr "" -#: src/closure.c:614 +#: src/closure.c:565 msgid "medium.ecc" msgstr "" -#: src/closure.c:615 +#: src/closure.c:566 msgid "sector-" msgstr "" -#: src/debug.c:56 src/debug.c:155 src/debug.c:293 +#: src/debug.c:58 src/debug.c:157 src/debug.c:295 #, c-format msgid "Number of erasures must be > 0 and <= %d\n" msgstr "Antal raderingar måste vara > 0 och <= %d\n" -#: src/debug.c:70 src/debug.c:160 +#: src/debug.c:72 src/debug.c:162 #, c-format msgid "" "\n" "Generating random correctable erasures (%s; for %d roots, max erasures = %d).\n" msgstr "" -#: src/debug.c:103 src/debug.c:191 src/debug.c:239 src/debug.c:363 -#: src/debug.c:707 src/debug.c:807 src/debug.c:850 src/debug.c:1181 -#: src/debug.c:1189 src/debug.c:1266 src/rs01-common.c:175 -#: src/rs02-common.c:239 src/rs02-create.c:377 src/rs02-create.c:1032 -#: src/rs02-fix.c:414 src/rs02-verify.c:404 src/rs03-common.c:340 -#: src/rs03-create.c:756 src/rs03-create.c:781 +#: src/debug.c:105 src/debug.c:193 src/debug.c:241 src/debug.c:365 +#: src/debug.c:708 src/debug.c:808 src/debug.c:851 src/debug.c:1182 +#: src/debug.c:1190 src/debug.c:1267 src/rs01-common.c:177 +#: src/rs02-common.c:241 src/rs02-create.c:347 src/rs02-create.c:990 +#: src/rs02-fix.c:381 src/rs02-verify.c:398 src/rs03-common.c:341 +#: src/rs03-create.c:729 src/rs03-create.c:754 #, c-format msgid "Failed seeking to sector % in image: %s" msgstr "Misslyckades med att söka fram till sektor % i avbild: %s" -#: src/debug.c:111 src/debug.c:196 src/debug.c:243 src/debug.c:368 -#: src/debug.c:545 src/debug.c:662 src/debug.c:713 src/debug.c:1193 -#: src/debug.c:1270 src/debug.c:1310 src/rs02-create.c:400 -#: src/rs02-create.c:426 src/rs02-create.c:1035 src/rs03-create.c:761 -#: src/rs03-create.c:785 src/udf.c:830 src/udf.c:888 src/udf.c:945 -#: src/udf.c:958 src/udf.c:963 src/udf.c:966 src/udf.c:969 src/udf.c:972 -#: src/udf.c:975 src/udf.c:978 +#: src/debug.c:113 src/debug.c:198 src/debug.c:245 src/debug.c:370 +#: src/debug.c:546 src/debug.c:663 src/debug.c:714 src/debug.c:1194 +#: src/debug.c:1271 src/debug.c:1311 src/rs02-create.c:370 +#: src/rs02-create.c:396 src/rs02-create.c:993 src/rs03-create.c:734 +#: src/rs03-create.c:758 src/udf.c:831 src/udf.c:889 src/udf.c:946 +#: src/udf.c:959 src/udf.c:964 src/udf.c:967 src/udf.c:970 src/udf.c:973 +#: src/udf.c:976 src/udf.c:979 #, c-format msgid "Failed writing to sector % in image: %s" msgstr "Misslyckades med att skriva till sektor % i avbild: %s" -#: src/debug.c:119 src/debug.c:249 src/debug.c:374 src/debug.c:666 -#: src/debug.c:720 src/debug.c:1284 +#: src/debug.c:121 src/debug.c:251 src/debug.c:376 src/debug.c:667 +#: src/debug.c:721 src/debug.c:1285 #, c-format msgid "Progress: %3d%%" msgstr "Förlopp: %3d%%" -#: src/debug.c:124 src/debug.c:254 src/debug.c:379 +#: src/debug.c:126 src/debug.c:256 src/debug.c:381 #, c-format msgid "" "Progress: 100%%\n" @@ -92,32 +92,32 @@ msgstr "" "Återhämta avbilden med flaggan --fix före något ytterligare en --random-errors körs.\n" "Annars kommer du ackumulera >= %d raderingar/ECC-block och avbilden kommer att gå förlorad.\n" -#: src/debug.c:299 +#: src/debug.c:301 #, c-format msgid "" "\n" "RS03 error correction file with %d roots.\n" msgstr "" -#: src/debug.c:300 +#: src/debug.c:302 #, c-format msgid "" "\n" "RS03 augmented image with %d roots.\n" msgstr "" -#: src/debug.c:301 +#: src/debug.c:303 #, c-format msgid "Generating at most %d random correctable erasures.\n" msgstr "" -#: src/debug.c:443 src/debug.c:501 src/debug.c:565 src/debug.c:606 -#: src/debug.c:689 src/debug.c:795 src/debug.c:836 src/debug.c:882 -#: src/debug.c:936 src/debug.c:1161 src/debug.c:1169 src/debug.c:1225 -#: src/debug.c:1230 src/misc.c:1393 src/raw-editor.c:364 src/read-adaptive.c:73 -#: src/read-adaptive.c:93 src/read-adaptive.c:1552 src/read-adaptive.c:1588 -#: src/read-linear.c:289 src/read-linear.c:291 src/read-linear.c:327 -#: src/read-linear.c:329 src/rs01-create.c:303 src/rs03-create.c:1352 +#: src/debug.c:445 src/debug.c:503 src/debug.c:566 src/debug.c:607 +#: src/debug.c:690 src/debug.c:796 src/debug.c:837 src/debug.c:883 +#: src/debug.c:937 src/debug.c:1162 src/debug.c:1170 src/debug.c:1226 +#: src/debug.c:1231 src/misc.c:763 src/raw-editor.c:366 src/read-adaptive.c:75 +#: src/read-adaptive.c:95 src/read-adaptive.c:1471 src/read-adaptive.c:1501 +#: src/read-linear.c:273 src/read-linear.c:275 src/read-linear.c:306 +#: src/read-linear.c:308 src/rs01-create.c:279 src/rs03-create.c:1308 #, c-format msgid "" "Can't open %s:\n" @@ -126,74 +126,74 @@ msgstr "" "Kan inte öppna %s:\n" "%s" -#: src/debug.c:448 src/debug.c:1140 src/debug.c:1216 +#: src/debug.c:450 src/debug.c:1141 src/debug.c:1217 msgid "2nd argument is missing" msgstr "andra argumentet saknas" -#: src/debug.c:455 src/debug.c:1146 +#: src/debug.c:457 src/debug.c:1147 msgid "3rd argument is missing" msgstr "tredje argumentet saknas" -#: src/debug.c:462 src/debug.c:802 src/debug.c:843 src/debug.c:891 -#: src/debug.c:954 +#: src/debug.c:464 src/debug.c:803 src/debug.c:844 src/debug.c:892 +#: src/debug.c:955 #, c-format msgid "Sector must be in range [0..%]\n" msgstr "Sektor måste vara inom intervallet [0..%]\n" -#: src/debug.c:465 +#: src/debug.c:467 msgid "Byte position must be in range [0..2047]" msgstr "Byteposition måste vara inom intervallet [0..2047]" -#: src/debug.c:468 +#: src/debug.c:470 msgid "Byte value must be in range [0..255]" msgstr "Bytevärde måste vara inom intervallet [0..255]" -#: src/debug.c:470 +#: src/debug.c:472 #, c-format msgid "Setting byte %d in sector % to value %d.\n" msgstr "Ställer in byte %d i sektor % till värdet %d.\n" -#: src/debug.c:477 src/debug.c:531 src/debug.c:694 src/rs02-create.c:210 -#: src/rs02-verify.c:719 src/rs03-verify.c:1073 +#: src/debug.c:479 src/debug.c:532 src/debug.c:695 src/rs02-create.c:194 +#: src/rs02-verify.c:698 src/rs03-verify.c:990 #, c-format msgid "Failed seeking to start of image: %s\n" msgstr "Misslyckades med att söka fram till början av avbild: %s\n" -#: src/debug.c:481 +#: src/debug.c:483 msgid "Could not write the new byte value" msgstr "Kunde inte skriva det nya bytevärdet" -#: src/debug.c:524 src/read-adaptive.c:830 +#: src/debug.c:525 src/read-adaptive.c:805 #, c-format msgid "Sectors must be in range [0..%].\n" msgstr "Sektorer måste vara inom intervallet [0..%].\n" -#: src/debug.c:526 +#: src/debug.c:527 #, c-format msgid "Erasing sectors [%,%]\n" msgstr "Raderar sektorer [%,%]\n" -#: src/debug.c:572 +#: src/debug.c:573 #, c-format msgid "New length must be in range [0..%].\n" msgstr "Ny längd måste vara inom intervallet [0..%].\n" -#: src/debug.c:574 src/misc.c:1404 +#: src/debug.c:575 src/misc.c:774 #, c-format msgid "Truncating image to % sectors.\n" msgstr "Kapar avbild till % sektorer.\n" -#: src/debug.c:579 src/misc.c:1425 src/read-linear.c:1477 src/rs01-fix.c:230 -#: src/rs01-fix.c:253 src/rs01-fix.c:275 src/rs01-fix.c:315 -#: src/rs02-create.c:117 src/rs02-create.c:171 src/rs02-fix.c:268 -#: src/rs02-fix.c:288 src/rs02-fix.c:306 src/rs03-create.c:256 -#: src/rs03-create.c:345 src/rs03-fix.c:298 src/rs03-fix.c:337 -#: src/rs03-fix.c:359 src/rs03-fix.c:379 +#: src/debug.c:580 src/misc.c:795 src/read-linear.c:1458 src/rs01-fix.c:219 +#: src/rs01-fix.c:242 src/rs01-fix.c:259 src/rs01-fix.c:293 +#: src/rs02-create.c:107 src/rs02-create.c:155 src/rs02-fix.c:240 +#: src/rs02-fix.c:260 src/rs02-fix.c:274 src/rs03-create.c:246 +#: src/rs03-create.c:327 src/rs03-fix.c:268 src/rs03-fix.c:304 +#: src/rs03-fix.c:326 src/rs03-fix.c:342 #, c-format msgid "Could not truncate %s: %s\n" msgstr "Kunde inte kapa %s: %s\n" -#: src/debug.c:610 +#: src/debug.c:611 #, c-format msgid "" "\n" @@ -212,8 +212,8 @@ msgstr "" "dvdisaster --debug %s % --random-seed %d\n" "\n" -#: src/debug.c:674 src/read-adaptive.c:382 src/read-linear.c:133 -#: src/read-linear.c:136 +#: src/debug.c:675 src/read-adaptive.c:382 src/read-linear.c:127 +#: src/read-linear.c:130 #, c-format msgid "" "Error closing image file:\n" @@ -222,11 +222,11 @@ msgstr "" "Fel vid stängning av avbildsfil:\n" "%s" -#: src/debug.c:690 +#: src/debug.c:691 msgid "Replacing the \"unreadable sector\" markers with zeros.\n" msgstr "Ersätter markeringarna för \"oläsbar sektor\" med nollor.\n" -#: src/debug.c:700 +#: src/debug.c:701 #, c-format msgid "" "Could not read image sector %:\n" @@ -235,20 +235,20 @@ msgstr "" "Kunde inte läsa sektor % i avbild:\n" "%s\n" -#: src/debug.c:725 +#: src/debug.c:726 #, c-format msgid "% \"unreadable sector\" markers replaced.\n" msgstr "% \"oläsbar sektor\"-markeringar ersatta.\n" -#: src/debug.c:811 src/debug.c:854 src/debug.c:1185 src/debug.c:1252 -#: src/debug.c:1256 src/debug.c:1306 src/rs01-common.c:191 -#: src/rs02-common.c:244 src/rs02-create.c:229 src/rs02-fix.c:417 -#: src/rs03-common.c:345 +#: src/debug.c:812 src/debug.c:855 src/debug.c:1186 src/debug.c:1253 +#: src/debug.c:1257 src/debug.c:1307 src/rs01-common.c:193 +#: src/rs02-common.c:246 src/rs02-create.c:211 src/rs02-fix.c:384 +#: src/rs03-common.c:346 #, c-format msgid "Failed reading sector % in image: %s" msgstr "Misslyckades med att läsa sektor % i avbild: %s" -#: src/debug.c:845 src/debug.c:894 src/debug.c:957 +#: src/debug.c:846 src/debug.c:895 src/debug.c:958 #, c-format msgid "" "Contents of sector %:\n" @@ -257,49 +257,49 @@ msgstr "" "Innehåll av sektor %:\n" "\n" -#: src/debug.c:905 +#: src/debug.c:906 #, c-format msgid "Failed reading sector %: %s" msgstr "" -#: src/debug.c:944 +#: src/debug.c:945 msgid "Raw reading only possible on CD media\n" msgstr "" -#: src/debug.c:1152 +#: src/debug.c:1153 msgid "4th argument is missing" msgstr "" -#: src/debug.c:1165 +#: src/debug.c:1166 #, c-format msgid "Source sector must be in range [0..%]\n" msgstr "" -#: src/debug.c:1173 +#: src/debug.c:1174 #, c-format msgid "Destination sector must be in range [0..%]\n" msgstr "" -#: src/debug.c:1177 +#: src/debug.c:1178 #, c-format msgid "Copying sector % from %s to sector % in %s.\n" msgstr "" -#: src/ds-marker.c:267 +#: src/ds-marker.c:269 msgid "Stop reporting these errors" msgstr "" -#: src/ds-marker.c:268 +#: src/ds-marker.c:270 msgid "Continue reporting" msgstr "" -#: src/ds-marker.c:302 +#: src/ds-marker.c:297 msgid "" "* ... more unrecoverable sectors found ...\n" "* further messages are suppressed unless the -v option is given.\n" msgstr "" -#: src/ds-marker.c:318 +#: src/ds-marker.c:311 #, c-format msgid "" "\n" @@ -309,7 +309,7 @@ msgid "" "\n" msgstr "" -#: src/ds-marker.c:321 +#: src/ds-marker.c:312 #, c-format msgid "" "\n" @@ -320,7 +320,7 @@ msgid "" "* " msgstr "" -#: src/ds-marker.c:331 +#: src/ds-marker.c:322 #, c-format msgid "" "Unrecoverable sector found!\n" @@ -337,7 +337,7 @@ msgid "" "error correction data for it. Sorry for the bad news.\n" msgstr "" -#: src/ds-marker.c:358 +#: src/ds-marker.c:345 #, c-format msgid "" "Unrecoverable sector found!\n" @@ -354,7 +354,7 @@ msgid "" "error correction data for it. Sorry for the bad news.\n" msgstr "" -#: src/ds-marker.c:388 +#: src/ds-marker.c:371 #, c-format msgid "" "Unrecoverable sector found!\n" @@ -370,7 +370,7 @@ msgid "" "error correction data for it. Sorry for the bad news.\n" msgstr "" -#: src/ds-marker.c:415 +#: src/ds-marker.c:394 #, c-format msgid "" "Unrecoverable sector found!\n" @@ -386,83 +386,83 @@ msgstr "" #. TRANSLATORS: #. This is a dummy entry which is supposed to translate into "ok". #. Please do not return anything else here. -#: src/dvdisaster.c:168 src/dvdisaster.c:180 +#: src/dvdisaster.c:170 src/dvdisaster.c:182 msgid "test phrase for verifying the locale installation" msgstr "ok" -#: src/dvdisaster.c:372 +#: src/dvdisaster.c:374 msgid "-o/--ecc-target expects 'file' or 'image'" msgstr "" -#: src/dvdisaster.c:398 +#: src/dvdisaster.c:400 #, c-format msgid "--threads must be 1..%d\n" msgstr "" -#: src/dvdisaster.c:415 +#: src/dvdisaster.c:417 msgid "--cache-size must at least be 8MiB; 16MiB or higher is recommended." msgstr "" -#: src/dvdisaster.c:417 +#: src/dvdisaster.c:419 #, c-format msgid "--cache-size maximum is %dMiB." msgstr "" -#: src/dvdisaster.c:440 +#: src/dvdisaster.c:442 msgid "--encoding-algorithm: SSE2 not supported on this processor!" msgstr "" -#: src/dvdisaster.c:444 +#: src/dvdisaster.c:446 msgid "--encoding-algorithm: valid types are 32bit, 64bit, SSE2" msgstr "" -#: src/dvdisaster.c:451 +#: src/dvdisaster.c:453 msgid "--encoding-algorithm: AltiVec not supported on this processor!" msgstr "" -#: src/dvdisaster.c:455 +#: src/dvdisaster.c:457 msgid "--encoding-algorithm: valid types are 32bit, 64bit, AltiVec" msgstr "" -#: src/dvdisaster.c:458 +#: src/dvdisaster.c:460 msgid "--encoding-algorithm: valid types are 32bit, 64bit" msgstr "" -#: src/dvdisaster.c:467 +#: src/dvdisaster.c:469 msgid "--encoding-io-strategy: mmap not supported on this OS" msgstr "" -#: src/dvdisaster.c:471 +#: src/dvdisaster.c:473 msgid "--encoding-io-strategy: valid types are readwrite and mmap" msgstr "" -#: src/dvdisaster.c:481 +#: src/dvdisaster.c:483 msgid "Valid args for --driver: sg,cdrom" msgstr "" -#: src/dvdisaster.c:483 +#: src/dvdisaster.c:485 msgid "--driver is only supported on GNU/Linux" msgstr "" -#: src/dvdisaster.c:497 +#: src/dvdisaster.c:499 msgid "--fixed-speed-values is only allowed in debug mode" msgstr "" -#: src/dvdisaster.c:552 +#: src/dvdisaster.c:554 #, c-format msgid "--prefetch-sectors must be in range 32...%d" msgstr "" -#: src/dvdisaster.c:606 +#: src/dvdisaster.c:608 msgid "--set-version is only allowed in debug mode" msgstr "" -#: src/dvdisaster.c:713 +#: src/dvdisaster.c:715 #, c-format msgid "?? illegal getopt return value %d\n" msgstr "?? ogiltigt getopt-svarsvärde %d\n" -#: src/dvdisaster.c:806 src/main-window.c:149 +#: src/dvdisaster.c:808 src/main-window.c:153 #, c-format msgid "" "\n" @@ -473,8 +473,8 @@ msgstr "" "Metod %s inte tillgänglig.\n" "Använd -m utan parametrar för en lista på metoder.\n" -#: src/dvdisaster.c:817 src/rs01-create.c:285 src/rs02-create.c:1075 -#: src/rs03-create.c:1320 +#: src/dvdisaster.c:819 src/rs01-create.c:261 src/rs02-create.c:1031 +#: src/rs03-create.c:1276 #, c-format msgid "" "\n" @@ -483,25 +483,25 @@ msgstr "" "\n" "Öppnar %s" -#: src/dvdisaster.c:824 src/rs01-create.c:294 src/rs02-create.c:175 -#: src/rs02-create.c:1085 src/rs03-create.c:349 src/rs03-create.c:1335 +#: src/dvdisaster.c:826 src/rs01-create.c:270 src/rs02-create.c:159 +#: src/rs02-create.c:1041 src/rs03-create.c:331 src/rs03-create.c:1291 #, c-format msgid ": % medium sectors.\n" msgstr ": % mediumsektorer.\n" -#: src/dvdisaster.c:825 src/rs01-create.c:295 src/rs02-create.c:176 -#: src/rs02-create.c:1086 src/rs03-create.c:350 src/rs03-create.c:1336 +#: src/dvdisaster.c:827 src/rs01-create.c:271 src/rs02-create.c:160 +#: src/rs02-create.c:1042 src/rs03-create.c:332 src/rs03-create.c:1292 #, c-format msgid ": % medium sectors and %d bytes.\n" msgstr ": % mediumsektorer och %d byte.\n" -#: src/dvdisaster.c:852 src/main-window.c:212 +#: src/dvdisaster.c:854 src/main-window.c:216 msgid "RS01 method not available for comparing files." msgstr "RS01-metoden inte tillgänglig för jämförelser av filer." #. TRANSLATORS: Program options like -r and --read are not to be translated #. to avoid confusion when discussing the program in international forums. -#: src/dvdisaster.c:950 +#: src/dvdisaster.c:952 msgid "" "\n" "Common usage examples:\n" @@ -528,7 +528,7 @@ msgstr "" " dvdisaster -u,--unlink # Ta bort .iso-filer (när andra operationer är färdiga)\n" "\n" -#: src/dvdisaster.c:960 +#: src/dvdisaster.c:962 #, c-format msgid "" "Drive and file specification:\n" @@ -539,300 +539,304 @@ msgid "" " -o,--ecc-target [file image] - where to put ecc data in RS03\n" msgstr "" -#: src/dvdisaster.c:970 +#: src/dvdisaster.c:972 msgid "Tweaking options (see manual before using!)\n" msgstr "Justeringsflaggor (se manualen före användning!)\n" -#: src/dvdisaster.c:971 +#: src/dvdisaster.c:973 msgid " -a,--assume x,y,... - assume image is augmented with codec(s) x,y,...\n" msgstr "" -#: src/dvdisaster.c:972 +#: src/dvdisaster.c:974 msgid " -j,--jump n - jump n sectors forward after a read error (default: 16)\n" msgstr " -j,--jump n - hoppa n sektorer framåt efter ett läsfel (standard: 16)\n" -#: src/dvdisaster.c:973 +#: src/dvdisaster.c:975 msgid " -m n - list/select error correction methods (default: RS01)\n" msgstr " -m n - lista/välj felkorrigeringsmetoder (standard: RS01)\n" -#: src/dvdisaster.c:974 +#: src/dvdisaster.c:976 #, c-format msgid "" " -n,--redundancy n%% - error correction data redundancy\n" " allowed values depend on codec (see manual)\n" msgstr "" -#: src/dvdisaster.c:976 +#: src/dvdisaster.c:978 msgid " -v,--verbose - more diagnostic messages\n" msgstr " -v,--verbose - mer informativa meddelanden\n" -#: src/dvdisaster.c:977 +#: src/dvdisaster.c:979 msgid " -x,--threads n - use n threads for en-/decoding (if supported by codec)\n" msgstr "" -#: src/dvdisaster.c:978 +#: src/dvdisaster.c:980 msgid " --adaptive-read - use optimized strategy for reading damaged media\n" msgstr " --adaptive-read - använd optimerad strategi för läsning av skadat media\n" -#: src/dvdisaster.c:979 +#: src/dvdisaster.c:981 msgid " --auto-suffix - automatically add .iso and .ecc file suffixes\n" msgstr " --auto-suffix - lägg automatiskt till filändelserna .iso och .ecc \n" -#: src/dvdisaster.c:980 +#: src/dvdisaster.c:982 msgid " --cache-size n - image cache size in MiB during -c mode (default: 32MiB)\n" msgstr " --cache-size n - cachestorlek för avbild i MiB med -c (standard: 32MiB)\n" -#: src/dvdisaster.c:981 +#: src/dvdisaster.c:983 msgid " --dao - assume DAO disc; do not trim image end\n" msgstr " --dao - anta DAO-skiva; trimma inte avbildens slut\n" -#: src/dvdisaster.c:982 +#: src/dvdisaster.c:984 msgid " --defective-dump d - directory for saving incomplete raw sectors\n" msgstr "" -#: src/dvdisaster.c:984 +#: src/dvdisaster.c:986 msgid " --driver=sg/cdrom - use sg(default) or alternative cdrom driver (see man page!)\n" msgstr "" -#: src/dvdisaster.c:986 +#: src/dvdisaster.c:988 msgid " --eject - eject medium after successful read\n" msgstr "" -#: src/dvdisaster.c:987 +#: src/dvdisaster.c:989 msgid " --encoding-algorithm n - possible values: 32bit,64bit,SSE2,AltiVec\n" msgstr "" -#: src/dvdisaster.c:988 +#: src/dvdisaster.c:990 msgid " --encoding-io-strategy n - possible values: readwrite, mmap\n" msgstr "" -#: src/dvdisaster.c:989 +#: src/dvdisaster.c:991 msgid " --fill-unreadable n - fill unreadable sectors with byte n\n" msgstr " --fill-unreadable n - fyll oläsliga sektorer med byte n\n" -#: src/dvdisaster.c:990 +#: src/dvdisaster.c:992 msgid " --ignore-fatal-sense - continue reading after potentially fatal error conditon\n" msgstr "" -#: src/dvdisaster.c:991 +#: src/dvdisaster.c:993 msgid " --ignore-iso-size - ignore image size from ISO/UDF data (dangerous - see man page!)\n" msgstr "" -#: src/dvdisaster.c:992 +#: src/dvdisaster.c:994 msgid " --internal-rereads n - drive may attempt n rereads before reporting an error\n" msgstr "" -#: src/dvdisaster.c:993 +#: src/dvdisaster.c:995 msgid " --medium-info - print info about medium in drive\n" msgstr "" -#: src/dvdisaster.c:994 +#: src/dvdisaster.c:996 msgid " --no-bdr-defect-management - use bigger RS03 images for BD-R (see man page!)\n" msgstr "" -#: src/dvdisaster.c:995 +#: src/dvdisaster.c:997 msgid " --no-progress - do not print progress information\n" msgstr "" -#: src/dvdisaster.c:996 +#: src/dvdisaster.c:998 msgid " --old-ds-marker - mark missing sectors compatible with dvdisaster <= 0.70\n" msgstr "" -#: src/dvdisaster.c:997 +#: src/dvdisaster.c:999 msgid " --prefetch-sectors n - prefetch n sectors for RS03 encoding (uses ~nMiB)\n" msgstr "" -#: src/dvdisaster.c:998 +#: src/dvdisaster.c:1000 msgid " --raw-mode n - mode for raw reading CD media (20 or 21)\n" msgstr "" -#: src/dvdisaster.c:999 +#: src/dvdisaster.c:1001 msgid " --read-attempts n-m - attempts n up to m reads of a defective sector\n" msgstr "" -#: src/dvdisaster.c:1000 +#: src/dvdisaster.c:1002 msgid " --read-medium n - read the whole medium up to n times\n" msgstr "" -#: src/dvdisaster.c:1001 +#: src/dvdisaster.c:1003 msgid " --read-raw - performs read in raw mode if possible\n" msgstr "" -#: src/dvdisaster.c:1002 +#: src/dvdisaster.c:1004 msgid " --regtest - tweaks output for compatibility with regtests\n" msgstr "" -#: src/dvdisaster.c:1003 +#: src/dvdisaster.c:1005 msgid " --resource-file p - get resource file from given path\n" msgstr "" -#: src/dvdisaster.c:1004 +#: src/dvdisaster.c:1006 msgid " --speed-warning n - print warning if speed changes by more than n percent\n" msgstr " --speed-warning n - skriv ut varning om hastighet ändras med mer än n procent\n" -#: src/dvdisaster.c:1005 +#: src/dvdisaster.c:1007 msgid " --spinup-delay n - wait n seconds for drive to spin up\n" msgstr " --spinup-delay n - vänta n sekunder på att enheten ska varva upp\n" -#: src/dvdisaster.c:1009 -msgid "Debugging options (purposefully undocumented and possibly harmful)\n" -msgstr "" - -#: src/dvdisaster.c:1010 -msgid " --debug - enables the following options\n" -msgstr "" - -#: src/dvdisaster.c:1011 -msgid " --permissive-medium-type - allow more media types, even theoretically unsupported ones\n" +#: src/dvdisaster.c:1008 +msgid " --version - print version and some configuration info\n" msgstr "" #: src/dvdisaster.c:1012 -msgid " --byteset s,i,b - set byte i in sector s to b\n" +msgid "Debugging options (purposefully undocumented and possibly harmful)\n" msgstr "" #: src/dvdisaster.c:1013 -msgid " --cdump - creates C #include file dumps instead of hexdumps\n" +msgid " --debug - enables the following options\n" msgstr "" #: src/dvdisaster.c:1014 -msgid " --compare-images a,b - compare sectors in images a and b\n" +msgid " --permissive-medium-type - allow more media types, even theoretically unsupported ones\n" msgstr "" #: src/dvdisaster.c:1015 -msgid " --copy-sector a,n,b,m - copy sector n from image a to sector m in image b\n" +msgid " --byteset s,i,b - set byte i in sector s to b\n" msgstr "" #: src/dvdisaster.c:1016 -msgid " --erase sector - erase the given sector\n" +msgid " --cdump - creates C #include file dumps instead of hexdumps\n" msgstr "" #: src/dvdisaster.c:1017 -msgid " --erase n-m - erase sectors n - m, inclusively\n" +msgid " --compare-images a,b - compare sectors in images a and b\n" msgstr "" #: src/dvdisaster.c:1018 -msgid " --examine-rs02 - force RS02 exhaustive search\n" +msgid " --copy-sector a,n,b,m - copy sector n from image a to sector m in image b\n" msgstr "" #: src/dvdisaster.c:1019 -msgid " --examine-rs03 - force RS03 exhaustive search\n" +msgid " --erase sector - erase the given sector\n" msgstr "" #: src/dvdisaster.c:1020 -msgid " --fixed-speed-values - output fixed speed values for better output diffing\n" +msgid " --erase n-m - erase sectors n - m, inclusively\n" msgstr "" #: src/dvdisaster.c:1021 -msgid " --ignore-rs03-header - ignore RS03 header when repairing (forcing a full search)\n" +msgid " --examine-rs02 - force RS02 exhaustive search\n" msgstr "" #: src/dvdisaster.c:1022 -msgid " --marked-image n - create image with n marked random sectors\n" +msgid " --examine-rs03 - force RS03 exhaustive search\n" msgstr "" #: src/dvdisaster.c:1023 -msgid " --merge-images a,b merge image a with b (a receives sectors from b)\n" +msgid " --fixed-speed-values - output fixed speed values for better output diffing\n" msgstr "" #: src/dvdisaster.c:1024 -msgid " --random-errors e - seed image with (correctable) random errors\n" +msgid " --ignore-rs03-header - ignore RS03 header when repairing (forcing a full search)\n" msgstr "" #: src/dvdisaster.c:1025 -msgid " --random-image n - create image with n sectors of random numbers\n" +msgid " --marked-image n - create image with n marked random sectors\n" msgstr "" #: src/dvdisaster.c:1026 -msgid " --random-seed n - random seed for built-in random number generator\n" +msgid " --merge-images a,b merge image a with b (a receives sectors from b)\n" msgstr "" #: src/dvdisaster.c:1027 -msgid " --raw-sector n - shows hexdump of the given raw sector from medium in drive\n" +msgid " --random-errors e - seed image with (correctable) random errors\n" msgstr "" #: src/dvdisaster.c:1028 -msgid " --read-sector n - shows hexdump of the given sector from medium in drive\n" +msgid " --random-image n - create image with n sectors of random numbers\n" msgstr "" #: src/dvdisaster.c:1029 -msgid " --screen-shot - useful for generating screen shots\n" +msgid " --random-seed n - random seed for built-in random number generator\n" msgstr "" #: src/dvdisaster.c:1030 -msgid " --send-cdb arg - executes given cdb at drive; kills system if used wrong\n" +msgid " --raw-sector n - shows hexdump of the given raw sector from medium in drive\n" msgstr "" #: src/dvdisaster.c:1031 -msgid " --set-version - set program version for debugging purposes (dangerous!)\n" +msgid " --read-sector n - shows hexdump of the given sector from medium in drive\n" msgstr "" #: src/dvdisaster.c:1032 -msgid " --show-header n - assumes given sector is a ecc header and prints it\n" +msgid " --screen-shot - useful for generating screen shots\n" msgstr "" #: src/dvdisaster.c:1033 -msgid " --show-sector n - shows hexdump of the given sector in an image file\n" +msgid " --send-cdb arg - executes given cdb at drive; kills system if used wrong\n" msgstr "" #: src/dvdisaster.c:1034 -msgid " --sim-cd image - simulate a SCSI-Level CD with contents supplied by the ISO image\n" +msgid " --set-version - set program version for debugging purposes (dangerous!)\n" msgstr "" #: src/dvdisaster.c:1035 +msgid " --show-header n - assumes given sector is a ecc header and prints it\n" +msgstr "" + +#: src/dvdisaster.c:1036 +msgid " --show-sector n - shows hexdump of the given sector in an image file\n" +msgstr "" + +#: src/dvdisaster.c:1037 +msgid " --sim-cd image - simulate a SCSI-Level CD with contents supplied by the ISO image\n" +msgstr "" + +#: src/dvdisaster.c:1038 #, c-format msgid " --sim-defects n - simulate n%% defective sectors on medium\n" msgstr "" -#: src/dvdisaster.c:1036 +#: src/dvdisaster.c:1039 msgid " --truncate n - truncates image to n sectors\n" msgstr "" -#: src/dvdisaster.c:1037 +#: src/dvdisaster.c:1040 msgid "" " --zero-unreadable - replace the \"unreadable sector\" markers with zeros\n" "\n" msgstr "" -#: src/dvdisaster.c:1067 +#: src/dvdisaster.c:1070 msgid "Optical drive 52X FW 1.02" msgstr "" -#: src/ecc-rs01.c:41 +#: src/ecc-rs01.c:43 msgid "Error correction file (RS01)" msgstr "Felkorrigeringsfil (RS01)" -#: src/ecc-rs01.c:42 +#: src/ecc-rs01.c:44 msgid "Classic Reed-Solomon method based on polynomial arithmetic" msgstr "Klassisk Reed-Solomon-metod baserad på polynomial aritmetik" -#: src/ecc-rs02.c:42 +#: src/ecc-rs02.c:44 msgid "Augmented image (RS02)" msgstr "" -#: src/ecc-rs02.c:43 +#: src/ecc-rs02.c:45 msgid "Reed-Solomon method with improved tolerance for defective ecc data" msgstr "Reed-Solomon-metod med förbättrad tolerans för skadat ecc-data" -#: src/ecc-rs03.c:42 +#: src/ecc-rs03.c:44 msgid "Multithreaded RS codec (RS03)" msgstr "" -#: src/ecc-rs03.c:43 +#: src/ecc-rs03.c:45 msgid "Multithreaded Reed-Solomon codec for error correction files and augmented images" msgstr "" -#: src/endian.c:76 +#: src/endian.c:78 msgid "" "\n" "Contents of Ecc Header:\n" "\n" msgstr "" -#: src/help-dialogs.c:394 +#: src/help-dialogs.c:395 msgid "windowtitle|Log data" msgstr "Loggdata" -#: src/help-dialogs.c:395 +#: src/help-dialogs.c:396 msgid "" "Log data\n" "Protocol of the current or previous action" @@ -840,11 +844,11 @@ msgstr "" "Loggdata\n" "Protokoll för aktuell eller tidigare operation" -#: src/help-dialogs.c:411 +#: src/help-dialogs.c:412 msgid "windowtitle|GNU General Public License" msgstr "GNU General Public License" -#: src/help-dialogs.c:412 +#: src/help-dialogs.c:413 msgid "" "GNU General Public License\n" "The license terms of dvdisaster." @@ -852,7 +856,7 @@ msgstr "" "GNU General Public License\n" "Licensvillkoren för dvdisaster." -#: src/help-dialogs.c:502 +#: src/help-dialogs.c:503 #, c-format msgid "" "File\n" @@ -863,7 +867,7 @@ msgstr "" "%s\n" "inte tillgänglig" -#: src/help-dialogs.c:512 +#: src/help-dialogs.c:513 #, c-format msgid "" "File\n" @@ -871,39 +875,23 @@ msgid "" "not accessible" msgstr "" -#: src/help-dialogs.c:524 +#: src/help-dialogs.c:525 msgid "" "\n" "<- Error: Text file truncated here" msgstr "" -#: src/help-dialogs.c:593 -msgid "windowtitle|Modifying dvdisaster" -msgstr "Ändra dvdisaster" - -#: src/help-dialogs.c:594 -msgid "" -"Modifying dvdisaster\n" -"Your changes are not ours." -msgstr "" - -#: src/help-dialogs.c:734 +#: src/help-dialogs.c:724 msgid "windowtitle|About dvdisaster" msgstr "Om dvdisaster" -#: src/help-dialogs.c:754 +#: src/help-dialogs.c:742 src/misc.c:219 msgid "" -"[Modified version]\n" -"Copyright 2019-2021 Stephane Lesimple\n" -"Copyright 2005-2017 Debian Optical Media Tools Team\n" -"Copyright 2004-2017 Carsten Gnoerlich" +"Copyright 2004-2017 Carsten Gnoerlich.\n" +"Copyright 2019-2021 The dvdisaster development team." msgstr "" -#: src/help-dialogs.c:760 src/misc.c:218 -msgid "Copyright 2004-2017 Carsten Gnoerlich" -msgstr "Copyright 2004-2017 Carsten Gnörlich" - -#: src/help-dialogs.c:767 +#: src/help-dialogs.c:748 msgid "" "dvdisaster provides a margin of safety against data loss\n" "on optical media caused by aging or scratches.\n" @@ -915,7 +903,7 @@ msgstr "" "Det skapar felkorrigeringsdata som kan användas för att\n" "återskapa oläsliga sektorer om skivan senare blir skadad.\n" -#: src/help-dialogs.c:772 +#: src/help-dialogs.c:753 msgid "" "This software comes with absolutely no warranty.\n" "This is free software and you are welcome to redistribute it\n" @@ -927,47 +915,36 @@ msgstr "" "\n" "Svensk översättning av Daniel Nylander (info@danielnylander.se)\n" -#: src/help-dialogs.c:778 +#: src/help-dialogs.c:758 msgid "" "\n" -"This version is not the original. It has been patched\n" -"for Debian to support DVD-ROMs (with and without encryption),\n" -"and subsequently patched again to support a CLI-only build, among other things.\n" -"\n" -"Please do not bother the original authors of dvdisaster nor the Debian maintainer\n" -"but submit bugreports against [GitHub] instead.\n" +"e-mail: support@dvdisaster.org" msgstr "" -#: src/help-dialogs.c:794 -msgid "" -"\n" -"e-mail: carsten@dvdisaster.org -or- cgnoerlich@fsfe.org" -msgstr "" - -#: src/help-dialogs.c:796 +#: src/help-dialogs.c:765 msgid "" "\n" "NetBSD port: Sergey Svishchev <svs@ropnet.ru>" msgstr "" -#: src/image.c:153 src/image.c:158 +#: src/image.c:156 src/image.c:161 #, c-format msgid "Image file %s not present or permission denied.\n" msgstr "" -#: src/image.c:168 src/image.c:173 +#: src/image.c:172 src/image.c:177 msgid "" "\n" "Error correction file type unknown.\n" msgstr "" -#: src/image.c:183 src/image.c:189 +#: src/image.c:188 src/image.c:194 msgid "" "\n" "Permission denied on ecc file (perhaps not writeable?).\n" msgstr "" -#: src/image.c:200 src/image.c:206 +#: src/image.c:206 src/image.c:212 msgid "" "\n" "No error correction file present.\n" @@ -989,12 +966,12 @@ msgstr "" "\n" "Du kan göra om operationen när du har frigjort mer utrymme." -#: src/main-window.c:67 +#: src/main-window.c:70 #, c-format msgid "log: %s\n" msgstr "" -#: src/main-window.c:93 +#: src/main-window.c:97 msgid "" "The .iso image and error correction file\n" "must not be the same file!\n" @@ -1004,7 +981,7 @@ msgid "" "please leave the error correction file name blank." msgstr "" -#: src/main-window.c:103 +#: src/main-window.c:107 msgid "" "The error correction file type must not be \".iso\".\n" "\n" @@ -1013,294 +990,294 @@ msgid "" "please leave the error correction file name blank." msgstr "" -#: src/main-window.c:173 +#: src/main-window.c:177 msgid "Internal error: No suitable method for repairing image." msgstr "" -#: src/main-window.c:280 +#: src/main-window.c:284 msgid "button|Read" msgstr "Läs" -#: src/main-window.c:283 +#: src/main-window.c:287 msgid "tooltip|Read Image" msgstr "Läs avbild" -#: src/main-window.c:283 +#: src/main-window.c:288 msgid "Reads an optical disc image into a file (or tries to complete an existing image file)." msgstr "Läser en cd/dvd-avbild till en fil (eller försöker att färdigställa en existerande avbildsfil)." -#: src/main-window.c:297 +#: src/main-window.c:302 msgid "button|Create" msgstr "Skapa" -#: src/main-window.c:300 +#: src/main-window.c:305 msgid "tooltip|Create error correction data" msgstr "" -#: src/main-window.c:300 +#: src/main-window.c:306 msgid "Creates error correction data. Requires an image file." msgstr "" -#: src/main-window.c:304 +#: src/main-window.c:310 msgid "button|Scan" msgstr "Sök av" -#: src/main-window.c:307 +#: src/main-window.c:313 msgid "tooltip|Scan medium" msgstr "Sök av medium" -#: src/main-window.c:307 +#: src/main-window.c:314 msgid "Scans medium for unreadable sectors." msgstr "Söker av medium för oläsbara sektorer." -#: src/main-window.c:311 +#: src/main-window.c:318 msgid "button|Fix" msgstr "Rätta till" -#: src/main-window.c:314 +#: src/main-window.c:321 msgid "tooltip|Repair image" msgstr "Reparera avbild" -#: src/main-window.c:314 +#: src/main-window.c:322 msgid "Repairs an image. Requires an image file and error correction data." msgstr "Reparerar en avbild. Kräver en avbildsfil och felkorrigeringsdata." -#: src/main-window.c:318 +#: src/main-window.c:326 msgid "button|Verify" msgstr "Validera" -#: src/main-window.c:321 +#: src/main-window.c:329 msgid "tooltip|Consistency check" msgstr "" -#: src/main-window.c:321 +#: src/main-window.c:330 msgid "Tests consistency of error correction data and image file." msgstr "Testar konsistensen på felkorrigeringsdata och avbildsfil." -#: src/main-window.c:325 +#: src/main-window.c:334 msgid "button|Strip" msgstr "" -#: src/main-window.c:328 +#: src/main-window.c:337 msgid "tooltip|Strip ECC" msgstr "" -#: src/main-window.c:328 +#: src/main-window.c:338 msgid "Strip ECC data from an augmented image." msgstr "" -#: src/main-window.c:332 +#: src/main-window.c:342 msgid "button|Stop" msgstr "Stopp" -#: src/main-window.c:335 +#: src/main-window.c:345 msgid "tooltip|Abort action" msgstr "Avbryt operation" -#: src/main-window.c:335 +#: src/main-window.c:346 msgid "Aborts an ongoing action." msgstr "Avbryter en pågående operation." -#: src/main-window.c:492 +#: src/main-window.c:503 msgid "tooltip|Protocol for current action" msgstr "Protokoll för aktuell operation" -#: src/main-window.c:493 +#: src/main-window.c:504 msgid "Displays additional information created during the current or last action." msgstr "Visar ytterligare information skapad under aktuella eller senaste operationen." -#: src/main-window.c:502 +#: src/main-window.c:513 msgid "View log" msgstr "Visa logg" -#: src/medium-info.c:57 +#: src/medium-info.c:58 msgid "Please wait..." msgstr "" -#: src/medium-info.c:118 +#: src/medium-info.c:112 msgid "Medium not present" msgstr "" -#: src/medium-info.c:126 src/medium-info.c:488 +#: src/medium-info.c:119 src/medium-info.c:400 msgid "Physical medium info" msgstr "" -#: src/medium-info.c:172 src/medium-info.c:178 +#: src/medium-info.c:141 src/medium-info.c:147 msgid "empty" msgstr "" -#: src/medium-info.c:173 +#: src/medium-info.c:142 msgid "appendable" msgstr "" -#: src/medium-info.c:174 +#: src/medium-info.c:143 msgid "finalized" msgstr "" -#: src/medium-info.c:175 src/scsi-layer.c:100 +#: src/medium-info.c:144 src/scsi-layer.c:102 msgid "unknown" msgstr "okänd" -#: src/medium-info.c:179 +#: src/medium-info.c:148 msgid "incomplete" msgstr "" -#: src/medium-info.c:180 +#: src/medium-info.c:149 msgid "damaged" msgstr "" -#: src/medium-info.c:181 src/rs02-verify.c:695 src/rs02-verify.c:913 -#: src/rs02-verify.c:914 src/rs02-verify.c:915 src/rs03-verify.c:1340 -#: src/rs03-verify.c:1342 src/rs03-verify.c:1343 +#: src/medium-info.c:150 src/rs02-verify.c:673 src/rs02-verify.c:891 +#: src/rs02-verify.c:892 src/rs02-verify.c:893 src/rs03-verify.c:1259 +#: src/rs03-verify.c:1262 src/rs03-verify.c:1265 msgid "complete" msgstr "" -#: src/medium-info.c:192 +#: src/medium-info.c:155 #, c-format msgid "%s (%d sessions; last session %s)\n" msgstr "" -#: src/medium-info.c:204 +#: src/medium-info.c:161 #, c-format msgid "% sectors (% MiB), from READ CAPACITY\n" msgstr "" -#: src/medium-info.c:213 +#: src/medium-info.c:164 #, c-format msgid "% sectors (% MiB), from DVD structure\n" msgstr "" -#: src/medium-info.c:223 src/medium-info.c:297 +#: src/medium-info.c:168 #, c-format msgid "% sectors (% MiB)\n" msgstr "" -#: src/medium-info.c:235 src/medium-info.c:561 +#: src/medium-info.c:180 src/medium-info.c:473 msgid "Filesystem info" msgstr "" -#: src/medium-info.c:253 +#: src/medium-info.c:186 #, c-format msgid "%d sectors (% MiB)\n" msgstr "" -#: src/medium-info.c:280 src/medium-info.c:594 +#: src/medium-info.c:207 src/medium-info.c:506 msgid "Augmented image info" msgstr "" -#: src/medium-info.c:287 src/medium-info.c:289 +#: src/medium-info.c:213 #, c-format msgid "%s, %d roots, %4.1f%% redundancy.\n" msgstr "" -#: src/medium-info.c:295 +#: src/medium-info.c:217 #, c-format msgid "% sectors (% MiB)\n" msgstr "" -#: src/medium-info.c:319 +#: src/medium-info.c:229 msgid "yes" msgstr "" -#: src/medium-info.c:323 +#: src/medium-info.c:234 msgid "no" msgstr "" -#: src/medium-info.c:419 +#: src/medium-info.c:331 msgid "windowtitle|Medium info" msgstr "" -#: src/medium-info.c:434 +#: src/medium-info.c:346 msgid "" "Medium info\n" "Properties of the currently inserted medium" msgstr "" -#: src/medium-info.c:446 +#: src/medium-info.c:358 msgid "Drive selection" msgstr "" -#: src/medium-info.c:453 +#: src/medium-info.c:365 msgid "Drive:" msgstr "" -#: src/medium-info.c:474 src/menubar.c:493 +#: src/medium-info.c:386 src/menubar.c:496 msgid "No drives found" msgstr "Inga enheter hittade" -#: src/medium-info.c:479 +#: src/medium-info.c:391 msgid " " msgstr "" -#: src/medium-info.c:482 +#: src/medium-info.c:394 msgid "Update medium info" msgstr "" -#: src/medium-info.c:495 +#: src/medium-info.c:407 msgid "Medium type:" msgstr "" -#: src/medium-info.c:503 +#: src/medium-info.c:415 msgid "Book type:" msgstr "" -#: src/medium-info.c:511 src/scsi-layer.c:2747 +#: src/medium-info.c:423 src/scsi-layer.c:2741 msgid "Manuf.-ID:" msgstr "" -#: src/medium-info.c:519 +#: src/medium-info.c:431 msgid "Drive profile:" msgstr "" -#: src/medium-info.c:527 +#: src/medium-info.c:439 msgid "Disc status:" msgstr "" -#: src/medium-info.c:535 +#: src/medium-info.c:447 msgid "Used sectors:" msgstr "" -#: src/medium-info.c:551 +#: src/medium-info.c:463 msgid "Blank capacity:" msgstr "" -#: src/medium-info.c:568 +#: src/medium-info.c:480 msgid "Medium label:" msgstr "" -#: src/medium-info.c:576 +#: src/medium-info.c:488 msgid "File system size:" msgstr "" -#: src/medium-info.c:584 +#: src/medium-info.c:496 msgid "Creation time:" msgstr "" -#: src/medium-info.c:601 +#: src/medium-info.c:513 msgid "Error correction data:" msgstr "" -#: src/medium-info.c:609 +#: src/medium-info.c:521 msgid "Augmented image size:" msgstr "" -#: src/medium-info.c:617 +#: src/medium-info.c:529 msgid "dvdisaster version:" msgstr "" -#: src/medium-info.c:625 +#: src/medium-info.c:537 msgid "Exhaustive search:" msgstr "" -#: src/medium-info.c:632 +#: src/medium-info.c:544 msgid "Run exhaustive search" msgstr "" -#: src/menubar.c:131 +#: src/menubar.c:133 msgid "windowtitle|Change log" msgstr "Ändringslogg" -#: src/menubar.c:132 +#: src/menubar.c:134 msgid "" "Change log\n" "Major differences from earlier program versions." @@ -1308,11 +1285,11 @@ msgstr "" "Ändringslogg\n" "Stora skillnader från tidigare programversioner." -#: src/menubar.c:138 +#: src/menubar.c:140 msgid "windowtitle|Credits" msgstr "Tack till" -#: src/menubar.c:139 +#: src/menubar.c:141 msgid "" "Credits\n" "Thanks go out to..." @@ -1320,11 +1297,11 @@ msgstr "" "Tack till\n" "Tack går till..." -#: src/menubar.c:145 +#: src/menubar.c:147 msgid "windowtitle|To do list" msgstr "AttGöra-lista" -#: src/menubar.c:146 +#: src/menubar.c:148 msgid "" "To do list\n" "A sneak preview of coming features ... perhaps ;-)" @@ -1332,139 +1309,139 @@ msgstr "" "AttGöra-lista\n" "En förhandsvisning av kommande funktioner ... kanske ;-)" -#: src/menubar.c:213 +#: src/menubar.c:215 msgid "menu|Select Image" msgstr "Välj avbild" -#: src/menubar.c:214 +#: src/menubar.c:216 msgid "menu|Select Parity File" msgstr "Välj paritetsfil" -#: src/menubar.c:215 +#: src/menubar.c:217 msgid "menu|Quit" msgstr "Avsluta" -#: src/menubar.c:217 +#: src/menubar.c:219 msgid "menu|File" msgstr "Arkiv" -#: src/menubar.c:224 +#: src/menubar.c:226 msgid "menu|Medium info" msgstr "" -#: src/menubar.c:229 +#: src/menubar.c:231 msgid "menu|Raw sector editor" msgstr "" -#: src/menubar.c:231 +#: src/menubar.c:233 msgid "menu|Tools" msgstr "" -#: src/menubar.c:239 +#: src/menubar.c:241 msgid "menu|About" msgstr "Om" -#: src/menubar.c:240 +#: src/menubar.c:242 msgid "menu|User manual" msgstr "Användarmanual" -#: src/menubar.c:244 +#: src/menubar.c:246 msgid "menu|Credits" msgstr "Tack till" -#: src/menubar.c:245 +#: src/menubar.c:247 msgid "menu|Licence (GPL)" msgstr "Licens (GPL)" -#: src/menubar.c:249 +#: src/menubar.c:251 msgid "menu|Change log" msgstr "Ändringslogg" -#: src/menubar.c:250 +#: src/menubar.c:252 msgid "menu|To do list" msgstr "AttGöra-lista" -#: src/menubar.c:252 +#: src/menubar.c:254 msgid "menu|Help" msgstr "Hjälp" -#: src/menubar.c:336 +#: src/menubar.c:338 msgid "windowtitle|Image file selection" msgstr "Val av avbildsfil" -#: src/menubar.c:373 +#: src/menubar.c:375 msgid "windowtitle|Error correction file selection" msgstr "Val av felkorrigeringsfil" -#: src/menubar.c:475 src/menubar.c:499 +#: src/menubar.c:477 src/menubar.c:502 msgid "tooltip|Drive selection" msgstr "Enhetsval" -#: src/menubar.c:475 +#: src/menubar.c:478 msgid "Use the nearby drop-down list to select the input drive." msgstr "Använd den närliggande rullgardinsmeny för att välja inmatningsenhet." -#: src/menubar.c:499 +#: src/menubar.c:503 msgid "Selects the input drive for reading images." msgstr "Väljer enhet för indata för att läsa avbilder." -#: src/menubar.c:529 +#: src/menubar.c:533 msgid "tooltip|Image file selection" msgstr "Val av avbildsfil" -#: src/menubar.c:529 +#: src/menubar.c:534 msgid "Selects a new image file." msgstr "Väljer en ny avbildsfil." -#: src/menubar.c:530 +#: src/menubar.c:536 msgid "tooltip|Current image file" msgstr "Aktuell avbildsfil" -#: src/menubar.c:530 +#: src/menubar.c:537 msgid "Shows the name of the current image file." msgstr "Visar namnet på aktuell avbildsfil." -#: src/menubar.c:554 +#: src/menubar.c:562 msgid "tooltip|Error correction file selection" msgstr "Val av felkorrigieringsfil" -#: src/menubar.c:554 +#: src/menubar.c:563 msgid "Selects a new error correction file." msgstr "Väljer en ny felkorrigeringsfil." -#: src/menubar.c:555 +#: src/menubar.c:565 msgid "tooltip|Current error correction file" msgstr "Aktuell felkorrigeringsfil" -#: src/menubar.c:555 +#: src/menubar.c:566 msgid "Shows the name of the current error correction file." msgstr "Visar namnet på aktuell felkorrigeringsfil." -#: src/menubar.c:566 +#: src/menubar.c:577 msgid "tooltip|Preferences" msgstr "Inställningar" -#: src/menubar.c:566 +#: src/menubar.c:578 msgid "Customize settings for creating images, error correction files and other stuff." msgstr "Anpassa inställningar för skapandet av avbilder, felkorrigeringsfiler och andra saker." -#: src/menubar.c:576 +#: src/menubar.c:588 msgid "tooltip|User manual" msgstr "Användarmanual" -#: src/menubar.c:576 +#: src/menubar.c:589 msgid "Displays the user manual (external PDF viewer required)." msgstr "" -#: src/menubar.c:586 +#: src/menubar.c:599 msgid "tooltip|Quit" msgstr "Avsluta" -#: src/menubar.c:586 +#: src/menubar.c:599 msgid "Quit dvdisaster" msgstr "Avsluta dvdisaster" -#: src/method.c:55 +#: src/method.c:57 msgid "" "\n" "List of available methods:\n" @@ -1474,7 +1451,7 @@ msgstr "" "Lista på tillgängliga metoder:\n" "\n" -#: src/misc.c:224 +#: src/misc.c:225 msgid "" "This software comes with ABSOLUTELY NO WARRANTY. This\n" "is free software and you are welcome to redistribute it\n" @@ -1486,11 +1463,11 @@ msgstr "" "under villkoren för GNU GENERAL PUBLIC LICENSE.\n" "Se filen \"COPYING\" för ytterligare information.\n" -#: src/misc.c:550 +#: src/misc.c:535 msgid "Warning" msgstr "Varning" -#: src/misc.c:633 src/misc.c:643 +#: src/misc.c:610 src/misc.c:619 msgid "" "\n" "*\n" @@ -1502,21 +1479,40 @@ msgstr "" "* dvdisaster - kan inte fortsätta:\n" "*\n" -#: src/misc.c:1307 -msgid "Do not ask again" +#: src/misc.c:758 +msgid "Strip ECC aborted" msgstr "" -#: src/misc.c:1331 +#: src/misc.c:766 +msgid "Image is not augmented (no dvdisaster signature found)." +msgstr "" + +#: src/misc.c:772 +#, c-format +msgid "Invalid end data sector (%), aborting" +msgstr "" + +#: src/misc.c:781 #, c-format msgid "" -"Image file already exists and does not match the medium:\n" -"\n" -"%s\n" -"\n" -"The existing image file will be deleted." +"We're about to truncate the image from % sectors (% MiB)\n" +"to % sectors (% MiB), removing any dvdisaster-added ECC data.\n" +"This will restore the image to its pre-augmented original size." msgstr "" -#: src/misc.c:1353 +#: src/misc.c:788 +msgid "Aborted on user request" +msgstr "" + +#: src/misc.c:797 +msgid "Image successfully truncated back to its original size.\n" +msgstr "" + +#: src/misc.c:801 +msgid "Image successfully truncated" +msgstr "" + +#: src/misc-gui.c:241 #, c-format msgid "" "The error correction file is already present:\n" @@ -1526,92 +1522,73 @@ msgid "" "Overwrite it?" msgstr "" -#: src/misc.c:1388 -msgid "Strip ECC aborted" +#: src/misc-gui.c:639 +msgid "Do not ask again" msgstr "" -#: src/misc.c:1396 -msgid "Image is not augmented (no dvdisaster signature found)." -msgstr "" - -#: src/misc.c:1402 -#, c-format -msgid "Invalid end data sector (%), aborting" -msgstr "" - -#: src/misc.c:1411 +#: src/misc-gui.c:660 #, c-format msgid "" -"We're about to truncate the image from % sectors (% MiB)\n" -"to % sectors (% MiB), removing any dvdisaster-added ECC data.\n" -"This will restore the image to its pre-augmented original size." +"Image file already exists and does not match the medium:\n" +"\n" +"%s\n" +"\n" +"The existing image file will be deleted." msgstr "" -#: src/misc.c:1418 -msgid "Aborted on user request" -msgstr "" - -#: src/misc.c:1427 -msgid "Image successfully truncated back to its original size.\n" -msgstr "" - -#: src/misc.c:1431 -msgid "Image successfully truncated" -msgstr "" - -#: src/preferences.c:452 +#: src/preferences.c:454 msgid "Switched to the linear reading strategy." msgstr "Växlade till linjär lässtategi." -#: src/preferences.c:838 +#: src/preferences.c:840 msgid "Color selection" msgstr "" -#: src/preferences.c:1059 +#: src/preferences.c:1061 msgid "Disabled automatic error correction file generation." msgstr "Inaktiverade automatisk generering av felkorrigeringsfil." -#: src/preferences.c:1222 src/preferences.c:2362 src/preferences.c:2371 +#: src/preferences.c:1224 src/preferences.c:2376 src/preferences.c:2385 msgid "Raw sector caching" msgstr "" -#: src/preferences.c:1294 +#: src/preferences.c:1296 msgid "Log file" msgstr "" -#: src/preferences.c:1316 +#: src/preferences.c:1318 msgid "Delete the log file?" msgstr "" -#: src/preferences.c:1410 +#: src/preferences.c:1412 msgid "Preferences" msgstr "Inställningar" -#: src/preferences.c:1440 src/rs03-preferences.c:514 +#: src/preferences.c:1442 src/rs03-preferences.c:516 msgid "Image" msgstr "" -#: src/preferences.c:1444 +#: src/preferences.c:1446 msgid "Image creation" msgstr "" -#: src/preferences.c:1453 +#: src/preferences.c:1455 msgid "Reading strategy" msgstr "" -#: src/preferences.c:1453 +#: src/preferences.c:1456 msgid "Reading strategy: " msgstr "Lässtrategi: " -#: src/preferences.c:1468 +#: src/preferences.c:1471 msgid "Linear" msgstr "Linjär" -#: src/preferences.c:1476 +#: src/preferences.c:1479 msgid "Adaptive (for defective media)" msgstr "Adaptiv (för defekt media)" -#: src/preferences.c:1488 +#: src/preferences.c:1491 msgid "" "Reading strategy\n" "\n" @@ -1626,19 +1603,19 @@ msgid "" "Using the adaptive strategy without error correction data is possible but it is recommended to use linear reading in that case." msgstr "" -#: src/preferences.c:1500 +#: src/preferences.c:1503 msgid "Reading range" msgstr "" -#: src/preferences.c:1500 +#: src/preferences.c:1504 msgid "Read/Scan from sector" msgstr "Läs/Sök av från sektor" -#: src/preferences.c:1526 +#: src/preferences.c:1530 msgid "to sector" msgstr "till sektor" -#: src/preferences.c:1544 +#: src/preferences.c:1548 msgid "" "Reading range\n" "\n" @@ -1649,19 +1626,19 @@ msgid "" "These settings are only effective for the current session and will not be saved." msgstr "" -#: src/preferences.c:1554 +#: src/preferences.c:1558 msgid "Error correction data recognization" msgstr "" -#: src/preferences.c:1563 +#: src/preferences.c:1567 msgid "Exhaustive RS02 header search" msgstr "" -#: src/preferences.c:1563 +#: src/preferences.c:1568 msgid "Perform exhaustive search for RS02 headers" msgstr "" -#: src/preferences.c:1584 +#: src/preferences.c:1589 msgid "" "Exhaustive RS02 header search\n" "\n" @@ -1672,15 +1649,15 @@ msgid "" "Leave this option off when you are processing media or images which are not augmented with RS02 data. Otherwise you will waste a lot of time searching for the RS02 signatures and increase wear on the drive." msgstr "" -#: src/preferences.c:1603 +#: src/preferences.c:1608 msgid "Recover RS03 signatures" msgstr "" -#: src/preferences.c:1603 +#: src/preferences.c:1609 msgid "Find and recover RS03 signatures" msgstr "" -#: src/preferences.c:1624 +#: src/preferences.c:1630 msgid "" "Exhaustive RS03 header search\n" "\n" @@ -1691,19 +1668,19 @@ msgid "" "Leave this option off when you are processing media or images which are not augmented with RS03 data. Otherwise you will waste a lot of time searching for the RS03 signatures and increase wear on the drive." msgstr "" -#: src/preferences.c:1643 +#: src/preferences.c:1649 msgid "Image properties" msgstr "Avbildsegenskaper" -#: src/preferences.c:1652 +#: src/preferences.c:1658 msgid "Ignore ISO/UDF meta data" msgstr "" -#: src/preferences.c:1652 +#: src/preferences.c:1659 msgid "Ignore image size recorded in ISO/UDF file system" msgstr "" -#: src/preferences.c:1673 +#: src/preferences.c:1680 msgid "" "Ignore image size recorded in ISO/UDF filesystem\n" "\n" @@ -1716,15 +1693,15 @@ msgid "" "Do not blindly turn this option on as it will most likely create sub optimal or corrupted ISO images, especially if you plan to use the image for error correction data generation." msgstr "" -#: src/preferences.c:1692 +#: src/preferences.c:1699 msgid "DAO mode" msgstr "" -#: src/preferences.c:1692 +#: src/preferences.c:1700 msgid "Assume image to be written in DAO mode (don't truncate)" msgstr "Anta att avbild kommer att skrivas i DAO-läget (kapa inte av)" -#: src/preferences.c:1713 +#: src/preferences.c:1721 msgid "" "Assume DAO mode\n" "\n" @@ -1735,19 +1712,19 @@ msgid "" "Tip: To avoid these problems, consider using the \"DAO / Disc at once\" (sometimes also called \"SAO / Session at once\") mode for writing single session media." msgstr "" -#: src/preferences.c:1728 +#: src/preferences.c:1736 msgid "Image format" msgstr "" -#: src/preferences.c:1737 +#: src/preferences.c:1745 msgid "Missing sector tags" msgstr "" -#: src/preferences.c:1737 +#: src/preferences.c:1746 msgid "Use old style missing sector tags (not recommended)" msgstr "" -#: src/preferences.c:1758 +#: src/preferences.c:1767 msgid "" "Missing sector tagging\n" "\n" @@ -1756,15 +1733,15 @@ msgid "" "N.b.: dvdisaster >= 0.72 will automatically recognize both tag formats when reading images; setting this value only affects the creation of new images." msgstr "" -#: src/preferences.c:1778 +#: src/preferences.c:1787 msgid "Filling of unreadable sectors" msgstr "" -#: src/preferences.c:1779 +#: src/preferences.c:1788 msgid "Fill unreadable sectors with byte:" msgstr "Fyll oläsbara sektorer med byte:" -#: src/preferences.c:1819 +#: src/preferences.c:1828 msgid "" "Filling of unreadable sectors\n" "\n" @@ -1772,54 +1749,54 @@ msgid "" "In other data recovery software it is common to fill unreadable sectors with a certain byte value. To allow interoperability with such programs, you can specify the byte value they are using:\n" msgstr "" -#: src/preferences.c:1828 +#: src/preferences.c:1837 msgid "0xb0 (176 decimal): for compatibility with h2cdimage published by \"c't\", a German periodical.\n" msgstr "" -#: src/preferences.c:1832 +#: src/preferences.c:1841 msgid "Note: Using zero filling (0x00, decimal 0) is highly discouraged. Most media contain regular zero filled sectors which can not be told apart from unreadable sectors if zero filling is used." msgstr "" -#: src/preferences.c:1839 +#: src/preferences.c:1848 msgid "Drive" msgstr "" -#: src/preferences.c:1843 src/preferences.c:1846 +#: src/preferences.c:1852 src/preferences.c:1855 msgid "Drive initialisation" msgstr "Enhetsinitiering" -#: src/preferences.c:1847 +#: src/preferences.c:1856 msgid "Wait" msgstr "Vänta" -#: src/preferences.c:1850 +#: src/preferences.c:1859 msgid "seconds for drive to spin up" msgstr "sekunder för att enheten ska varva upp" -#: src/preferences.c:1880 +#: src/preferences.c:1889 msgid "" "Drive initialisation\n" "\n" "Waits the specified amount of seconds for letting the drive spin up. This avoids speed jumps at the beginning of the reading curve." msgstr "" -#: src/preferences.c:1886 +#: src/preferences.c:1895 msgid "Raw reading parameters" msgstr "" -#: src/preferences.c:1895 +#: src/preferences.c:1904 msgid "Raw reading mode" msgstr "" -#: src/preferences.c:1895 +#: src/preferences.c:1905 msgid "Raw reading mode: " msgstr "" -#: src/preferences.c:1927 +#: src/preferences.c:1937 msgid "other:" msgstr "" -#: src/preferences.c:1961 +#: src/preferences.c:1971 msgid "" "Raw reading mode\n" "\n" @@ -1833,19 +1810,19 @@ msgid "" "0x01 Some drives do the right thing when given this value, although this makes no sense according to the SCSI specs. Try entering this value in the \"other\" field if the other choices do not work. See the mode page 01h documentation in chapter 6 of MMC3 or later for additional information." msgstr "" -#: src/preferences.c:1987 +#: src/preferences.c:1997 msgid "Internal read attempts" msgstr "" -#: src/preferences.c:1988 +#: src/preferences.c:1998 msgid "Reread defective sectors" msgstr "" -#: src/preferences.c:1991 +#: src/preferences.c:2001 msgid "times" msgstr "" -#: src/preferences.c:2022 +#: src/preferences.c:2032 msgid "" "Internal read attempts\n" "\n" @@ -1855,15 +1832,15 @@ msgid "" "Use the value -1 to leave the drive at its default setting." msgstr "" -#: src/preferences.c:2035 src/preferences.c:2038 +#: src/preferences.c:2045 src/preferences.c:2048 msgid "Fatal error handling" msgstr "" -#: src/preferences.c:2039 +#: src/preferences.c:2049 msgid "Ignore fatal errors" msgstr "" -#: src/preferences.c:2066 +#: src/preferences.c:2076 msgid "" "Fatal error handling\n" "\n" @@ -1871,15 +1848,15 @@ msgid "" "However some drives produce unfounded fatal messages. For such drives ignoring fatal errors may be needed to do uninterrupted reading of damaged media." msgstr "" -#: src/preferences.c:2076 +#: src/preferences.c:2086 msgid "Media ejection" msgstr "" -#: src/preferences.c:2079 src/preferences.c:2080 +#: src/preferences.c:2089 src/preferences.c:2090 msgid "Eject medium after successful read" msgstr "" -#: src/preferences.c:2107 +#: src/preferences.c:2117 msgid "" "Medium ejection\n" "\n" @@ -1888,23 +1865,23 @@ msgid "" "Note that the desktop environment may prevent other applications from ejecting media. In that case eject the medium through the desktop user interface." msgstr "" -#: src/preferences.c:2117 +#: src/preferences.c:2127 msgid "Read attempts" msgstr "" -#: src/preferences.c:2121 +#: src/preferences.c:2131 msgid "Sector read errors" msgstr "" -#: src/preferences.c:2130 +#: src/preferences.c:2140 msgid "Raw reading" msgstr "" -#: src/preferences.c:2130 +#: src/preferences.c:2141 msgid "Read and analyze raw sectors" msgstr "" -#: src/preferences.c:2152 +#: src/preferences.c:2163 msgid "" "Raw reading (affects CD media only)\n" "\n" @@ -1920,17 +1897,17 @@ msgid "" "Raw sector caching also needs checking of the respective option." msgstr "" -#: src/preferences.c:2169 +#: src/preferences.c:2180 msgid "Minimum number of reading attempts" msgstr "" -#: src/preferences.c:2171 src/preferences.c:2172 src/preferences.c:2177 -#: src/preferences.c:2178 +#: src/preferences.c:2183 src/preferences.c:2184 src/preferences.c:2189 +#: src/preferences.c:2190 #, c-format msgid "Min. %d reading attempts per sector" msgstr "" -#: src/preferences.c:2199 +#: src/preferences.c:2211 msgid "" "Minimum number of reading attempts\n" "\n" @@ -1939,17 +1916,17 @@ msgid "" "Increasing the number of reading attempts may improve data recovery on marginal media, but will also increase processing time and mechanical wear on the drive." msgstr "" -#: src/preferences.c:2208 +#: src/preferences.c:2220 msgid "Maximum number of reading attempts" msgstr "" -#: src/preferences.c:2210 src/preferences.c:2211 src/preferences.c:2216 -#: src/preferences.c:2217 +#: src/preferences.c:2223 src/preferences.c:2224 src/preferences.c:2229 +#: src/preferences.c:2230 #, c-format msgid "Max. %d reading attempts per sector" msgstr "" -#: src/preferences.c:2238 +#: src/preferences.c:2251 msgid "" "Maximum number of reading attempts\n" "\n" @@ -1958,23 +1935,23 @@ msgid "" "The decision to do more attempts depends on the quality of data gathered so far, which in turn is influenced by the capabilities of your optical drive and the operating system. So depending on your configuration, you may or may not see dvdisaster using the maximum value." msgstr "" -#: src/preferences.c:2252 +#: src/preferences.c:2265 msgid "Treatment of unreadable areas" msgstr "" -#: src/preferences.c:2254 src/preferences.c:2256 src/preferences.c:2257 -#: src/preferences.c:2265 +#: src/preferences.c:2268 src/preferences.c:2270 src/preferences.c:2271 +#: src/preferences.c:2279 #, c-format msgid "Skip %d sectors after read error" msgstr "Hoppa över %d sektorer efter läsfel" -#: src/preferences.c:2255 src/preferences.c:2260 src/preferences.c:2261 -#: src/preferences.c:2266 +#: src/preferences.c:2269 src/preferences.c:2274 src/preferences.c:2275 +#: src/preferences.c:2280 #, c-format msgid "Stop reading when unreadable intervals < %d" msgstr "" -#: src/preferences.c:2292 +#: src/preferences.c:2306 msgid "" "Treatment of unreadable areas\n" "\n" @@ -1983,34 +1960,34 @@ msgid "" "Effects on the linear reading strategy:" msgstr "" -#: src/preferences.c:2299 +#: src/preferences.c:2313 msgid "Skipping a large number of sectors (e.g. 1024) gives a quick overview of damaged areas, but will usually not collect enough data for repairing the image." msgstr "" -#: src/preferences.c:2303 +#: src/preferences.c:2317 msgid "Smaller values like 16, 32 or 64 are a good trade-off: The processing time will beconsiderably shortened, but still enough data for repairing the image is collected.\n" msgstr "" -#: src/preferences.c:2307 +#: src/preferences.c:2321 msgid "" "The adaptive reading strategy uses this setting only if no error correction data is available. In that case the reading process will stop when no unread areas larger than the selected size remain. Values smaller than 128 are not recommended as they cause the drive to carry out lots of laser head repositioning during the final phase of the reading process. If adaptive reading with a setting of 128 is not sufficient, try reading the remaining sectors with an additional linear reading pass.\n" "\n" "On DVD and BD media read errors do usually extend over at least 16 sectors for technical reasons. Therefore selecting a value less than 16 is not recommended for DVD and BD." msgstr "" -#: src/preferences.c:2320 src/preferences.c:2323 +#: src/preferences.c:2334 src/preferences.c:2337 msgid "Media read attempts" msgstr "" -#: src/preferences.c:2324 +#: src/preferences.c:2338 msgid "Read the whole medium " msgstr "" -#: src/preferences.c:2340 +#: src/preferences.c:2354 msgid " times" msgstr "" -#: src/preferences.c:2355 +#: src/preferences.c:2369 msgid "" "Media read attempts for the linear reading strategy\n" "\n" @@ -2019,15 +1996,15 @@ msgid "" "Only the missing sectors will be tried in the additional reading passes." msgstr "" -#: src/preferences.c:2372 +#: src/preferences.c:2386 msgid "Keep uncorrectable raw sectors in the following directory:" msgstr "" -#: src/preferences.c:2380 src/preferences.c:3196 +#: src/preferences.c:2394 src/preferences.c:3215 msgid "Select" msgstr "" -#: src/preferences.c:2421 +#: src/preferences.c:2435 msgid "" "Raw sector caching\n" "\n" @@ -2039,305 +2016,305 @@ msgid "" "dvdisaster will not remove any files from the given directory; you need to clean it up manually after a successful medium recovery." msgstr "" -#: src/preferences.c:2439 +#: src/preferences.c:2453 msgid "Raw sector file prefix" msgstr "" -#: src/preferences.c:2440 +#: src/preferences.c:2454 msgid "Raw sector file prefix: " msgstr "" -#: src/preferences.c:2463 +#: src/preferences.c:2477 msgid "" "Raw sector file prefix\n" "\n" "Use a different prefix for each disc you are trying to recover, e.g. \"disc1-\" and so on." msgstr "" -#: src/preferences.c:2471 +#: src/preferences.c:2485 msgid "Error correction" msgstr "Felkorrigering" -#: src/preferences.c:2473 +#: src/preferences.c:2487 msgid "Error correction method" msgstr "" -#: src/preferences.c:2474 +#: src/preferences.c:2488 msgid "Storage method:" msgstr "" -#: src/preferences.c:2514 +#: src/preferences.c:2528 msgid "" "Error correction method\n" "\n" "dvdisaster creates error correction data which is used to recover unreadable sectors if the disc becomes damaged later on. There are different codecs and ways available for storing the error correction information:\n" msgstr "" -#: src/preferences.c:2520 +#: src/preferences.c:2534 msgid "" "The RS01 codec\n" "RS01 is the recommended codec for storing error correction data in separate files.\n" msgstr "" -#: src/preferences.c:2523 +#: src/preferences.c:2537 msgid "" "The RS02 codec\n" "RS02 is the currently recommended codec for augmenting images with error correction data.\n" msgstr "" -#: src/preferences.c:2527 +#: src/preferences.c:2541 msgid "" "The RS03 codec (Warning: experimental)\n" "RS03 can either store error correction data in a separate file or augment the image with it. It provides multithreading to scale with multicore processors and contains some subtle improvements over RS01 and RS02. However it should not be used for productive work unless a stable version is released with dvdisaster V0.80." msgstr "" -#: src/preferences.c:2565 +#: src/preferences.c:2578 msgid "Files" msgstr "" -#: src/preferences.c:2569 +#: src/preferences.c:2582 msgid "Local files (on hard disk)" msgstr "Lokala filer (på hårddisk)" -#: src/preferences.c:2576 +#: src/preferences.c:2589 msgid "Automatic file suffixes" msgstr "" -#: src/preferences.c:2576 +#: src/preferences.c:2590 msgid "Automatically add .iso and .ecc file suffixes" msgstr "Lägg automatiskt till filändelserna .iso och .ecc" -#: src/preferences.c:2601 +#: src/preferences.c:2615 msgid "" "Automatically add file suffixes\n" "\n" "When this switch is set, files will be automatically appended with \".iso\" or \".ecc\" suffixes if no other file name extension is already present." msgstr "" -#: src/preferences.c:2607 +#: src/preferences.c:2621 msgid "Automatic file creation and deletion" msgstr "Automatiskt filskapande och borttagning" -#: src/preferences.c:2616 +#: src/preferences.c:2630 msgid "Automatic .ecc file creation" msgstr "" -#: src/preferences.c:2616 +#: src/preferences.c:2631 msgid "Create error correction file after reading image" msgstr "Skapa felkorrigeringsfil efter läsning av avbild" -#: src/preferences.c:2640 +#: src/preferences.c:2655 msgid "" "Automatic error correction file creation\n" "\n" "Automatically creates an error correction file after reading an image. Together with the \"Remove image\" option this will speed up error correction file generation for a series of different media." msgstr "" -#: src/preferences.c:2647 +#: src/preferences.c:2662 msgid "Automatic image file removal" msgstr "" -#: src/preferences.c:2647 +#: src/preferences.c:2663 msgid "Remove image after error correction file creation" msgstr "Ta bort avbild efter felkorrigeringsfil har skapats" -#: src/preferences.c:2671 +#: src/preferences.c:2687 msgid "" "Automatic image file removal\n" "\n" "If this switch is set the image file will be deleted following the successful generation of the respective error correction file." msgstr "" -#: src/preferences.c:2677 src/preferences.c:2686 +#: src/preferences.c:2693 src/preferences.c:2702 msgid "Confirm file overwriting" msgstr "" -#: src/preferences.c:2686 +#: src/preferences.c:2703 msgid "Ask before overwriting image and ecc files" msgstr "" -#: src/preferences.c:2710 +#: src/preferences.c:2727 msgid "" "Ask before overwriting image and ecc files\n" "\n" "dvdisaster will ask you for confirmation when it is going to overwrite an existing image or error correction file if this option is checked." msgstr "" -#: src/preferences.c:2717 +#: src/preferences.c:2734 msgid "Appearance" msgstr "" -#: src/preferences.c:2729 +#: src/preferences.c:2746 msgid "Sector coloring" msgstr "" -#: src/preferences.c:2740 src/rs01-verify.c:123 src/rs02-verify.c:118 -#: src/rs03-verify.c:127 +#: src/preferences.c:2757 src/rs01-verify.c:127 src/rs02-verify.c:120 +#: src/rs03-verify.c:130 msgid "Good sectors" msgstr "Bra sektorer" -#: src/preferences.c:2740 +#: src/preferences.c:2757 msgid "Good sector" msgstr "" -#: src/preferences.c:2765 +#: src/preferences.c:2782 msgid "" "Good sectors\n" "\n" "This color indicates good sectors." msgstr "" -#: src/preferences.c:2770 +#: src/preferences.c:2787 msgid "Checksum errors" msgstr "" -#: src/preferences.c:2770 +#: src/preferences.c:2787 msgid "Checksum error" msgstr "" -#: src/preferences.c:2795 +#: src/preferences.c:2812 msgid "" "Checksum errors\n" "\n" "This color is used for displaying sectors with wrong check sums." msgstr "" -#: src/preferences.c:2800 +#: src/preferences.c:2817 msgid "Unreadable sectors" msgstr "" -#: src/preferences.c:2800 +#: src/preferences.c:2817 msgid "Unreadable" msgstr "" -#: src/preferences.c:2825 +#: src/preferences.c:2842 msgid "" "Unreadable sectors\n" "\n" "This color is used for marking unreadable sectors." msgstr "" -#: src/preferences.c:2830 +#: src/preferences.c:2847 msgid "Present sectors" msgstr "" -#: src/preferences.c:2830 +#: src/preferences.c:2847 msgid "Present sector" msgstr "" -#: src/preferences.c:2855 +#: src/preferences.c:2872 msgid "" "Present sectors\n" "\n" "Sectors which are already present are marked with this color." msgstr "" -#: src/preferences.c:2860 +#: src/preferences.c:2877 msgid "Ignored sectors" msgstr "" -#: src/preferences.c:2860 +#: src/preferences.c:2877 msgid "Ignored sector" msgstr "" -#: src/preferences.c:2885 +#: src/preferences.c:2902 msgid "" "Ignored sectors\n" "\n" "Sectors marked with this color will not be processed in the current run." msgstr "" -#: src/preferences.c:2891 +#: src/preferences.c:2908 msgid "Highlit sectors" msgstr "" -#: src/preferences.c:2891 +#: src/preferences.c:2908 msgid "Highlit sector" msgstr "" -#: src/preferences.c:2916 +#: src/preferences.c:2933 msgid "" "Highlit sectors\n" "\n" "This color is used for temporarily highlighting sectors during adaptive reading." msgstr "" -#: src/preferences.c:2922 +#: src/preferences.c:2939 msgid "Text colors" msgstr "" -#: src/preferences.c:2932 +#: src/preferences.c:2949 msgid "Positive text" msgstr "" -#: src/preferences.c:2957 +#: src/preferences.c:2974 msgid "" "Positive text\n" "\n" "Good news are printed in this color." msgstr "" -#: src/preferences.c:2962 +#: src/preferences.c:2979 msgid "Negative text" msgstr "" -#: src/preferences.c:2987 +#: src/preferences.c:3004 msgid "" "Negative text\n" "\n" "Bad news are printed in this color." msgstr "" -#: src/preferences.c:2992 +#: src/preferences.c:3009 msgid "Curve colors" msgstr "" -#: src/preferences.c:3001 +#: src/preferences.c:3018 msgid "Curve color" msgstr "" -#: src/preferences.c:3026 +#: src/preferences.c:3043 msgid "" "Curve color and labels\n" "\n" "The reading speed curve, its left side and top labels are printed in this color." msgstr "" -#: src/preferences.c:3032 src/read-linear-window.c:445 +#: src/preferences.c:3049 src/read-linear-window.c:455 msgid "C2 errors" msgstr "" -#: src/preferences.c:3057 +#: src/preferences.c:3074 msgid "" "C2 error color\n" "\n" "The logarithmic bar graph showing the C2 errors is rendered in this color during the \"read\" and \"scan\" operations." msgstr "" -#: src/preferences.c:3064 +#: src/preferences.c:3081 msgid "Error correction load" msgstr "" -#: src/preferences.c:3089 +#: src/preferences.c:3106 msgid "" "Error correction load\n" "\n" "The bar graph showing the error correction load is rendered in this color during the \"Fix\" operation." msgstr "" -#: src/preferences.c:3101 +#: src/preferences.c:3118 msgid "Default color scheme" msgstr "" -#: src/preferences.c:3109 +#: src/preferences.c:3126 msgid "Dialog boxes" msgstr "" -#: src/preferences.c:3112 +#: src/preferences.c:3129 src/preferences.c:3130 msgid "Reverse OK / Cancel buttons" msgstr "" -#: src/preferences.c:3137 +#: src/preferences.c:3155 msgid "" "Reverse OK / Cancel buttons\n" "\n" @@ -2346,38 +2323,38 @@ msgid "" "Changes will become active after restarting dvdisaster." msgstr "" -#: src/preferences.c:3144 +#: src/preferences.c:3162 msgid "Misc" msgstr "" -#: src/preferences.c:3148 +#: src/preferences.c:3166 msgid "Logging" msgstr "" -#: src/preferences.c:3155 +#: src/preferences.c:3173 src/preferences.c:3174 msgid "Verbose logging" msgstr "" -#: src/preferences.c:3180 +#: src/preferences.c:3199 msgid "" "Verbose logging\n" "\n" "More information will be supplied in the Log window and/or log file. Useful for debugging, but may lead to slower performance." msgstr "" -#: src/preferences.c:3187 +#: src/preferences.c:3206 msgid "Logfile:" msgstr "" -#: src/preferences.c:3188 +#: src/preferences.c:3207 msgid "Copy log to file:" msgstr "" -#: src/preferences.c:3197 +#: src/preferences.c:3216 msgid "Delete" msgstr "" -#: src/preferences.c:3245 +#: src/preferences.c:3264 msgid "" "Logfile\n" "\n" @@ -2385,287 +2362,287 @@ msgid "" msgstr "" # Hitta bättre ord -#: src/print-sense.c:613 +#: src/print-sense.c:615 #, c-format msgid "Sense error (0x%02x); " msgstr "Avkänningsfel (0x%02x); " -#: src/print-sense.c:615 +#: src/print-sense.c:617 #, c-format msgid "Sense error: %s%c " msgstr "" -#: src/print-sense.c:629 +#: src/print-sense.c:631 #, c-format msgid "unknown asc/ascq code (0x%02x, 0x%02x)." msgstr "okänd asc/ascq-kod (0x%02x, 0x%02x)." -#: src/raw-editor.c:297 +#: src/raw-editor.c:299 msgid "windowtitle|Raw sector dump selection" msgstr "" -#: src/raw-editor.c:328 +#: src/raw-editor.c:330 #, c-format msgid "%s loaded, LBA %, %d samples." msgstr "" -#: src/raw-editor.c:352 +#: src/raw-editor.c:354 msgid "EDC checksum does not match - sector still defective!" msgstr "" -#: src/raw-editor.c:357 +#: src/raw-editor.c:359 msgid "LBA does not match MSF code in sector!" msgstr "" -#: src/raw-editor.c:384 +#: src/raw-editor.c:386 msgid "Raw sector does not belong to the selected image!" msgstr "" -#: src/raw-editor.c:390 src/read-adaptive.c:1348 src/read-adaptive.c:1428 -#: src/read-adaptive.c:1770 src/read-adaptive.c:1988 src/read-linear.c:426 -#: src/read-linear.c:708 src/read-linear.c:1048 src/rs01-fix.c:501 -#: src/rs01-fix.c:761 src/rs02-fix.c:786 src/rs03-fix.c:865 +#: src/raw-editor.c:392 src/read-adaptive.c:1279 src/read-adaptive.c:1351 +#: src/read-adaptive.c:1674 src/read-adaptive.c:1873 src/read-linear.c:394 +#: src/read-linear.c:667 src/read-linear.c:1018 src/rs01-fix.c:469 +#: src/rs01-fix.c:729 src/rs02-fix.c:750 src/rs03-fix.c:824 #, c-format msgid "Failed seeking to sector % in image [%s]: %s" msgstr "Misslyckades med att söka fram till sektor % i avbild [%s]: %s" -#: src/raw-editor.c:397 src/read-adaptive.c:1362 src/read-adaptive.c:1434 -#: src/read-adaptive.c:1802 src/read-adaptive.c:1817 src/read-adaptive.c:1996 -#: src/read-linear.c:435 src/read-linear.c:715 src/rs01-fix.c:195 -#: src/rs01-fix.c:508 +#: src/raw-editor.c:399 src/read-adaptive.c:1293 src/read-adaptive.c:1357 +#: src/read-adaptive.c:1706 src/read-adaptive.c:1719 src/read-adaptive.c:1881 +#: src/read-linear.c:403 src/read-linear.c:674 src/rs01-fix.c:185 +#: src/rs01-fix.c:476 #, c-format msgid "Failed writing to sector % in image [%s]: %s" msgstr "Misslyckades med att skriva till sektor % i avbild [%s]: %s" -#: src/raw-editor.c:418 +#: src/raw-editor.c:420 msgid "windowtitle|Load buffer from file" msgstr "" -#: src/raw-editor.c:436 +#: src/raw-editor.c:438 msgid "windowtitle|Save buffer to file" msgstr "" -#: src/raw-editor.c:474 +#: src/raw-editor.c:476 #, c-format msgid "Buffer loaded from %s." msgstr "" -#: src/raw-editor.c:489 +#: src/raw-editor.c:491 #, c-format msgid "Buffer saved to %s." msgstr "" -#: src/raw-editor.c:576 +#: src/raw-editor.c:578 msgid "*** Well done: Sector has been recovered! ***" msgstr "" -#: src/raw-editor.c:579 +#: src/raw-editor.c:582 #, c-format msgid "Current buffer state: P %d/%d, Q %d/%d" msgstr "" -#: src/raw-editor.c:690 +#: src/raw-editor.c:694 #, c-format msgid "%c Vector %d has >2 erasures (nothing done)." msgstr "" -#: src/raw-editor.c:719 +#: src/raw-editor.c:723 #, c-format msgid "%c Vector %d already good." msgstr "" -#: src/raw-editor.c:727 +#: src/raw-editor.c:731 #, c-format msgid "%c Vector %d corrected (%d erasures)." msgstr "" -#: src/raw-editor.c:730 +#: src/raw-editor.c:734 #, c-format msgid "%c Vector %d not correctable (%d erasures)." msgstr "" -#: src/raw-editor.c:745 +#: src/raw-editor.c:749 #, c-format msgid "no replacements for P vector %d available" msgstr "" -#: src/raw-editor.c:761 +#: src/raw-editor.c:765 #, c-format msgid "Exchanged P vector %d with version %d (of %d)." msgstr "" -#: src/raw-editor.c:783 +#: src/raw-editor.c:787 #, c-format msgid "no replacements for Q vector %d available" msgstr "" -#: src/raw-editor.c:797 +#: src/raw-editor.c:801 #, c-format msgid "Exchanged Q vector %d with version %d (of %d)." msgstr "" -#: src/raw-editor.c:858 src/raw-editor.c:871 +#: src/raw-editor.c:862 src/raw-editor.c:875 #, c-format msgid "Showing sample %d (of %d)." msgstr "" -#: src/raw-editor.c:917 +#: src/raw-editor.c:921 msgid "Sector with lowest P failures selected." msgstr "" -#: src/raw-editor.c:927 +#: src/raw-editor.c:931 msgid "Sector with lowest Q failures selected." msgstr "" -#: src/raw-editor.c:939 +#: src/raw-editor.c:942 #, c-format msgid "Smart L-EC: %s" msgstr "" -#: src/raw-editor.c:960 +#: src/raw-editor.c:963 msgid "Raw sector editor" msgstr "" -#: src/raw-editor.c:982 +#: src/raw-editor.c:985 msgid "Please load a raw sector file!" msgstr "" -#: src/raw-editor.c:994 +#: src/raw-editor.c:997 msgid "Browsing" msgstr "" -#: src/raw-editor.c:1006 +#: src/raw-editor.c:1009 msgid "button|Load" msgstr "" -#: src/raw-editor.c:1011 +#: src/raw-editor.c:1014 msgid "button|Save" msgstr "" -#: src/raw-editor.c:1017 +#: src/raw-editor.c:1020 msgid "button|Prev. sector" msgstr "" -#: src/raw-editor.c:1022 +#: src/raw-editor.c:1025 msgid "button|Next sector" msgstr "" -#: src/raw-editor.c:1027 +#: src/raw-editor.c:1030 msgid "button|Sort by P" msgstr "" -#: src/raw-editor.c:1032 +#: src/raw-editor.c:1035 msgid "button|Sort by Q" msgstr "" -#: src/raw-editor.c:1039 +#: src/raw-editor.c:1042 msgid "Editing" msgstr "" -#: src/raw-editor.c:1051 +#: src/raw-editor.c:1054 msgid "button|Load Buf" msgstr "" -#: src/raw-editor.c:1056 +#: src/raw-editor.c:1059 msgid "button|Save Buf" msgstr "" -#: src/raw-editor.c:1061 +#: src/raw-editor.c:1064 msgid "button|Tag diffs" msgstr "" -#: src/raw-editor.c:1066 +#: src/raw-editor.c:1069 msgid "button|Untag all" msgstr "" -#: src/raw-editor.c:1071 +#: src/raw-editor.c:1074 msgid "button|Redo" msgstr "" -#: src/raw-editor.c:1076 +#: src/raw-editor.c:1079 msgid "button|Undo" msgstr "" -#: src/raw-editor.c:1083 +#: src/raw-editor.c:1086 msgid "Correction" msgstr "" -#: src/raw-editor.c:1086 +#: src/raw-editor.c:1089 msgid "button|P vector" msgstr "" -#: src/raw-editor.c:1091 +#: src/raw-editor.c:1094 msgid "button|Q vector" msgstr "" -#: src/raw-editor.c:1096 +#: src/raw-editor.c:1099 msgid "button|Find other P" msgstr "" -#: src/raw-editor.c:1101 +#: src/raw-editor.c:1104 msgid "button|Find other Q" msgstr "" -#: src/raw-editor.c:1106 +#: src/raw-editor.c:1109 msgid "button|Tag erasures" msgstr "" -#: src/raw-editor.c:1113 +#: src/raw-editor.c:1116 msgid "Heuristics" msgstr "" -#: src/raw-editor.c:1116 +#: src/raw-editor.c:1119 msgid "button|Smart L-EC" msgstr "" -#: src/raw-sector-cache.c:35 src/raw-sector-cache.c:209 -#: src/raw-sector-cache.c:354 src/scsi-freebsd.c:131 src/scsi-freebsd.c:141 -#: src/scsi-linux.c:115 src/scsi-linux.c:124 src/scsi-netbsd.c:126 -#: src/scsi-netbsd.c:136 src/scsi-win32.c:256 +#: src/raw-sector-cache.c:37 src/raw-sector-cache.c:204 +#: src/raw-sector-cache.c:338 src/scsi-freebsd.c:133 src/scsi-freebsd.c:143 +#: src/scsi-linux.c:117 src/scsi-linux.c:126 src/scsi-netbsd.c:128 +#: src/scsi-netbsd.c:138 src/scsi-win32.c:256 #, c-format msgid "Could not open %s: %s" msgstr "Kunde inte öppna %s: %s" -#: src/raw-sector-cache.c:60 src/raw-sector-cache.c:124 -#: src/raw-sector-cache.c:130 src/raw-sector-cache.c:134 -#: src/raw-sector-cache.c:162 src/raw-sector-cache.c:267 +#: src/raw-sector-cache.c:62 src/raw-sector-cache.c:126 +#: src/raw-sector-cache.c:132 src/raw-sector-cache.c:136 +#: src/raw-sector-cache.c:164 src/raw-sector-cache.c:262 #, c-format msgid "Failed writing to defective sector file: %s" msgstr "" -#: src/raw-sector-cache.c:80 src/raw-sector-cache.c:105 -#: src/raw-sector-cache.c:223 src/raw-sector-cache.c:324 -#: src/raw-sector-cache.c:370 +#: src/raw-sector-cache.c:82 src/raw-sector-cache.c:107 +#: src/raw-sector-cache.c:218 src/raw-sector-cache.c:314 +#: src/raw-sector-cache.c:354 #, c-format msgid "Failed reading from defective sector file: %s" msgstr "" -#: src/raw-sector-cache.c:88 +#: src/raw-sector-cache.c:90 msgid "Defective sector file is truncated" msgstr "" -#: src/raw-sector-cache.c:112 src/raw-sector-cache.c:138 -#: src/raw-sector-cache.c:150 src/raw-sector-cache.c:216 -#: src/raw-sector-cache.c:231 +#: src/raw-sector-cache.c:114 src/raw-sector-cache.c:140 +#: src/raw-sector-cache.c:152 src/raw-sector-cache.c:211 +#: src/raw-sector-cache.c:226 #, c-format msgid "Failed seeking in defective sector file: %s" msgstr "" -#: src/raw-sector-cache.c:169 +#: src/raw-sector-cache.c:171 msgid "Fingerprints of medium and defective sector cache do not match!" msgstr "" -#: src/raw-sector-cache.c:203 +#: src/raw-sector-cache.c:198 #, c-format msgid " [Creating new cache file %s]\n" msgstr "" -#: src/raw-sector-cache.c:280 +#: src/raw-sector-cache.c:270 #, c-format msgid " [Appended %d/%d sectors to cache file %s; LBA=%, ssize=%d, %d sectors]\n" msgstr "" -#: src/read-adaptive.c:55 src/rs01-create.c:1080 +#: src/read-adaptive.c:57 src/rs01-create.c:1018 #, c-format msgid "" "Error closing error correction file:\n" @@ -2674,11 +2651,11 @@ msgstr "" "Fel vid stängning av felkorrigeringsfil:\n" "%s" -#: src/read-adaptive.c:78 src/read-adaptive.c:115 +#: src/read-adaptive.c:80 src/read-adaptive.c:117 msgid "Invalid or damaged ecc file" msgstr "Ogiltig eller skadad ecc-fil" -#: src/read-adaptive.c:102 +#: src/read-adaptive.c:104 #, c-format msgid "" "Can't read ecc header:\n" @@ -2687,7 +2664,7 @@ msgstr "" "Kan inte läsa ecc-huvud:\n" "%s" -#: src/read-adaptive.c:119 +#: src/read-adaptive.c:121 src/read-linear.c:867 #, c-format msgid "" "* Warning: This ecc file requires dvdisaster-%d.%d!\n" @@ -2697,74 +2674,74 @@ msgid "" "\n" msgstr "" -#: src/read-adaptive.c:152 src/rs01-common.c:80 src/rs01-common.c:238 -#: src/rs01-create.c:326 src/rs01-verify.c:891 +#: src/read-adaptive.c:154 src/rs01-common.c:82 src/rs01-common.c:237 +#: src/rs01-create.c:299 src/rs01-verify.c:794 #, c-format msgid "Failed skipping the ecc header: %s" msgstr "Misslyckades med att hoppa över ecc-huvuet: %s" -#: src/read-adaptive.c:161 src/read-adaptive.c:171 src/rs01-common.c:92 -#: src/rs01-common.c:102 src/rs01-common.c:350 +#: src/read-adaptive.c:163 src/read-adaptive.c:173 src/rs01-common.c:94 +#: src/rs01-common.c:104 src/rs01-common.c:347 #, c-format msgid "Error reading CRC information: %s" msgstr "Fel vid läsning av CRC-information: %s" -#: src/read-adaptive.c:374 src/read-adaptive.c:1747 +#: src/read-adaptive.c:375 src/read-adaptive.c:1650 msgid "Aborted by unrecoverable error." msgstr "Avbruten av ej återhämtningsbart fel." -#: src/read-adaptive.c:510 +#: src/read-adaptive.c:508 #, c-format msgid "Repairable: %2d.%1d%% (correctable: %; now reading [%..%], size %)" msgstr "Reparerbar: %2d.%1d%% (korrigerbar: %; läser nu [%..%], storlek %)" -#: src/read-adaptive.c:515 +#: src/read-adaptive.c:513 #, c-format msgid "Repairable: %2d.%1d%% (missing: %; now reading [%..%], size %)" msgstr "Reparerbar: %2d.%1d%% (saknas: %; läser nu [%..%], storlek %)" -#: src/read-adaptive.c:655 src/read-adaptive.c:671 src/read-adaptive.c:701 +#: src/read-adaptive.c:651 src/read-adaptive.c:662 src/read-adaptive.c:692 #, c-format msgid "%s-type ECC found\n" msgstr "" -#: src/read-adaptive.c:674 +#: src/read-adaptive.c:665 src/read-linear.c:874 #, c-format msgid "" "* Warning: This image requires dvdisaster-%d.%d!\n" "* Proceeding could trigger incorrect behaviour.\n" -"* Please visit http://www.dvdisaster.org for an upgrade.\n" +"* Please upgrade dvdisaster.\n" "\n" msgstr "" -#: src/read-adaptive.c:703 +#: src/read-adaptive.c:694 msgid "" "Adaptive reading has not been adapted yet to handle RS03-augmented images properly.\n" "To quote the original author: \"behaviour with RS03 is unpredictable and undefined\".\n" "You should cancel and use the linear reading strategy instead. Continue at your own risk.\n" msgstr "" -#: src/read-adaptive.c:710 src/read-adaptive.c:773 src/read-adaptive.c:792 -#: src/read-adaptive.c:865 src/read-adaptive.c:960 src/read-adaptive.c:1030 -#: src/read-adaptive.c:1371 src/read-adaptive.c:1671 +#: src/read-adaptive.c:699 src/read-adaptive.c:758 src/read-adaptive.c:773 +#: src/read-adaptive.c:837 src/read-adaptive.c:926 src/read-adaptive.c:987 +#: src/read-adaptive.c:1300 src/read-adaptive.c:1576 msgid "Aborted by user request!" msgstr "Avbruten av användaren!" -#: src/read-adaptive.c:721 +#: src/read-adaptive.c:709 #, c-format msgid "Stopping when unreadable intervals < %d." msgstr "Stoppar när oläsbara intervall < %d." -#: src/read-adaptive.c:723 src/read-adaptive.c:729 +#: src/read-adaptive.c:711 src/read-adaptive.c:717 #, c-format msgid "Adaptive reading: %s\n" msgstr "Adaptiv läsning: %s\n" -#: src/read-adaptive.c:728 +#: src/read-adaptive.c:716 msgid "Trying to collect enough data for error correction." msgstr "Försöker samla in tillräcklig data för felkorrigering." -#: src/read-adaptive.c:764 +#: src/read-adaptive.c:751 #, c-format msgid "" "Medium contains % sectors more as recorded in the .ecc file\n" @@ -2775,7 +2752,7 @@ msgstr "" "(Medium: % sektorer; förväntat från .ecc-fil: % sektorer).\n" "Endast de första % mediumsektorerna kommer att behandlas.\n" -#: src/read-adaptive.c:785 +#: src/read-adaptive.c:768 #, c-format msgid "" "Medium contains % sectors less as recorded in the .ecc file\n" @@ -2784,33 +2761,33 @@ msgstr "" "Medium innehåller % sektorer mindre än lagrat i .ecc-filen\n" "(Medium: % sektorer; förväntat från .ecc-fil: % sektorer).\n" -#: src/read-adaptive.c:832 +#: src/read-adaptive.c:807 #, c-format msgid "Limiting sector range to [%,%].\n" msgstr "Begränsar sektorintervall till [%,%].\n" -#: src/read-adaptive.c:858 +#: src/read-adaptive.c:832 #, c-format msgid "" "Sector %d is missing. Can not compare medium and ecc fingerprints.\n" "Double check that the medium and the ecc file belong together.\n" msgstr "" -#: src/read-adaptive.c:874 +#: src/read-adaptive.c:845 msgid "" "Fingerprints of medium and ecc file do not match.\n" "Medium and ecc file do not belong together.\n" msgstr "" -#: src/read-adaptive.c:917 src/read-linear.c:360 +#: src/read-adaptive.c:886 src/read-linear.c:337 msgid "Image file does not match the optical disc." msgstr "Avbildsfil stämmer inte med CD/DVD/BD." -#: src/read-adaptive.c:924 +#: src/read-adaptive.c:893 msgid "Reading aborted. Please select a different image file." msgstr "Läsning avbruten. Välj en annan avbildsfil." -#: src/read-adaptive.c:952 +#: src/read-adaptive.c:920 #, c-format msgid "" "Image file is % sectors longer than inserted medium\n" @@ -2819,74 +2796,74 @@ msgstr "" "Avbildsfil är % sektorer längre än inmatat medium\n" "(Avbildsfil: % sektorer; medium: % sektorer).\n" -#: src/read-adaptive.c:980 src/read-adaptive.c:986 +#: src/read-adaptive.c:944 src/read-adaptive.c:948 msgid "Loading CRC data." msgstr "" -#: src/read-adaptive.c:1020 +#: src/read-adaptive.c:979 msgid "Analysing existing image file" msgstr "Analyserar existerande avbildsfil" -#: src/read-adaptive.c:1040 src/rs01-common.c:280 src/rs02-verify.c:752 +#: src/read-adaptive.c:996 src/rs01-common.c:277 src/rs02-verify.c:730 #, c-format msgid "premature end in image (only %d bytes): %s\n" msgstr "för tidigt slut på avbild (endast %d byte): %s\n" -#: src/read-adaptive.c:1127 +#: src/read-adaptive.c:1074 #, c-format msgid "Analysing existing image file: %2d%%" msgstr "Analyserar existerande avbildsfil: %2d%%" -#: src/read-adaptive.c:1156 +#: src/read-adaptive.c:1101 msgid "Determining correctable sectors" msgstr "Fastställer korrigerbara sektorer" -#: src/read-adaptive.c:1236 +#: src/read-adaptive.c:1176 #, c-format msgid "Analysing existing image file: % readable, % correctable, % still missing.\n" msgstr "Analyserar existerande avbildsfil: % läsbara, % korrigerbara, % saknas fortfarande.\n" -#: src/read-adaptive.c:1238 +#: src/read-adaptive.c:1178 #, c-format msgid "Analysing existing image file: % readable, % still missing.\n" msgstr "Analyserar existerande avbildsfil: % läsbara, % saknas fortfarande.\n" -#: src/read-adaptive.c:1295 src/read-linear.c:789 +#: src/read-adaptive.c:1228 src/read-linear.c:748 msgid "Ignore once" msgstr "Ignorera en gång" -#: src/read-adaptive.c:1296 src/read-linear.c:790 +#: src/read-adaptive.c:1229 src/read-linear.c:749 msgid "Ignore always" msgstr "Ignorera alltid" -#: src/read-adaptive.c:1297 src/read-linear.c:791 +#: src/read-adaptive.c:1230 src/read-linear.c:750 msgid "Abort" msgstr "Avbryt" -#: src/read-adaptive.c:1333 +#: src/read-adaptive.c:1266 #, c-format msgid "Filling image area [%..%]" msgstr "Fyller avbildsområde [%..%]" -#: src/read-adaptive.c:1465 src/read-linear.c:223 +#: src/read-adaptive.c:1388 src/read-linear.c:218 msgid "Reading aborted" msgstr "Läsning avbruten" -#: src/read-adaptive.c:1469 src/read-linear.c:228 +#: src/read-adaptive.c:1391 src/read-linear.c:221 msgid "Preparing for reading the medium image." msgstr "Förbereder för läsning av mediumavbild." -#: src/read-adaptive.c:1470 src/read-linear.c:219 src/read-linear.c:229 +#: src/read-adaptive.c:1392 src/read-linear.c:215 src/read-linear.c:222 msgid "Medium: not yet determined" msgstr "Medium: ännu inte fastställt" -#: src/read-adaptive.c:1485 +#: src/read-adaptive.c:1406 msgid "" "Adaptive reading is unavailable in this version.\n" "It will be re-introduced in one of the next versions." msgstr "" -#: src/read-adaptive.c:1494 +#: src/read-adaptive.c:1415 msgid "" "* Warning: Using adaptive reading without error correction data\n" "* has little advantage over linear reading, but may\n" @@ -2895,20 +2872,20 @@ msgid "" "* Please consider using linear reading instead.\n" msgstr "" -#: src/read-adaptive.c:1554 src/read-linear.c:293 +#: src/read-adaptive.c:1473 src/read-linear.c:277 #, c-format msgid "Creating new %s image.\n" msgstr "Skapar ny avbild %s.\n" -#: src/read-adaptive.c:1559 src/read-linear.c:286 +#: src/read-adaptive.c:1476 src/read-linear.c:270 msgid "Reading new medium image." msgstr "Läser ny mediumavbild." -#: src/read-adaptive.c:1581 src/read-linear.c:319 +#: src/read-adaptive.c:1495 src/read-linear.c:298 msgid "Completing existing medium image." msgstr "Färdigställer existerande mediumavbild." -#: src/read-adaptive.c:1615 src/read-adaptive.c:1946 +#: src/read-adaptive.c:1528 src/read-adaptive.c:1842 msgid "" "\n" "Sufficient data for reconstructing the image is available.\n" @@ -2916,7 +2893,7 @@ msgstr "" "\n" "Tillräcklig data för att återskapa avbilden finns tillgänglig.\n" -#: src/read-adaptive.c:1731 src/read-linear.c:1115 +#: src/read-adaptive.c:1636 src/read-linear.c:1090 #, c-format msgid "" "Sector %: %s\n" @@ -2924,7 +2901,7 @@ msgid "" "Use the --ignore-fatal-sense option to override." msgstr "" -#: src/read-adaptive.c:1737 src/read-linear.c:1121 +#: src/read-adaptive.c:1641 src/read-linear.c:1096 #, c-format msgid "" "Sector %: %s\n" @@ -2937,28 +2914,28 @@ msgstr "" "Det kanske inte är möjligt att återhämta från detta fel.\n" "Ska detta fel ignoreras och läsningen fortsätta?" -#: src/read-adaptive.c:1793 src/rs01-fix.c:451 src/rs02-fix.c:464 -#: src/rs03-fix.c:522 +#: src/read-adaptive.c:1697 src/rs01-fix.c:422 src/rs02-fix.c:431 +#: src/rs03-fix.c:484 #, c-format msgid "CRC error in sector %\n" msgstr "CRC-fel i sektor %\n" -#: src/read-adaptive.c:1972 src/scsi-layer.c:1776 +#: src/read-adaptive.c:1862 src/scsi-layer.c:1781 #, c-format msgid "Sectors %-%: %s\n" msgstr "Sektorer %-%: %s\n" -#: src/read-adaptive.c:1980 src/read-linear.c:1318 src/scsi-layer.c:1775 +#: src/read-adaptive.c:1865 src/read-linear.c:1284 src/scsi-layer.c:1780 #, c-format msgid "Sector %: %s\n" msgstr "Sektor %: %s\n" -#: src/read-adaptive.c:2111 +#: src/read-adaptive.c:1992 #, c-format msgid "Only %2d.%1d%% of the image are readable or correctable" msgstr "Endast %2d.%1d%% av avbilden är läsbar eller korrigerbar" -#: src/read-adaptive.c:2114 +#: src/read-adaptive.c:1995 #, c-format msgid "" "\n" @@ -2969,7 +2946,7 @@ msgstr "" "%s\n" "(% läsbara, % korrigerbara, % saknas fortfarande).\n" -#: src/read-adaptive.c:2130 +#: src/read-adaptive.c:2008 msgid "" "\n" "Good! All sectors have been read.\n" @@ -2977,12 +2954,12 @@ msgstr "" "\n" "Bra! Alla sektorer har lästs.\n" -#: src/read-adaptive.c:2141 +#: src/read-adaptive.c:2016 #, c-format msgid "No unreadable intervals with >= %d sectors left." msgstr "Inga oläsbara intervall med >= %d sektorer kvar." -#: src/read-adaptive.c:2144 +#: src/read-adaptive.c:2019 #, c-format msgid "" "\n" @@ -2990,42 +2967,42 @@ msgid "" "%2d.%1d%% of the image have been read (% sectors).\n" msgstr "" -#: src/read-adaptive-window.c:81 +#: src/read-adaptive-window.c:84 msgid "Adaptive reading:" msgstr "Adaptiv läsning:" -#: src/read-adaptive-window.c:109 +#: src/read-adaptive-window.c:112 msgid "Sectors processed" msgstr "Sektorer behandlade" -#: src/read-adaptive-window.c:112 src/scsi-layer.c:1757 +#: src/read-adaptive-window.c:115 src/scsi-layer.c:1762 msgid "readable" msgstr "läsbar" -#: src/read-adaptive-window.c:116 +#: src/read-adaptive-window.c:119 msgid "correctable" msgstr "korrigerbar" -#: src/read-adaptive-window.c:120 +#: src/read-adaptive-window.c:123 msgid "missing" msgstr "saknas" -#: src/read-adaptive-window.c:130 +#: src/read-adaptive-window.c:133 #, c-format msgid "Readable: %d.%d%% / %d.%d%% required" msgstr "" -#: src/read-adaptive-window.c:137 +#: src/read-adaptive-window.c:140 #, c-format msgid "Total recoverable: %d.%d%%" msgstr "Totalt återhämtningsbara: %d.%d%%" -#: src/read-linear.c:126 +#: src/read-linear.c:122 #, c-format msgid "Aborted by unrecoverable error. % sectors read, % sectors unreadable/skipped so far." msgstr "Avbruten av ej återhämtningsbart fel. % sektorer lästa, % sektorer oläsbara/överhoppade än så länge." -#: src/read-linear.c:182 +#: src/read-linear.c:176 msgid "" "Automatic error correction file creation\n" "is only possible after a full reading pass.\n" @@ -3033,77 +3010,77 @@ msgstr "" "Skapande av automatisk felkorrigeringsfil\n" "är endast möjlig efter en fullständig läsning.\n" -#: src/read-linear.c:213 +#: src/read-linear.c:211 msgid "Scanning aborted" msgstr "Avsökning avbruten" -#: src/read-linear.c:218 src/read-linear.c:252 +#: src/read-linear.c:214 src/read-linear.c:244 msgid "Scanning medium for read errors." msgstr "Söker av medium efter läsfel." -#: src/read-linear.c:260 src/read-linear.c:299 +#: src/read-linear.c:250 src/read-linear.c:281 msgid "Reading CRC information" msgstr "" -#: src/read-linear.c:368 +#: src/read-linear.c:344 #, c-format msgid "Reading aborted. Please select a different image file." msgstr "Läsning avbruten. Välj en annan avbildsfil." -#: src/read-linear.c:388 +#: src/read-linear.c:363 #, c-format msgid "Completing image %s. Continuing with sector %.\n" msgstr "Färdigställer avbild %s. Fortsätter med sektor %.\n" -#: src/read-linear.c:396 +#: src/read-linear.c:369 #, c-format msgid "Completing image %s. Only missing sectors will be read.\n" msgstr "Färdigställer avbild %s. Endast saknade sektorer kommer att läsas.\n" -#: src/read-linear.c:461 src/read-linear.c:470 +#: src/read-linear.c:442 src/read-linear.c:447 msgid "Reading CRC information from ecc data" msgstr "" -#: src/read-linear.c:501 +#: src/read-linear.c:473 msgid "done.\n" msgstr "klar.\n" -#: src/read-linear.c:522 src/scsi-layer.c:2103 +#: src/read-linear.c:493 src/scsi-layer.c:2108 #, c-format msgid "Waiting %d seconds for drive to spin up...\n" msgstr "Väntar %d sekunder på att enheten ska varva upp...\n" -#: src/read-linear.c:548 src/read-linear-window.c:104 +#: src/read-linear.c:515 src/read-linear-window.c:109 #, c-format msgid "Unreadable / skipped sectors: %" msgstr "Oläsbara / överhoppade sektorer: %" -#: src/read-linear.c:644 +#: src/read-linear.c:605 #, c-format msgid "Sector %: Speed increased to %4.1fx\n" msgstr "Sektor %: Hastighet ökad till %4.1fx\n" -#: src/read-linear.c:647 +#: src/read-linear.c:608 #, c-format msgid "Sector %: Speed dropped to %4.1fx\n" msgstr "Sektor %: Hastighet minskad till %4.1fx\n" -#: src/read-linear.c:653 +#: src/read-linear.c:614 #, c-format -msgid "Read position: %3d.%1d%% (nn.nx)" +msgid "Read position: %3d.%1d%% (nn.nx), sector %/%, % sectors read OK, % read errors, % crc errors" msgstr "" -#: src/read-linear.c:655 +#: src/read-linear.c:615 #, c-format -msgid "Read position: %3d.%1d%% (%4.1fx)" -msgstr "Läsposition: %3d.%1d%% (%4.1fx)" +msgid "Read position: %3d.%1d%% (%4.1fx), sector %/%, % sectors read OK, % read errors, % crc errors" +msgstr "" -#: src/read-linear.c:749 +#: src/read-linear.c:708 #, c-format msgid "* CRC error, sector: %lld\n" msgstr "* CRC-fel, sektor: %lld\n" -#: src/read-linear.c:879 +#: src/read-linear.c:841 #, c-format msgid "" "This ecc file requires dvdisaster-%d.%d!\n" @@ -3114,218 +3091,227 @@ msgid "" "\n" msgstr "" -#: src/read-linear.c:887 +#: src/read-linear.c:849 #, c-format msgid "" "This image requires dvdisaster-%d.%d!\n" "\n" "Proceeding could trigger incorrect behaviour.\n" -"Please visit http://www.dvdisaster.org for an upgrade.\n" +"Please upgrade dvdisaster.\n" "\n" msgstr "" -#: src/read-linear.c:898 src/read-linear.c:1002 src/read-linear.c:1132 +#: src/read-linear.c:858 src/read-linear.c:973 src/read-linear.c:1106 #, c-format msgid "Aborted by user request! % sectors read, % sectors unreadable/skipped so far." msgstr "Avbröts på användarens begäran! % sektorer lästa, % sektorer oläsbara/överhoppade än så länge." -#: src/read-linear.c:1060 +#: src/read-linear.c:1030 #, c-format msgid "unexpected read error in image for sector %" msgstr "oväntat läsfel i avbild för sektor %" -#: src/read-linear.c:1148 +#: src/read-linear.c:1122 #, c-format msgid "Sector %: %3d C2 errors.%s\n" msgstr "" -#: src/read-linear.c:1285 +#: src/read-linear.c:1256 #, c-format msgid "Sector %: %s Skipping %d sectors.\n" msgstr "Sektor %: %s Hoppar över %d sektorer.\n" -#: src/read-linear.c:1356 +#: src/read-linear.c:1319 #, c-format msgid "" "Trying to complete image, reading pass %d of %d.\n" "%s" msgstr "" -#: src/read-linear.c:1360 +#: src/read-linear.c:1321 #, c-format msgid "" "\n" "Trying to complete image, reading pass %d of %d.\n" msgstr "" -#: src/read-linear.c:1397 +#: src/read-linear.c:1358 #, c-format msgid "% sectors read. " msgstr "% sektorer lästa. " -#: src/read-linear.c:1398 +#: src/read-linear.c:1359 #, c-format msgid "% sectors read; % unreadable sectors." msgstr "% sektorer lästa; % oläsbara sektorer." -#: src/read-linear.c:1410 +#: src/read-linear.c:1367 +#, c-format +msgid "All sectors are readable, but %d contain defective content." +msgstr "" + +#: src/read-linear.c:1377 #, c-format msgid "All sectors successfully read, but wrong image length (% sectors difference)" msgstr "Alla sektorer lästa men felaktig avbildslängd (skiljer % sektorer)" -#: src/read-linear.c:1416 +#: src/read-linear.c:1383 msgid "All sectors successfully read, but wrong ecc md5sum." msgstr "" -#: src/read-linear.c:1422 +#: src/read-linear.c:1389 msgid "All sectors successfully read, but incomplete or damaged checksums." msgstr "" -#: src/read-linear.c:1423 +#: src/read-linear.c:1390 msgid "All sectors successfully read. Checksums match." msgstr "Alla sektorer lästa. Kontrollsummor stämmer." -#: src/read-linear.c:1425 +#: src/read-linear.c:1392 msgid "All sectors successfully read." msgstr "Alla sektorer lästa." -#: src/read-linear.c:1430 +#: src/read-linear.c:1397 #, c-format msgid "% unreadable sectors." msgstr "% oläsbara sektorer." -#: src/read-linear.c:1433 +#: src/read-linear.c:1400 #, c-format msgid "% CRC errors and a md5sum mismatch in the CRC section." msgstr "" -#: src/read-linear.c:1435 +#: src/read-linear.c:1402 #, c-format msgid "% CRC errors." msgstr "% CRC-fel." -#: src/read-linear.c:1437 +#: src/read-linear.c:1404 #, c-format msgid "% CRC errors, % unreadable sectors." msgstr "% CRC-fel, % oläsbara sektorer." -#: src/read-linear.c:1446 +#: src/read-linear.c:1414 msgid "Scanning finished: " msgstr "Avsökning färdig: " -#: src/read-linear.c:1448 +#: src/read-linear.c:1419 msgid "Reading finished: " msgstr "Läsning färdig: " -#: src/read-linear.c:1462 +#: src/read-linear.c:1432 src/read-linear.c:1443 #, c-format msgid "" "%d sectors missing at the end of the disc.\n" "This is okay if the CD was written in TAO (track at once) mode.\n" -"The Image will be truncated accordingly. See the manual for details.\n" +"%s" msgstr "" -"%d sektorer saknas på slutet av skivan.\n" -"Detta är okej om cd-skivan skrevs i TAO-läget (track at once).\n" -"Avbilden kommer att kapas enligt det. Se manualen för detaljer.\n" -#: src/read-linear.c:1469 -#, c-format +#: src/read-linear.c:1437 +msgid "See the manual for details.\n" +msgstr "" + +#: src/read-linear.c:1439 +msgid "The Image will be truncated accordingly. See the manual for details.\n" +msgstr "" + +#: src/read-linear.c:1448 +msgid "" +"See the manual for details.\n" +"Use the --dao option to disable this message.\n" +msgstr "" + +#: src/read-linear.c:1451 msgid "" -"%d sectors missing at the end of the disc.\n" -"This is okay if the CD was written in TAO (track at once) mode.\n" "The Image will be truncated accordingly. See the manual for details.\n" "Use the --dao option to disable image truncating.\n" msgstr "" -"%d sektorer saknas på slutet av skivan.\n" -"Detta är okej om cd-skivan skrevs i TAO-läget (track at once).\n" -"Avbilden kommer att kapas enligt det. Se manualen för detaljer.\n" -"Använd flaggan --dao för att inaktivera kapning av avbild.\n" -#: src/read-linear-window.c:97 +#: src/read-linear-window.c:102 #, c-format msgid "Current Speed: %d.%dx" msgstr "Aktuell hastighet: %d.%dx" -#: src/read-linear-window.c:254 src/read-linear-window.c:323 +#: src/read-linear-window.c:264 src/read-linear-window.c:333 msgid "Already present" msgstr "Finns redan" -#: src/read-linear-window.c:288 src/read-linear-window.c:330 -#: src/rs01-verify.c:126 src/rs02-verify.c:121 src/rs03-verify.c:130 +#: src/read-linear-window.c:298 src/read-linear-window.c:340 +#: src/rs01-verify.c:130 src/rs02-verify.c:123 src/rs03-verify.c:133 msgid "Sectors with CRC errors" msgstr "Sektorer med CRC-fel" -#: src/read-linear-window.c:311 +#: src/read-linear-window.c:321 msgid "Medium state" msgstr "Mediastatus" -#: src/read-linear-window.c:319 +#: src/read-linear-window.c:329 msgid "Not touched this time" msgstr "Rörs inte denna gång" -#: src/read-linear-window.c:326 +#: src/read-linear-window.c:336 msgid "Successfully read" msgstr "Läsning lyckades" -#: src/read-linear-window.c:333 +#: src/read-linear-window.c:343 msgid "Unreadable / skipped" msgstr "Oläsbar / överhoppad" -#: src/read-linear-window.c:444 +#: src/read-linear-window.c:454 msgid "Speed" msgstr "Hastighet" -#: src/recover-raw.c:65 +#: src/recover-raw.c:66 #, c-format msgid "Sector % dumped to %s\n" msgstr "" -#: src/rs01-common.c:252 src/rs02-verify.c:831 src/rs03-verify.c:1228 +#: src/rs01-common.c:251 src/rs02-verify.c:806 src/rs03-verify.c:1144 #, c-format msgid "- testing sectors : %3d%%" msgstr "- testar sektorer : %3d%%" -#: src/rs01-common.c:253 +#: src/rs01-common.c:252 #, c-format msgid "Scanning image sectors: %3d%%" msgstr "Söker av avbildssektorer: %3d%%" -#: src/rs01-common.c:308 src/rs02-verify.c:784 +#: src/rs01-common.c:305 src/rs02-verify.c:762 #, c-format msgid "* missing sector : %\n" msgstr "* saknad sektor : %\n" -#: src/rs01-common.c:309 src/rs02-verify.c:785 +#: src/rs01-common.c:306 src/rs02-verify.c:763 #, c-format msgid "* missing sectors : % - %\n" msgstr "* saknade sektorer : % - %\n" -#: src/rs01-common.c:327 src/rs01-common.c:399 src/rs01-create.c:343 +#: src/rs01-common.c:324 src/rs01-common.c:395 src/rs01-create.c:316 #, c-format msgid "Error writing CRC information: %s" msgstr "Fel vid skrivning av CRC-information: %s" -#: src/rs01-common.c:356 src/rs02-verify.c:797 src/rs03-verify.c:1202 +#: src/rs01-common.c:353 src/rs02-verify.c:775 src/rs03-verify.c:1118 #, c-format msgid "* CRC error, sector: %\n" msgstr "" -#: src/rs01-create.c:63 +#: src/rs01-create.c:65 #, c-format msgid "Redundancy %4.1f%% out of useful range [3.2%%..64.5%%]" msgstr "Redundans %4.1f%% av användbart intervall [3.2%%..64.5%%]" -#: src/rs01-create.c:76 src/rs03-common.c:467 +#: src/rs01-create.c:78 src/rs03-common.c:468 #, c-format msgid "Ecc file size %m out of useful range [% .. %]" msgstr "Ecc-filstorlek %m av användbart omfång [% .. %]" -#: src/rs01-create.c:91 +#: src/rs01-create.c:93 #, c-format msgid "Redundancy %d out of useful range [8..100]." msgstr "Redundans %d utanför användbart intervall [8..100]." -#: src/rs01-create.c:107 src/rs01-create.c:112 +#: src/rs01-create.c:105 src/rs01-create.c:106 #, c-format msgid "" "\n" @@ -3334,27 +3320,27 @@ msgstr "" "\n" "Avbildsfil %s borttagen.\n" -#: src/rs01-create.c:123 +#: src/rs01-create.c:113 #, c-format msgid "Image file %s not deleted: %s\n" msgstr "Avbildsfil %s inte borttagen: %s\n" -#: src/rs01-create.c:160 src/rs01-fix.c:81 src/rs02-create.c:63 -#: src/rs02-fix.c:57 src/rs03-create.c:154 src/rs03-fix.c:57 +#: src/rs01-create.c:147 src/rs01-fix.c:79 src/rs02-create.c:61 +#: src/rs02-fix.c:55 src/rs03-create.c:152 src/rs03-fix.c:54 #, c-format msgid "Aborted by unrecoverable error." msgstr "Avbröts av ej återhämtningsbara fel." -#: src/rs01-create.c:231 +#: src/rs01-create.c:212 msgid "Error correction file creation aborted" msgstr "Skapandet av felkorrigeringsfil avbröts" -#: src/rs01-create.c:254 +#: src/rs01-create.c:235 #, c-format msgid "Encoding with Method RS01: %d roots, %4.1f%% redundancy." msgstr "Kodar med Metod RS01: %d rötter, %4.1f%% redundans." -#: src/rs01-create.c:261 src/rs03-create.c:1373 +#: src/rs01-create.c:240 src/rs03-create.c:1331 #, c-format msgid "" "Creating the error correction file.\n" @@ -3363,49 +3349,49 @@ msgstr "" "Skapar felkorrigeringsfilen.\n" "%s" -#: src/rs01-create.c:275 src/rs03-create.c:297 +#: src/rs01-create.c:252 src/rs03-create.c:284 #, c-format msgid "Aborted to keep existing ecc file." msgstr "" -#: src/rs01-create.c:291 src/rs02-create.c:1080 src/rs03-create.c:1329 +#: src/rs01-create.c:267 src/rs02-create.c:1036 src/rs03-create.c:1285 #, c-format msgid "Image file %s: %s." msgstr "" -#: src/rs01-create.c:299 src/rs03-create.c:1348 +#: src/rs01-create.c:275 src/rs03-create.c:1304 msgid "No error correction file specified!\n" msgstr "" -#: src/rs01-create.c:312 +#: src/rs01-create.c:288 #, c-format msgid "Writing sector checksums: %3d%%" msgstr "Skriver sektorkontrollsummor: %3d%%" -#: src/rs01-create.c:317 +#: src/rs01-create.c:291 msgid "1. Writing image sector checksums:" msgstr "1. Skriver sektorkontrollsummor:" -#: src/rs01-create.c:369 src/rs01-window.c:131 +#: src/rs01-create.c:335 src/rs01-window.c:128 msgid "1. Calculating image sector checksums:" msgstr "1. Beräknar sektorkontrollsummor för avbild:" -#: src/rs01-create.c:388 src/rs01-create.c:538 src/rs01-create.c:636 +#: src/rs01-create.c:352 src/rs01-create.c:493 src/rs01-create.c:585 #, c-format msgid "Aborted by user request! (partial error correction file removed)" msgstr "Avbröts på användarens begäran! (delvis felkorrigeringsfil borttagen)" -#: src/rs01-create.c:401 +#: src/rs01-create.c:361 #, c-format msgid "% sectors unread or missing due to errors.\n" msgstr "% sektorer olästa eller saknas på grund av fel.\n" -#: src/rs01-create.c:458 +#: src/rs01-create.c:414 #, c-format msgid "Failed skipping ecc+crc header: %s" msgstr "Misslyckades med att hoppa över ecc+crc-huvud: %s" -#: src/rs01-create.c:485 src/rs02-create.c:553 +#: src/rs01-create.c:441 src/rs02-create.c:519 #, c-format msgid "" "Failed allocating memory for I/O cache.\n" @@ -3413,24 +3399,24 @@ msgid "" "Try reducing it.\n" msgstr "" -#: src/rs01-create.c:619 src/rs01-create.c:749 src/rs01-create.c:1049 -#: src/rs02-create.c:1005 src/rs03-create.c:1157 +#: src/rs01-create.c:569 src/rs01-create.c:693 src/rs01-create.c:987 +#: src/rs02-create.c:964 src/rs03-create.c:1121 #, c-format msgid "Ecc generation: %3d.%1d%%" msgstr "Generering av ecc: %3d.%1d%%" -#: src/rs01-create.c:769 src/rs01-fix.c:219 src/rs01-fix.c:243 -#: src/rs01-fix.c:295 src/rs01-fix.c:332 src/rs01-fix.c:352 src/rs01-fix.c:407 -#: src/rs01-verify.c:457 src/rs01-verify.c:916 src/rs02-create.c:130 -#: src/rs02-fix.c:260 src/rs02-fix.c:281 src/rs02-fix.c:372 -#: src/rs02-verify.c:741 src/rs03-create.c:269 src/rs03-fix.c:278 -#: src/rs03-fix.c:327 src/rs03-fix.c:350 src/rs03-fix.c:429 -#: src/rs03-verify.c:548 src/rs03-verify.c:1096 +#: src/rs01-create.c:712 src/rs01-fix.c:207 src/rs01-fix.c:232 +#: src/rs01-fix.c:278 src/rs01-fix.c:308 src/rs01-fix.c:325 src/rs01-fix.c:378 +#: src/rs01-verify.c:440 src/rs01-verify.c:812 src/rs02-create.c:118 +#: src/rs02-fix.c:233 src/rs02-fix.c:253 src/rs02-fix.c:339 +#: src/rs02-verify.c:719 src/rs03-create.c:257 src/rs03-fix.c:252 +#: src/rs03-fix.c:295 src/rs03-fix.c:317 src/rs03-fix.c:391 +#: src/rs03-verify.c:538 src/rs03-verify.c:1012 #, c-format msgid "Aborted by user request!" msgstr "Avbruten av användaren!" -#: src/rs01-create.c:1062 +#: src/rs01-create.c:1000 #, c-format msgid "" "could not write to ecc file \"%s\":\n" @@ -3439,7 +3425,7 @@ msgstr "" "kunde inte skriva till ecc-fil \"%s\":\n" "%s" -#: src/rs01-create.c:1077 +#: src/rs01-create.c:1015 #, c-format msgid "" "Can't write ecc header:\n" @@ -3448,12 +3434,12 @@ msgstr "" "Kan inte skriva ecc-huvud:\n" "%s" -#: src/rs01-create.c:1085 src/rs02-create.c:1177 src/rs03-create.c:1446 +#: src/rs01-create.c:1023 src/rs02-create.c:1127 src/rs03-create.c:1404 #, c-format msgid "Ecc generation: 100.0%%\n" msgstr "Generering av ecc: 100.0%%\n" -#: src/rs01-create.c:1086 src/rs03-create.c:1453 +#: src/rs01-create.c:1024 src/rs03-create.c:1411 #, c-format msgid "" "Error correction file \"%s\" created.\n" @@ -3462,7 +3448,7 @@ msgstr "" "Felkorrigeringsfil \"%s\" skapad.\n" "Tänk på att lagra filen på ett pålitligt medium.\n" -#: src/rs01-create.c:1095 src/rs03-create.c:1482 +#: src/rs01-create.c:1031 src/rs03-create.c:1436 msgid "" "The error correction file has been successfully created.\n" "Make sure to keep this file on a reliable medium." @@ -3470,27 +3456,27 @@ msgstr "" "Skapandet av felkorrigeringsfilen lyckades.\n" "Tänk på att lagra denna fil på ett pålitligt medium." -#: src/rs01-fix.c:39 src/rs02-fix.c:448 +#: src/rs01-fix.c:41 src/rs02-fix.c:415 #, c-format msgid "Failed seeking in crc area: %s" msgstr "Misslyckades med att söka i crc-område: %s" -#: src/rs01-fix.c:44 src/rs02-fix.c:451 src/rs02-verify.c:444 +#: src/rs01-fix.c:46 src/rs02-fix.c:418 src/rs02-verify.c:438 #, c-format msgid "problem reading crc data: %s" msgstr "problem att läsa crc-data: %s" -#: src/rs01-fix.c:148 src/rs02-fix.c:190 src/rs03-fix.c:189 +#: src/rs01-fix.c:138 src/rs02-fix.c:169 src/rs03-fix.c:166 msgid "Repairing of image aborted" msgstr "Reparation av avbild avbruten" -#: src/rs01-fix.c:154 +#: src/rs01-fix.c:144 #, c-format msgid "Error correction file using Method RS01, %d roots, %4.1f%% redundancy." msgstr "Felkorrigeringsfil som använder Metod RS01, %d rötter, %4.1f%% redundans." -#: src/rs01-fix.c:161 src/rs02-fix.c:197 src/rs02-fix.c:229 src/rs03-fix.c:200 -#: src/rs03-fix.c:252 +#: src/rs01-fix.c:151 src/rs02-fix.c:174 src/rs02-fix.c:205 src/rs03-fix.c:175 +#: src/rs03-fix.c:226 #, c-format msgid "" "Repairing the image.\n" @@ -3499,7 +3485,7 @@ msgstr "" "Reparerar avbilden.\n" "%s" -#: src/rs01-fix.c:166 src/rs02-fix.c:235 src/rs03-fix.c:258 +#: src/rs01-fix.c:156 src/rs02-fix.c:211 src/rs03-fix.c:232 #, c-format msgid "" "\n" @@ -3508,7 +3494,7 @@ msgstr "" "\n" "Rättningsläge(%s): Reparerbara sektorer kommer att rättas till i avbilden.\n" -#: src/rs01-fix.c:201 +#: src/rs01-fix.c:191 #, c-format msgid "" "The image file is %lld sectors longer as noted in the\n" @@ -3525,7 +3511,7 @@ msgstr "" "\n" "%s" -#: src/rs01-fix.c:209 src/rs02-fix.c:250 src/rs03-fix.c:317 +#: src/rs01-fix.c:199 src/rs02-fix.c:225 src/rs03-fix.c:287 #, c-format msgid "" "Image file is % sectors longer than expected.\n" @@ -3536,17 +3522,17 @@ msgstr "" "Antar att dett är ett medium i TAO-läge.\n" "% sektorer kommer att tas bort från avbildens slut.\n" -#: src/rs01-fix.c:238 src/rs02-fix.c:276 src/rs03-fix.c:345 +#: src/rs01-fix.c:227 src/rs02-fix.c:248 src/rs03-fix.c:312 msgid "Is it okay to remove the superfluous sectors?" msgstr "Är det ok att ta bort de överflödiga sektorerna?" -#: src/rs01-fix.c:255 src/rs01-fix.c:277 src/rs02-fix.c:290 src/rs02-fix.c:308 -#: src/rs03-fix.c:361 src/rs03-fix.c:381 +#: src/rs01-fix.c:244 src/rs01-fix.c:261 src/rs02-fix.c:262 src/rs02-fix.c:276 +#: src/rs03-fix.c:328 src/rs03-fix.c:344 #, c-format msgid "Image has been truncated by % sectors.\n" msgstr "Avbild har kapats av % sektorer.\n" -#: src/rs01-fix.c:268 src/rs02-fix.c:302 src/rs03-fix.c:373 +#: src/rs01-fix.c:252 src/rs02-fix.c:270 src/rs03-fix.c:336 msgid "" "Add the --truncate option to the program call\n" "to have the superfluous sectors removed." @@ -3554,7 +3540,7 @@ msgstr "" "Lägg till flaggan --truncate till programanropet\n" "för att få onödiga sektorer borttagna." -#: src/rs01-fix.c:287 src/rs03-fix.c:270 +#: src/rs01-fix.c:270 src/rs03-fix.c:244 #, c-format msgid "" "The image file is %d bytes longer than noted\n" @@ -3565,7 +3551,7 @@ msgstr "" "i ecc-filen. Ska de byte som är onödiga tas\n" "bort från avbildsfilen?\n" -#: src/rs01-fix.c:308 src/rs03-fix.c:291 +#: src/rs01-fix.c:286 src/rs03-fix.c:261 #, c-format msgid "" "The image file is %d bytes longer than noted\n" @@ -3578,12 +3564,12 @@ msgstr "" "Lägg till flaggan --truncate till programanropet\n" "för att få de onödiga sektorerna borttagna." -#: src/rs01-fix.c:317 src/rs03-fix.c:300 +#: src/rs01-fix.c:295 src/rs03-fix.c:270 #, c-format msgid "Image has been truncated by %d bytes.\n" msgstr "Avbild har kapats av %d byte.\n" -#: src/rs01-fix.c:325 +#: src/rs01-fix.c:303 msgid "" "Image file appears to be truncated.\n" "Consider completing it with another reading pass before going on.\n" @@ -3591,7 +3577,7 @@ msgstr "" "Avbildsfil verkar vara avkapad.\n" "Fundera på att färdigställa den med ett läspass till före fortsättning.\n" -#: src/rs01-fix.c:344 +#: src/rs01-fix.c:319 #, c-format msgid "" "Sector %d is missing. Can not compare image and ecc fingerprints.\n" @@ -3600,7 +3586,7 @@ msgstr "" "Sektor %d saknas. Kan inte jämföra fingeravtryck på avbild och ecc.\n" "Dubbelkontrollera att avbilden och ecc-filen hör ihop.\n" -#: src/rs01-fix.c:360 +#: src/rs01-fix.c:332 msgid "" "Fingerprints of image and ecc file do not match.\n" "Image and ecc file do not belong together.\n" @@ -3608,17 +3594,17 @@ msgstr "" "Fingeravtryck på avbild och ecc-fil stämmer inte överens.\n" "Avbild och ecc-fil hör inte ihop.\n" -#: src/rs01-fix.c:479 +#: src/rs01-fix.c:447 #, c-format msgid "* %3d unrepairable sectors: " msgstr "* %3d ej reparerbara sektorer: " -#: src/rs01-fix.c:527 +#: src/rs01-fix.c:495 #, c-format msgid "Failed seeking in ecc area: %s" msgstr "Misslyckades med att söka i ecc-område: %s" -#: src/rs01-fix.c:531 +#: src/rs01-fix.c:499 #, c-format msgid "" "Can't read ecc file:\n" @@ -3627,27 +3613,27 @@ msgstr "" "Kan inte läsa ecc-fil:\n" "%s" -#: src/rs01-fix.c:727 +#: src/rs01-fix.c:695 #, c-format msgid "-> Error located in sector % at byte %4d (value %02x '%c', expected %02x '%c')\n" msgstr "-> Fel hittat i sektor % vid byte %4d (värde %02x \"%c\", förväntade %02x \"%c\")\n" -#: src/rs01-fix.c:734 +#: src/rs01-fix.c:702 #, c-format msgid "Unexpected byte error in sector %, byte %d\n" msgstr "Oväntat bytefel i sektor %, byte %d\n" -#: src/rs01-fix.c:740 +#: src/rs01-fix.c:708 #, c-format msgid "Bad error location %d; corrupted .ecc file?\n" msgstr "Felaktig felplats %d; skadad .ecc-fil?\n" -#: src/rs01-fix.c:750 src/rs02-fix.c:752 src/rs03-fix.c:819 +#: src/rs01-fix.c:718 src/rs02-fix.c:716 src/rs03-fix.c:778 #, c-format msgid " %3d repaired sectors: " msgstr " %3d reparerade sektorer: " -#: src/rs01-fix.c:769 src/rs02-fix.c:794 src/rs03-fix.c:870 +#: src/rs01-fix.c:737 src/rs02-fix.c:758 src/rs03-fix.c:829 #, c-format msgid "" "could not write medium sector %:\n" @@ -3656,175 +3642,175 @@ msgstr "" "kunde inte skriva mediumsektor %:\n" "%s" -#: src/rs01-fix.c:798 src/rs02-fix.c:835 src/rs03-fix.c:927 +#: src/rs01-fix.c:766 src/rs02-fix.c:797 src/rs03-fix.c:886 #, c-format msgid "Ecc progress: %3d.%1d%%" msgstr "Ecc-förlopp: %3d.%1d%%" -#: src/rs01-fix.c:810 src/rs02-fix.c:849 src/rs03-fix.c:939 +#: src/rs01-fix.c:778 src/rs02-fix.c:811 src/rs03-fix.c:898 #, c-format msgid "Ecc progress: 100.0%%\n" msgstr "Ecc-förlopp: 100.0%%\n" -#: src/rs01-fix.c:811 +#: src/rs01-fix.c:779 #, c-format msgid "Repaired sectors: % \n" msgstr "Reparerade sektorer: % \n" -#: src/rs01-fix.c:813 src/rs02-fix.c:854 src/rs03-fix.c:944 +#: src/rs01-fix.c:781 src/rs02-fix.c:816 src/rs03-fix.c:905 #, c-format msgid "Unrepaired sectors: %\n" msgstr "Ej reparerade sektorer: %\n" -#: src/rs01-fix.c:817 src/rs02-fix.c:858 src/rs03-fix.c:948 +#: src/rs01-fix.c:783 src/rs02-fix.c:818 src/rs03-fix.c:907 #, c-format msgid "Image sectors could not be fully restored (% repaired; % unrepaired)" msgstr "Avbildssektorer kunde inte fullständigt återställas (% reparerade; % ej reparerade)" -#: src/rs01-fix.c:824 src/rs02-fix.c:865 src/rs03-fix.c:956 +#: src/rs01-fix.c:789 src/rs02-fix.c:824 src/rs03-fix.c:914 msgid "Good! All sectors are already present." msgstr "Bra! Alla sektorer finns tillgängliga." -#: src/rs01-fix.c:828 src/rs02-fix.c:869 src/rs03-fix.c:961 +#: src/rs01-fix.c:793 src/rs02-fix.c:828 src/rs03-fix.c:919 msgid "Good! All sectors are repaired." msgstr "Bra! Alla sektorer är reparerade." -#: src/rs01-fix.c:833 src/rs02-fix.c:874 src/rs03-fix.c:967 +#: src/rs01-fix.c:798 src/rs02-fix.c:833 src/rs03-fix.c:925 #, c-format msgid "Erasure counts per ecc block: avg = %.1f; worst = %d.\n" msgstr "Raderingsantal per ecc-block: medel = %.1f; sämst = %d.\n" -#: src/rs01-fix.c:839 src/rs02-fix.c:880 src/rs03-fix.c:973 +#: src/rs01-fix.c:803 src/rs02-fix.c:838 src/rs03-fix.c:930 msgid "Repair results:" msgstr "Reparationsresultat:" -#: src/rs01-verify.c:48 src/rs01-verify.c:417 src/rs03-verify.c:61 +#: src/rs01-verify.c:50 src/rs01-verify.c:410 src/rs03-verify.c:64 msgid "n/a" msgstr "-" -#: src/rs01-verify.c:129 src/rs01-verify.c:150 src/rs02-verify.c:124 -#: src/rs02-verify.c:145 src/rs03-verify.c:133 src/rs03-verify.c:154 +#: src/rs01-verify.c:133 src/rs01-verify.c:154 src/rs02-verify.c:126 +#: src/rs02-verify.c:147 src/rs03-verify.c:136 src/rs03-verify.c:157 msgid "Missing sectors" msgstr "Saknade sektorer" -#: src/rs01-verify.c:193 src/rs02-verify.c:182 +#: src/rs01-verify.c:197 src/rs02-verify.c:184 msgid "Image file summary" msgstr "Sammanfattning för avbildsfil" -#: src/rs01-verify.c:202 src/rs03-verify.c:282 +#: src/rs01-verify.c:206 src/rs03-verify.c:285 msgid "No image present." msgstr "Ingen avbild finns." -#: src/rs01-verify.c:212 src/rs01-verify.c:302 src/rs02-verify.c:192 -#: src/rs02-verify.c:298 src/rs03-verify.c:293 +#: src/rs01-verify.c:216 src/rs01-verify.c:306 src/rs02-verify.c:194 +#: src/rs02-verify.c:300 src/rs03-verify.c:296 msgid "Medium sectors:" msgstr "Mediumsektorer:" -#: src/rs01-verify.c:220 +#: src/rs01-verify.c:224 msgid "Checksum errors:" msgstr "Felaktiga kontrollsummor:" -#: src/rs01-verify.c:228 +#: src/rs01-verify.c:232 msgid "Missing Sectors:" msgstr "Saknade sektorer:" -#: src/rs01-verify.c:236 src/rs01-verify.c:310 +#: src/rs01-verify.c:240 src/rs01-verify.c:314 msgid "Image checksum:" msgstr "Kontrollsumma för avbild:" -#: src/rs01-verify.c:248 src/rs02-verify.c:244 src/rs03-verify.c:262 +#: src/rs01-verify.c:252 src/rs02-verify.c:246 src/rs03-verify.c:265 msgid "Image state" msgstr "Avbildsstatus" -#: src/rs01-verify.c:259 +#: src/rs01-verify.c:263 msgid "Error correction file summary" msgstr "Sammanfattning för felkorrigeringsfil" -#: src/rs01-verify.c:278 src/rs02-verify.c:274 src/rs03-verify.c:222 +#: src/rs01-verify.c:282 src/rs02-verify.c:276 src/rs03-verify.c:225 msgid "Created by:" msgstr "Skapad av:" -#: src/rs01-verify.c:286 src/rs02-verify.c:282 src/rs03-verify.c:213 +#: src/rs01-verify.c:290 src/rs02-verify.c:284 src/rs03-verify.c:216 msgid "Method:" msgstr "Metod:" -#: src/rs01-verify.c:294 src/rs02-verify.c:290 src/rs03-verify.c:231 +#: src/rs01-verify.c:298 src/rs02-verify.c:292 src/rs03-verify.c:234 msgid "Requires:" msgstr "Kräver:" -#: src/rs01-verify.c:318 src/rs03-verify.c:249 +#: src/rs01-verify.c:322 src/rs03-verify.c:252 msgid "Fingerprint:" msgstr "Fingeravtryck:" -#: src/rs01-verify.c:326 +#: src/rs01-verify.c:330 msgid "Ecc blocks:" msgstr "Ecc-block:" -#: src/rs01-verify.c:334 src/rs02-verify.c:50 src/rs02-verify.c:322 +#: src/rs01-verify.c:338 src/rs02-verify.c:52 src/rs02-verify.c:324 msgid "Ecc checksum:" msgstr "Ecc-kontrollsumma:" -#: src/rs01-verify.c:398 +#: src/rs01-verify.c:397 msgid "Comparison aborted" msgstr "Jämförelse avbruten" -#: src/rs01-verify.c:405 src/rs01-verify.c:560 +#: src/rs01-verify.c:402 src/rs01-verify.c:523 msgid "Comparing image and error correction files." msgstr "Jämför avbild och felkorrigeringsfiler." -#: src/rs01-verify.c:406 src/rs03-verify.c:737 src/rs03-verify.c:748 +#: src/rs01-verify.c:403 src/rs03-verify.c:700 src/rs03-verify.c:708 msgid "- Checking image file -" msgstr "- Kontrollerar avbildsfil -" -#: src/rs01-verify.c:424 src/rs01-verify.c:567 src/rs01-verify.c:583 +#: src/rs01-verify.c:417 src/rs01-verify.c:529 src/rs01-verify.c:542 msgid "not present\n" msgstr "finns inte\n" -#: src/rs01-verify.c:434 src/rs02-verify.c:620 +#: src/rs01-verify.c:424 src/rs02-verify.c:601 #, c-format msgid "present, contains % medium sectors.\n" msgstr "tillgänglig, innehåller % mediumsektorer.\n" -#: src/rs01-verify.c:441 +#: src/rs01-verify.c:428 #, c-format msgid "present, contains % medium sectors and %d bytes.\n" msgstr "tillgänglig, innehåller % mediumsektorer och %d byte.\n" -#: src/rs01-verify.c:445 src/rs01-verify.c:726 src/rs01-verify.c:749 +#: src/rs01-verify.c:430 src/rs01-verify.c:659 src/rs01-verify.c:676 #, c-format msgid "% sectors + %d bytes" msgstr "% sektorer + %d byte" -#: src/rs01-verify.c:471 +#: src/rs01-verify.c:454 #, c-format msgid "* truncated image : % sectors too short\n" msgstr "* kapad avbild : % sektorer för kort\n" -#: src/rs01-verify.c:475 +#: src/rs01-verify.c:456 #, c-format msgid "% (% sectors too short)" msgstr "% (% sektorer för kort)" -#: src/rs01-verify.c:499 +#: src/rs01-verify.c:478 #, c-format msgid "* image too long : % excess sectors\n" msgstr "* avbild för stor : % fler sektorer\n" -#: src/rs01-verify.c:503 +#: src/rs01-verify.c:480 #, c-format msgid "% (% excess sectors)" msgstr "% (% fler sektorer)" -#: src/rs01-verify.c:506 src/rs01-verify.c:549 +#: src/rs01-verify.c:483 src/rs01-verify.c:515 #, c-format msgid "Bad image." msgstr "Felaktig avbild." -#: src/rs01-verify.c:512 src/rs02-verify.c:707 src/rs03-verify.c:1060 +#: src/rs01-verify.c:487 src/rs02-verify.c:686 src/rs03-verify.c:973 msgid "* quick mode : image NOT scanned\n" msgstr "" -#: src/rs01-verify.c:520 +#: src/rs01-verify.c:495 #, c-format msgid "" "- good image : all sectors present\n" @@ -3833,12 +3819,12 @@ msgstr "" "- bra avbild : alla sektorer tillgängliga\n" "- md5sum avbild : %s\n" -#: src/rs01-verify.c:524 src/rs02-verify.c:926 src/rs03-verify.c:1388 +#: src/rs01-verify.c:497 src/rs02-verify.c:904 src/rs03-verify.c:1299 #, c-format msgid "Good image." msgstr "Bra avbild." -#: src/rs01-verify.c:530 +#: src/rs01-verify.c:501 #, c-format msgid "" "* suspicious image : all sectors present, but % CRC errors\n" @@ -3847,74 +3833,74 @@ msgstr "" "* misstänkt avbild : alla sektorer finns men % CRC-fel\n" "- md5summa för avbild : %s\n" -#: src/rs01-verify.c:535 +#: src/rs01-verify.c:504 #, c-format msgid "Image complete, but contains checksum errors!" msgstr "Avbild komplett, men innehåller fel i kontrollsummor!" -#: src/rs01-verify.c:543 src/rs02-verify.c:892 +#: src/rs01-verify.c:510 src/rs02-verify.c:871 #, c-format msgid "* BAD image : % sectors missing\n" msgstr "* DÅLIG avbild : % sektorer saknas\n" -#: src/rs01-verify.c:544 src/rs02-verify.c:896 src/rs03-verify.c:1320 +#: src/rs01-verify.c:511 src/rs02-verify.c:875 src/rs03-verify.c:1240 #, c-format msgid "* BAD image : % sectors missing, % CRC errors\n" msgstr "* DÅLIG avbild : % sektorer saknas, % CRC-fel\n" -#: src/rs01-verify.c:561 src/rs03-verify.c:1275 +#: src/rs01-verify.c:524 src/rs03-verify.c:1194 msgid "- Checking ecc file -" msgstr "- Kontrollerar ecc-fil -" -#: src/rs01-verify.c:571 src/rs01-verify.c:601 +#: src/rs01-verify.c:531 src/rs01-verify.c:559 msgid "No error correction file present." msgstr "Ingen felkorrigeringsfil finns tillgänglig." -#: src/rs01-verify.c:580 +#: src/rs01-verify.c:539 msgid "permission denied\n" msgstr "" -#: src/rs01-verify.c:586 +#: src/rs01-verify.c:545 msgid "invalid\n" msgstr "" -#: src/rs01-verify.c:589 +#: src/rs01-verify.c:548 msgid "defective header (unusable)\n" msgstr "" -#: src/rs01-verify.c:592 +#: src/rs01-verify.c:551 msgid "unknown codec (unusable)\n" msgstr "" -#: src/rs01-verify.c:595 +#: src/rs01-verify.c:554 msgid "unusable\n" msgstr "" -#: src/rs01-verify.c:625 src/rs01-verify.c:639 src/rs02-verify.c:957 -#: src/rs02-verify.c:972 +#: src/rs01-verify.c:582 src/rs01-verify.c:592 src/rs02-verify.c:930 +#: src/rs02-verify.c:941 msgid "created by dvdisaster" msgstr "skapad av dvdisaster" -#: src/rs01-verify.c:651 +#: src/rs01-verify.c:601 msgid "created by dvdisaster-0.41.x.\n" msgstr "skapad av dvdisaster-0.41.x.\n" -#: src/rs01-verify.c:663 src/rs02-verify.c:988 src/rs03-verify.c:806 +#: src/rs01-verify.c:610 src/rs02-verify.c:954 src/rs03-verify.c:762 #, c-format msgid "- method : %4s, %d roots, %4.1f%% redundancy.\n" msgstr "- metod : %4s, %d rötter, %4.1f%% redundans.\n" -#: src/rs01-verify.c:668 src/rs02-verify.c:994 src/rs03-verify.c:812 +#: src/rs01-verify.c:614 src/rs02-verify.c:958 src/rs03-verify.c:766 #, c-format msgid "%4s, %d roots, %4.1f%% redundancy" msgstr "%4s, %d rötter, %4.1f%% redundans" -#: src/rs01-verify.c:676 src/rs02-verify.c:1002 +#: src/rs01-verify.c:621 src/rs02-verify.c:965 #, c-format msgid "- requires : dvdisaster-%d.%d (good)\n" msgstr "- kräver : dvdisaster-%d.%d (bra)\n" -#: src/rs01-verify.c:687 src/rs02-verify.c:1015 +#: src/rs01-verify.c:629 src/rs02-verify.c:975 #, c-format msgid "" "* requires : dvdisaster-%d.%d (BAD)\n" @@ -3922,203 +3908,203 @@ msgid "" "* : Please upgrade dvdisaster.\n" msgstr "" -#: src/rs01-verify.c:701 src/rs02-verify.c:1030 src/rs03-verify.c:883 +#: src/rs01-verify.c:641 src/rs02-verify.c:989 src/rs03-verify.c:824 #, c-format msgid "Please upgrade your version of dvdisaster!" msgstr "Uppgradera din version av dvdisaster!" -#: src/rs01-verify.c:714 +#: src/rs01-verify.c:652 #, c-format msgid "- medium sectors : %\n" msgstr "- mediumsektorer : %\n" -#: src/rs01-verify.c:721 +#: src/rs01-verify.c:656 #, c-format msgid "- medium sectors : % sectors + %d bytes\n" msgstr "- mediumsektorer : % sektorer + %d byte\n" -#: src/rs01-verify.c:737 +#: src/rs01-verify.c:669 #, c-format msgid "- medium sectors : % (good)\n" msgstr "- mediumsektorer : % (bra)\n" -#: src/rs01-verify.c:744 +#: src/rs01-verify.c:673 #, c-format msgid "- medium sectors : % sectors + %d bytes (good)\n" msgstr "- mediumsektorer : % sektorer + %d byte (bra)\n" -#: src/rs01-verify.c:758 src/rs02-verify.c:1054 +#: src/rs01-verify.c:684 src/rs02-verify.c:1009 #, c-format msgid "* medium sectors : % (BAD, perhaps TAO/DAO mismatch)\n" msgstr "* mediumsektorer : % (FELAKTIG, kanske TAO/DAO inte stämmer)\n" -#: src/rs01-verify.c:771 src/rs02-verify.c:1056 +#: src/rs01-verify.c:696 src/rs02-verify.c:1011 #, c-format msgid "* medium sectors : % (BAD)\n" msgstr "* mediumsektorer : % (DÅLIGT)\n" -#: src/rs01-verify.c:777 src/rs01-verify.c:790 +#: src/rs01-verify.c:700 src/rs01-verify.c:709 #, c-format msgid "Image size does not match error correction file." msgstr "Avbildens storlek stämmer inte med felkorrigeringsfilen." -#: src/rs01-verify.c:782 +#: src/rs01-verify.c:703 #, c-format msgid "* medium sectors : % sectors + %d bytes (BAD)\n" msgstr "* mediumsektorer : % sektorer + %d byte (DÅLIGT)\n" -#: src/rs01-verify.c:787 +#: src/rs01-verify.c:706 #, c-format msgid "% sectors + %d bytes" msgstr "% sektorer + %d byte" -#: src/rs01-verify.c:804 +#: src/rs01-verify.c:722 #, c-format msgid "- image md5sum : %s (good)\n" msgstr "- md5sum avbild : %s (bra)\n" -#: src/rs01-verify.c:805 +#: src/rs01-verify.c:726 #, c-format msgid "* image md5sum : %s (BAD)\n" msgstr "* md5sum avbild : %s (DÅLIGT)\n" -#: src/rs01-verify.c:817 +#: src/rs01-verify.c:734 #, c-format msgid "- image md5sum : %s\n" msgstr "- md5sum avbild : %s\n" -#: src/rs01-verify.c:827 src/rs03-verify.c:910 +#: src/rs01-verify.c:741 src/rs03-verify.c:846 msgid "* fingerprint match: NOT POSSIBLE - related sector is missing in image!\n" msgstr "* fingeravtrycksträff: INTE MÖJLIG - relaterad sektor saknas i avbild!\n" -#: src/rs01-verify.c:830 src/rs03-verify.c:914 +#: src/rs01-verify.c:743 src/rs03-verify.c:848 #, c-format msgid "missing sector prevents calculation" msgstr "saknad sektor förhindrar beräkning" -#: src/rs01-verify.c:836 src/rs03-verify.c:920 +#: src/rs01-verify.c:749 src/rs03-verify.c:853 msgid "* fingerprint match: MISMATCH - .iso and .ecc don't belong together!\n" msgstr "* fingeravtrycksträff: STÄMMER INTE - .iso och .ecc hör inte ihop!\n" -#: src/rs01-verify.c:841 src/rs03-verify.c:925 +#: src/rs01-verify.c:752 src/rs03-verify.c:856 #, c-format msgid "mismatch" msgstr "stämmer inte" -#: src/rs01-verify.c:844 src/rs03-verify.c:928 +#: src/rs01-verify.c:755 src/rs03-verify.c:859 #, c-format msgid "Image and error correction files do not belong together!" msgstr "Avbild och felkorrigeringsfiler hör inte ihop!" -#: src/rs01-verify.c:849 src/rs03-verify.c:933 +#: src/rs01-verify.c:758 src/rs03-verify.c:862 msgid "- fingerprint match: good\n" msgstr "- fingeravtrycksträff: bra\n" -#: src/rs01-verify.c:852 src/rs03-verify.c:936 +#: src/rs01-verify.c:759 src/rs03-verify.c:863 msgid "good" msgstr "bra" -#: src/rs01-verify.c:861 +#: src/rs01-verify.c:767 msgid "* quick mode : ecc file NOT scanned\n" msgstr "" -#: src/rs01-verify.c:869 +#: src/rs01-verify.c:775 #, c-format msgid "- ecc blocks : % (good)\n" msgstr "- ecc-block : % (bra)\n" -#: src/rs01-verify.c:876 +#: src/rs01-verify.c:779 #, c-format msgid "* ecc blocks : % (BAD, expected %)\n" msgstr "* ecc-block : % (DÅLIGT, förväntade %)\n" -#: src/rs01-verify.c:879 +#: src/rs01-verify.c:782 #, c-format msgid "% (bad, expected %)" msgstr "% (dålig, förväntade %)" -#: src/rs01-verify.c:905 +#: src/rs01-verify.c:804 #, c-format msgid "- ecc md5sum : %3d%%" msgstr "- ecc md5sum : %3d%%" -#: src/rs01-verify.c:926 +#: src/rs01-verify.c:822 msgid "* ecc md5sum : BAD, ecc file may be damaged!\n" msgstr "* ecc md5sum : DÅLIG, ecc-filen kan vara skadad!\n" -#: src/rs01-verify.c:929 +#: src/rs01-verify.c:823 #, c-format msgid "bad" msgstr "dåligt" -#: src/rs01-verify.c:931 +#: src/rs01-verify.c:825 #, c-format msgid "Error correction file may be damaged!" msgstr "Felkorrigeringsfil kan vara skadad!" -#: src/rs01-verify.c:936 src/rs02-verify.c:1137 +#: src/rs01-verify.c:828 src/rs02-verify.c:1075 #, c-format msgid "- ecc md5sum : %s (good)\n" msgstr "- ecc md5sum : %s (bra)\n" -#: src/rs01-verify.c:953 +#: src/rs01-verify.c:841 #, c-format msgid "Good error correction file." msgstr "Bra felkorrigeringsfil." -#: src/rs01-window.c:140 src/rs02-window.c:89 src/rs03-window.c:94 +#: src/rs01-window.c:137 src/rs02-window.c:85 src/rs03-window.c:90 msgid "2. Creating error correction data:" msgstr "2. Skapar felkorrigeringsdata:" -#: src/rs01-window.c:164 +#: src/rs01-window.c:161 msgid "Show reading speed curve" msgstr "Visa kurva för läshastighet" -#: src/rs01-window.c:203 src/rs02-window.c:141 src/rs03-window.c:174 +#: src/rs01-window.c:200 src/rs02-window.c:137 src/rs03-window.c:170 #, c-format msgid "Repaired: %" msgstr "Reparerat: %" -#: src/rs01-window.c:204 src/rs02-window.c:142 src/rs03-window.c:175 +#: src/rs01-window.c:201 src/rs02-window.c:139 src/rs03-window.c:171 #, c-format msgid "Unrepairable: %" msgstr "Ej reparerbar: %" -#: src/rs01-window.c:205 src/rs02-window.c:143 src/rs03-window.c:176 +#: src/rs01-window.c:202 src/rs02-window.c:141 src/rs03-window.c:172 #, c-format msgid "Progress: %3d.%1d%%" msgstr "Förlopp: %3d.%1d%%" -#: src/rs01-window.c:414 src/rs02-window.c:348 src/rs03-window.c:381 +#: src/rs01-window.c:405 src/rs02-window.c:346 src/rs03-window.c:377 msgid "Errors/Ecc block" msgstr "Fel/Ecc-block" -#: src/rs01-window.c:450 src/rs02-window.c:378 src/rs03-preferences.c:318 -#: src/rs03-preferences.c:328 +#: src/rs01-window.c:441 src/rs02-window.c:376 src/rs03-preferences.c:320 +#: src/rs03-preferences.c:330 #, c-format msgid "%4.1f%% redundancy (%d roots)" msgstr "%4.1f%% redundans (%d rötter)" -#: src/rs01-window.c:467 src/rs01-window.c:874 src/rs01-window.c:880 -#: src/rs01-window.c:881 src/rs02-window.c:395 src/rs02-window.c:1362 -#: src/rs02-window.c:1368 src/rs02-window.c:1369 +#: src/rs01-window.c:458 src/rs01-window.c:866 src/rs01-window.c:872 +#: src/rs01-window.c:873 src/rs02-window.c:393 src/rs02-window.c:1369 +#: src/rs02-window.c:1375 src/rs02-window.c:1376 #, c-format msgid "%d MiB of file cache" msgstr "" -#: src/rs01-window.c:669 src/rs03-preferences.c:558 +#: src/rs01-window.c:660 src/rs03-preferences.c:560 msgid "Redundancy for new error correction files" msgstr "Redundans för nya felkorrigeringsfiler" -#: src/rs01-window.c:678 src/rs03-preferences.c:585 +#: src/rs01-window.c:669 src/rs03-preferences.c:587 msgid "Normal redundancy" msgstr "" -#: src/rs01-window.c:678 src/rs03-preferences.c:585 +#: src/rs01-window.c:669 src/rs03-preferences.c:587 msgid "Normal" msgstr "Normal" -#: src/rs01-window.c:701 src/rs03-preferences.c:609 +#: src/rs01-window.c:692 src/rs03-preferences.c:611 #, c-format msgid "" "Normal redundancy\n" @@ -4127,15 +4113,15 @@ msgid "" "It invokes optimized program code to speed up the error correction file creation." msgstr "" -#: src/rs01-window.c:708 src/rs03-preferences.c:616 +#: src/rs01-window.c:699 src/rs03-preferences.c:618 msgid "High redundancy" msgstr "" -#: src/rs01-window.c:708 src/rs03-preferences.c:616 +#: src/rs01-window.c:699 src/rs03-preferences.c:618 msgid "High" msgstr "Hög" -#: src/rs01-window.c:731 src/rs03-preferences.c:639 +#: src/rs01-window.c:722 src/rs03-preferences.c:641 #, c-format msgid "" "High redundancy\n" @@ -4144,15 +4130,15 @@ msgid "" "It invokes optimized program code to speed up the error correction file creation." msgstr "" -#: src/rs01-window.c:739 src/rs03-preferences.c:647 +#: src/rs01-window.c:730 src/rs03-preferences.c:648 msgid "Other redundancy" msgstr "" -#: src/rs01-window.c:739 src/rs03-preferences.c:647 +#: src/rs01-window.c:730 src/rs03-preferences.c:648 msgid "Other" msgstr "Annan" -#: src/rs01-window.c:778 src/rs03-preferences.c:686 +#: src/rs01-window.c:769 src/rs03-preferences.c:687 #, c-format msgid "" "Other redundancy\n" @@ -4161,19 +4147,19 @@ msgid "" "An error correction file with x%% redundancy will be approximately x%% of the size of the corresponding image file." msgstr "" -#: src/rs01-window.c:786 src/rs03-preferences.c:694 +#: src/rs01-window.c:777 src/rs03-preferences.c:695 msgid "Space-delimited redundancy" msgstr "" -#: src/rs01-window.c:786 src/rs02-window.c:1293 src/rs03-preferences.c:694 +#: src/rs01-window.c:778 src/rs02-window.c:1299 src/rs03-preferences.c:696 msgid "Use at most" msgstr "Använd som mest" -#: src/rs01-window.c:811 src/rs03-preferences.c:719 +#: src/rs01-window.c:803 src/rs03-preferences.c:721 msgid "MiB for error correction data" msgstr "MiB för felkorrigeringsdata" -#: src/rs01-window.c:828 src/rs03-preferences.c:736 +#: src/rs01-window.c:820 src/rs03-preferences.c:738 msgid "" "Space-delimited redundancy\n" "\n" @@ -4182,42 +4168,42 @@ msgid "" "Advance notice: When using the same size setting for images of vastly different size, smaller images receive more redundancy than larger ones. This is usually not what you want." msgstr "" -#: src/rs01-window.c:871 src/rs02-window.c:1359 +#: src/rs01-window.c:863 src/rs02-window.c:1366 msgid "Memory utilization" msgstr "Minnsanvändning" -#: src/rs01-window.c:875 src/rs02-window.c:1363 +#: src/rs01-window.c:867 src/rs02-window.c:1370 msgid "File cache" msgstr "" -#: src/rs01-window.c:887 src/rs02-window.c:1375 src/rs03-preferences.c:917 +#: src/rs01-window.c:879 src/rs02-window.c:1382 src/rs03-preferences.c:919 msgid "Use" msgstr "Använd" -#: src/rs01-window.c:916 src/rs02-window.c:1404 +#: src/rs01-window.c:908 src/rs02-window.c:1412 msgid "" "File cache\n" "\n" "dvdisaster optimizes access to the image and error correction files by maintaining its own cache. The preset of 32MiB is suitable for most systems." msgstr "" -#: src/rs02-common.c:580 src/rs02-common.c:592 src/rs02-verify.c:649 -#: src/rs03-common.c:643 +#: src/rs02-common.c:578 src/rs02-common.c:590 src/rs02-verify.c:628 +#: src/rs03-common.c:644 #, c-format msgid "Failed seeking to ecc header at %: %s\n" msgstr "Misslyckades med att söka till ecc-huvud på %: %s\n" -#: src/rs02-common.c:584 src/rs02-common.c:596 src/rs03-common.c:647 +#: src/rs02-common.c:582 src/rs02-common.c:594 src/rs03-common.c:648 #, c-format msgid "Failed writing ecc header at %: %s\n" msgstr "Misslyckades med att skriva ecc-huvud vid %: %s\n" -#: src/rs02-create.c:122 src/rs03-create.c:261 +#: src/rs02-create.c:111 src/rs03-create.c:250 #, c-format msgid "Aborted by user request! (partial ecc data removed from image)" msgstr "Avbröts på användarens begäran! (ej komplett ecc-data borttagen från avbild)" -#: src/rs02-create.c:156 src/rs03-create.c:318 +#: src/rs02-create.c:142 src/rs03-create.c:302 #, c-format msgid "" "Image \"%s\" already contains error correction information.\n" @@ -4226,11 +4212,11 @@ msgstr "" "Avbilden \"%s\" innehåller redan felkorrigeringsinformation.\n" "Kapar avbild till datadel (% sektorer).\n" -#: src/rs02-create.c:173 src/rs03-create.c:347 +#: src/rs02-create.c:157 src/rs03-create.c:329 msgid "Image size is now" msgstr "" -#: src/rs02-create.c:236 +#: src/rs02-create.c:218 msgid "" "Image contains unread(able) sectors.\n" "Error correction information can only be\n" @@ -4240,7 +4226,7 @@ msgstr "" "Felkorrigeringsinformation kan endast läggas till\n" "i kompletta (oskadade) avbilder.\n" -#: src/rs02-create.c:240 +#: src/rs02-create.c:222 #, c-format msgid "" "Sector % in the image is marked unreadable\n" @@ -4255,34 +4241,34 @@ msgid "" "appended to complete (undamaged) images.\n" msgstr "" -#: src/rs02-create.c:257 src/rs02-create.c:327 src/rs02-create.c:340 +#: src/rs02-create.c:239 src/rs02-create.c:304 src/rs02-create.c:314 #, c-format msgid "Preparing image (checksums, adding space): %3d%%" msgstr "" -#: src/rs02-create.c:294 src/rs02-create.c:304 src/rs02-fix.c:96 -#: src/rs03-create.c:454 src/rs03-create.c:465 src/rs03-fix.c:94 +#: src/rs02-create.c:273 src/rs02-create.c:283 src/rs02-fix.c:90 +#: src/rs03-create.c:438 src/rs03-create.c:449 src/rs03-fix.c:87 #, c-format msgid "Failed seeking to end of image: %s\n" msgstr "Misslyckades med att söka till slutet av avbild: %s\n" -#: src/rs02-create.c:298 src/rs02-create.c:321 src/rs02-fix.c:109 -#: src/rs03-create.c:439 src/rs03-fix.c:112 +#: src/rs02-create.c:277 src/rs02-create.c:298 src/rs02-fix.c:103 +#: src/rs03-create.c:423 src/rs03-fix.c:105 #, c-format msgid "Failed expanding the image: %s\n" msgstr "Misslyckades med att expandera avbilden: %s\n" -#: src/rs02-create.c:326 src/rs02-create.c:339 +#: src/rs02-create.c:303 src/rs02-create.c:313 #, c-format msgid "Preparing image (checksums taken from cache, adding space): %3d%%" msgstr "" -#: src/rs02-create.c:1071 src/rs03-create.c:1309 +#: src/rs02-create.c:1027 src/rs03-create.c:1267 msgid "Error correction data creation aborted" msgstr "Skapandet av felkorrigeringsdata avbröts" -#: src/rs02-create.c:1102 src/rs02-create.c:1122 src/rs03-create.c:1314 -#: src/rs03-create.c:1369 +#: src/rs02-create.c:1055 src/rs02-create.c:1073 src/rs03-create.c:1271 +#: src/rs03-create.c:1326 #, c-format msgid "" "Augmenting the image with error correction data.\n" @@ -4291,16 +4277,16 @@ msgstr "" "Utvidgar avbilden med felkorrigeringsdata.\n" "%s" -#: src/rs02-create.c:1103 src/rs03-create.c:1315 +#: src/rs02-create.c:1056 src/rs03-create.c:1272 msgid "- checking image -" msgstr "- kontrollerar avbild -" -#: src/rs02-create.c:1118 +#: src/rs02-create.c:1069 #, c-format msgid "Encoding with Method RS02: % MiB data, % MiB ecc (%d roots; %4.1f%% redundancy)." msgstr "Kodar med Metod RS02: % MiB data, % MiB ecc (%d rötter; %4.1f%% redundans)." -#: src/rs02-create.c:1127 +#: src/rs02-create.c:1077 #, c-format msgid "" "Augmenting image with Method RS02:\n" @@ -4309,7 +4295,7 @@ msgstr "" "Utvidgar avbild med Metod RS02:\n" " % MiB data, % MiB ecc (%d rötter; %4.1f%% redundans)." -#: src/rs02-create.c:1136 +#: src/rs02-create.c:1086 #, c-format msgid "" "Not enough space on medium left for error correction data.\n" @@ -4318,15 +4304,15 @@ msgid "" "not an option, please create a separate error correction file." msgstr "" -#: src/rs02-create.c:1146 src/rs03-create.c:1409 +#: src/rs02-create.c:1096 src/rs03-create.c:1367 #, c-format msgid "" "Using redundancies below 20% may not give\n" "the expected data loss protection.\n" msgstr "" -#: src/rs02-create.c:1178 src/rs02-create.c:1188 src/rs03-create.c:1448 -#: src/rs03-create.c:1476 +#: src/rs02-create.c:1128 src/rs02-create.c:1136 src/rs03-create.c:1406 +#: src/rs03-create.c:1429 #, c-format msgid "" "Image has been augmented with error correction data.\n" @@ -4335,21 +4321,21 @@ msgstr "" "Avbild har utvidgats med felkorrigeringsdata.\n" "Ny storlek på avbild är % MiB (% sektorer).\n" -#: src/rs02-fix.c:119 src/rs02-fix.c:130 src/rs03-fix.c:122 src/rs03-fix.c:133 +#: src/rs02-fix.c:108 src/rs02-fix.c:114 src/rs03-fix.c:110 src/rs03-fix.c:116 #, c-format msgid "Expanding image: %3d%%" msgstr "Expanderar avbild: %3d%%" -#: src/rs02-fix.c:198 src/rs03-fix.c:201 +#: src/rs02-fix.c:175 src/rs03-fix.c:176 msgid "Opening files..." msgstr "Öppnar filer..." -#: src/rs02-fix.c:224 +#: src/rs02-fix.c:200 #, c-format msgid "Image contains error correction data: Method RS02, %d roots, %4.1f%% redundancy." msgstr "Avbild innehåller felkorrigeringsdata: Metod RS02, %d rötter, %4.1f%% redundans." -#: src/rs02-fix.c:242 src/rs03-fix.c:309 +#: src/rs02-fix.c:218 src/rs03-fix.c:279 #, c-format msgid "" "The image file is %lld sectors longer as noted in the\n" @@ -4366,22 +4352,22 @@ msgstr "" "\n" "%s" -#: src/rs02-fix.c:499 src/rs03-fix.c:559 +#: src/rs02-fix.c:463 src/rs03-fix.c:518 #, c-format msgid "* Ecc block %: %3d unrepairable sectors: " msgstr "* Ecc-block %: %3d ej reparerbara sektorer: " -#: src/rs02-fix.c:721 +#: src/rs02-fix.c:685 #, c-format msgid "-> CRC-predicted error in sector %lld at byte %4d (value %02x '%c', expected %02x '%c')\n" msgstr "-> CRC-förutsett fel i sektor %lld vid byte %4d (värde %02x \"%c\", förväntade %02x \"%c\")\n" -#: src/rs02-fix.c:724 +#: src/rs02-fix.c:688 #, c-format msgid "-> Non-predicted error in sector %lld at byte %4d (value %02x '%c', expected %02x '%c')\n" msgstr "-> Icke förutsett fel i sektor %lld vid byte %4d (värde %02x \"%c\", förväntade %02x \"%c\")\n" -#: src/rs02-fix.c:851 src/rs03-fix.c:941 +#: src/rs02-fix.c:813 src/rs03-fix.c:901 #, c-format msgid "Repaired sectors: % (% data, % ecc)\n" msgstr "Reparerade sektorer: % (% data, % ecc)\n" @@ -4398,7 +4384,7 @@ msgstr "" msgid "Disable RS02 initialization in the preferences" msgstr "" -#: src/rs02-recognize.c:305 +#: src/rs02-recognize.c:303 msgid "" "Faster medium initialization\n" "\n" @@ -4407,108 +4393,108 @@ msgid "" "not augmented with RS02 error correction data." msgstr "" -#: src/rs02-verify.c:48 src/rs02-verify.c:200 src/rs02-verify.c:306 -#: src/rs03-verify.c:59 src/rs03-verify.c:240 src/rs03-verify.c:302 +#: src/rs02-verify.c:50 src/rs02-verify.c:202 src/rs02-verify.c:308 +#: src/rs03-verify.c:62 src/rs03-verify.c:243 src/rs03-verify.c:305 msgid "Data checksum:" msgstr "Datakontrollsumma:" -#: src/rs02-verify.c:49 src/rs02-verify.c:314 +#: src/rs02-verify.c:51 src/rs02-verify.c:316 msgid "CRC checksum:" msgstr "CRC-kontrollsumma:" -#: src/rs02-verify.c:208 +#: src/rs02-verify.c:210 msgid "Ecc headers:" msgstr "Ecc-huvuden:" -#: src/rs02-verify.c:216 src/rs03-verify.c:311 +#: src/rs02-verify.c:218 src/rs03-verify.c:314 msgid "Data section:" msgstr "Datasektion:" -#: src/rs02-verify.c:224 src/rs03-verify.c:320 +#: src/rs02-verify.c:226 src/rs03-verify.c:323 msgid "Crc section:" msgstr "" -#: src/rs02-verify.c:232 src/rs03-verify.c:329 +#: src/rs02-verify.c:234 src/rs03-verify.c:332 msgid "Ecc section:" msgstr "" -#: src/rs02-verify.c:255 +#: src/rs02-verify.c:257 msgid "Error correction data" msgstr "Felkorrigeringsdata" -#: src/rs02-verify.c:512 src/rs03-verify.c:457 +#: src/rs02-verify.c:506 src/rs03-verify.c:458 #, c-format msgid "- erasure counts : avg = %.1f; worst = %d per ecc block.\n" msgstr "" -#: src/rs02-verify.c:515 src/rs03-verify.c:460 +#: src/rs02-verify.c:509 src/rs03-verify.c:461 #, c-format msgid "- prognosis : % of % sectors recoverable (%d.%d%%)\n" msgstr "" -#: src/rs02-verify.c:522 src/rs03-verify.c:465 +#: src/rs02-verify.c:515 src/rs03-verify.c:464 msgid "Erasure counts:" msgstr "" -#: src/rs02-verify.c:523 src/rs03-verify.c:466 +#: src/rs02-verify.c:516 src/rs03-verify.c:465 msgid "Prognosis:" msgstr "" -#: src/rs02-verify.c:526 src/rs03-verify.c:469 +#: src/rs02-verify.c:519 src/rs03-verify.c:468 #, c-format msgid "avg = %.1f; worst = %d per ecc block." msgstr "" -#: src/rs02-verify.c:531 src/rs03-verify.c:474 +#: src/rs02-verify.c:524 src/rs03-verify.c:473 #, c-format msgid "% of % sectors recoverable (%d.%d%%)" msgstr "" -#: src/rs02-verify.c:593 src/rs03-verify.c:700 +#: src/rs02-verify.c:579 src/rs03-verify.c:670 msgid "Check aborted" msgstr "Kontroll avbruten" -#: src/rs02-verify.c:615 src/rs03-verify.c:747 +#: src/rs02-verify.c:597 src/rs03-verify.c:707 msgid "Checking the image file." msgstr "Kontrollerar avbildsfilen." -#: src/rs02-verify.c:616 +#: src/rs02-verify.c:598 msgid "Image contains error correction data." msgstr "Avbilden innehåller felkorrigeringsdata." -#: src/rs02-verify.c:631 src/rs03-verify.c:1041 +#: src/rs02-verify.c:611 src/rs03-verify.c:955 #, c-format msgid "Image file is % sectors shorter than expected." msgstr "Avbildsfil är % sektorer mindre än förväntat." -#: src/rs02-verify.c:632 src/rs03-verify.c:1044 +#: src/rs02-verify.c:612 src/rs03-verify.c:958 #, c-format msgid "Image file is % sectors longer than expected." msgstr "Avbildsfilen är % sektorer större än förväntat." -#: src/rs02-verify.c:653 +#: src/rs02-verify.c:632 #, c-format msgid "Failed reading ecc header at %: %s\n" msgstr "Misslyckades med att läsa ecc-huvud vid %: %s\n" -#: src/rs02-verify.c:697 +#: src/rs02-verify.c:677 #, c-format msgid "% ok, % CRC errors, % missing" msgstr "% ok, % CRC-fel, % saknas" -#: src/rs02-verify.c:837 src/rs02-verify.c:860 src/rs03-verify.c:1247 -#: src/rs03-verify.c:1290 +#: src/rs02-verify.c:812 src/rs02-verify.c:837 src/rs03-verify.c:1163 +#: src/rs03-verify.c:1208 #, c-format msgid "% sectors missing; % CRC errors" msgstr "% sektorer saknas; % CRC-fel" -#: src/rs02-verify.c:841 src/rs02-verify.c:845 src/rs02-verify.c:864 -#: src/rs02-verify.c:868 src/rs03-verify.c:1255 src/rs03-verify.c:1298 +#: src/rs02-verify.c:817 src/rs02-verify.c:822 src/rs02-verify.c:842 +#: src/rs02-verify.c:847 src/rs03-verify.c:1173 src/rs03-verify.c:1218 #, c-format msgid "% sectors missing" msgstr "% sektorer saknas" -#: src/rs02-verify.c:883 +#: src/rs02-verify.c:862 #, c-format msgid "" "- good image : all sectors present\n" @@ -4517,46 +4503,46 @@ msgstr "" "- bra avbild : alla sektor tillgängliga\n" "- data md5sum : %s\n" -#: src/rs02-verify.c:889 +#: src/rs02-verify.c:868 msgid "* suspicious image : contains damaged ecc headers\n" msgstr "" -#: src/rs02-verify.c:894 src/rs03-verify.c:1317 +#: src/rs02-verify.c:873 src/rs03-verify.c:1237 #, c-format msgid "* suspicious image : all sectors present, but % CRC errors\n" msgstr "* misstänkt avbild : alla sektorer tillgängliga men % CRC-fel\n" -#: src/rs02-verify.c:900 +#: src/rs02-verify.c:879 #, c-format msgid " ... ecc headers : % ok, % CRC errors, % missing\n" msgstr " ... ecc-huvuden : % ok, % CRC-fel, % saknas\n" -#: src/rs02-verify.c:902 src/rs03-verify.c:1323 +#: src/rs02-verify.c:881 src/rs03-verify.c:1243 #, c-format msgid " ... data section : % sectors missing; % CRC errors\n" msgstr " ... datasektion : % sektorer saknas; % CRC-fel\n" -#: src/rs02-verify.c:905 src/rs03-verify.c:1326 +#: src/rs02-verify.c:884 src/rs03-verify.c:1246 #, c-format msgid " ... data md5sum : %s\n" msgstr " ... data md5sum : %s\n" -#: src/rs02-verify.c:906 src/rs03-verify.c:1332 +#: src/rs02-verify.c:885 src/rs03-verify.c:1252 #, c-format msgid " ... crc section : % sectors missing\n" msgstr " ... crc-sektion : % sektorer saknas\n" -#: src/rs02-verify.c:907 src/rs03-verify.c:1334 +#: src/rs02-verify.c:886 src/rs03-verify.c:1254 #, c-format msgid " ... ecc section : % sectors missing\n" msgstr " ... ecc-sektion : % sektorer saknas\n" -#: src/rs02-verify.c:930 src/rs03-verify.c:1392 +#: src/rs02-verify.c:909 src/rs03-verify.c:1304 #, c-format msgid "Damaged image." msgstr "Skadad avbild." -#: src/rs02-verify.c:944 +#: src/rs02-verify.c:917 msgid "" "\n" "Error correction data: " @@ -4564,88 +4550,88 @@ msgstr "" "\n" "Felkorrigeringsdata: " -#: src/rs02-verify.c:1036 +#: src/rs02-verify.c:994 msgid "Please upgrade your version of dvdisaster!" msgstr "" -#: src/rs02-verify.c:1043 +#: src/rs02-verify.c:1001 #, c-format msgid "- medium sectors : % / % (good)\n" msgstr "" -#: src/rs02-verify.c:1063 +#: src/rs02-verify.c:1017 #, c-format msgid "Image size does not match recorded size." msgstr "Avbildens storlek stämmer inte överens med registrerad storlek." -#: src/rs02-verify.c:1078 +#: src/rs02-verify.c:1031 #, c-format msgid "- data md5sum : %s (good)\n" msgstr "- data md5sum : %s (bra)\n" -#: src/rs02-verify.c:1079 +#: src/rs02-verify.c:1032 #, c-format msgid "* data md5sum : %s (BAD)\n" msgstr "* data md5sum : %s (DÅLIG)\n" -#: src/rs02-verify.c:1092 src/rs03-verify.c:898 +#: src/rs02-verify.c:1043 src/rs03-verify.c:837 #, c-format msgid "- data md5sum : %s\n" msgstr "- data md5sum : %s\n" -#: src/rs02-verify.c:1106 +#: src/rs02-verify.c:1054 #, c-format msgid "- crc md5sum : %s (good)\n" msgstr "- crc md5sum : %s (bra)\n" -#: src/rs02-verify.c:1113 +#: src/rs02-verify.c:1058 #, c-format msgid "* crc md5sum : %s (BAD)\n" msgstr "* crc md5sum : %s (DÅLIG)\n" -#: src/rs02-verify.c:1123 +#: src/rs02-verify.c:1064 #, c-format msgid "- crc md5sum : %s\n" msgstr "- crc md5sum : %s\n" -#: src/rs02-verify.c:1144 +#: src/rs02-verify.c:1079 #, c-format msgid "* ecc md5sum : %s (BAD)\n" msgstr "* ecc md5sum : %s (DÅLIG)\n" -#: src/rs02-verify.c:1154 +#: src/rs02-verify.c:1085 #, c-format msgid "- ecc md5sum : %s\n" msgstr "- ecc md5sum : %s\n" -#: src/rs02-verify.c:1179 src/rs03-verify.c:952 +#: src/rs02-verify.c:1103 src/rs03-verify.c:877 #, c-format msgid "Good error correction data." msgstr "Bra felkorrigeringsdata." -#: src/rs02-verify.c:1183 src/rs03-verify.c:1409 +#: src/rs02-verify.c:1109 src/rs03-verify.c:1323 #, c-format msgid "Full data recovery is likely." msgstr "" -#: src/rs02-verify.c:1186 src/rs03-verify.c:1412 +#: src/rs02-verify.c:1114 src/rs03-verify.c:1328 #, c-format msgid "Full data recovery is NOT possible." msgstr "" -#: src/rs02-window.c:80 +#: src/rs02-window.c:76 msgid "1. Preparing image:" msgstr "1. Förbereder avbild:" -#: src/rs02-window.c:772 +#: src/rs02-window.c:770 msgid "Maximum image size" msgstr "" -#: src/rs02-window.c:784 +#: src/rs02-window.c:782 msgid "Using the smallest possible size from table" msgstr "" -#: src/rs02-window.c:784 +#: src/rs02-window.c:783 msgid "Use smallest possible size from following table (in sectors):" msgstr "" @@ -4662,15 +4648,15 @@ msgstr "" msgid "CD-R / CD-RW:" msgstr "CD-R / CD-RW:" -#: src/rs02-window.c:844 src/rs02-window.c:863 src/rs02-window.c:907 -#: src/rs02-window.c:926 src/rs02-window.c:970 src/rs02-window.c:989 -#: src/rs02-window.c:1033 src/rs02-window.c:1052 src/rs02-window.c:1095 -#: src/rs02-window.c:1114 src/rs02-window.c:1157 src/rs02-window.c:1176 -#: src/rs02-window.c:1221 src/rs02-window.c:1240 +#: src/rs02-window.c:844 src/rs02-window.c:863 src/rs02-window.c:908 +#: src/rs02-window.c:927 src/rs02-window.c:972 src/rs02-window.c:991 +#: src/rs02-window.c:1036 src/rs02-window.c:1055 src/rs02-window.c:1099 +#: src/rs02-window.c:1118 src/rs02-window.c:1162 src/rs02-window.c:1181 +#: src/rs02-window.c:1227 src/rs02-window.c:1246 msgid "query medium" msgstr "" -#: src/rs02-window.c:875 +#: src/rs02-window.c:876 #, c-format msgid "" "CD medium size\n" @@ -4684,11 +4670,11 @@ msgid "" "Even if this limit is not reached the augmented image may be a few sectors smaller than specified for technical reasons." msgstr "" -#: src/rs02-window.c:893 +#: src/rs02-window.c:894 msgid "DVD 1 layer:" msgstr "" -#: src/rs02-window.c:938 +#: src/rs02-window.c:940 #, c-format msgid "" "Single layer DVD medium size\n" @@ -4702,11 +4688,11 @@ msgid "" "Even if this limit is not reached the augmented image may be a few sectors smaller than specified for technical reasons." msgstr "" -#: src/rs02-window.c:956 +#: src/rs02-window.c:958 msgid "DVD 2 layers:" msgstr "" -#: src/rs02-window.c:1001 +#: src/rs02-window.c:1004 #, c-format msgid "" "Two layered DVD medium size\n" @@ -4720,11 +4706,11 @@ msgid "" "Even if this limit is not reached the augmented image may be a few sectors smaller than specified for technical reasons." msgstr "" -#: src/rs02-window.c:1019 +#: src/rs02-window.c:1022 msgid "BD 1 layer:" msgstr "" -#: src/rs02-window.c:1064 +#: src/rs02-window.c:1068 #, c-format msgid "" "Single layer BD medium size\n" @@ -4738,11 +4724,11 @@ msgid "" "Even if this limit is not reached the augmented image may be a few sectors smaller than specified for technical reasons." msgstr "" -#: src/rs02-window.c:1081 +#: src/rs02-window.c:1085 msgid "BD 2 layers:" msgstr "" -#: src/rs02-window.c:1126 +#: src/rs02-window.c:1131 #, c-format msgid "" "Two layered BD medium size\n" @@ -4756,11 +4742,11 @@ msgid "" "Even if this limit is not reached the augmented image may be a few sectors smaller than specified for technical reasons." msgstr "" -#: src/rs02-window.c:1143 +#: src/rs02-window.c:1148 msgid "BDXL 3 layers:" msgstr "" -#: src/rs02-window.c:1188 +#: src/rs02-window.c:1194 #, c-format msgid "" "Three layered BDXL medium size\n" @@ -4774,11 +4760,11 @@ msgid "" "Even if this limit is not reached the augmented image may be a few sectors smaller than specified for technical reasons." msgstr "" -#: src/rs02-window.c:1207 +#: src/rs02-window.c:1213 msgid "BDXL 4 layers:" msgstr "" -#: src/rs02-window.c:1252 +#: src/rs02-window.c:1258 #, c-format msgid "" "Four layered BDXL medium size\n" @@ -4792,11 +4778,11 @@ msgid "" "Even if this limit is not reached the augmented image may be a few sectors smaller than specified for technical reasons." msgstr "" -#: src/rs02-window.c:1314 +#: src/rs02-window.c:1320 msgid "sectors." msgstr "sektorer." -#: src/rs02-window.c:1327 +#: src/rs02-window.c:1334 #, c-format msgid "" "Use at most ... sectors\n" @@ -4808,47 +4794,47 @@ msgid "" "Even if this limit is not reached the augmented image may be a few sectors smaller than specified for technical reasons." msgstr "" -#: src/rs03-common.c:440 +#: src/rs03-common.c:441 #, c-format msgid "Image file %s not present." msgstr "Avbildsfil %s inte tillgänglig." -#: src/rs03-common.c:457 +#: src/rs03-common.c:458 #, c-format msgid "Redundancy %4.1f%% out of useful range [3.2%%..200%%]" msgstr "" -#: src/rs03-common.c:487 +#: src/rs03-common.c:488 #, c-format msgid "Redundancy %d out of useful range [8..170]." msgstr "" -#: src/rs03-common.c:525 +#: src/rs03-common.c:526 #, c-format msgid "Medium size smaller than image size (% < %)" msgstr "" -#: src/rs03-create.c:434 +#: src/rs03-create.c:418 #, c-format msgid "Failed expanding the ecc file: %s\n" msgstr "" -#: src/rs03-create.c:435 +#: src/rs03-create.c:419 #, c-format msgid "Preparing ecc file: %3d%%" msgstr "" -#: src/rs03-create.c:440 +#: src/rs03-create.c:424 #, c-format msgid "Preparing image: %3d%%" msgstr "" -#: src/rs03-create.c:688 +#: src/rs03-create.c:661 #, c-format msgid "Failed mmap()ing layer %d: %s\n" msgstr "" -#: src/rs03-create.c:717 +#: src/rs03-create.c:690 #, c-format msgid "" "Incomplete image\n" @@ -4860,7 +4846,7 @@ msgid "" "Exiting and removing partial error correction data." msgstr "" -#: src/rs03-create.c:725 +#: src/rs03-create.c:698 msgid "" "\n" "This image was probably mastered from defective source(s).\n" @@ -4868,44 +4854,44 @@ msgid "" "\n" msgstr "" -#: src/rs03-create.c:936 +#: src/rs03-create.c:902 msgid "CPU bound" msgstr "" -#: src/rs03-create.c:940 +#: src/rs03-create.c:906 msgid "I/O bound" msgstr "" -#: src/rs03-create.c:1149 +#: src/rs03-create.c:1113 #, c-format msgid "%5.2fMiB/s current" msgstr "" -#: src/rs03-create.c:1202 +#: src/rs03-create.c:1164 #, c-format msgid "%d threads with %s encoding and %s I/O" msgstr "" -#: src/rs03-create.c:1364 +#: src/rs03-create.c:1321 #, c-format msgid "Encoding with Method RS03: % MiB data, % MiB ecc (%d roots; %4.1f%% redundancy)." msgstr "" -#: src/rs03-create.c:1383 +#: src/rs03-create.c:1341 #, c-format msgid "" "Augmenting image with Method RS03 [%d threads, %s, %s I/O]:\n" "% MiB data, % MiB ecc (%d roots; %4.1f%% redundancy)." msgstr "" -#: src/rs03-create.c:1388 +#: src/rs03-create.c:1346 #, c-format msgid "" "Creating the error correction file with Method RS03 [%d threads, %s, %s I/O]:\n" "% MiB data, % MiB ecc (%d roots; %4.1f%% redundancy)." msgstr "" -#: src/rs03-create.c:1399 +#: src/rs03-create.c:1357 #, c-format msgid "" "Not enough space on medium left for error correction data.\n" @@ -4914,124 +4900,124 @@ msgid "" "an option, please create a separate error correction file." msgstr "" -#: src/rs03-create.c:1425 +#: src/rs03-create.c:1383 msgid "" "BD-R size with no defect management enabled,\n" "remember it should you need to repair this image later!\n" msgstr "" -#: src/rs03-create.c:1459 +#: src/rs03-create.c:1417 #, c-format msgid "Avg performance: %5.2fs (%5.2fMiB/s) total\n" msgstr "" -#: src/rs03-create.c:1463 +#: src/rs03-create.c:1420 #, c-format msgid "%5.2fMiB/s average" msgstr "" -#: src/rs03-create.c:1465 +#: src/rs03-create.c:1422 #, c-format msgid "%d times CPU bound; %d times I/O bound" msgstr "" -#: src/rs03-fix.c:243 +#: src/rs03-fix.c:217 #, c-format msgid "Error correction file using Method RS03, %d roots, %4.1f%% redundancy." msgstr "" -#: src/rs03-fix.c:247 +#: src/rs03-fix.c:221 #, c-format msgid "Image contains error correction data: Method RS03, %d roots, %4.1f%% redundancy." msgstr "" -#: src/rs03-fix.c:725 src/rs03-fix.c:849 +#: src/rs03-fix.c:684 src/rs03-fix.c:808 msgid "; ecc file: " msgstr "" -#: src/rs03-fix.c:785 +#: src/rs03-fix.c:744 #, c-format msgid "-> CRC-predicted error in sector %lld%s at byte %4d (value %02x '%c', expected %02x '%c')\n" msgstr "" -#: src/rs03-fix.c:788 +#: src/rs03-fix.c:747 #, c-format msgid "-> Non-predicted error in sector %lld%s at byte %4d (value %02x '%c', expected %02x '%c')\n" msgstr "" -#: src/rs03-fix.c:881 +#: src/rs03-fix.c:840 #, c-format msgid "Failed seeking to sector % in ecc file [%s]: %s" msgstr "" -#: src/rs03-fix.c:886 +#: src/rs03-fix.c:845 #, c-format msgid "" "could not write ecc file sector %:\n" "%s" msgstr "" -#: src/rs03-preferences.c:345 src/rs03-preferences.c:788 -#: src/rs03-preferences.c:794 src/rs03-preferences.c:795 +#: src/rs03-preferences.c:347 src/rs03-preferences.c:790 +#: src/rs03-preferences.c:796 src/rs03-preferences.c:797 #, c-format msgid "%d sectors" msgstr "" -#: src/rs03-preferences.c:364 src/rs03-preferences.c:904 -#: src/rs03-preferences.c:910 src/rs03-preferences.c:911 +#: src/rs03-preferences.c:366 src/rs03-preferences.c:906 +#: src/rs03-preferences.c:912 src/rs03-preferences.c:913 #, c-format msgid "%d threads" msgstr "" -#: src/rs03-preferences.c:487 src/rs03-preferences.c:494 +#: src/rs03-preferences.c:489 src/rs03-preferences.c:496 msgid "Error correction data storage" msgstr "" -#: src/rs03-preferences.c:495 +#: src/rs03-preferences.c:497 msgid "Store ECC data in: " msgstr "" -#: src/rs03-preferences.c:508 +#: src/rs03-preferences.c:510 msgid "File" msgstr "" -#: src/rs03-preferences.c:535 +#: src/rs03-preferences.c:537 msgid "" "Error correction data storage\n" "\n" "Select between two ways of storing the error correction information:\n" msgstr "" -#: src/rs03-preferences.c:540 +#: src/rs03-preferences.c:542 msgid "" "Augmented image (recommended)\n" "The error correction data will be stored along with the user data on the same medium. This requires the creation of an image file prior to writing the medium. The error correction data will be appended to that image and fill up the remaining space.\n" "Damaged sectors in the error correction information reduce the data recovery capacity, but do not make recovery impossible - a second medium for keeping or protecting the error correction information is not required.\n" msgstr "" -#: src/rs03-preferences.c:550 +#: src/rs03-preferences.c:552 msgid "" "Error correction file\n" "Error correction files are the only way of protecting existing media as they can be stored somewhere else. They are kept on a separate medium which must also be protected by dvdisaster. This prevents from losing the error correction files in case of a medium defect.\n" msgstr "" -#: src/rs03-preferences.c:570 +#: src/rs03-preferences.c:572 msgid "no settings for augmented images" msgstr "" -#: src/rs03-preferences.c:781 +#: src/rs03-preferences.c:783 msgid "I/O parameters" msgstr "" -#: src/rs03-preferences.c:789 +#: src/rs03-preferences.c:791 msgid "Sector preloading" msgstr "" -#: src/rs03-preferences.c:801 +#: src/rs03-preferences.c:803 msgid "Preload" msgstr "" -#: src/rs03-preferences.c:829 +#: src/rs03-preferences.c:831 msgid "" "Sector preloading\n" "\n" @@ -5043,23 +5029,23 @@ msgid "" "A preload value of n will used approx. n MiB of RAM." msgstr "" -#: src/rs03-preferences.c:841 +#: src/rs03-preferences.c:843 msgid "I/O strategy" msgstr "" -#: src/rs03-preferences.c:842 +#: src/rs03-preferences.c:844 msgid "I/O strategy: " msgstr "" -#: src/rs03-preferences.c:855 +#: src/rs03-preferences.c:857 msgid "read/write" msgstr "" -#: src/rs03-preferences.c:861 +#: src/rs03-preferences.c:863 msgid "memory mapped" msgstr "" -#: src/rs03-preferences.c:881 +#: src/rs03-preferences.c:883 msgid "" "I/O strategy\n" "\n" @@ -5070,11 +5056,11 @@ msgid "" "The memory mapped option uses the kernel's memory mapping scheme for direct access to the image file. This has the advantage of minimal overhead, but may be adversely affected by poor caching and preloading decisions made by the kernel (since the kernel does not know what dvdisaster is going to do with the data). This scheme performs well when encoding in a RAM-based file system (such as /dev/shm on GNU/Linux) and on very fast media with low latency such as SSDs." msgstr "" -#: src/rs03-preferences.c:901 src/rs03-preferences.c:905 +#: src/rs03-preferences.c:903 src/rs03-preferences.c:907 msgid "Multithreading" msgstr "" -#: src/rs03-preferences.c:946 +#: src/rs03-preferences.c:948 msgid "" "Multithreading\n" "\n" @@ -5085,35 +5071,35 @@ msgid "" "Performance will not scale linearly with the number of CPU cores. Hard disk performance is more limiting than raw CPU power. When using 4 cores or more, memory bandwidth may also affect performance." msgstr "" -#: src/rs03-preferences.c:961 src/rs03-preferences.c:968 +#: src/rs03-preferences.c:963 src/rs03-preferences.c:970 msgid "Encoding algorithm" msgstr "" -#: src/rs03-preferences.c:969 +#: src/rs03-preferences.c:971 msgid "Use: " msgstr "" -#: src/rs03-preferences.c:982 +#: src/rs03-preferences.c:984 msgid "32bit" msgstr "" -#: src/rs03-preferences.c:988 +#: src/rs03-preferences.c:990 msgid "64bit" msgstr "" -#: src/rs03-preferences.c:995 +#: src/rs03-preferences.c:997 msgid "SSE2" msgstr "" -#: src/rs03-preferences.c:1002 +#: src/rs03-preferences.c:1004 msgid "AltiVec" msgstr "" -#: src/rs03-preferences.c:1009 +#: src/rs03-preferences.c:1011 msgid "auto" msgstr "" -#: src/rs03-preferences.c:1036 +#: src/rs03-preferences.c:1038 msgid "" "Encoding algorithm\n" "\n" @@ -5123,139 +5109,153 @@ msgid "" "Available extensions are SSE2 for x86 based processors and AltiVec on PowerPC processors. These extensions encode with 128bit wide operations and will usually provide the fastest encoding variant. If \"auto\" is selected, the SSE2/AltiVec algorithms will be selected if the processor supports them; otherwise the 64bit algorithm will be used." msgstr "" -#: src/rs03-recognize.c:593 +#: src/rs03-recognize.c:595 #, c-format msgid "Failed seeking to sector %lld in image: %s" msgstr "Misslyckades med att söka fram till sektor %lld i avbild: %s" -#: src/rs03-recognize.c:598 +#: src/rs03-recognize.c:600 #, c-format msgid "Failed reading sector %lld in image: %s" msgstr "Misslyckades med att läsa sektor %lld i avbild: %s" -#: src/rs03-verify.c:193 +#: src/rs03-verify.c:196 msgid "Error correction properties" msgstr "" -#: src/rs03-verify.c:204 +#: src/rs03-verify.c:207 msgid "Type:" msgstr "" -#: src/rs03-verify.c:273 +#: src/rs03-verify.c:276 msgid "Data integrity" msgstr "" -#: src/rs03-verify.c:338 src/rs03-verify.c:1353 +#: src/rs03-verify.c:341 src/rs03-verify.c:1272 msgid "Ecc block test:" msgstr "" -#: src/rs03-verify.c:503 src/rs03-verify.c:736 src/rs03-verify.c:1274 +#: src/rs03-verify.c:498 src/rs03-verify.c:699 src/rs03-verify.c:1193 msgid "Checking the image and error correction files." msgstr "" -#: src/rs03-verify.c:504 +#: src/rs03-verify.c:499 msgid "- Checking ecc blocks (deep verify) -" msgstr "" -#: src/rs03-verify.c:521 +#: src/rs03-verify.c:513 #, c-format msgid "Out of memory; try reducing sector prefetch!" msgstr "" -#: src/rs03-verify.c:524 +#: src/rs03-verify.c:515 msgid "* Ecc block test : out of memory; try reducing sector prefetch!\n" msgstr "" -#: src/rs03-verify.c:609 src/rs03-verify.c:1241 +#: src/rs03-verify.c:596 src/rs03-verify.c:1157 #, c-format msgid "%d%% tested" msgstr "" -#: src/rs03-verify.c:612 +#: src/rs03-verify.c:598 #, c-format msgid "- Ecc block test : %d%% tested" msgstr "" -#: src/rs03-verify.c:620 +#: src/rs03-verify.c:603 #, c-format msgid "% good, % bad; %d%% tested" msgstr "" -#: src/rs03-verify.c:623 +#: src/rs03-verify.c:605 #, c-format msgid "* Ecc block test : % good, % bad; %d%% tested" msgstr "" -#: src/rs03-verify.c:635 +#: src/rs03-verify.c:614 msgid "pass" msgstr "" -#: src/rs03-verify.c:638 +#: src/rs03-verify.c:616 msgid "- Ecc block test : pass\n" msgstr "" -#: src/rs03-verify.c:645 +#: src/rs03-verify.c:620 #, c-format msgid "% good, % bad; % bad sub blocks" msgstr "" -#: src/rs03-verify.c:648 +#: src/rs03-verify.c:622 #, c-format msgid "* Ecc block test : % good, % bad; % bad sub blocks\n" msgstr "" -#: src/rs03-verify.c:740 +#: src/rs03-verify.c:688 +#, c-format +msgid "" +"\n" +"%s present.\n" +msgstr "" + +#: src/rs03-verify.c:691 +#, c-format +msgid "" +"\n" +"%s not present.\n" +msgstr "" + +#: src/rs03-verify.c:702 #, c-format msgid "%s present.\n" msgstr "" -#: src/rs03-verify.c:760 +#: src/rs03-verify.c:719 msgid "" "\n" "Error correction properties:\n" msgstr "" -#: src/rs03-verify.c:772 +#: src/rs03-verify.c:731 #, c-format msgid "Ecc file is % sectors shorter than expected." msgstr "" -#: src/rs03-verify.c:774 +#: src/rs03-verify.c:733 #, c-format msgid "Ecc file is % sectors longer than expected." msgstr "" -#: src/rs03-verify.c:782 +#: src/rs03-verify.c:739 #, c-format msgid "* Warning : %s\n" msgstr "" -#: src/rs03-verify.c:791 +#: src/rs03-verify.c:748 msgid "- type : Error correction file\n" msgstr "" -#: src/rs03-verify.c:792 +#: src/rs03-verify.c:749 msgid "- type : Augmented image\n" msgstr "" -#: src/rs03-verify.c:797 +#: src/rs03-verify.c:752 msgid "Error correction file" msgstr "" -#: src/rs03-verify.c:798 +#: src/rs03-verify.c:755 msgid "Augmented image" msgstr "" -#: src/rs03-verify.c:830 src/rs03-verify.c:842 +#: src/rs03-verify.c:783 src/rs03-verify.c:791 msgid "- created by : dvdisaster" msgstr "" -#: src/rs03-verify.c:864 +#: src/rs03-verify.c:810 #, c-format msgid "- requires : dvdisaster-%s\n" msgstr "" -#: src/rs03-verify.c:872 +#: src/rs03-verify.c:815 #, c-format msgid "" "* requires : dvdisaster-%s (BAD)\n" @@ -5263,147 +5263,147 @@ msgid "" "* : Please upgrade dvdisaster.\n" msgstr "" -#: src/rs03-verify.c:896 +#: src/rs03-verify.c:835 msgid "none available" msgstr "" -#: src/rs03-verify.c:962 +#: src/rs03-verify.c:886 msgid "" "\n" "Data integrity:\n" msgstr "" -#: src/rs03-verify.c:991 +#: src/rs03-verify.c:910 #, c-format msgid "% in image; % in ecc file" msgstr "" -#: src/rs03-verify.c:994 +#: src/rs03-verify.c:914 #, c-format msgid "% sectors + %d bytes in image; % in ecc file" msgstr "" -#: src/rs03-verify.c:1000 +#: src/rs03-verify.c:919 #, c-format msgid "- sectors : % in image; " msgstr "" -#: src/rs03-verify.c:1001 +#: src/rs03-verify.c:920 #, c-format msgid "- sectors : % sectors + %d bytes in image; " msgstr "" -#: src/rs03-verify.c:1003 +#: src/rs03-verify.c:922 #, c-format msgid "% in ecc file\n" msgstr "" -#: src/rs03-verify.c:1009 +#: src/rs03-verify.c:925 #, c-format msgid "% total / % data" msgstr "" -#: src/rs03-verify.c:1012 +#: src/rs03-verify.c:927 #, c-format msgid "- medium sectors : % total / % data\n" msgstr "" -#: src/rs03-verify.c:1029 +#: src/rs03-verify.c:943 #, c-format msgid "%s (%s expected)" msgstr "" -#: src/rs03-verify.c:1034 +#: src/rs03-verify.c:948 #, c-format msgid "Image file is %d bytes shorter than expected." msgstr "" -#: src/rs03-verify.c:1036 +#: src/rs03-verify.c:950 #, c-format msgid "Image file is %d bytes longer than expected." msgstr "" -#: src/rs03-verify.c:1050 +#: src/rs03-verify.c:963 #, c-format msgid "* sectors : %s (%s expected); % sectors in ecc file\n" msgstr "" -#: src/rs03-verify.c:1053 +#: src/rs03-verify.c:966 #, c-format msgid "* medium sectors : %s (%s expected)\n" msgstr "" -#: src/rs03-verify.c:1077 +#: src/rs03-verify.c:994 #, c-format msgid "Failed seeking to start of ecc file: %s\n" msgstr "" -#: src/rs03-verify.c:1177 +#: src/rs03-verify.c:1093 msgid " (in ecc file)" msgstr "" -#: src/rs03-verify.c:1185 +#: src/rs03-verify.c:1101 #, c-format msgid "* missing sector : %%s\n" msgstr "" -#: src/rs03-verify.c:1186 +#: src/rs03-verify.c:1102 #, c-format msgid "* missing sectors : % - %%s\n" msgstr "" -#: src/rs03-verify.c:1251 src/rs03-verify.c:1294 +#: src/rs03-verify.c:1168 src/rs03-verify.c:1213 #, c-format msgid "% sectors missing; % signature errors" msgstr "" -#: src/rs03-verify.c:1277 +#: src/rs03-verify.c:1196 msgid "Error correction file:" msgstr "" -#: src/rs03-verify.c:1311 +#: src/rs03-verify.c:1231 #, c-format msgid "" "- good image/file : all sectors present\n" "- data md5sum : %s\n" msgstr "" -#: src/rs03-verify.c:1315 +#: src/rs03-verify.c:1235 #, c-format msgid "* BAD image/file : % sectors missing\n" msgstr "" -#: src/rs03-verify.c:1329 +#: src/rs03-verify.c:1249 #, c-format msgid " ... crc section : % sectors missing; % signature errors\n" msgstr "" -#: src/rs03-verify.c:1362 +#: src/rs03-verify.c:1277 #, c-format msgid "Skipped; not useful on known defective image" msgstr "" -#: src/rs03-verify.c:1366 +#: src/rs03-verify.c:1280 msgid "* Ecc block test : skipped; not useful on defective image\n" msgstr "" -#: src/rs03-window.c:85 +#: src/rs03-window.c:81 msgid "1. Reserving space:" msgstr "" -#: src/rs03-window.c:104 +#: src/rs03-window.c:100 msgid "Encoder info:" msgstr "" -#: src/rs03-window.c:113 +#: src/rs03-window.c:109 msgid "Performance:" msgstr "" -#: src/rs03-window.c:122 +#: src/rs03-window.c:118 msgid "State:" msgstr "" -#: src/scsi-freebsd.c:47 src/scsi-linux.c:51 +#: src/scsi-freebsd.c:49 src/scsi-linux.c:53 msgid "" "Can not access /dev for devices\n" "No drives will be pre-selected.\n" @@ -5411,13 +5411,13 @@ msgstr "" "Kan inte komma åt /dev efter enheter\n" "Inga enheter kommer att vara förvalda.\n" -#: src/scsi-freebsd.c:102 src/scsi-linux.c:91 src/scsi-win32.c:84 +#: src/scsi-freebsd.c:104 src/scsi-linux.c:93 src/scsi-win32.c:84 msgid "" "No optical drives found in /dev.\n" "No drives will be pre-selected.\n" msgstr "" -#: src/scsi-layer.c:104 +#: src/scsi-layer.c:106 #, c-format msgid "" "Can open %s, but INQUIRY fails.\n" @@ -5430,27 +5430,27 @@ msgstr "" "och försöker komma åt den via /dev/cdrom eller /dev/hd?.\n" "Använd antingen /dev/scd? eller /dev/sr? istället, eller inaktivera ide-scsi-emulering.\n" -#: src/scsi-layer.c:112 +#: src/scsi-layer.c:114 #, c-format msgid "INQUIRY failed. Something is wrong with drive %s.\n" msgstr "FÖRFRÅGAN misslyckades. Någonting är fel med enhet %s.\n" -#: src/scsi-layer.c:141 +#: src/scsi-layer.c:143 #, c-format msgid "Device %s (%s) is not an optical drive." msgstr "Enhet %s (%s) är inte en cd-rom-enhet." -#: src/scsi-layer.c:142 +#: src/scsi-layer.c:144 #, c-format msgid "Device %s (%s) is a hard disk." msgstr "Enhet %s (%s) är en hårddisk." -#: src/scsi-layer.c:433 +#: src/scsi-layer.c:435 #, c-format msgid "Incomplete %s" msgstr "" -#: src/scsi-layer.c:471 +#: src/scsi-layer.c:473 #, c-format msgid "" "%s\n" @@ -5459,16 +5459,16 @@ msgstr "" "%s\n" "Kunde inte fråga efter längd på innehållsförteckning.\n" -#: src/scsi-layer.c:476 +#: src/scsi-layer.c:478 msgid "blank" msgstr "" -#: src/scsi-layer.c:491 src/scsi-layer.c:552 +#: src/scsi-layer.c:493 src/scsi-layer.c:554 #, c-format msgid "TOC info too long (%d), probably multisession.\n" msgstr "Innehållsförteckning för lång (%d), antagligen multisession.\n" -#: src/scsi-layer.c:506 +#: src/scsi-layer.c:508 #, c-format msgid "" "%s\n" @@ -5477,7 +5477,7 @@ msgstr "" "%s\n" "Kunde inte läsa innehållsförteckning (TOC).\n" -#: src/scsi-layer.c:533 +#: src/scsi-layer.c:535 #, c-format msgid "" "%s\n" @@ -5486,12 +5486,12 @@ msgstr "" "%s\n" "Kunde inte fråga efter fullständig innehållsförteckning (TOC).\n" -#: src/scsi-layer.c:546 +#: src/scsi-layer.c:548 #, c-format msgid "TOC info too short, length %d.\n" msgstr "Innehållsförteckning för kort, längd %d.\n" -#: src/scsi-layer.c:568 +#: src/scsi-layer.c:570 #, c-format msgid "" "%s\n" @@ -5500,7 +5500,7 @@ msgstr "" "%s\n" "Kunde inte läsa fullständig innehållsförteckning (TOC).\n" -#: src/scsi-layer.c:577 +#: src/scsi-layer.c:579 #, c-format msgid "" "\n" @@ -5509,11 +5509,11 @@ msgstr "" "\n" "Oväntat format på innehållsförteckning (längd %d):\n" -#: src/scsi-layer.c:585 +#: src/scsi-layer.c:587 msgid "Consider sending a bug report.\n" msgstr "Överväg att skicka in en felrapport.\n" -#: src/scsi-layer.c:638 +#: src/scsi-layer.c:643 #, c-format msgid "" "%s\n" @@ -5522,12 +5522,12 @@ msgstr "" "%s\n" "Kunde inte fråga efter dvdstrukturlängd.\n" -#: src/scsi-layer.c:650 +#: src/scsi-layer.c:655 #, c-format msgid "Could not query dvd physical structure - implausible packet length %d\n" msgstr "Kunde inte fråga efter dvd:ns fysiska struktur - osannolik paketlängd %d\n" -#: src/scsi-layer.c:668 +#: src/scsi-layer.c:673 #, c-format msgid "" "%s\n" @@ -5536,26 +5536,26 @@ msgstr "" "%s\n" "Kunde inte fråga efter fysiska dvdstruktur.\n" -#: src/scsi-layer.c:697 src/scsi-layer.c:707 +#: src/scsi-layer.c:702 src/scsi-layer.c:712 #, c-format msgid "READ DVD STRUCTURE: implausible medium size, %-%=% sectors\n" msgstr "" -#: src/scsi-layer.c:976 +#: src/scsi-layer.c:981 #, c-format msgid "" "%s\n" "Could not query BD disc structure length.\n" msgstr "" -#: src/scsi-layer.c:1000 +#: src/scsi-layer.c:1005 #, c-format msgid "" "%s\n" "Could not query BD disc structure.\n" msgstr "" -#: src/scsi-layer.c:1704 +#: src/scsi-layer.c:1709 #, c-format msgid "" "%s\n" @@ -5564,12 +5564,12 @@ msgstr "" "%s\n" "Kunde inte fråga efter dvdstrukturlängd för formatkod 1.\n" -#: src/scsi-layer.c:1715 +#: src/scsi-layer.c:1720 #, c-format msgid "Could not query dvd copyright info - implausible packet length %d\n" msgstr "Kunde inte fråga efter dvd:ns copyrightinformation - osannolik paketlängd %d\n" -#: src/scsi-layer.c:1730 +#: src/scsi-layer.c:1735 #, c-format msgid "" "%s\n" @@ -5578,23 +5578,23 @@ msgstr "" "%s\n" "Kunde inte fråga efter copyrightinformation.\n" -#: src/scsi-layer.c:1791 +#: src/scsi-layer.c:1796 msgid "is undecideable because of read error" msgstr "är inte bestämt på grund av läsfel" -#: src/scsi-layer.c:1797 +#: src/scsi-layer.c:1802 msgid "looks GOOD" msgstr "ser BRA UT" -#: src/scsi-layer.c:1803 +#: src/scsi-layer.c:1808 msgid "gives unformatted size (UNUSABLE)" msgstr "ger oformaterad storlek (EJ ANVÄNDBAR)" -#: src/scsi-layer.c:1808 +#: src/scsi-layer.c:1813 msgid "is UNUSABLE" msgstr "är OANVÄNDBAR" -#: src/scsi-layer.c:1834 +#: src/scsi-layer.c:1839 #, c-format msgid "" "%s\n" @@ -5603,12 +5603,12 @@ msgstr "" "%s\n" "Kunde inte fråga efter mediumstorlek.\n" -#: src/scsi-layer.c:1856 +#: src/scsi-layer.c:1861 #, c-format msgid "READ CAPACITY: implausible medium size, % sectors\n" msgstr "" -#: src/scsi-layer.c:1932 +#: src/scsi-layer.c:1937 #, c-format msgid "" "Different media sizes depending on query method:\n" @@ -5617,7 +5617,7 @@ msgid "" "\n" msgstr "" -#: src/scsi-layer.c:1937 +#: src/scsi-layer.c:1942 msgid "" "Evaluation of returned medium sizes:\n" "\n" @@ -5625,15 +5625,15 @@ msgstr "" "Evaluering av returnerade mediumstorlekar:\n" "\n" -#: src/scsi-layer.c:1992 +#: src/scsi-layer.c:1997 msgid "Using value from READ CAPACITY" msgstr "Använder värde från LÄSKAPACITET" -#: src/scsi-layer.c:1996 +#: src/scsi-layer.c:2001 msgid "Using value from READ DVD STRUCTURE" msgstr "Använder värde från LÄS DVDSTRUKTUR" -#: src/scsi-layer.c:2006 +#: src/scsi-layer.c:2011 #, c-format msgid "" "FAILED to determine image size.\n" @@ -5644,7 +5644,7 @@ msgstr "" "Använder ett mindre värde eftersom det passar för >90%% av alla enheter,\n" "men FORTSÄTT PÅ EGEN RISK (avbilden kan bli felaktig/oanvändbar)" -#: src/scsi-layer.c:2011 +#: src/scsi-layer.c:2016 #, c-format msgid "" "Final decision: %s\n" @@ -5653,7 +5653,7 @@ msgstr "" "Slutligt beslut: %s\n" "\n" -#: src/scsi-layer.c:2019 +#: src/scsi-layer.c:2024 msgid "" "Failed to determine image size.\n" "Try using a different drive." @@ -5661,51 +5661,51 @@ msgstr "" "Misslyckades med att fastställa avbildsstorlek.\n" "Försök använda en annan enhet." -#: src/scsi-layer.c:2146 src/scsi-layer.c:2172 +#: src/scsi-layer.c:2151 src/scsi-layer.c:2177 #, c-format msgid "" "%s\n" "Could not load/unload the medium.\n" msgstr "" -#: src/scsi-layer.c:2162 +#: src/scsi-layer.c:2167 #, c-format msgid "" "%s\n" "Could not unlock the medium.\n" msgstr "" -#: src/scsi-layer.c:2228 +#: src/scsi-layer.c:2230 #, c-format msgid "Waiting 10 seconds for drive: %d\n" msgstr "" -#: src/scsi-layer.c:2511 +#: src/scsi-layer.c:2505 #, c-format msgid "Sectors % - %: %s\n" msgstr "" -#: src/scsi-layer.c:2525 +#: src/scsi-layer.c:2519 #, c-format msgid "Sector %, try %d: %s Sector returned: %d.\n" msgstr "" -#: src/scsi-layer.c:2531 +#: src/scsi-layer.c:2525 #, c-format msgid "Sector %, try %d: %s\n" msgstr "" -#: src/scsi-layer.c:2542 +#: src/scsi-layer.c:2536 #, c-format msgid "Sector %, try %d: success\n" msgstr "" -#: src/scsi-layer.c:2614 +#: src/scsi-layer.c:2608 #, c-format msgid "Device %s: no medium present\n" msgstr "" -#: src/scsi-layer.c:2619 +#: src/scsi-layer.c:2613 #, c-format msgid "" "Device %s does not become ready:\n" @@ -5713,7 +5713,7 @@ msgid "" "\n" msgstr "" -#: src/scsi-layer.c:2625 +#: src/scsi-layer.c:2619 #, c-format msgid "" "\n" @@ -5722,63 +5722,63 @@ msgstr "" "\n" "Enhet: %s, %s\n" -#: src/scsi-layer.c:2632 +#: src/scsi-layer.c:2626 msgid "Drive failed to report media type." msgstr "" -#: src/scsi-layer.c:2647 src/scsi-layer.c:2759 +#: src/scsi-layer.c:2641 src/scsi-layer.c:2753 #, c-format msgid "This software does not support \"%s\" type media." msgstr "" -#: src/scsi-layer.c:2655 +#: src/scsi-layer.c:2649 #, c-format msgid "This software does not support multisession (%d sessions) media." msgstr "" -#: src/scsi-layer.c:2686 src/scsi-layer.c:2695 +#: src/scsi-layer.c:2680 src/scsi-layer.c:2689 msgid "Using READ CD" msgstr "" -#: src/scsi-layer.c:2687 +#: src/scsi-layer.c:2681 msgid ", RAW reading" msgstr "" -#: src/scsi-layer.c:2690 +#: src/scsi-layer.c:2684 #, c-format msgid ", Mode page 1 ERP = %02xh" msgstr "" -#: src/scsi-layer.c:2693 +#: src/scsi-layer.c:2687 msgid ", C2 scanning" msgstr "" -#: src/scsi-layer.c:2700 +#: src/scsi-layer.c:2694 msgid "Using READ(10).\n" msgstr "" -#: src/scsi-layer.c:2736 +#: src/scsi-layer.c:2730 #, c-format msgid "Medium: %s, % sectors%s" msgstr "Medium: %s, % sektorer%s" -#: src/scsi-layer.c:2740 +#: src/scsi-layer.c:2734 #, c-format msgid "Medium \"%s\": %s, % sectors%s created %s" msgstr "Medium \"%s\": %s, % sektorer%s skapade %s" -#: src/scsi-netbsd.c:103 +#: src/scsi-netbsd.c:105 msgid "" "No optical drives found.\n" "No drives will be pre-selected.\n" msgstr "" -#: src/scsi-simulated.c:37 +#: src/scsi-simulated.c:39 #, c-format msgid "Simulated CD (%s)" msgstr "" -#: src/scsi-unknown.c:35 +#: src/scsi-unknown.c:37 msgid "" "* Unsupported operating system - no SCSI layer available.\n" "* No drives can be used.\n" @@ -5800,41 +5800,11 @@ msgstr "" msgid "Could not open device %s." msgstr "" -#: src/show-html.c:78 -msgid "windowtitle|Choose a browser" -msgstr "Välj en webbläsare" - -#: src/show-html.c:115 -msgid "windowtitle|Browser required" -msgstr "Webbläsare krävs" - -#: src/show-html.c:131 -msgid "" -"Could not find a suitable browser.\n" -"\n" -"Which browser would you like to use\n" -"for reading the online documentation?\n" -"\n" -"Please enter its name (e.g. mozilla) or\n" -"use the \"Search\" button for a file dialog.\n" -msgstr "" -"Kunde inte hitta en lämplig webbläsare.\n" -"\n" -"Vilken webbläsare vill du använda\n" -"för att läsa onlinedokumentationen?\n" -"\n" -"Ange dess namn (exempelvis mozilla) eller\n" -"använd \"Sök\"-knappen för att få fram en fildialog.\n" - -#: src/show-html.c:144 src/show-manual.c:145 -msgid "Search" -msgstr "Sök" - -#: src/show-html.c:337 src/show-manual.c:324 +#: src/show-manual.c:83 msgid "Documentation not installed." msgstr "Dokumentationen är inte installerad." -#: src/show-html.c:382 src/show-manual.c:340 +#: src/show-manual.c:98 #, c-format msgid "" "Documentation file\n" @@ -5842,85 +5812,131 @@ msgid "" "not found.\n" msgstr "" -#: src/show-html.c:391 -msgid "Please hang on until the browser comes up!" -msgstr "Vänta tills webbläsaren har startats!" - -#: src/show-manual.c:79 -msgid "windowtitle|Choose a PDF viewer" +#: src/show-manual.c:114 +msgid "Could not create pipe before fork" msgstr "" -#: src/show-manual.c:116 -msgid "windowtitle|PDF viewer required" +#: src/show-manual.c:122 +msgid "Could not fork to start xdg-open" msgstr "" -#: src/show-manual.c:132 +#: src/show-manual.c:145 +#, c-format msgid "" -"Could not find a suitable PDF viewer.\n" -"\n" -"Which PDF viewer would you like to use\n" -"for reading the online documentation?\n" -"\n" -"Please enter its name (e.g. xpdf) or\n" -"use the \"Search\" button for a file dialog.\n" +"execvp could not execute \"xdg-open\":\n" +"%s\n" +"Is xdg-open installed correctly?\n" msgstr "" -#: src/show-manual.c:349 -msgid "Please hang on until the viewer comes up!" -msgstr "" - -#: src/udf.c:257 +#: src/udf.c:259 msgid "Unnamed" msgstr "Namnlös" -#: src/udf.c:348 +#: src/udf.c:350 msgid "Example disc" msgstr "" -#: src/welcome-window.c:82 +#: src/welcome-window.c:84 msgid "" -"This is v0.79.6-pl8. The patchlevel series are enhanced from the last upstream pre-release.\n" -"We add support for a CLI version, BD-R TL/QL, a Windows build, an option to produce bigger BD-R RS03,\n" +"This is v0.79.10-pl1. The patchlevel series are enhanced from the last upstream release.\n" +"We add support for BD-R TL/QL, a Windows build, an option to produce bigger BD-R RS03,\n" "images, support for stripping ECC from ISOs, re-enabled adaptive reading (except for RS03), and more.\n" "\n" -"Please refer to the Help > Change log menu for all the details.\n" -"The warning message from the pre-release version is retained below.\n" +"Please refer to the Help > Change log menu for all the details." msgstr "" -#: src/welcome-window.c:89 -msgid "" -"Please note:\n" -"This is a pre-release for expert users.\n" -"It may contain unfinished features.\n" -"Adaptive reading is unavailable in this version.\n" -"It will be re-introduced in one of the next releases." -msgstr "" - -#: src/welcome-window.c:97 +#: src/welcome-window.c:92 msgid "Show this message again" msgstr "" -#: src/welcome-window.c:143 +#: src/welcome-window.c:138 msgid "Welcome to dvdisaster!" msgstr "" -#: src/welcome-window.c:145 +#: src/welcome-window.c:140 msgid "" "\n" "dvdisaster creates error correction data to protect\n" "optical media (CD,DVD,BD) against data loss.\n" msgstr "" -#: src/welcome-window.c:148 +#: src/welcome-window.c:143 msgid "" "Please see the [manual] for typical uses of dvdisaster.\n" "\n" msgstr "" -#: src/welcome-window.c:151 +#: src/welcome-window.c:146 msgid "New in this Version:" msgstr "" +#~ msgid "windowtitle|Modifying dvdisaster" +#~ msgstr "Ändra dvdisaster" + +#~ msgid "Copyright 2004-2017 Carsten Gnoerlich" +#~ msgstr "Copyright 2004-2017 Carsten Gnörlich" + +#~ msgid "Read position: %3d.%1d%% (%4.1fx)" +#~ msgstr "Läsposition: %3d.%1d%% (%4.1fx)" + +#~ msgid "" +#~ "%d sectors missing at the end of the disc.\n" +#~ "This is okay if the CD was written in TAO (track at once) mode.\n" +#~ "The Image will be truncated accordingly. See the manual for details.\n" +#~ msgstr "" +#~ "%d sektorer saknas på slutet av skivan.\n" +#~ "Detta är okej om cd-skivan skrevs i TAO-läget (track at once).\n" +#~ "Avbilden kommer att kapas enligt det. Se manualen för detaljer.\n" + +#~ msgid "" +#~ "%d sectors missing at the end of the disc.\n" +#~ "This is okay if the CD was written in TAO (track at once) mode.\n" +#~ "The Image will be truncated accordingly. See the manual for details.\n" +#~ "Use the --dao option to disable image truncating.\n" +#~ msgstr "" +#~ "%d sektorer saknas på slutet av skivan.\n" +#~ "Detta är okej om cd-skivan skrevs i TAO-läget (track at once).\n" +#~ "Avbilden kommer att kapas enligt det. Se manualen för detaljer.\n" +#~ "Använd flaggan --dao för att inaktivera kapning av avbild.\n" + +#~ msgid "" +#~ "* requires : dvdisaster-%d.%d (BAD)\n" +#~ "* Warning : The following output might be incorrect.\n" +#~ "* : Please visit http://www.dvdisaster.org for an upgrade.\n" +#~ msgstr "" +#~ "* kräver : dvdisaster-%d.%d (DÅLIGT)\n" +#~ "* Varning : Följande utdata kan vara felaktig.\n" +#~ "* : Besök http://www.dvdisaster.org för en uppgradering.\n" + +#~ msgid "windowtitle|Choose a browser" +#~ msgstr "Välj en webbläsare" + +#~ msgid "windowtitle|Browser required" +#~ msgstr "Webbläsare krävs" + +#~ msgid "" +#~ "Could not find a suitable browser.\n" +#~ "\n" +#~ "Which browser would you like to use\n" +#~ "for reading the online documentation?\n" +#~ "\n" +#~ "Please enter its name (e.g. mozilla) or\n" +#~ "use the \"Search\" button for a file dialog.\n" +#~ msgstr "" +#~ "Kunde inte hitta en lämplig webbläsare.\n" +#~ "\n" +#~ "Vilken webbläsare vill du använda\n" +#~ "för att läsa onlinedokumentationen?\n" +#~ "\n" +#~ "Ange dess namn (exempelvis mozilla) eller\n" +#~ "använd \"Sök\"-knappen för att få fram en fildialog.\n" + +#~ msgid "Search" +#~ msgstr "Sök" + +#~ msgid "Please hang on until the browser comes up!" +#~ msgstr "Vänta tills webbläsaren har startats!" + #~ msgid "" #~ "\n" #~ "Common usage examples:\n" @@ -6345,21 +6361,6 @@ msgstr "" #~ "hittades inte.\n" #~ "Installera dvdisaster-doc-paketet.\n" -#~ msgid "Copyright 2004-2018 Carsten Gnoerlich" -#~ msgstr "Copyright 2004-2018 Carsten Gnörlich" - -#~ msgid "windowtitle|Modifying dvdisaster" -#~ msgstr "Ändra dvdisaster" - -#~ msgid "" -#~ "* requires : dvdisaster-%d.%d (BAD)\n" -#~ "* Warning : The following output might be incorrect.\n" -#~ "* : Please visit http://www.dvdisaster.org for an upgrade.\n" -#~ msgstr "" -#~ "* kräver : dvdisaster-%d.%d (DÅLIGT)\n" -#~ "* Varning : Följande utdata kan vara felaktig.\n" -#~ "* : Besök http://www.dvdisaster.org för en uppgradering.\n" - #~ msgid "created by dvdisaster-%d.%d\n" #~ msgstr "skapad av dvdisaster-%d.%d\n" @@ -6564,6 +6565,13 @@ msgstr "" #~ msgid "--cache-size must at least be 1MiB; 16MiB or higher is recommended." #~ msgstr "--cache-size måste vara åtminstone 1MiB; 16MiB eller högre rekommenderas." +#~ msgid "" +#~ "\n" +#~ "e-mail: carsten@dvdisaster.com -or- cgnoerlich@fsfe.org" +#~ msgstr "" +#~ "\n" +#~ "e-post: carsten@dvdisaster.com -eller- cgnoerlich@fsfe.org" + #~ msgid "illegal data_mode: %d" #~ msgstr "otillåten data_mode: %d" diff --git a/misc-gui.c b/misc-gui.c new file mode 100644 index 0000000..3945f96 --- /dev/null +++ b/misc-gui.c @@ -0,0 +1,667 @@ +/* dvdisaster: Additional error correction for optical media. + * Copyright (C) 2004-2017 Carsten Gnoerlich. + * Copyright (C) 2019-2021 The dvdisaster development team. + * + * Email: support@dvdisaster.org + * + * This file is part of dvdisaster. + * + * dvdisaster is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * dvdisaster is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with dvdisaster. If not, see . + */ + +/*** src type: some GUI code ***/ + +#include "dvdisaster.h" + +/*** + *** GUI functions which are cli-only safe for convenience. + ***/ + +/* + * Label convenience functions. + * Sets the label text from another thread. + */ + +#ifdef WITH_GUI_YES +typedef struct +{ GtkLabel *label; + char *text; +} label_info; + +static gboolean label_idle_func(gpointer data) +{ label_info *li = (label_info*)data; + + gtk_label_set_markup(li->label, li->text); + + g_free(li->text); + g_free(li); + + return FALSE; +} + +void GuiSetLabelText(GtkWidget *widget, char *format, ...) +{ label_info *li; + va_list argp; + + if(!Closure->guiMode) + return; + + li = g_malloc(sizeof(label_info)); + li->label = GTK_LABEL(widget); + + va_start(argp, format); + if(format) + { char *tmp = g_strdup_vprintf(format, argp); + + if(!tmp) tmp=g_strdup_printf("GuiSetLabelText(%s) failed",format); + li->text = g_locale_to_utf8(tmp, -1, NULL, NULL, NULL); + g_free(tmp); + } + else li->text = g_locale_to_utf8("(null)", -1, NULL, NULL, NULL); + va_end(argp); + g_idle_add(label_idle_func, li); +} +#endif + +/* + * Progress bar convenience function. + * Percentage is given as a multiple of 0.1 percent. + */ + +#ifdef WITH_GUI_YES + +typedef struct +{ GtkWidget *pbar; + int percent; + int max; +} progress_info; + +static gboolean progress_idle_func(gpointer data) +{ progress_info *pi = (progress_info*)data; + gdouble val = (gdouble)pi->percent / (gdouble)pi->max; + char text[20]; + + switch(pi->max) + { case 100: g_sprintf(text, "%3d%%",pi->percent); break; + case 1000: g_sprintf(text, "%3d.%1d%%",pi->percent/10,pi->percent%10); break; + } + + gtk_progress_bar_set_fraction(GTK_PROGRESS_BAR(pi->pbar), val); + gtk_progress_bar_set_text(GTK_PROGRESS_BAR(pi->pbar), text); + + g_free(pi); + + return FALSE; +} + +void GuiSetProgress(GtkWidget *pbar, int percent, int max) +{ progress_info *pi; + + if(!Closure->guiMode) return; + + pi = g_malloc(sizeof(progress_info)); + + pi->pbar = pbar; + pi->percent = percent; + pi->max = max; + + g_idle_add(progress_idle_func, pi); +} +#endif + +/* + * Switch a notebook to another page and set the text in a label. + * Used in some footlines in the GUI. + * Does nothing in CLI mode to save us from lots of #ifdef WITH_GUI + */ + +#ifdef WITH_GUI_YES +typedef struct +{ GtkWidget *notebook; + int newPage; + GtkWidget *label; + char *newText; +} footline_info; + +static gboolean footline_idle_func(gpointer data) +{ footline_info *fi = (footline_info*)data; + + if(fi->label) + gtk_label_set_markup(GTK_LABEL(fi->label), fi->newText); + gtk_notebook_set_current_page(GTK_NOTEBOOK(fi->notebook), fi->newPage); + + if(fi->newText) + g_free(fi->newText); + g_free(fi); + + return FALSE; +} + +void GuiSwitchAndSetFootline(GtkWidget *notebook, int page, GtkWidget *label, char *format, ...) +{ va_list argp; + char *tmp; + footline_info *fi; + int len; + + if(!Closure->guiMode) return; + + fi = g_malloc0(sizeof(footline_info)); + fi->notebook = notebook; + fi->newPage = page; + fi->label = label; + + if(label) + { va_start(argp, format); + tmp = g_strdup_vprintf(format, argp); + len = strlen(tmp); + if(tmp[len-1] == '\n') tmp[len-1]=0; + fi->newText = g_locale_to_utf8(tmp, -1, NULL, NULL, NULL); + g_free(tmp); + va_end(argp); + } + + g_idle_add(footline_idle_func, fi); +} + +/* + * CLI mode and GUI mode behave differently wrt. to the worker thread. + * In CLI mode, the worker thread is the main thread and must not be terminated + * when the worker task is finished. However in GUI mode the worker is a separate + * thread which must exit after the assigned work is done. + */ + +void GuiExitWorkerThread() +{ + if(Closure->guiMode) + g_thread_exit(0); +} + +#endif + +/* + * A wrapper around GuiModalDialog() to create a logged warning. + * Note that in CLI mode the answer is always "yes", + * so warnings will be printed but never abort CLI mode. + */ + +#ifdef WITH_GUI_YES +static int vmodal_dialog(GtkMessageType, GtkButtonsType, + void(*)(GtkDialog*), char*, va_list); +#endif + +int ModalWarning(GtkMessageType mt, GtkButtonsType bt, + void(*button_fn)(GtkDialog*), char *msg, ...) +{ va_list argp; + int result = 1; + + va_start(argp, msg); + vLogWarning(msg, argp); + va_end(argp); + +#ifdef WITH_GUI_YES + if(Closure->guiMode) + { va_start(argp, msg); + result = vmodal_dialog(mt, bt, button_fn, msg, argp); + va_end(argp); + } +#endif + + return result; +} + +/* + * Safety requesters before deleting something. + */ + +#ifdef WITH_GUI_YES +static void insert_button(GtkDialog*); + +int GuiConfirmEccDeletion(char *file) +{ int answer; + + if(!Closure->guiMode) /* Always delete it in command line mode */ + return TRUE; + + if(!Closure->confirmDeletion) /* I told you so... */ + return TRUE; + + answer = GuiModalDialog(GTK_MESSAGE_QUESTION, GTK_BUTTONS_OK_CANCEL, + insert_button, + _("The error correction file is already present:\n\n" + "%s\n\n" + "Overwrite it?"), + file); + + return answer == GTK_RESPONSE_OK; +} +#endif + +/*** remaining GUI functions */ + +#ifdef WITH_GUI_YES +/* + * Spawning of idle functions. + * Idle functions are required to perform actions (like opening + * a dialogue) from a sub thread. + * However idle functions must not be spawned from the main thread + * as it would block infinitely; in that case we must run the idle + * function directly. + */ + +static void call_idle_func(gboolean (*idle_func)(gpointer), gpointer data) +{ + if(Closure->mainThread == g_thread_self()) + { idle_func(data); + } + else + { g_idle_add(idle_func, data); + } +} + +/*** + *** Graphical user interface convenience + ***/ + +/* + * Show the given widget + */ + +static gboolean show_idle_func(gpointer data) +{ + gtk_widget_show(GTK_WIDGET(data)); + + return FALSE; +} + +void GuiShowWidget(GtkWidget *widget) +{ + if(Closure->guiMode) + g_idle_add(show_idle_func, (gpointer)widget); +} + +/* + * Activation / Deactivation of the action buttons + */ + +static gboolean allow_actions_idle_func(gpointer data) +{ gboolean s = (data != NULL); + + /* Disable/Enable parts of the menu */ + + gtk_widget_set_sensitive(Closure->fileMenuImage, s); + gtk_widget_set_sensitive(Closure->fileMenuEcc, s); + gtk_widget_set_sensitive(Closure->toolMenuAnchor, s); + + /* Disable/Enable toolbar and sidebar buttons */ + + if(Closure->deviceNodes->len) + { gtk_widget_set_sensitive(Closure->readButton, s); + gtk_widget_set_sensitive(Closure->scanButton, s); + } + gtk_widget_set_sensitive(Closure->createButton, s); + gtk_widget_set_sensitive(Closure->fixButton, s); + gtk_widget_set_sensitive(Closure->testButton, s); + + gtk_widget_set_sensitive(Closure->prefsButton, s); + if(!s && Closure->prefsWindow) + { GuiHidePreferences(); + } + + Closure->stopActions = FALSE; + + return FALSE; +} + +void GuiAllowActions(gboolean s) +{ + g_idle_add(allow_actions_idle_func, GINT_TO_POINTER(s)); +} + +/* + * Dispatch a non-modal message dialog + */ + +typedef struct +{ char *msg; + GtkMessageType type; + GtkWindow *window; +} message_info; + +static gboolean message_idle_func(gpointer data) +{ message_info *mi = (message_info*)data; + GtkWidget *dialog; + + dialog = gtk_message_dialog_new_with_markup(mi->window, + GTK_DIALOG_DESTROY_WITH_PARENT, + mi->type, + GTK_BUTTONS_CLOSE, + mi->msg, NULL); + + gtk_label_set_line_wrap(GTK_LABEL(((struct _GtkMessageDialog*)dialog)->label), FALSE); + g_signal_connect_swapped(dialog, "response", G_CALLBACK(gtk_widget_destroy), dialog); + gtk_widget_show(dialog); + + g_free(mi->msg); + g_free(mi); + + return FALSE; +} + +void GuiShowMessage(GtkWindow *parent, char *msg, GtkMessageType type) +{ message_info *mi; + + if(!Closure->guiMode) return; + + mi = g_malloc(sizeof(message_info)); + mi->msg = g_strdup(msg); + mi->type = type; + mi->window = parent; + + if(Closure->mainThread == g_thread_self()) + message_idle_func(mi); + else g_idle_add(message_idle_func, mi); +} + +/* + * Creates a message from the main thread + */ + +GtkWidget* GuiCreateMessage(char *format, GtkMessageType type, ...) +{ GtkWidget *dialog; + va_list argp; + char *text,*utf8; + + if(!Closure->guiMode) + return NULL; + + va_start(argp, type); + text = g_strdup_vprintf(format, argp); + va_end(argp); + utf8 = g_locale_to_utf8(text, -1, NULL, NULL, NULL); + + dialog = gtk_message_dialog_new(Closure->window, + GTK_DIALOG_DESTROY_WITH_PARENT, + type, + GTK_BUTTONS_CLOSE, + utf8, NULL); + + gtk_label_set_line_wrap(GTK_LABEL(((struct _GtkMessageDialog*)dialog)->label), FALSE); + g_signal_connect_swapped(dialog, "response", G_CALLBACK(gtk_widget_destroy), dialog); + gtk_widget_show(dialog); + g_free(text); + g_free(utf8); + + return dialog; +} + +/* + * Perform a modal dialog. + * Note that the thread running the dialog is different + * from the one blocking/waiting for the response! + */ + +typedef struct +{ GMutex *mutex; + GCond *cond; + char *msg; + int ret; + GtkMessageType message_type; + GtkButtonsType button_type; + void (*button_fn)(GtkDialog*); +} modal_info; + +static gboolean modal_idle_func(gpointer data) +{ modal_info *mi = (modal_info*)data; + GtkWidget *dialog; + int response; + + dialog = gtk_message_dialog_new(Closure->window, + GTK_DIALOG_DESTROY_WITH_PARENT, + mi->message_type, + mi->button_type, + "%s", mi->msg); + gtk_label_set_line_wrap(GTK_LABEL(((struct _GtkMessageDialog*)dialog)->label), FALSE); + + if(mi->button_fn) + mi->button_fn(GTK_DIALOG(dialog)); + else GuiReverseCancelOK(GTK_DIALOG(dialog)); + + response = gtk_dialog_run(GTK_DIALOG(dialog)); + + g_mutex_lock(mi->mutex); + if(mi->button_fn) + mi->ret = response; + else switch(response) + { case GTK_RESPONSE_OK: + mi->ret = 1; + break; + + default: + mi->ret = 0; + break; + } + + g_cond_signal(mi->cond); + g_mutex_unlock(mi->mutex); + + gtk_widget_destroy(dialog); + + return FALSE; +} + +static int vmodal_dialog(GtkMessageType mt, GtkButtonsType bt, + void(*button_fn)(GtkDialog*), char *msg, va_list argp) +{ modal_info *mi = g_malloc(sizeof(modal_info)); + char *tmp; + int idx,ret; + + mi->message_type = mt; + mi->button_type = bt; + mi->button_fn = button_fn; + mi->mutex = g_malloc(sizeof(GMutex)); g_mutex_init(mi->mutex); + mi->cond = g_malloc(sizeof(GCond)); g_cond_init(mi->cond); + + tmp = g_strdup_vprintf(msg, argp); + idx = strlen(tmp); /* Remove trailing newline */ + if(tmp[idx-1] == '\n') + tmp[idx-1] = 0; + mi->msg = g_locale_to_utf8(tmp, -1, NULL, NULL, NULL); + g_free(tmp); + + mi->ret = -1; + + call_idle_func(modal_idle_func, mi); + + g_mutex_lock(mi->mutex); + while(mi->ret == -1) + g_cond_wait(mi->cond, mi->mutex); + + ret = mi->ret; + g_mutex_unlock(mi->mutex); + g_free(mi->msg); + g_mutex_clear(mi->mutex); + g_free(mi->mutex); + g_cond_clear(mi->cond); + g_free(mi->cond); + g_free(mi); + + return ret; +} + +int GuiModalDialog(GtkMessageType mt, GtkButtonsType bt, + void(*button_fn)(GtkDialog*), char *msg, ...) +{ va_list argp; + int result; + + if(!Closure->guiMode) + Stop("GuiModalDialog() called with Closure->guiMode == False"); + + va_start(argp, msg); + result = vmodal_dialog(mt, bt, button_fn, msg, argp); + va_end(argp); + + return result; +} + +/* + * Set the text in the pango layout and retrieve its extents. + */ + +void GuiSetText(PangoLayout *layout, char *text, int *w, int *h) +{ PangoRectangle rect; + char *t; + + if(!Closure->guiMode) + return; + + t = g_locale_to_utf8(text, -1, NULL, NULL, NULL); + + pango_layout_set_text(layout, t, -1); + pango_layout_get_pixel_extents(layout, NULL, &rect); + + g_free(t); + + *w = rect.width; + *h = rect.height; +} + +/* + * Rearrange buttons to OK Cancel order + * in file dialogs + * + * gtk_dialog_set_alternative_button_order() + * has been introduced since gtk+2.6, + * but does not seem to work correctly. + */ + +void GuiReverseCancelOK(GtkDialog *dialog) +{ GtkWidget *box, *button ; + + if(!Closure->guiMode || !Closure->reverseCancelOK) + return; + + box = dialog->action_area; + button = ((GtkBoxChild*)(g_list_first(GTK_BOX(box)->children)->data))->widget; + + gtk_box_reorder_child(GTK_BOX(box), button, 1); + +#if 0 + gtk_dialog_set_alternative_button_order(GTK_DIALOG(dialog), + GTK_RESPONSE_OK, + GTK_RESPONSE_CANCEL, + -1); +#endif +} + +/* + * Get the width of a label text + */ + +int GuiGetLabelWidth(GtkLabel *label, char *format, ...) +{ PangoLayout *layout; + PangoRectangle rect; + va_list argp; + char *text; + + if(!Closure->guiMode) + return 0; + + va_start(argp, format); + text = g_strdup_vprintf(format, argp); + va_end(argp); + + layout = gtk_label_get_layout(label); + pango_layout_set_text(layout, text, -1); + pango_layout_get_pixel_extents(layout, NULL, &rect); + + g_free(text); + + return rect.width; +} + + +/* + * Lock the size of a label to that of the given sample text. + */ + +void GuiLockLabelSize(GtkWidget *wid, char *format, ...) +{ PangoLayout *layout; + PangoRectangle rect; + va_list argp; + char *text; + + if(!Closure->guiMode) + return; + + va_start(argp, format); + text = g_strdup_vprintf(format, argp); + va_end(argp); + + layout = gtk_label_get_layout(GTK_LABEL(wid)); + pango_layout_set_text(layout, text, -1); + pango_layout_get_pixel_extents(layout, NULL, &rect); + + gtk_widget_set_size_request(wid, rect.width, rect.height); + gtk_misc_set_alignment(GTK_MISC(wid), 0.0, 0.0); + + g_free(text); +} + +/*** + *** Safety requesters before overwriting stuff + ***/ + +static void dont_ask_again_cb(GtkWidget *widget, gpointer data) +{ int state = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget)); + + Closure->confirmDeletion = !state; + + GuiUpdatePrefsConfirmDeletion(); +} + +static void insert_button(GtkDialog *dialog) +{ GtkWidget *check,*align; + + align = gtk_alignment_new(0.5, 0.5, 0.0, 0.0); + gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog)->vbox), align, FALSE, FALSE, 0); + + check = gtk_check_button_new_with_label(_utf("Do not ask again")); + gtk_container_add(GTK_CONTAINER(align), check); + gtk_container_set_border_width(GTK_CONTAINER(align), 10); + g_signal_connect(G_OBJECT(check), "toggled", G_CALLBACK(dont_ask_again_cb), NULL); + + gtk_widget_show(align); + gtk_widget_show(check); + GuiReverseCancelOK(GTK_DIALOG(dialog)); +} + +int GuiConfirmImageDeletion(char *file) +{ int answer; + + if(!Closure->guiMode) /* Always delete it in command line mode */ + return TRUE; + + if(!Closure->confirmDeletion) /* I told you so... */ + return TRUE; + + answer = GuiModalDialog(GTK_MESSAGE_QUESTION, GTK_BUTTONS_OK_CANCEL, + insert_button, + _("Image file already exists and does not match the medium:\n\n" + "%s\n\n" + "The existing image file will be deleted."), + file); + + return answer == GTK_RESPONSE_OK; +} +#endif diff --git a/regtest/common.bash b/regtest/common.bash index 951bd87..a162542 100644 --- a/regtest/common.bash +++ b/regtest/common.bash @@ -7,6 +7,8 @@ DATABASE=./database RNDSEQ="./fixed-random-sequence" NON_EXISTENT_DEVICE=/dev/sdz + +# directory for permanently storing test files ISODIR=/var/tmp/regtest if ! test -d $ISODIR; then echo "$ISODIR does not exist." @@ -14,6 +16,14 @@ if ! test -d $ISODIR; then exit 1 fi +# directory for temporary files; e.g. to keep them away from SSDs +TMPDIR=/dev/shm +if ! test -d $TMPDIR; then + echo "$TMPDIR does not exist." + echo "Please create it manually, or edit common.bash" + exit 0 +fi + LOGDIR="/dev/shm" if ! test -d $LOGDIR; then LOGDIR=/tmp @@ -201,6 +211,11 @@ function run_regtest() local interactive_diff=$(grep "INTERACTIVE_DIFF" $CONFIGFILE) interactive_diff=$(echo $interactive_diff | cut -d\ -f 2) + + if test -z "$testecc"; then + echo -e "broken test case $1\n--> run_regtest: 4 arguments required to ensure deterministic test behaviour." + exit 1 + fi if test -n "${testecc}"; then testeccopt="-e ${testecc}" @@ -209,7 +224,6 @@ function run_regtest() REFLOG=${DATABASE}/${CODEC_PREFIX}_${testsymbol} if test "$gui_mode" == "false"; then -<<<<<<< HEAD rm -f $NEWLOG echo "LANG=en_EN.UTF-8 $NEWVER --regtest --no-progress -i${testiso} ${testeccopt} ${extra_args} ${testparms}" >>$LOGFILE @@ -238,14 +252,19 @@ function run_regtest() filter=cat echo "$options" | grep -qw SORTED && filter=sort - if [ "${CODEC_PREFIX}_${testsymbol}" = RS01_scan_no_device ] || \ - [ "${CODEC_PREFIX}_${testsymbol}" = RS01_read_no_device ] || \ - [ "${CODEC_PREFIX}_${testsymbol}" = RS01_adaptive_no_device ]; then - # for Windows + + # for Windows + if [[ $testsymbol =~ _no_device$ ]]; then sed -i -re "s=device $NON_EXISTENT_DEVICE\.=/dev/sdz: No such file or directory=" $NEWLOG fi - if ! diff <(tail -n +3 $REFLOG | $filter) <(sed -re "s=[a-zA-Z:/]+/([a-z0-9_-]+\.(ecc|iso))=\1=g;s=$ISODIR/==g" $NEWLOG | $filter) >${DIFFLOG}; then + # for Windows, just remove any path we find: + sed -i -re "s=[A-Z]:/[A-Za-z0-9_/-]+/==g" $NEWLOG + + # remove all paths to get reproducible output: + sed -i -re "s=$TMPDIR/*==g;s=$ISODIR/*==g" $NEWLOG + + if ! diff <(tail -n +3 $REFLOG | $filter) <(cat $NEWLOG | $filter) >${DIFFLOG}; then if [ "$REGTEST_NO_UTF8" = 1 ]; then echo "BAD; diffs found (created):" else @@ -259,7 +278,7 @@ function run_regtest() if test "$answer" == "a"; then cp $REFLOG $LOGDIR head -n 2 $LOGDIR/${CODEC_PREFIX}_${testsymbol} >$REFLOG - sed -re "s=[a-zA-Z:/]+/([a-z0-9_-]+\.(ecc|iso))=\1=g;s=$ISODIR/==g" $NEWLOG >>$REFLOG + cat $NEWLOG >>$REFLOG pass="skip" elif test "$answer" == "v"; then vimdiff $REFLOG $NEWLOG diff --git a/regtest/config.txt b/regtest/config.txt index 8042f58..4801996 100644 --- a/regtest/config.txt +++ b/regtest/config.txt @@ -232,8 +232,8 @@ RS02_ecc_create_after_partial_read yes RS02_fix_no_read_perm yes RS02_fix_no_write_perm yes RS02_fix_good_image yes -RS02_fix_image_plus137 yes -RS02_fix_image_error_in_plus137 yes +RS02_fix_image_plus137 no +RS02_fix_image_error_in_plus137 no RS02_fix_truncated_image yes RS02_fix_trailing_bytes yes RS02_fix_trailing_tao yes @@ -378,6 +378,8 @@ RS03i_missing_header yes RS03i_missing_header2 yes RS03i_missing_header3 yes RS03i_missing_header4 yes +RS03i_missing_header5 yes +RS03i_missing_header6 yes RS03i_missing_header_truncated yes RS03i_missing_header_no_crcsec yes RS03i_random_image yes diff --git a/regtest/database/RS01_adaptive_no_device b/regtest/database/RS01_adaptive_no_device index 860ab14..e917d9e 100644 --- a/regtest/database/RS01_adaptive_no_device +++ b/regtest/database/RS01_adaptive_no_device @@ -1,5 +1,11 @@ ignore ignore +This software comes with ABSOLUTELY NO WARRANTY. This +is free software and you are welcome to redistribute it +under the conditions of the GNU GENERAL PUBLIC LICENSE. +See the file "COPYING" for further information. + +* * dvdisaster - can not continue: * Could not open /dev/sdz: No such file or directory diff --git a/regtest/database/RS01_adaptive_no_device_access b/regtest/database/RS01_adaptive_no_device_access index 455698c..899f649 100644 --- a/regtest/database/RS01_adaptive_no_device_access +++ b/regtest/database/RS01_adaptive_no_device_access @@ -1,5 +1,11 @@ ignore ignore +This software comes with ABSOLUTELY NO WARRANTY. This +is free software and you are welcome to redistribute it +under the conditions of the GNU GENERAL PUBLIC LICENSE. +See the file "COPYING" for further information. + +* * dvdisaster - can not continue: * Could not open sdz: Permission denied diff --git a/regtest/database/RS01_adaptive_with_incompatible_ecc b/regtest/database/RS01_adaptive_with_incompatible_ecc index fe4221f..4b95efd 100644 --- a/regtest/database/RS01_adaptive_with_incompatible_ecc +++ b/regtest/database/RS01_adaptive_with_incompatible_ecc @@ -12,7 +12,7 @@ Medium "Random Image": CD-R mode 1, 21000 sectors, created 16-07-2006. * Warning: This ecc file requires dvdisaster-99.99! * Proceeding could trigger incorrect behaviour. * Please read the image without using this ecc file -* or visit http://www.dvdisaster.org for an upgrade. +* or upgrade dvdisaster. RS01-type ECC found Adaptive reading: Trying to collect enough data for error correction. diff --git a/regtest/database/RS01_ecc_create_after_read b/regtest/database/RS01_ecc_create_after_read index fe8d861..7e3c437 100644 --- a/regtest/database/RS01_ecc_create_after_read +++ b/regtest/database/RS01_ecc_create_after_read @@ -309,3 +309,4 @@ CrcBufValid: buffer VALID Encoding with Method RS01: 32 roots, 14.3% redundancy. Error correction file "rs01-tmp.ecc" created. Make sure to keep this file on a reliable medium. +FreeCrcBuf - buffer cleared diff --git a/regtest/database/RS01_ecc_recreate_after_read_rs01 b/regtest/database/RS01_ecc_recreate_after_read_rs01 index 498d608..2c5fdb4 100644 --- a/regtest/database/RS01_ecc_recreate_after_read_rs01 +++ b/regtest/database/RS01_ecc_recreate_after_read_rs01 @@ -311,3 +311,4 @@ CrcBufValid: buffer VALID Encoding with Method RS01: 32 roots, 14.3% redundancy. Error correction file "rs01-tmp.ecc" created. Make sure to keep this file on a reliable medium. +FreeCrcBuf - buffer cleared diff --git a/regtest/database/RS01_ecc_recreate_after_read_rs02 b/regtest/database/RS01_ecc_recreate_after_read_rs02 index f64e26e..960ac72 100644 --- a/regtest/database/RS01_ecc_recreate_after_read_rs02 +++ b/regtest/database/RS01_ecc_recreate_after_read_rs02 @@ -196,3 +196,4 @@ CrcBufValid: buffer VALID Encoding with Method RS01: 32 roots, 14.3% redundancy. Error correction file "rs01-tmp.ecc" created. Make sure to keep this file on a reliable medium. +FreeCrcBuf - buffer cleared diff --git a/regtest/database/RS01_ecc_recreate_after_read_rs03f b/regtest/database/RS01_ecc_recreate_after_read_rs03f index ffb4948..4f22424 100644 --- a/regtest/database/RS01_ecc_recreate_after_read_rs03f +++ b/regtest/database/RS01_ecc_recreate_after_read_rs03f @@ -325,3 +325,4 @@ CrcBufValid: buffer VALID Encoding with Method RS01: 32 roots, 14.3% redundancy. Error correction file "rs01-tmp.ecc" created. Make sure to keep this file on a reliable medium. +FreeCrcBuf - buffer cleared diff --git a/regtest/database/RS01_ecc_recreate_after_read_rs03i b/regtest/database/RS01_ecc_recreate_after_read_rs03i index 9e68e88..a8d9f3e 100644 --- a/regtest/database/RS01_ecc_recreate_after_read_rs03i +++ b/regtest/database/RS01_ecc_recreate_after_read_rs03i @@ -310,3 +310,4 @@ CrcBufValid: buffer VALID Encoding with Method RS01: 32 roots, 14.3% redundancy. Error correction file "rs01-tmp.ecc" created. Make sure to keep this file on a reliable medium. +FreeCrcBuf - buffer cleared diff --git a/regtest/database/RS01_read_medium_with_dsm b/regtest/database/RS01_read_medium_with_dsm index bba7b89..14a4161 100644 --- a/regtest/database/RS01_read_medium_with_dsm +++ b/regtest/database/RS01_read_medium_with_dsm @@ -24,4 +24,4 @@ Creating new rs01-tmp.iso image. * ... more unrecoverable sectors found ... * further messages are suppressed unless the -v option is given. -All sectors successfully read. +All sectors are readable, but 3 contain defective content. diff --git a/regtest/database/RS01_read_medium_with_dsm_in_image b/regtest/database/RS01_read_medium_with_dsm_in_image index 2f656c8..ededabb 100644 --- a/regtest/database/RS01_read_medium_with_dsm_in_image +++ b/regtest/database/RS01_read_medium_with_dsm_in_image @@ -10,24 +10,5 @@ Using READ CD. Medium "Random Image": CD-R mode 1, 21000 sectors, created 16-07-2006. Completing image rs01-tmp.iso. Only missing sectors will be read. -* Unrecoverable sector found! -* -* Sector 3030 is marked unreadable and annotated to be -* in a different location (3130). -* -* The image was probably mastered from defective content. -* For example it might contain one or more files which came -* from a damaged medium which was NOT fully recovered. -* This means that some files may have been silently corrupted. -* -* The label of the original (defective) medium was: -* -* Random Image -* -* Since the image was already created defective it can not be -* repaired by dvdisaster. Also it will not be possible to create -* error correction data for it. Sorry for the bad news. -* ... more unrecoverable sectors found ... -* further messages are suppressed unless the -v option is given. 3 sectors read. diff --git a/regtest/database/RS01_read_medium_with_dsm_in_image2 b/regtest/database/RS01_read_medium_with_dsm_in_image2 index 7c6b4fd..ededabb 100644 --- a/regtest/database/RS01_read_medium_with_dsm_in_image2 +++ b/regtest/database/RS01_read_medium_with_dsm_in_image2 @@ -10,24 +10,5 @@ Using READ CD. Medium "Random Image": CD-R mode 1, 21000 sectors, created 16-07-2006. Completing image rs01-tmp.iso. Only missing sectors will be read. -* Unrecoverable sector found! -* -* Sector 3030 is marked unreadable and seems to come -* from a different medium. -* -* The image was probably mastered from defective content. -* For example it might contain one or more files which came -* from a damaged medium which was NOT fully recovered. -* This means that some files may have been silently corrupted. -* -* The label of the original (defective) medium was: -* -* Random Image 2 -* -* Since the image was already created defective it can not be -* repaired by dvdisaster. Also it will not be possible to create -* error correction data for it. Sorry for the bad news. -* ... more unrecoverable sectors found ... -* further messages are suppressed unless the -v option is given. 3 sectors read. diff --git a/regtest/database/RS01_read_medium_with_dsm_in_image2_verbose b/regtest/database/RS01_read_medium_with_dsm_in_image2_verbose index 32c2e5c..0231bb6 100644 --- a/regtest/database/RS01_read_medium_with_dsm_in_image2_verbose +++ b/regtest/database/RS01_read_medium_with_dsm_in_image2_verbose @@ -167,108 +167,6 @@ Medium "Random Image": CD-R mode 1, 21000 sectors, created 16-07-2006. GetImageFingerprint(16): cached Completing image rs01-tmp.iso. Only missing sectors will be read. -* Unrecoverable sector found! -* -* Sector 3030 is marked unreadable and seems to come -* from a different medium. -* -* The image was probably mastered from defective content. -* For example it might contain one or more files which came -* from a damaged medium which was NOT fully recovered. -* This means that some files may have been silently corrupted. -* -* The label of the original (defective) medium was: -* -* Random Image 2 -* -* Since the image was already created defective it can not be -* repaired by dvdisaster. Also it will not be possible to create -* error correction data for it. Sorry for the bad news. -* Unrecoverable sector found! -* -* Sector 3030 is marked unreadable and seems to come -* from a different medium. -* -* The image was probably mastered from defective content. -* For example it might contain one or more files which came -* from a damaged medium which was NOT fully recovered. -* This means that some files may have been silently corrupted. -* -* The label of the original (defective) medium was: -* -* Random Image 2 -* -* Since the image was already created defective it can not be -* repaired by dvdisaster. Also it will not be possible to create -* error correction data for it. Sorry for the bad news. -* Unrecoverable sector found! -* -* Sector 4400 is marked unreadable and seems to come -* from a different medium. -* -* The image was probably mastered from defective content. -* For example it might contain one or more files which came -* from a damaged medium which was NOT fully recovered. -* This means that some files may have been silently corrupted. -* -* The label of the original (defective) medium was: -* -* Random Image -* -* Since the image was already created defective it can not be -* repaired by dvdisaster. Also it will not be possible to create -* error correction data for it. Sorry for the bad news. -* Unrecoverable sector found! -* -* Sector 4411 is marked unreadable and seems to come -* from a different medium. -* -* The image was probably mastered from defective content. -* For example it might contain one or more files which came -* from a damaged medium which was NOT fully recovered. -* This means that some files may have been silently corrupted. -* -* The label of the original (defective) medium was: -* -* Random Image -* -* Since the image was already created defective it can not be -* repaired by dvdisaster. Also it will not be possible to create -* error correction data for it. Sorry for the bad news. -* Unrecoverable sector found! -* -* Sector 4400 is marked unreadable and seems to come -* from a different medium. -* -* The image was probably mastered from defective content. -* For example it might contain one or more files which came -* from a damaged medium which was NOT fully recovered. -* This means that some files may have been silently corrupted. -* -* The label of the original (defective) medium was: -* -* Random Image -* -* Since the image was already created defective it can not be -* repaired by dvdisaster. Also it will not be possible to create -* error correction data for it. Sorry for the bad news. -* Unrecoverable sector found! -* -* Sector 4411 is marked unreadable and seems to come -* from a different medium. -* -* The image was probably mastered from defective content. -* For example it might contain one or more files which came -* from a damaged medium which was NOT fully recovered. -* This means that some files may have been silently corrupted. -* -* The label of the original (defective) medium was: -* -* Random Image -* -* Since the image was already created defective it can not be -* repaired by dvdisaster. Also it will not be possible to create -* error correction data for it. Sorry for the bad news. 3 sectors read. CrcBuf contents, image path none (medium): @@ -276,3 +174,4 @@ CrcBuf contents, image path none (medium): md5State: invalid fp sector: 16; 15c0fd35a0cfa0f83b9ccbd8604c2592 missing crcs: 20997 +FreeCrcBuf - buffer cleared diff --git a/regtest/database/RS01_read_medium_with_dsm_in_image_verbose b/regtest/database/RS01_read_medium_with_dsm_in_image_verbose index b98c3f0..0231bb6 100644 --- a/regtest/database/RS01_read_medium_with_dsm_in_image_verbose +++ b/regtest/database/RS01_read_medium_with_dsm_in_image_verbose @@ -167,108 +167,6 @@ Medium "Random Image": CD-R mode 1, 21000 sectors, created 16-07-2006. GetImageFingerprint(16): cached Completing image rs01-tmp.iso. Only missing sectors will be read. -* Unrecoverable sector found! -* -* Sector 3030 is marked unreadable and annotated to be -* in a different location (3130). -* -* The image was probably mastered from defective content. -* For example it might contain one or more files which came -* from a damaged medium which was NOT fully recovered. -* This means that some files may have been silently corrupted. -* -* The label of the original (defective) medium was: -* -* Random Image -* -* Since the image was already created defective it can not be -* repaired by dvdisaster. Also it will not be possible to create -* error correction data for it. Sorry for the bad news. -* Unrecoverable sector found! -* -* Sector 3030 is marked unreadable and annotated to be -* in a different location (3130). -* -* The image was probably mastered from defective content. -* For example it might contain one or more files which came -* from a damaged medium which was NOT fully recovered. -* This means that some files may have been silently corrupted. -* -* The label of the original (defective) medium was: -* -* Random Image -* -* Since the image was already created defective it can not be -* repaired by dvdisaster. Also it will not be possible to create -* error correction data for it. Sorry for the bad news. -* Unrecoverable sector found! -* -* Sector 4400 is marked unreadable and annotated to be -* in a different location (4500). -* -* The image was probably mastered from defective content. -* For example it might contain one or more files which came -* from a damaged medium which was NOT fully recovered. -* This means that some files may have been silently corrupted. -* -* The label of the original (defective) medium was: -* -* Random Image -* -* Since the image was already created defective it can not be -* repaired by dvdisaster. Also it will not be possible to create -* error correction data for it. Sorry for the bad news. -* Unrecoverable sector found! -* -* Sector 4411 is marked unreadable and annotated to be -* in a different location (4511). -* -* The image was probably mastered from defective content. -* For example it might contain one or more files which came -* from a damaged medium which was NOT fully recovered. -* This means that some files may have been silently corrupted. -* -* The label of the original (defective) medium was: -* -* Random Image -* -* Since the image was already created defective it can not be -* repaired by dvdisaster. Also it will not be possible to create -* error correction data for it. Sorry for the bad news. -* Unrecoverable sector found! -* -* Sector 4400 is marked unreadable and annotated to be -* in a different location (4500). -* -* The image was probably mastered from defective content. -* For example it might contain one or more files which came -* from a damaged medium which was NOT fully recovered. -* This means that some files may have been silently corrupted. -* -* The label of the original (defective) medium was: -* -* Random Image -* -* Since the image was already created defective it can not be -* repaired by dvdisaster. Also it will not be possible to create -* error correction data for it. Sorry for the bad news. -* Unrecoverable sector found! -* -* Sector 4411 is marked unreadable and annotated to be -* in a different location (4511). -* -* The image was probably mastered from defective content. -* For example it might contain one or more files which came -* from a damaged medium which was NOT fully recovered. -* This means that some files may have been silently corrupted. -* -* The label of the original (defective) medium was: -* -* Random Image -* -* Since the image was already created defective it can not be -* repaired by dvdisaster. Also it will not be possible to create -* error correction data for it. Sorry for the bad news. 3 sectors read. CrcBuf contents, image path none (medium): @@ -276,3 +174,4 @@ CrcBuf contents, image path none (medium): md5State: invalid fp sector: 16; 15c0fd35a0cfa0f83b9ccbd8604c2592 missing crcs: 20997 +FreeCrcBuf - buffer cleared diff --git a/regtest/database/RS01_read_medium_with_dsm_verbose b/regtest/database/RS01_read_medium_with_dsm_verbose index 5bf211d..2e3d4d3 100644 --- a/regtest/database/RS01_read_medium_with_dsm_verbose +++ b/regtest/database/RS01_read_medium_with_dsm_verbose @@ -200,7 +200,7 @@ Creating new rs01-tmp.iso image. * repaired by dvdisaster. Also it will not be possible to create * error correction data for it. Sorry for the bad news. -All sectors successfully read. +All sectors are readable, but 3 contain defective content. CrcBuf contents, image path none (medium): crcSize: 21000, dataSectors: 21000, coveredSectors: 21000, allSectors: 21000 md5State: data_complete image_complete @@ -208,3 +208,4 @@ CrcBuf contents, image path none (medium): full: 1c479ed0276128f79fd72f7b3d087441 fp sector: 16; 15c0fd35a0cfa0f83b9ccbd8604c2592 missing crcs: 0 +FreeCrcBuf - buffer cleared diff --git a/regtest/database/RS01_read_with_ignored_hardware_failure b/regtest/database/RS01_read_with_ignored_hardware_failure index f0d9b85..bcaac7f 100644 --- a/regtest/database/RS01_read_with_ignored_hardware_failure +++ b/regtest/database/RS01_read_with_ignored_hardware_failure @@ -1,4 +1,4 @@ -c7945e8f9e09517842c1bb435b51bc74 +3f793d792a261cc98268182085034ae7 ignore This software comes with ABSOLUTELY NO WARRANTY. This is free software and you are welcome to redistribute it @@ -12,5 +12,7 @@ Medium "Random Image": CD-R mode 1, 21000 sectors, created 16-07-2006. Creating new rs01-tmp.iso image. Sector 4992, try 1: Hardware Error; Focus servo failure. Sector 4992: Hardware Error; Focus servo failure. Skipping 15 sectors. +Sector 6000, try 1: Hardware Error; Focus servo failure. +Sector 6000: Hardware Error; Focus servo failure. Skipping 15 sectors. -16 unreadable sectors. +32 unreadable sectors. diff --git a/regtest/database/RS01_scan_medium_with_dsm b/regtest/database/RS01_scan_medium_with_dsm index bdc1aa6..687d145 100644 --- a/regtest/database/RS01_scan_medium_with_dsm +++ b/regtest/database/RS01_scan_medium_with_dsm @@ -21,5 +21,7 @@ Scanning medium for read errors. * Since the medium was already created defective it can not be * repaired by dvdisaster. Also it will not be possible to create * error correction data for it. Sorry for the bad news. +* ... more unrecoverable sectors found ... +* further messages are suppressed unless the -v option is given. -All sectors successfully read. +All sectors are readable, but 2 contain defective content. diff --git a/regtest/database/RS01_scan_tao_tail_with_ecc b/regtest/database/RS01_scan_tao_tail_with_ecc index 53816f4..8712169 100644 --- a/regtest/database/RS01_scan_tao_tail_with_ecc +++ b/regtest/database/RS01_scan_tao_tail_with_ecc @@ -19,5 +19,5 @@ Sector 21001: Medium Error; Unrecovered read error. 2 unreadable sectors. * Warning: 2 sectors missing at the end of the disc. * This is okay if the CD was written in TAO (track at once) mode. -* The Image will be truncated accordingly. See the manual for details. -* Use the --dao option to disable image truncating. +* See the manual for details. +* Use the --dao option to disable this message. diff --git a/regtest/database/RS02_adaptive_incompatible_ecc b/regtest/database/RS02_adaptive_incompatible_ecc index c9b2114..c584c9b 100644 --- a/regtest/database/RS02_adaptive_incompatible_ecc +++ b/regtest/database/RS02_adaptive_incompatible_ecc @@ -12,7 +12,7 @@ Medium "Random Image": CD-R mode 1, 34932 sectors, Ecc, created 16-07-2006. RS02-type ECC found * Warning: This image requires dvdisaster-99.99! * Proceeding could trigger incorrect behaviour. -* Please visit http://www.dvdisaster.org for an upgrade. +* Please upgrade dvdisaster. Adaptive reading: Trying to collect enough data for error correction. Creating new rs02-tmp.iso image. diff --git a/regtest/database/RS02_ecc_create_after_partial_read b/regtest/database/RS02_ecc_create_after_partial_read index 639d37a..d9646c1 100644 --- a/regtest/database/RS02_ecc_create_after_partial_read +++ b/regtest/database/RS02_ecc_create_after_partial_read @@ -4,19 +4,463 @@ This software comes with ABSOLUTELY NO WARRANTY. This is free software and you are welcome to redistribute it under the conditions of the GNU GENERAL PUBLIC LICENSE. See the file "COPYING" for further information. +# *** OpenImageFromDevice(sim-cd) *** +# InquireDevice returned: Simulated CD drive 1.00 Device: sim-cd, Simulated CD drive 1.00 +# *** query_type(Simulated CD drive 1.00, 0) *** +# *** get_configuration(Simulated CD drive 1.00) *** +# 8 data len, 9 current +-> profile 9: CD-R +# trying READ DISC INFORMATION for size +# size returned is 32 +# trying READ DISC INFORMATION for real info +0000: 00 20 1e 00 00 00 00 00 00 00 00 00 00 00 00 00 . ...... ........ +0010: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ........ ........ +# status is 1e, disc type 0 +#CD: starting media probe +#CD: querying size of READ TOC/PMA/ATIP (for TOC) +#CD: size returned is 12 +#CD: querying real READ TOC/PMA/ATIP (for TOC) +0000: 00 0a 00 00 00 14 00 00 00 00 00 00 ........ .... +#CD: control is 0x14 +#CD: querying size of READ TOC/PMA/ATIP (for full TOC) +# Warning: Realigning length from 26 to 24 +#CD: size returned is 24 +#CD: querying real READ TOC/PMA/ATIP (for full TOC) +0000: 00 18 00 01 00 00 00 a0 00 00 00 00 00 00 00 00 ........ ........ +0010: 00 00 00 00 00 00 00 00 ........ +#CD: 1 sessions +#CD: CD medium detected, type: CD-R mode 1 +# query_type() returned. +# deciding reading strategy... Using READ CD. +GetImageFingerprint(16): read & cached + +ExamineUDF(Device: Simulated CD drive 1.00) + Examining the ISO file system... + Sector 16: + Volume descriptor type = 1 + Volume descriptor version = 1 + Standard identifier = CD001 + -> primary volume descriptor: + System identifier : | | + Volume identifier : |RANDOM IMAGE | + Volume space size : 30000 sectors + Volume set size : 1 + Volume sequence size : 1 + Logical block size : 2048 + Path table size : 10 bytes + L-Path table location : 19 + Opt L-Path table location : 0 + M-Path table location : 20 + Opt M-Path table location : 0 + Volume creation date/time : 16-07-2006 10:35:46.23 + Volume modification d/t : 16-07-2006 10:35:46.23 + Volume expiration d/t : 16-07-2106 10:35:46.23 + Volume effective d/t : 16-07-2006 10:35:46.23 + File structure version : 1 + Sector 17: + Volume descriptor type = 2 + Volume descriptor version = 1 + Standard identifier = CD001 + -> supplementary volume descriptor: *skipped* + Sector 18: + Volume descriptor type = 255 + Volume descriptor version = 1 + Standard identifier = CD001 + -> volume descriptor set terminator; + end of ISO file system parsing. + Examining the UDF file system... + not yet implemented. + +# *** read_capacity(Simulated CD drive 1.00) *** + -> 29999 +ExamineECC() started +...trying RS01 +...trying RS02 +RS02Recognize: medium sim-cd +try_sector: trying sector 30000 +try_sector: read error, trying next header +try_sector: trying sector 29850 +try_sector: no cookie, skipping current modulo +RS02Recognize: quick RS02 search, attempting up to 3 sector reads max +Medium rewriteable: FALSE +FindHeaderInMedium: Trying modulo 4611686018427387904 +FindHeaderInMedium: Trying modulo 2305843009213693952 +FindHeaderInMedium: Trying modulo 1152921504606846976 +FindHeaderInMedium: Trying modulo 576460752303423488 +FindHeaderInMedium: Trying modulo 288230376151711744 +FindHeaderInMedium: Trying modulo 144115188075855872 +FindHeaderInMedium: Trying modulo 72057594037927936 +FindHeaderInMedium: Trying modulo 36028797018963968 +FindHeaderInMedium: Trying modulo 18014398509481984 +FindHeaderInMedium: Trying modulo 9007199254740992 +FindHeaderInMedium: Trying modulo 4503599627370496 +FindHeaderInMedium: Trying modulo 2251799813685248 +FindHeaderInMedium: Trying modulo 1125899906842624 +FindHeaderInMedium: Trying modulo 562949953421312 +FindHeaderInMedium: Trying modulo 281474976710656 +FindHeaderInMedium: Trying modulo 140737488355328 +FindHeaderInMedium: Trying modulo 70368744177664 +FindHeaderInMedium: Trying modulo 35184372088832 +FindHeaderInMedium: Trying modulo 17592186044416 +FindHeaderInMedium: Trying modulo 8796093022208 +FindHeaderInMedium: Trying modulo 4398046511104 +FindHeaderInMedium: Trying modulo 2199023255552 +FindHeaderInMedium: Trying modulo 1099511627776 +FindHeaderInMedium: Trying modulo 549755813888 +FindHeaderInMedium: Trying modulo 274877906944 +FindHeaderInMedium: Trying modulo 137438953472 +FindHeaderInMedium: Trying modulo 68719476736 +FindHeaderInMedium: Trying modulo 34359738368 +FindHeaderInMedium: Trying modulo 17179869184 +FindHeaderInMedium: Trying modulo 8589934592 +FindHeaderInMedium: Trying modulo 4294967296 +FindHeaderInMedium: Trying modulo 2147483648 +FindHeaderInMedium: Trying modulo 1073741824 +FindHeaderInMedium: Trying modulo 536870912 +FindHeaderInMedium: Trying modulo 268435456 +FindHeaderInMedium: Trying modulo 134217728 +FindHeaderInMedium: Trying modulo 67108864 +FindHeaderInMedium: Trying modulo 33554432 +FindHeaderInMedium: Trying modulo 16777216 +FindHeaderInMedium: Trying modulo 8388608 +FindHeaderInMedium: Trying modulo 4194304 +FindHeaderInMedium: Trying modulo 2097152 +FindHeaderInMedium: Trying modulo 1048576 +FindHeaderInMedium: Trying modulo 524288 +FindHeaderInMedium: Trying modulo 262144 +FindHeaderInMedium: Trying modulo 131072 +FindHeaderInMedium: Trying modulo 65536 +FindHeaderInMedium: Trying modulo 32768 +FindHeaderInMedium: Trying modulo 16384 +try_sector: trying sector 16384 +try_sector: no cookie, skipping current modulo +FindHeaderInMedium: Trying modulo 8192 +try_sector: trying sector 24576 +try_sector: no cookie, skipping current modulo +FindHeaderInMedium: Trying modulo 4096 +try_sector: trying sector 28672 +try_sector: no cookie, skipping current modulo +...trying RS03 +RS03RecognizeImage: medium sim-cd +FindRS03HeaderInImage: medium sim-cd +RS03RecognizeImage: quick RS03 search, attempting up to 3 sector reads max +Warning: image size set to 35000 for debugging! +.. trying layer size 137 +Scanning layers for signatures. +- layer slice 0 +RS03: tries left = 2, reading sector 11508 +RS03: tries left = 1, reading sector 11645 +RS03: tries left = 0, reading sector 11782 +RS03: max tries reached, stopping search +...no augmented image detected. +# Calling query_size() +# *** query_size(Simulated CD drive 1.00) *** +Medium size could NOT be determined from ECC header. +Medium size obtained from ISO/UDF file system: 30000 sectors +# returned: 30000 sectors Medium "Random Image": CD-R mode 1, 30000 sectors, created 16-07-2006. +GetImageFingerprint(16): cached Completing image rs02-tmp.iso. Only missing sectors will be read. 1000 sectors read. +CrcBuf contents, image path none (medium): + crcSize: 30000, dataSectors: 30000, coveredSectors: 30000, allSectors: 30000 + md5State: invalid + fp sector: 16; abe80d3600553a8dce779713afd94f3c + missing crcs: 29000 + +Opening rs02-tmp.iso +ExamineUDF(File: rs02-tmp.iso) + Examining the ISO file system... + Sector 16: + Volume descriptor type = 1 + Volume descriptor version = 1 + Standard identifier = CD001 + -> primary volume descriptor: + System identifier : | | + Volume identifier : |RANDOM IMAGE | + Volume space size : 30000 sectors + Volume set size : 1 + Volume sequence size : 1 + Logical block size : 2048 + Path table size : 10 bytes + L-Path table location : 19 + Opt L-Path table location : 0 + M-Path table location : 20 + Opt M-Path table location : 0 + Volume creation date/time : 16-07-2006 10:35:46.23 + Volume modification d/t : 16-07-2006 10:35:46.23 + Volume expiration d/t : 16-07-2106 10:35:46.23 + Volume effective d/t : 16-07-2006 10:35:46.23 + File structure version : 1 + Sector 17: + Volume descriptor type = 2 + Volume descriptor version = 1 + Standard identifier = CD001 + -> supplementary volume descriptor: *skipped* + Sector 18: + Volume descriptor type = 255 + Volume descriptor version = 1 + Standard identifier = CD001 + -> volume descriptor set terminator; + end of ISO file system parsing. + Examining the UDF file system... + not yet implemented. + +ExamineECC() started +...trying RS01 +...trying RS02 +RS02Recognize: file rs02-tmp.iso +try_sector: trying sector 30000 +try_sector: read error, trying next header +try_sector: trying sector 29850 +try_sector: no cookie, skipping current modulo +RS02Recognize: No EH, entering exhaustive search +FindHeaderInMedium: Trying modulo 4611686018427387904 +FindHeaderInMedium: Trying modulo 2305843009213693952 +FindHeaderInMedium: Trying modulo 1152921504606846976 +FindHeaderInMedium: Trying modulo 576460752303423488 +FindHeaderInMedium: Trying modulo 288230376151711744 +FindHeaderInMedium: Trying modulo 144115188075855872 +FindHeaderInMedium: Trying modulo 72057594037927936 +FindHeaderInMedium: Trying modulo 36028797018963968 +FindHeaderInMedium: Trying modulo 18014398509481984 +FindHeaderInMedium: Trying modulo 9007199254740992 +FindHeaderInMedium: Trying modulo 4503599627370496 +FindHeaderInMedium: Trying modulo 2251799813685248 +FindHeaderInMedium: Trying modulo 1125899906842624 +FindHeaderInMedium: Trying modulo 562949953421312 +FindHeaderInMedium: Trying modulo 281474976710656 +FindHeaderInMedium: Trying modulo 140737488355328 +FindHeaderInMedium: Trying modulo 70368744177664 +FindHeaderInMedium: Trying modulo 35184372088832 +FindHeaderInMedium: Trying modulo 17592186044416 +FindHeaderInMedium: Trying modulo 8796093022208 +FindHeaderInMedium: Trying modulo 4398046511104 +FindHeaderInMedium: Trying modulo 2199023255552 +FindHeaderInMedium: Trying modulo 1099511627776 +FindHeaderInMedium: Trying modulo 549755813888 +FindHeaderInMedium: Trying modulo 274877906944 +FindHeaderInMedium: Trying modulo 137438953472 +FindHeaderInMedium: Trying modulo 68719476736 +FindHeaderInMedium: Trying modulo 34359738368 +FindHeaderInMedium: Trying modulo 17179869184 +FindHeaderInMedium: Trying modulo 8589934592 +FindHeaderInMedium: Trying modulo 4294967296 +FindHeaderInMedium: Trying modulo 2147483648 +FindHeaderInMedium: Trying modulo 1073741824 +FindHeaderInMedium: Trying modulo 536870912 +FindHeaderInMedium: Trying modulo 268435456 +FindHeaderInMedium: Trying modulo 134217728 +FindHeaderInMedium: Trying modulo 67108864 +FindHeaderInMedium: Trying modulo 33554432 +FindHeaderInMedium: Trying modulo 16777216 +FindHeaderInMedium: Trying modulo 8388608 +FindHeaderInMedium: Trying modulo 4194304 +FindHeaderInMedium: Trying modulo 2097152 +FindHeaderInMedium: Trying modulo 1048576 +FindHeaderInMedium: Trying modulo 524288 +FindHeaderInMedium: Trying modulo 262144 +FindHeaderInMedium: Trying modulo 131072 +FindHeaderInMedium: Trying modulo 65536 +FindHeaderInMedium: Trying modulo 32768 +FindHeaderInMedium: Trying modulo 16384 +try_sector: trying sector 16384 +try_sector: no cookie, skipping current modulo +FindHeaderInMedium: Trying modulo 8192 +try_sector: trying sector 24576 +try_sector: no cookie, skipping current modulo +FindHeaderInMedium: Trying modulo 4096 +try_sector: trying sector 28672 +try_sector: no cookie, skipping current modulo +FindHeaderInMedium: Trying modulo 2048 +Sector 28672 cached; skipping modulo +FindHeaderInMedium: Trying modulo 1024 +try_sector: trying sector 29696 +try_sector: no cookie, skipping current modulo +FindHeaderInMedium: Trying modulo 512 +Sector 29696 cached; skipping modulo +FindHeaderInMedium: Trying modulo 256 +try_sector: trying sector 29952 +try_sector: no cookie, skipping current modulo +FindHeaderInMedium: Trying modulo 128 +Sector 29952 cached; skipping modulo +FindHeaderInMedium: Trying modulo 64 +Sector 29952 cached; skipping modulo +FindHeaderInMedium: Trying modulo 32 +try_sector: trying sector 29984 +try_sector: no cookie, skipping current modulo +...trying RS03 +RS03RecognizeImage: file rs02-tmp.iso +FindRS03HeaderInImage: file rs02-tmp.iso +RS03RecognizeImage: No EH, entering exhaustive search +Warning: image size set to 35000 for debugging! +.. trying layer size 137 +Scanning layers for signatures. +- layer slice 0 +RS03: try number = 1, reading sector 11508 +RS03: try number = 2, reading sector 11645 +RS03: try number = 3, reading sector 11782 +RS03: try number = 4, reading sector 11919 +RS03: try number = 5, reading sector 12056 +RS03: try number = 6, reading sector 12193 +RS03: try number = 7, reading sector 12330 +RS03: try number = 8, reading sector 12467 +RS03: try number = 9, reading sector 12604 +RS03: try number = 10, reading sector 12741 +RS03: try number = 11, reading sector 12878 +RS03: try number = 12, reading sector 13015 +RS03: try number = 13, reading sector 13152 +RS03: try number = 14, reading sector 13289 +RS03: try number = 15, reading sector 13426 +RS03: try number = 16, reading sector 13563 +RS03: try number = 17, reading sector 13700 +RS03: try number = 18, reading sector 13837 +RS03: try number = 19, reading sector 13974 +RS03: try number = 20, reading sector 14111 +RS03: try number = 21, reading sector 14248 +RS03: try number = 22, reading sector 14385 +RS03: try number = 23, reading sector 14522 +RS03: try number = 24, reading sector 14659 +RS03: try number = 25, reading sector 14796 +RS03: try number = 26, reading sector 14933 +RS03: try number = 27, reading sector 15070 +RS03: try number = 28, reading sector 15207 +RS03: try number = 29, reading sector 15344 +RS03: try number = 30, reading sector 15481 +RS03: try number = 31, reading sector 15618 +RS03: try number = 32, reading sector 15755 +RS03: try number = 33, reading sector 15892 +RS03: try number = 34, reading sector 16029 +RS03: try number = 35, reading sector 16166 +RS03: try number = 36, reading sector 16303 +RS03: try number = 37, reading sector 16440 +RS03: try number = 38, reading sector 16577 +RS03: try number = 39, reading sector 16714 +RS03: try number = 40, reading sector 16851 +RS03: try number = 41, reading sector 16988 +RS03: try number = 42, reading sector 17125 +RS03: try number = 43, reading sector 17262 +RS03: try number = 44, reading sector 17399 +RS03: try number = 45, reading sector 17536 +RS03: try number = 46, reading sector 17673 +RS03: try number = 47, reading sector 17810 +RS03: try number = 48, reading sector 17947 +RS03: try number = 49, reading sector 18084 +RS03: try number = 50, reading sector 18221 +RS03: try number = 51, reading sector 18358 +RS03: try number = 52, reading sector 18495 +RS03: try number = 53, reading sector 18632 +RS03: try number = 54, reading sector 18769 +RS03: try number = 55, reading sector 18906 +RS03: try number = 56, reading sector 19043 +RS03: try number = 57, reading sector 19180 +RS03: try number = 58, reading sector 19317 +RS03: try number = 59, reading sector 19454 +RS03: try number = 60, reading sector 19591 +RS03: try number = 61, reading sector 19728 +RS03: try number = 62, reading sector 19865 +RS03: try number = 63, reading sector 20002 +RS03: try number = 64, reading sector 20139 +RS03: try number = 65, reading sector 20276 +RS03: try number = 66, reading sector 20413 +RS03: try number = 67, reading sector 20550 +RS03: try number = 68, reading sector 20687 +RS03: try number = 69, reading sector 20824 +RS03: try number = 70, reading sector 20961 +RS03: try number = 71, reading sector 21098 +RS03: try number = 72, reading sector 21235 +RS03: try number = 73, reading sector 21372 +RS03: try number = 74, reading sector 21509 +RS03: try number = 75, reading sector 21646 +RS03: try number = 76, reading sector 21783 +RS03: try number = 77, reading sector 21920 +RS03: try number = 78, reading sector 22057 +RS03: try number = 79, reading sector 22194 +RS03: try number = 80, reading sector 22331 +RS03: try number = 81, reading sector 22468 +RS03: try number = 82, reading sector 22605 +RS03: try number = 83, reading sector 22742 +RS03: try number = 84, reading sector 22879 +RS03: try number = 85, reading sector 23016 +RS03: try number = 86, reading sector 23153 +RS03: try number = 87, reading sector 23290 +RS03: try number = 88, reading sector 23427 +RS03: try number = 89, reading sector 23564 +RS03: try number = 90, reading sector 23701 +RS03: try number = 91, reading sector 23838 +RS03: try number = 92, reading sector 23975 +RS03: try number = 93, reading sector 24112 +RS03: try number = 94, reading sector 24249 +RS03: try number = 95, reading sector 24386 +RS03: try number = 96, reading sector 24523 +RS03: try number = 97, reading sector 24660 +RS03: try number = 98, reading sector 24797 +RS03: try number = 99, reading sector 24934 +RS03: try number = 100, reading sector 25071 +RS03: try number = 101, reading sector 25208 +RS03: try number = 102, reading sector 25345 +RS03: try number = 103, reading sector 25482 +RS03: try number = 104, reading sector 25619 +RS03: try number = 105, reading sector 25756 +RS03: try number = 106, reading sector 25893 +RS03: try number = 107, reading sector 26030 +RS03: try number = 108, reading sector 26167 +RS03: try number = 109, reading sector 26304 +RS03: try number = 110, reading sector 26441 +RS03: try number = 111, reading sector 26578 +RS03: try number = 112, reading sector 26715 +RS03: try number = 113, reading sector 26852 +RS03: try number = 114, reading sector 26989 +RS03: try number = 115, reading sector 27126 +RS03: try number = 116, reading sector 27263 +RS03: try number = 117, reading sector 27400 +RS03: try number = 118, reading sector 27537 +RS03: try number = 119, reading sector 27674 +RS03: try number = 120, reading sector 27811 +RS03: try number = 121, reading sector 27948 +RS03: try number = 122, reading sector 28085 +RS03: try number = 123, reading sector 28222 +RS03: try number = 124, reading sector 28359 +RS03: try number = 125, reading sector 28496 +RS03: try number = 126, reading sector 28633 +RS03: try number = 127, reading sector 28770 +RS03: try number = 128, reading sector 28907 +RS03: try number = 129, reading sector 29044 +RS03: try number = 130, reading sector 29181 +RS03: try number = 131, reading sector 29318 +RS03: try number = 132, reading sector 29455 +RS03: try number = 133, reading sector 29592 +RS03: try number = 134, reading sector 29729 +RS03: try number = 135, reading sector 29866 +** All layers tested -> no RS03 data found +...no augmented image detected. +GetImageFingerprint(16): read & cached +: 30000 medium sectors. +Calculated layout for RS02 image: +data sectors = 30000 +crc sectors = 59 +protected sectors = 30061 (incl. 2 hdr sectors) +reed solomon secs = 4795 (35 roots, 220 data) +header repeats = 38 (using modulo 128) +added sectors = 4932 +total image size = 34932 +medium capacity = 35000 + +Interleaving layout: +137 sectors per ecc layer +first layer sector with CRC data 136 (sector# 30002) -Opening rs02-tmp.iso: 30000 medium sectors. Augmenting image with Method RS02: 58 MiB data, 9 MiB ecc (35 roots; 15.9% redundancy). * Warning: Using redundancies below 20% may not give * the expected data loss protection. +CrcBufValid: NOT complete +FreeCrcBuf - buffer cleared Image has been augmented with error correction data. New image size is 68 MiB (34932 sectors). +FreeCrcBuf - buffer cleared diff --git a/regtest/database/RS02_ecc_create_after_read b/regtest/database/RS02_ecc_create_after_read index fa5da0f..eaa32eb 100644 --- a/regtest/database/RS02_ecc_create_after_read +++ b/regtest/database/RS02_ecc_create_after_read @@ -4,19 +4,463 @@ This software comes with ABSOLUTELY NO WARRANTY. This is free software and you are welcome to redistribute it under the conditions of the GNU GENERAL PUBLIC LICENSE. See the file "COPYING" for further information. +# *** OpenImageFromDevice(sim-cd) *** +# InquireDevice returned: Simulated CD drive 1.00 Device: sim-cd, Simulated CD drive 1.00 +# *** query_type(Simulated CD drive 1.00, 0) *** +# *** get_configuration(Simulated CD drive 1.00) *** +# 8 data len, 9 current +-> profile 9: CD-R +# trying READ DISC INFORMATION for size +# size returned is 32 +# trying READ DISC INFORMATION for real info +0000: 00 20 1e 00 00 00 00 00 00 00 00 00 00 00 00 00 . ...... ........ +0010: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ........ ........ +# status is 1e, disc type 0 +#CD: starting media probe +#CD: querying size of READ TOC/PMA/ATIP (for TOC) +#CD: size returned is 12 +#CD: querying real READ TOC/PMA/ATIP (for TOC) +0000: 00 0a 00 00 00 14 00 00 00 00 00 00 ........ .... +#CD: control is 0x14 +#CD: querying size of READ TOC/PMA/ATIP (for full TOC) +# Warning: Realigning length from 26 to 24 +#CD: size returned is 24 +#CD: querying real READ TOC/PMA/ATIP (for full TOC) +0000: 00 18 00 01 00 00 00 a0 00 00 00 00 00 00 00 00 ........ ........ +0010: 00 00 00 00 00 00 00 00 ........ +#CD: 1 sessions +#CD: CD medium detected, type: CD-R mode 1 +# query_type() returned. +# deciding reading strategy... Using READ CD. +GetImageFingerprint(16): read & cached + +ExamineUDF(Device: Simulated CD drive 1.00) + Examining the ISO file system... + Sector 16: + Volume descriptor type = 1 + Volume descriptor version = 1 + Standard identifier = CD001 + -> primary volume descriptor: + System identifier : | | + Volume identifier : |RANDOM IMAGE | + Volume space size : 30000 sectors + Volume set size : 1 + Volume sequence size : 1 + Logical block size : 2048 + Path table size : 10 bytes + L-Path table location : 19 + Opt L-Path table location : 0 + M-Path table location : 20 + Opt M-Path table location : 0 + Volume creation date/time : 16-07-2006 10:35:46.23 + Volume modification d/t : 16-07-2006 10:35:46.23 + Volume expiration d/t : 16-07-2106 10:35:46.23 + Volume effective d/t : 16-07-2006 10:35:46.23 + File structure version : 1 + Sector 17: + Volume descriptor type = 2 + Volume descriptor version = 1 + Standard identifier = CD001 + -> supplementary volume descriptor: *skipped* + Sector 18: + Volume descriptor type = 255 + Volume descriptor version = 1 + Standard identifier = CD001 + -> volume descriptor set terminator; + end of ISO file system parsing. + Examining the UDF file system... + not yet implemented. + +# *** read_capacity(Simulated CD drive 1.00) *** + -> 29999 +ExamineECC() started +...trying RS01 +...trying RS02 +RS02Recognize: medium sim-cd +try_sector: trying sector 30000 +try_sector: read error, trying next header +try_sector: trying sector 29850 +try_sector: no cookie, skipping current modulo +RS02Recognize: quick RS02 search, attempting up to 3 sector reads max +Medium rewriteable: FALSE +FindHeaderInMedium: Trying modulo 4611686018427387904 +FindHeaderInMedium: Trying modulo 2305843009213693952 +FindHeaderInMedium: Trying modulo 1152921504606846976 +FindHeaderInMedium: Trying modulo 576460752303423488 +FindHeaderInMedium: Trying modulo 288230376151711744 +FindHeaderInMedium: Trying modulo 144115188075855872 +FindHeaderInMedium: Trying modulo 72057594037927936 +FindHeaderInMedium: Trying modulo 36028797018963968 +FindHeaderInMedium: Trying modulo 18014398509481984 +FindHeaderInMedium: Trying modulo 9007199254740992 +FindHeaderInMedium: Trying modulo 4503599627370496 +FindHeaderInMedium: Trying modulo 2251799813685248 +FindHeaderInMedium: Trying modulo 1125899906842624 +FindHeaderInMedium: Trying modulo 562949953421312 +FindHeaderInMedium: Trying modulo 281474976710656 +FindHeaderInMedium: Trying modulo 140737488355328 +FindHeaderInMedium: Trying modulo 70368744177664 +FindHeaderInMedium: Trying modulo 35184372088832 +FindHeaderInMedium: Trying modulo 17592186044416 +FindHeaderInMedium: Trying modulo 8796093022208 +FindHeaderInMedium: Trying modulo 4398046511104 +FindHeaderInMedium: Trying modulo 2199023255552 +FindHeaderInMedium: Trying modulo 1099511627776 +FindHeaderInMedium: Trying modulo 549755813888 +FindHeaderInMedium: Trying modulo 274877906944 +FindHeaderInMedium: Trying modulo 137438953472 +FindHeaderInMedium: Trying modulo 68719476736 +FindHeaderInMedium: Trying modulo 34359738368 +FindHeaderInMedium: Trying modulo 17179869184 +FindHeaderInMedium: Trying modulo 8589934592 +FindHeaderInMedium: Trying modulo 4294967296 +FindHeaderInMedium: Trying modulo 2147483648 +FindHeaderInMedium: Trying modulo 1073741824 +FindHeaderInMedium: Trying modulo 536870912 +FindHeaderInMedium: Trying modulo 268435456 +FindHeaderInMedium: Trying modulo 134217728 +FindHeaderInMedium: Trying modulo 67108864 +FindHeaderInMedium: Trying modulo 33554432 +FindHeaderInMedium: Trying modulo 16777216 +FindHeaderInMedium: Trying modulo 8388608 +FindHeaderInMedium: Trying modulo 4194304 +FindHeaderInMedium: Trying modulo 2097152 +FindHeaderInMedium: Trying modulo 1048576 +FindHeaderInMedium: Trying modulo 524288 +FindHeaderInMedium: Trying modulo 262144 +FindHeaderInMedium: Trying modulo 131072 +FindHeaderInMedium: Trying modulo 65536 +FindHeaderInMedium: Trying modulo 32768 +FindHeaderInMedium: Trying modulo 16384 +try_sector: trying sector 16384 +try_sector: no cookie, skipping current modulo +FindHeaderInMedium: Trying modulo 8192 +try_sector: trying sector 24576 +try_sector: no cookie, skipping current modulo +FindHeaderInMedium: Trying modulo 4096 +try_sector: trying sector 28672 +try_sector: no cookie, skipping current modulo +...trying RS03 +RS03RecognizeImage: medium sim-cd +FindRS03HeaderInImage: medium sim-cd +RS03RecognizeImage: quick RS03 search, attempting up to 3 sector reads max +Warning: image size set to 35000 for debugging! +.. trying layer size 137 +Scanning layers for signatures. +- layer slice 0 +RS03: tries left = 2, reading sector 11508 +RS03: tries left = 1, reading sector 11645 +RS03: tries left = 0, reading sector 11782 +RS03: max tries reached, stopping search +...no augmented image detected. +# Calling query_size() +# *** query_size(Simulated CD drive 1.00) *** +Medium size could NOT be determined from ECC header. +Medium size obtained from ISO/UDF file system: 30000 sectors +# returned: 30000 sectors Medium "Random Image": CD-R mode 1, 30000 sectors, created 16-07-2006. Creating new rs02-tmp.iso image. All sectors successfully read. +CrcBuf contents, image path none (medium): + crcSize: 30000, dataSectors: 30000, coveredSectors: 30000, allSectors: 30000 + md5State: data_complete image_complete + data: cbadac3ca7b6e9bccfc889b7eaded254 + full: cbadac3ca7b6e9bccfc889b7eaded254 + fp sector: 16; abe80d3600553a8dce779713afd94f3c + missing crcs: 0 + +Opening rs02-tmp.iso +ExamineUDF(File: rs02-tmp.iso) + Examining the ISO file system... + Sector 16: + Volume descriptor type = 1 + Volume descriptor version = 1 + Standard identifier = CD001 + -> primary volume descriptor: + System identifier : | | + Volume identifier : |RANDOM IMAGE | + Volume space size : 30000 sectors + Volume set size : 1 + Volume sequence size : 1 + Logical block size : 2048 + Path table size : 10 bytes + L-Path table location : 19 + Opt L-Path table location : 0 + M-Path table location : 20 + Opt M-Path table location : 0 + Volume creation date/time : 16-07-2006 10:35:46.23 + Volume modification d/t : 16-07-2006 10:35:46.23 + Volume expiration d/t : 16-07-2106 10:35:46.23 + Volume effective d/t : 16-07-2006 10:35:46.23 + File structure version : 1 + Sector 17: + Volume descriptor type = 2 + Volume descriptor version = 1 + Standard identifier = CD001 + -> supplementary volume descriptor: *skipped* + Sector 18: + Volume descriptor type = 255 + Volume descriptor version = 1 + Standard identifier = CD001 + -> volume descriptor set terminator; + end of ISO file system parsing. + Examining the UDF file system... + not yet implemented. + +ExamineECC() started +...trying RS01 +...trying RS02 +RS02Recognize: file rs02-tmp.iso +try_sector: trying sector 30000 +try_sector: read error, trying next header +try_sector: trying sector 29850 +try_sector: no cookie, skipping current modulo +RS02Recognize: No EH, entering exhaustive search +FindHeaderInMedium: Trying modulo 4611686018427387904 +FindHeaderInMedium: Trying modulo 2305843009213693952 +FindHeaderInMedium: Trying modulo 1152921504606846976 +FindHeaderInMedium: Trying modulo 576460752303423488 +FindHeaderInMedium: Trying modulo 288230376151711744 +FindHeaderInMedium: Trying modulo 144115188075855872 +FindHeaderInMedium: Trying modulo 72057594037927936 +FindHeaderInMedium: Trying modulo 36028797018963968 +FindHeaderInMedium: Trying modulo 18014398509481984 +FindHeaderInMedium: Trying modulo 9007199254740992 +FindHeaderInMedium: Trying modulo 4503599627370496 +FindHeaderInMedium: Trying modulo 2251799813685248 +FindHeaderInMedium: Trying modulo 1125899906842624 +FindHeaderInMedium: Trying modulo 562949953421312 +FindHeaderInMedium: Trying modulo 281474976710656 +FindHeaderInMedium: Trying modulo 140737488355328 +FindHeaderInMedium: Trying modulo 70368744177664 +FindHeaderInMedium: Trying modulo 35184372088832 +FindHeaderInMedium: Trying modulo 17592186044416 +FindHeaderInMedium: Trying modulo 8796093022208 +FindHeaderInMedium: Trying modulo 4398046511104 +FindHeaderInMedium: Trying modulo 2199023255552 +FindHeaderInMedium: Trying modulo 1099511627776 +FindHeaderInMedium: Trying modulo 549755813888 +FindHeaderInMedium: Trying modulo 274877906944 +FindHeaderInMedium: Trying modulo 137438953472 +FindHeaderInMedium: Trying modulo 68719476736 +FindHeaderInMedium: Trying modulo 34359738368 +FindHeaderInMedium: Trying modulo 17179869184 +FindHeaderInMedium: Trying modulo 8589934592 +FindHeaderInMedium: Trying modulo 4294967296 +FindHeaderInMedium: Trying modulo 2147483648 +FindHeaderInMedium: Trying modulo 1073741824 +FindHeaderInMedium: Trying modulo 536870912 +FindHeaderInMedium: Trying modulo 268435456 +FindHeaderInMedium: Trying modulo 134217728 +FindHeaderInMedium: Trying modulo 67108864 +FindHeaderInMedium: Trying modulo 33554432 +FindHeaderInMedium: Trying modulo 16777216 +FindHeaderInMedium: Trying modulo 8388608 +FindHeaderInMedium: Trying modulo 4194304 +FindHeaderInMedium: Trying modulo 2097152 +FindHeaderInMedium: Trying modulo 1048576 +FindHeaderInMedium: Trying modulo 524288 +FindHeaderInMedium: Trying modulo 262144 +FindHeaderInMedium: Trying modulo 131072 +FindHeaderInMedium: Trying modulo 65536 +FindHeaderInMedium: Trying modulo 32768 +FindHeaderInMedium: Trying modulo 16384 +try_sector: trying sector 16384 +try_sector: no cookie, skipping current modulo +FindHeaderInMedium: Trying modulo 8192 +try_sector: trying sector 24576 +try_sector: no cookie, skipping current modulo +FindHeaderInMedium: Trying modulo 4096 +try_sector: trying sector 28672 +try_sector: no cookie, skipping current modulo +FindHeaderInMedium: Trying modulo 2048 +Sector 28672 cached; skipping modulo +FindHeaderInMedium: Trying modulo 1024 +try_sector: trying sector 29696 +try_sector: no cookie, skipping current modulo +FindHeaderInMedium: Trying modulo 512 +Sector 29696 cached; skipping modulo +FindHeaderInMedium: Trying modulo 256 +try_sector: trying sector 29952 +try_sector: no cookie, skipping current modulo +FindHeaderInMedium: Trying modulo 128 +Sector 29952 cached; skipping modulo +FindHeaderInMedium: Trying modulo 64 +Sector 29952 cached; skipping modulo +FindHeaderInMedium: Trying modulo 32 +try_sector: trying sector 29984 +try_sector: no cookie, skipping current modulo +...trying RS03 +RS03RecognizeImage: file rs02-tmp.iso +FindRS03HeaderInImage: file rs02-tmp.iso +RS03RecognizeImage: No EH, entering exhaustive search +Warning: image size set to 35000 for debugging! +.. trying layer size 137 +Scanning layers for signatures. +- layer slice 0 +RS03: try number = 1, reading sector 11508 +RS03: try number = 2, reading sector 11645 +RS03: try number = 3, reading sector 11782 +RS03: try number = 4, reading sector 11919 +RS03: try number = 5, reading sector 12056 +RS03: try number = 6, reading sector 12193 +RS03: try number = 7, reading sector 12330 +RS03: try number = 8, reading sector 12467 +RS03: try number = 9, reading sector 12604 +RS03: try number = 10, reading sector 12741 +RS03: try number = 11, reading sector 12878 +RS03: try number = 12, reading sector 13015 +RS03: try number = 13, reading sector 13152 +RS03: try number = 14, reading sector 13289 +RS03: try number = 15, reading sector 13426 +RS03: try number = 16, reading sector 13563 +RS03: try number = 17, reading sector 13700 +RS03: try number = 18, reading sector 13837 +RS03: try number = 19, reading sector 13974 +RS03: try number = 20, reading sector 14111 +RS03: try number = 21, reading sector 14248 +RS03: try number = 22, reading sector 14385 +RS03: try number = 23, reading sector 14522 +RS03: try number = 24, reading sector 14659 +RS03: try number = 25, reading sector 14796 +RS03: try number = 26, reading sector 14933 +RS03: try number = 27, reading sector 15070 +RS03: try number = 28, reading sector 15207 +RS03: try number = 29, reading sector 15344 +RS03: try number = 30, reading sector 15481 +RS03: try number = 31, reading sector 15618 +RS03: try number = 32, reading sector 15755 +RS03: try number = 33, reading sector 15892 +RS03: try number = 34, reading sector 16029 +RS03: try number = 35, reading sector 16166 +RS03: try number = 36, reading sector 16303 +RS03: try number = 37, reading sector 16440 +RS03: try number = 38, reading sector 16577 +RS03: try number = 39, reading sector 16714 +RS03: try number = 40, reading sector 16851 +RS03: try number = 41, reading sector 16988 +RS03: try number = 42, reading sector 17125 +RS03: try number = 43, reading sector 17262 +RS03: try number = 44, reading sector 17399 +RS03: try number = 45, reading sector 17536 +RS03: try number = 46, reading sector 17673 +RS03: try number = 47, reading sector 17810 +RS03: try number = 48, reading sector 17947 +RS03: try number = 49, reading sector 18084 +RS03: try number = 50, reading sector 18221 +RS03: try number = 51, reading sector 18358 +RS03: try number = 52, reading sector 18495 +RS03: try number = 53, reading sector 18632 +RS03: try number = 54, reading sector 18769 +RS03: try number = 55, reading sector 18906 +RS03: try number = 56, reading sector 19043 +RS03: try number = 57, reading sector 19180 +RS03: try number = 58, reading sector 19317 +RS03: try number = 59, reading sector 19454 +RS03: try number = 60, reading sector 19591 +RS03: try number = 61, reading sector 19728 +RS03: try number = 62, reading sector 19865 +RS03: try number = 63, reading sector 20002 +RS03: try number = 64, reading sector 20139 +RS03: try number = 65, reading sector 20276 +RS03: try number = 66, reading sector 20413 +RS03: try number = 67, reading sector 20550 +RS03: try number = 68, reading sector 20687 +RS03: try number = 69, reading sector 20824 +RS03: try number = 70, reading sector 20961 +RS03: try number = 71, reading sector 21098 +RS03: try number = 72, reading sector 21235 +RS03: try number = 73, reading sector 21372 +RS03: try number = 74, reading sector 21509 +RS03: try number = 75, reading sector 21646 +RS03: try number = 76, reading sector 21783 +RS03: try number = 77, reading sector 21920 +RS03: try number = 78, reading sector 22057 +RS03: try number = 79, reading sector 22194 +RS03: try number = 80, reading sector 22331 +RS03: try number = 81, reading sector 22468 +RS03: try number = 82, reading sector 22605 +RS03: try number = 83, reading sector 22742 +RS03: try number = 84, reading sector 22879 +RS03: try number = 85, reading sector 23016 +RS03: try number = 86, reading sector 23153 +RS03: try number = 87, reading sector 23290 +RS03: try number = 88, reading sector 23427 +RS03: try number = 89, reading sector 23564 +RS03: try number = 90, reading sector 23701 +RS03: try number = 91, reading sector 23838 +RS03: try number = 92, reading sector 23975 +RS03: try number = 93, reading sector 24112 +RS03: try number = 94, reading sector 24249 +RS03: try number = 95, reading sector 24386 +RS03: try number = 96, reading sector 24523 +RS03: try number = 97, reading sector 24660 +RS03: try number = 98, reading sector 24797 +RS03: try number = 99, reading sector 24934 +RS03: try number = 100, reading sector 25071 +RS03: try number = 101, reading sector 25208 +RS03: try number = 102, reading sector 25345 +RS03: try number = 103, reading sector 25482 +RS03: try number = 104, reading sector 25619 +RS03: try number = 105, reading sector 25756 +RS03: try number = 106, reading sector 25893 +RS03: try number = 107, reading sector 26030 +RS03: try number = 108, reading sector 26167 +RS03: try number = 109, reading sector 26304 +RS03: try number = 110, reading sector 26441 +RS03: try number = 111, reading sector 26578 +RS03: try number = 112, reading sector 26715 +RS03: try number = 113, reading sector 26852 +RS03: try number = 114, reading sector 26989 +RS03: try number = 115, reading sector 27126 +RS03: try number = 116, reading sector 27263 +RS03: try number = 117, reading sector 27400 +RS03: try number = 118, reading sector 27537 +RS03: try number = 119, reading sector 27674 +RS03: try number = 120, reading sector 27811 +RS03: try number = 121, reading sector 27948 +RS03: try number = 122, reading sector 28085 +RS03: try number = 123, reading sector 28222 +RS03: try number = 124, reading sector 28359 +RS03: try number = 125, reading sector 28496 +RS03: try number = 126, reading sector 28633 +RS03: try number = 127, reading sector 28770 +RS03: try number = 128, reading sector 28907 +RS03: try number = 129, reading sector 29044 +RS03: try number = 130, reading sector 29181 +RS03: try number = 131, reading sector 29318 +RS03: try number = 132, reading sector 29455 +RS03: try number = 133, reading sector 29592 +RS03: try number = 134, reading sector 29729 +RS03: try number = 135, reading sector 29866 +** All layers tested -> no RS03 data found +...no augmented image detected. +GetImageFingerprint(16): read & cached +: 30000 medium sectors. +Calculated layout for RS02 image: +data sectors = 30000 +crc sectors = 59 +protected sectors = 30061 (incl. 2 hdr sectors) +reed solomon secs = 4795 (35 roots, 220 data) +header repeats = 38 (using modulo 128) +added sectors = 4932 +total image size = 34932 +medium capacity = 35000 + +Interleaving layout: +137 sectors per ecc layer +first layer sector with CRC data 136 (sector# 30002) -Opening rs02-tmp.iso: 30000 medium sectors. Augmenting image with Method RS02: 58 MiB data, 9 MiB ecc (35 roots; 15.9% redundancy). * Warning: Using redundancies below 20% may not give * the expected data loss protection. +CrcBufValid: buffer VALID Image has been augmented with error correction data. New image size is 68 MiB (34932 sectors). +FreeCrcBuf - buffer cleared diff --git a/regtest/database/RS02_ecc_missing_image b/regtest/database/RS02_ecc_missing_image index 354d22d..062e0b6 100644 --- a/regtest/database/RS02_ecc_missing_image +++ b/regtest/database/RS02_ecc_missing_image @@ -5,10 +5,10 @@ is free software and you are welcome to redistribute it under the conditions of the GNU GENERAL PUBLIC LICENSE. See the file "COPYING" for further information. -Opening none.iso: No such file or directory. +Opening none.file: No such file or directory. * * dvdisaster - can not continue: * -Image file none.iso: No such file or directory. +Image file none.file: No such file or directory. diff --git a/regtest/database/RS02_ecc_recreate_after_read_rs01 b/regtest/database/RS02_ecc_recreate_after_read_rs01 index 245c0f4..0446ef0 100644 --- a/regtest/database/RS02_ecc_recreate_after_read_rs01 +++ b/regtest/database/RS02_ecc_recreate_after_read_rs01 @@ -4,20 +4,465 @@ This software comes with ABSOLUTELY NO WARRANTY. This is free software and you are welcome to redistribute it under the conditions of the GNU GENERAL PUBLIC LICENSE. See the file "COPYING" for further information. +# *** OpenImageFromDevice(sim-cd) *** +# InquireDevice returned: Simulated CD drive 1.00 Device: sim-cd, Simulated CD drive 1.00 +# *** query_type(Simulated CD drive 1.00, 0) *** +# *** get_configuration(Simulated CD drive 1.00) *** +# 8 data len, 9 current +-> profile 9: CD-R +# trying READ DISC INFORMATION for size +# size returned is 32 +# trying READ DISC INFORMATION for real info +0000: 00 20 1e 00 00 00 00 00 00 00 00 00 00 00 00 00 . ...... ........ +0010: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ........ ........ +# status is 1e, disc type 0 +#CD: starting media probe +#CD: querying size of READ TOC/PMA/ATIP (for TOC) +#CD: size returned is 12 +#CD: querying real READ TOC/PMA/ATIP (for TOC) +0000: 00 0a 00 00 00 14 00 00 00 00 00 00 ........ .... +#CD: control is 0x14 +#CD: querying size of READ TOC/PMA/ATIP (for full TOC) +# Warning: Realigning length from 26 to 24 +#CD: size returned is 24 +#CD: querying real READ TOC/PMA/ATIP (for full TOC) +0000: 00 18 00 01 00 00 00 a0 00 00 00 00 00 00 00 00 ........ ........ +0010: 00 00 00 00 00 00 00 00 ........ +#CD: 1 sessions +#CD: CD medium detected, type: CD-R mode 1 +# query_type() returned. +# deciding reading strategy... Using READ CD. +GetImageFingerprint(16): read & cached + +ExamineUDF(Device: Simulated CD drive 1.00) + Examining the ISO file system... + Sector 16: + Volume descriptor type = 1 + Volume descriptor version = 1 + Standard identifier = CD001 + -> primary volume descriptor: + System identifier : | | + Volume identifier : |RANDOM IMAGE | + Volume space size : 30000 sectors + Volume set size : 1 + Volume sequence size : 1 + Logical block size : 2048 + Path table size : 10 bytes + L-Path table location : 19 + Opt L-Path table location : 0 + M-Path table location : 20 + Opt M-Path table location : 0 + Volume creation date/time : 16-07-2006 10:35:46.23 + Volume modification d/t : 16-07-2006 10:35:46.23 + Volume expiration d/t : 16-07-2106 10:35:46.23 + Volume effective d/t : 16-07-2006 10:35:46.23 + File structure version : 1 + Sector 17: + Volume descriptor type = 2 + Volume descriptor version = 1 + Standard identifier = CD001 + -> supplementary volume descriptor: *skipped* + Sector 18: + Volume descriptor type = 255 + Volume descriptor version = 1 + Standard identifier = CD001 + -> volume descriptor set terminator; + end of ISO file system parsing. + Examining the UDF file system... + not yet implemented. + +# *** read_capacity(Simulated CD drive 1.00) *** + -> 29999 +ExamineECC() started +...trying RS01 +...trying RS02 +RS02Recognize: medium sim-cd +try_sector: trying sector 30000 +try_sector: read error, trying next header +try_sector: trying sector 29850 +try_sector: no cookie, skipping current modulo +RS02Recognize: quick RS02 search, attempting up to 3 sector reads max +Medium rewriteable: FALSE +FindHeaderInMedium: Trying modulo 4611686018427387904 +FindHeaderInMedium: Trying modulo 2305843009213693952 +FindHeaderInMedium: Trying modulo 1152921504606846976 +FindHeaderInMedium: Trying modulo 576460752303423488 +FindHeaderInMedium: Trying modulo 288230376151711744 +FindHeaderInMedium: Trying modulo 144115188075855872 +FindHeaderInMedium: Trying modulo 72057594037927936 +FindHeaderInMedium: Trying modulo 36028797018963968 +FindHeaderInMedium: Trying modulo 18014398509481984 +FindHeaderInMedium: Trying modulo 9007199254740992 +FindHeaderInMedium: Trying modulo 4503599627370496 +FindHeaderInMedium: Trying modulo 2251799813685248 +FindHeaderInMedium: Trying modulo 1125899906842624 +FindHeaderInMedium: Trying modulo 562949953421312 +FindHeaderInMedium: Trying modulo 281474976710656 +FindHeaderInMedium: Trying modulo 140737488355328 +FindHeaderInMedium: Trying modulo 70368744177664 +FindHeaderInMedium: Trying modulo 35184372088832 +FindHeaderInMedium: Trying modulo 17592186044416 +FindHeaderInMedium: Trying modulo 8796093022208 +FindHeaderInMedium: Trying modulo 4398046511104 +FindHeaderInMedium: Trying modulo 2199023255552 +FindHeaderInMedium: Trying modulo 1099511627776 +FindHeaderInMedium: Trying modulo 549755813888 +FindHeaderInMedium: Trying modulo 274877906944 +FindHeaderInMedium: Trying modulo 137438953472 +FindHeaderInMedium: Trying modulo 68719476736 +FindHeaderInMedium: Trying modulo 34359738368 +FindHeaderInMedium: Trying modulo 17179869184 +FindHeaderInMedium: Trying modulo 8589934592 +FindHeaderInMedium: Trying modulo 4294967296 +FindHeaderInMedium: Trying modulo 2147483648 +FindHeaderInMedium: Trying modulo 1073741824 +FindHeaderInMedium: Trying modulo 536870912 +FindHeaderInMedium: Trying modulo 268435456 +FindHeaderInMedium: Trying modulo 134217728 +FindHeaderInMedium: Trying modulo 67108864 +FindHeaderInMedium: Trying modulo 33554432 +FindHeaderInMedium: Trying modulo 16777216 +FindHeaderInMedium: Trying modulo 8388608 +FindHeaderInMedium: Trying modulo 4194304 +FindHeaderInMedium: Trying modulo 2097152 +FindHeaderInMedium: Trying modulo 1048576 +FindHeaderInMedium: Trying modulo 524288 +FindHeaderInMedium: Trying modulo 262144 +FindHeaderInMedium: Trying modulo 131072 +FindHeaderInMedium: Trying modulo 65536 +FindHeaderInMedium: Trying modulo 32768 +FindHeaderInMedium: Trying modulo 16384 +try_sector: trying sector 16384 +try_sector: no cookie, skipping current modulo +FindHeaderInMedium: Trying modulo 8192 +try_sector: trying sector 24576 +try_sector: no cookie, skipping current modulo +FindHeaderInMedium: Trying modulo 4096 +try_sector: trying sector 28672 +try_sector: no cookie, skipping current modulo +...trying RS03 +RS03RecognizeImage: medium sim-cd +FindRS03HeaderInImage: medium sim-cd +RS03RecognizeImage: quick RS03 search, attempting up to 3 sector reads max +Warning: image size set to 35000 for debugging! +.. trying layer size 137 +Scanning layers for signatures. +- layer slice 0 +RS03: tries left = 2, reading sector 11508 +RS03: tries left = 1, reading sector 11645 +RS03: tries left = 0, reading sector 11782 +RS03: max tries reached, stopping search +...no augmented image detected. +# Calling query_size() +# *** query_size(Simulated CD drive 1.00) *** +Medium size could NOT be determined from ECC header. +Medium size obtained from ISO/UDF file system: 30000 sectors +# returned: 30000 sectors Medium "Random Image": CD-R mode 1, 30000 sectors, created 16-07-2006. +GetImageFingerprint(16): cached Creating new rs02-tmp.iso image. Reading CRC information from ecc data (RS01) ... done. All sectors successfully read. Checksums match. +CrcBuf contents, image path none (medium): + crcSize: 30000, dataSectors: 30000, coveredSectors: 30000, allSectors: 30000 + md5State: data_complete image_complete + data: cbadac3ca7b6e9bccfc889b7eaded254 + full: cbadac3ca7b6e9bccfc889b7eaded254 + fp sector: 16; abe80d3600553a8dce779713afd94f3c + missing crcs: 0 + +Opening rs02-tmp.iso +ExamineUDF(File: rs02-tmp.iso) + Examining the ISO file system... + Sector 16: + Volume descriptor type = 1 + Volume descriptor version = 1 + Standard identifier = CD001 + -> primary volume descriptor: + System identifier : | | + Volume identifier : |RANDOM IMAGE | + Volume space size : 30000 sectors + Volume set size : 1 + Volume sequence size : 1 + Logical block size : 2048 + Path table size : 10 bytes + L-Path table location : 19 + Opt L-Path table location : 0 + M-Path table location : 20 + Opt M-Path table location : 0 + Volume creation date/time : 16-07-2006 10:35:46.23 + Volume modification d/t : 16-07-2006 10:35:46.23 + Volume expiration d/t : 16-07-2106 10:35:46.23 + Volume effective d/t : 16-07-2006 10:35:46.23 + File structure version : 1 + Sector 17: + Volume descriptor type = 2 + Volume descriptor version = 1 + Standard identifier = CD001 + -> supplementary volume descriptor: *skipped* + Sector 18: + Volume descriptor type = 255 + Volume descriptor version = 1 + Standard identifier = CD001 + -> volume descriptor set terminator; + end of ISO file system parsing. + Examining the UDF file system... + not yet implemented. + +ExamineECC() started +...trying RS01 +...trying RS02 +RS02Recognize: file rs02-tmp.iso +try_sector: trying sector 30000 +try_sector: read error, trying next header +try_sector: trying sector 29850 +try_sector: no cookie, skipping current modulo +RS02Recognize: No EH, entering exhaustive search +FindHeaderInMedium: Trying modulo 4611686018427387904 +FindHeaderInMedium: Trying modulo 2305843009213693952 +FindHeaderInMedium: Trying modulo 1152921504606846976 +FindHeaderInMedium: Trying modulo 576460752303423488 +FindHeaderInMedium: Trying modulo 288230376151711744 +FindHeaderInMedium: Trying modulo 144115188075855872 +FindHeaderInMedium: Trying modulo 72057594037927936 +FindHeaderInMedium: Trying modulo 36028797018963968 +FindHeaderInMedium: Trying modulo 18014398509481984 +FindHeaderInMedium: Trying modulo 9007199254740992 +FindHeaderInMedium: Trying modulo 4503599627370496 +FindHeaderInMedium: Trying modulo 2251799813685248 +FindHeaderInMedium: Trying modulo 1125899906842624 +FindHeaderInMedium: Trying modulo 562949953421312 +FindHeaderInMedium: Trying modulo 281474976710656 +FindHeaderInMedium: Trying modulo 140737488355328 +FindHeaderInMedium: Trying modulo 70368744177664 +FindHeaderInMedium: Trying modulo 35184372088832 +FindHeaderInMedium: Trying modulo 17592186044416 +FindHeaderInMedium: Trying modulo 8796093022208 +FindHeaderInMedium: Trying modulo 4398046511104 +FindHeaderInMedium: Trying modulo 2199023255552 +FindHeaderInMedium: Trying modulo 1099511627776 +FindHeaderInMedium: Trying modulo 549755813888 +FindHeaderInMedium: Trying modulo 274877906944 +FindHeaderInMedium: Trying modulo 137438953472 +FindHeaderInMedium: Trying modulo 68719476736 +FindHeaderInMedium: Trying modulo 34359738368 +FindHeaderInMedium: Trying modulo 17179869184 +FindHeaderInMedium: Trying modulo 8589934592 +FindHeaderInMedium: Trying modulo 4294967296 +FindHeaderInMedium: Trying modulo 2147483648 +FindHeaderInMedium: Trying modulo 1073741824 +FindHeaderInMedium: Trying modulo 536870912 +FindHeaderInMedium: Trying modulo 268435456 +FindHeaderInMedium: Trying modulo 134217728 +FindHeaderInMedium: Trying modulo 67108864 +FindHeaderInMedium: Trying modulo 33554432 +FindHeaderInMedium: Trying modulo 16777216 +FindHeaderInMedium: Trying modulo 8388608 +FindHeaderInMedium: Trying modulo 4194304 +FindHeaderInMedium: Trying modulo 2097152 +FindHeaderInMedium: Trying modulo 1048576 +FindHeaderInMedium: Trying modulo 524288 +FindHeaderInMedium: Trying modulo 262144 +FindHeaderInMedium: Trying modulo 131072 +FindHeaderInMedium: Trying modulo 65536 +FindHeaderInMedium: Trying modulo 32768 +FindHeaderInMedium: Trying modulo 16384 +try_sector: trying sector 16384 +try_sector: no cookie, skipping current modulo +FindHeaderInMedium: Trying modulo 8192 +try_sector: trying sector 24576 +try_sector: no cookie, skipping current modulo +FindHeaderInMedium: Trying modulo 4096 +try_sector: trying sector 28672 +try_sector: no cookie, skipping current modulo +FindHeaderInMedium: Trying modulo 2048 +Sector 28672 cached; skipping modulo +FindHeaderInMedium: Trying modulo 1024 +try_sector: trying sector 29696 +try_sector: no cookie, skipping current modulo +FindHeaderInMedium: Trying modulo 512 +Sector 29696 cached; skipping modulo +FindHeaderInMedium: Trying modulo 256 +try_sector: trying sector 29952 +try_sector: no cookie, skipping current modulo +FindHeaderInMedium: Trying modulo 128 +Sector 29952 cached; skipping modulo +FindHeaderInMedium: Trying modulo 64 +Sector 29952 cached; skipping modulo +FindHeaderInMedium: Trying modulo 32 +try_sector: trying sector 29984 +try_sector: no cookie, skipping current modulo +...trying RS03 +RS03RecognizeImage: file rs02-tmp.iso +FindRS03HeaderInImage: file rs02-tmp.iso +RS03RecognizeImage: No EH, entering exhaustive search +Warning: image size set to 35000 for debugging! +.. trying layer size 137 +Scanning layers for signatures. +- layer slice 0 +RS03: try number = 1, reading sector 11508 +RS03: try number = 2, reading sector 11645 +RS03: try number = 3, reading sector 11782 +RS03: try number = 4, reading sector 11919 +RS03: try number = 5, reading sector 12056 +RS03: try number = 6, reading sector 12193 +RS03: try number = 7, reading sector 12330 +RS03: try number = 8, reading sector 12467 +RS03: try number = 9, reading sector 12604 +RS03: try number = 10, reading sector 12741 +RS03: try number = 11, reading sector 12878 +RS03: try number = 12, reading sector 13015 +RS03: try number = 13, reading sector 13152 +RS03: try number = 14, reading sector 13289 +RS03: try number = 15, reading sector 13426 +RS03: try number = 16, reading sector 13563 +RS03: try number = 17, reading sector 13700 +RS03: try number = 18, reading sector 13837 +RS03: try number = 19, reading sector 13974 +RS03: try number = 20, reading sector 14111 +RS03: try number = 21, reading sector 14248 +RS03: try number = 22, reading sector 14385 +RS03: try number = 23, reading sector 14522 +RS03: try number = 24, reading sector 14659 +RS03: try number = 25, reading sector 14796 +RS03: try number = 26, reading sector 14933 +RS03: try number = 27, reading sector 15070 +RS03: try number = 28, reading sector 15207 +RS03: try number = 29, reading sector 15344 +RS03: try number = 30, reading sector 15481 +RS03: try number = 31, reading sector 15618 +RS03: try number = 32, reading sector 15755 +RS03: try number = 33, reading sector 15892 +RS03: try number = 34, reading sector 16029 +RS03: try number = 35, reading sector 16166 +RS03: try number = 36, reading sector 16303 +RS03: try number = 37, reading sector 16440 +RS03: try number = 38, reading sector 16577 +RS03: try number = 39, reading sector 16714 +RS03: try number = 40, reading sector 16851 +RS03: try number = 41, reading sector 16988 +RS03: try number = 42, reading sector 17125 +RS03: try number = 43, reading sector 17262 +RS03: try number = 44, reading sector 17399 +RS03: try number = 45, reading sector 17536 +RS03: try number = 46, reading sector 17673 +RS03: try number = 47, reading sector 17810 +RS03: try number = 48, reading sector 17947 +RS03: try number = 49, reading sector 18084 +RS03: try number = 50, reading sector 18221 +RS03: try number = 51, reading sector 18358 +RS03: try number = 52, reading sector 18495 +RS03: try number = 53, reading sector 18632 +RS03: try number = 54, reading sector 18769 +RS03: try number = 55, reading sector 18906 +RS03: try number = 56, reading sector 19043 +RS03: try number = 57, reading sector 19180 +RS03: try number = 58, reading sector 19317 +RS03: try number = 59, reading sector 19454 +RS03: try number = 60, reading sector 19591 +RS03: try number = 61, reading sector 19728 +RS03: try number = 62, reading sector 19865 +RS03: try number = 63, reading sector 20002 +RS03: try number = 64, reading sector 20139 +RS03: try number = 65, reading sector 20276 +RS03: try number = 66, reading sector 20413 +RS03: try number = 67, reading sector 20550 +RS03: try number = 68, reading sector 20687 +RS03: try number = 69, reading sector 20824 +RS03: try number = 70, reading sector 20961 +RS03: try number = 71, reading sector 21098 +RS03: try number = 72, reading sector 21235 +RS03: try number = 73, reading sector 21372 +RS03: try number = 74, reading sector 21509 +RS03: try number = 75, reading sector 21646 +RS03: try number = 76, reading sector 21783 +RS03: try number = 77, reading sector 21920 +RS03: try number = 78, reading sector 22057 +RS03: try number = 79, reading sector 22194 +RS03: try number = 80, reading sector 22331 +RS03: try number = 81, reading sector 22468 +RS03: try number = 82, reading sector 22605 +RS03: try number = 83, reading sector 22742 +RS03: try number = 84, reading sector 22879 +RS03: try number = 85, reading sector 23016 +RS03: try number = 86, reading sector 23153 +RS03: try number = 87, reading sector 23290 +RS03: try number = 88, reading sector 23427 +RS03: try number = 89, reading sector 23564 +RS03: try number = 90, reading sector 23701 +RS03: try number = 91, reading sector 23838 +RS03: try number = 92, reading sector 23975 +RS03: try number = 93, reading sector 24112 +RS03: try number = 94, reading sector 24249 +RS03: try number = 95, reading sector 24386 +RS03: try number = 96, reading sector 24523 +RS03: try number = 97, reading sector 24660 +RS03: try number = 98, reading sector 24797 +RS03: try number = 99, reading sector 24934 +RS03: try number = 100, reading sector 25071 +RS03: try number = 101, reading sector 25208 +RS03: try number = 102, reading sector 25345 +RS03: try number = 103, reading sector 25482 +RS03: try number = 104, reading sector 25619 +RS03: try number = 105, reading sector 25756 +RS03: try number = 106, reading sector 25893 +RS03: try number = 107, reading sector 26030 +RS03: try number = 108, reading sector 26167 +RS03: try number = 109, reading sector 26304 +RS03: try number = 110, reading sector 26441 +RS03: try number = 111, reading sector 26578 +RS03: try number = 112, reading sector 26715 +RS03: try number = 113, reading sector 26852 +RS03: try number = 114, reading sector 26989 +RS03: try number = 115, reading sector 27126 +RS03: try number = 116, reading sector 27263 +RS03: try number = 117, reading sector 27400 +RS03: try number = 118, reading sector 27537 +RS03: try number = 119, reading sector 27674 +RS03: try number = 120, reading sector 27811 +RS03: try number = 121, reading sector 27948 +RS03: try number = 122, reading sector 28085 +RS03: try number = 123, reading sector 28222 +RS03: try number = 124, reading sector 28359 +RS03: try number = 125, reading sector 28496 +RS03: try number = 126, reading sector 28633 +RS03: try number = 127, reading sector 28770 +RS03: try number = 128, reading sector 28907 +RS03: try number = 129, reading sector 29044 +RS03: try number = 130, reading sector 29181 +RS03: try number = 131, reading sector 29318 +RS03: try number = 132, reading sector 29455 +RS03: try number = 133, reading sector 29592 +RS03: try number = 134, reading sector 29729 +RS03: try number = 135, reading sector 29866 +** All layers tested -> no RS03 data found +...no augmented image detected. +GetImageFingerprint(16): read & cached +: 30000 medium sectors. +Calculated layout for RS02 image: +data sectors = 30000 +crc sectors = 59 +protected sectors = 30061 (incl. 2 hdr sectors) +reed solomon secs = 4795 (35 roots, 220 data) +header repeats = 38 (using modulo 128) +added sectors = 4932 +total image size = 34932 +medium capacity = 35000 + +Interleaving layout: +137 sectors per ecc layer +first layer sector with CRC data 136 (sector# 30002) -Opening rs02-tmp.iso: 30000 medium sectors. Augmenting image with Method RS02: 58 MiB data, 9 MiB ecc (35 roots; 15.9% redundancy). * Warning: Using redundancies below 20% may not give * the expected data loss protection. +CrcBufValid: buffer VALID Image has been augmented with error correction data. New image size is 68 MiB (34932 sectors). +FreeCrcBuf - buffer cleared diff --git a/regtest/database/RS02_ecc_recreate_after_read_rs02 b/regtest/database/RS02_ecc_recreate_after_read_rs02 index f77d8c6..c804234 100644 --- a/regtest/database/RS02_ecc_recreate_after_read_rs02 +++ b/regtest/database/RS02_ecc_recreate_after_read_rs02 @@ -4,23 +4,216 @@ This software comes with ABSOLUTELY NO WARRANTY. This is free software and you are welcome to redistribute it under the conditions of the GNU GENERAL PUBLIC LICENSE. See the file "COPYING" for further information. +# *** OpenImageFromDevice(sim-cd) *** +# InquireDevice returned: Simulated CD drive 1.00 Device: sim-cd, Simulated CD drive 1.00 +# *** query_type(Simulated CD drive 1.00, 0) *** +# *** get_configuration(Simulated CD drive 1.00) *** +# 8 data len, 9 current +-> profile 9: CD-R +# trying READ DISC INFORMATION for size +# size returned is 32 +# trying READ DISC INFORMATION for real info +0000: 00 20 1e 00 00 00 00 00 00 00 00 00 00 00 00 00 . ...... ........ +0010: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ........ ........ +# status is 1e, disc type 0 +#CD: starting media probe +#CD: querying size of READ TOC/PMA/ATIP (for TOC) +#CD: size returned is 12 +#CD: querying real READ TOC/PMA/ATIP (for TOC) +0000: 00 0a 00 00 00 14 00 00 00 00 00 00 ........ .... +#CD: control is 0x14 +#CD: querying size of READ TOC/PMA/ATIP (for full TOC) +# Warning: Realigning length from 26 to 24 +#CD: size returned is 24 +#CD: querying real READ TOC/PMA/ATIP (for full TOC) +0000: 00 18 00 01 00 00 00 a0 00 00 00 00 00 00 00 00 ........ ........ +0010: 00 00 00 00 00 00 00 00 ........ +#CD: 1 sessions +#CD: CD medium detected, type: CD-R mode 1 +# query_type() returned. +# deciding reading strategy... Using READ CD. +GetImageFingerprint(16): read & cached + +ExamineUDF(Device: Simulated CD drive 1.00) + Examining the ISO file system... + Sector 16: + Volume descriptor type = 1 + Volume descriptor version = 1 + Standard identifier = CD001 + -> primary volume descriptor: + System identifier : | | + Volume identifier : |RANDOM IMAGE | + Volume space size : 30000 sectors + Volume set size : 1 + Volume sequence size : 1 + Logical block size : 2048 + Path table size : 10 bytes + L-Path table location : 19 + Opt L-Path table location : 0 + M-Path table location : 20 + Opt M-Path table location : 0 + Volume creation date/time : 16-07-2006 10:35:46.23 + Volume modification d/t : 16-07-2006 10:35:46.23 + Volume expiration d/t : 16-07-2106 10:35:46.23 + Volume effective d/t : 16-07-2006 10:35:46.23 + File structure version : 1 + Sector 17: + Volume descriptor type = 2 + Volume descriptor version = 1 + Standard identifier = CD001 + -> supplementary volume descriptor: *skipped* + Sector 18: + Volume descriptor type = 255 + Volume descriptor version = 1 + Standard identifier = CD001 + -> volume descriptor set terminator; + end of ISO file system parsing. + Examining the UDF file system... + not yet implemented. + +# *** read_capacity(Simulated CD drive 1.00) *** + -> 49934 +ExamineECC() started +...trying RS01 +...trying RS02 +RS02Recognize: medium sim-cd +try_sector: trying sector 30000 +try_sector: header at 30000: magic cookie found +try_sector: CRC okay +GetImageFingerprint(16): cached +try_sector: fingerprint okay, header good +Root sector search at +0 successful +...augmented image found +Expected size calculated from ecc header: 49935 +--> confirmed layout variant 1 +Calculated layout for RS02 image: +data sectors = 30000 +crc sectors = 59 +protected sectors = 30061 (incl. 2 hdr sectors) +reed solomon secs = 19796 (101 roots, 154 data) +header repeats = 39 (using modulo 512) +added sectors = 19935 +total image size = 49935 +medium capacity = n.a. + +Interleaving layout: +196 sectors per ecc layer +first layer sector with CRC data 14 (sector# 30002) + +# Calling query_size() +# *** query_size(Simulated CD drive 1.00) *** +Medium size obtained from ECC header: 49935 sectors +# returned: 49935 sectors Medium "Random Image": CD-R mode 1, 49935 sectors, Ecc, created 16-07-2006. Creating new rs02-tmp.iso image. -Reading CRC information from ecc data (RS02) ... done. +Reading CRC information from ecc data (RS02) ... RS02LayoutFromImage(): returning cached layout +done. +GOOD Data md5sum +GOOD CRC md5sum +GOOD ECC md5sum All sectors successfully read. Checksums match. +CrcBuf contents, image path none (medium): + crcSize: 49935, dataSectors: 30000, coveredSectors: 30000, allSectors: 49935 + md5State: data_complete image_complete + data: cbadac3ca7b6e9bccfc889b7eaded254 + full: 72f8ca714abb3807a2767e4ffce037d1 + fp sector: 16; abe80d3600553a8dce779713afd94f3c + missing crcs: 0 -Opening rs02-tmp.iso: 49935 medium sectors. +Opening rs02-tmp.iso +ExamineUDF(File: rs02-tmp.iso) + Examining the ISO file system... + Sector 16: + Volume descriptor type = 1 + Volume descriptor version = 1 + Standard identifier = CD001 + -> primary volume descriptor: + System identifier : | | + Volume identifier : |RANDOM IMAGE | + Volume space size : 30000 sectors + Volume set size : 1 + Volume sequence size : 1 + Logical block size : 2048 + Path table size : 10 bytes + L-Path table location : 19 + Opt L-Path table location : 0 + M-Path table location : 20 + Opt M-Path table location : 0 + Volume creation date/time : 16-07-2006 10:35:46.23 + Volume modification d/t : 16-07-2006 10:35:46.23 + Volume expiration d/t : 16-07-2106 10:35:46.23 + Volume effective d/t : 16-07-2006 10:35:46.23 + File structure version : 1 + Sector 17: + Volume descriptor type = 2 + Volume descriptor version = 1 + Standard identifier = CD001 + -> supplementary volume descriptor: *skipped* + Sector 18: + Volume descriptor type = 255 + Volume descriptor version = 1 + Standard identifier = CD001 + -> volume descriptor set terminator; + end of ISO file system parsing. + Examining the UDF file system... + not yet implemented. + +ExamineECC() started +...trying RS01 +...trying RS02 +RS02Recognize: file rs02-tmp.iso +try_sector: trying sector 30000 +try_sector: header at 30000: magic cookie found +try_sector: CRC okay +GetImageFingerprint(16): read & cached +try_sector: fingerprint okay, header good +Root sector search at +0 successful +...augmented image found +Expected size calculated from ecc header: 49935 +--> confirmed layout variant 1 +Calculated layout for RS02 image: +data sectors = 30000 +crc sectors = 59 +protected sectors = 30061 (incl. 2 hdr sectors) +reed solomon secs = 19796 (101 roots, 154 data) +header repeats = 39 (using modulo 512) +added sectors = 19935 +total image size = 49935 +medium capacity = n.a. + +Interleaving layout: +196 sectors per ecc layer +first layer sector with CRC data 14 (sector# 30002) + +GetImageFingerprint(16): cached +: 49935 medium sectors. * Warning: Image "rs02-tmp.iso" already contains error correction information. * Truncating image to data part (30000 sectors). Image size is now: 30000 medium sectors. +Calculated layout for RS02 image: +data sectors = 30000 +crc sectors = 59 +protected sectors = 30061 (incl. 2 hdr sectors) +reed solomon secs = 4795 (35 roots, 220 data) +header repeats = 38 (using modulo 128) +added sectors = 4932 +total image size = 34932 +medium capacity = 35000 + +Interleaving layout: +137 sectors per ecc layer +first layer sector with CRC data 136 (sector# 30002) + Augmenting image with Method RS02: 58 MiB data, 9 MiB ecc (35 roots; 15.9% redundancy). * Warning: Using redundancies below 20% may not give * the expected data loss protection. +CrcBufValid: buffer VALID Image has been augmented with error correction data. New image size is 68 MiB (34932 sectors). +FreeCrcBuf - buffer cleared diff --git a/regtest/database/RS02_no_image b/regtest/database/RS02_no_image index c5b75ab..e2041ee 100644 --- a/regtest/database/RS02_no_image +++ b/regtest/database/RS02_no_image @@ -7,5 +7,5 @@ See the file "COPYING" for further information. no.iso: not present -medium.ecc: not present +none.file: not present diff --git a/regtest/database/RS02_read_bad_master b/regtest/database/RS02_read_bad_master index 760f31f..12cde73 100644 --- a/regtest/database/RS02_read_bad_master +++ b/regtest/database/RS02_read_bad_master @@ -170,3 +170,4 @@ CrcBuf contents, image path none (medium): full: cbadac3ca7b6e9bccfc889b7eaded254 fp sector: 16; abe80d3600553a8dce779713afd94f3c missing crcs: 0 +FreeCrcBuf - buffer cleared diff --git a/regtest/database/RS02_read_bad_master_exhaustive b/regtest/database/RS02_read_bad_master_exhaustive index f4f55f4..224e797 100644 --- a/regtest/database/RS02_read_bad_master_exhaustive +++ b/regtest/database/RS02_read_bad_master_exhaustive @@ -502,3 +502,4 @@ CrcBuf contents, image path none (medium): md5State: invalid fp sector: 16; abe80d3600553a8dce779713afd94f3c missing crcs: 16 +FreeCrcBuf - buffer cleared diff --git a/regtest/database/RS02_read_good_verbose b/regtest/database/RS02_read_good_verbose index e874718..67e5f02 100644 --- a/regtest/database/RS02_read_good_verbose +++ b/regtest/database/RS02_read_good_verbose @@ -124,3 +124,4 @@ CrcBuf contents, image path none (medium): full: 814f4c46fbb687eb43613fdfde9458cf fp sector: 16; abe80d3600553a8dce779713afd94f3c missing crcs: 0 +FreeCrcBuf - buffer cleared diff --git a/regtest/database/RS02_read_longer b/regtest/database/RS02_read_longer index a3bc0d4..5feb294 100644 --- a/regtest/database/RS02_read_longer +++ b/regtest/database/RS02_read_longer @@ -124,3 +124,4 @@ CrcBuf contents, image path none (medium): full: 814f4c46fbb687eb43613fdfde9458cf fp sector: 16; abe80d3600553a8dce779713afd94f3c missing crcs: 0 +FreeCrcBuf - buffer cleared diff --git a/regtest/database/RS02_read_modulo_glitch b/regtest/database/RS02_read_modulo_glitch index 594b345..f7b5adc 100644 --- a/regtest/database/RS02_read_modulo_glitch +++ b/regtest/database/RS02_read_modulo_glitch @@ -124,3 +124,4 @@ CrcBuf contents, image path none (medium): full: 43b5730f46547eb489b81bae16321ea2 fp sector: 16; 48a5a2186ffe363bee215f406d033aa7 missing crcs: 0 +FreeCrcBuf - buffer cleared diff --git a/regtest/database/RS02_read_modulo_glitch2 b/regtest/database/RS02_read_modulo_glitch2 index f05d1d9..0856e7b 100644 --- a/regtest/database/RS02_read_modulo_glitch2 +++ b/regtest/database/RS02_read_modulo_glitch2 @@ -125,3 +125,4 @@ CrcBuf contents, image path none (medium): full: 61fc6058150dd48c46648c2fe85f8bd7 fp sector: 16; 48a5a2186ffe363bee215f406d033aa7 missing crcs: 0 +FreeCrcBuf - buffer cleared diff --git a/regtest/database/RS02_read_modulo_glitch3 b/regtest/database/RS02_read_modulo_glitch3 index 774d123..d91f955 100644 --- a/regtest/database/RS02_read_modulo_glitch3 +++ b/regtest/database/RS02_read_modulo_glitch3 @@ -294,3 +294,4 @@ CrcBuf contents, image path none (medium): md5State: invalid fp sector: 16; 48a5a2186ffe363bee215f406d033aa7 missing crcs: 135 +FreeCrcBuf - buffer cleared diff --git a/regtest/database/RS02_read_modulo_glitch4 b/regtest/database/RS02_read_modulo_glitch4 index 1807b01..556f047 100644 --- a/regtest/database/RS02_read_modulo_glitch4 +++ b/regtest/database/RS02_read_modulo_glitch4 @@ -5720,3 +5720,4 @@ CrcBuf contents, image path none (medium): md5State: invalid fp sector: 16; 48a5a2186ffe363bee215f406d033aa7 missing crcs: 439 +FreeCrcBuf - buffer cleared diff --git a/regtest/database/RS02_read_shorter b/regtest/database/RS02_read_shorter index 37308e1..8cd8942 100644 --- a/regtest/database/RS02_read_shorter +++ b/regtest/database/RS02_read_shorter @@ -188,3 +188,4 @@ CrcBuf contents, image path none (medium): md5State: invalid fp sector: 16; abe80d3600553a8dce779713afd94f3c missing crcs: 52 +FreeCrcBuf - buffer cleared diff --git a/regtest/database/RS02_scan_longer b/regtest/database/RS02_scan_longer index d7fb010..973fdb3 100644 --- a/regtest/database/RS02_scan_longer +++ b/regtest/database/RS02_scan_longer @@ -124,3 +124,4 @@ CrcBuf contents, image path none (medium): full: 814f4c46fbb687eb43613fdfde9458cf fp sector: 16; abe80d3600553a8dce779713afd94f3c missing crcs: 0 +FreeCrcBuf - buffer cleared diff --git a/regtest/database/RS02_scan_modulo_glitch b/regtest/database/RS02_scan_modulo_glitch index 2b32335..9de9887 100644 --- a/regtest/database/RS02_scan_modulo_glitch +++ b/regtest/database/RS02_scan_modulo_glitch @@ -124,3 +124,4 @@ CrcBuf contents, image path none (medium): full: 43b5730f46547eb489b81bae16321ea2 fp sector: 16; 48a5a2186ffe363bee215f406d033aa7 missing crcs: 0 +FreeCrcBuf - buffer cleared diff --git a/regtest/database/RS02_scan_modulo_glitch2 b/regtest/database/RS02_scan_modulo_glitch2 index ec05315..d81e4be 100644 --- a/regtest/database/RS02_scan_modulo_glitch2 +++ b/regtest/database/RS02_scan_modulo_glitch2 @@ -125,3 +125,4 @@ CrcBuf contents, image path none (medium): full: 61fc6058150dd48c46648c2fe85f8bd7 fp sector: 16; 48a5a2186ffe363bee215f406d033aa7 missing crcs: 0 +FreeCrcBuf - buffer cleared diff --git a/regtest/database/RS02_scan_modulo_glitch3 b/regtest/database/RS02_scan_modulo_glitch3 index f29b881..5f1833f 100644 --- a/regtest/database/RS02_scan_modulo_glitch3 +++ b/regtest/database/RS02_scan_modulo_glitch3 @@ -294,3 +294,4 @@ CrcBuf contents, image path none (medium): md5State: invalid fp sector: 16; 48a5a2186ffe363bee215f406d033aa7 missing crcs: 135 +FreeCrcBuf - buffer cleared diff --git a/regtest/database/RS02_scan_modulo_glitch4 b/regtest/database/RS02_scan_modulo_glitch4 index 742b6c9..aad3af0 100644 --- a/regtest/database/RS02_scan_modulo_glitch4 +++ b/regtest/database/RS02_scan_modulo_glitch4 @@ -5720,3 +5720,4 @@ CrcBuf contents, image path none (medium): md5State: invalid fp sector: 16; 48a5a2186ffe363bee215f406d033aa7 missing crcs: 439 +FreeCrcBuf - buffer cleared diff --git a/regtest/database/RS02_scan_shorter b/regtest/database/RS02_scan_shorter index 344903b..37160e6 100644 --- a/regtest/database/RS02_scan_shorter +++ b/regtest/database/RS02_scan_shorter @@ -188,3 +188,4 @@ CrcBuf contents, image path none (medium): md5State: invalid fp sector: 16; abe80d3600553a8dce779713afd94f3c missing crcs: 52 +FreeCrcBuf - buffer cleared diff --git a/regtest/database/RS03f_ecc_create_after_partial_read b/regtest/database/RS03f_ecc_create_after_partial_read index 809976f..c0d8fe4 100644 --- a/regtest/database/RS03f_ecc_create_after_partial_read +++ b/regtest/database/RS03f_ecc_create_after_partial_read @@ -322,3 +322,4 @@ CrcBufValid: NOT complete Cache allocation: 120320K+8192K+5120K=130M (data+parity+descrambling) Error correction file "rs03f-tmp.ecc" created. Make sure to keep this file on a reliable medium. +FreeCrcBuf - buffer cleared diff --git a/regtest/database/RS03f_ecc_create_after_read b/regtest/database/RS03f_ecc_create_after_read index 0a60175..04a92b9 100644 --- a/regtest/database/RS03f_ecc_create_after_read +++ b/regtest/database/RS03f_ecc_create_after_read @@ -324,3 +324,4 @@ CrcBuf present, ecc file: using image MD5 sum Cache allocation: 120320K+8192K+5120K=130M (data+parity+descrambling) Error correction file "rs03f-tmp.ecc" created. Make sure to keep this file on a reliable medium. +FreeCrcBuf - buffer cleared diff --git a/regtest/database/RS03f_ecc_recreate_after_read_rs01 b/regtest/database/RS03f_ecc_recreate_after_read_rs01 index ea44160..6e197bb 100644 --- a/regtest/database/RS03f_ecc_recreate_after_read_rs01 +++ b/regtest/database/RS03f_ecc_recreate_after_read_rs01 @@ -326,3 +326,4 @@ CrcBuf present, ecc file: using image MD5 sum Cache allocation: 120320K+8192K+5120K=130M (data+parity+descrambling) Error correction file "rs03f-tmp.ecc" created. Make sure to keep this file on a reliable medium. +FreeCrcBuf - buffer cleared diff --git a/regtest/database/RS03f_ecc_recreate_after_read_rs02 b/regtest/database/RS03f_ecc_recreate_after_read_rs02 index fe6138a..e8aef62 100644 --- a/regtest/database/RS03f_ecc_recreate_after_read_rs02 +++ b/regtest/database/RS03f_ecc_recreate_after_read_rs02 @@ -212,3 +212,4 @@ CrcBuf present, ecc file: using image MD5 sum Cache allocation: 120320K+8192K+5120K=130M (data+parity+descrambling) Error correction file "rs03f-tmp.ecc" created. Make sure to keep this file on a reliable medium. +FreeCrcBuf - buffer cleared diff --git a/regtest/database/RS03f_ecc_recreate_after_read_rs03f b/regtest/database/RS03f_ecc_recreate_after_read_rs03f index c9e2b7d..0f22418 100644 --- a/regtest/database/RS03f_ecc_recreate_after_read_rs03f +++ b/regtest/database/RS03f_ecc_recreate_after_read_rs03f @@ -340,3 +340,4 @@ CrcBuf present, ecc file: using image MD5 sum Cache allocation: 120320K+8192K+5120K=130M (data+parity+descrambling) Error correction file "rs03f-tmp.ecc" created. Make sure to keep this file on a reliable medium. +FreeCrcBuf - buffer cleared diff --git a/regtest/database/RS03f_ecc_recreate_after_read_rs03i b/regtest/database/RS03f_ecc_recreate_after_read_rs03i index a36766d..8174ed8 100644 --- a/regtest/database/RS03f_ecc_recreate_after_read_rs03i +++ b/regtest/database/RS03f_ecc_recreate_after_read_rs03i @@ -328,3 +328,4 @@ CrcBuf present, ecc file: using image MD5 sum Cache allocation: 120320K+8192K+5120K=130M (data+parity+descrambling) Error correction file "rs03f-tmp.ecc" created. Make sure to keep this file on a reliable medium. +FreeCrcBuf - buffer cleared diff --git a/regtest/database/RS03f_read_bad_header b/regtest/database/RS03f_read_bad_header index 00a72b9..2a8c3f1 100644 --- a/regtest/database/RS03f_read_bad_header +++ b/regtest/database/RS03f_read_bad_header @@ -193,3 +193,4 @@ CrcBuf contents, image path none (medium): full: 9503f278d4550a9507a317664481adf8 fp sector: 16; 15c0fd35a0cfa0f83b9ccbd8604c2592 missing crcs: 0 +FreeCrcBuf - buffer cleared diff --git a/regtest/database/RS03f_read_good_verbose b/regtest/database/RS03f_read_good_verbose index 78c00d1..3ca072b 100644 --- a/regtest/database/RS03f_read_good_verbose +++ b/regtest/database/RS03f_read_good_verbose @@ -191,3 +191,4 @@ CrcBuf contents, image path none (medium): full: 9503f278d4550a9507a317664481adf8 fp sector: 16; 15c0fd35a0cfa0f83b9ccbd8604c2592 missing crcs: 0 +FreeCrcBuf - buffer cleared diff --git a/regtest/database/RS03f_read_longer b/regtest/database/RS03f_read_longer index 8dec0e9..d80d409 100644 --- a/regtest/database/RS03f_read_longer +++ b/regtest/database/RS03f_read_longer @@ -191,3 +191,4 @@ CrcBuf contents, image path none (medium): full: 9503f278d4550a9507a317664481adf8 fp sector: 16; 15c0fd35a0cfa0f83b9ccbd8604c2592 missing crcs: 0 +FreeCrcBuf - buffer cleared diff --git a/regtest/database/RS03f_scan_bad_header b/regtest/database/RS03f_scan_bad_header index a37cb27..0799700 100644 --- a/regtest/database/RS03f_scan_bad_header +++ b/regtest/database/RS03f_scan_bad_header @@ -193,3 +193,4 @@ CrcBuf contents, image path none (medium): full: 9503f278d4550a9507a317664481adf8 fp sector: 16; 15c0fd35a0cfa0f83b9ccbd8604c2592 missing crcs: 0 +FreeCrcBuf - buffer cleared diff --git a/regtest/database/RS03f_scan_ecc_header_crc_error b/regtest/database/RS03f_scan_ecc_header_crc_error index c05103f..a0517cb 100644 --- a/regtest/database/RS03f_scan_ecc_header_crc_error +++ b/regtest/database/RS03f_scan_ecc_header_crc_error @@ -193,3 +193,4 @@ CrcBuf contents, image path none (medium): full: 9503f278d4550a9507a317664481adf8 fp sector: 16; 15c0fd35a0cfa0f83b9ccbd8604c2592 missing crcs: 0 +FreeCrcBuf - buffer cleared diff --git a/regtest/database/RS03f_scan_good_verbose b/regtest/database/RS03f_scan_good_verbose index 2a6aec8..2d4f169 100644 --- a/regtest/database/RS03f_scan_good_verbose +++ b/regtest/database/RS03f_scan_good_verbose @@ -191,3 +191,4 @@ CrcBuf contents, image path none (medium): full: 9503f278d4550a9507a317664481adf8 fp sector: 16; 15c0fd35a0cfa0f83b9ccbd8604c2592 missing crcs: 0 +FreeCrcBuf - buffer cleared diff --git a/regtest/database/RS03f_scan_longer b/regtest/database/RS03f_scan_longer index 608b699..5d1684f 100644 --- a/regtest/database/RS03f_scan_longer +++ b/regtest/database/RS03f_scan_longer @@ -191,3 +191,4 @@ CrcBuf contents, image path none (medium): full: 9503f278d4550a9507a317664481adf8 fp sector: 16; 15c0fd35a0cfa0f83b9ccbd8604c2592 missing crcs: 0 +FreeCrcBuf - buffer cleared diff --git a/regtest/database/RS03f_scan_missing_ecc_header b/regtest/database/RS03f_scan_missing_ecc_header index b849315..9bab8c8 100644 --- a/regtest/database/RS03f_scan_missing_ecc_header +++ b/regtest/database/RS03f_scan_missing_ecc_header @@ -193,3 +193,4 @@ CrcBuf contents, image path none (medium): full: 9503f278d4550a9507a317664481adf8 fp sector: 16; 15c0fd35a0cfa0f83b9ccbd8604c2592 missing crcs: 0 +FreeCrcBuf - buffer cleared diff --git a/regtest/database/RS03f_scan_missing_ecc_header_and_crc b/regtest/database/RS03f_scan_missing_ecc_header_and_crc index 09fba7c..cfb8372 100644 --- a/regtest/database/RS03f_scan_missing_ecc_header_and_crc +++ b/regtest/database/RS03f_scan_missing_ecc_header_and_crc @@ -193,3 +193,4 @@ CrcBuf contents, image path none (medium): full: 9503f278d4550a9507a317664481adf8 fp sector: 16; 15c0fd35a0cfa0f83b9ccbd8604c2592 missing crcs: 3510 +FreeCrcBuf - buffer cleared diff --git a/regtest/database/RS03f_scan_missing_ecc_header_and_defective_crc b/regtest/database/RS03f_scan_missing_ecc_header_and_defective_crc index 26d954f..a1175ac 100644 --- a/regtest/database/RS03f_scan_missing_ecc_header_and_defective_crc +++ b/regtest/database/RS03f_scan_missing_ecc_header_and_defective_crc @@ -194,3 +194,4 @@ CrcBuf contents, image path none (medium): full: 9503f278d4550a9507a317664481adf8 fp sector: 16; 15c0fd35a0cfa0f83b9ccbd8604c2592 missing crcs: 234 +FreeCrcBuf - buffer cleared diff --git a/regtest/database/RS03i_missing_header b/regtest/database/RS03i_missing_header index 9da34a8..b3ca9eb 100644 --- a/regtest/database/RS03i_missing_header +++ b/regtest/database/RS03i_missing_header @@ -251,4 +251,13 @@ Error correction properties: Data integrity: - medium sectors : 359295 total / 235219 data -* quick mode : image NOT scanned +CalcRS03Layout(): returning cached layout (augmented) +* missing sector : 235219 +* BAD image/file : 1 sectors missing + ... data section : 1 sectors missing; 0 CRC errors + ... crc section : 0 sectors missing + ... ecc section : 0 sectors missing +* Ecc block test : 1408 good, 1 bad; 325 bad sub blocks +- erasure counts : avg = 1.0; worst = 1 per ecc block. +- prognosis : 359295 of 359295 sectors recoverable (100.0%) +FreeCrcBuf - buffer cleared diff --git a/regtest/database/RS03i_missing_header2 b/regtest/database/RS03i_missing_header2 index 3eb5a0a..98134da 100644 --- a/regtest/database/RS03i_missing_header2 +++ b/regtest/database/RS03i_missing_header2 @@ -350,4 +350,30 @@ Error correction properties: Data integrity: - medium sectors : 359295 total / 235219 data -* quick mode : image NOT scanned +CalcRS03Layout(): returning cached layout (augmented) +* missing sector : 169080 +* missing sector : 170489 +* missing sector : 171898 +* missing sector : 173307 +* missing sector : 174716 +* missing sector : 176125 +* missing sector : 177534 +* missing sector : 178943 +* missing sector : 180352 +* missing sector : 181761 +* missing sector : 183170 +* missing sector : 184579 +* missing sector : 185988 +* missing sector : 187397 +* missing sector : 188806 +* missing sector : 190215 +* missing sector : 235219 +* missing sector : 235303 +* BAD image/file : 18 sectors missing + ... data section : 17 sectors missing; 0 CRC errors + ... crc section : 1 sectors missing + ... ecc section : 0 sectors missing +* Ecc block test : 1407 good, 2 bad; 2373 bad sub blocks +- erasure counts : avg = 9.0; worst = 17 per ecc block. +- prognosis : 359295 of 359295 sectors recoverable (100.0%) +FreeCrcBuf - buffer cleared diff --git a/regtest/database/RS03i_missing_header3 b/regtest/database/RS03i_missing_header3 index 5e4c649..62387a7 100644 --- a/regtest/database/RS03i_missing_header3 +++ b/regtest/database/RS03i_missing_header3 @@ -1,4 +1,4 @@ -1f6512e19177b3d371da6843711a58cf +2ee5510fa6e73321c2759f89ac018026 ignore This software comes with ABSOLUTELY NO WARRANTY. This is free software and you are welcome to redistribute it @@ -304,250 +304,109 @@ RS03: try number = 161, reading sector 343796 RS03: try number = 162, reading sector 345205 RS03: try number = 163, reading sector 346614 RS03: try number = 164, reading sector 348023 --> 136 untested layers remaining +-> 87 untested layers remaining - layer slice 1 -RS03: try number = 165, reading sector 140901 -RS03: try number = 166, reading sector 142310 -RS03: try number = 167, reading sector 143719 -RS03: try number = 168, reading sector 145128 -RS03: try number = 169, reading sector 146537 -RS03: try number = 170, reading sector 147946 -RS03: try number = 171, reading sector 149355 -RS03: try number = 172, reading sector 150764 -RS03: try number = 173, reading sector 152173 -RS03: try number = 174, reading sector 153582 -RS03: try number = 175, reading sector 154991 -RS03: try number = 176, reading sector 156400 -RS03: try number = 177, reading sector 157809 -RS03: try number = 178, reading sector 159218 -RS03: try number = 179, reading sector 160627 -RS03: try number = 180, reading sector 162036 -RS03: try number = 181, reading sector 163445 -RS03: try number = 182, reading sector 164854 -RS03: try number = 183, reading sector 166263 -RS03: try number = 184, reading sector 167672 -RS03: try number = 185, reading sector 169081 -RS03: try number = 186, reading sector 170490 -RS03: try number = 187, reading sector 171899 -RS03: try number = 188, reading sector 173308 -RS03: try number = 189, reading sector 174717 -RS03: try number = 190, reading sector 176126 -RS03: try number = 191, reading sector 177535 -RS03: try number = 192, reading sector 178944 -RS03: try number = 193, reading sector 180353 -RS03: try number = 194, reading sector 181762 -RS03: try number = 195, reading sector 183171 -RS03: try number = 196, reading sector 184580 -RS03: try number = 197, reading sector 185989 -RS03: try number = 198, reading sector 187398 -RS03: try number = 199, reading sector 188807 -RS03: try number = 200, reading sector 190216 -RS03: try number = 201, reading sector 191625 -RS03: try number = 202, reading sector 193034 -RS03: try number = 203, reading sector 194443 -RS03: try number = 204, reading sector 195852 -RS03: try number = 205, reading sector 197261 -RS03: try number = 206, reading sector 198670 -RS03: try number = 207, reading sector 200079 -RS03: try number = 208, reading sector 201488 -RS03: try number = 209, reading sector 202897 -RS03: try number = 210, reading sector 204306 -RS03: try number = 211, reading sector 205715 -RS03: try number = 212, reading sector 207124 -RS03: try number = 213, reading sector 208533 -RS03: try number = 214, reading sector 209942 -RS03: try number = 215, reading sector 211351 -RS03: try number = 216, reading sector 212760 -RS03: try number = 217, reading sector 214169 -RS03: try number = 218, reading sector 215578 -RS03: try number = 219, reading sector 216987 -RS03: try number = 220, reading sector 218396 -RS03: try number = 221, reading sector 219805 -RS03: try number = 222, reading sector 221214 -RS03: try number = 223, reading sector 222623 -RS03: try number = 224, reading sector 224032 -RS03: try number = 225, reading sector 225441 -RS03: try number = 226, reading sector 226850 -RS03: try number = 227, reading sector 228259 -RS03: try number = 228, reading sector 229668 -RS03: try number = 229, reading sector 231077 -RS03: try number = 230, reading sector 232486 -RS03: try number = 231, reading sector 233895 -RS03: try number = 232, reading sector 235304 +RS03: try number = 165, reading sector 211351 +RS03: try number = 166, reading sector 212760 +RS03: try number = 167, reading sector 214169 +RS03: try number = 168, reading sector 215578 +RS03: try number = 169, reading sector 216987 +RS03: try number = 170, reading sector 218396 +RS03: try number = 171, reading sector 219805 +RS03: try number = 172, reading sector 221214 +RS03: try number = 173, reading sector 222623 +RS03: try number = 174, reading sector 224032 +RS03: try number = 175, reading sector 225441 +RS03: try number = 176, reading sector 226850 +RS03: try number = 177, reading sector 228259 +RS03: try number = 178, reading sector 229668 +RS03: try number = 179, reading sector 231077 +RS03: try number = 180, reading sector 232486 +RS03: try number = 181, reading sector 233895 +RS03: try number = 182, reading sector 235304 .. invalid CRC block 235304 -RS03: try number = 233, reading sector 236713 -RS03: try number = 234, reading sector 238122 -RS03: try number = 235, reading sector 239531 -RS03: try number = 236, reading sector 240940 -RS03: try number = 237, reading sector 242349 -RS03: try number = 238, reading sector 243758 -RS03: try number = 239, reading sector 245167 -RS03: try number = 240, reading sector 246576 -RS03: try number = 241, reading sector 247985 -RS03: try number = 242, reading sector 249394 -RS03: try number = 243, reading sector 250803 -RS03: try number = 244, reading sector 252212 -RS03: try number = 245, reading sector 253621 -RS03: try number = 246, reading sector 255030 -RS03: try number = 247, reading sector 256439 -RS03: try number = 248, reading sector 257848 -RS03: try number = 249, reading sector 259257 -RS03: try number = 250, reading sector 260666 -RS03: try number = 251, reading sector 262075 -RS03: try number = 252, reading sector 263484 -RS03: try number = 253, reading sector 264893 -RS03: try number = 254, reading sector 266302 -RS03: try number = 255, reading sector 267711 -RS03: try number = 256, reading sector 269120 -RS03: try number = 257, reading sector 270529 -RS03: try number = 258, reading sector 271938 -RS03: try number = 259, reading sector 273347 -RS03: try number = 260, reading sector 274756 -RS03: try number = 261, reading sector 276165 -RS03: try number = 262, reading sector 277574 -RS03: try number = 263, reading sector 278983 -RS03: try number = 264, reading sector 280392 -RS03: try number = 265, reading sector 281801 -RS03: try number = 266, reading sector 283210 -RS03: try number = 267, reading sector 284619 -RS03: try number = 268, reading sector 286028 -RS03: try number = 269, reading sector 287437 -RS03: try number = 270, reading sector 288846 -RS03: try number = 271, reading sector 290255 -RS03: try number = 272, reading sector 291664 -RS03: try number = 273, reading sector 293073 -RS03: try number = 274, reading sector 294482 -RS03: try number = 275, reading sector 295891 -RS03: try number = 276, reading sector 297300 -RS03: try number = 277, reading sector 298709 -RS03: try number = 278, reading sector 300118 -RS03: try number = 279, reading sector 301527 -RS03: try number = 280, reading sector 302936 -RS03: try number = 281, reading sector 304345 -RS03: try number = 282, reading sector 305754 -RS03: try number = 283, reading sector 307163 -RS03: try number = 284, reading sector 308572 -RS03: try number = 285, reading sector 309981 -RS03: try number = 286, reading sector 311390 -RS03: try number = 287, reading sector 312799 -RS03: try number = 288, reading sector 314208 -RS03: try number = 289, reading sector 315617 -RS03: try number = 290, reading sector 317026 -RS03: try number = 291, reading sector 318435 -RS03: try number = 292, reading sector 319844 -RS03: try number = 293, reading sector 321253 -RS03: try number = 294, reading sector 322662 -RS03: try number = 295, reading sector 324071 -RS03: try number = 296, reading sector 325480 -RS03: try number = 297, reading sector 326889 -RS03: try number = 298, reading sector 328298 -RS03: try number = 299, reading sector 329707 -RS03: try number = 300, reading sector 331116 --> 32 untested layers remaining +RS03: try number = 183, reading sector 236713 +RS03: try number = 184, reading sector 238122 +RS03: try number = 185, reading sector 239531 +RS03: try number = 186, reading sector 240940 +RS03: try number = 187, reading sector 242349 +RS03: try number = 188, reading sector 243758 +RS03: try number = 189, reading sector 245167 +RS03: try number = 190, reading sector 246576 +RS03: try number = 191, reading sector 247985 +RS03: try number = 192, reading sector 249394 +RS03: try number = 193, reading sector 250803 +RS03: try number = 194, reading sector 252212 +RS03: try number = 195, reading sector 253621 +RS03: try number = 196, reading sector 255030 +RS03: try number = 197, reading sector 256439 +RS03: try number = 198, reading sector 257848 +RS03: try number = 199, reading sector 259257 +RS03: try number = 200, reading sector 260666 +RS03: try number = 201, reading sector 262075 +RS03: try number = 202, reading sector 263484 +RS03: try number = 203, reading sector 264893 +RS03: try number = 204, reading sector 266302 +RS03: try number = 205, reading sector 267711 +RS03: try number = 206, reading sector 269120 +RS03: try number = 207, reading sector 270529 +RS03: try number = 208, reading sector 271938 +RS03: try number = 209, reading sector 273347 +RS03: try number = 210, reading sector 274756 +RS03: try number = 211, reading sector 276165 +RS03: try number = 212, reading sector 277574 +RS03: try number = 213, reading sector 278983 +RS03: try number = 214, reading sector 280392 +RS03: try number = 215, reading sector 281801 +RS03: try number = 216, reading sector 283210 +RS03: try number = 217, reading sector 284619 +RS03: try number = 218, reading sector 286028 +RS03: try number = 219, reading sector 287437 +RS03: try number = 220, reading sector 288846 +RS03: try number = 221, reading sector 290255 +RS03: try number = 222, reading sector 291664 +RS03: try number = 223, reading sector 293073 +RS03: try number = 224, reading sector 294482 +RS03: try number = 225, reading sector 295891 +RS03: try number = 226, reading sector 297300 +RS03: try number = 227, reading sector 298709 +RS03: try number = 228, reading sector 300118 +RS03: try number = 229, reading sector 301527 +RS03: try number = 230, reading sector 302936 +RS03: try number = 231, reading sector 304345 +RS03: try number = 232, reading sector 305754 +RS03: try number = 233, reading sector 307163 +RS03: try number = 234, reading sector 308572 +RS03: try number = 235, reading sector 309981 +RS03: try number = 236, reading sector 311390 +RS03: try number = 237, reading sector 312799 +RS03: try number = 238, reading sector 314208 +RS03: try number = 239, reading sector 315617 +RS03: try number = 240, reading sector 317026 +RS03: try number = 241, reading sector 318435 +RS03: try number = 242, reading sector 319844 +RS03: try number = 243, reading sector 321253 +RS03: try number = 244, reading sector 322662 +RS03: try number = 245, reading sector 324071 +RS03: try number = 246, reading sector 325480 +RS03: try number = 247, reading sector 326889 +RS03: try number = 248, reading sector 328298 +RS03: try number = 249, reading sector 329707 +RS03: try number = 250, reading sector 331116 +RS03: try number = 251, reading sector 332525 +-> 1 untested layers remaining - layer slice 2 -RS03: try number = 301, reading sector 154992 -RS03: try number = 302, reading sector 156401 -RS03: try number = 303, reading sector 157810 -RS03: try number = 304, reading sector 159219 -RS03: try number = 305, reading sector 160628 -RS03: try number = 306, reading sector 162037 -RS03: try number = 307, reading sector 163446 -RS03: try number = 308, reading sector 164855 -RS03: try number = 309, reading sector 166264 -RS03: try number = 310, reading sector 167673 -RS03: try number = 311, reading sector 169082 -RS03: try number = 312, reading sector 170491 -RS03: try number = 313, reading sector 171900 -RS03: try number = 314, reading sector 173309 -RS03: try number = 315, reading sector 174718 -RS03: try number = 316, reading sector 176127 -RS03: try number = 317, reading sector 177536 -RS03: try number = 318, reading sector 178945 -RS03: try number = 319, reading sector 180354 -RS03: try number = 320, reading sector 181763 -RS03: try number = 321, reading sector 183172 -RS03: try number = 322, reading sector 184581 -RS03: try number = 323, reading sector 185990 -RS03: try number = 324, reading sector 187399 -RS03: try number = 325, reading sector 188808 -RS03: try number = 326, reading sector 190217 -RS03: try number = 327, reading sector 191626 -RS03: try number = 328, reading sector 193035 -RS03: try number = 329, reading sector 194444 -RS03: try number = 330, reading sector 195853 -RS03: try number = 331, reading sector 197262 -RS03: try number = 332, reading sector 235305 --> 32 untested layers remaining +RS03: try number = 252, reading sector 235305 +-> 1 untested layers remaining - layer slice 3 -RS03: try number = 333, reading sector 154993 -RS03: try number = 334, reading sector 156402 -RS03: try number = 335, reading sector 157811 -RS03: try number = 336, reading sector 159220 -RS03: try number = 337, reading sector 160629 -RS03: try number = 338, reading sector 162038 -RS03: try number = 339, reading sector 163447 -RS03: try number = 340, reading sector 164856 -RS03: try number = 341, reading sector 166265 -RS03: try number = 342, reading sector 167674 -RS03: try number = 343, reading sector 169083 -RS03: try number = 344, reading sector 170492 -RS03: try number = 345, reading sector 171901 -RS03: try number = 346, reading sector 173310 -RS03: try number = 347, reading sector 174719 -RS03: try number = 348, reading sector 176128 -RS03: try number = 349, reading sector 177537 -RS03: try number = 350, reading sector 178946 -RS03: try number = 351, reading sector 180355 -RS03: try number = 352, reading sector 181764 -RS03: try number = 353, reading sector 183173 -RS03: try number = 354, reading sector 184582 -RS03: try number = 355, reading sector 185991 -RS03: try number = 356, reading sector 187400 -RS03: try number = 357, reading sector 188809 -RS03: try number = 358, reading sector 190218 -RS03: try number = 359, reading sector 191627 -RS03: try number = 360, reading sector 193036 -RS03: try number = 361, reading sector 194445 -RS03: try number = 362, reading sector 195854 -RS03: try number = 363, reading sector 197263 -RS03: try number = 364, reading sector 235306 +RS03: try number = 253, reading sector 235306 .. invalid CRC block 235306 --> 31 untested layers remaining +-> 1 untested layers remaining - layer slice 4 -RS03: try number = 365, reading sector 154994 -RS03: try number = 366, reading sector 156403 -RS03: try number = 367, reading sector 157812 -RS03: try number = 368, reading sector 159221 -RS03: try number = 369, reading sector 160630 -RS03: try number = 370, reading sector 162039 -RS03: try number = 371, reading sector 163448 -RS03: try number = 372, reading sector 164857 -RS03: try number = 373, reading sector 166266 -RS03: try number = 374, reading sector 167675 -RS03: try number = 375, reading sector 169084 -RS03: try number = 376, reading sector 170493 -RS03: try number = 377, reading sector 171902 -RS03: try number = 378, reading sector 173311 -RS03: try number = 379, reading sector 174720 -RS03: try number = 380, reading sector 176129 -RS03: try number = 381, reading sector 177538 -RS03: try number = 382, reading sector 178947 -RS03: try number = 383, reading sector 180356 -RS03: try number = 384, reading sector 181765 -RS03: try number = 385, reading sector 183174 -RS03: try number = 386, reading sector 184583 -RS03: try number = 387, reading sector 185992 -RS03: try number = 388, reading sector 187401 -RS03: try number = 389, reading sector 188810 -RS03: try number = 390, reading sector 190219 -RS03: try number = 391, reading sector 191628 -RS03: try number = 392, reading sector 193037 -RS03: try number = 393, reading sector 194446 -RS03: try number = 394, reading sector 195855 -RS03: try number = 395, reading sector 235307 +RS03: try number = 254, reading sector 235307 -> 1 untested layers remaining - layer slice 5 -RS03: try number = 396, reading sector 235308 +RS03: try number = 255, reading sector 235308 ** Success: sector 235308, rediscovered format with 87 roots ...augmented image found GetImageFingerprint(16): read & cached @@ -575,4 +434,132 @@ Error correction properties: Data integrity: - medium sectors : 359295 total / 235219 data -* quick mode : image NOT scanned +CalcRS03Layout(): returning cached layout (augmented) +* missing sectors : 154991 - 154993 +* missing sectors : 156400 - 156402 +* missing sectors : 157809 - 157811 +* missing sectors : 159218 - 159220 +* missing sectors : 160627 - 160629 +* missing sectors : 162036 - 162038 +* missing sectors : 163445 - 163447 +* missing sectors : 164854 - 164856 +* missing sectors : 166263 - 166265 +* missing sectors : 167672 - 167674 +* missing sectors : 169081 - 169083 +* missing sectors : 170490 - 170492 +* missing sectors : 171899 - 171901 +* missing sectors : 173308 - 173310 +* missing sectors : 174717 - 174719 +* missing sectors : 176126 - 176128 +* missing sectors : 177535 - 177537 +* missing sectors : 178944 - 178946 +* missing sectors : 180353 - 180355 +* missing sectors : 181762 - 181764 +* missing sectors : 183171 - 183173 +* missing sectors : 184580 - 184582 +* missing sectors : 185989 - 185991 +* missing sectors : 187398 - 187400 +* missing sectors : 188807 - 188809 +* missing sectors : 190216 - 190218 +* missing sectors : 191625 - 191627 +* missing sectors : 193034 - 193036 +* missing sectors : 194443 - 194445 +* missing sectors : 195852 - 195854 +* missing sectors : 197261 - 197262 +* missing sector : 211350 +* missing sector : 212759 +* missing sector : 214168 +* missing sector : 215577 +* missing sector : 216986 +* missing sector : 218395 +* missing sector : 219804 +* missing sector : 221213 +* missing sector : 222622 +* missing sector : 224031 +* missing sector : 225440 +* missing sector : 226849 +* missing sector : 228258 +* missing sector : 229667 +* missing sector : 231076 +* missing sector : 232485 +* missing sector : 233894 +* missing sector : 235219 +* missing sector : 235303 +* missing sector : 235305 +* missing sector : 235307 +* missing sector : 236712 +* missing sector : 238121 +* missing sector : 239530 +* missing sector : 240939 +* missing sector : 242348 +* missing sector : 243757 +* missing sector : 245166 +* missing sector : 246575 +* missing sector : 247984 +* missing sector : 249393 +* missing sector : 250802 +* missing sector : 252211 +* missing sector : 253620 +* missing sector : 255029 +* missing sector : 256438 +* missing sector : 257847 +* missing sector : 259256 +* missing sector : 260665 +* missing sector : 262074 +* missing sector : 263483 +* missing sector : 264892 +* missing sector : 266301 +* missing sector : 267710 +* missing sector : 269119 +* missing sector : 270528 +* missing sector : 271937 +* missing sector : 273346 +* missing sector : 274755 +* missing sector : 276164 +* missing sector : 277573 +* missing sector : 278982 +* missing sector : 280391 +* missing sector : 281800 +* missing sector : 283209 +* missing sector : 284618 +* missing sector : 286027 +* missing sector : 287436 +* missing sector : 288845 +* missing sector : 290254 +* missing sector : 291663 +* missing sector : 293072 +* missing sector : 294481 +* missing sector : 295890 +* missing sector : 297299 +* missing sector : 298708 +* missing sector : 300117 +* missing sector : 301526 +* missing sector : 302935 +* missing sector : 304344 +* missing sector : 305753 +* missing sector : 307162 +* missing sector : 308571 +* missing sector : 309980 +* missing sector : 311389 +* missing sector : 312798 +* missing sector : 314207 +* missing sector : 315616 +* missing sector : 317025 +* missing sector : 318434 +* missing sector : 319843 +* missing sector : 321252 +* missing sector : 322661 +* missing sector : 324070 +* missing sector : 325479 +* missing sector : 326888 +* missing sector : 328297 +* missing sector : 329706 +* missing sector : 331115 +* missing sector : 332524 + ... data section : 110 sectors missing; 0 CRC errors + ... crc section : 3 sectors missing; 2 signature errors + ... ecc section : 69 sectors missing +* Ecc block test : 1403 good, 6 bad; 9268 bad sub blocks +- erasure counts : avg = 30.3; worst = 87 per ecc block. +- prognosis : 359295 of 359295 sectors recoverable (100.0%) +FreeCrcBuf - buffer cleared diff --git a/regtest/database/RS03i_missing_header4 b/regtest/database/RS03i_missing_header4 index 7e4807c..a72dab4 100644 --- a/regtest/database/RS03i_missing_header4 +++ b/regtest/database/RS03i_missing_header4 @@ -1,4 +1,4 @@ -2361931815183df339bc7602d900a253 +5357074813901f6437683ddeb72fda8d ignore This software comes with ABSOLUTELY NO WARRANTY. This is free software and you are welcome to redistribute it @@ -304,7 +304,7 @@ RS03: try number = 161, reading sector 343796 RS03: try number = 162, reading sector 345205 RS03: try number = 163, reading sector 346614 RS03: try number = 164, reading sector 348023 --> 136 untested layers remaining +-> 87 untested layers remaining - layer slice 1 RS03: try number = 165, reading sector 140901 RS03: try number = 166, reading sector 142310 @@ -394,4369 +394,4320 @@ RS03: try number = 248, reading sector 257848 RS03: try number = 249, reading sector 259257 RS03: try number = 250, reading sector 260666 RS03: try number = 251, reading sector 262075 -RS03: try number = 252, reading sector 263484 -RS03: try number = 253, reading sector 264893 -RS03: try number = 254, reading sector 266302 -RS03: try number = 255, reading sector 267711 -RS03: try number = 256, reading sector 269120 -RS03: try number = 257, reading sector 270529 -RS03: try number = 258, reading sector 271938 -RS03: try number = 259, reading sector 273347 -RS03: try number = 260, reading sector 274756 -RS03: try number = 261, reading sector 276165 -RS03: try number = 262, reading sector 277574 -RS03: try number = 263, reading sector 278983 -RS03: try number = 264, reading sector 280392 -RS03: try number = 265, reading sector 281801 -RS03: try number = 266, reading sector 283210 -RS03: try number = 267, reading sector 284619 -RS03: try number = 268, reading sector 286028 -RS03: try number = 269, reading sector 287437 -RS03: try number = 270, reading sector 288846 -RS03: try number = 271, reading sector 290255 -RS03: try number = 272, reading sector 291664 -RS03: try number = 273, reading sector 293073 -RS03: try number = 274, reading sector 294482 -RS03: try number = 275, reading sector 295891 -RS03: try number = 276, reading sector 297300 -RS03: try number = 277, reading sector 298709 -RS03: try number = 278, reading sector 300118 -RS03: try number = 279, reading sector 301527 -RS03: try number = 280, reading sector 302936 -RS03: try number = 281, reading sector 304345 -RS03: try number = 282, reading sector 305754 -RS03: try number = 283, reading sector 307163 -RS03: try number = 284, reading sector 308572 -RS03: try number = 285, reading sector 309981 -RS03: try number = 286, reading sector 311390 -RS03: try number = 287, reading sector 312799 -RS03: try number = 288, reading sector 314208 -RS03: try number = 289, reading sector 315617 -RS03: try number = 290, reading sector 317026 -RS03: try number = 291, reading sector 318435 -RS03: try number = 292, reading sector 319844 -RS03: try number = 293, reading sector 321253 -RS03: try number = 294, reading sector 322662 -RS03: try number = 295, reading sector 324071 -RS03: try number = 296, reading sector 325480 -RS03: try number = 297, reading sector 326889 -RS03: try number = 298, reading sector 328298 -RS03: try number = 299, reading sector 329707 -RS03: try number = 300, reading sector 331116 -> 32 untested layers remaining - layer slice 2 -RS03: try number = 301, reading sector 154992 -RS03: try number = 302, reading sector 156401 -RS03: try number = 303, reading sector 157810 -RS03: try number = 304, reading sector 159219 -RS03: try number = 305, reading sector 160628 -RS03: try number = 306, reading sector 162037 -RS03: try number = 307, reading sector 163446 -RS03: try number = 308, reading sector 164855 -RS03: try number = 309, reading sector 166264 -RS03: try number = 310, reading sector 167673 -RS03: try number = 311, reading sector 169082 -RS03: try number = 312, reading sector 170491 -RS03: try number = 313, reading sector 171900 -RS03: try number = 314, reading sector 173309 -RS03: try number = 315, reading sector 174718 -RS03: try number = 316, reading sector 176127 -RS03: try number = 317, reading sector 177536 -RS03: try number = 318, reading sector 178945 -RS03: try number = 319, reading sector 180354 -RS03: try number = 320, reading sector 181763 -RS03: try number = 321, reading sector 183172 -RS03: try number = 322, reading sector 184581 -RS03: try number = 323, reading sector 185990 -RS03: try number = 324, reading sector 187399 -RS03: try number = 325, reading sector 188808 -RS03: try number = 326, reading sector 190217 -RS03: try number = 327, reading sector 191626 -RS03: try number = 328, reading sector 193035 -RS03: try number = 329, reading sector 194444 -RS03: try number = 330, reading sector 195853 -RS03: try number = 331, reading sector 197262 -RS03: try number = 332, reading sector 235305 +RS03: try number = 252, reading sector 154992 +RS03: try number = 253, reading sector 156401 +RS03: try number = 254, reading sector 157810 +RS03: try number = 255, reading sector 159219 +RS03: try number = 256, reading sector 160628 +RS03: try number = 257, reading sector 162037 +RS03: try number = 258, reading sector 163446 +RS03: try number = 259, reading sector 164855 +RS03: try number = 260, reading sector 166264 +RS03: try number = 261, reading sector 167673 +RS03: try number = 262, reading sector 169082 +RS03: try number = 263, reading sector 170491 +RS03: try number = 264, reading sector 171900 +RS03: try number = 265, reading sector 173309 +RS03: try number = 266, reading sector 174718 +RS03: try number = 267, reading sector 176127 +RS03: try number = 268, reading sector 177536 +RS03: try number = 269, reading sector 178945 +RS03: try number = 270, reading sector 180354 +RS03: try number = 271, reading sector 181763 +RS03: try number = 272, reading sector 183172 +RS03: try number = 273, reading sector 184581 +RS03: try number = 274, reading sector 185990 +RS03: try number = 275, reading sector 187399 +RS03: try number = 276, reading sector 188808 +RS03: try number = 277, reading sector 190217 +RS03: try number = 278, reading sector 191626 +RS03: try number = 279, reading sector 193035 +RS03: try number = 280, reading sector 194444 +RS03: try number = 281, reading sector 195853 +RS03: try number = 282, reading sector 197262 +RS03: try number = 283, reading sector 235305 -> 32 untested layers remaining - layer slice 3 -RS03: try number = 333, reading sector 154993 -RS03: try number = 334, reading sector 156402 -RS03: try number = 335, reading sector 157811 -RS03: try number = 336, reading sector 159220 -RS03: try number = 337, reading sector 160629 -RS03: try number = 338, reading sector 162038 -RS03: try number = 339, reading sector 163447 -RS03: try number = 340, reading sector 164856 -RS03: try number = 341, reading sector 166265 -RS03: try number = 342, reading sector 167674 -RS03: try number = 343, reading sector 169083 -RS03: try number = 344, reading sector 170492 -RS03: try number = 345, reading sector 171901 -RS03: try number = 346, reading sector 173310 -RS03: try number = 347, reading sector 174719 -RS03: try number = 348, reading sector 176128 -RS03: try number = 349, reading sector 177537 -RS03: try number = 350, reading sector 178946 -RS03: try number = 351, reading sector 180355 -RS03: try number = 352, reading sector 181764 -RS03: try number = 353, reading sector 183173 -RS03: try number = 354, reading sector 184582 -RS03: try number = 355, reading sector 185991 -RS03: try number = 356, reading sector 187400 -RS03: try number = 357, reading sector 188809 -RS03: try number = 358, reading sector 190218 -RS03: try number = 359, reading sector 191627 -RS03: try number = 360, reading sector 193036 -RS03: try number = 361, reading sector 194445 -RS03: try number = 362, reading sector 195854 -RS03: try number = 363, reading sector 197263 -RS03: try number = 364, reading sector 235306 +RS03: try number = 284, reading sector 154993 +RS03: try number = 285, reading sector 156402 +RS03: try number = 286, reading sector 157811 +RS03: try number = 287, reading sector 159220 +RS03: try number = 288, reading sector 160629 +RS03: try number = 289, reading sector 162038 +RS03: try number = 290, reading sector 163447 +RS03: try number = 291, reading sector 164856 +RS03: try number = 292, reading sector 166265 +RS03: try number = 293, reading sector 167674 +RS03: try number = 294, reading sector 169083 +RS03: try number = 295, reading sector 170492 +RS03: try number = 296, reading sector 171901 +RS03: try number = 297, reading sector 173310 +RS03: try number = 298, reading sector 174719 +RS03: try number = 299, reading sector 176128 +RS03: try number = 300, reading sector 177537 +RS03: try number = 301, reading sector 178946 +RS03: try number = 302, reading sector 180355 +RS03: try number = 303, reading sector 181764 +RS03: try number = 304, reading sector 183173 +RS03: try number = 305, reading sector 184582 +RS03: try number = 306, reading sector 185991 +RS03: try number = 307, reading sector 187400 +RS03: try number = 308, reading sector 188809 +RS03: try number = 309, reading sector 190218 +RS03: try number = 310, reading sector 191627 +RS03: try number = 311, reading sector 193036 +RS03: try number = 312, reading sector 194445 +RS03: try number = 313, reading sector 195854 +RS03: try number = 314, reading sector 197263 +RS03: try number = 315, reading sector 235306 .. invalid CRC block 235306 -> 31 untested layers remaining - layer slice 4 -RS03: try number = 365, reading sector 154994 -RS03: try number = 366, reading sector 156403 -RS03: try number = 367, reading sector 157812 -RS03: try number = 368, reading sector 159221 -RS03: try number = 369, reading sector 160630 -RS03: try number = 370, reading sector 162039 -RS03: try number = 371, reading sector 163448 -RS03: try number = 372, reading sector 164857 -RS03: try number = 373, reading sector 166266 -RS03: try number = 374, reading sector 167675 -RS03: try number = 375, reading sector 169084 -RS03: try number = 376, reading sector 170493 -RS03: try number = 377, reading sector 171902 -RS03: try number = 378, reading sector 173311 -RS03: try number = 379, reading sector 174720 -RS03: try number = 380, reading sector 176129 -RS03: try number = 381, reading sector 177538 -RS03: try number = 382, reading sector 178947 -RS03: try number = 383, reading sector 180356 -RS03: try number = 384, reading sector 181765 -RS03: try number = 385, reading sector 183174 -RS03: try number = 386, reading sector 184583 -RS03: try number = 387, reading sector 185992 -RS03: try number = 388, reading sector 187401 -RS03: try number = 389, reading sector 188810 -RS03: try number = 390, reading sector 190219 -RS03: try number = 391, reading sector 191628 -RS03: try number = 392, reading sector 193037 -RS03: try number = 393, reading sector 194446 -RS03: try number = 394, reading sector 195855 -RS03: try number = 395, reading sector 235307 +RS03: try number = 316, reading sector 154994 +RS03: try number = 317, reading sector 156403 +RS03: try number = 318, reading sector 157812 +RS03: try number = 319, reading sector 159221 +RS03: try number = 320, reading sector 160630 +RS03: try number = 321, reading sector 162039 +RS03: try number = 322, reading sector 163448 +RS03: try number = 323, reading sector 164857 +RS03: try number = 324, reading sector 166266 +RS03: try number = 325, reading sector 167675 +RS03: try number = 326, reading sector 169084 +RS03: try number = 327, reading sector 170493 +RS03: try number = 328, reading sector 171902 +RS03: try number = 329, reading sector 173311 +RS03: try number = 330, reading sector 174720 +RS03: try number = 331, reading sector 176129 +RS03: try number = 332, reading sector 177538 +RS03: try number = 333, reading sector 178947 +RS03: try number = 334, reading sector 180356 +RS03: try number = 335, reading sector 181765 +RS03: try number = 336, reading sector 183174 +RS03: try number = 337, reading sector 184583 +RS03: try number = 338, reading sector 185992 +RS03: try number = 339, reading sector 187401 +RS03: try number = 340, reading sector 188810 +RS03: try number = 341, reading sector 190219 +RS03: try number = 342, reading sector 191628 +RS03: try number = 343, reading sector 193037 +RS03: try number = 344, reading sector 194446 +RS03: try number = 345, reading sector 195855 +RS03: try number = 346, reading sector 235307 -> 1 untested layers remaining - layer slice 5 -RS03: try number = 396, reading sector 235308 +RS03: try number = 347, reading sector 235308 -> 1 untested layers remaining - layer slice 6 -RS03: try number = 397, reading sector 235309 +RS03: try number = 348, reading sector 235309 -> 1 untested layers remaining - layer slice 7 -RS03: try number = 398, reading sector 235310 +RS03: try number = 349, reading sector 235310 -> 1 untested layers remaining - layer slice 8 -RS03: try number = 399, reading sector 235311 +RS03: try number = 350, reading sector 235311 -> 1 untested layers remaining - layer slice 9 -RS03: try number = 400, reading sector 235312 +RS03: try number = 351, reading sector 235312 -> 1 untested layers remaining - layer slice 10 -RS03: try number = 401, reading sector 235313 +RS03: try number = 352, reading sector 235313 -> 1 untested layers remaining - layer slice 11 -RS03: try number = 402, reading sector 235314 +RS03: try number = 353, reading sector 235314 -> 1 untested layers remaining - layer slice 12 -RS03: try number = 403, reading sector 235315 +RS03: try number = 354, reading sector 235315 -> 1 untested layers remaining - layer slice 13 -RS03: try number = 404, reading sector 235316 +RS03: try number = 355, reading sector 235316 -> 1 untested layers remaining - layer slice 14 -RS03: try number = 405, reading sector 235317 +RS03: try number = 356, reading sector 235317 -> 1 untested layers remaining - layer slice 15 -RS03: try number = 406, reading sector 235318 +RS03: try number = 357, reading sector 235318 -> 1 untested layers remaining - layer slice 16 -RS03: try number = 407, reading sector 235319 +RS03: try number = 358, reading sector 235319 -> 1 untested layers remaining - layer slice 17 -RS03: try number = 408, reading sector 235320 +RS03: try number = 359, reading sector 235320 -> 1 untested layers remaining - layer slice 18 -RS03: try number = 409, reading sector 235321 +RS03: try number = 360, reading sector 235321 -> 1 untested layers remaining - layer slice 19 -RS03: try number = 410, reading sector 235322 +RS03: try number = 361, reading sector 235322 -> 1 untested layers remaining - layer slice 20 -RS03: try number = 411, reading sector 235323 +RS03: try number = 362, reading sector 235323 -> 1 untested layers remaining - layer slice 21 -RS03: try number = 412, reading sector 235324 +RS03: try number = 363, reading sector 235324 -> 1 untested layers remaining - layer slice 22 -RS03: try number = 413, reading sector 235325 +RS03: try number = 364, reading sector 235325 -> 1 untested layers remaining - layer slice 23 -RS03: try number = 414, reading sector 235326 +RS03: try number = 365, reading sector 235326 -> 1 untested layers remaining - layer slice 24 -RS03: try number = 415, reading sector 235327 +RS03: try number = 366, reading sector 235327 -> 1 untested layers remaining - layer slice 25 -RS03: try number = 416, reading sector 235328 +RS03: try number = 367, reading sector 235328 -> 1 untested layers remaining - layer slice 26 -RS03: try number = 417, reading sector 235329 +RS03: try number = 368, reading sector 235329 -> 1 untested layers remaining - layer slice 27 -RS03: try number = 418, reading sector 235330 +RS03: try number = 369, reading sector 235330 -> 1 untested layers remaining - layer slice 28 -RS03: try number = 419, reading sector 235331 +RS03: try number = 370, reading sector 235331 -> 1 untested layers remaining - layer slice 29 -RS03: try number = 420, reading sector 235332 +RS03: try number = 371, reading sector 235332 -> 1 untested layers remaining - layer slice 30 -RS03: try number = 421, reading sector 235333 +RS03: try number = 372, reading sector 235333 -> 1 untested layers remaining - layer slice 31 -RS03: try number = 422, reading sector 235334 +RS03: try number = 373, reading sector 235334 -> 1 untested layers remaining - layer slice 32 -RS03: try number = 423, reading sector 235335 +RS03: try number = 374, reading sector 235335 -> 1 untested layers remaining - layer slice 33 -RS03: try number = 424, reading sector 235336 +RS03: try number = 375, reading sector 235336 -> 1 untested layers remaining - layer slice 34 -RS03: try number = 425, reading sector 235337 +RS03: try number = 376, reading sector 235337 -> 1 untested layers remaining - layer slice 35 -RS03: try number = 426, reading sector 235338 +RS03: try number = 377, reading sector 235338 -> 1 untested layers remaining - layer slice 36 -RS03: try number = 427, reading sector 235339 +RS03: try number = 378, reading sector 235339 -> 1 untested layers remaining - layer slice 37 -RS03: try number = 428, reading sector 235340 +RS03: try number = 379, reading sector 235340 -> 1 untested layers remaining - layer slice 38 -RS03: try number = 429, reading sector 235341 +RS03: try number = 380, reading sector 235341 -> 1 untested layers remaining - layer slice 39 -RS03: try number = 430, reading sector 235342 +RS03: try number = 381, reading sector 235342 -> 1 untested layers remaining - layer slice 40 -RS03: try number = 431, reading sector 235343 +RS03: try number = 382, reading sector 235343 -> 1 untested layers remaining - layer slice 41 -RS03: try number = 432, reading sector 235344 +RS03: try number = 383, reading sector 235344 -> 1 untested layers remaining - layer slice 42 -RS03: try number = 433, reading sector 235345 +RS03: try number = 384, reading sector 235345 -> 1 untested layers remaining - layer slice 43 -RS03: try number = 434, reading sector 235346 +RS03: try number = 385, reading sector 235346 -> 1 untested layers remaining - layer slice 44 -RS03: try number = 435, reading sector 235347 +RS03: try number = 386, reading sector 235347 -> 1 untested layers remaining - layer slice 45 -RS03: try number = 436, reading sector 235348 +RS03: try number = 387, reading sector 235348 -> 1 untested layers remaining - layer slice 46 -RS03: try number = 437, reading sector 235349 +RS03: try number = 388, reading sector 235349 -> 1 untested layers remaining - layer slice 47 -RS03: try number = 438, reading sector 235350 +RS03: try number = 389, reading sector 235350 -> 1 untested layers remaining - layer slice 48 -RS03: try number = 439, reading sector 235351 +RS03: try number = 390, reading sector 235351 -> 1 untested layers remaining - layer slice 49 -RS03: try number = 440, reading sector 235352 +RS03: try number = 391, reading sector 235352 -> 1 untested layers remaining - layer slice 50 -RS03: try number = 441, reading sector 235353 +RS03: try number = 392, reading sector 235353 -> 1 untested layers remaining - layer slice 51 -RS03: try number = 442, reading sector 235354 +RS03: try number = 393, reading sector 235354 -> 1 untested layers remaining - layer slice 52 -RS03: try number = 443, reading sector 235355 +RS03: try number = 394, reading sector 235355 -> 1 untested layers remaining - layer slice 53 -RS03: try number = 444, reading sector 235356 +RS03: try number = 395, reading sector 235356 -> 1 untested layers remaining - layer slice 54 -RS03: try number = 445, reading sector 235357 +RS03: try number = 396, reading sector 235357 -> 1 untested layers remaining - layer slice 55 -RS03: try number = 446, reading sector 235358 +RS03: try number = 397, reading sector 235358 -> 1 untested layers remaining - layer slice 56 -RS03: try number = 447, reading sector 235359 +RS03: try number = 398, reading sector 235359 -> 1 untested layers remaining - layer slice 57 -RS03: try number = 448, reading sector 235360 +RS03: try number = 399, reading sector 235360 -> 1 untested layers remaining - layer slice 58 -RS03: try number = 449, reading sector 235361 +RS03: try number = 400, reading sector 235361 -> 1 untested layers remaining - layer slice 59 -RS03: try number = 450, reading sector 235362 +RS03: try number = 401, reading sector 235362 -> 1 untested layers remaining - layer slice 60 -RS03: try number = 451, reading sector 235363 +RS03: try number = 402, reading sector 235363 -> 1 untested layers remaining - layer slice 61 -RS03: try number = 452, reading sector 235364 +RS03: try number = 403, reading sector 235364 -> 1 untested layers remaining - layer slice 62 -RS03: try number = 453, reading sector 235365 +RS03: try number = 404, reading sector 235365 -> 1 untested layers remaining - layer slice 63 -RS03: try number = 454, reading sector 235366 +RS03: try number = 405, reading sector 235366 -> 1 untested layers remaining - layer slice 64 -RS03: try number = 455, reading sector 235367 +RS03: try number = 406, reading sector 235367 -> 1 untested layers remaining - layer slice 65 -RS03: try number = 456, reading sector 235368 +RS03: try number = 407, reading sector 235368 -> 1 untested layers remaining - layer slice 66 -RS03: try number = 457, reading sector 235369 +RS03: try number = 408, reading sector 235369 -> 1 untested layers remaining - layer slice 67 -RS03: try number = 458, reading sector 235370 +RS03: try number = 409, reading sector 235370 -> 1 untested layers remaining - layer slice 68 -RS03: try number = 459, reading sector 235371 +RS03: try number = 410, reading sector 235371 -> 1 untested layers remaining - layer slice 69 -RS03: try number = 460, reading sector 235372 +RS03: try number = 411, reading sector 235372 -> 1 untested layers remaining - layer slice 70 -RS03: try number = 461, reading sector 235373 +RS03: try number = 412, reading sector 235373 -> 1 untested layers remaining - layer slice 71 -RS03: try number = 462, reading sector 235374 +RS03: try number = 413, reading sector 235374 -> 1 untested layers remaining - layer slice 72 -RS03: try number = 463, reading sector 235375 +RS03: try number = 414, reading sector 235375 -> 1 untested layers remaining - layer slice 73 -RS03: try number = 464, reading sector 235376 +RS03: try number = 415, reading sector 235376 -> 1 untested layers remaining - layer slice 74 -RS03: try number = 465, reading sector 235377 +RS03: try number = 416, reading sector 235377 -> 1 untested layers remaining - layer slice 75 -RS03: try number = 466, reading sector 235378 +RS03: try number = 417, reading sector 235378 -> 1 untested layers remaining - layer slice 76 -RS03: try number = 467, reading sector 235379 +RS03: try number = 418, reading sector 235379 -> 1 untested layers remaining - layer slice 77 -RS03: try number = 468, reading sector 235380 +RS03: try number = 419, reading sector 235380 -> 1 untested layers remaining - layer slice 78 -RS03: try number = 469, reading sector 235381 +RS03: try number = 420, reading sector 235381 -> 1 untested layers remaining - layer slice 79 -RS03: try number = 470, reading sector 235382 +RS03: try number = 421, reading sector 235382 -> 1 untested layers remaining - layer slice 80 -RS03: try number = 471, reading sector 235383 +RS03: try number = 422, reading sector 235383 -> 1 untested layers remaining - layer slice 81 -RS03: try number = 472, reading sector 235384 +RS03: try number = 423, reading sector 235384 -> 1 untested layers remaining - layer slice 82 -RS03: try number = 473, reading sector 235385 +RS03: try number = 424, reading sector 235385 -> 1 untested layers remaining - layer slice 83 -RS03: try number = 474, reading sector 235386 +RS03: try number = 425, reading sector 235386 -> 1 untested layers remaining - layer slice 84 -RS03: try number = 475, reading sector 235387 +RS03: try number = 426, reading sector 235387 -> 1 untested layers remaining - layer slice 85 -RS03: try number = 476, reading sector 235388 +RS03: try number = 427, reading sector 235388 -> 1 untested layers remaining - layer slice 86 -RS03: try number = 477, reading sector 235389 +RS03: try number = 428, reading sector 235389 -> 1 untested layers remaining - layer slice 87 -RS03: try number = 478, reading sector 235390 +RS03: try number = 429, reading sector 235390 -> 1 untested layers remaining - layer slice 88 -RS03: try number = 479, reading sector 235391 +RS03: try number = 430, reading sector 235391 -> 1 untested layers remaining - layer slice 89 -RS03: try number = 480, reading sector 235392 +RS03: try number = 431, reading sector 235392 -> 1 untested layers remaining - layer slice 90 -RS03: try number = 481, reading sector 235393 +RS03: try number = 432, reading sector 235393 -> 1 untested layers remaining - layer slice 91 -RS03: try number = 482, reading sector 235394 +RS03: try number = 433, reading sector 235394 -> 1 untested layers remaining - layer slice 92 -RS03: try number = 483, reading sector 235395 +RS03: try number = 434, reading sector 235395 -> 1 untested layers remaining - layer slice 93 -RS03: try number = 484, reading sector 235396 +RS03: try number = 435, reading sector 235396 -> 1 untested layers remaining - layer slice 94 -RS03: try number = 485, reading sector 235397 +RS03: try number = 436, reading sector 235397 -> 1 untested layers remaining - layer slice 95 -RS03: try number = 486, reading sector 235398 +RS03: try number = 437, reading sector 235398 -> 1 untested layers remaining - layer slice 96 -RS03: try number = 487, reading sector 235399 +RS03: try number = 438, reading sector 235399 -> 1 untested layers remaining - layer slice 97 -RS03: try number = 488, reading sector 235400 +RS03: try number = 439, reading sector 235400 -> 1 untested layers remaining - layer slice 98 -RS03: try number = 489, reading sector 235401 +RS03: try number = 440, reading sector 235401 -> 1 untested layers remaining - layer slice 99 -RS03: try number = 490, reading sector 235402 +RS03: try number = 441, reading sector 235402 -> 1 untested layers remaining - layer slice 100 -RS03: try number = 491, reading sector 235403 +RS03: try number = 442, reading sector 235403 -> 1 untested layers remaining - layer slice 101 -RS03: try number = 492, reading sector 235404 +RS03: try number = 443, reading sector 235404 -> 1 untested layers remaining - layer slice 102 -RS03: try number = 493, reading sector 235405 +RS03: try number = 444, reading sector 235405 -> 1 untested layers remaining - layer slice 103 -RS03: try number = 494, reading sector 235406 +RS03: try number = 445, reading sector 235406 -> 1 untested layers remaining - layer slice 104 -RS03: try number = 495, reading sector 235407 +RS03: try number = 446, reading sector 235407 -> 1 untested layers remaining - layer slice 105 -RS03: try number = 496, reading sector 235408 +RS03: try number = 447, reading sector 235408 -> 1 untested layers remaining - layer slice 106 -RS03: try number = 497, reading sector 235409 +RS03: try number = 448, reading sector 235409 -> 1 untested layers remaining - layer slice 107 -RS03: try number = 498, reading sector 235410 +RS03: try number = 449, reading sector 235410 -> 1 untested layers remaining - layer slice 108 -RS03: try number = 499, reading sector 235411 +RS03: try number = 450, reading sector 235411 -> 1 untested layers remaining - layer slice 109 -RS03: try number = 500, reading sector 235412 +RS03: try number = 451, reading sector 235412 -> 1 untested layers remaining - layer slice 110 -RS03: try number = 501, reading sector 235413 +RS03: try number = 452, reading sector 235413 -> 1 untested layers remaining - layer slice 111 -RS03: try number = 502, reading sector 235414 +RS03: try number = 453, reading sector 235414 -> 1 untested layers remaining - layer slice 112 -RS03: try number = 503, reading sector 235415 +RS03: try number = 454, reading sector 235415 -> 1 untested layers remaining - layer slice 113 -RS03: try number = 504, reading sector 235416 +RS03: try number = 455, reading sector 235416 -> 1 untested layers remaining - layer slice 114 -RS03: try number = 505, reading sector 235417 +RS03: try number = 456, reading sector 235417 -> 1 untested layers remaining - layer slice 115 -RS03: try number = 506, reading sector 235418 +RS03: try number = 457, reading sector 235418 -> 1 untested layers remaining - layer slice 116 -RS03: try number = 507, reading sector 235419 +RS03: try number = 458, reading sector 235419 -> 1 untested layers remaining - layer slice 117 -RS03: try number = 508, reading sector 235420 +RS03: try number = 459, reading sector 235420 -> 1 untested layers remaining - layer slice 118 -RS03: try number = 509, reading sector 235421 +RS03: try number = 460, reading sector 235421 -> 1 untested layers remaining - layer slice 119 -RS03: try number = 510, reading sector 235422 +RS03: try number = 461, reading sector 235422 -> 1 untested layers remaining - layer slice 120 -RS03: try number = 511, reading sector 235423 +RS03: try number = 462, reading sector 235423 -> 1 untested layers remaining - layer slice 121 -RS03: try number = 512, reading sector 235424 +RS03: try number = 463, reading sector 235424 -> 1 untested layers remaining - layer slice 122 -RS03: try number = 513, reading sector 235425 +RS03: try number = 464, reading sector 235425 -> 1 untested layers remaining - layer slice 123 -RS03: try number = 514, reading sector 235426 +RS03: try number = 465, reading sector 235426 -> 1 untested layers remaining - layer slice 124 -RS03: try number = 515, reading sector 235427 +RS03: try number = 466, reading sector 235427 -> 1 untested layers remaining - layer slice 125 -RS03: try number = 516, reading sector 235428 +RS03: try number = 467, reading sector 235428 -> 1 untested layers remaining - layer slice 126 -RS03: try number = 517, reading sector 235429 +RS03: try number = 468, reading sector 235429 -> 1 untested layers remaining - layer slice 127 -RS03: try number = 518, reading sector 235430 +RS03: try number = 469, reading sector 235430 -> 1 untested layers remaining - layer slice 128 -RS03: try number = 519, reading sector 235431 +RS03: try number = 470, reading sector 235431 -> 1 untested layers remaining - layer slice 129 -RS03: try number = 520, reading sector 235432 +RS03: try number = 471, reading sector 235432 -> 1 untested layers remaining - layer slice 130 -RS03: try number = 521, reading sector 235433 +RS03: try number = 472, reading sector 235433 -> 1 untested layers remaining - layer slice 131 -RS03: try number = 522, reading sector 235434 +RS03: try number = 473, reading sector 235434 -> 1 untested layers remaining - layer slice 132 -RS03: try number = 523, reading sector 235435 +RS03: try number = 474, reading sector 235435 -> 1 untested layers remaining - layer slice 133 -RS03: try number = 524, reading sector 235436 +RS03: try number = 475, reading sector 235436 -> 1 untested layers remaining - layer slice 134 -RS03: try number = 525, reading sector 235437 +RS03: try number = 476, reading sector 235437 -> 1 untested layers remaining - layer slice 135 -RS03: try number = 526, reading sector 235438 +RS03: try number = 477, reading sector 235438 -> 1 untested layers remaining - layer slice 136 -RS03: try number = 527, reading sector 235439 +RS03: try number = 478, reading sector 235439 -> 1 untested layers remaining - layer slice 137 -RS03: try number = 528, reading sector 235440 +RS03: try number = 479, reading sector 235440 -> 1 untested layers remaining - layer slice 138 -RS03: try number = 529, reading sector 235441 +RS03: try number = 480, reading sector 235441 -> 1 untested layers remaining - layer slice 139 -RS03: try number = 530, reading sector 235442 +RS03: try number = 481, reading sector 235442 -> 1 untested layers remaining - layer slice 140 -RS03: try number = 531, reading sector 235443 +RS03: try number = 482, reading sector 235443 -> 1 untested layers remaining - layer slice 141 -RS03: try number = 532, reading sector 235444 +RS03: try number = 483, reading sector 235444 -> 1 untested layers remaining - layer slice 142 -RS03: try number = 533, reading sector 235445 +RS03: try number = 484, reading sector 235445 -> 1 untested layers remaining - layer slice 143 -RS03: try number = 534, reading sector 235446 +RS03: try number = 485, reading sector 235446 -> 1 untested layers remaining - layer slice 144 -RS03: try number = 535, reading sector 235447 +RS03: try number = 486, reading sector 235447 -> 1 untested layers remaining - layer slice 145 -RS03: try number = 536, reading sector 235448 +RS03: try number = 487, reading sector 235448 -> 1 untested layers remaining - layer slice 146 -RS03: try number = 537, reading sector 235449 +RS03: try number = 488, reading sector 235449 -> 1 untested layers remaining - layer slice 147 -RS03: try number = 538, reading sector 235450 +RS03: try number = 489, reading sector 235450 -> 1 untested layers remaining - layer slice 148 -RS03: try number = 539, reading sector 235451 +RS03: try number = 490, reading sector 235451 -> 1 untested layers remaining - layer slice 149 -RS03: try number = 540, reading sector 235452 +RS03: try number = 491, reading sector 235452 -> 1 untested layers remaining - layer slice 150 -RS03: try number = 541, reading sector 235453 +RS03: try number = 492, reading sector 235453 -> 1 untested layers remaining - layer slice 151 -RS03: try number = 542, reading sector 235454 +RS03: try number = 493, reading sector 235454 -> 1 untested layers remaining - layer slice 152 -RS03: try number = 543, reading sector 235455 +RS03: try number = 494, reading sector 235455 -> 1 untested layers remaining - layer slice 153 -RS03: try number = 544, reading sector 235456 +RS03: try number = 495, reading sector 235456 -> 1 untested layers remaining - layer slice 154 -RS03: try number = 545, reading sector 235457 +RS03: try number = 496, reading sector 235457 -> 1 untested layers remaining - layer slice 155 -RS03: try number = 546, reading sector 235458 +RS03: try number = 497, reading sector 235458 -> 1 untested layers remaining - layer slice 156 -RS03: try number = 547, reading sector 235459 +RS03: try number = 498, reading sector 235459 -> 1 untested layers remaining - layer slice 157 -RS03: try number = 548, reading sector 235460 +RS03: try number = 499, reading sector 235460 -> 1 untested layers remaining - layer slice 158 -RS03: try number = 549, reading sector 235461 +RS03: try number = 500, reading sector 235461 -> 1 untested layers remaining - layer slice 159 -RS03: try number = 550, reading sector 235462 +RS03: try number = 501, reading sector 235462 -> 1 untested layers remaining - layer slice 160 -RS03: try number = 551, reading sector 235463 +RS03: try number = 502, reading sector 235463 -> 1 untested layers remaining - layer slice 161 -RS03: try number = 552, reading sector 235464 +RS03: try number = 503, reading sector 235464 -> 1 untested layers remaining - layer slice 162 -RS03: try number = 553, reading sector 235465 +RS03: try number = 504, reading sector 235465 -> 1 untested layers remaining - layer slice 163 -RS03: try number = 554, reading sector 235466 +RS03: try number = 505, reading sector 235466 -> 1 untested layers remaining - layer slice 164 -RS03: try number = 555, reading sector 235467 +RS03: try number = 506, reading sector 235467 -> 1 untested layers remaining - layer slice 165 -RS03: try number = 556, reading sector 235468 +RS03: try number = 507, reading sector 235468 -> 1 untested layers remaining - layer slice 166 -RS03: try number = 557, reading sector 235469 +RS03: try number = 508, reading sector 235469 -> 1 untested layers remaining - layer slice 167 -RS03: try number = 558, reading sector 235470 +RS03: try number = 509, reading sector 235470 -> 1 untested layers remaining - layer slice 168 -RS03: try number = 559, reading sector 235471 +RS03: try number = 510, reading sector 235471 -> 1 untested layers remaining - layer slice 169 -RS03: try number = 560, reading sector 235472 +RS03: try number = 511, reading sector 235472 -> 1 untested layers remaining - layer slice 170 -RS03: try number = 561, reading sector 235473 +RS03: try number = 512, reading sector 235473 -> 1 untested layers remaining - layer slice 171 -RS03: try number = 562, reading sector 235474 +RS03: try number = 513, reading sector 235474 -> 1 untested layers remaining - layer slice 172 -RS03: try number = 563, reading sector 235475 +RS03: try number = 514, reading sector 235475 -> 1 untested layers remaining - layer slice 173 -RS03: try number = 564, reading sector 235476 +RS03: try number = 515, reading sector 235476 -> 1 untested layers remaining - layer slice 174 -RS03: try number = 565, reading sector 235477 +RS03: try number = 516, reading sector 235477 -> 1 untested layers remaining - layer slice 175 -RS03: try number = 566, reading sector 235478 +RS03: try number = 517, reading sector 235478 -> 1 untested layers remaining - layer slice 176 -RS03: try number = 567, reading sector 235479 +RS03: try number = 518, reading sector 235479 -> 1 untested layers remaining - layer slice 177 -RS03: try number = 568, reading sector 235480 +RS03: try number = 519, reading sector 235480 -> 1 untested layers remaining - layer slice 178 -RS03: try number = 569, reading sector 235481 +RS03: try number = 520, reading sector 235481 -> 1 untested layers remaining - layer slice 179 -RS03: try number = 570, reading sector 235482 +RS03: try number = 521, reading sector 235482 -> 1 untested layers remaining - layer slice 180 -RS03: try number = 571, reading sector 235483 +RS03: try number = 522, reading sector 235483 -> 1 untested layers remaining - layer slice 181 -RS03: try number = 572, reading sector 235484 +RS03: try number = 523, reading sector 235484 -> 1 untested layers remaining - layer slice 182 -RS03: try number = 573, reading sector 235485 +RS03: try number = 524, reading sector 235485 -> 1 untested layers remaining - layer slice 183 -RS03: try number = 574, reading sector 235486 +RS03: try number = 525, reading sector 235486 -> 1 untested layers remaining - layer slice 184 -RS03: try number = 575, reading sector 235487 +RS03: try number = 526, reading sector 235487 -> 1 untested layers remaining - layer slice 185 -RS03: try number = 576, reading sector 235488 +RS03: try number = 527, reading sector 235488 -> 1 untested layers remaining - layer slice 186 -RS03: try number = 577, reading sector 235489 +RS03: try number = 528, reading sector 235489 -> 1 untested layers remaining - layer slice 187 -RS03: try number = 578, reading sector 235490 +RS03: try number = 529, reading sector 235490 -> 1 untested layers remaining - layer slice 188 -RS03: try number = 579, reading sector 235491 +RS03: try number = 530, reading sector 235491 -> 1 untested layers remaining - layer slice 189 -RS03: try number = 580, reading sector 235492 +RS03: try number = 531, reading sector 235492 -> 1 untested layers remaining - layer slice 190 -RS03: try number = 581, reading sector 235493 +RS03: try number = 532, reading sector 235493 -> 1 untested layers remaining - layer slice 191 -RS03: try number = 582, reading sector 235494 +RS03: try number = 533, reading sector 235494 -> 1 untested layers remaining - layer slice 192 -RS03: try number = 583, reading sector 235495 +RS03: try number = 534, reading sector 235495 -> 1 untested layers remaining - layer slice 193 -RS03: try number = 584, reading sector 235496 +RS03: try number = 535, reading sector 235496 -> 1 untested layers remaining - layer slice 194 -RS03: try number = 585, reading sector 235497 +RS03: try number = 536, reading sector 235497 -> 1 untested layers remaining - layer slice 195 -RS03: try number = 586, reading sector 235498 +RS03: try number = 537, reading sector 235498 -> 1 untested layers remaining - layer slice 196 -RS03: try number = 587, reading sector 235499 +RS03: try number = 538, reading sector 235499 -> 1 untested layers remaining - layer slice 197 -RS03: try number = 588, reading sector 235500 +RS03: try number = 539, reading sector 235500 -> 1 untested layers remaining - layer slice 198 -RS03: try number = 589, reading sector 235501 +RS03: try number = 540, reading sector 235501 -> 1 untested layers remaining - layer slice 199 -RS03: try number = 590, reading sector 235502 +RS03: try number = 541, reading sector 235502 -> 1 untested layers remaining - layer slice 200 -RS03: try number = 591, reading sector 235503 +RS03: try number = 542, reading sector 235503 -> 1 untested layers remaining - layer slice 201 -RS03: try number = 592, reading sector 235504 +RS03: try number = 543, reading sector 235504 -> 1 untested layers remaining - layer slice 202 -RS03: try number = 593, reading sector 235505 +RS03: try number = 544, reading sector 235505 -> 1 untested layers remaining - layer slice 203 -RS03: try number = 594, reading sector 235506 +RS03: try number = 545, reading sector 235506 -> 1 untested layers remaining - layer slice 204 -RS03: try number = 595, reading sector 235507 +RS03: try number = 546, reading sector 235507 -> 1 untested layers remaining - layer slice 205 -RS03: try number = 596, reading sector 235508 +RS03: try number = 547, reading sector 235508 -> 1 untested layers remaining - layer slice 206 -RS03: try number = 597, reading sector 235509 +RS03: try number = 548, reading sector 235509 -> 1 untested layers remaining - layer slice 207 -RS03: try number = 598, reading sector 235510 +RS03: try number = 549, reading sector 235510 -> 1 untested layers remaining - layer slice 208 -RS03: try number = 599, reading sector 235511 +RS03: try number = 550, reading sector 235511 -> 1 untested layers remaining - layer slice 209 -RS03: try number = 600, reading sector 235512 +RS03: try number = 551, reading sector 235512 -> 1 untested layers remaining - layer slice 210 -RS03: try number = 601, reading sector 235513 +RS03: try number = 552, reading sector 235513 -> 1 untested layers remaining - layer slice 211 -RS03: try number = 602, reading sector 235514 +RS03: try number = 553, reading sector 235514 -> 1 untested layers remaining - layer slice 212 -RS03: try number = 603, reading sector 235515 +RS03: try number = 554, reading sector 235515 -> 1 untested layers remaining - layer slice 213 -RS03: try number = 604, reading sector 235516 +RS03: try number = 555, reading sector 235516 -> 1 untested layers remaining - layer slice 214 -RS03: try number = 605, reading sector 235517 +RS03: try number = 556, reading sector 235517 -> 1 untested layers remaining - layer slice 215 -RS03: try number = 606, reading sector 235518 +RS03: try number = 557, reading sector 235518 -> 1 untested layers remaining - layer slice 216 -RS03: try number = 607, reading sector 235519 +RS03: try number = 558, reading sector 235519 -> 1 untested layers remaining - layer slice 217 -RS03: try number = 608, reading sector 235520 +RS03: try number = 559, reading sector 235520 -> 1 untested layers remaining - layer slice 218 -RS03: try number = 609, reading sector 235521 +RS03: try number = 560, reading sector 235521 -> 1 untested layers remaining - layer slice 219 -RS03: try number = 610, reading sector 235522 +RS03: try number = 561, reading sector 235522 -> 1 untested layers remaining - layer slice 220 -RS03: try number = 611, reading sector 235523 +RS03: try number = 562, reading sector 235523 -> 1 untested layers remaining - layer slice 221 -RS03: try number = 612, reading sector 235524 +RS03: try number = 563, reading sector 235524 -> 1 untested layers remaining - layer slice 222 -RS03: try number = 613, reading sector 235525 +RS03: try number = 564, reading sector 235525 -> 1 untested layers remaining - layer slice 223 -RS03: try number = 614, reading sector 235526 +RS03: try number = 565, reading sector 235526 -> 1 untested layers remaining - layer slice 224 -RS03: try number = 615, reading sector 235527 +RS03: try number = 566, reading sector 235527 -> 1 untested layers remaining - layer slice 225 -RS03: try number = 616, reading sector 235528 +RS03: try number = 567, reading sector 235528 -> 1 untested layers remaining - layer slice 226 -RS03: try number = 617, reading sector 235529 +RS03: try number = 568, reading sector 235529 -> 1 untested layers remaining - layer slice 227 -RS03: try number = 618, reading sector 235530 +RS03: try number = 569, reading sector 235530 -> 1 untested layers remaining - layer slice 228 -RS03: try number = 619, reading sector 235531 +RS03: try number = 570, reading sector 235531 -> 1 untested layers remaining - layer slice 229 -RS03: try number = 620, reading sector 235532 +RS03: try number = 571, reading sector 235532 -> 1 untested layers remaining - layer slice 230 -RS03: try number = 621, reading sector 235533 +RS03: try number = 572, reading sector 235533 -> 1 untested layers remaining - layer slice 231 -RS03: try number = 622, reading sector 235534 +RS03: try number = 573, reading sector 235534 -> 1 untested layers remaining - layer slice 232 -RS03: try number = 623, reading sector 235535 +RS03: try number = 574, reading sector 235535 -> 1 untested layers remaining - layer slice 233 -RS03: try number = 624, reading sector 235536 +RS03: try number = 575, reading sector 235536 -> 1 untested layers remaining - layer slice 234 -RS03: try number = 625, reading sector 235537 +RS03: try number = 576, reading sector 235537 -> 1 untested layers remaining - layer slice 235 -RS03: try number = 626, reading sector 235538 +RS03: try number = 577, reading sector 235538 -> 1 untested layers remaining - layer slice 236 -RS03: try number = 627, reading sector 235539 +RS03: try number = 578, reading sector 235539 -> 1 untested layers remaining - layer slice 237 -RS03: try number = 628, reading sector 235540 +RS03: try number = 579, reading sector 235540 -> 1 untested layers remaining - layer slice 238 -RS03: try number = 629, reading sector 235541 +RS03: try number = 580, reading sector 235541 -> 1 untested layers remaining - layer slice 239 -RS03: try number = 630, reading sector 235542 +RS03: try number = 581, reading sector 235542 -> 1 untested layers remaining - layer slice 240 -RS03: try number = 631, reading sector 235543 +RS03: try number = 582, reading sector 235543 -> 1 untested layers remaining - layer slice 241 -RS03: try number = 632, reading sector 235544 +RS03: try number = 583, reading sector 235544 -> 1 untested layers remaining - layer slice 242 -RS03: try number = 633, reading sector 235545 +RS03: try number = 584, reading sector 235545 -> 1 untested layers remaining - layer slice 243 -RS03: try number = 634, reading sector 235546 +RS03: try number = 585, reading sector 235546 -> 1 untested layers remaining - layer slice 244 -RS03: try number = 635, reading sector 235547 +RS03: try number = 586, reading sector 235547 -> 1 untested layers remaining - layer slice 245 -RS03: try number = 636, reading sector 235548 +RS03: try number = 587, reading sector 235548 -> 1 untested layers remaining - layer slice 246 -RS03: try number = 637, reading sector 235549 +RS03: try number = 588, reading sector 235549 -> 1 untested layers remaining - layer slice 247 -RS03: try number = 638, reading sector 235550 +RS03: try number = 589, reading sector 235550 -> 1 untested layers remaining - layer slice 248 -RS03: try number = 639, reading sector 235551 +RS03: try number = 590, reading sector 235551 -> 1 untested layers remaining - layer slice 249 -RS03: try number = 640, reading sector 235552 +RS03: try number = 591, reading sector 235552 -> 1 untested layers remaining - layer slice 250 -RS03: try number = 641, reading sector 235553 +RS03: try number = 592, reading sector 235553 -> 1 untested layers remaining - layer slice 251 -RS03: try number = 642, reading sector 235554 +RS03: try number = 593, reading sector 235554 -> 1 untested layers remaining - layer slice 252 -RS03: try number = 643, reading sector 235555 +RS03: try number = 594, reading sector 235555 -> 1 untested layers remaining - layer slice 253 -RS03: try number = 644, reading sector 235556 +RS03: try number = 595, reading sector 235556 -> 1 untested layers remaining - layer slice 254 -RS03: try number = 645, reading sector 235557 +RS03: try number = 596, reading sector 235557 -> 1 untested layers remaining - layer slice 255 -RS03: try number = 646, reading sector 235558 +RS03: try number = 597, reading sector 235558 -> 1 untested layers remaining - layer slice 256 -RS03: try number = 647, reading sector 235559 +RS03: try number = 598, reading sector 235559 -> 1 untested layers remaining - layer slice 257 -RS03: try number = 648, reading sector 235560 +RS03: try number = 599, reading sector 235560 -> 1 untested layers remaining - layer slice 258 -RS03: try number = 649, reading sector 235561 +RS03: try number = 600, reading sector 235561 -> 1 untested layers remaining - layer slice 259 -RS03: try number = 650, reading sector 235562 +RS03: try number = 601, reading sector 235562 -> 1 untested layers remaining - layer slice 260 -RS03: try number = 651, reading sector 235563 +RS03: try number = 602, reading sector 235563 -> 1 untested layers remaining - layer slice 261 -RS03: try number = 652, reading sector 235564 +RS03: try number = 603, reading sector 235564 -> 1 untested layers remaining - layer slice 262 -RS03: try number = 653, reading sector 235565 +RS03: try number = 604, reading sector 235565 -> 1 untested layers remaining - layer slice 263 -RS03: try number = 654, reading sector 235566 +RS03: try number = 605, reading sector 235566 -> 1 untested layers remaining - layer slice 264 -RS03: try number = 655, reading sector 235567 +RS03: try number = 606, reading sector 235567 -> 1 untested layers remaining - layer slice 265 -RS03: try number = 656, reading sector 235568 +RS03: try number = 607, reading sector 235568 -> 1 untested layers remaining - layer slice 266 -RS03: try number = 657, reading sector 235569 +RS03: try number = 608, reading sector 235569 -> 1 untested layers remaining - layer slice 267 -RS03: try number = 658, reading sector 235570 +RS03: try number = 609, reading sector 235570 -> 1 untested layers remaining - layer slice 268 -RS03: try number = 659, reading sector 235571 +RS03: try number = 610, reading sector 235571 -> 1 untested layers remaining - layer slice 269 -RS03: try number = 660, reading sector 235572 +RS03: try number = 611, reading sector 235572 -> 1 untested layers remaining - layer slice 270 -RS03: try number = 661, reading sector 235573 +RS03: try number = 612, reading sector 235573 -> 1 untested layers remaining - layer slice 271 -RS03: try number = 662, reading sector 235574 +RS03: try number = 613, reading sector 235574 -> 1 untested layers remaining - layer slice 272 -RS03: try number = 663, reading sector 235575 +RS03: try number = 614, reading sector 235575 -> 1 untested layers remaining - layer slice 273 -RS03: try number = 664, reading sector 235576 +RS03: try number = 615, reading sector 235576 -> 1 untested layers remaining - layer slice 274 -RS03: try number = 665, reading sector 235577 +RS03: try number = 616, reading sector 235577 -> 1 untested layers remaining - layer slice 275 -RS03: try number = 666, reading sector 235578 +RS03: try number = 617, reading sector 235578 -> 1 untested layers remaining - layer slice 276 -RS03: try number = 667, reading sector 235579 +RS03: try number = 618, reading sector 235579 -> 1 untested layers remaining - layer slice 277 -RS03: try number = 668, reading sector 235580 +RS03: try number = 619, reading sector 235580 -> 1 untested layers remaining - layer slice 278 -RS03: try number = 669, reading sector 235581 +RS03: try number = 620, reading sector 235581 -> 1 untested layers remaining - layer slice 279 -RS03: try number = 670, reading sector 235582 +RS03: try number = 621, reading sector 235582 -> 1 untested layers remaining - layer slice 280 -RS03: try number = 671, reading sector 235583 +RS03: try number = 622, reading sector 235583 -> 1 untested layers remaining - layer slice 281 -RS03: try number = 672, reading sector 235584 +RS03: try number = 623, reading sector 235584 -> 1 untested layers remaining - layer slice 282 -RS03: try number = 673, reading sector 235585 +RS03: try number = 624, reading sector 235585 -> 1 untested layers remaining - layer slice 283 -RS03: try number = 674, reading sector 235586 +RS03: try number = 625, reading sector 235586 -> 1 untested layers remaining - layer slice 284 -RS03: try number = 675, reading sector 235587 +RS03: try number = 626, reading sector 235587 -> 1 untested layers remaining - layer slice 285 -RS03: try number = 676, reading sector 235588 +RS03: try number = 627, reading sector 235588 -> 1 untested layers remaining - layer slice 286 -RS03: try number = 677, reading sector 235589 +RS03: try number = 628, reading sector 235589 -> 1 untested layers remaining - layer slice 287 -RS03: try number = 678, reading sector 235590 +RS03: try number = 629, reading sector 235590 -> 1 untested layers remaining - layer slice 288 -RS03: try number = 679, reading sector 235591 +RS03: try number = 630, reading sector 235591 -> 1 untested layers remaining - layer slice 289 -RS03: try number = 680, reading sector 235592 +RS03: try number = 631, reading sector 235592 -> 1 untested layers remaining - layer slice 290 -RS03: try number = 681, reading sector 235593 +RS03: try number = 632, reading sector 235593 -> 1 untested layers remaining - layer slice 291 -RS03: try number = 682, reading sector 235594 +RS03: try number = 633, reading sector 235594 -> 1 untested layers remaining - layer slice 292 -RS03: try number = 683, reading sector 235595 +RS03: try number = 634, reading sector 235595 -> 1 untested layers remaining - layer slice 293 -RS03: try number = 684, reading sector 235596 +RS03: try number = 635, reading sector 235596 -> 1 untested layers remaining - layer slice 294 -RS03: try number = 685, reading sector 235597 +RS03: try number = 636, reading sector 235597 -> 1 untested layers remaining - layer slice 295 -RS03: try number = 686, reading sector 235598 +RS03: try number = 637, reading sector 235598 -> 1 untested layers remaining - layer slice 296 -RS03: try number = 687, reading sector 235599 +RS03: try number = 638, reading sector 235599 -> 1 untested layers remaining - layer slice 297 -RS03: try number = 688, reading sector 235600 +RS03: try number = 639, reading sector 235600 -> 1 untested layers remaining - layer slice 298 -RS03: try number = 689, reading sector 235601 +RS03: try number = 640, reading sector 235601 -> 1 untested layers remaining - layer slice 299 -RS03: try number = 690, reading sector 235602 +RS03: try number = 641, reading sector 235602 -> 1 untested layers remaining - layer slice 300 -RS03: try number = 691, reading sector 235603 +RS03: try number = 642, reading sector 235603 -> 1 untested layers remaining - layer slice 301 -RS03: try number = 692, reading sector 235604 +RS03: try number = 643, reading sector 235604 -> 1 untested layers remaining - layer slice 302 -RS03: try number = 693, reading sector 235605 +RS03: try number = 644, reading sector 235605 -> 1 untested layers remaining - layer slice 303 -RS03: try number = 694, reading sector 235606 +RS03: try number = 645, reading sector 235606 -> 1 untested layers remaining - layer slice 304 -RS03: try number = 695, reading sector 235607 +RS03: try number = 646, reading sector 235607 -> 1 untested layers remaining - layer slice 305 -RS03: try number = 696, reading sector 235608 +RS03: try number = 647, reading sector 235608 -> 1 untested layers remaining - layer slice 306 -RS03: try number = 697, reading sector 235609 +RS03: try number = 648, reading sector 235609 -> 1 untested layers remaining - layer slice 307 -RS03: try number = 698, reading sector 235610 +RS03: try number = 649, reading sector 235610 -> 1 untested layers remaining - layer slice 308 -RS03: try number = 699, reading sector 235611 +RS03: try number = 650, reading sector 235611 -> 1 untested layers remaining - layer slice 309 -RS03: try number = 700, reading sector 235612 +RS03: try number = 651, reading sector 235612 -> 1 untested layers remaining - layer slice 310 -RS03: try number = 701, reading sector 235613 +RS03: try number = 652, reading sector 235613 -> 1 untested layers remaining - layer slice 311 -RS03: try number = 702, reading sector 235614 +RS03: try number = 653, reading sector 235614 -> 1 untested layers remaining - layer slice 312 -RS03: try number = 703, reading sector 235615 +RS03: try number = 654, reading sector 235615 -> 1 untested layers remaining - layer slice 313 -RS03: try number = 704, reading sector 235616 +RS03: try number = 655, reading sector 235616 -> 1 untested layers remaining - layer slice 314 -RS03: try number = 705, reading sector 235617 +RS03: try number = 656, reading sector 235617 -> 1 untested layers remaining - layer slice 315 -RS03: try number = 706, reading sector 235618 +RS03: try number = 657, reading sector 235618 -> 1 untested layers remaining - layer slice 316 -RS03: try number = 707, reading sector 235619 +RS03: try number = 658, reading sector 235619 -> 1 untested layers remaining - layer slice 317 -RS03: try number = 708, reading sector 235620 +RS03: try number = 659, reading sector 235620 -> 1 untested layers remaining - layer slice 318 -RS03: try number = 709, reading sector 235621 +RS03: try number = 660, reading sector 235621 -> 1 untested layers remaining - layer slice 319 -RS03: try number = 710, reading sector 235622 +RS03: try number = 661, reading sector 235622 -> 1 untested layers remaining - layer slice 320 -RS03: try number = 711, reading sector 235623 +RS03: try number = 662, reading sector 235623 -> 1 untested layers remaining - layer slice 321 -RS03: try number = 712, reading sector 235624 +RS03: try number = 663, reading sector 235624 -> 1 untested layers remaining - layer slice 322 -RS03: try number = 713, reading sector 235625 +RS03: try number = 664, reading sector 235625 -> 1 untested layers remaining - layer slice 323 -RS03: try number = 714, reading sector 235626 +RS03: try number = 665, reading sector 235626 -> 1 untested layers remaining - layer slice 324 -RS03: try number = 715, reading sector 235627 +RS03: try number = 666, reading sector 235627 -> 1 untested layers remaining - layer slice 325 -RS03: try number = 716, reading sector 235628 +RS03: try number = 667, reading sector 235628 -> 1 untested layers remaining - layer slice 326 -RS03: try number = 717, reading sector 235629 +RS03: try number = 668, reading sector 235629 -> 1 untested layers remaining - layer slice 327 -RS03: try number = 718, reading sector 235630 +RS03: try number = 669, reading sector 235630 -> 1 untested layers remaining - layer slice 328 -RS03: try number = 719, reading sector 235631 +RS03: try number = 670, reading sector 235631 -> 1 untested layers remaining - layer slice 329 -RS03: try number = 720, reading sector 235632 +RS03: try number = 671, reading sector 235632 -> 1 untested layers remaining - layer slice 330 -RS03: try number = 721, reading sector 235633 +RS03: try number = 672, reading sector 235633 -> 1 untested layers remaining - layer slice 331 -RS03: try number = 722, reading sector 235634 +RS03: try number = 673, reading sector 235634 -> 1 untested layers remaining - layer slice 332 -RS03: try number = 723, reading sector 235635 +RS03: try number = 674, reading sector 235635 -> 1 untested layers remaining - layer slice 333 -RS03: try number = 724, reading sector 235636 +RS03: try number = 675, reading sector 235636 -> 1 untested layers remaining - layer slice 334 -RS03: try number = 725, reading sector 235637 +RS03: try number = 676, reading sector 235637 -> 1 untested layers remaining - layer slice 335 -RS03: try number = 726, reading sector 235638 +RS03: try number = 677, reading sector 235638 -> 1 untested layers remaining - layer slice 336 -RS03: try number = 727, reading sector 235639 +RS03: try number = 678, reading sector 235639 -> 1 untested layers remaining - layer slice 337 -RS03: try number = 728, reading sector 235640 +RS03: try number = 679, reading sector 235640 -> 1 untested layers remaining - layer slice 338 -RS03: try number = 729, reading sector 235641 +RS03: try number = 680, reading sector 235641 -> 1 untested layers remaining - layer slice 339 -RS03: try number = 730, reading sector 235642 +RS03: try number = 681, reading sector 235642 -> 1 untested layers remaining - layer slice 340 -RS03: try number = 731, reading sector 235643 +RS03: try number = 682, reading sector 235643 -> 1 untested layers remaining - layer slice 341 -RS03: try number = 732, reading sector 235644 +RS03: try number = 683, reading sector 235644 -> 1 untested layers remaining - layer slice 342 -RS03: try number = 733, reading sector 235645 +RS03: try number = 684, reading sector 235645 -> 1 untested layers remaining - layer slice 343 -RS03: try number = 734, reading sector 235646 +RS03: try number = 685, reading sector 235646 -> 1 untested layers remaining - layer slice 344 -RS03: try number = 735, reading sector 235647 +RS03: try number = 686, reading sector 235647 -> 1 untested layers remaining - layer slice 345 -RS03: try number = 736, reading sector 235648 +RS03: try number = 687, reading sector 235648 -> 1 untested layers remaining - layer slice 346 -RS03: try number = 737, reading sector 235649 +RS03: try number = 688, reading sector 235649 -> 1 untested layers remaining - layer slice 347 -RS03: try number = 738, reading sector 235650 +RS03: try number = 689, reading sector 235650 -> 1 untested layers remaining - layer slice 348 -RS03: try number = 739, reading sector 235651 +RS03: try number = 690, reading sector 235651 -> 1 untested layers remaining - layer slice 349 -RS03: try number = 740, reading sector 235652 +RS03: try number = 691, reading sector 235652 -> 1 untested layers remaining - layer slice 350 -RS03: try number = 741, reading sector 235653 +RS03: try number = 692, reading sector 235653 -> 1 untested layers remaining - layer slice 351 -RS03: try number = 742, reading sector 235654 +RS03: try number = 693, reading sector 235654 -> 1 untested layers remaining - layer slice 352 -RS03: try number = 743, reading sector 235655 +RS03: try number = 694, reading sector 235655 -> 1 untested layers remaining - layer slice 353 -RS03: try number = 744, reading sector 235656 +RS03: try number = 695, reading sector 235656 -> 1 untested layers remaining - layer slice 354 -RS03: try number = 745, reading sector 235657 +RS03: try number = 696, reading sector 235657 -> 1 untested layers remaining - layer slice 355 -RS03: try number = 746, reading sector 235658 +RS03: try number = 697, reading sector 235658 -> 1 untested layers remaining - layer slice 356 -RS03: try number = 747, reading sector 235659 +RS03: try number = 698, reading sector 235659 -> 1 untested layers remaining - layer slice 357 -RS03: try number = 748, reading sector 235660 +RS03: try number = 699, reading sector 235660 -> 1 untested layers remaining - layer slice 358 -RS03: try number = 749, reading sector 235661 +RS03: try number = 700, reading sector 235661 -> 1 untested layers remaining - layer slice 359 -RS03: try number = 750, reading sector 235662 +RS03: try number = 701, reading sector 235662 -> 1 untested layers remaining - layer slice 360 -RS03: try number = 751, reading sector 235663 +RS03: try number = 702, reading sector 235663 -> 1 untested layers remaining - layer slice 361 -RS03: try number = 752, reading sector 235664 +RS03: try number = 703, reading sector 235664 -> 1 untested layers remaining - layer slice 362 -RS03: try number = 753, reading sector 235665 +RS03: try number = 704, reading sector 235665 -> 1 untested layers remaining - layer slice 363 -RS03: try number = 754, reading sector 235666 +RS03: try number = 705, reading sector 235666 -> 1 untested layers remaining - layer slice 364 -RS03: try number = 755, reading sector 235667 +RS03: try number = 706, reading sector 235667 -> 1 untested layers remaining - layer slice 365 -RS03: try number = 756, reading sector 235668 +RS03: try number = 707, reading sector 235668 -> 1 untested layers remaining - layer slice 366 -RS03: try number = 757, reading sector 235669 +RS03: try number = 708, reading sector 235669 -> 1 untested layers remaining - layer slice 367 -RS03: try number = 758, reading sector 235670 +RS03: try number = 709, reading sector 235670 -> 1 untested layers remaining - layer slice 368 -RS03: try number = 759, reading sector 235671 +RS03: try number = 710, reading sector 235671 -> 1 untested layers remaining - layer slice 369 -RS03: try number = 760, reading sector 235672 +RS03: try number = 711, reading sector 235672 -> 1 untested layers remaining - layer slice 370 -RS03: try number = 761, reading sector 235673 +RS03: try number = 712, reading sector 235673 -> 1 untested layers remaining - layer slice 371 -RS03: try number = 762, reading sector 235674 +RS03: try number = 713, reading sector 235674 -> 1 untested layers remaining - layer slice 372 -RS03: try number = 763, reading sector 235675 +RS03: try number = 714, reading sector 235675 -> 1 untested layers remaining - layer slice 373 -RS03: try number = 764, reading sector 235676 +RS03: try number = 715, reading sector 235676 -> 1 untested layers remaining - layer slice 374 -RS03: try number = 765, reading sector 235677 +RS03: try number = 716, reading sector 235677 -> 1 untested layers remaining - layer slice 375 -RS03: try number = 766, reading sector 235678 +RS03: try number = 717, reading sector 235678 -> 1 untested layers remaining - layer slice 376 -RS03: try number = 767, reading sector 235679 +RS03: try number = 718, reading sector 235679 -> 1 untested layers remaining - layer slice 377 -RS03: try number = 768, reading sector 235680 +RS03: try number = 719, reading sector 235680 -> 1 untested layers remaining - layer slice 378 -RS03: try number = 769, reading sector 235681 +RS03: try number = 720, reading sector 235681 -> 1 untested layers remaining - layer slice 379 -RS03: try number = 770, reading sector 235682 +RS03: try number = 721, reading sector 235682 -> 1 untested layers remaining - layer slice 380 -RS03: try number = 771, reading sector 235683 +RS03: try number = 722, reading sector 235683 -> 1 untested layers remaining - layer slice 381 -RS03: try number = 772, reading sector 235684 +RS03: try number = 723, reading sector 235684 -> 1 untested layers remaining - layer slice 382 -RS03: try number = 773, reading sector 235685 +RS03: try number = 724, reading sector 235685 -> 1 untested layers remaining - layer slice 383 -RS03: try number = 774, reading sector 235686 +RS03: try number = 725, reading sector 235686 -> 1 untested layers remaining - layer slice 384 -RS03: try number = 775, reading sector 235687 +RS03: try number = 726, reading sector 235687 -> 1 untested layers remaining - layer slice 385 -RS03: try number = 776, reading sector 235688 +RS03: try number = 727, reading sector 235688 -> 1 untested layers remaining - layer slice 386 -RS03: try number = 777, reading sector 235689 +RS03: try number = 728, reading sector 235689 -> 1 untested layers remaining - layer slice 387 -RS03: try number = 778, reading sector 235690 +RS03: try number = 729, reading sector 235690 -> 1 untested layers remaining - layer slice 388 -RS03: try number = 779, reading sector 235691 +RS03: try number = 730, reading sector 235691 -> 1 untested layers remaining - layer slice 389 -RS03: try number = 780, reading sector 235692 +RS03: try number = 731, reading sector 235692 -> 1 untested layers remaining - layer slice 390 -RS03: try number = 781, reading sector 235693 +RS03: try number = 732, reading sector 235693 -> 1 untested layers remaining - layer slice 391 -RS03: try number = 782, reading sector 235694 +RS03: try number = 733, reading sector 235694 -> 1 untested layers remaining - layer slice 392 -RS03: try number = 783, reading sector 235695 +RS03: try number = 734, reading sector 235695 -> 1 untested layers remaining - layer slice 393 -RS03: try number = 784, reading sector 235696 +RS03: try number = 735, reading sector 235696 -> 1 untested layers remaining - layer slice 394 -RS03: try number = 785, reading sector 235697 +RS03: try number = 736, reading sector 235697 -> 1 untested layers remaining - layer slice 395 -RS03: try number = 786, reading sector 235698 +RS03: try number = 737, reading sector 235698 -> 1 untested layers remaining - layer slice 396 -RS03: try number = 787, reading sector 235699 +RS03: try number = 738, reading sector 235699 -> 1 untested layers remaining - layer slice 397 -RS03: try number = 788, reading sector 235700 +RS03: try number = 739, reading sector 235700 -> 1 untested layers remaining - layer slice 398 -RS03: try number = 789, reading sector 235701 +RS03: try number = 740, reading sector 235701 -> 1 untested layers remaining - layer slice 399 -RS03: try number = 790, reading sector 235702 +RS03: try number = 741, reading sector 235702 -> 1 untested layers remaining - layer slice 400 -RS03: try number = 791, reading sector 235703 +RS03: try number = 742, reading sector 235703 -> 1 untested layers remaining - layer slice 401 -RS03: try number = 792, reading sector 235704 +RS03: try number = 743, reading sector 235704 -> 1 untested layers remaining - layer slice 402 -RS03: try number = 793, reading sector 235705 +RS03: try number = 744, reading sector 235705 -> 1 untested layers remaining - layer slice 403 -RS03: try number = 794, reading sector 235706 +RS03: try number = 745, reading sector 235706 -> 1 untested layers remaining - layer slice 404 -RS03: try number = 795, reading sector 235707 +RS03: try number = 746, reading sector 235707 -> 1 untested layers remaining - layer slice 405 -RS03: try number = 796, reading sector 235708 +RS03: try number = 747, reading sector 235708 -> 1 untested layers remaining - layer slice 406 -RS03: try number = 797, reading sector 235709 +RS03: try number = 748, reading sector 235709 -> 1 untested layers remaining - layer slice 407 -RS03: try number = 798, reading sector 235710 +RS03: try number = 749, reading sector 235710 -> 1 untested layers remaining - layer slice 408 -RS03: try number = 799, reading sector 235711 +RS03: try number = 750, reading sector 235711 -> 1 untested layers remaining - layer slice 409 -RS03: try number = 800, reading sector 235712 +RS03: try number = 751, reading sector 235712 -> 1 untested layers remaining - layer slice 410 -RS03: try number = 801, reading sector 235713 +RS03: try number = 752, reading sector 235713 -> 1 untested layers remaining - layer slice 411 -RS03: try number = 802, reading sector 235714 +RS03: try number = 753, reading sector 235714 -> 1 untested layers remaining - layer slice 412 -RS03: try number = 803, reading sector 235715 +RS03: try number = 754, reading sector 235715 -> 1 untested layers remaining - layer slice 413 -RS03: try number = 804, reading sector 235716 +RS03: try number = 755, reading sector 235716 -> 1 untested layers remaining - layer slice 414 -RS03: try number = 805, reading sector 235717 +RS03: try number = 756, reading sector 235717 -> 1 untested layers remaining - layer slice 415 -RS03: try number = 806, reading sector 235718 +RS03: try number = 757, reading sector 235718 -> 1 untested layers remaining - layer slice 416 -RS03: try number = 807, reading sector 235719 +RS03: try number = 758, reading sector 235719 -> 1 untested layers remaining - layer slice 417 -RS03: try number = 808, reading sector 235720 +RS03: try number = 759, reading sector 235720 -> 1 untested layers remaining - layer slice 418 -RS03: try number = 809, reading sector 235721 +RS03: try number = 760, reading sector 235721 -> 1 untested layers remaining - layer slice 419 -RS03: try number = 810, reading sector 235722 +RS03: try number = 761, reading sector 235722 -> 1 untested layers remaining - layer slice 420 -RS03: try number = 811, reading sector 235723 +RS03: try number = 762, reading sector 235723 -> 1 untested layers remaining - layer slice 421 -RS03: try number = 812, reading sector 235724 +RS03: try number = 763, reading sector 235724 -> 1 untested layers remaining - layer slice 422 -RS03: try number = 813, reading sector 235725 +RS03: try number = 764, reading sector 235725 -> 1 untested layers remaining - layer slice 423 -RS03: try number = 814, reading sector 235726 +RS03: try number = 765, reading sector 235726 -> 1 untested layers remaining - layer slice 424 -RS03: try number = 815, reading sector 235727 +RS03: try number = 766, reading sector 235727 -> 1 untested layers remaining - layer slice 425 -RS03: try number = 816, reading sector 235728 +RS03: try number = 767, reading sector 235728 -> 1 untested layers remaining - layer slice 426 -RS03: try number = 817, reading sector 235729 +RS03: try number = 768, reading sector 235729 -> 1 untested layers remaining - layer slice 427 -RS03: try number = 818, reading sector 235730 +RS03: try number = 769, reading sector 235730 -> 1 untested layers remaining - layer slice 428 -RS03: try number = 819, reading sector 235731 +RS03: try number = 770, reading sector 235731 -> 1 untested layers remaining - layer slice 429 -RS03: try number = 820, reading sector 235732 +RS03: try number = 771, reading sector 235732 -> 1 untested layers remaining - layer slice 430 -RS03: try number = 821, reading sector 235733 +RS03: try number = 772, reading sector 235733 -> 1 untested layers remaining - layer slice 431 -RS03: try number = 822, reading sector 235734 +RS03: try number = 773, reading sector 235734 -> 1 untested layers remaining - layer slice 432 -RS03: try number = 823, reading sector 235735 +RS03: try number = 774, reading sector 235735 -> 1 untested layers remaining - layer slice 433 -RS03: try number = 824, reading sector 235736 +RS03: try number = 775, reading sector 235736 -> 1 untested layers remaining - layer slice 434 -RS03: try number = 825, reading sector 235737 +RS03: try number = 776, reading sector 235737 -> 1 untested layers remaining - layer slice 435 -RS03: try number = 826, reading sector 235738 +RS03: try number = 777, reading sector 235738 -> 1 untested layers remaining - layer slice 436 -RS03: try number = 827, reading sector 235739 +RS03: try number = 778, reading sector 235739 -> 1 untested layers remaining - layer slice 437 -RS03: try number = 828, reading sector 235740 +RS03: try number = 779, reading sector 235740 -> 1 untested layers remaining - layer slice 438 -RS03: try number = 829, reading sector 235741 +RS03: try number = 780, reading sector 235741 -> 1 untested layers remaining - layer slice 439 -RS03: try number = 830, reading sector 235742 +RS03: try number = 781, reading sector 235742 -> 1 untested layers remaining - layer slice 440 -RS03: try number = 831, reading sector 235743 +RS03: try number = 782, reading sector 235743 -> 1 untested layers remaining - layer slice 441 -RS03: try number = 832, reading sector 235744 +RS03: try number = 783, reading sector 235744 -> 1 untested layers remaining - layer slice 442 -RS03: try number = 833, reading sector 235745 +RS03: try number = 784, reading sector 235745 -> 1 untested layers remaining - layer slice 443 -RS03: try number = 834, reading sector 235746 +RS03: try number = 785, reading sector 235746 -> 1 untested layers remaining - layer slice 444 -RS03: try number = 835, reading sector 235747 +RS03: try number = 786, reading sector 235747 -> 1 untested layers remaining - layer slice 445 -RS03: try number = 836, reading sector 235748 +RS03: try number = 787, reading sector 235748 -> 1 untested layers remaining - layer slice 446 -RS03: try number = 837, reading sector 235749 +RS03: try number = 788, reading sector 235749 -> 1 untested layers remaining - layer slice 447 -RS03: try number = 838, reading sector 235750 +RS03: try number = 789, reading sector 235750 -> 1 untested layers remaining - layer slice 448 -RS03: try number = 839, reading sector 235751 +RS03: try number = 790, reading sector 235751 -> 1 untested layers remaining - layer slice 449 -RS03: try number = 840, reading sector 235752 +RS03: try number = 791, reading sector 235752 -> 1 untested layers remaining - layer slice 450 -RS03: try number = 841, reading sector 235753 +RS03: try number = 792, reading sector 235753 -> 1 untested layers remaining - layer slice 451 -RS03: try number = 842, reading sector 235754 +RS03: try number = 793, reading sector 235754 -> 1 untested layers remaining - layer slice 452 -RS03: try number = 843, reading sector 235755 +RS03: try number = 794, reading sector 235755 -> 1 untested layers remaining - layer slice 453 -RS03: try number = 844, reading sector 235756 +RS03: try number = 795, reading sector 235756 -> 1 untested layers remaining - layer slice 454 -RS03: try number = 845, reading sector 235757 +RS03: try number = 796, reading sector 235757 -> 1 untested layers remaining - layer slice 455 -RS03: try number = 846, reading sector 235758 +RS03: try number = 797, reading sector 235758 -> 1 untested layers remaining - layer slice 456 -RS03: try number = 847, reading sector 235759 +RS03: try number = 798, reading sector 235759 -> 1 untested layers remaining - layer slice 457 -RS03: try number = 848, reading sector 235760 +RS03: try number = 799, reading sector 235760 -> 1 untested layers remaining - layer slice 458 -RS03: try number = 849, reading sector 235761 +RS03: try number = 800, reading sector 235761 -> 1 untested layers remaining - layer slice 459 -RS03: try number = 850, reading sector 235762 +RS03: try number = 801, reading sector 235762 -> 1 untested layers remaining - layer slice 460 -RS03: try number = 851, reading sector 235763 +RS03: try number = 802, reading sector 235763 -> 1 untested layers remaining - layer slice 461 -RS03: try number = 852, reading sector 235764 +RS03: try number = 803, reading sector 235764 -> 1 untested layers remaining - layer slice 462 -RS03: try number = 853, reading sector 235765 +RS03: try number = 804, reading sector 235765 -> 1 untested layers remaining - layer slice 463 -RS03: try number = 854, reading sector 235766 +RS03: try number = 805, reading sector 235766 -> 1 untested layers remaining - layer slice 464 -RS03: try number = 855, reading sector 235767 +RS03: try number = 806, reading sector 235767 -> 1 untested layers remaining - layer slice 465 -RS03: try number = 856, reading sector 235768 +RS03: try number = 807, reading sector 235768 -> 1 untested layers remaining - layer slice 466 -RS03: try number = 857, reading sector 235769 +RS03: try number = 808, reading sector 235769 -> 1 untested layers remaining - layer slice 467 -RS03: try number = 858, reading sector 235770 +RS03: try number = 809, reading sector 235770 -> 1 untested layers remaining - layer slice 468 -RS03: try number = 859, reading sector 235771 +RS03: try number = 810, reading sector 235771 -> 1 untested layers remaining - layer slice 469 -RS03: try number = 860, reading sector 235772 +RS03: try number = 811, reading sector 235772 -> 1 untested layers remaining - layer slice 470 -RS03: try number = 861, reading sector 235773 +RS03: try number = 812, reading sector 235773 -> 1 untested layers remaining - layer slice 471 -RS03: try number = 862, reading sector 235774 +RS03: try number = 813, reading sector 235774 -> 1 untested layers remaining - layer slice 472 -RS03: try number = 863, reading sector 235775 +RS03: try number = 814, reading sector 235775 -> 1 untested layers remaining - layer slice 473 -RS03: try number = 864, reading sector 235776 +RS03: try number = 815, reading sector 235776 -> 1 untested layers remaining - layer slice 474 -RS03: try number = 865, reading sector 235777 +RS03: try number = 816, reading sector 235777 -> 1 untested layers remaining - layer slice 475 -RS03: try number = 866, reading sector 235778 +RS03: try number = 817, reading sector 235778 -> 1 untested layers remaining - layer slice 476 -RS03: try number = 867, reading sector 235779 +RS03: try number = 818, reading sector 235779 -> 1 untested layers remaining - layer slice 477 -RS03: try number = 868, reading sector 235780 +RS03: try number = 819, reading sector 235780 -> 1 untested layers remaining - layer slice 478 -RS03: try number = 869, reading sector 235781 +RS03: try number = 820, reading sector 235781 -> 1 untested layers remaining - layer slice 479 -RS03: try number = 870, reading sector 235782 +RS03: try number = 821, reading sector 235782 -> 1 untested layers remaining - layer slice 480 -RS03: try number = 871, reading sector 235783 +RS03: try number = 822, reading sector 235783 -> 1 untested layers remaining - layer slice 481 -RS03: try number = 872, reading sector 235784 +RS03: try number = 823, reading sector 235784 -> 1 untested layers remaining - layer slice 482 -RS03: try number = 873, reading sector 235785 +RS03: try number = 824, reading sector 235785 -> 1 untested layers remaining - layer slice 483 -RS03: try number = 874, reading sector 235786 +RS03: try number = 825, reading sector 235786 -> 1 untested layers remaining - layer slice 484 -RS03: try number = 875, reading sector 235787 +RS03: try number = 826, reading sector 235787 -> 1 untested layers remaining - layer slice 485 -RS03: try number = 876, reading sector 235788 +RS03: try number = 827, reading sector 235788 -> 1 untested layers remaining - layer slice 486 -RS03: try number = 877, reading sector 235789 +RS03: try number = 828, reading sector 235789 -> 1 untested layers remaining - layer slice 487 -RS03: try number = 878, reading sector 235790 +RS03: try number = 829, reading sector 235790 -> 1 untested layers remaining - layer slice 488 -RS03: try number = 879, reading sector 235791 +RS03: try number = 830, reading sector 235791 -> 1 untested layers remaining - layer slice 489 -RS03: try number = 880, reading sector 235792 +RS03: try number = 831, reading sector 235792 -> 1 untested layers remaining - layer slice 490 -RS03: try number = 881, reading sector 235793 +RS03: try number = 832, reading sector 235793 -> 1 untested layers remaining - layer slice 491 -RS03: try number = 882, reading sector 235794 +RS03: try number = 833, reading sector 235794 -> 1 untested layers remaining - layer slice 492 -RS03: try number = 883, reading sector 235795 +RS03: try number = 834, reading sector 235795 -> 1 untested layers remaining - layer slice 493 -RS03: try number = 884, reading sector 235796 +RS03: try number = 835, reading sector 235796 -> 1 untested layers remaining - layer slice 494 -RS03: try number = 885, reading sector 235797 +RS03: try number = 836, reading sector 235797 -> 1 untested layers remaining - layer slice 495 -RS03: try number = 886, reading sector 235798 +RS03: try number = 837, reading sector 235798 -> 1 untested layers remaining - layer slice 496 -RS03: try number = 887, reading sector 235799 +RS03: try number = 838, reading sector 235799 -> 1 untested layers remaining - layer slice 497 -RS03: try number = 888, reading sector 235800 +RS03: try number = 839, reading sector 235800 -> 1 untested layers remaining - layer slice 498 -RS03: try number = 889, reading sector 235801 +RS03: try number = 840, reading sector 235801 -> 1 untested layers remaining - layer slice 499 -RS03: try number = 890, reading sector 235802 +RS03: try number = 841, reading sector 235802 -> 1 untested layers remaining - layer slice 500 -RS03: try number = 891, reading sector 235803 +RS03: try number = 842, reading sector 235803 -> 1 untested layers remaining - layer slice 501 -RS03: try number = 892, reading sector 235804 +RS03: try number = 843, reading sector 235804 -> 1 untested layers remaining - layer slice 502 -RS03: try number = 893, reading sector 235805 +RS03: try number = 844, reading sector 235805 -> 1 untested layers remaining - layer slice 503 -RS03: try number = 894, reading sector 235806 +RS03: try number = 845, reading sector 235806 -> 1 untested layers remaining - layer slice 504 -RS03: try number = 895, reading sector 235807 +RS03: try number = 846, reading sector 235807 -> 1 untested layers remaining - layer slice 505 -RS03: try number = 896, reading sector 235808 +RS03: try number = 847, reading sector 235808 -> 1 untested layers remaining - layer slice 506 -RS03: try number = 897, reading sector 235809 +RS03: try number = 848, reading sector 235809 -> 1 untested layers remaining - layer slice 507 -RS03: try number = 898, reading sector 235810 +RS03: try number = 849, reading sector 235810 -> 1 untested layers remaining - layer slice 508 -RS03: try number = 899, reading sector 235811 +RS03: try number = 850, reading sector 235811 -> 1 untested layers remaining - layer slice 509 -RS03: try number = 900, reading sector 235812 +RS03: try number = 851, reading sector 235812 -> 1 untested layers remaining - layer slice 510 -RS03: try number = 901, reading sector 235813 +RS03: try number = 852, reading sector 235813 -> 1 untested layers remaining - layer slice 511 -RS03: try number = 902, reading sector 235814 +RS03: try number = 853, reading sector 235814 -> 1 untested layers remaining - layer slice 512 -RS03: try number = 903, reading sector 235815 +RS03: try number = 854, reading sector 235815 -> 1 untested layers remaining - layer slice 513 -RS03: try number = 904, reading sector 235816 +RS03: try number = 855, reading sector 235816 -> 1 untested layers remaining - layer slice 514 -RS03: try number = 905, reading sector 235817 +RS03: try number = 856, reading sector 235817 -> 1 untested layers remaining - layer slice 515 -RS03: try number = 906, reading sector 235818 +RS03: try number = 857, reading sector 235818 -> 1 untested layers remaining - layer slice 516 -RS03: try number = 907, reading sector 235819 +RS03: try number = 858, reading sector 235819 -> 1 untested layers remaining - layer slice 517 -RS03: try number = 908, reading sector 235820 +RS03: try number = 859, reading sector 235820 -> 1 untested layers remaining - layer slice 518 -RS03: try number = 909, reading sector 235821 +RS03: try number = 860, reading sector 235821 -> 1 untested layers remaining - layer slice 519 -RS03: try number = 910, reading sector 235822 +RS03: try number = 861, reading sector 235822 -> 1 untested layers remaining - layer slice 520 -RS03: try number = 911, reading sector 235823 +RS03: try number = 862, reading sector 235823 -> 1 untested layers remaining - layer slice 521 -RS03: try number = 912, reading sector 235824 +RS03: try number = 863, reading sector 235824 -> 1 untested layers remaining - layer slice 522 -RS03: try number = 913, reading sector 235825 +RS03: try number = 864, reading sector 235825 -> 1 untested layers remaining - layer slice 523 -RS03: try number = 914, reading sector 235826 +RS03: try number = 865, reading sector 235826 -> 1 untested layers remaining - layer slice 524 -RS03: try number = 915, reading sector 235827 +RS03: try number = 866, reading sector 235827 -> 1 untested layers remaining - layer slice 525 -RS03: try number = 916, reading sector 235828 +RS03: try number = 867, reading sector 235828 -> 1 untested layers remaining - layer slice 526 -RS03: try number = 917, reading sector 235829 +RS03: try number = 868, reading sector 235829 -> 1 untested layers remaining - layer slice 527 -RS03: try number = 918, reading sector 235830 +RS03: try number = 869, reading sector 235830 -> 1 untested layers remaining - layer slice 528 -RS03: try number = 919, reading sector 235831 +RS03: try number = 870, reading sector 235831 -> 1 untested layers remaining - layer slice 529 -RS03: try number = 920, reading sector 235832 +RS03: try number = 871, reading sector 235832 -> 1 untested layers remaining - layer slice 530 -RS03: try number = 921, reading sector 235833 +RS03: try number = 872, reading sector 235833 -> 1 untested layers remaining - layer slice 531 -RS03: try number = 922, reading sector 235834 +RS03: try number = 873, reading sector 235834 -> 1 untested layers remaining - layer slice 532 -RS03: try number = 923, reading sector 235835 +RS03: try number = 874, reading sector 235835 -> 1 untested layers remaining - layer slice 533 -RS03: try number = 924, reading sector 235836 +RS03: try number = 875, reading sector 235836 -> 1 untested layers remaining - layer slice 534 -RS03: try number = 925, reading sector 235837 +RS03: try number = 876, reading sector 235837 -> 1 untested layers remaining - layer slice 535 -RS03: try number = 926, reading sector 235838 +RS03: try number = 877, reading sector 235838 -> 1 untested layers remaining - layer slice 536 -RS03: try number = 927, reading sector 235839 +RS03: try number = 878, reading sector 235839 -> 1 untested layers remaining - layer slice 537 -RS03: try number = 928, reading sector 235840 +RS03: try number = 879, reading sector 235840 -> 1 untested layers remaining - layer slice 538 -RS03: try number = 929, reading sector 235841 +RS03: try number = 880, reading sector 235841 -> 1 untested layers remaining - layer slice 539 -RS03: try number = 930, reading sector 235842 +RS03: try number = 881, reading sector 235842 -> 1 untested layers remaining - layer slice 540 -RS03: try number = 931, reading sector 235843 +RS03: try number = 882, reading sector 235843 -> 1 untested layers remaining - layer slice 541 -RS03: try number = 932, reading sector 235844 +RS03: try number = 883, reading sector 235844 -> 1 untested layers remaining - layer slice 542 -RS03: try number = 933, reading sector 235845 +RS03: try number = 884, reading sector 235845 -> 1 untested layers remaining - layer slice 543 -RS03: try number = 934, reading sector 235846 +RS03: try number = 885, reading sector 235846 -> 1 untested layers remaining - layer slice 544 -RS03: try number = 935, reading sector 235847 +RS03: try number = 886, reading sector 235847 -> 1 untested layers remaining - layer slice 545 -RS03: try number = 936, reading sector 235848 +RS03: try number = 887, reading sector 235848 -> 1 untested layers remaining - layer slice 546 -RS03: try number = 937, reading sector 235849 +RS03: try number = 888, reading sector 235849 -> 1 untested layers remaining - layer slice 547 -RS03: try number = 938, reading sector 235850 +RS03: try number = 889, reading sector 235850 -> 1 untested layers remaining - layer slice 548 -RS03: try number = 939, reading sector 235851 +RS03: try number = 890, reading sector 235851 -> 1 untested layers remaining - layer slice 549 -RS03: try number = 940, reading sector 235852 +RS03: try number = 891, reading sector 235852 -> 1 untested layers remaining - layer slice 550 -RS03: try number = 941, reading sector 235853 +RS03: try number = 892, reading sector 235853 -> 1 untested layers remaining - layer slice 551 -RS03: try number = 942, reading sector 235854 +RS03: try number = 893, reading sector 235854 -> 1 untested layers remaining - layer slice 552 -RS03: try number = 943, reading sector 235855 +RS03: try number = 894, reading sector 235855 -> 1 untested layers remaining - layer slice 553 -RS03: try number = 944, reading sector 235856 +RS03: try number = 895, reading sector 235856 -> 1 untested layers remaining - layer slice 554 -RS03: try number = 945, reading sector 235857 +RS03: try number = 896, reading sector 235857 -> 1 untested layers remaining - layer slice 555 -RS03: try number = 946, reading sector 235858 +RS03: try number = 897, reading sector 235858 -> 1 untested layers remaining - layer slice 556 -RS03: try number = 947, reading sector 235859 +RS03: try number = 898, reading sector 235859 -> 1 untested layers remaining - layer slice 557 -RS03: try number = 948, reading sector 235860 +RS03: try number = 899, reading sector 235860 -> 1 untested layers remaining - layer slice 558 -RS03: try number = 949, reading sector 235861 +RS03: try number = 900, reading sector 235861 -> 1 untested layers remaining - layer slice 559 -RS03: try number = 950, reading sector 235862 +RS03: try number = 901, reading sector 235862 -> 1 untested layers remaining - layer slice 560 -RS03: try number = 951, reading sector 235863 +RS03: try number = 902, reading sector 235863 -> 1 untested layers remaining - layer slice 561 -RS03: try number = 952, reading sector 235864 +RS03: try number = 903, reading sector 235864 -> 1 untested layers remaining - layer slice 562 -RS03: try number = 953, reading sector 235865 +RS03: try number = 904, reading sector 235865 -> 1 untested layers remaining - layer slice 563 -RS03: try number = 954, reading sector 235866 +RS03: try number = 905, reading sector 235866 -> 1 untested layers remaining - layer slice 564 -RS03: try number = 955, reading sector 235867 +RS03: try number = 906, reading sector 235867 -> 1 untested layers remaining - layer slice 565 -RS03: try number = 956, reading sector 235868 +RS03: try number = 907, reading sector 235868 -> 1 untested layers remaining - layer slice 566 -RS03: try number = 957, reading sector 235869 +RS03: try number = 908, reading sector 235869 -> 1 untested layers remaining - layer slice 567 -RS03: try number = 958, reading sector 235870 +RS03: try number = 909, reading sector 235870 -> 1 untested layers remaining - layer slice 568 -RS03: try number = 959, reading sector 235871 +RS03: try number = 910, reading sector 235871 -> 1 untested layers remaining - layer slice 569 -RS03: try number = 960, reading sector 235872 +RS03: try number = 911, reading sector 235872 -> 1 untested layers remaining - layer slice 570 -RS03: try number = 961, reading sector 235873 +RS03: try number = 912, reading sector 235873 -> 1 untested layers remaining - layer slice 571 -RS03: try number = 962, reading sector 235874 +RS03: try number = 913, reading sector 235874 -> 1 untested layers remaining - layer slice 572 -RS03: try number = 963, reading sector 235875 +RS03: try number = 914, reading sector 235875 -> 1 untested layers remaining - layer slice 573 -RS03: try number = 964, reading sector 235876 +RS03: try number = 915, reading sector 235876 -> 1 untested layers remaining - layer slice 574 -RS03: try number = 965, reading sector 235877 +RS03: try number = 916, reading sector 235877 -> 1 untested layers remaining - layer slice 575 -RS03: try number = 966, reading sector 235878 +RS03: try number = 917, reading sector 235878 -> 1 untested layers remaining - layer slice 576 -RS03: try number = 967, reading sector 235879 +RS03: try number = 918, reading sector 235879 -> 1 untested layers remaining - layer slice 577 -RS03: try number = 968, reading sector 235880 +RS03: try number = 919, reading sector 235880 -> 1 untested layers remaining - layer slice 578 -RS03: try number = 969, reading sector 235881 +RS03: try number = 920, reading sector 235881 -> 1 untested layers remaining - layer slice 579 -RS03: try number = 970, reading sector 235882 +RS03: try number = 921, reading sector 235882 -> 1 untested layers remaining - layer slice 580 -RS03: try number = 971, reading sector 235883 +RS03: try number = 922, reading sector 235883 -> 1 untested layers remaining - layer slice 581 -RS03: try number = 972, reading sector 235884 +RS03: try number = 923, reading sector 235884 -> 1 untested layers remaining - layer slice 582 -RS03: try number = 973, reading sector 235885 +RS03: try number = 924, reading sector 235885 -> 1 untested layers remaining - layer slice 583 -RS03: try number = 974, reading sector 235886 +RS03: try number = 925, reading sector 235886 -> 1 untested layers remaining - layer slice 584 -RS03: try number = 975, reading sector 235887 +RS03: try number = 926, reading sector 235887 -> 1 untested layers remaining - layer slice 585 -RS03: try number = 976, reading sector 235888 +RS03: try number = 927, reading sector 235888 -> 1 untested layers remaining - layer slice 586 -RS03: try number = 977, reading sector 235889 +RS03: try number = 928, reading sector 235889 -> 1 untested layers remaining - layer slice 587 -RS03: try number = 978, reading sector 235890 +RS03: try number = 929, reading sector 235890 -> 1 untested layers remaining - layer slice 588 -RS03: try number = 979, reading sector 235891 +RS03: try number = 930, reading sector 235891 -> 1 untested layers remaining - layer slice 589 -RS03: try number = 980, reading sector 235892 +RS03: try number = 931, reading sector 235892 -> 1 untested layers remaining - layer slice 590 -RS03: try number = 981, reading sector 235893 +RS03: try number = 932, reading sector 235893 -> 1 untested layers remaining - layer slice 591 -RS03: try number = 982, reading sector 235894 +RS03: try number = 933, reading sector 235894 -> 1 untested layers remaining - layer slice 592 -RS03: try number = 983, reading sector 235895 +RS03: try number = 934, reading sector 235895 -> 1 untested layers remaining - layer slice 593 -RS03: try number = 984, reading sector 235896 +RS03: try number = 935, reading sector 235896 -> 1 untested layers remaining - layer slice 594 -RS03: try number = 985, reading sector 235897 +RS03: try number = 936, reading sector 235897 -> 1 untested layers remaining - layer slice 595 -RS03: try number = 986, reading sector 235898 +RS03: try number = 937, reading sector 235898 -> 1 untested layers remaining - layer slice 596 -RS03: try number = 987, reading sector 235899 +RS03: try number = 938, reading sector 235899 -> 1 untested layers remaining - layer slice 597 -RS03: try number = 988, reading sector 235900 +RS03: try number = 939, reading sector 235900 -> 1 untested layers remaining - layer slice 598 -RS03: try number = 989, reading sector 235901 +RS03: try number = 940, reading sector 235901 -> 1 untested layers remaining - layer slice 599 -RS03: try number = 990, reading sector 235902 +RS03: try number = 941, reading sector 235902 -> 1 untested layers remaining - layer slice 600 -RS03: try number = 991, reading sector 235903 +RS03: try number = 942, reading sector 235903 -> 1 untested layers remaining - layer slice 601 -RS03: try number = 992, reading sector 235904 +RS03: try number = 943, reading sector 235904 -> 1 untested layers remaining - layer slice 602 -RS03: try number = 993, reading sector 235905 +RS03: try number = 944, reading sector 235905 -> 1 untested layers remaining - layer slice 603 -RS03: try number = 994, reading sector 235906 +RS03: try number = 945, reading sector 235906 -> 1 untested layers remaining - layer slice 604 -RS03: try number = 995, reading sector 235907 +RS03: try number = 946, reading sector 235907 -> 1 untested layers remaining - layer slice 605 -RS03: try number = 996, reading sector 235908 +RS03: try number = 947, reading sector 235908 -> 1 untested layers remaining - layer slice 606 -RS03: try number = 997, reading sector 235909 +RS03: try number = 948, reading sector 235909 -> 1 untested layers remaining - layer slice 607 -RS03: try number = 998, reading sector 235910 +RS03: try number = 949, reading sector 235910 -> 1 untested layers remaining - layer slice 608 -RS03: try number = 999, reading sector 235911 +RS03: try number = 950, reading sector 235911 -> 1 untested layers remaining - layer slice 609 -RS03: try number = 1000, reading sector 235912 +RS03: try number = 951, reading sector 235912 -> 1 untested layers remaining - layer slice 610 -RS03: try number = 1001, reading sector 235913 +RS03: try number = 952, reading sector 235913 -> 1 untested layers remaining - layer slice 611 -RS03: try number = 1002, reading sector 235914 +RS03: try number = 953, reading sector 235914 -> 1 untested layers remaining - layer slice 612 -RS03: try number = 1003, reading sector 235915 +RS03: try number = 954, reading sector 235915 -> 1 untested layers remaining - layer slice 613 -RS03: try number = 1004, reading sector 235916 +RS03: try number = 955, reading sector 235916 -> 1 untested layers remaining - layer slice 614 -RS03: try number = 1005, reading sector 235917 +RS03: try number = 956, reading sector 235917 -> 1 untested layers remaining - layer slice 615 -RS03: try number = 1006, reading sector 235918 +RS03: try number = 957, reading sector 235918 -> 1 untested layers remaining - layer slice 616 -RS03: try number = 1007, reading sector 235919 +RS03: try number = 958, reading sector 235919 -> 1 untested layers remaining - layer slice 617 -RS03: try number = 1008, reading sector 235920 +RS03: try number = 959, reading sector 235920 -> 1 untested layers remaining - layer slice 618 -RS03: try number = 1009, reading sector 235921 +RS03: try number = 960, reading sector 235921 -> 1 untested layers remaining - layer slice 619 -RS03: try number = 1010, reading sector 235922 +RS03: try number = 961, reading sector 235922 -> 1 untested layers remaining - layer slice 620 -RS03: try number = 1011, reading sector 235923 +RS03: try number = 962, reading sector 235923 -> 1 untested layers remaining - layer slice 621 -RS03: try number = 1012, reading sector 235924 +RS03: try number = 963, reading sector 235924 -> 1 untested layers remaining - layer slice 622 -RS03: try number = 1013, reading sector 235925 +RS03: try number = 964, reading sector 235925 -> 1 untested layers remaining - layer slice 623 -RS03: try number = 1014, reading sector 235926 +RS03: try number = 965, reading sector 235926 -> 1 untested layers remaining - layer slice 624 -RS03: try number = 1015, reading sector 235927 +RS03: try number = 966, reading sector 235927 -> 1 untested layers remaining - layer slice 625 -RS03: try number = 1016, reading sector 235928 +RS03: try number = 967, reading sector 235928 -> 1 untested layers remaining - layer slice 626 -RS03: try number = 1017, reading sector 235929 +RS03: try number = 968, reading sector 235929 -> 1 untested layers remaining - layer slice 627 -RS03: try number = 1018, reading sector 235930 +RS03: try number = 969, reading sector 235930 -> 1 untested layers remaining - layer slice 628 -RS03: try number = 1019, reading sector 235931 +RS03: try number = 970, reading sector 235931 -> 1 untested layers remaining - layer slice 629 -RS03: try number = 1020, reading sector 235932 +RS03: try number = 971, reading sector 235932 -> 1 untested layers remaining - layer slice 630 -RS03: try number = 1021, reading sector 235933 +RS03: try number = 972, reading sector 235933 -> 1 untested layers remaining - layer slice 631 -RS03: try number = 1022, reading sector 235934 +RS03: try number = 973, reading sector 235934 -> 1 untested layers remaining - layer slice 632 -RS03: try number = 1023, reading sector 235935 +RS03: try number = 974, reading sector 235935 -> 1 untested layers remaining - layer slice 633 -RS03: try number = 1024, reading sector 235936 +RS03: try number = 975, reading sector 235936 -> 1 untested layers remaining - layer slice 634 -RS03: try number = 1025, reading sector 235937 +RS03: try number = 976, reading sector 235937 -> 1 untested layers remaining - layer slice 635 -RS03: try number = 1026, reading sector 235938 +RS03: try number = 977, reading sector 235938 -> 1 untested layers remaining - layer slice 636 -RS03: try number = 1027, reading sector 235939 +RS03: try number = 978, reading sector 235939 -> 1 untested layers remaining - layer slice 637 -RS03: try number = 1028, reading sector 235940 +RS03: try number = 979, reading sector 235940 -> 1 untested layers remaining - layer slice 638 -RS03: try number = 1029, reading sector 235941 +RS03: try number = 980, reading sector 235941 -> 1 untested layers remaining - layer slice 639 -RS03: try number = 1030, reading sector 235942 +RS03: try number = 981, reading sector 235942 -> 1 untested layers remaining - layer slice 640 -RS03: try number = 1031, reading sector 235943 +RS03: try number = 982, reading sector 235943 -> 1 untested layers remaining - layer slice 641 -RS03: try number = 1032, reading sector 235944 +RS03: try number = 983, reading sector 235944 -> 1 untested layers remaining - layer slice 642 -RS03: try number = 1033, reading sector 235945 +RS03: try number = 984, reading sector 235945 -> 1 untested layers remaining - layer slice 643 -RS03: try number = 1034, reading sector 235946 +RS03: try number = 985, reading sector 235946 -> 1 untested layers remaining - layer slice 644 -RS03: try number = 1035, reading sector 235947 +RS03: try number = 986, reading sector 235947 -> 1 untested layers remaining - layer slice 645 -RS03: try number = 1036, reading sector 235948 +RS03: try number = 987, reading sector 235948 -> 1 untested layers remaining - layer slice 646 -RS03: try number = 1037, reading sector 235949 +RS03: try number = 988, reading sector 235949 -> 1 untested layers remaining - layer slice 647 -RS03: try number = 1038, reading sector 235950 +RS03: try number = 989, reading sector 235950 -> 1 untested layers remaining - layer slice 648 -RS03: try number = 1039, reading sector 235951 +RS03: try number = 990, reading sector 235951 -> 1 untested layers remaining - layer slice 649 -RS03: try number = 1040, reading sector 235952 +RS03: try number = 991, reading sector 235952 -> 1 untested layers remaining - layer slice 650 -RS03: try number = 1041, reading sector 235953 +RS03: try number = 992, reading sector 235953 -> 1 untested layers remaining - layer slice 651 -RS03: try number = 1042, reading sector 235954 +RS03: try number = 993, reading sector 235954 -> 1 untested layers remaining - layer slice 652 -RS03: try number = 1043, reading sector 235955 +RS03: try number = 994, reading sector 235955 -> 1 untested layers remaining - layer slice 653 -RS03: try number = 1044, reading sector 235956 +RS03: try number = 995, reading sector 235956 -> 1 untested layers remaining - layer slice 654 -RS03: try number = 1045, reading sector 235957 +RS03: try number = 996, reading sector 235957 -> 1 untested layers remaining - layer slice 655 -RS03: try number = 1046, reading sector 235958 +RS03: try number = 997, reading sector 235958 -> 1 untested layers remaining - layer slice 656 -RS03: try number = 1047, reading sector 235959 +RS03: try number = 998, reading sector 235959 -> 1 untested layers remaining - layer slice 657 -RS03: try number = 1048, reading sector 235960 +RS03: try number = 999, reading sector 235960 -> 1 untested layers remaining - layer slice 658 -RS03: try number = 1049, reading sector 235961 +RS03: try number = 1000, reading sector 235961 -> 1 untested layers remaining - layer slice 659 -RS03: try number = 1050, reading sector 235962 +RS03: try number = 1001, reading sector 235962 -> 1 untested layers remaining - layer slice 660 -RS03: try number = 1051, reading sector 235963 +RS03: try number = 1002, reading sector 235963 -> 1 untested layers remaining - layer slice 661 -RS03: try number = 1052, reading sector 235964 +RS03: try number = 1003, reading sector 235964 -> 1 untested layers remaining - layer slice 662 -RS03: try number = 1053, reading sector 235965 +RS03: try number = 1004, reading sector 235965 -> 1 untested layers remaining - layer slice 663 -RS03: try number = 1054, reading sector 235966 +RS03: try number = 1005, reading sector 235966 -> 1 untested layers remaining - layer slice 664 -RS03: try number = 1055, reading sector 235967 +RS03: try number = 1006, reading sector 235967 -> 1 untested layers remaining - layer slice 665 -RS03: try number = 1056, reading sector 235968 +RS03: try number = 1007, reading sector 235968 -> 1 untested layers remaining - layer slice 666 -RS03: try number = 1057, reading sector 235969 +RS03: try number = 1008, reading sector 235969 -> 1 untested layers remaining - layer slice 667 -RS03: try number = 1058, reading sector 235970 +RS03: try number = 1009, reading sector 235970 -> 1 untested layers remaining - layer slice 668 -RS03: try number = 1059, reading sector 235971 +RS03: try number = 1010, reading sector 235971 -> 1 untested layers remaining - layer slice 669 -RS03: try number = 1060, reading sector 235972 +RS03: try number = 1011, reading sector 235972 -> 1 untested layers remaining - layer slice 670 -RS03: try number = 1061, reading sector 235973 +RS03: try number = 1012, reading sector 235973 -> 1 untested layers remaining - layer slice 671 -RS03: try number = 1062, reading sector 235974 +RS03: try number = 1013, reading sector 235974 -> 1 untested layers remaining - layer slice 672 -RS03: try number = 1063, reading sector 235975 +RS03: try number = 1014, reading sector 235975 -> 1 untested layers remaining - layer slice 673 -RS03: try number = 1064, reading sector 235976 +RS03: try number = 1015, reading sector 235976 -> 1 untested layers remaining - layer slice 674 -RS03: try number = 1065, reading sector 235977 +RS03: try number = 1016, reading sector 235977 -> 1 untested layers remaining - layer slice 675 -RS03: try number = 1066, reading sector 235978 +RS03: try number = 1017, reading sector 235978 -> 1 untested layers remaining - layer slice 676 -RS03: try number = 1067, reading sector 235979 +RS03: try number = 1018, reading sector 235979 -> 1 untested layers remaining - layer slice 677 -RS03: try number = 1068, reading sector 235980 +RS03: try number = 1019, reading sector 235980 -> 1 untested layers remaining - layer slice 678 -RS03: try number = 1069, reading sector 235981 +RS03: try number = 1020, reading sector 235981 -> 1 untested layers remaining - layer slice 679 -RS03: try number = 1070, reading sector 235982 +RS03: try number = 1021, reading sector 235982 -> 1 untested layers remaining - layer slice 680 -RS03: try number = 1071, reading sector 235983 +RS03: try number = 1022, reading sector 235983 -> 1 untested layers remaining - layer slice 681 -RS03: try number = 1072, reading sector 235984 +RS03: try number = 1023, reading sector 235984 -> 1 untested layers remaining - layer slice 682 -RS03: try number = 1073, reading sector 235985 +RS03: try number = 1024, reading sector 235985 -> 1 untested layers remaining - layer slice 683 -RS03: try number = 1074, reading sector 235986 +RS03: try number = 1025, reading sector 235986 -> 1 untested layers remaining - layer slice 684 -RS03: try number = 1075, reading sector 235987 +RS03: try number = 1026, reading sector 235987 -> 1 untested layers remaining - layer slice 685 -RS03: try number = 1076, reading sector 235988 +RS03: try number = 1027, reading sector 235988 -> 1 untested layers remaining - layer slice 686 -RS03: try number = 1077, reading sector 235989 +RS03: try number = 1028, reading sector 235989 -> 1 untested layers remaining - layer slice 687 -RS03: try number = 1078, reading sector 235990 +RS03: try number = 1029, reading sector 235990 -> 1 untested layers remaining - layer slice 688 -RS03: try number = 1079, reading sector 235991 +RS03: try number = 1030, reading sector 235991 -> 1 untested layers remaining - layer slice 689 -RS03: try number = 1080, reading sector 235992 +RS03: try number = 1031, reading sector 235992 -> 1 untested layers remaining - layer slice 690 -RS03: try number = 1081, reading sector 235993 +RS03: try number = 1032, reading sector 235993 -> 1 untested layers remaining - layer slice 691 -RS03: try number = 1082, reading sector 235994 +RS03: try number = 1033, reading sector 235994 -> 1 untested layers remaining - layer slice 692 -RS03: try number = 1083, reading sector 235995 +RS03: try number = 1034, reading sector 235995 -> 1 untested layers remaining - layer slice 693 -RS03: try number = 1084, reading sector 235996 +RS03: try number = 1035, reading sector 235996 -> 1 untested layers remaining - layer slice 694 -RS03: try number = 1085, reading sector 235997 +RS03: try number = 1036, reading sector 235997 -> 1 untested layers remaining - layer slice 695 -RS03: try number = 1086, reading sector 235998 +RS03: try number = 1037, reading sector 235998 -> 1 untested layers remaining - layer slice 696 -RS03: try number = 1087, reading sector 235999 +RS03: try number = 1038, reading sector 235999 -> 1 untested layers remaining - layer slice 697 -RS03: try number = 1088, reading sector 236000 +RS03: try number = 1039, reading sector 236000 -> 1 untested layers remaining - layer slice 698 -RS03: try number = 1089, reading sector 236001 +RS03: try number = 1040, reading sector 236001 -> 1 untested layers remaining - layer slice 699 -RS03: try number = 1090, reading sector 236002 +RS03: try number = 1041, reading sector 236002 -> 1 untested layers remaining - layer slice 700 -RS03: try number = 1091, reading sector 236003 +RS03: try number = 1042, reading sector 236003 -> 1 untested layers remaining - layer slice 701 -RS03: try number = 1092, reading sector 236004 +RS03: try number = 1043, reading sector 236004 -> 1 untested layers remaining - layer slice 702 -RS03: try number = 1093, reading sector 236005 +RS03: try number = 1044, reading sector 236005 -> 1 untested layers remaining - layer slice 703 -RS03: try number = 1094, reading sector 236006 +RS03: try number = 1045, reading sector 236006 -> 1 untested layers remaining - layer slice 704 -RS03: try number = 1095, reading sector 236007 +RS03: try number = 1046, reading sector 236007 -> 1 untested layers remaining - layer slice 705 -RS03: try number = 1096, reading sector 236008 +RS03: try number = 1047, reading sector 236008 -> 1 untested layers remaining - layer slice 706 -RS03: try number = 1097, reading sector 236009 +RS03: try number = 1048, reading sector 236009 -> 1 untested layers remaining - layer slice 707 -RS03: try number = 1098, reading sector 236010 +RS03: try number = 1049, reading sector 236010 -> 1 untested layers remaining - layer slice 708 -RS03: try number = 1099, reading sector 236011 +RS03: try number = 1050, reading sector 236011 -> 1 untested layers remaining - layer slice 709 -RS03: try number = 1100, reading sector 236012 +RS03: try number = 1051, reading sector 236012 -> 1 untested layers remaining - layer slice 710 -RS03: try number = 1101, reading sector 236013 +RS03: try number = 1052, reading sector 236013 -> 1 untested layers remaining - layer slice 711 -RS03: try number = 1102, reading sector 236014 +RS03: try number = 1053, reading sector 236014 -> 1 untested layers remaining - layer slice 712 -RS03: try number = 1103, reading sector 236015 +RS03: try number = 1054, reading sector 236015 -> 1 untested layers remaining - layer slice 713 -RS03: try number = 1104, reading sector 236016 +RS03: try number = 1055, reading sector 236016 -> 1 untested layers remaining - layer slice 714 -RS03: try number = 1105, reading sector 236017 +RS03: try number = 1056, reading sector 236017 -> 1 untested layers remaining - layer slice 715 -RS03: try number = 1106, reading sector 236018 +RS03: try number = 1057, reading sector 236018 -> 1 untested layers remaining - layer slice 716 -RS03: try number = 1107, reading sector 236019 +RS03: try number = 1058, reading sector 236019 -> 1 untested layers remaining - layer slice 717 -RS03: try number = 1108, reading sector 236020 +RS03: try number = 1059, reading sector 236020 -> 1 untested layers remaining - layer slice 718 -RS03: try number = 1109, reading sector 236021 +RS03: try number = 1060, reading sector 236021 -> 1 untested layers remaining - layer slice 719 -RS03: try number = 1110, reading sector 236022 +RS03: try number = 1061, reading sector 236022 -> 1 untested layers remaining - layer slice 720 -RS03: try number = 1111, reading sector 236023 +RS03: try number = 1062, reading sector 236023 -> 1 untested layers remaining - layer slice 721 -RS03: try number = 1112, reading sector 236024 +RS03: try number = 1063, reading sector 236024 -> 1 untested layers remaining - layer slice 722 -RS03: try number = 1113, reading sector 236025 +RS03: try number = 1064, reading sector 236025 -> 1 untested layers remaining - layer slice 723 -RS03: try number = 1114, reading sector 236026 +RS03: try number = 1065, reading sector 236026 -> 1 untested layers remaining - layer slice 724 -RS03: try number = 1115, reading sector 236027 +RS03: try number = 1066, reading sector 236027 -> 1 untested layers remaining - layer slice 725 -RS03: try number = 1116, reading sector 236028 +RS03: try number = 1067, reading sector 236028 -> 1 untested layers remaining - layer slice 726 -RS03: try number = 1117, reading sector 236029 +RS03: try number = 1068, reading sector 236029 -> 1 untested layers remaining - layer slice 727 -RS03: try number = 1118, reading sector 236030 +RS03: try number = 1069, reading sector 236030 -> 1 untested layers remaining - layer slice 728 -RS03: try number = 1119, reading sector 236031 +RS03: try number = 1070, reading sector 236031 -> 1 untested layers remaining - layer slice 729 -RS03: try number = 1120, reading sector 236032 +RS03: try number = 1071, reading sector 236032 -> 1 untested layers remaining - layer slice 730 -RS03: try number = 1121, reading sector 236033 +RS03: try number = 1072, reading sector 236033 -> 1 untested layers remaining - layer slice 731 -RS03: try number = 1122, reading sector 236034 +RS03: try number = 1073, reading sector 236034 -> 1 untested layers remaining - layer slice 732 -RS03: try number = 1123, reading sector 236035 +RS03: try number = 1074, reading sector 236035 -> 1 untested layers remaining - layer slice 733 -RS03: try number = 1124, reading sector 236036 +RS03: try number = 1075, reading sector 236036 -> 1 untested layers remaining - layer slice 734 -RS03: try number = 1125, reading sector 236037 +RS03: try number = 1076, reading sector 236037 -> 1 untested layers remaining - layer slice 735 -RS03: try number = 1126, reading sector 236038 +RS03: try number = 1077, reading sector 236038 -> 1 untested layers remaining - layer slice 736 -RS03: try number = 1127, reading sector 236039 +RS03: try number = 1078, reading sector 236039 -> 1 untested layers remaining - layer slice 737 -RS03: try number = 1128, reading sector 236040 +RS03: try number = 1079, reading sector 236040 -> 1 untested layers remaining - layer slice 738 -RS03: try number = 1129, reading sector 236041 +RS03: try number = 1080, reading sector 236041 -> 1 untested layers remaining - layer slice 739 -RS03: try number = 1130, reading sector 236042 +RS03: try number = 1081, reading sector 236042 -> 1 untested layers remaining - layer slice 740 -RS03: try number = 1131, reading sector 236043 +RS03: try number = 1082, reading sector 236043 -> 1 untested layers remaining - layer slice 741 -RS03: try number = 1132, reading sector 236044 +RS03: try number = 1083, reading sector 236044 -> 1 untested layers remaining - layer slice 742 -RS03: try number = 1133, reading sector 236045 +RS03: try number = 1084, reading sector 236045 -> 1 untested layers remaining - layer slice 743 -RS03: try number = 1134, reading sector 236046 +RS03: try number = 1085, reading sector 236046 -> 1 untested layers remaining - layer slice 744 -RS03: try number = 1135, reading sector 236047 +RS03: try number = 1086, reading sector 236047 -> 1 untested layers remaining - layer slice 745 -RS03: try number = 1136, reading sector 236048 +RS03: try number = 1087, reading sector 236048 -> 1 untested layers remaining - layer slice 746 -RS03: try number = 1137, reading sector 236049 +RS03: try number = 1088, reading sector 236049 -> 1 untested layers remaining - layer slice 747 -RS03: try number = 1138, reading sector 236050 +RS03: try number = 1089, reading sector 236050 -> 1 untested layers remaining - layer slice 748 -RS03: try number = 1139, reading sector 236051 +RS03: try number = 1090, reading sector 236051 -> 1 untested layers remaining - layer slice 749 -RS03: try number = 1140, reading sector 236052 +RS03: try number = 1091, reading sector 236052 -> 1 untested layers remaining - layer slice 750 -RS03: try number = 1141, reading sector 236053 +RS03: try number = 1092, reading sector 236053 -> 1 untested layers remaining - layer slice 751 -RS03: try number = 1142, reading sector 236054 +RS03: try number = 1093, reading sector 236054 -> 1 untested layers remaining - layer slice 752 -RS03: try number = 1143, reading sector 236055 +RS03: try number = 1094, reading sector 236055 -> 1 untested layers remaining - layer slice 753 -RS03: try number = 1144, reading sector 236056 +RS03: try number = 1095, reading sector 236056 -> 1 untested layers remaining - layer slice 754 -RS03: try number = 1145, reading sector 236057 +RS03: try number = 1096, reading sector 236057 -> 1 untested layers remaining - layer slice 755 -RS03: try number = 1146, reading sector 236058 +RS03: try number = 1097, reading sector 236058 -> 1 untested layers remaining - layer slice 756 -RS03: try number = 1147, reading sector 236059 +RS03: try number = 1098, reading sector 236059 -> 1 untested layers remaining - layer slice 757 -RS03: try number = 1148, reading sector 236060 +RS03: try number = 1099, reading sector 236060 -> 1 untested layers remaining - layer slice 758 -RS03: try number = 1149, reading sector 236061 +RS03: try number = 1100, reading sector 236061 -> 1 untested layers remaining - layer slice 759 -RS03: try number = 1150, reading sector 236062 +RS03: try number = 1101, reading sector 236062 -> 1 untested layers remaining - layer slice 760 -RS03: try number = 1151, reading sector 236063 +RS03: try number = 1102, reading sector 236063 -> 1 untested layers remaining - layer slice 761 -RS03: try number = 1152, reading sector 236064 +RS03: try number = 1103, reading sector 236064 -> 1 untested layers remaining - layer slice 762 -RS03: try number = 1153, reading sector 236065 +RS03: try number = 1104, reading sector 236065 -> 1 untested layers remaining - layer slice 763 -RS03: try number = 1154, reading sector 236066 +RS03: try number = 1105, reading sector 236066 -> 1 untested layers remaining - layer slice 764 -RS03: try number = 1155, reading sector 236067 +RS03: try number = 1106, reading sector 236067 -> 1 untested layers remaining - layer slice 765 -RS03: try number = 1156, reading sector 236068 +RS03: try number = 1107, reading sector 236068 -> 1 untested layers remaining - layer slice 766 -RS03: try number = 1157, reading sector 236069 +RS03: try number = 1108, reading sector 236069 -> 1 untested layers remaining - layer slice 767 -RS03: try number = 1158, reading sector 236070 +RS03: try number = 1109, reading sector 236070 -> 1 untested layers remaining - layer slice 768 -RS03: try number = 1159, reading sector 236071 +RS03: try number = 1110, reading sector 236071 -> 1 untested layers remaining - layer slice 769 -RS03: try number = 1160, reading sector 236072 +RS03: try number = 1111, reading sector 236072 -> 1 untested layers remaining - layer slice 770 -RS03: try number = 1161, reading sector 236073 +RS03: try number = 1112, reading sector 236073 -> 1 untested layers remaining - layer slice 771 -RS03: try number = 1162, reading sector 236074 +RS03: try number = 1113, reading sector 236074 -> 1 untested layers remaining - layer slice 772 -RS03: try number = 1163, reading sector 236075 +RS03: try number = 1114, reading sector 236075 -> 1 untested layers remaining - layer slice 773 -RS03: try number = 1164, reading sector 236076 +RS03: try number = 1115, reading sector 236076 -> 1 untested layers remaining - layer slice 774 -RS03: try number = 1165, reading sector 236077 +RS03: try number = 1116, reading sector 236077 -> 1 untested layers remaining - layer slice 775 -RS03: try number = 1166, reading sector 236078 +RS03: try number = 1117, reading sector 236078 -> 1 untested layers remaining - layer slice 776 -RS03: try number = 1167, reading sector 236079 +RS03: try number = 1118, reading sector 236079 -> 1 untested layers remaining - layer slice 777 -RS03: try number = 1168, reading sector 236080 +RS03: try number = 1119, reading sector 236080 -> 1 untested layers remaining - layer slice 778 -RS03: try number = 1169, reading sector 236081 +RS03: try number = 1120, reading sector 236081 -> 1 untested layers remaining - layer slice 779 -RS03: try number = 1170, reading sector 236082 +RS03: try number = 1121, reading sector 236082 -> 1 untested layers remaining - layer slice 780 -RS03: try number = 1171, reading sector 236083 +RS03: try number = 1122, reading sector 236083 -> 1 untested layers remaining - layer slice 781 -RS03: try number = 1172, reading sector 236084 +RS03: try number = 1123, reading sector 236084 -> 1 untested layers remaining - layer slice 782 -RS03: try number = 1173, reading sector 236085 +RS03: try number = 1124, reading sector 236085 -> 1 untested layers remaining - layer slice 783 -RS03: try number = 1174, reading sector 236086 +RS03: try number = 1125, reading sector 236086 -> 1 untested layers remaining - layer slice 784 -RS03: try number = 1175, reading sector 236087 +RS03: try number = 1126, reading sector 236087 -> 1 untested layers remaining - layer slice 785 -RS03: try number = 1176, reading sector 236088 +RS03: try number = 1127, reading sector 236088 -> 1 untested layers remaining - layer slice 786 -RS03: try number = 1177, reading sector 236089 +RS03: try number = 1128, reading sector 236089 -> 1 untested layers remaining - layer slice 787 -RS03: try number = 1178, reading sector 236090 +RS03: try number = 1129, reading sector 236090 -> 1 untested layers remaining - layer slice 788 -RS03: try number = 1179, reading sector 236091 +RS03: try number = 1130, reading sector 236091 -> 1 untested layers remaining - layer slice 789 -RS03: try number = 1180, reading sector 236092 +RS03: try number = 1131, reading sector 236092 -> 1 untested layers remaining - layer slice 790 -RS03: try number = 1181, reading sector 236093 +RS03: try number = 1132, reading sector 236093 -> 1 untested layers remaining - layer slice 791 -RS03: try number = 1182, reading sector 236094 +RS03: try number = 1133, reading sector 236094 -> 1 untested layers remaining - layer slice 792 -RS03: try number = 1183, reading sector 236095 +RS03: try number = 1134, reading sector 236095 -> 1 untested layers remaining - layer slice 793 -RS03: try number = 1184, reading sector 236096 +RS03: try number = 1135, reading sector 236096 -> 1 untested layers remaining - layer slice 794 -RS03: try number = 1185, reading sector 236097 +RS03: try number = 1136, reading sector 236097 -> 1 untested layers remaining - layer slice 795 -RS03: try number = 1186, reading sector 236098 +RS03: try number = 1137, reading sector 236098 -> 1 untested layers remaining - layer slice 796 -RS03: try number = 1187, reading sector 236099 +RS03: try number = 1138, reading sector 236099 -> 1 untested layers remaining - layer slice 797 -RS03: try number = 1188, reading sector 236100 +RS03: try number = 1139, reading sector 236100 -> 1 untested layers remaining - layer slice 798 -RS03: try number = 1189, reading sector 236101 +RS03: try number = 1140, reading sector 236101 -> 1 untested layers remaining - layer slice 799 -RS03: try number = 1190, reading sector 236102 +RS03: try number = 1141, reading sector 236102 -> 1 untested layers remaining - layer slice 800 -RS03: try number = 1191, reading sector 236103 +RS03: try number = 1142, reading sector 236103 -> 1 untested layers remaining - layer slice 801 -RS03: try number = 1192, reading sector 236104 +RS03: try number = 1143, reading sector 236104 -> 1 untested layers remaining - layer slice 802 -RS03: try number = 1193, reading sector 236105 +RS03: try number = 1144, reading sector 236105 -> 1 untested layers remaining - layer slice 803 -RS03: try number = 1194, reading sector 236106 +RS03: try number = 1145, reading sector 236106 -> 1 untested layers remaining - layer slice 804 -RS03: try number = 1195, reading sector 236107 +RS03: try number = 1146, reading sector 236107 -> 1 untested layers remaining - layer slice 805 -RS03: try number = 1196, reading sector 236108 +RS03: try number = 1147, reading sector 236108 -> 1 untested layers remaining - layer slice 806 -RS03: try number = 1197, reading sector 236109 +RS03: try number = 1148, reading sector 236109 -> 1 untested layers remaining - layer slice 807 -RS03: try number = 1198, reading sector 236110 +RS03: try number = 1149, reading sector 236110 -> 1 untested layers remaining - layer slice 808 -RS03: try number = 1199, reading sector 236111 +RS03: try number = 1150, reading sector 236111 -> 1 untested layers remaining - layer slice 809 -RS03: try number = 1200, reading sector 236112 +RS03: try number = 1151, reading sector 236112 -> 1 untested layers remaining - layer slice 810 -RS03: try number = 1201, reading sector 236113 +RS03: try number = 1152, reading sector 236113 -> 1 untested layers remaining - layer slice 811 -RS03: try number = 1202, reading sector 236114 +RS03: try number = 1153, reading sector 236114 -> 1 untested layers remaining - layer slice 812 -RS03: try number = 1203, reading sector 236115 +RS03: try number = 1154, reading sector 236115 -> 1 untested layers remaining - layer slice 813 -RS03: try number = 1204, reading sector 236116 +RS03: try number = 1155, reading sector 236116 -> 1 untested layers remaining - layer slice 814 -RS03: try number = 1205, reading sector 236117 +RS03: try number = 1156, reading sector 236117 -> 1 untested layers remaining - layer slice 815 -RS03: try number = 1206, reading sector 236118 +RS03: try number = 1157, reading sector 236118 -> 1 untested layers remaining - layer slice 816 -RS03: try number = 1207, reading sector 236119 +RS03: try number = 1158, reading sector 236119 -> 1 untested layers remaining - layer slice 817 -RS03: try number = 1208, reading sector 236120 +RS03: try number = 1159, reading sector 236120 -> 1 untested layers remaining - layer slice 818 -RS03: try number = 1209, reading sector 236121 +RS03: try number = 1160, reading sector 236121 -> 1 untested layers remaining - layer slice 819 -RS03: try number = 1210, reading sector 236122 +RS03: try number = 1161, reading sector 236122 -> 1 untested layers remaining - layer slice 820 -RS03: try number = 1211, reading sector 236123 +RS03: try number = 1162, reading sector 236123 -> 1 untested layers remaining - layer slice 821 -RS03: try number = 1212, reading sector 236124 +RS03: try number = 1163, reading sector 236124 -> 1 untested layers remaining - layer slice 822 -RS03: try number = 1213, reading sector 236125 +RS03: try number = 1164, reading sector 236125 -> 1 untested layers remaining - layer slice 823 -RS03: try number = 1214, reading sector 236126 +RS03: try number = 1165, reading sector 236126 -> 1 untested layers remaining - layer slice 824 -RS03: try number = 1215, reading sector 236127 +RS03: try number = 1166, reading sector 236127 -> 1 untested layers remaining - layer slice 825 -RS03: try number = 1216, reading sector 236128 +RS03: try number = 1167, reading sector 236128 -> 1 untested layers remaining - layer slice 826 -RS03: try number = 1217, reading sector 236129 +RS03: try number = 1168, reading sector 236129 -> 1 untested layers remaining - layer slice 827 -RS03: try number = 1218, reading sector 236130 +RS03: try number = 1169, reading sector 236130 -> 1 untested layers remaining - layer slice 828 -RS03: try number = 1219, reading sector 236131 +RS03: try number = 1170, reading sector 236131 -> 1 untested layers remaining - layer slice 829 -RS03: try number = 1220, reading sector 236132 +RS03: try number = 1171, reading sector 236132 -> 1 untested layers remaining - layer slice 830 -RS03: try number = 1221, reading sector 236133 +RS03: try number = 1172, reading sector 236133 -> 1 untested layers remaining - layer slice 831 -RS03: try number = 1222, reading sector 236134 +RS03: try number = 1173, reading sector 236134 -> 1 untested layers remaining - layer slice 832 -RS03: try number = 1223, reading sector 236135 +RS03: try number = 1174, reading sector 236135 -> 1 untested layers remaining - layer slice 833 -RS03: try number = 1224, reading sector 236136 +RS03: try number = 1175, reading sector 236136 -> 1 untested layers remaining - layer slice 834 -RS03: try number = 1225, reading sector 236137 +RS03: try number = 1176, reading sector 236137 -> 1 untested layers remaining - layer slice 835 -RS03: try number = 1226, reading sector 236138 +RS03: try number = 1177, reading sector 236138 -> 1 untested layers remaining - layer slice 836 -RS03: try number = 1227, reading sector 236139 +RS03: try number = 1178, reading sector 236139 -> 1 untested layers remaining - layer slice 837 -RS03: try number = 1228, reading sector 236140 +RS03: try number = 1179, reading sector 236140 -> 1 untested layers remaining - layer slice 838 -RS03: try number = 1229, reading sector 236141 +RS03: try number = 1180, reading sector 236141 -> 1 untested layers remaining - layer slice 839 -RS03: try number = 1230, reading sector 236142 +RS03: try number = 1181, reading sector 236142 -> 1 untested layers remaining - layer slice 840 -RS03: try number = 1231, reading sector 236143 +RS03: try number = 1182, reading sector 236143 -> 1 untested layers remaining - layer slice 841 -RS03: try number = 1232, reading sector 236144 +RS03: try number = 1183, reading sector 236144 -> 1 untested layers remaining - layer slice 842 -RS03: try number = 1233, reading sector 236145 +RS03: try number = 1184, reading sector 236145 -> 1 untested layers remaining - layer slice 843 -RS03: try number = 1234, reading sector 236146 +RS03: try number = 1185, reading sector 236146 -> 1 untested layers remaining - layer slice 844 -RS03: try number = 1235, reading sector 236147 +RS03: try number = 1186, reading sector 236147 -> 1 untested layers remaining - layer slice 845 -RS03: try number = 1236, reading sector 236148 +RS03: try number = 1187, reading sector 236148 -> 1 untested layers remaining - layer slice 846 -RS03: try number = 1237, reading sector 236149 +RS03: try number = 1188, reading sector 236149 -> 1 untested layers remaining - layer slice 847 -RS03: try number = 1238, reading sector 236150 +RS03: try number = 1189, reading sector 236150 -> 1 untested layers remaining - layer slice 848 -RS03: try number = 1239, reading sector 236151 +RS03: try number = 1190, reading sector 236151 -> 1 untested layers remaining - layer slice 849 -RS03: try number = 1240, reading sector 236152 +RS03: try number = 1191, reading sector 236152 -> 1 untested layers remaining - layer slice 850 -RS03: try number = 1241, reading sector 236153 +RS03: try number = 1192, reading sector 236153 -> 1 untested layers remaining - layer slice 851 -RS03: try number = 1242, reading sector 236154 +RS03: try number = 1193, reading sector 236154 -> 1 untested layers remaining - layer slice 852 -RS03: try number = 1243, reading sector 236155 +RS03: try number = 1194, reading sector 236155 -> 1 untested layers remaining - layer slice 853 -RS03: try number = 1244, reading sector 236156 +RS03: try number = 1195, reading sector 236156 -> 1 untested layers remaining - layer slice 854 -RS03: try number = 1245, reading sector 236157 +RS03: try number = 1196, reading sector 236157 -> 1 untested layers remaining - layer slice 855 -RS03: try number = 1246, reading sector 236158 +RS03: try number = 1197, reading sector 236158 -> 1 untested layers remaining - layer slice 856 -RS03: try number = 1247, reading sector 236159 +RS03: try number = 1198, reading sector 236159 -> 1 untested layers remaining - layer slice 857 -RS03: try number = 1248, reading sector 236160 +RS03: try number = 1199, reading sector 236160 -> 1 untested layers remaining - layer slice 858 -RS03: try number = 1249, reading sector 236161 +RS03: try number = 1200, reading sector 236161 -> 1 untested layers remaining - layer slice 859 -RS03: try number = 1250, reading sector 236162 +RS03: try number = 1201, reading sector 236162 -> 1 untested layers remaining - layer slice 860 -RS03: try number = 1251, reading sector 236163 +RS03: try number = 1202, reading sector 236163 -> 1 untested layers remaining - layer slice 861 -RS03: try number = 1252, reading sector 236164 +RS03: try number = 1203, reading sector 236164 -> 1 untested layers remaining - layer slice 862 -RS03: try number = 1253, reading sector 236165 +RS03: try number = 1204, reading sector 236165 -> 1 untested layers remaining - layer slice 863 -RS03: try number = 1254, reading sector 236166 +RS03: try number = 1205, reading sector 236166 -> 1 untested layers remaining - layer slice 864 -RS03: try number = 1255, reading sector 236167 +RS03: try number = 1206, reading sector 236167 -> 1 untested layers remaining - layer slice 865 -RS03: try number = 1256, reading sector 236168 +RS03: try number = 1207, reading sector 236168 -> 1 untested layers remaining - layer slice 866 -RS03: try number = 1257, reading sector 236169 +RS03: try number = 1208, reading sector 236169 -> 1 untested layers remaining - layer slice 867 -RS03: try number = 1258, reading sector 236170 +RS03: try number = 1209, reading sector 236170 -> 1 untested layers remaining - layer slice 868 -RS03: try number = 1259, reading sector 236171 +RS03: try number = 1210, reading sector 236171 -> 1 untested layers remaining - layer slice 869 -RS03: try number = 1260, reading sector 236172 +RS03: try number = 1211, reading sector 236172 -> 1 untested layers remaining - layer slice 870 -RS03: try number = 1261, reading sector 236173 +RS03: try number = 1212, reading sector 236173 -> 1 untested layers remaining - layer slice 871 -RS03: try number = 1262, reading sector 236174 +RS03: try number = 1213, reading sector 236174 -> 1 untested layers remaining - layer slice 872 -RS03: try number = 1263, reading sector 236175 +RS03: try number = 1214, reading sector 236175 -> 1 untested layers remaining - layer slice 873 -RS03: try number = 1264, reading sector 236176 +RS03: try number = 1215, reading sector 236176 -> 1 untested layers remaining - layer slice 874 -RS03: try number = 1265, reading sector 236177 +RS03: try number = 1216, reading sector 236177 -> 1 untested layers remaining - layer slice 875 -RS03: try number = 1266, reading sector 236178 +RS03: try number = 1217, reading sector 236178 -> 1 untested layers remaining - layer slice 876 -RS03: try number = 1267, reading sector 236179 +RS03: try number = 1218, reading sector 236179 -> 1 untested layers remaining - layer slice 877 -RS03: try number = 1268, reading sector 236180 +RS03: try number = 1219, reading sector 236180 -> 1 untested layers remaining - layer slice 878 -RS03: try number = 1269, reading sector 236181 +RS03: try number = 1220, reading sector 236181 -> 1 untested layers remaining - layer slice 879 -RS03: try number = 1270, reading sector 236182 +RS03: try number = 1221, reading sector 236182 -> 1 untested layers remaining - layer slice 880 -RS03: try number = 1271, reading sector 236183 +RS03: try number = 1222, reading sector 236183 -> 1 untested layers remaining - layer slice 881 -RS03: try number = 1272, reading sector 236184 +RS03: try number = 1223, reading sector 236184 -> 1 untested layers remaining - layer slice 882 -RS03: try number = 1273, reading sector 236185 +RS03: try number = 1224, reading sector 236185 -> 1 untested layers remaining - layer slice 883 -RS03: try number = 1274, reading sector 236186 +RS03: try number = 1225, reading sector 236186 -> 1 untested layers remaining - layer slice 884 -RS03: try number = 1275, reading sector 236187 +RS03: try number = 1226, reading sector 236187 -> 1 untested layers remaining - layer slice 885 -RS03: try number = 1276, reading sector 236188 +RS03: try number = 1227, reading sector 236188 -> 1 untested layers remaining - layer slice 886 -RS03: try number = 1277, reading sector 236189 +RS03: try number = 1228, reading sector 236189 -> 1 untested layers remaining - layer slice 887 -RS03: try number = 1278, reading sector 236190 +RS03: try number = 1229, reading sector 236190 -> 1 untested layers remaining - layer slice 888 -RS03: try number = 1279, reading sector 236191 +RS03: try number = 1230, reading sector 236191 -> 1 untested layers remaining - layer slice 889 -RS03: try number = 1280, reading sector 236192 +RS03: try number = 1231, reading sector 236192 -> 1 untested layers remaining - layer slice 890 -RS03: try number = 1281, reading sector 236193 +RS03: try number = 1232, reading sector 236193 -> 1 untested layers remaining - layer slice 891 -RS03: try number = 1282, reading sector 236194 +RS03: try number = 1233, reading sector 236194 -> 1 untested layers remaining - layer slice 892 -RS03: try number = 1283, reading sector 236195 +RS03: try number = 1234, reading sector 236195 -> 1 untested layers remaining - layer slice 893 -RS03: try number = 1284, reading sector 236196 +RS03: try number = 1235, reading sector 236196 -> 1 untested layers remaining - layer slice 894 -RS03: try number = 1285, reading sector 236197 +RS03: try number = 1236, reading sector 236197 -> 1 untested layers remaining - layer slice 895 -RS03: try number = 1286, reading sector 236198 +RS03: try number = 1237, reading sector 236198 -> 1 untested layers remaining - layer slice 896 -RS03: try number = 1287, reading sector 236199 +RS03: try number = 1238, reading sector 236199 -> 1 untested layers remaining - layer slice 897 -RS03: try number = 1288, reading sector 236200 +RS03: try number = 1239, reading sector 236200 -> 1 untested layers remaining - layer slice 898 -RS03: try number = 1289, reading sector 236201 +RS03: try number = 1240, reading sector 236201 -> 1 untested layers remaining - layer slice 899 -RS03: try number = 1290, reading sector 236202 +RS03: try number = 1241, reading sector 236202 -> 1 untested layers remaining - layer slice 900 -RS03: try number = 1291, reading sector 236203 +RS03: try number = 1242, reading sector 236203 -> 1 untested layers remaining - layer slice 901 -RS03: try number = 1292, reading sector 236204 +RS03: try number = 1243, reading sector 236204 -> 1 untested layers remaining - layer slice 902 -RS03: try number = 1293, reading sector 236205 +RS03: try number = 1244, reading sector 236205 -> 1 untested layers remaining - layer slice 903 -RS03: try number = 1294, reading sector 236206 +RS03: try number = 1245, reading sector 236206 -> 1 untested layers remaining - layer slice 904 -RS03: try number = 1295, reading sector 236207 +RS03: try number = 1246, reading sector 236207 -> 1 untested layers remaining - layer slice 905 -RS03: try number = 1296, reading sector 236208 +RS03: try number = 1247, reading sector 236208 -> 1 untested layers remaining - layer slice 906 -RS03: try number = 1297, reading sector 236209 +RS03: try number = 1248, reading sector 236209 -> 1 untested layers remaining - layer slice 907 -RS03: try number = 1298, reading sector 236210 +RS03: try number = 1249, reading sector 236210 -> 1 untested layers remaining - layer slice 908 -RS03: try number = 1299, reading sector 236211 +RS03: try number = 1250, reading sector 236211 -> 1 untested layers remaining - layer slice 909 -RS03: try number = 1300, reading sector 236212 +RS03: try number = 1251, reading sector 236212 -> 1 untested layers remaining - layer slice 910 -RS03: try number = 1301, reading sector 236213 +RS03: try number = 1252, reading sector 236213 -> 1 untested layers remaining - layer slice 911 -RS03: try number = 1302, reading sector 236214 +RS03: try number = 1253, reading sector 236214 -> 1 untested layers remaining - layer slice 912 -RS03: try number = 1303, reading sector 236215 +RS03: try number = 1254, reading sector 236215 -> 1 untested layers remaining - layer slice 913 -RS03: try number = 1304, reading sector 236216 +RS03: try number = 1255, reading sector 236216 -> 1 untested layers remaining - layer slice 914 -RS03: try number = 1305, reading sector 236217 +RS03: try number = 1256, reading sector 236217 -> 1 untested layers remaining - layer slice 915 -RS03: try number = 1306, reading sector 236218 +RS03: try number = 1257, reading sector 236218 -> 1 untested layers remaining - layer slice 916 -RS03: try number = 1307, reading sector 236219 +RS03: try number = 1258, reading sector 236219 -> 1 untested layers remaining - layer slice 917 -RS03: try number = 1308, reading sector 236220 +RS03: try number = 1259, reading sector 236220 -> 1 untested layers remaining - layer slice 918 -RS03: try number = 1309, reading sector 236221 +RS03: try number = 1260, reading sector 236221 -> 1 untested layers remaining - layer slice 919 -RS03: try number = 1310, reading sector 236222 +RS03: try number = 1261, reading sector 236222 -> 1 untested layers remaining - layer slice 920 -RS03: try number = 1311, reading sector 236223 +RS03: try number = 1262, reading sector 236223 -> 1 untested layers remaining - layer slice 921 -RS03: try number = 1312, reading sector 236224 +RS03: try number = 1263, reading sector 236224 -> 1 untested layers remaining - layer slice 922 -RS03: try number = 1313, reading sector 236225 +RS03: try number = 1264, reading sector 236225 -> 1 untested layers remaining - layer slice 923 -RS03: try number = 1314, reading sector 236226 +RS03: try number = 1265, reading sector 236226 -> 1 untested layers remaining - layer slice 924 -RS03: try number = 1315, reading sector 236227 +RS03: try number = 1266, reading sector 236227 -> 1 untested layers remaining - layer slice 925 -RS03: try number = 1316, reading sector 236228 +RS03: try number = 1267, reading sector 236228 -> 1 untested layers remaining - layer slice 926 -RS03: try number = 1317, reading sector 236229 +RS03: try number = 1268, reading sector 236229 -> 1 untested layers remaining - layer slice 927 -RS03: try number = 1318, reading sector 236230 +RS03: try number = 1269, reading sector 236230 -> 1 untested layers remaining - layer slice 928 -RS03: try number = 1319, reading sector 236231 +RS03: try number = 1270, reading sector 236231 -> 1 untested layers remaining - layer slice 929 -RS03: try number = 1320, reading sector 236232 +RS03: try number = 1271, reading sector 236232 -> 1 untested layers remaining - layer slice 930 -RS03: try number = 1321, reading sector 236233 +RS03: try number = 1272, reading sector 236233 -> 1 untested layers remaining - layer slice 931 -RS03: try number = 1322, reading sector 236234 +RS03: try number = 1273, reading sector 236234 -> 1 untested layers remaining - layer slice 932 -RS03: try number = 1323, reading sector 236235 +RS03: try number = 1274, reading sector 236235 -> 1 untested layers remaining - layer slice 933 -RS03: try number = 1324, reading sector 236236 +RS03: try number = 1275, reading sector 236236 -> 1 untested layers remaining - layer slice 934 -RS03: try number = 1325, reading sector 236237 +RS03: try number = 1276, reading sector 236237 -> 1 untested layers remaining - layer slice 935 -RS03: try number = 1326, reading sector 236238 +RS03: try number = 1277, reading sector 236238 -> 1 untested layers remaining - layer slice 936 -RS03: try number = 1327, reading sector 236239 +RS03: try number = 1278, reading sector 236239 -> 1 untested layers remaining - layer slice 937 -RS03: try number = 1328, reading sector 236240 +RS03: try number = 1279, reading sector 236240 -> 1 untested layers remaining - layer slice 938 -RS03: try number = 1329, reading sector 236241 +RS03: try number = 1280, reading sector 236241 -> 1 untested layers remaining - layer slice 939 -RS03: try number = 1330, reading sector 236242 +RS03: try number = 1281, reading sector 236242 -> 1 untested layers remaining - layer slice 940 -RS03: try number = 1331, reading sector 236243 +RS03: try number = 1282, reading sector 236243 -> 1 untested layers remaining - layer slice 941 -RS03: try number = 1332, reading sector 236244 +RS03: try number = 1283, reading sector 236244 -> 1 untested layers remaining - layer slice 942 -RS03: try number = 1333, reading sector 236245 +RS03: try number = 1284, reading sector 236245 -> 1 untested layers remaining - layer slice 943 -RS03: try number = 1334, reading sector 236246 +RS03: try number = 1285, reading sector 236246 -> 1 untested layers remaining - layer slice 944 -RS03: try number = 1335, reading sector 236247 +RS03: try number = 1286, reading sector 236247 -> 1 untested layers remaining - layer slice 945 -RS03: try number = 1336, reading sector 236248 +RS03: try number = 1287, reading sector 236248 -> 1 untested layers remaining - layer slice 946 -RS03: try number = 1337, reading sector 236249 +RS03: try number = 1288, reading sector 236249 -> 1 untested layers remaining - layer slice 947 -RS03: try number = 1338, reading sector 236250 +RS03: try number = 1289, reading sector 236250 -> 1 untested layers remaining - layer slice 948 -RS03: try number = 1339, reading sector 236251 +RS03: try number = 1290, reading sector 236251 -> 1 untested layers remaining - layer slice 949 -RS03: try number = 1340, reading sector 236252 +RS03: try number = 1291, reading sector 236252 -> 1 untested layers remaining - layer slice 950 -RS03: try number = 1341, reading sector 236253 +RS03: try number = 1292, reading sector 236253 -> 1 untested layers remaining - layer slice 951 -RS03: try number = 1342, reading sector 236254 +RS03: try number = 1293, reading sector 236254 -> 1 untested layers remaining - layer slice 952 -RS03: try number = 1343, reading sector 236255 +RS03: try number = 1294, reading sector 236255 -> 1 untested layers remaining - layer slice 953 -RS03: try number = 1344, reading sector 236256 +RS03: try number = 1295, reading sector 236256 -> 1 untested layers remaining - layer slice 954 -RS03: try number = 1345, reading sector 236257 +RS03: try number = 1296, reading sector 236257 -> 1 untested layers remaining - layer slice 955 -RS03: try number = 1346, reading sector 236258 +RS03: try number = 1297, reading sector 236258 -> 1 untested layers remaining - layer slice 956 -RS03: try number = 1347, reading sector 236259 +RS03: try number = 1298, reading sector 236259 -> 1 untested layers remaining - layer slice 957 -RS03: try number = 1348, reading sector 236260 +RS03: try number = 1299, reading sector 236260 -> 1 untested layers remaining - layer slice 958 -RS03: try number = 1349, reading sector 236261 +RS03: try number = 1300, reading sector 236261 -> 1 untested layers remaining - layer slice 959 -RS03: try number = 1350, reading sector 236262 +RS03: try number = 1301, reading sector 236262 -> 1 untested layers remaining - layer slice 960 -RS03: try number = 1351, reading sector 236263 +RS03: try number = 1302, reading sector 236263 -> 1 untested layers remaining - layer slice 961 -RS03: try number = 1352, reading sector 236264 +RS03: try number = 1303, reading sector 236264 -> 1 untested layers remaining - layer slice 962 -RS03: try number = 1353, reading sector 236265 +RS03: try number = 1304, reading sector 236265 -> 1 untested layers remaining - layer slice 963 -RS03: try number = 1354, reading sector 236266 +RS03: try number = 1305, reading sector 236266 -> 1 untested layers remaining - layer slice 964 -RS03: try number = 1355, reading sector 236267 +RS03: try number = 1306, reading sector 236267 -> 1 untested layers remaining - layer slice 965 -RS03: try number = 1356, reading sector 236268 +RS03: try number = 1307, reading sector 236268 -> 1 untested layers remaining - layer slice 966 -RS03: try number = 1357, reading sector 236269 +RS03: try number = 1308, reading sector 236269 -> 1 untested layers remaining - layer slice 967 -RS03: try number = 1358, reading sector 236270 +RS03: try number = 1309, reading sector 236270 -> 1 untested layers remaining - layer slice 968 -RS03: try number = 1359, reading sector 236271 +RS03: try number = 1310, reading sector 236271 -> 1 untested layers remaining - layer slice 969 -RS03: try number = 1360, reading sector 236272 +RS03: try number = 1311, reading sector 236272 -> 1 untested layers remaining - layer slice 970 -RS03: try number = 1361, reading sector 236273 +RS03: try number = 1312, reading sector 236273 -> 1 untested layers remaining - layer slice 971 -RS03: try number = 1362, reading sector 236274 +RS03: try number = 1313, reading sector 236274 -> 1 untested layers remaining - layer slice 972 -RS03: try number = 1363, reading sector 236275 +RS03: try number = 1314, reading sector 236275 -> 1 untested layers remaining - layer slice 973 -RS03: try number = 1364, reading sector 236276 +RS03: try number = 1315, reading sector 236276 -> 1 untested layers remaining - layer slice 974 -RS03: try number = 1365, reading sector 236277 +RS03: try number = 1316, reading sector 236277 -> 1 untested layers remaining - layer slice 975 -RS03: try number = 1366, reading sector 236278 +RS03: try number = 1317, reading sector 236278 -> 1 untested layers remaining - layer slice 976 -RS03: try number = 1367, reading sector 236279 +RS03: try number = 1318, reading sector 236279 -> 1 untested layers remaining - layer slice 977 -RS03: try number = 1368, reading sector 236280 +RS03: try number = 1319, reading sector 236280 -> 1 untested layers remaining - layer slice 978 -RS03: try number = 1369, reading sector 236281 +RS03: try number = 1320, reading sector 236281 -> 1 untested layers remaining - layer slice 979 -RS03: try number = 1370, reading sector 236282 +RS03: try number = 1321, reading sector 236282 -> 1 untested layers remaining - layer slice 980 -RS03: try number = 1371, reading sector 236283 +RS03: try number = 1322, reading sector 236283 -> 1 untested layers remaining - layer slice 981 -RS03: try number = 1372, reading sector 236284 +RS03: try number = 1323, reading sector 236284 -> 1 untested layers remaining - layer slice 982 -RS03: try number = 1373, reading sector 236285 +RS03: try number = 1324, reading sector 236285 -> 1 untested layers remaining - layer slice 983 -RS03: try number = 1374, reading sector 236286 +RS03: try number = 1325, reading sector 236286 -> 1 untested layers remaining - layer slice 984 -RS03: try number = 1375, reading sector 236287 +RS03: try number = 1326, reading sector 236287 -> 1 untested layers remaining - layer slice 985 -RS03: try number = 1376, reading sector 236288 +RS03: try number = 1327, reading sector 236288 -> 1 untested layers remaining - layer slice 986 -RS03: try number = 1377, reading sector 236289 +RS03: try number = 1328, reading sector 236289 -> 1 untested layers remaining - layer slice 987 -RS03: try number = 1378, reading sector 236290 +RS03: try number = 1329, reading sector 236290 -> 1 untested layers remaining - layer slice 988 -RS03: try number = 1379, reading sector 236291 +RS03: try number = 1330, reading sector 236291 -> 1 untested layers remaining - layer slice 989 -RS03: try number = 1380, reading sector 236292 +RS03: try number = 1331, reading sector 236292 -> 1 untested layers remaining - layer slice 990 -RS03: try number = 1381, reading sector 236293 +RS03: try number = 1332, reading sector 236293 -> 1 untested layers remaining - layer slice 991 -RS03: try number = 1382, reading sector 236294 +RS03: try number = 1333, reading sector 236294 -> 1 untested layers remaining - layer slice 992 -RS03: try number = 1383, reading sector 236295 +RS03: try number = 1334, reading sector 236295 -> 1 untested layers remaining - layer slice 993 -RS03: try number = 1384, reading sector 236296 +RS03: try number = 1335, reading sector 236296 -> 1 untested layers remaining - layer slice 994 -RS03: try number = 1385, reading sector 236297 +RS03: try number = 1336, reading sector 236297 -> 1 untested layers remaining - layer slice 995 -RS03: try number = 1386, reading sector 236298 +RS03: try number = 1337, reading sector 236298 -> 1 untested layers remaining - layer slice 996 -RS03: try number = 1387, reading sector 236299 +RS03: try number = 1338, reading sector 236299 -> 1 untested layers remaining - layer slice 997 -RS03: try number = 1388, reading sector 236300 +RS03: try number = 1339, reading sector 236300 -> 1 untested layers remaining - layer slice 998 -RS03: try number = 1389, reading sector 236301 +RS03: try number = 1340, reading sector 236301 -> 1 untested layers remaining - layer slice 999 -RS03: try number = 1390, reading sector 236302 +RS03: try number = 1341, reading sector 236302 -> 1 untested layers remaining - layer slice 1000 -RS03: try number = 1391, reading sector 236303 +RS03: try number = 1342, reading sector 236303 -> 1 untested layers remaining - layer slice 1001 -RS03: try number = 1392, reading sector 236304 +RS03: try number = 1343, reading sector 236304 -> 1 untested layers remaining - layer slice 1002 -RS03: try number = 1393, reading sector 236305 +RS03: try number = 1344, reading sector 236305 -> 1 untested layers remaining - layer slice 1003 -RS03: try number = 1394, reading sector 236306 +RS03: try number = 1345, reading sector 236306 -> 1 untested layers remaining - layer slice 1004 -RS03: try number = 1395, reading sector 236307 +RS03: try number = 1346, reading sector 236307 -> 1 untested layers remaining - layer slice 1005 -RS03: try number = 1396, reading sector 236308 +RS03: try number = 1347, reading sector 236308 -> 1 untested layers remaining - layer slice 1006 -RS03: try number = 1397, reading sector 236309 +RS03: try number = 1348, reading sector 236309 -> 1 untested layers remaining - layer slice 1007 -RS03: try number = 1398, reading sector 236310 +RS03: try number = 1349, reading sector 236310 -> 1 untested layers remaining - layer slice 1008 -RS03: try number = 1399, reading sector 236311 +RS03: try number = 1350, reading sector 236311 -> 1 untested layers remaining - layer slice 1009 -RS03: try number = 1400, reading sector 236312 +RS03: try number = 1351, reading sector 236312 -> 1 untested layers remaining - layer slice 1010 -RS03: try number = 1401, reading sector 236313 +RS03: try number = 1352, reading sector 236313 -> 1 untested layers remaining - layer slice 1011 -RS03: try number = 1402, reading sector 236314 +RS03: try number = 1353, reading sector 236314 -> 1 untested layers remaining - layer slice 1012 -RS03: try number = 1403, reading sector 236315 +RS03: try number = 1354, reading sector 236315 -> 1 untested layers remaining - layer slice 1013 -RS03: try number = 1404, reading sector 236316 +RS03: try number = 1355, reading sector 236316 -> 1 untested layers remaining - layer slice 1014 -RS03: try number = 1405, reading sector 236317 +RS03: try number = 1356, reading sector 236317 -> 1 untested layers remaining - layer slice 1015 -RS03: try number = 1406, reading sector 236318 +RS03: try number = 1357, reading sector 236318 -> 1 untested layers remaining - layer slice 1016 -RS03: try number = 1407, reading sector 236319 +RS03: try number = 1358, reading sector 236319 -> 1 untested layers remaining - layer slice 1017 -RS03: try number = 1408, reading sector 236320 +RS03: try number = 1359, reading sector 236320 -> 1 untested layers remaining - layer slice 1018 -RS03: try number = 1409, reading sector 236321 +RS03: try number = 1360, reading sector 236321 -> 1 untested layers remaining - layer slice 1019 -RS03: try number = 1410, reading sector 236322 +RS03: try number = 1361, reading sector 236322 -> 1 untested layers remaining - layer slice 1020 -RS03: try number = 1411, reading sector 236323 +RS03: try number = 1362, reading sector 236323 -> 1 untested layers remaining - layer slice 1021 -RS03: try number = 1412, reading sector 236324 +RS03: try number = 1363, reading sector 236324 -> 1 untested layers remaining - layer slice 1022 -RS03: try number = 1413, reading sector 236325 +RS03: try number = 1364, reading sector 236325 -> 1 untested layers remaining - layer slice 1023 -RS03: try number = 1414, reading sector 236326 +RS03: try number = 1365, reading sector 236326 -> 1 untested layers remaining - layer slice 1024 -RS03: try number = 1415, reading sector 236327 +RS03: try number = 1366, reading sector 236327 -> 1 untested layers remaining - layer slice 1025 -RS03: try number = 1416, reading sector 236328 +RS03: try number = 1367, reading sector 236328 -> 1 untested layers remaining - layer slice 1026 -RS03: try number = 1417, reading sector 236329 +RS03: try number = 1368, reading sector 236329 -> 1 untested layers remaining - layer slice 1027 -RS03: try number = 1418, reading sector 236330 +RS03: try number = 1369, reading sector 236330 -> 1 untested layers remaining - layer slice 1028 -RS03: try number = 1419, reading sector 236331 +RS03: try number = 1370, reading sector 236331 -> 1 untested layers remaining - layer slice 1029 -RS03: try number = 1420, reading sector 236332 +RS03: try number = 1371, reading sector 236332 -> 1 untested layers remaining - layer slice 1030 -RS03: try number = 1421, reading sector 236333 +RS03: try number = 1372, reading sector 236333 -> 1 untested layers remaining - layer slice 1031 -RS03: try number = 1422, reading sector 236334 +RS03: try number = 1373, reading sector 236334 -> 1 untested layers remaining - layer slice 1032 -RS03: try number = 1423, reading sector 236335 +RS03: try number = 1374, reading sector 236335 -> 1 untested layers remaining - layer slice 1033 -RS03: try number = 1424, reading sector 236336 +RS03: try number = 1375, reading sector 236336 -> 1 untested layers remaining - layer slice 1034 -RS03: try number = 1425, reading sector 236337 +RS03: try number = 1376, reading sector 236337 -> 1 untested layers remaining - layer slice 1035 -RS03: try number = 1426, reading sector 236338 +RS03: try number = 1377, reading sector 236338 -> 1 untested layers remaining - layer slice 1036 -RS03: try number = 1427, reading sector 236339 +RS03: try number = 1378, reading sector 236339 -> 1 untested layers remaining - layer slice 1037 -RS03: try number = 1428, reading sector 236340 +RS03: try number = 1379, reading sector 236340 -> 1 untested layers remaining - layer slice 1038 -RS03: try number = 1429, reading sector 236341 +RS03: try number = 1380, reading sector 236341 -> 1 untested layers remaining - layer slice 1039 -RS03: try number = 1430, reading sector 236342 +RS03: try number = 1381, reading sector 236342 -> 1 untested layers remaining - layer slice 1040 -RS03: try number = 1431, reading sector 236343 +RS03: try number = 1382, reading sector 236343 -> 1 untested layers remaining - layer slice 1041 -RS03: try number = 1432, reading sector 236344 +RS03: try number = 1383, reading sector 236344 -> 1 untested layers remaining - layer slice 1042 -RS03: try number = 1433, reading sector 236345 +RS03: try number = 1384, reading sector 236345 -> 1 untested layers remaining - layer slice 1043 -RS03: try number = 1434, reading sector 236346 +RS03: try number = 1385, reading sector 236346 -> 1 untested layers remaining - layer slice 1044 -RS03: try number = 1435, reading sector 236347 +RS03: try number = 1386, reading sector 236347 -> 1 untested layers remaining - layer slice 1045 -RS03: try number = 1436, reading sector 236348 +RS03: try number = 1387, reading sector 236348 -> 1 untested layers remaining - layer slice 1046 -RS03: try number = 1437, reading sector 236349 +RS03: try number = 1388, reading sector 236349 -> 1 untested layers remaining - layer slice 1047 -RS03: try number = 1438, reading sector 236350 +RS03: try number = 1389, reading sector 236350 -> 1 untested layers remaining - layer slice 1048 -RS03: try number = 1439, reading sector 236351 +RS03: try number = 1390, reading sector 236351 -> 1 untested layers remaining - layer slice 1049 -RS03: try number = 1440, reading sector 236352 +RS03: try number = 1391, reading sector 236352 -> 1 untested layers remaining - layer slice 1050 -RS03: try number = 1441, reading sector 236353 +RS03: try number = 1392, reading sector 236353 -> 1 untested layers remaining - layer slice 1051 -RS03: try number = 1442, reading sector 236354 +RS03: try number = 1393, reading sector 236354 -> 1 untested layers remaining - layer slice 1052 -RS03: try number = 1443, reading sector 236355 +RS03: try number = 1394, reading sector 236355 -> 1 untested layers remaining - layer slice 1053 -RS03: try number = 1444, reading sector 236356 +RS03: try number = 1395, reading sector 236356 -> 1 untested layers remaining - layer slice 1054 -RS03: try number = 1445, reading sector 236357 +RS03: try number = 1396, reading sector 236357 -> 1 untested layers remaining - layer slice 1055 -RS03: try number = 1446, reading sector 236358 +RS03: try number = 1397, reading sector 236358 -> 1 untested layers remaining - layer slice 1056 -RS03: try number = 1447, reading sector 236359 +RS03: try number = 1398, reading sector 236359 -> 1 untested layers remaining - layer slice 1057 -RS03: try number = 1448, reading sector 236360 +RS03: try number = 1399, reading sector 236360 -> 1 untested layers remaining - layer slice 1058 -RS03: try number = 1449, reading sector 236361 +RS03: try number = 1400, reading sector 236361 -> 1 untested layers remaining - layer slice 1059 -RS03: try number = 1450, reading sector 236362 +RS03: try number = 1401, reading sector 236362 -> 1 untested layers remaining - layer slice 1060 -RS03: try number = 1451, reading sector 236363 +RS03: try number = 1402, reading sector 236363 -> 1 untested layers remaining - layer slice 1061 -RS03: try number = 1452, reading sector 236364 +RS03: try number = 1403, reading sector 236364 -> 1 untested layers remaining - layer slice 1062 -RS03: try number = 1453, reading sector 236365 +RS03: try number = 1404, reading sector 236365 -> 1 untested layers remaining - layer slice 1063 -RS03: try number = 1454, reading sector 236366 +RS03: try number = 1405, reading sector 236366 -> 1 untested layers remaining - layer slice 1064 -RS03: try number = 1455, reading sector 236367 +RS03: try number = 1406, reading sector 236367 -> 1 untested layers remaining - layer slice 1065 -RS03: try number = 1456, reading sector 236368 +RS03: try number = 1407, reading sector 236368 -> 1 untested layers remaining - layer slice 1066 -RS03: try number = 1457, reading sector 236369 +RS03: try number = 1408, reading sector 236369 -> 1 untested layers remaining - layer slice 1067 -RS03: try number = 1458, reading sector 236370 +RS03: try number = 1409, reading sector 236370 -> 1 untested layers remaining - layer slice 1068 -RS03: try number = 1459, reading sector 236371 +RS03: try number = 1410, reading sector 236371 -> 1 untested layers remaining - layer slice 1069 -RS03: try number = 1460, reading sector 236372 +RS03: try number = 1411, reading sector 236372 -> 1 untested layers remaining - layer slice 1070 -RS03: try number = 1461, reading sector 236373 +RS03: try number = 1412, reading sector 236373 -> 1 untested layers remaining - layer slice 1071 -RS03: try number = 1462, reading sector 236374 +RS03: try number = 1413, reading sector 236374 -> 1 untested layers remaining - layer slice 1072 -RS03: try number = 1463, reading sector 236375 +RS03: try number = 1414, reading sector 236375 -> 1 untested layers remaining - layer slice 1073 -RS03: try number = 1464, reading sector 236376 +RS03: try number = 1415, reading sector 236376 -> 1 untested layers remaining - layer slice 1074 -RS03: try number = 1465, reading sector 236377 +RS03: try number = 1416, reading sector 236377 -> 1 untested layers remaining - layer slice 1075 -RS03: try number = 1466, reading sector 236378 +RS03: try number = 1417, reading sector 236378 -> 1 untested layers remaining - layer slice 1076 -RS03: try number = 1467, reading sector 236379 +RS03: try number = 1418, reading sector 236379 -> 1 untested layers remaining - layer slice 1077 -RS03: try number = 1468, reading sector 236380 +RS03: try number = 1419, reading sector 236380 -> 1 untested layers remaining - layer slice 1078 -RS03: try number = 1469, reading sector 236381 +RS03: try number = 1420, reading sector 236381 -> 1 untested layers remaining - layer slice 1079 -RS03: try number = 1470, reading sector 236382 +RS03: try number = 1421, reading sector 236382 -> 1 untested layers remaining - layer slice 1080 -RS03: try number = 1471, reading sector 236383 +RS03: try number = 1422, reading sector 236383 -> 1 untested layers remaining - layer slice 1081 -RS03: try number = 1472, reading sector 236384 +RS03: try number = 1423, reading sector 236384 -> 1 untested layers remaining - layer slice 1082 -RS03: try number = 1473, reading sector 236385 +RS03: try number = 1424, reading sector 236385 -> 1 untested layers remaining - layer slice 1083 -RS03: try number = 1474, reading sector 236386 +RS03: try number = 1425, reading sector 236386 -> 1 untested layers remaining - layer slice 1084 -RS03: try number = 1475, reading sector 236387 +RS03: try number = 1426, reading sector 236387 -> 1 untested layers remaining - layer slice 1085 -RS03: try number = 1476, reading sector 236388 +RS03: try number = 1427, reading sector 236388 -> 1 untested layers remaining - layer slice 1086 -RS03: try number = 1477, reading sector 236389 +RS03: try number = 1428, reading sector 236389 -> 1 untested layers remaining - layer slice 1087 -RS03: try number = 1478, reading sector 236390 +RS03: try number = 1429, reading sector 236390 -> 1 untested layers remaining - layer slice 1088 -RS03: try number = 1479, reading sector 236391 +RS03: try number = 1430, reading sector 236391 -> 1 untested layers remaining - layer slice 1089 -RS03: try number = 1480, reading sector 236392 +RS03: try number = 1431, reading sector 236392 -> 1 untested layers remaining - layer slice 1090 -RS03: try number = 1481, reading sector 236393 +RS03: try number = 1432, reading sector 236393 -> 1 untested layers remaining - layer slice 1091 -RS03: try number = 1482, reading sector 236394 +RS03: try number = 1433, reading sector 236394 -> 1 untested layers remaining - layer slice 1092 -RS03: try number = 1483, reading sector 236395 +RS03: try number = 1434, reading sector 236395 -> 1 untested layers remaining - layer slice 1093 -RS03: try number = 1484, reading sector 236396 +RS03: try number = 1435, reading sector 236396 -> 1 untested layers remaining - layer slice 1094 -RS03: try number = 1485, reading sector 236397 +RS03: try number = 1436, reading sector 236397 -> 1 untested layers remaining - layer slice 1095 -RS03: try number = 1486, reading sector 236398 +RS03: try number = 1437, reading sector 236398 -> 1 untested layers remaining - layer slice 1096 -RS03: try number = 1487, reading sector 236399 +RS03: try number = 1438, reading sector 236399 -> 1 untested layers remaining - layer slice 1097 -RS03: try number = 1488, reading sector 236400 +RS03: try number = 1439, reading sector 236400 -> 1 untested layers remaining - layer slice 1098 -RS03: try number = 1489, reading sector 236401 +RS03: try number = 1440, reading sector 236401 -> 1 untested layers remaining - layer slice 1099 -RS03: try number = 1490, reading sector 236402 +RS03: try number = 1441, reading sector 236402 -> 1 untested layers remaining - layer slice 1100 -RS03: try number = 1491, reading sector 236403 +RS03: try number = 1442, reading sector 236403 -> 1 untested layers remaining - layer slice 1101 -RS03: try number = 1492, reading sector 236404 +RS03: try number = 1443, reading sector 236404 -> 1 untested layers remaining - layer slice 1102 -RS03: try number = 1493, reading sector 236405 +RS03: try number = 1444, reading sector 236405 -> 1 untested layers remaining - layer slice 1103 -RS03: try number = 1494, reading sector 236406 +RS03: try number = 1445, reading sector 236406 -> 1 untested layers remaining - layer slice 1104 -RS03: try number = 1495, reading sector 236407 +RS03: try number = 1446, reading sector 236407 -> 1 untested layers remaining - layer slice 1105 -RS03: try number = 1496, reading sector 236408 +RS03: try number = 1447, reading sector 236408 -> 1 untested layers remaining - layer slice 1106 -RS03: try number = 1497, reading sector 236409 +RS03: try number = 1448, reading sector 236409 -> 1 untested layers remaining - layer slice 1107 -RS03: try number = 1498, reading sector 236410 +RS03: try number = 1449, reading sector 236410 -> 1 untested layers remaining - layer slice 1108 -RS03: try number = 1499, reading sector 236411 +RS03: try number = 1450, reading sector 236411 -> 1 untested layers remaining - layer slice 1109 -RS03: try number = 1500, reading sector 236412 +RS03: try number = 1451, reading sector 236412 -> 1 untested layers remaining - layer slice 1110 -RS03: try number = 1501, reading sector 236413 +RS03: try number = 1452, reading sector 236413 -> 1 untested layers remaining - layer slice 1111 -RS03: try number = 1502, reading sector 236414 +RS03: try number = 1453, reading sector 236414 -> 1 untested layers remaining - layer slice 1112 -RS03: try number = 1503, reading sector 236415 +RS03: try number = 1454, reading sector 236415 -> 1 untested layers remaining - layer slice 1113 -RS03: try number = 1504, reading sector 236416 +RS03: try number = 1455, reading sector 236416 -> 1 untested layers remaining - layer slice 1114 -RS03: try number = 1505, reading sector 236417 +RS03: try number = 1456, reading sector 236417 -> 1 untested layers remaining - layer slice 1115 -RS03: try number = 1506, reading sector 236418 +RS03: try number = 1457, reading sector 236418 -> 1 untested layers remaining - layer slice 1116 -RS03: try number = 1507, reading sector 236419 +RS03: try number = 1458, reading sector 236419 -> 1 untested layers remaining - layer slice 1117 -RS03: try number = 1508, reading sector 236420 +RS03: try number = 1459, reading sector 236420 -> 1 untested layers remaining - layer slice 1118 -RS03: try number = 1509, reading sector 236421 +RS03: try number = 1460, reading sector 236421 -> 1 untested layers remaining - layer slice 1119 -RS03: try number = 1510, reading sector 236422 +RS03: try number = 1461, reading sector 236422 -> 1 untested layers remaining - layer slice 1120 -RS03: try number = 1511, reading sector 236423 +RS03: try number = 1462, reading sector 236423 -> 1 untested layers remaining - layer slice 1121 -RS03: try number = 1512, reading sector 236424 +RS03: try number = 1463, reading sector 236424 -> 1 untested layers remaining - layer slice 1122 -RS03: try number = 1513, reading sector 236425 +RS03: try number = 1464, reading sector 236425 -> 1 untested layers remaining - layer slice 1123 -RS03: try number = 1514, reading sector 236426 +RS03: try number = 1465, reading sector 236426 -> 1 untested layers remaining - layer slice 1124 -RS03: try number = 1515, reading sector 236427 +RS03: try number = 1466, reading sector 236427 -> 1 untested layers remaining - layer slice 1125 -RS03: try number = 1516, reading sector 236428 +RS03: try number = 1467, reading sector 236428 -> 1 untested layers remaining - layer slice 1126 -RS03: try number = 1517, reading sector 236429 +RS03: try number = 1468, reading sector 236429 -> 1 untested layers remaining - layer slice 1127 -RS03: try number = 1518, reading sector 236430 +RS03: try number = 1469, reading sector 236430 -> 1 untested layers remaining - layer slice 1128 -RS03: try number = 1519, reading sector 236431 +RS03: try number = 1470, reading sector 236431 -> 1 untested layers remaining - layer slice 1129 -RS03: try number = 1520, reading sector 236432 +RS03: try number = 1471, reading sector 236432 -> 1 untested layers remaining - layer slice 1130 -RS03: try number = 1521, reading sector 236433 +RS03: try number = 1472, reading sector 236433 -> 1 untested layers remaining - layer slice 1131 -RS03: try number = 1522, reading sector 236434 +RS03: try number = 1473, reading sector 236434 -> 1 untested layers remaining - layer slice 1132 -RS03: try number = 1523, reading sector 236435 +RS03: try number = 1474, reading sector 236435 -> 1 untested layers remaining - layer slice 1133 -RS03: try number = 1524, reading sector 236436 +RS03: try number = 1475, reading sector 236436 -> 1 untested layers remaining - layer slice 1134 -RS03: try number = 1525, reading sector 236437 +RS03: try number = 1476, reading sector 236437 -> 1 untested layers remaining - layer slice 1135 -RS03: try number = 1526, reading sector 236438 +RS03: try number = 1477, reading sector 236438 -> 1 untested layers remaining - layer slice 1136 -RS03: try number = 1527, reading sector 236439 +RS03: try number = 1478, reading sector 236439 -> 1 untested layers remaining - layer slice 1137 -RS03: try number = 1528, reading sector 236440 +RS03: try number = 1479, reading sector 236440 -> 1 untested layers remaining - layer slice 1138 -RS03: try number = 1529, reading sector 236441 +RS03: try number = 1480, reading sector 236441 -> 1 untested layers remaining - layer slice 1139 -RS03: try number = 1530, reading sector 236442 +RS03: try number = 1481, reading sector 236442 -> 1 untested layers remaining - layer slice 1140 -RS03: try number = 1531, reading sector 236443 +RS03: try number = 1482, reading sector 236443 -> 1 untested layers remaining - layer slice 1141 -RS03: try number = 1532, reading sector 236444 +RS03: try number = 1483, reading sector 236444 -> 1 untested layers remaining - layer slice 1142 -RS03: try number = 1533, reading sector 236445 +RS03: try number = 1484, reading sector 236445 -> 1 untested layers remaining - layer slice 1143 -RS03: try number = 1534, reading sector 236446 +RS03: try number = 1485, reading sector 236446 -> 1 untested layers remaining - layer slice 1144 -RS03: try number = 1535, reading sector 236447 +RS03: try number = 1486, reading sector 236447 -> 1 untested layers remaining - layer slice 1145 -RS03: try number = 1536, reading sector 236448 +RS03: try number = 1487, reading sector 236448 -> 1 untested layers remaining - layer slice 1146 -RS03: try number = 1537, reading sector 236449 +RS03: try number = 1488, reading sector 236449 -> 1 untested layers remaining - layer slice 1147 -RS03: try number = 1538, reading sector 236450 +RS03: try number = 1489, reading sector 236450 -> 1 untested layers remaining - layer slice 1148 -RS03: try number = 1539, reading sector 236451 +RS03: try number = 1490, reading sector 236451 -> 1 untested layers remaining - layer slice 1149 -RS03: try number = 1540, reading sector 236452 +RS03: try number = 1491, reading sector 236452 -> 1 untested layers remaining - layer slice 1150 -RS03: try number = 1541, reading sector 236453 +RS03: try number = 1492, reading sector 236453 -> 1 untested layers remaining - layer slice 1151 -RS03: try number = 1542, reading sector 236454 +RS03: try number = 1493, reading sector 236454 -> 1 untested layers remaining - layer slice 1152 -RS03: try number = 1543, reading sector 236455 +RS03: try number = 1494, reading sector 236455 -> 1 untested layers remaining - layer slice 1153 -RS03: try number = 1544, reading sector 236456 +RS03: try number = 1495, reading sector 236456 -> 1 untested layers remaining - layer slice 1154 -RS03: try number = 1545, reading sector 236457 +RS03: try number = 1496, reading sector 236457 -> 1 untested layers remaining - layer slice 1155 -RS03: try number = 1546, reading sector 236458 +RS03: try number = 1497, reading sector 236458 -> 1 untested layers remaining - layer slice 1156 -RS03: try number = 1547, reading sector 236459 +RS03: try number = 1498, reading sector 236459 -> 1 untested layers remaining - layer slice 1157 -RS03: try number = 1548, reading sector 236460 +RS03: try number = 1499, reading sector 236460 -> 1 untested layers remaining - layer slice 1158 -RS03: try number = 1549, reading sector 236461 +RS03: try number = 1500, reading sector 236461 -> 1 untested layers remaining - layer slice 1159 -RS03: try number = 1550, reading sector 236462 +RS03: try number = 1501, reading sector 236462 -> 1 untested layers remaining - layer slice 1160 -RS03: try number = 1551, reading sector 236463 +RS03: try number = 1502, reading sector 236463 -> 1 untested layers remaining - layer slice 1161 -RS03: try number = 1552, reading sector 236464 +RS03: try number = 1503, reading sector 236464 -> 1 untested layers remaining - layer slice 1162 -RS03: try number = 1553, reading sector 236465 +RS03: try number = 1504, reading sector 236465 -> 1 untested layers remaining - layer slice 1163 -RS03: try number = 1554, reading sector 236466 +RS03: try number = 1505, reading sector 236466 -> 1 untested layers remaining - layer slice 1164 -RS03: try number = 1555, reading sector 236467 +RS03: try number = 1506, reading sector 236467 -> 1 untested layers remaining - layer slice 1165 -RS03: try number = 1556, reading sector 236468 +RS03: try number = 1507, reading sector 236468 -> 1 untested layers remaining - layer slice 1166 -RS03: try number = 1557, reading sector 236469 +RS03: try number = 1508, reading sector 236469 -> 1 untested layers remaining - layer slice 1167 -RS03: try number = 1558, reading sector 236470 +RS03: try number = 1509, reading sector 236470 -> 1 untested layers remaining - layer slice 1168 -RS03: try number = 1559, reading sector 236471 +RS03: try number = 1510, reading sector 236471 -> 1 untested layers remaining - layer slice 1169 -RS03: try number = 1560, reading sector 236472 +RS03: try number = 1511, reading sector 236472 -> 1 untested layers remaining - layer slice 1170 -RS03: try number = 1561, reading sector 236473 +RS03: try number = 1512, reading sector 236473 -> 1 untested layers remaining - layer slice 1171 -RS03: try number = 1562, reading sector 236474 +RS03: try number = 1513, reading sector 236474 -> 1 untested layers remaining - layer slice 1172 -RS03: try number = 1563, reading sector 236475 +RS03: try number = 1514, reading sector 236475 -> 1 untested layers remaining - layer slice 1173 -RS03: try number = 1564, reading sector 236476 +RS03: try number = 1515, reading sector 236476 -> 1 untested layers remaining - layer slice 1174 -RS03: try number = 1565, reading sector 236477 +RS03: try number = 1516, reading sector 236477 -> 1 untested layers remaining - layer slice 1175 -RS03: try number = 1566, reading sector 236478 +RS03: try number = 1517, reading sector 236478 -> 1 untested layers remaining - layer slice 1176 -RS03: try number = 1567, reading sector 236479 +RS03: try number = 1518, reading sector 236479 -> 1 untested layers remaining - layer slice 1177 -RS03: try number = 1568, reading sector 236480 +RS03: try number = 1519, reading sector 236480 -> 1 untested layers remaining - layer slice 1178 -RS03: try number = 1569, reading sector 236481 +RS03: try number = 1520, reading sector 236481 -> 1 untested layers remaining - layer slice 1179 -RS03: try number = 1570, reading sector 236482 +RS03: try number = 1521, reading sector 236482 -> 1 untested layers remaining - layer slice 1180 -RS03: try number = 1571, reading sector 236483 +RS03: try number = 1522, reading sector 236483 -> 1 untested layers remaining - layer slice 1181 -RS03: try number = 1572, reading sector 236484 +RS03: try number = 1523, reading sector 236484 -> 1 untested layers remaining - layer slice 1182 -RS03: try number = 1573, reading sector 236485 +RS03: try number = 1524, reading sector 236485 -> 1 untested layers remaining - layer slice 1183 -RS03: try number = 1574, reading sector 236486 +RS03: try number = 1525, reading sector 236486 -> 1 untested layers remaining - layer slice 1184 -RS03: try number = 1575, reading sector 236487 +RS03: try number = 1526, reading sector 236487 -> 1 untested layers remaining - layer slice 1185 -RS03: try number = 1576, reading sector 236488 +RS03: try number = 1527, reading sector 236488 -> 1 untested layers remaining - layer slice 1186 -RS03: try number = 1577, reading sector 236489 +RS03: try number = 1528, reading sector 236489 -> 1 untested layers remaining - layer slice 1187 -RS03: try number = 1578, reading sector 236490 +RS03: try number = 1529, reading sector 236490 -> 1 untested layers remaining - layer slice 1188 -RS03: try number = 1579, reading sector 236491 +RS03: try number = 1530, reading sector 236491 -> 1 untested layers remaining - layer slice 1189 -RS03: try number = 1580, reading sector 236492 +RS03: try number = 1531, reading sector 236492 -> 1 untested layers remaining - layer slice 1190 -RS03: try number = 1581, reading sector 236493 +RS03: try number = 1532, reading sector 236493 -> 1 untested layers remaining - layer slice 1191 -RS03: try number = 1582, reading sector 236494 +RS03: try number = 1533, reading sector 236494 -> 1 untested layers remaining - layer slice 1192 -RS03: try number = 1583, reading sector 236495 +RS03: try number = 1534, reading sector 236495 -> 1 untested layers remaining - layer slice 1193 -RS03: try number = 1584, reading sector 236496 +RS03: try number = 1535, reading sector 236496 -> 1 untested layers remaining - layer slice 1194 -RS03: try number = 1585, reading sector 236497 +RS03: try number = 1536, reading sector 236497 -> 1 untested layers remaining - layer slice 1195 -RS03: try number = 1586, reading sector 236498 +RS03: try number = 1537, reading sector 236498 -> 1 untested layers remaining - layer slice 1196 -RS03: try number = 1587, reading sector 236499 +RS03: try number = 1538, reading sector 236499 -> 1 untested layers remaining - layer slice 1197 -RS03: try number = 1588, reading sector 236500 +RS03: try number = 1539, reading sector 236500 -> 1 untested layers remaining - layer slice 1198 -RS03: try number = 1589, reading sector 236501 +RS03: try number = 1540, reading sector 236501 -> 1 untested layers remaining - layer slice 1199 -RS03: try number = 1590, reading sector 236502 +RS03: try number = 1541, reading sector 236502 -> 1 untested layers remaining - layer slice 1200 -RS03: try number = 1591, reading sector 236503 +RS03: try number = 1542, reading sector 236503 -> 1 untested layers remaining - layer slice 1201 -RS03: try number = 1592, reading sector 236504 +RS03: try number = 1543, reading sector 236504 -> 1 untested layers remaining - layer slice 1202 -RS03: try number = 1593, reading sector 236505 +RS03: try number = 1544, reading sector 236505 -> 1 untested layers remaining - layer slice 1203 -RS03: try number = 1594, reading sector 236506 +RS03: try number = 1545, reading sector 236506 -> 1 untested layers remaining - layer slice 1204 -RS03: try number = 1595, reading sector 236507 +RS03: try number = 1546, reading sector 236507 -> 1 untested layers remaining - layer slice 1205 -RS03: try number = 1596, reading sector 236508 +RS03: try number = 1547, reading sector 236508 -> 1 untested layers remaining - layer slice 1206 -RS03: try number = 1597, reading sector 236509 +RS03: try number = 1548, reading sector 236509 -> 1 untested layers remaining - layer slice 1207 -RS03: try number = 1598, reading sector 236510 +RS03: try number = 1549, reading sector 236510 -> 1 untested layers remaining - layer slice 1208 -RS03: try number = 1599, reading sector 236511 +RS03: try number = 1550, reading sector 236511 -> 1 untested layers remaining - layer slice 1209 -RS03: try number = 1600, reading sector 236512 +RS03: try number = 1551, reading sector 236512 -> 1 untested layers remaining - layer slice 1210 -RS03: try number = 1601, reading sector 236513 +RS03: try number = 1552, reading sector 236513 -> 1 untested layers remaining - layer slice 1211 -RS03: try number = 1602, reading sector 236514 +RS03: try number = 1553, reading sector 236514 -> 1 untested layers remaining - layer slice 1212 -RS03: try number = 1603, reading sector 236515 +RS03: try number = 1554, reading sector 236515 -> 1 untested layers remaining - layer slice 1213 -RS03: try number = 1604, reading sector 236516 +RS03: try number = 1555, reading sector 236516 -> 1 untested layers remaining - layer slice 1214 -RS03: try number = 1605, reading sector 236517 +RS03: try number = 1556, reading sector 236517 -> 1 untested layers remaining - layer slice 1215 -RS03: try number = 1606, reading sector 236518 +RS03: try number = 1557, reading sector 236518 -> 1 untested layers remaining - layer slice 1216 -RS03: try number = 1607, reading sector 236519 +RS03: try number = 1558, reading sector 236519 -> 1 untested layers remaining - layer slice 1217 -RS03: try number = 1608, reading sector 236520 +RS03: try number = 1559, reading sector 236520 -> 1 untested layers remaining - layer slice 1218 -RS03: try number = 1609, reading sector 236521 +RS03: try number = 1560, reading sector 236521 -> 1 untested layers remaining - layer slice 1219 -RS03: try number = 1610, reading sector 236522 +RS03: try number = 1561, reading sector 236522 -> 1 untested layers remaining - layer slice 1220 -RS03: try number = 1611, reading sector 236523 +RS03: try number = 1562, reading sector 236523 -> 1 untested layers remaining - layer slice 1221 -RS03: try number = 1612, reading sector 236524 +RS03: try number = 1563, reading sector 236524 -> 1 untested layers remaining - layer slice 1222 -RS03: try number = 1613, reading sector 236525 +RS03: try number = 1564, reading sector 236525 -> 1 untested layers remaining - layer slice 1223 -RS03: try number = 1614, reading sector 236526 +RS03: try number = 1565, reading sector 236526 -> 1 untested layers remaining - layer slice 1224 -RS03: try number = 1615, reading sector 236527 +RS03: try number = 1566, reading sector 236527 -> 1 untested layers remaining - layer slice 1225 -RS03: try number = 1616, reading sector 236528 +RS03: try number = 1567, reading sector 236528 -> 1 untested layers remaining - layer slice 1226 -RS03: try number = 1617, reading sector 236529 +RS03: try number = 1568, reading sector 236529 -> 1 untested layers remaining - layer slice 1227 -RS03: try number = 1618, reading sector 236530 +RS03: try number = 1569, reading sector 236530 -> 1 untested layers remaining - layer slice 1228 -RS03: try number = 1619, reading sector 236531 +RS03: try number = 1570, reading sector 236531 -> 1 untested layers remaining - layer slice 1229 -RS03: try number = 1620, reading sector 236532 +RS03: try number = 1571, reading sector 236532 -> 1 untested layers remaining - layer slice 1230 -RS03: try number = 1621, reading sector 236533 +RS03: try number = 1572, reading sector 236533 -> 1 untested layers remaining - layer slice 1231 -RS03: try number = 1622, reading sector 236534 +RS03: try number = 1573, reading sector 236534 -> 1 untested layers remaining - layer slice 1232 -RS03: try number = 1623, reading sector 236535 +RS03: try number = 1574, reading sector 236535 -> 1 untested layers remaining - layer slice 1233 -RS03: try number = 1624, reading sector 236536 +RS03: try number = 1575, reading sector 236536 -> 1 untested layers remaining - layer slice 1234 -RS03: try number = 1625, reading sector 236537 +RS03: try number = 1576, reading sector 236537 -> 1 untested layers remaining - layer slice 1235 -RS03: try number = 1626, reading sector 236538 +RS03: try number = 1577, reading sector 236538 -> 1 untested layers remaining - layer slice 1236 -RS03: try number = 1627, reading sector 236539 +RS03: try number = 1578, reading sector 236539 -> 1 untested layers remaining - layer slice 1237 -RS03: try number = 1628, reading sector 236540 +RS03: try number = 1579, reading sector 236540 -> 1 untested layers remaining - layer slice 1238 -RS03: try number = 1629, reading sector 236541 +RS03: try number = 1580, reading sector 236541 -> 1 untested layers remaining - layer slice 1239 -RS03: try number = 1630, reading sector 236542 +RS03: try number = 1581, reading sector 236542 -> 1 untested layers remaining - layer slice 1240 -RS03: try number = 1631, reading sector 236543 +RS03: try number = 1582, reading sector 236543 -> 1 untested layers remaining - layer slice 1241 -RS03: try number = 1632, reading sector 236544 +RS03: try number = 1583, reading sector 236544 -> 1 untested layers remaining - layer slice 1242 -RS03: try number = 1633, reading sector 236545 +RS03: try number = 1584, reading sector 236545 -> 1 untested layers remaining - layer slice 1243 -RS03: try number = 1634, reading sector 236546 +RS03: try number = 1585, reading sector 236546 -> 1 untested layers remaining - layer slice 1244 -RS03: try number = 1635, reading sector 236547 +RS03: try number = 1586, reading sector 236547 -> 1 untested layers remaining - layer slice 1245 -RS03: try number = 1636, reading sector 236548 +RS03: try number = 1587, reading sector 236548 -> 1 untested layers remaining - layer slice 1246 -RS03: try number = 1637, reading sector 236549 +RS03: try number = 1588, reading sector 236549 -> 1 untested layers remaining - layer slice 1247 -RS03: try number = 1638, reading sector 236550 +RS03: try number = 1589, reading sector 236550 -> 1 untested layers remaining - layer slice 1248 -RS03: try number = 1639, reading sector 236551 +RS03: try number = 1590, reading sector 236551 -> 1 untested layers remaining - layer slice 1249 -RS03: try number = 1640, reading sector 236552 +RS03: try number = 1591, reading sector 236552 -> 1 untested layers remaining - layer slice 1250 -RS03: try number = 1641, reading sector 236553 +RS03: try number = 1592, reading sector 236553 -> 1 untested layers remaining - layer slice 1251 -RS03: try number = 1642, reading sector 236554 +RS03: try number = 1593, reading sector 236554 -> 1 untested layers remaining - layer slice 1252 -RS03: try number = 1643, reading sector 236555 +RS03: try number = 1594, reading sector 236555 -> 1 untested layers remaining - layer slice 1253 -RS03: try number = 1644, reading sector 236556 +RS03: try number = 1595, reading sector 236556 -> 1 untested layers remaining - layer slice 1254 -RS03: try number = 1645, reading sector 236557 +RS03: try number = 1596, reading sector 236557 -> 1 untested layers remaining - layer slice 1255 -RS03: try number = 1646, reading sector 236558 +RS03: try number = 1597, reading sector 236558 -> 1 untested layers remaining - layer slice 1256 -RS03: try number = 1647, reading sector 236559 +RS03: try number = 1598, reading sector 236559 -> 1 untested layers remaining - layer slice 1257 -RS03: try number = 1648, reading sector 236560 +RS03: try number = 1599, reading sector 236560 -> 1 untested layers remaining - layer slice 1258 -RS03: try number = 1649, reading sector 236561 +RS03: try number = 1600, reading sector 236561 -> 1 untested layers remaining - layer slice 1259 -RS03: try number = 1650, reading sector 236562 +RS03: try number = 1601, reading sector 236562 -> 1 untested layers remaining - layer slice 1260 -RS03: try number = 1651, reading sector 236563 +RS03: try number = 1602, reading sector 236563 -> 1 untested layers remaining - layer slice 1261 -RS03: try number = 1652, reading sector 236564 +RS03: try number = 1603, reading sector 236564 -> 1 untested layers remaining - layer slice 1262 -RS03: try number = 1653, reading sector 236565 +RS03: try number = 1604, reading sector 236565 -> 1 untested layers remaining - layer slice 1263 -RS03: try number = 1654, reading sector 236566 +RS03: try number = 1605, reading sector 236566 -> 1 untested layers remaining - layer slice 1264 -RS03: try number = 1655, reading sector 236567 +RS03: try number = 1606, reading sector 236567 -> 1 untested layers remaining - layer slice 1265 -RS03: try number = 1656, reading sector 236568 +RS03: try number = 1607, reading sector 236568 -> 1 untested layers remaining - layer slice 1266 -RS03: try number = 1657, reading sector 236569 +RS03: try number = 1608, reading sector 236569 -> 1 untested layers remaining - layer slice 1267 -RS03: try number = 1658, reading sector 236570 +RS03: try number = 1609, reading sector 236570 -> 1 untested layers remaining - layer slice 1268 -RS03: try number = 1659, reading sector 236571 +RS03: try number = 1610, reading sector 236571 -> 1 untested layers remaining - layer slice 1269 -RS03: try number = 1660, reading sector 236572 +RS03: try number = 1611, reading sector 236572 -> 1 untested layers remaining - layer slice 1270 -RS03: try number = 1661, reading sector 236573 +RS03: try number = 1612, reading sector 236573 -> 1 untested layers remaining - layer slice 1271 -RS03: try number = 1662, reading sector 236574 +RS03: try number = 1613, reading sector 236574 -> 1 untested layers remaining - layer slice 1272 -RS03: try number = 1663, reading sector 236575 +RS03: try number = 1614, reading sector 236575 -> 1 untested layers remaining - layer slice 1273 -RS03: try number = 1664, reading sector 236576 +RS03: try number = 1615, reading sector 236576 -> 1 untested layers remaining - layer slice 1274 -RS03: try number = 1665, reading sector 236577 +RS03: try number = 1616, reading sector 236577 -> 1 untested layers remaining - layer slice 1275 -RS03: try number = 1666, reading sector 236578 +RS03: try number = 1617, reading sector 236578 -> 1 untested layers remaining - layer slice 1276 -RS03: try number = 1667, reading sector 236579 +RS03: try number = 1618, reading sector 236579 -> 1 untested layers remaining - layer slice 1277 -RS03: try number = 1668, reading sector 236580 +RS03: try number = 1619, reading sector 236580 -> 1 untested layers remaining - layer slice 1278 -RS03: try number = 1669, reading sector 236581 +RS03: try number = 1620, reading sector 236581 -> 1 untested layers remaining - layer slice 1279 -RS03: try number = 1670, reading sector 236582 +RS03: try number = 1621, reading sector 236582 -> 1 untested layers remaining - layer slice 1280 -RS03: try number = 1671, reading sector 236583 +RS03: try number = 1622, reading sector 236583 -> 1 untested layers remaining - layer slice 1281 -RS03: try number = 1672, reading sector 236584 +RS03: try number = 1623, reading sector 236584 -> 1 untested layers remaining - layer slice 1282 -RS03: try number = 1673, reading sector 236585 +RS03: try number = 1624, reading sector 236585 -> 1 untested layers remaining - layer slice 1283 -RS03: try number = 1674, reading sector 236586 +RS03: try number = 1625, reading sector 236586 -> 1 untested layers remaining - layer slice 1284 -RS03: try number = 1675, reading sector 236587 +RS03: try number = 1626, reading sector 236587 -> 1 untested layers remaining - layer slice 1285 -RS03: try number = 1676, reading sector 236588 +RS03: try number = 1627, reading sector 236588 -> 1 untested layers remaining - layer slice 1286 -RS03: try number = 1677, reading sector 236589 +RS03: try number = 1628, reading sector 236589 -> 1 untested layers remaining - layer slice 1287 -RS03: try number = 1678, reading sector 236590 +RS03: try number = 1629, reading sector 236590 -> 1 untested layers remaining - layer slice 1288 -RS03: try number = 1679, reading sector 236591 +RS03: try number = 1630, reading sector 236591 -> 1 untested layers remaining - layer slice 1289 -RS03: try number = 1680, reading sector 236592 +RS03: try number = 1631, reading sector 236592 -> 1 untested layers remaining - layer slice 1290 -RS03: try number = 1681, reading sector 236593 +RS03: try number = 1632, reading sector 236593 -> 1 untested layers remaining - layer slice 1291 -RS03: try number = 1682, reading sector 236594 +RS03: try number = 1633, reading sector 236594 -> 1 untested layers remaining - layer slice 1292 -RS03: try number = 1683, reading sector 236595 +RS03: try number = 1634, reading sector 236595 -> 1 untested layers remaining - layer slice 1293 -RS03: try number = 1684, reading sector 236596 +RS03: try number = 1635, reading sector 236596 -> 1 untested layers remaining - layer slice 1294 -RS03: try number = 1685, reading sector 236597 +RS03: try number = 1636, reading sector 236597 -> 1 untested layers remaining - layer slice 1295 -RS03: try number = 1686, reading sector 236598 +RS03: try number = 1637, reading sector 236598 -> 1 untested layers remaining - layer slice 1296 -RS03: try number = 1687, reading sector 236599 +RS03: try number = 1638, reading sector 236599 -> 1 untested layers remaining - layer slice 1297 -RS03: try number = 1688, reading sector 236600 +RS03: try number = 1639, reading sector 236600 -> 1 untested layers remaining - layer slice 1298 -RS03: try number = 1689, reading sector 236601 +RS03: try number = 1640, reading sector 236601 -> 1 untested layers remaining - layer slice 1299 -RS03: try number = 1690, reading sector 236602 +RS03: try number = 1641, reading sector 236602 -> 1 untested layers remaining - layer slice 1300 -RS03: try number = 1691, reading sector 236603 +RS03: try number = 1642, reading sector 236603 -> 1 untested layers remaining - layer slice 1301 -RS03: try number = 1692, reading sector 236604 +RS03: try number = 1643, reading sector 236604 -> 1 untested layers remaining - layer slice 1302 -RS03: try number = 1693, reading sector 236605 +RS03: try number = 1644, reading sector 236605 -> 1 untested layers remaining - layer slice 1303 -RS03: try number = 1694, reading sector 236606 +RS03: try number = 1645, reading sector 236606 -> 1 untested layers remaining - layer slice 1304 -RS03: try number = 1695, reading sector 236607 +RS03: try number = 1646, reading sector 236607 -> 1 untested layers remaining - layer slice 1305 -RS03: try number = 1696, reading sector 236608 +RS03: try number = 1647, reading sector 236608 -> 1 untested layers remaining - layer slice 1306 -RS03: try number = 1697, reading sector 236609 +RS03: try number = 1648, reading sector 236609 -> 1 untested layers remaining - layer slice 1307 -RS03: try number = 1698, reading sector 236610 +RS03: try number = 1649, reading sector 236610 -> 1 untested layers remaining - layer slice 1308 -RS03: try number = 1699, reading sector 236611 +RS03: try number = 1650, reading sector 236611 -> 1 untested layers remaining - layer slice 1309 -RS03: try number = 1700, reading sector 236612 +RS03: try number = 1651, reading sector 236612 -> 1 untested layers remaining - layer slice 1310 -RS03: try number = 1701, reading sector 236613 +RS03: try number = 1652, reading sector 236613 -> 1 untested layers remaining - layer slice 1311 -RS03: try number = 1702, reading sector 236614 +RS03: try number = 1653, reading sector 236614 -> 1 untested layers remaining - layer slice 1312 -RS03: try number = 1703, reading sector 236615 +RS03: try number = 1654, reading sector 236615 -> 1 untested layers remaining - layer slice 1313 -RS03: try number = 1704, reading sector 236616 +RS03: try number = 1655, reading sector 236616 -> 1 untested layers remaining - layer slice 1314 -RS03: try number = 1705, reading sector 236617 +RS03: try number = 1656, reading sector 236617 -> 1 untested layers remaining - layer slice 1315 -RS03: try number = 1706, reading sector 236618 +RS03: try number = 1657, reading sector 236618 -> 1 untested layers remaining - layer slice 1316 -RS03: try number = 1707, reading sector 236619 +RS03: try number = 1658, reading sector 236619 -> 1 untested layers remaining - layer slice 1317 -RS03: try number = 1708, reading sector 236620 +RS03: try number = 1659, reading sector 236620 -> 1 untested layers remaining - layer slice 1318 -RS03: try number = 1709, reading sector 236621 +RS03: try number = 1660, reading sector 236621 -> 1 untested layers remaining - layer slice 1319 -RS03: try number = 1710, reading sector 236622 +RS03: try number = 1661, reading sector 236622 -> 1 untested layers remaining - layer slice 1320 -RS03: try number = 1711, reading sector 236623 +RS03: try number = 1662, reading sector 236623 -> 1 untested layers remaining - layer slice 1321 -RS03: try number = 1712, reading sector 236624 +RS03: try number = 1663, reading sector 236624 -> 1 untested layers remaining - layer slice 1322 -RS03: try number = 1713, reading sector 236625 +RS03: try number = 1664, reading sector 236625 -> 1 untested layers remaining - layer slice 1323 -RS03: try number = 1714, reading sector 236626 +RS03: try number = 1665, reading sector 236626 -> 1 untested layers remaining - layer slice 1324 -RS03: try number = 1715, reading sector 236627 +RS03: try number = 1666, reading sector 236627 -> 1 untested layers remaining - layer slice 1325 -RS03: try number = 1716, reading sector 236628 +RS03: try number = 1667, reading sector 236628 -> 1 untested layers remaining - layer slice 1326 -RS03: try number = 1717, reading sector 236629 +RS03: try number = 1668, reading sector 236629 -> 1 untested layers remaining - layer slice 1327 -RS03: try number = 1718, reading sector 236630 +RS03: try number = 1669, reading sector 236630 -> 1 untested layers remaining - layer slice 1328 -RS03: try number = 1719, reading sector 236631 +RS03: try number = 1670, reading sector 236631 -> 1 untested layers remaining - layer slice 1329 -RS03: try number = 1720, reading sector 236632 +RS03: try number = 1671, reading sector 236632 -> 1 untested layers remaining - layer slice 1330 -RS03: try number = 1721, reading sector 236633 +RS03: try number = 1672, reading sector 236633 -> 1 untested layers remaining - layer slice 1331 -RS03: try number = 1722, reading sector 236634 +RS03: try number = 1673, reading sector 236634 -> 1 untested layers remaining - layer slice 1332 -RS03: try number = 1723, reading sector 236635 +RS03: try number = 1674, reading sector 236635 -> 1 untested layers remaining - layer slice 1333 -RS03: try number = 1724, reading sector 236636 +RS03: try number = 1675, reading sector 236636 -> 1 untested layers remaining - layer slice 1334 -RS03: try number = 1725, reading sector 236637 +RS03: try number = 1676, reading sector 236637 -> 1 untested layers remaining - layer slice 1335 -RS03: try number = 1726, reading sector 236638 +RS03: try number = 1677, reading sector 236638 -> 1 untested layers remaining - layer slice 1336 -RS03: try number = 1727, reading sector 236639 +RS03: try number = 1678, reading sector 236639 -> 1 untested layers remaining - layer slice 1337 -RS03: try number = 1728, reading sector 236640 +RS03: try number = 1679, reading sector 236640 -> 1 untested layers remaining - layer slice 1338 -RS03: try number = 1729, reading sector 236641 +RS03: try number = 1680, reading sector 236641 -> 1 untested layers remaining - layer slice 1339 -RS03: try number = 1730, reading sector 236642 +RS03: try number = 1681, reading sector 236642 -> 1 untested layers remaining - layer slice 1340 -RS03: try number = 1731, reading sector 236643 +RS03: try number = 1682, reading sector 236643 -> 1 untested layers remaining - layer slice 1341 -RS03: try number = 1732, reading sector 236644 +RS03: try number = 1683, reading sector 236644 -> 1 untested layers remaining - layer slice 1342 -RS03: try number = 1733, reading sector 236645 +RS03: try number = 1684, reading sector 236645 -> 1 untested layers remaining - layer slice 1343 -RS03: try number = 1734, reading sector 236646 +RS03: try number = 1685, reading sector 236646 -> 1 untested layers remaining - layer slice 1344 -RS03: try number = 1735, reading sector 236647 +RS03: try number = 1686, reading sector 236647 -> 1 untested layers remaining - layer slice 1345 -RS03: try number = 1736, reading sector 236648 +RS03: try number = 1687, reading sector 236648 -> 1 untested layers remaining - layer slice 1346 -RS03: try number = 1737, reading sector 236649 +RS03: try number = 1688, reading sector 236649 -> 1 untested layers remaining - layer slice 1347 -RS03: try number = 1738, reading sector 236650 +RS03: try number = 1689, reading sector 236650 -> 1 untested layers remaining - layer slice 1348 -RS03: try number = 1739, reading sector 236651 +RS03: try number = 1690, reading sector 236651 -> 1 untested layers remaining - layer slice 1349 -RS03: try number = 1740, reading sector 236652 +RS03: try number = 1691, reading sector 236652 -> 1 untested layers remaining - layer slice 1350 -RS03: try number = 1741, reading sector 236653 +RS03: try number = 1692, reading sector 236653 -> 1 untested layers remaining - layer slice 1351 -RS03: try number = 1742, reading sector 236654 +RS03: try number = 1693, reading sector 236654 -> 1 untested layers remaining - layer slice 1352 -RS03: try number = 1743, reading sector 236655 +RS03: try number = 1694, reading sector 236655 -> 1 untested layers remaining - layer slice 1353 -RS03: try number = 1744, reading sector 236656 +RS03: try number = 1695, reading sector 236656 -> 1 untested layers remaining - layer slice 1354 -RS03: try number = 1745, reading sector 236657 +RS03: try number = 1696, reading sector 236657 -> 1 untested layers remaining - layer slice 1355 -RS03: try number = 1746, reading sector 236658 +RS03: try number = 1697, reading sector 236658 -> 1 untested layers remaining - layer slice 1356 -RS03: try number = 1747, reading sector 236659 +RS03: try number = 1698, reading sector 236659 -> 1 untested layers remaining - layer slice 1357 -RS03: try number = 1748, reading sector 236660 +RS03: try number = 1699, reading sector 236660 -> 1 untested layers remaining - layer slice 1358 -RS03: try number = 1749, reading sector 236661 +RS03: try number = 1700, reading sector 236661 -> 1 untested layers remaining - layer slice 1359 -RS03: try number = 1750, reading sector 236662 +RS03: try number = 1701, reading sector 236662 -> 1 untested layers remaining - layer slice 1360 -RS03: try number = 1751, reading sector 236663 +RS03: try number = 1702, reading sector 236663 -> 1 untested layers remaining - layer slice 1361 -RS03: try number = 1752, reading sector 236664 +RS03: try number = 1703, reading sector 236664 -> 1 untested layers remaining - layer slice 1362 -RS03: try number = 1753, reading sector 236665 +RS03: try number = 1704, reading sector 236665 -> 1 untested layers remaining - layer slice 1363 -RS03: try number = 1754, reading sector 236666 +RS03: try number = 1705, reading sector 236666 -> 1 untested layers remaining - layer slice 1364 -RS03: try number = 1755, reading sector 236667 +RS03: try number = 1706, reading sector 236667 -> 1 untested layers remaining - layer slice 1365 -RS03: try number = 1756, reading sector 236668 +RS03: try number = 1707, reading sector 236668 -> 1 untested layers remaining - layer slice 1366 -RS03: try number = 1757, reading sector 236669 +RS03: try number = 1708, reading sector 236669 -> 1 untested layers remaining - layer slice 1367 -RS03: try number = 1758, reading sector 236670 +RS03: try number = 1709, reading sector 236670 -> 1 untested layers remaining - layer slice 1368 -RS03: try number = 1759, reading sector 236671 +RS03: try number = 1710, reading sector 236671 -> 1 untested layers remaining - layer slice 1369 -RS03: try number = 1760, reading sector 236672 +RS03: try number = 1711, reading sector 236672 -> 1 untested layers remaining - layer slice 1370 -RS03: try number = 1761, reading sector 236673 +RS03: try number = 1712, reading sector 236673 -> 1 untested layers remaining - layer slice 1371 -RS03: try number = 1762, reading sector 236674 +RS03: try number = 1713, reading sector 236674 -> 1 untested layers remaining - layer slice 1372 -RS03: try number = 1763, reading sector 236675 +RS03: try number = 1714, reading sector 236675 -> 1 untested layers remaining - layer slice 1373 -RS03: try number = 1764, reading sector 236676 +RS03: try number = 1715, reading sector 236676 -> 1 untested layers remaining - layer slice 1374 -RS03: try number = 1765, reading sector 236677 +RS03: try number = 1716, reading sector 236677 -> 1 untested layers remaining - layer slice 1375 -RS03: try number = 1766, reading sector 236678 +RS03: try number = 1717, reading sector 236678 -> 1 untested layers remaining - layer slice 1376 -RS03: try number = 1767, reading sector 236679 +RS03: try number = 1718, reading sector 236679 -> 1 untested layers remaining - layer slice 1377 -RS03: try number = 1768, reading sector 236680 +RS03: try number = 1719, reading sector 236680 -> 1 untested layers remaining - layer slice 1378 -RS03: try number = 1769, reading sector 236681 +RS03: try number = 1720, reading sector 236681 -> 1 untested layers remaining - layer slice 1379 -RS03: try number = 1770, reading sector 236682 +RS03: try number = 1721, reading sector 236682 -> 1 untested layers remaining - layer slice 1380 -RS03: try number = 1771, reading sector 236683 +RS03: try number = 1722, reading sector 236683 -> 1 untested layers remaining - layer slice 1381 -RS03: try number = 1772, reading sector 236684 +RS03: try number = 1723, reading sector 236684 -> 1 untested layers remaining - layer slice 1382 -RS03: try number = 1773, reading sector 236685 +RS03: try number = 1724, reading sector 236685 -> 1 untested layers remaining - layer slice 1383 -RS03: try number = 1774, reading sector 236686 +RS03: try number = 1725, reading sector 236686 -> 1 untested layers remaining - layer slice 1384 -RS03: try number = 1775, reading sector 236687 +RS03: try number = 1726, reading sector 236687 -> 1 untested layers remaining - layer slice 1385 -RS03: try number = 1776, reading sector 236688 +RS03: try number = 1727, reading sector 236688 -> 1 untested layers remaining - layer slice 1386 -RS03: try number = 1777, reading sector 236689 +RS03: try number = 1728, reading sector 236689 -> 1 untested layers remaining - layer slice 1387 -RS03: try number = 1778, reading sector 236690 +RS03: try number = 1729, reading sector 236690 -> 1 untested layers remaining - layer slice 1388 -RS03: try number = 1779, reading sector 236691 +RS03: try number = 1730, reading sector 236691 -> 1 untested layers remaining - layer slice 1389 -RS03: try number = 1780, reading sector 236692 +RS03: try number = 1731, reading sector 236692 -> 1 untested layers remaining - layer slice 1390 -RS03: try number = 1781, reading sector 236693 +RS03: try number = 1732, reading sector 236693 -> 1 untested layers remaining - layer slice 1391 -RS03: try number = 1782, reading sector 236694 +RS03: try number = 1733, reading sector 236694 -> 1 untested layers remaining - layer slice 1392 -RS03: try number = 1783, reading sector 236695 +RS03: try number = 1734, reading sector 236695 -> 1 untested layers remaining - layer slice 1393 -RS03: try number = 1784, reading sector 236696 +RS03: try number = 1735, reading sector 236696 -> 1 untested layers remaining - layer slice 1394 -RS03: try number = 1785, reading sector 236697 +RS03: try number = 1736, reading sector 236697 -> 1 untested layers remaining - layer slice 1395 -RS03: try number = 1786, reading sector 236698 +RS03: try number = 1737, reading sector 236698 -> 1 untested layers remaining - layer slice 1396 -RS03: try number = 1787, reading sector 236699 +RS03: try number = 1738, reading sector 236699 -> 1 untested layers remaining - layer slice 1397 -RS03: try number = 1788, reading sector 236700 +RS03: try number = 1739, reading sector 236700 -> 1 untested layers remaining - layer slice 1398 -RS03: try number = 1789, reading sector 236701 +RS03: try number = 1740, reading sector 236701 -> 1 untested layers remaining - layer slice 1399 -RS03: try number = 1790, reading sector 236702 +RS03: try number = 1741, reading sector 236702 -> 1 untested layers remaining - layer slice 1400 -RS03: try number = 1791, reading sector 236703 +RS03: try number = 1742, reading sector 236703 -> 1 untested layers remaining - layer slice 1401 -RS03: try number = 1792, reading sector 236704 +RS03: try number = 1743, reading sector 236704 -> 1 untested layers remaining - layer slice 1402 -RS03: try number = 1793, reading sector 236705 +RS03: try number = 1744, reading sector 236705 -> 1 untested layers remaining - layer slice 1403 -RS03: try number = 1794, reading sector 236706 +RS03: try number = 1745, reading sector 236706 -> 1 untested layers remaining - layer slice 1404 -RS03: try number = 1795, reading sector 236707 +RS03: try number = 1746, reading sector 236707 -> 1 untested layers remaining - layer slice 1405 -RS03: try number = 1796, reading sector 236708 +RS03: try number = 1747, reading sector 236708 -> 1 untested layers remaining - layer slice 1406 -RS03: try number = 1797, reading sector 236709 +RS03: try number = 1748, reading sector 236709 -> 1 untested layers remaining - layer slice 1407 -RS03: try number = 1798, reading sector 236710 +RS03: try number = 1749, reading sector 236710 -> 1 untested layers remaining - layer slice 1408 -RS03: try number = 1799, reading sector 236711 +RS03: try number = 1750, reading sector 236711 ** Success: sector 236711, rediscovered format with 87 roots ...augmented image found GetImageFingerprint(16): read & cached @@ -4784,4 +4735,101 @@ Error correction properties: Data integrity: - medium sectors : 359295 total / 235219 data -* quick mode : image NOT scanned +CalcRS03Layout(): returning cached layout (augmented) +* missing sector : 140900 +* missing sector : 142309 +* missing sector : 143718 +* missing sector : 145127 +* missing sector : 146536 +* missing sector : 147945 +* missing sector : 149354 +* missing sector : 150763 +* missing sector : 152172 +* missing sector : 153581 +* missing sectors : 154990 - 154993 +* missing sectors : 156399 - 156402 +* missing sectors : 157808 - 157811 +* missing sectors : 159217 - 159220 +* missing sectors : 160626 - 160629 +* missing sectors : 162035 - 162038 +* missing sectors : 163444 - 163447 +* missing sectors : 164853 - 164856 +* missing sectors : 166262 - 166265 +* missing sectors : 167671 - 167674 +* missing sectors : 169080 - 169083 +* missing sectors : 170489 - 170492 +* missing sectors : 171898 - 171901 +* missing sectors : 173307 - 173310 +* missing sectors : 174716 - 174719 +* missing sectors : 176125 - 176128 +* missing sectors : 177534 - 177537 +* missing sectors : 178943 - 178946 +* missing sectors : 180352 - 180355 +* missing sectors : 181761 - 181764 +* missing sectors : 183170 - 183173 +* missing sectors : 184579 - 184582 +* missing sectors : 185988 - 185991 +* missing sectors : 187397 - 187400 +* missing sectors : 188806 - 188809 +* missing sectors : 190215 - 190218 +* missing sectors : 191624 - 191627 +* missing sectors : 193033 - 193036 +* missing sectors : 194442 - 194445 +* missing sectors : 195851 - 195854 +* missing sectors : 197260 - 197262 +* missing sector : 198669 +* missing sector : 200078 +* missing sector : 201487 +* missing sector : 202896 +* missing sector : 204305 +* missing sector : 205714 +* missing sector : 207123 +* missing sector : 208532 +* missing sector : 209941 +* missing sector : 211350 +* missing sector : 212759 +* missing sector : 214168 +* missing sector : 215577 +* missing sector : 216986 +* missing sector : 218395 +* missing sector : 219804 +* missing sector : 221213 +* missing sector : 222622 +* missing sector : 224031 +* missing sector : 225440 +* missing sector : 226849 +* missing sector : 228258 +* missing sector : 229667 +* missing sector : 231076 +* missing sector : 232485 +* missing sector : 233894 +* missing sector : 235219 +* missing sector : 235303 +* missing sector : 235305 +* missing sectors : 235307 - 236710 +* missing sector : 236712 +* missing sector : 238121 +* missing sector : 239530 +* missing sector : 240939 +* missing sector : 242348 +* missing sector : 243757 +* missing sector : 245166 +* missing sector : 246575 +* missing sector : 247984 +* missing sector : 249393 +* missing sector : 250802 +* missing sector : 252211 +* missing sector : 253620 +* missing sector : 255029 +* missing sector : 256438 +* missing sector : 257847 +* missing sector : 259256 +* missing sector : 260665 +* missing sector : 262074 + ... data section : 160 sectors missing; 0 CRC errors + ... crc section : 1406 sectors missing; 2 signature errors + ... ecc section : 19 sectors missing +* Ecc block test : 1 good, 1408 bad; 1058915 bad sub blocks +- erasure counts : avg = 1.1; worst = 87 per ecc block. +- prognosis : 359295 of 359295 sectors recoverable (100.0%) +FreeCrcBuf - buffer cleared diff --git a/regtest/database/RS03i_missing_header5 b/regtest/database/RS03i_missing_header5 new file mode 100644 index 0000000..f9ccb12 --- /dev/null +++ b/regtest/database/RS03i_missing_header5 @@ -0,0 +1,263 @@ +58ad0723e8e92a23b2c302a01caad422 +ignore +This software comes with ABSOLUTELY NO WARRANTY. This +is free software and you are welcome to redistribute it +under the conditions of the GNU GENERAL PUBLIC LICENSE. +See the file "COPYING" for further information. + +ExamineUDF(File: rs03i-tmp.iso) + Examining the ISO file system... + Sector 16: + Volume descriptor type = 1 + Volume descriptor version = 1 + Standard identifier = CD001 + -> primary volume descriptor: + System identifier : | | + Volume identifier : |RANDOM IMAGE | + Volume space size : 235219 sectors + Volume set size : 1 + Volume sequence size : 1 + Logical block size : 2048 + Path table size : 10 bytes + L-Path table location : 19 + Opt L-Path table location : 0 + M-Path table location : 20 + Opt M-Path table location : 0 + Volume creation date/time : 16-07-2006 10:35:46.23 + Volume modification d/t : 16-07-2006 10:35:46.23 + Volume expiration d/t : 16-07-2106 10:35:46.23 + Volume effective d/t : 16-07-2006 10:35:46.23 + File structure version : 1 + Sector 17: + Volume descriptor type = 2 + Volume descriptor version = 1 + Standard identifier = CD001 + -> supplementary volume descriptor: *skipped* + Sector 18: + Volume descriptor type = 255 + Volume descriptor version = 1 + Standard identifier = CD001 + -> volume descriptor set terminator; + end of ISO file system parsing. + Examining the UDF file system... + not yet implemented. + +ExamineECC() started +...trying RS01 +...trying RS02 +RS02Recognize: file rs03i-tmp.iso +try_sector: trying sector 235219 +try_sector: read error, trying next header +try_sector: trying sector 235069 +try_sector: no cookie, skipping current modulo +RS02Recognize: No EH, entering exhaustive search +FindHeaderInMedium: Trying modulo 4611686018427387904 +FindHeaderInMedium: Trying modulo 2305843009213693952 +FindHeaderInMedium: Trying modulo 1152921504606846976 +FindHeaderInMedium: Trying modulo 576460752303423488 +FindHeaderInMedium: Trying modulo 288230376151711744 +FindHeaderInMedium: Trying modulo 144115188075855872 +FindHeaderInMedium: Trying modulo 72057594037927936 +FindHeaderInMedium: Trying modulo 36028797018963968 +FindHeaderInMedium: Trying modulo 18014398509481984 +FindHeaderInMedium: Trying modulo 9007199254740992 +FindHeaderInMedium: Trying modulo 4503599627370496 +FindHeaderInMedium: Trying modulo 2251799813685248 +FindHeaderInMedium: Trying modulo 1125899906842624 +FindHeaderInMedium: Trying modulo 562949953421312 +FindHeaderInMedium: Trying modulo 281474976710656 +FindHeaderInMedium: Trying modulo 140737488355328 +FindHeaderInMedium: Trying modulo 70368744177664 +FindHeaderInMedium: Trying modulo 35184372088832 +FindHeaderInMedium: Trying modulo 17592186044416 +FindHeaderInMedium: Trying modulo 8796093022208 +FindHeaderInMedium: Trying modulo 4398046511104 +FindHeaderInMedium: Trying modulo 2199023255552 +FindHeaderInMedium: Trying modulo 1099511627776 +FindHeaderInMedium: Trying modulo 549755813888 +FindHeaderInMedium: Trying modulo 274877906944 +FindHeaderInMedium: Trying modulo 137438953472 +FindHeaderInMedium: Trying modulo 68719476736 +FindHeaderInMedium: Trying modulo 34359738368 +FindHeaderInMedium: Trying modulo 17179869184 +FindHeaderInMedium: Trying modulo 8589934592 +FindHeaderInMedium: Trying modulo 4294967296 +FindHeaderInMedium: Trying modulo 2147483648 +FindHeaderInMedium: Trying modulo 1073741824 +FindHeaderInMedium: Trying modulo 536870912 +FindHeaderInMedium: Trying modulo 268435456 +FindHeaderInMedium: Trying modulo 134217728 +FindHeaderInMedium: Trying modulo 67108864 +FindHeaderInMedium: Trying modulo 33554432 +FindHeaderInMedium: Trying modulo 16777216 +FindHeaderInMedium: Trying modulo 8388608 +FindHeaderInMedium: Trying modulo 4194304 +FindHeaderInMedium: Trying modulo 2097152 +FindHeaderInMedium: Trying modulo 1048576 +FindHeaderInMedium: Trying modulo 524288 +FindHeaderInMedium: Trying modulo 262144 +try_sector: trying sector 262144 +try_sector: no cookie, skipping current modulo +FindHeaderInMedium: Trying modulo 131072 +Sector 262144 cached; skipping modulo +FindHeaderInMedium: Trying modulo 65536 +try_sector: trying sector 327680 +try_sector: no cookie, skipping current modulo +FindHeaderInMedium: Trying modulo 32768 +Sector 327680 cached; skipping modulo +FindHeaderInMedium: Trying modulo 16384 +try_sector: trying sector 344064 +try_sector: no cookie, skipping current modulo +FindHeaderInMedium: Trying modulo 8192 +try_sector: trying sector 352256 +try_sector: no cookie, skipping current modulo +FindHeaderInMedium: Trying modulo 4096 +try_sector: trying sector 356352 +try_sector: no cookie, skipping current modulo +FindHeaderInMedium: Trying modulo 2048 +try_sector: trying sector 358400 +try_sector: no cookie, skipping current modulo +FindHeaderInMedium: Trying modulo 1024 +Sector 358400 cached; skipping modulo +FindHeaderInMedium: Trying modulo 512 +try_sector: trying sector 358912 +try_sector: no cookie, skipping current modulo +FindHeaderInMedium: Trying modulo 256 +try_sector: trying sector 359168 +try_sector: no cookie, skipping current modulo +FindHeaderInMedium: Trying modulo 128 +Sector 359168 cached; skipping modulo +FindHeaderInMedium: Trying modulo 64 +try_sector: trying sector 359232 +try_sector: no cookie, skipping current modulo +FindHeaderInMedium: Trying modulo 32 +try_sector: trying sector 359264 +try_sector: no cookie, skipping current modulo +...trying RS03 +RS03RecognizeImage: file rs03i-tmp.iso +FindRS03HeaderInImage: file rs03i-tmp.iso +RS03RecognizeImage: No EH, entering exhaustive search +.. trying layer size 1409 +Scanning layers for signatures. +- layer slice 0 +RS03: try number = 1, reading sector 118356 +RS03: try number = 2, reading sector 119765 +RS03: try number = 3, reading sector 121174 +RS03: try number = 4, reading sector 122583 +RS03: try number = 5, reading sector 123992 +RS03: try number = 6, reading sector 125401 +RS03: try number = 7, reading sector 126810 +RS03: try number = 8, reading sector 128219 +RS03: try number = 9, reading sector 129628 +RS03: try number = 10, reading sector 131037 +RS03: try number = 11, reading sector 132446 +RS03: try number = 12, reading sector 133855 +RS03: try number = 13, reading sector 135264 +RS03: try number = 14, reading sector 136673 +RS03: try number = 15, reading sector 138082 +RS03: try number = 16, reading sector 139491 +RS03: try number = 17, reading sector 140900 +RS03: try number = 18, reading sector 142309 +RS03: try number = 19, reading sector 143718 +RS03: try number = 20, reading sector 145127 +RS03: try number = 21, reading sector 146536 +RS03: try number = 22, reading sector 147945 +RS03: try number = 23, reading sector 149354 +RS03: try number = 24, reading sector 150763 +RS03: try number = 25, reading sector 152172 +RS03: try number = 26, reading sector 153581 +RS03: try number = 27, reading sector 154990 +RS03: try number = 28, reading sector 156399 +RS03: try number = 29, reading sector 157808 +RS03: try number = 30, reading sector 159217 +RS03: try number = 31, reading sector 160626 +RS03: try number = 32, reading sector 162035 +RS03: try number = 33, reading sector 163444 +RS03: try number = 34, reading sector 164853 +RS03: try number = 35, reading sector 166262 +RS03: try number = 36, reading sector 167671 +RS03: try number = 37, reading sector 169080 +RS03: try number = 38, reading sector 170489 +RS03: try number = 39, reading sector 171898 +RS03: try number = 40, reading sector 173307 +RS03: try number = 41, reading sector 174716 +RS03: try number = 42, reading sector 176125 +RS03: try number = 43, reading sector 177534 +RS03: try number = 44, reading sector 178943 +RS03: try number = 45, reading sector 180352 +RS03: try number = 46, reading sector 181761 +RS03: try number = 47, reading sector 183170 +RS03: try number = 48, reading sector 184579 +RS03: try number = 49, reading sector 185988 +RS03: try number = 50, reading sector 187397 +RS03: try number = 51, reading sector 188806 +RS03: try number = 52, reading sector 190215 +RS03: try number = 53, reading sector 191624 +RS03: try number = 54, reading sector 193033 +RS03: try number = 55, reading sector 194442 +RS03: try number = 56, reading sector 195851 +RS03: try number = 57, reading sector 197260 +RS03: try number = 58, reading sector 198669 +RS03: try number = 59, reading sector 200078 +RS03: try number = 60, reading sector 201487 +RS03: try number = 61, reading sector 202896 +RS03: try number = 62, reading sector 204305 +RS03: try number = 63, reading sector 205714 +RS03: try number = 64, reading sector 207123 +RS03: try number = 65, reading sector 208532 +RS03: try number = 66, reading sector 209941 +RS03: try number = 67, reading sector 211350 +RS03: try number = 68, reading sector 212759 +RS03: try number = 69, reading sector 214168 +RS03: try number = 70, reading sector 215577 +RS03: try number = 71, reading sector 216986 +RS03: try number = 72, reading sector 218395 +RS03: try number = 73, reading sector 219804 +RS03: try number = 74, reading sector 221213 +RS03: try number = 75, reading sector 222622 +RS03: try number = 76, reading sector 224031 +RS03: try number = 77, reading sector 225440 +RS03: try number = 78, reading sector 226849 +RS03: try number = 79, reading sector 228258 +RS03: try number = 80, reading sector 229667 +RS03: try number = 81, reading sector 231076 +RS03: try number = 82, reading sector 232485 +RS03: try number = 83, reading sector 233894 +RS03: try number = 84, reading sector 235303 +** Success: sector 235303, rediscovered format with 87 roots +...augmented image found +GetImageFingerprint(16): read & cached + +rs03i-tmp.iso present. +Calculated layout for RS03 image: +data sectors = 235219 +data padding = 82 +layer size = 1409 +total sectors = 359295 +medium capacity = 0 +header position = 235219 +first CRC sector = 235303 +first ECC sector = 236712 +ndata = 168 +nroots = 87 (51.8%) + + +Error correction properties: +- type : Augmented image +- method : RS03, 87 roots, 51.8% redundancy. +- created by : dvdisaster-0.80 +- requires : dvdisaster-0.79 +- data md5sum : none available + +Data integrity: +- medium sectors : 359295 total / 235219 data +CalcRS03Layout(): returning cached layout (augmented) +* missing sector : 235220 +* BAD image/file : 1 sectors missing + ... data section : 1 sectors missing; 0 CRC errors + ... crc section : 0 sectors missing + ... ecc section : 0 sectors missing +* Ecc block test : 1408 good, 1 bad; 325 bad sub blocks +- erasure counts : avg = 1.0; worst = 1 per ecc block. +- prognosis : 359295 of 359295 sectors recoverable (100.0%) +FreeCrcBuf - buffer cleared diff --git a/regtest/database/RS03i_missing_header6 b/regtest/database/RS03i_missing_header6 new file mode 100644 index 0000000..579c103 --- /dev/null +++ b/regtest/database/RS03i_missing_header6 @@ -0,0 +1,263 @@ +c34c0a65564384174fce7a172b243718 +ignore +This software comes with ABSOLUTELY NO WARRANTY. This +is free software and you are welcome to redistribute it +under the conditions of the GNU GENERAL PUBLIC LICENSE. +See the file "COPYING" for further information. + +ExamineUDF(File: rs03i-tmp.iso) + Examining the ISO file system... + Sector 16: + Volume descriptor type = 1 + Volume descriptor version = 1 + Standard identifier = CD001 + -> primary volume descriptor: + System identifier : | | + Volume identifier : |RANDOM IMAGE | + Volume space size : 235219 sectors + Volume set size : 1 + Volume sequence size : 1 + Logical block size : 2048 + Path table size : 10 bytes + L-Path table location : 19 + Opt L-Path table location : 0 + M-Path table location : 20 + Opt M-Path table location : 0 + Volume creation date/time : 16-07-2006 10:35:46.23 + Volume modification d/t : 16-07-2006 10:35:46.23 + Volume expiration d/t : 16-07-2106 10:35:46.23 + Volume effective d/t : 16-07-2006 10:35:46.23 + File structure version : 1 + Sector 17: + Volume descriptor type = 2 + Volume descriptor version = 1 + Standard identifier = CD001 + -> supplementary volume descriptor: *skipped* + Sector 18: + Volume descriptor type = 255 + Volume descriptor version = 1 + Standard identifier = CD001 + -> volume descriptor set terminator; + end of ISO file system parsing. + Examining the UDF file system... + not yet implemented. + +ExamineECC() started +...trying RS01 +...trying RS02 +RS02Recognize: file rs03i-tmp.iso +try_sector: trying sector 235219 +try_sector: read error, trying next header +try_sector: trying sector 235069 +try_sector: no cookie, skipping current modulo +RS02Recognize: No EH, entering exhaustive search +FindHeaderInMedium: Trying modulo 4611686018427387904 +FindHeaderInMedium: Trying modulo 2305843009213693952 +FindHeaderInMedium: Trying modulo 1152921504606846976 +FindHeaderInMedium: Trying modulo 576460752303423488 +FindHeaderInMedium: Trying modulo 288230376151711744 +FindHeaderInMedium: Trying modulo 144115188075855872 +FindHeaderInMedium: Trying modulo 72057594037927936 +FindHeaderInMedium: Trying modulo 36028797018963968 +FindHeaderInMedium: Trying modulo 18014398509481984 +FindHeaderInMedium: Trying modulo 9007199254740992 +FindHeaderInMedium: Trying modulo 4503599627370496 +FindHeaderInMedium: Trying modulo 2251799813685248 +FindHeaderInMedium: Trying modulo 1125899906842624 +FindHeaderInMedium: Trying modulo 562949953421312 +FindHeaderInMedium: Trying modulo 281474976710656 +FindHeaderInMedium: Trying modulo 140737488355328 +FindHeaderInMedium: Trying modulo 70368744177664 +FindHeaderInMedium: Trying modulo 35184372088832 +FindHeaderInMedium: Trying modulo 17592186044416 +FindHeaderInMedium: Trying modulo 8796093022208 +FindHeaderInMedium: Trying modulo 4398046511104 +FindHeaderInMedium: Trying modulo 2199023255552 +FindHeaderInMedium: Trying modulo 1099511627776 +FindHeaderInMedium: Trying modulo 549755813888 +FindHeaderInMedium: Trying modulo 274877906944 +FindHeaderInMedium: Trying modulo 137438953472 +FindHeaderInMedium: Trying modulo 68719476736 +FindHeaderInMedium: Trying modulo 34359738368 +FindHeaderInMedium: Trying modulo 17179869184 +FindHeaderInMedium: Trying modulo 8589934592 +FindHeaderInMedium: Trying modulo 4294967296 +FindHeaderInMedium: Trying modulo 2147483648 +FindHeaderInMedium: Trying modulo 1073741824 +FindHeaderInMedium: Trying modulo 536870912 +FindHeaderInMedium: Trying modulo 268435456 +FindHeaderInMedium: Trying modulo 134217728 +FindHeaderInMedium: Trying modulo 67108864 +FindHeaderInMedium: Trying modulo 33554432 +FindHeaderInMedium: Trying modulo 16777216 +FindHeaderInMedium: Trying modulo 8388608 +FindHeaderInMedium: Trying modulo 4194304 +FindHeaderInMedium: Trying modulo 2097152 +FindHeaderInMedium: Trying modulo 1048576 +FindHeaderInMedium: Trying modulo 524288 +FindHeaderInMedium: Trying modulo 262144 +try_sector: trying sector 262144 +try_sector: no cookie, skipping current modulo +FindHeaderInMedium: Trying modulo 131072 +Sector 262144 cached; skipping modulo +FindHeaderInMedium: Trying modulo 65536 +try_sector: trying sector 327680 +try_sector: no cookie, skipping current modulo +FindHeaderInMedium: Trying modulo 32768 +Sector 327680 cached; skipping modulo +FindHeaderInMedium: Trying modulo 16384 +try_sector: trying sector 344064 +try_sector: no cookie, skipping current modulo +FindHeaderInMedium: Trying modulo 8192 +try_sector: trying sector 352256 +try_sector: no cookie, skipping current modulo +FindHeaderInMedium: Trying modulo 4096 +try_sector: trying sector 356352 +try_sector: no cookie, skipping current modulo +FindHeaderInMedium: Trying modulo 2048 +try_sector: trying sector 358400 +try_sector: no cookie, skipping current modulo +FindHeaderInMedium: Trying modulo 1024 +Sector 358400 cached; skipping modulo +FindHeaderInMedium: Trying modulo 512 +try_sector: trying sector 358912 +try_sector: no cookie, skipping current modulo +FindHeaderInMedium: Trying modulo 256 +try_sector: trying sector 359168 +try_sector: no cookie, skipping current modulo +FindHeaderInMedium: Trying modulo 128 +Sector 359168 cached; skipping modulo +FindHeaderInMedium: Trying modulo 64 +try_sector: trying sector 359232 +try_sector: no cookie, skipping current modulo +FindHeaderInMedium: Trying modulo 32 +try_sector: trying sector 359264 +try_sector: no cookie, skipping current modulo +...trying RS03 +RS03RecognizeImage: file rs03i-tmp.iso +FindRS03HeaderInImage: file rs03i-tmp.iso +RS03RecognizeImage: No EH, entering exhaustive search +.. trying layer size 1409 +Scanning layers for signatures. +- layer slice 0 +RS03: try number = 1, reading sector 118356 +RS03: try number = 2, reading sector 119765 +RS03: try number = 3, reading sector 121174 +RS03: try number = 4, reading sector 122583 +RS03: try number = 5, reading sector 123992 +RS03: try number = 6, reading sector 125401 +RS03: try number = 7, reading sector 126810 +RS03: try number = 8, reading sector 128219 +RS03: try number = 9, reading sector 129628 +RS03: try number = 10, reading sector 131037 +RS03: try number = 11, reading sector 132446 +RS03: try number = 12, reading sector 133855 +RS03: try number = 13, reading sector 135264 +RS03: try number = 14, reading sector 136673 +RS03: try number = 15, reading sector 138082 +RS03: try number = 16, reading sector 139491 +RS03: try number = 17, reading sector 140900 +RS03: try number = 18, reading sector 142309 +RS03: try number = 19, reading sector 143718 +RS03: try number = 20, reading sector 145127 +RS03: try number = 21, reading sector 146536 +RS03: try number = 22, reading sector 147945 +RS03: try number = 23, reading sector 149354 +RS03: try number = 24, reading sector 150763 +RS03: try number = 25, reading sector 152172 +RS03: try number = 26, reading sector 153581 +RS03: try number = 27, reading sector 154990 +RS03: try number = 28, reading sector 156399 +RS03: try number = 29, reading sector 157808 +RS03: try number = 30, reading sector 159217 +RS03: try number = 31, reading sector 160626 +RS03: try number = 32, reading sector 162035 +RS03: try number = 33, reading sector 163444 +RS03: try number = 34, reading sector 164853 +RS03: try number = 35, reading sector 166262 +RS03: try number = 36, reading sector 167671 +RS03: try number = 37, reading sector 169080 +RS03: try number = 38, reading sector 170489 +RS03: try number = 39, reading sector 171898 +RS03: try number = 40, reading sector 173307 +RS03: try number = 41, reading sector 174716 +RS03: try number = 42, reading sector 176125 +RS03: try number = 43, reading sector 177534 +RS03: try number = 44, reading sector 178943 +RS03: try number = 45, reading sector 180352 +RS03: try number = 46, reading sector 181761 +RS03: try number = 47, reading sector 183170 +RS03: try number = 48, reading sector 184579 +RS03: try number = 49, reading sector 185988 +RS03: try number = 50, reading sector 187397 +RS03: try number = 51, reading sector 188806 +RS03: try number = 52, reading sector 190215 +RS03: try number = 53, reading sector 191624 +RS03: try number = 54, reading sector 193033 +RS03: try number = 55, reading sector 194442 +RS03: try number = 56, reading sector 195851 +RS03: try number = 57, reading sector 197260 +RS03: try number = 58, reading sector 198669 +RS03: try number = 59, reading sector 200078 +RS03: try number = 60, reading sector 201487 +RS03: try number = 61, reading sector 202896 +RS03: try number = 62, reading sector 204305 +RS03: try number = 63, reading sector 205714 +RS03: try number = 64, reading sector 207123 +RS03: try number = 65, reading sector 208532 +RS03: try number = 66, reading sector 209941 +RS03: try number = 67, reading sector 211350 +RS03: try number = 68, reading sector 212759 +RS03: try number = 69, reading sector 214168 +RS03: try number = 70, reading sector 215577 +RS03: try number = 71, reading sector 216986 +RS03: try number = 72, reading sector 218395 +RS03: try number = 73, reading sector 219804 +RS03: try number = 74, reading sector 221213 +RS03: try number = 75, reading sector 222622 +RS03: try number = 76, reading sector 224031 +RS03: try number = 77, reading sector 225440 +RS03: try number = 78, reading sector 226849 +RS03: try number = 79, reading sector 228258 +RS03: try number = 80, reading sector 229667 +RS03: try number = 81, reading sector 231076 +RS03: try number = 82, reading sector 232485 +RS03: try number = 83, reading sector 233894 +RS03: try number = 84, reading sector 235303 +** Success: sector 235303, rediscovered format with 87 roots +...augmented image found +GetImageFingerprint(16): read & cached + +rs03i-tmp.iso present. +Calculated layout for RS03 image: +data sectors = 235219 +data padding = 82 +layer size = 1409 +total sectors = 359295 +medium capacity = 0 +header position = 235219 +first CRC sector = 235303 +first ECC sector = 236712 +ndata = 168 +nroots = 87 (51.8%) + + +Error correction properties: +- type : Augmented image +- method : RS03, 87 roots, 51.8% redundancy. +- created by : dvdisaster-0.80 +- requires : dvdisaster-0.79 +- data md5sum : none available + +Data integrity: +- medium sectors : 359295 total / 235219 data +CalcRS03Layout(): returning cached layout (augmented) +* missing sectors : 235219 - 235220 +* BAD image/file : 2 sectors missing + ... data section : 2 sectors missing; 0 CRC errors + ... crc section : 0 sectors missing + ... ecc section : 0 sectors missing +* Ecc block test : 1407 good, 2 bad; 650 bad sub blocks +- erasure counts : avg = 1.0; worst = 1 per ecc block. +- prognosis : 359295 of 359295 sectors recoverable (100.0%) +FreeCrcBuf - buffer cleared diff --git a/regtest/database/RS03i_missing_header_no_crcsec b/regtest/database/RS03i_missing_header_no_crcsec index 98a3150..bcd2556 100644 --- a/regtest/database/RS03i_missing_header_no_crcsec +++ b/regtest/database/RS03i_missing_header_no_crcsec @@ -4535,7 +4535,9 @@ RS03: try number = 1572, reading sector 236711 GetImageFingerprint(16): read & cached rs03i-tmp.iso: present, contains 359295 medium sectors. -* quick mode : image NOT scanned +* missing sector : 235219 +* missing sectors : 235303 - 236711 +* BAD image : 1410 sectors missing -medium.ecc: not present +none.file: not present diff --git a/regtest/database/RS03i_missing_header_truncated b/regtest/database/RS03i_missing_header_truncated index ef28c7c..24e67b3 100644 --- a/regtest/database/RS03i_missing_header_truncated +++ b/regtest/database/RS03i_missing_header_truncated @@ -314,4 +314,31 @@ Error correction properties: Data integrity: * medium sectors : 300000 (359295 expected) -* quick mode : image NOT scanned +CalcRS03Layout(): returning cached layout (augmented) +* missing sector : 169080 +* missing sector : 170489 +* missing sector : 171898 +* missing sector : 173307 +* missing sector : 174716 +* missing sector : 176125 +* missing sector : 177534 +* missing sector : 178943 +* missing sector : 180352 +* missing sector : 181761 +* missing sector : 183170 +* missing sector : 184579 +* missing sector : 185988 +* missing sector : 187397 +* missing sector : 188806 +* missing sector : 190215 +* missing sector : 235219 +* missing sector : 235303 +* missing sectors : 300000 - 359294 +* BAD image/file : 59313 sectors missing + ... data section : 17 sectors missing; 0 CRC errors + ... crc section : 1 sectors missing + ... ecc section : 59295 sectors missing +* Ecc block test : 0 good, 1409 bad; 2885632 bad sub blocks +- erasure counts : avg = 42.1; worst = 59 per ecc block. +- prognosis : 359295 of 359295 sectors recoverable (100.0%) +FreeCrcBuf - buffer cleared diff --git a/regtest/database/RS03i_no_image b/regtest/database/RS03i_no_image index c5b75ab..99c324d 100644 --- a/regtest/database/RS03i_no_image +++ b/regtest/database/RS03i_no_image @@ -7,5 +7,5 @@ See the file "COPYING" for further information. no.iso: not present -medium.ecc: not present +no.ecc: not present diff --git a/regtest/database/RS03i_random_image b/regtest/database/RS03i_random_image index 613c5d5..9e7908c 100644 --- a/regtest/database/RS03i_random_image +++ b/regtest/database/RS03i_random_image @@ -311,5 +311,5 @@ GetImageFingerprint(16): read & cached rs03i-tmp.iso: present, contains 359295 medium sectors. * quick mode : image NOT scanned -medium.ecc: not present +none.file: not present diff --git a/regtest/database/RS03i_read_bad_header_exhaustive b/regtest/database/RS03i_read_bad_header_exhaustive index 1ec573e..93e4d64 100644 --- a/regtest/database/RS03i_read_bad_header_exhaustive +++ b/regtest/database/RS03i_read_bad_header_exhaustive @@ -321,3 +321,4 @@ CrcBuf contents, image path none (medium): md5State: invalid fp sector: 16; 15c0fd35a0cfa0f83b9ccbd8604c2592 missing crcs: 0 +FreeCrcBuf - buffer cleared diff --git a/regtest/database/RS03i_read_crc_section_with_uncorrectable_dsm b/regtest/database/RS03i_read_crc_section_with_uncorrectable_dsm index 1e3ff4d..e21667f 100644 --- a/regtest/database/RS03i_read_crc_section_with_uncorrectable_dsm +++ b/regtest/database/RS03i_read_crc_section_with_uncorrectable_dsm @@ -25,4 +25,4 @@ Reading CRC information from ecc data (RS03) ... done. * ... more unrecoverable sectors found ... * further messages are suppressed unless the -v option is given. -All sectors successfully read, but incomplete or damaged checksums. +All sectors are readable, but 3 contain defective content. diff --git a/regtest/database/RS03i_read_good_verbose b/regtest/database/RS03i_read_good_verbose index 19ae307..ae2cd72 100644 --- a/regtest/database/RS03i_read_good_verbose +++ b/regtest/database/RS03i_read_good_verbose @@ -185,3 +185,4 @@ CrcBuf contents, image path none (medium): full: 95b221fd894f6adb6f6e8d3b89583fb6 fp sector: 16; 15c0fd35a0cfa0f83b9ccbd8604c2592 missing crcs: 0 +FreeCrcBuf - buffer cleared diff --git a/regtest/database/RS03i_read_longer b/regtest/database/RS03i_read_longer index 05683cf..5d06847 100644 --- a/regtest/database/RS03i_read_longer +++ b/regtest/database/RS03i_read_longer @@ -185,3 +185,4 @@ CrcBuf contents, image path none (medium): full: 95b221fd894f6adb6f6e8d3b89583fb6 fp sector: 16; 15c0fd35a0cfa0f83b9ccbd8604c2592 missing crcs: 0 +FreeCrcBuf - buffer cleared diff --git a/regtest/database/RS03i_read_missing_iso_header b/regtest/database/RS03i_read_missing_iso_header index a8669ce..65c5c2f 100644 --- a/regtest/database/RS03i_read_missing_iso_header +++ b/regtest/database/RS03i_read_missing_iso_header @@ -1889,3 +1889,4 @@ CrcBuf contents, image path none (medium): md5State: invalid fp sector: 16; invalid missing crcs: 0 +FreeCrcBuf - buffer cleared diff --git a/regtest/database/RS03i_read_with_ecc_file_crc_block b/regtest/database/RS03i_read_with_ecc_file_crc_block index 9c7f6a3..d474efe 100644 --- a/regtest/database/RS03i_read_with_ecc_file_crc_block +++ b/regtest/database/RS03i_read_with_ecc_file_crc_block @@ -637,3 +637,4 @@ CrcBuf contents, image path none (medium): md5State: invalid fp sector: 16; 15c0fd35a0cfa0f83b9ccbd8604c2592 missing crcs: 0 +FreeCrcBuf - buffer cleared diff --git a/regtest/database/RS03i_read_with_ecc_file_header b/regtest/database/RS03i_read_with_ecc_file_header index 78ae396..4c09875 100644 --- a/regtest/database/RS03i_read_with_ecc_file_header +++ b/regtest/database/RS03i_read_with_ecc_file_header @@ -322,3 +322,4 @@ CrcBuf contents, image path none (medium): md5State: invalid fp sector: 16; 15c0fd35a0cfa0f83b9ccbd8604c2592 missing crcs: 0 +FreeCrcBuf - buffer cleared diff --git a/regtest/database/RS03i_read_with_missing_header_exhaustive b/regtest/database/RS03i_read_with_missing_header_exhaustive index 0351d19..1cf212b 100644 --- a/regtest/database/RS03i_read_with_missing_header_exhaustive +++ b/regtest/database/RS03i_read_with_missing_header_exhaustive @@ -12589,3 +12589,4 @@ CrcBuf contents, image path none (medium): md5State: invalid fp sector: 16; 33b0c14f099f69c29719b7a181c0241d missing crcs: 176 +FreeCrcBuf - buffer cleared diff --git a/regtest/database/RS03i_read_with_missing_iso_header_exhaustive b/regtest/database/RS03i_read_with_missing_iso_header_exhaustive index 017cdb2..4b302a1 100644 --- a/regtest/database/RS03i_read_with_missing_iso_header_exhaustive +++ b/regtest/database/RS03i_read_with_missing_iso_header_exhaustive @@ -22727,3 +22727,4 @@ CrcBuf contents, image path none (medium): md5State: invalid fp sector: 16; invalid missing crcs: 0 +FreeCrcBuf - buffer cleared diff --git a/regtest/database/RS03i_rediscover_170_roots b/regtest/database/RS03i_rediscover_170_roots index f25ab58..a921684 100644 --- a/regtest/database/RS03i_rediscover_170_roots +++ b/regtest/database/RS03i_rediscover_170_roots @@ -168,4 +168,13 @@ Error correction properties: Data integrity: - medium sectors : 359295 total / 118354 data -* quick mode : image NOT scanned +CalcRS03Layout(): returning cached layout (augmented) +* missing sector : 118354 +* BAD image/file : 1 sectors missing + ... data section : 1 sectors missing; 0 CRC errors + ... crc section : 0 sectors missing + ... ecc section : 0 sectors missing +* Ecc block test : 1408 good, 1 bad; 325 bad sub blocks +- erasure counts : avg = 1.0; worst = 1 per ecc block. +- prognosis : 359295 of 359295 sectors recoverable (100.0%) +FreeCrcBuf - buffer cleared diff --git a/regtest/database/RS03i_rediscover_170_roots-padding2 b/regtest/database/RS03i_rediscover_170_roots-padding2 index d6c04c8..785c46a 100644 --- a/regtest/database/RS03i_rediscover_170_roots-padding2 +++ b/regtest/database/RS03i_rediscover_170_roots-padding2 @@ -347,4 +347,14 @@ Error correction properties: Data integrity: - medium sectors : 359295 total / 112354 data -* quick mode : image NOT scanned +CalcRS03Layout(): returning cached layout (augmented) +* missing sector : 112354 +* missing sectors : 118356 - 118360 +* BAD image/file : 6 sectors missing + ... data section : 1 sectors missing; 0 CRC errors + ... crc section : 5 sectors missing + ... ecc section : 0 sectors missing +* Ecc block test : 1403 good, 6 bad; 2925 bad sub blocks +- erasure counts : avg = 1.0; worst = 1 per ecc block. +- prognosis : 359295 of 359295 sectors recoverable (100.0%) +FreeCrcBuf - buffer cleared diff --git a/regtest/database/RS03i_rediscover_170_roots2 b/regtest/database/RS03i_rediscover_170_roots2 index e3d90a4..7c3024b 100644 --- a/regtest/database/RS03i_rediscover_170_roots2 +++ b/regtest/database/RS03i_rediscover_170_roots2 @@ -346,4 +346,13 @@ Error correction properties: Data integrity: - medium sectors : 359295 total / 118354 data -* quick mode : image NOT scanned +CalcRS03Layout(): returning cached layout (augmented) +* missing sectors : 118354 - 118360 +* BAD image/file : 7 sectors missing + ... data section : 2 sectors missing; 0 CRC errors + ... crc section : 5 sectors missing + ... ecc section : 0 sectors missing +* Ecc block test : 1402 good, 7 bad; 3251 bad sub blocks +- erasure counts : avg = 1.0; worst = 1 per ecc block. +- prognosis : 359295 of 359295 sectors recoverable (100.0%) +FreeCrcBuf - buffer cleared diff --git a/regtest/database/RS03i_rediscover_8_roots b/regtest/database/RS03i_rediscover_8_roots index d2c5bfe..11a940d 100644 --- a/regtest/database/RS03i_rediscover_8_roots +++ b/regtest/database/RS03i_rediscover_8_roots @@ -330,4 +330,13 @@ Error correction properties: Data integrity: - medium sectors : 359295 total / 346612 data -* quick mode : image NOT scanned +CalcRS03Layout(): returning cached layout (augmented) +* missing sector : 346612 +* BAD image/file : 1 sectors missing + ... data section : 1 sectors missing; 0 CRC errors + ... crc section : 0 sectors missing + ... ecc section : 0 sectors missing +* Ecc block test : 1408 good, 1 bad; 324 bad sub blocks +- erasure counts : avg = 1.0; worst = 1 per ecc block. +- prognosis : 359295 of 359295 sectors recoverable (100.0%) +FreeCrcBuf - buffer cleared diff --git a/regtest/database/RS03i_rediscover_8_roots2 b/regtest/database/RS03i_rediscover_8_roots2 index 30a5579..df7dfc0 100644 --- a/regtest/database/RS03i_rediscover_8_roots2 +++ b/regtest/database/RS03i_rediscover_8_roots2 @@ -352,4 +352,13 @@ Error correction properties: Data integrity: - medium sectors : 359295 total / 346612 data -* quick mode : image NOT scanned +CalcRS03Layout(): returning cached layout (augmented) +* missing sectors : 346612 - 346620 +* BAD image/file : 9 sectors missing + ... data section : 2 sectors missing; 0 CRC errors + ... crc section : 7 sectors missing + ... ecc section : 0 sectors missing +* Ecc block test : 1400 good, 9 bad; 8097 bad sub blocks +- erasure counts : avg = 1.0; worst = 1 per ecc block. +- prognosis : 359295 of 359295 sectors recoverable (100.0%) +FreeCrcBuf - buffer cleared diff --git a/regtest/database/RS03i_scan_good_verbose b/regtest/database/RS03i_scan_good_verbose index d24ad56..f342a77 100644 --- a/regtest/database/RS03i_scan_good_verbose +++ b/regtest/database/RS03i_scan_good_verbose @@ -185,3 +185,4 @@ CrcBuf contents, image path none (medium): full: 95b221fd894f6adb6f6e8d3b89583fb6 fp sector: 16; 15c0fd35a0cfa0f83b9ccbd8604c2592 missing crcs: 0 +FreeCrcBuf - buffer cleared diff --git a/regtest/database/RS03i_scan_longer b/regtest/database/RS03i_scan_longer index 93566ee..fcb3077 100644 --- a/regtest/database/RS03i_scan_longer +++ b/regtest/database/RS03i_scan_longer @@ -185,3 +185,4 @@ CrcBuf contents, image path none (medium): full: 95b221fd894f6adb6f6e8d3b89583fb6 fp sector: 16; 15c0fd35a0cfa0f83b9ccbd8604c2592 missing crcs: 0 +FreeCrcBuf - buffer cleared diff --git a/regtest/database/RS03i_scan_missing_header b/regtest/database/RS03i_scan_missing_header index c9ec44b..cd4c8d7 100644 --- a/regtest/database/RS03i_scan_missing_header +++ b/regtest/database/RS03i_scan_missing_header @@ -8050,3 +8050,4 @@ CrcBuf contents, image path none (medium): md5State: invalid fp sector: 16; 33b0c14f099f69c29719b7a181c0241d missing crcs: 0 +FreeCrcBuf - buffer cleared diff --git a/regtest/database/RS03i_scan_missing_header2 b/regtest/database/RS03i_scan_missing_header2 index ed19023..85081e1 100644 --- a/regtest/database/RS03i_scan_missing_header2 +++ b/regtest/database/RS03i_scan_missing_header2 @@ -12589,3 +12589,4 @@ CrcBuf contents, image path none (medium): md5State: invalid fp sector: 16; 33b0c14f099f69c29719b7a181c0241d missing crcs: 176 +FreeCrcBuf - buffer cleared diff --git a/regtest/database/RS03i_scan_missing_header3 b/regtest/database/RS03i_scan_missing_header3 index b84fff7..24481c9 100644 --- a/regtest/database/RS03i_scan_missing_header3 +++ b/regtest/database/RS03i_scan_missing_header3 @@ -16807,3 +16807,4 @@ CrcBuf contents, image path none (medium): md5State: invalid fp sector: 16; 33b0c14f099f69c29719b7a181c0241d missing crcs: 1932 +FreeCrcBuf - buffer cleared diff --git a/regtest/database/RS03i_scan_missing_header4 b/regtest/database/RS03i_scan_missing_header4 index e48517e..f3b3963 100644 --- a/regtest/database/RS03i_scan_missing_header4 +++ b/regtest/database/RS03i_scan_missing_header4 @@ -22582,3 +22582,4 @@ CrcBuf contents, image path none (medium): md5State: invalid fp sector: 16; 33b0c14f099f69c29719b7a181c0241d missing crcs: 237625 +FreeCrcBuf - buffer cleared diff --git a/regtest/database/RS03i_scan_missing_header_no_crcsec b/regtest/database/RS03i_scan_missing_header_no_crcsec index b8f16f3..f0e1c1c 100644 --- a/regtest/database/RS03i_scan_missing_header_no_crcsec +++ b/regtest/database/RS03i_scan_missing_header_no_crcsec @@ -4559,3 +4559,4 @@ CrcBuf contents, image path none (medium): full: e6ba3df8c139263743420793c037218a fp sector: 16; 33b0c14f099f69c29719b7a181c0241d missing crcs: 0 +FreeCrcBuf - buffer cleared diff --git a/regtest/database/RS03i_scan_missing_header_truncated b/regtest/database/RS03i_scan_missing_header_truncated index 88aa7e8..c541b0d 100644 --- a/regtest/database/RS03i_scan_missing_header_truncated +++ b/regtest/database/RS03i_scan_missing_header_truncated @@ -79278,3 +79278,4 @@ CrcBuf contents, image path none (medium): md5State: invalid fp sector: 16; 33b0c14f099f69c29719b7a181c0241d missing crcs: 59471 +FreeCrcBuf - buffer cleared diff --git a/regtest/database/RS03i_scan_random_image b/regtest/database/RS03i_scan_random_image index 5c17b2a..3ed98c8 100644 --- a/regtest/database/RS03i_scan_random_image +++ b/regtest/database/RS03i_scan_random_image @@ -333,3 +333,4 @@ CrcBuf contents, image path none (medium): full: 0b44e05939c6aaff95f16319d1af56ae fp sector: 16; f419de4f37f049faf30316d73d59ba05 missing crcs: 0 +FreeCrcBuf - buffer cleared diff --git a/regtest/database/RS03i_scan_rediscover_170_roots b/regtest/database/RS03i_scan_rediscover_170_roots index ce369d8..0681619 100644 --- a/regtest/database/RS03i_scan_rediscover_170_roots +++ b/regtest/database/RS03i_scan_rediscover_170_roots @@ -15271,3 +15271,4 @@ CrcBuf contents, image path none (medium): md5State: invalid fp sector: 16; 984f18d54c03cfa545ad125cb2c8268d missing crcs: 12 +FreeCrcBuf - buffer cleared diff --git a/regtest/database/RS03i_scan_rediscover_170_roots-padding b/regtest/database/RS03i_scan_rediscover_170_roots-padding index 0488e48..eda8bd9 100644 --- a/regtest/database/RS03i_scan_rediscover_170_roots-padding +++ b/regtest/database/RS03i_scan_rediscover_170_roots-padding @@ -178,3 +178,4 @@ CrcBuf contents, image path none (medium): full: 712407563f7fcf25cef30782e2b180f8 fp sector: 16; e48b61c5d6bc52babba2bb74d2266a1b missing crcs: 0 +FreeCrcBuf - buffer cleared diff --git a/regtest/database/RS03i_scan_rediscover_170_roots-padding2 b/regtest/database/RS03i_scan_rediscover_170_roots-padding2 index 2d49fae..2f148b4 100644 --- a/regtest/database/RS03i_scan_rediscover_170_roots-padding2 +++ b/regtest/database/RS03i_scan_rediscover_170_roots-padding2 @@ -15843,3 +15843,4 @@ CrcBuf contents, image path none (medium): md5State: invalid fp sector: 16; e48b61c5d6bc52babba2bb74d2266a1b missing crcs: 432 +FreeCrcBuf - buffer cleared diff --git a/regtest/database/RS03i_scan_rediscover_170_roots2 b/regtest/database/RS03i_scan_rediscover_170_roots2 index ab12125..6dc0f42 100644 --- a/regtest/database/RS03i_scan_rediscover_170_roots2 +++ b/regtest/database/RS03i_scan_rediscover_170_roots2 @@ -15449,3 +15449,4 @@ CrcBuf contents, image path none (medium): md5State: invalid fp sector: 16; 984f18d54c03cfa545ad125cb2c8268d missing crcs: 432 +FreeCrcBuf - buffer cleared diff --git a/regtest/database/RS03i_scan_rediscover_8_roots b/regtest/database/RS03i_scan_rediscover_8_roots index 32c6a5f..50df36c 100644 --- a/regtest/database/RS03i_scan_rediscover_8_roots +++ b/regtest/database/RS03i_scan_rediscover_8_roots @@ -1167,3 +1167,4 @@ CrcBuf contents, image path none (medium): md5State: invalid fp sector: 16; 412f356de69d45a4645dbe573fa3a03e missing crcs: 10 +FreeCrcBuf - buffer cleared diff --git a/regtest/database/RS03i_scan_rediscover_8_roots2 b/regtest/database/RS03i_scan_rediscover_8_roots2 index aaec218..e7e5d21 100644 --- a/regtest/database/RS03i_scan_rediscover_8_roots2 +++ b/regtest/database/RS03i_scan_rediscover_8_roots2 @@ -1189,3 +1189,4 @@ CrcBuf contents, image path none (medium): md5State: invalid fp sector: 16; 412f356de69d45a4645dbe573fa3a03e missing crcs: 1732 +FreeCrcBuf - buffer cleared diff --git a/regtest/database/RS03i_with_ecc_file_crc_block b/regtest/database/RS03i_with_ecc_file_crc_block index 9c72e33..296017e 100644 --- a/regtest/database/RS03i_with_ecc_file_crc_block +++ b/regtest/database/RS03i_with_ecc_file_crc_block @@ -333,4 +333,6 @@ CalcRS03Layout(): returning cached layout (augmented) ... crc section : 0 sectors missing ... ecc section : 0 sectors missing * Ecc block test : 96 good, 2 bad; 329 bad sub blocks +- erasure counts : avg = 1.0; worst = 1 per ecc block. +- prognosis : 24990 of 24990 sectors recoverable (100.0%) FreeCrcBuf - buffer cleared diff --git a/regtest/database/RS03i_with_ecc_file_header b/regtest/database/RS03i_with_ecc_file_header index 0dacd21..025d189 100644 --- a/regtest/database/RS03i_with_ecc_file_header +++ b/regtest/database/RS03i_with_ecc_file_header @@ -298,4 +298,6 @@ CalcRS03Layout(): returning cached layout (augmented) ... crc section : 0 sectors missing ... ecc section : 0 sectors missing * Ecc block test : 97 good, 1 bad; 5 bad sub blocks +- erasure counts : avg = 1.0; worst = 1 per ecc block. +- prognosis : 24990 of 24990 sectors recoverable (100.0%) FreeCrcBuf - buffer cleared diff --git a/regtest/rs01.bash b/regtest/rs01.bash index 68b1fcc..fefe065 100755 --- a/regtest/rs01.bash +++ b/regtest/rs01.bash @@ -7,9 +7,9 @@ REDUNDANCY="-n normal" MASTERISO=$ISODIR/rs01-master.iso MASTERECC=$ISODIR/rs01-master.ecc -TMPISO=$ISODIR/rs01-tmp.iso -TMPECC=$ISODIR/rs01-tmp.ecc -SIMISO=$ISODIR/rs01-sim.iso +TMPISO=$TMPDIR/rs01-tmp.iso +TMPECC=$TMPDIR/rs01-tmp.ecc +SIMISO=$TMPDIR/rs01-sim.iso CODEC_PREFIX=RS01 @@ -53,7 +53,7 @@ REGTEST_SECTION="Verify tests" # Test good files if try "good image" good; then - run_regtest good "-t" $MASTERISO $MASTERECC + run_regtest good "-t" $MASTERISO $MASTERECC fi # Test good files @@ -382,6 +382,7 @@ if try "read image with ecc (RS01) and create new ecc" ecc_recreate_after_read_r $NEWVER --regtest --debug --set-version $SETVERSION -i$SIMISO -e$TMPECC -c -n 8 >>$LOGFILE 2>&1 + replace_config read-and-create 1 extra_args="--debug --set-version $SETVERSION --sim-cd=$SIMISO --fixed-speed-values" run_regtest ecc_recreate_after_read_rs01 "-r -c $REDUNDANCY --spinup-delay=0 -v" $TMPISO $TMPECC fi @@ -395,19 +396,21 @@ if try "read image with ecc (RS02) and create additional ecc file" ecc_recreate_ $NEWVER --regtest --debug --set-version $SETVERSION -i$SIMISO -c -mRS02 -n$((ISOSIZE+6000)) >>$LOGFILE 2>&1 + replace_config read-and-create 1 extra_args="--debug --set-version $SETVERSION --sim-cd=$SIMISO --fixed-speed-values" run_regtest ecc_recreate_after_read_rs02 "-r -c $REDUNDANCY --spinup-delay=0 -v" $TMPISO $TMPECC fi # Read image with ecc file and create new (other) ecc in the same program call. # Tests whether CRC and ECC information is handed over correctly. -# Note: RS03 information will not be removed from the image. This ist intentional behaviour. +# Note: RS03 information will not be removed from the image. This is intentional behaviour. if try "read image with ecc (RS03i) and create additional ecc file" ecc_recreate_after_read_rs03i; then cp $MASTERISO $SIMISO $NEWVER --regtest --debug --set-version $SETVERSION -i$SIMISO -c -mRS03 -n$((ISOSIZE+6000)) >>$LOGFILE 2>&1 + replace_config read-and-create 1 extra_args="--debug --set-version $SETVERSION --sim-cd=$SIMISO --fixed-speed-values" run_regtest ecc_recreate_after_read_rs03i "-r -c $REDUNDANCY --spinup-delay=0 -v" $TMPISO $TMPECC fi @@ -420,6 +423,7 @@ if try "read image with ecc (RS03f) and create new ecc" ecc_recreate_after_read_ $NEWVER --regtest --debug --set-version $SETVERSION -i$SIMISO -e$TMPECC -c -n 8 -mRS03 -o file >>$LOGFILE 2>&1 + replace_config read-and-create 1 extra_args="--debug --set-version $SETVERSION --sim-cd=$SIMISO --fixed-speed-values" run_regtest ecc_recreate_after_read_rs03f "-r -c $REDUNDANCY --spinup-delay=0 -v" $TMPISO $TMPECC fi @@ -433,6 +437,7 @@ if try "create ecc after completing partial image" ecc_create_after_partial_read $NEWVER --debug -i$TMPISO --erase 1000-1500 >>$LOGFILE 2>&1 + replace_config read-and-create 1 extra_args="--debug --set-version $SETVERSION --sim-cd=$SIMISO --fixed-speed-values" run_regtest ecc_create_after_partial_read "-r -c $REDUNDANCY --spinup-delay=0 -v" $TMPISO $TMPECC fi @@ -440,7 +445,7 @@ fi # Read image with wrong ecc file and create new (other) ecc in the same program call. # Tests whether CRC and ECC information is taken from the read process, # not the wrong ecc file. -# FIXME expected output not in database, disabling for now: +# TODO if false && try "read image with wrong ecc (RS01) and create new ecc" ecc_recreate_after_read_wrong_rs01; then cp $MASTERISO $SIMISO @@ -448,6 +453,7 @@ if false && try "read image with wrong ecc (RS01) and create new ecc" ecc_recrea $NEWVER --debug -i$TMPISO --random-image $((ISOSIZE-777)) --random-seed 1337 >>$LOGFILE 2>&1 $NEWVER --regtest --debug --set-version $SETVERSION -i$TMPISO -e$TMPECC -c -n 8 >>$LOGFILE 2>&1 + replace_config read-and-create 1 extra_args="--debug --set-version $SETVERSION --sim-cd=$SIMISO --fixed-speed-values" run_regtest ecc_recreate_after_read_wrong_rs01 "-r -c $REDUNDANCY --spinup-delay=0 -v" $TMPISO $TMPECC fi @@ -669,11 +675,11 @@ fi if try "scanning image, device access denied" scan_no_device_access; then - touch $ISODIR/sdz - chmod 000 $ISODIR/sdz + touch $TMPDIR/sdz + chmod 000 $TMPDIR/sdz - run_regtest scan_no_device_access "--debug --sim-cd=$MASTERISO --fixed-speed-values --spinup-delay=0 -d $ISODIR/sdz -s" $ISODIR/no.iso $ISODIR/no.ecc - rm -f $ISODIR/sdz + run_regtest scan_no_device_access "--debug --sim-cd=$MASTERISO --fixed-speed-values --spinup-delay=0 -d $TMPDIR/sdz -s" $ISODIR/no.iso $ISODIR/no.ecc + rm -f $TMPDIR/sdz fi # Scan image from defective media without error correction data available @@ -886,11 +892,13 @@ fi # Scan an image with a simulated hardware failure and # --ignore-fatal-sense not set. +# second failure is helpful for testing "ignore once" in the GUI. if try "scanning image with simulated hardware failure" scan_with_hardware_failure; then cp $MASTERISO $SIMISO $NEWVER --debug -i$SIMISO --erase "5000:hardware failure" >>$LOGFILE 2>&1 + $NEWVER --debug -i$SIMISO --erase "6000:hardware failure" >>$LOGFILE 2>&1 extra_args="--debug --sim-cd=$SIMISO --fixed-speed-values" run_regtest scan_with_hardware_failure "--spinup-delay=0 -s" $ISODIR/no.iso $ISODIR/no.ecc @@ -915,6 +923,7 @@ if try "scanning medium containing dead sector markers" scan_medium_with_dsm; th cp $MASTERISO $SIMISO $NEWVER --debug -i$SIMISO --erase "4999:pass as dead sector marker" >>$LOGFILE 2>&1 + $NEWVER --debug -i$SIMISO --erase "5799:pass as dead sector marker" >>$LOGFILE 2>&1 extra_args="--debug --sim-cd=$SIMISO --fixed-speed-values" run_regtest scan_medium_with_dsm "--spinup-delay=0 -s" $ISODIR/no.iso $ISODIR/no.ecc @@ -939,7 +948,7 @@ if try "reading good image in good file" read_no_ecc_good_file; then cp $MASTERISO $TMPISO extra_args="--debug --sim-cd=$SIMISO --fixed-speed-values" - run_regtest read_no_ecc_good_file "--spinup-delay=0 -r" $TMPISO + run_regtest read_no_ecc_good_file "--spinup-delay=0 -r" $TMPISO $ISODIR/no.ecc fi # Read image from non-existant device @@ -955,11 +964,11 @@ fi if try "reading image, device access denied" read_no_device_access; then - touch $ISODIR/sdz - chmod 000 $ISODIR/sdz + touch $TMPDIR/sdz + chmod 000 $TMPDIR/sdz - run_regtest read_no_device_access "--debug --sim-cd=$MASTERISO --fixed-speed-values --spinup-delay=0 -d $ISODIR/sdz -r" $TMPISO $ISODIR/no.ecc - rm -f $ISODIR/sdz + run_regtest read_no_device_access "--debug --sim-cd=$MASTERISO --fixed-speed-values --spinup-delay=0 -d $TMPDIR/sdz -r" $TMPISO $ISODIR/no.ecc + rm -f $TMPDIR/sdz fi # Read image from defective media without error correction data available @@ -1036,7 +1045,7 @@ if try "completing truncated image, defective media, no ecc data" read_truncated run_regtest read_truncated_no_ecc_again "--spinup-delay=0 -j 1 -r" $TMPISO $ISODIR/no.ecc fi -# Complete a truncated image from simulated defective media +# Complete a truncated image from simulated defective media w/ multiple passes if try "completing truncated image, defective media, multipass, no ecc data" read_multipass_no_ecc_again; then @@ -1056,6 +1065,7 @@ fi # Complete a partially read image, but continue with gap between the last # read and the next sector. +# range 15000-end must be entered manually in the GUI. if try "completing truncated image with reading gap, no ecc data" read_with_gap_no_ecc; then @@ -1068,6 +1078,7 @@ if try "completing truncated image with reading gap, no ecc data" read_with_gap_ fi # Read a new image, but only for a partial range. +# range 10000-15000 must be entered manually in the GUI. if try "reading new image with given range, no ecc data" read_new_with_range_no_ecc; then @@ -1223,6 +1234,7 @@ fi # Re-read image with error correction data available # and wrong fingerprint in existing image +# Expected error: "Image file does not match the optical disc." if try "re-reading image, wrong fingerprint, ecc data" read_wrong_fp_with_ecc; then @@ -1231,6 +1243,7 @@ if try "re-reading image, wrong fingerprint, ecc data" read_wrong_fp_with_ecc; t dd if=$MASTERISO of=$TMPISO bs=2048 count=800 >>$LOGFILE 2>&1 $NEWVER --debug -i$TMPISO --byteset 16,100,200 >>$LOGFILE 2>&1 + replace_config confirm-deletion 1 extra_args="--debug --sim-cd=$SIMISO --fixed-speed-values" run_regtest read_wrong_fp_with_ecc "--spinup-delay=0 -r" $TMPISO $MASTERECC fi @@ -1253,6 +1266,8 @@ fi # Read an image for which ecc information is available, # but requiring a newer dvdisaster version. +# CLI mode prints a warning and continues; +# please click "OK" in GUI mode. if try "reading image ecc file requiring a newer dvdisaster version" read_with_incompatible_ecc; then @@ -1270,11 +1285,13 @@ fi # Read an image with a simulated hardware failure and # --ignore-fatal-sense not set. +# Answer "Abort" in the GUI. if try "reading image with simulated hardware failure" read_with_hardware_failure; then cp $MASTERISO $SIMISO $NEWVER --debug -i$SIMISO --erase "5000:hardware failure" >>$LOGFILE 2>&1 + $NEWVER --debug -i$SIMISO --erase "6000:hardware failure" >>$LOGFILE 2>&1 extra_args="--debug --sim-cd=$SIMISO --fixed-speed-values" run_regtest read_with_hardware_failure "--spinup-delay=0 -r" $TMPISO $ISODIR/no.ecc @@ -1287,6 +1304,7 @@ if try "reading image, ignoring simulated hardware failure" read_with_ignored_ha cp $MASTERISO $SIMISO $NEWVER --debug -i$SIMISO --erase "5000:hardware failure" >>$LOGFILE 2>&1 + $NEWVER --debug -i$SIMISO --erase "6000:hardware failure" >>$LOGFILE 2>&1 replace_config ignore-fatal-sense 1 extra_args="--debug --sim-cd=$SIMISO --fixed-speed-values" @@ -1377,7 +1395,7 @@ fi # Rationale: Sectors carrying the unreadable marker are physically # readable and re-reading them multiple times would not change the outcome. # When using the resulting image during a verify or create operation, -# the unreable sectors will be treated correctly. +# the unreadable sectors will be treated correctly. if try "reading medium containing dead sector markers, verbose output" read_medium_with_dsm_verbose; then @@ -1392,6 +1410,10 @@ fi # Complete medium for image containing several uncorrectable dead sector markers # (sector displacement) +# Note that the SIMISO is correct, just the medium file has the defective sectors +# which is not very likely to happen in real world. +# These errors are not reported during reading (as they did not appear in the +# read medium). Verifying the defective image file will uncover them, though. if try "completing image with uncorrectable dead sector markers" read_medium_with_dsm_in_image; then @@ -1409,6 +1431,8 @@ if try "completing image with uncorrectable dead sector markers" read_medium_wit fi # Complete medium for image containing several uncorrectable dead sector markers, verbose output +# not applicable in GUI mode +# See comments for test case above. if try "completing image with uncorrectable dead sector markers, verbose output" read_medium_with_dsm_in_image_verbose; then @@ -1427,6 +1451,7 @@ fi # Complete medium for image containing several uncorrectable dead sector markers # (non matching fingerprint) +# See comments for test cases above. if try "completing image with uncorrectable dead sector markers (2)" read_medium_with_dsm_in_image2; then @@ -1451,6 +1476,7 @@ fi # Complete medium for image containing several uncorrectable dead sector markers, verbose # (non matching fingerprint) +# See comments for test case above. if try "completing image with uncorrectable dead sector markers (2), verbose output" read_medium_with_dsm_in_image2_verbose; then @@ -1504,11 +1530,11 @@ fi if try "reading image, device access denied" adaptive_no_device_access; then - touch $ISODIR/sdz - chmod 000 $ISODIR/sdz + touch $TMPDIR/sdz + chmod 000 $TMPDIR/sdz - run_regtest adaptive_no_device_access "--debug --sim-cd=$MASTERISO --fixed-speed-values --spinup-delay=0 -d $ISODIR/sdz -r --adaptive-read" $TMPISO $ISODIR/no.ecc - rm -f $ISODIR/sdz + run_regtest adaptive_no_device_access "--debug --sim-cd=$MASTERISO --fixed-speed-values --spinup-delay=0 -d $TMPDIR/sdz -r --adaptive-read" $TMPISO $ISODIR/no.ecc + rm -f $TMPDIR/sdz fi # Read image from defective media without error correction data available diff --git a/regtest/rs02.bash b/regtest/rs02.bash index 270077d..73665ae 100755 --- a/regtest/rs02.bash +++ b/regtest/rs02.bash @@ -7,9 +7,10 @@ ECCSIZE=35000 REAL_ECCSIZE=34932 MASTERISO=$ISODIR/rs02-master.iso -TMPISO=$ISODIR/rs02-tmp.iso -SIMISO=$ISODIR/rs02-sim.iso -TMPECC=$ISODIR/rs02-tmp.ecc # rs02 augmented image wrapped by ecc file +TMPISO=$TMPDIR/rs02-tmp.iso +SIMISO=$TMPDIR/rs02-sim.iso +TMPECC=$TMPDIR/rs02-tmp.ecc # rs02 augmented image wrapped by ecc file +NO_FILE=$TMPDIR/none.file ISO_PLUS137=$ISODIR/rs02-plus137.iso @@ -48,7 +49,7 @@ REGTEST_SECTION="Strip tests" if try "strip ECC from augmented image" strip_ecc; then cp $MASTERISO $TMPISO - run_regtest strip_ecc "-v --strip" $TMPISO + run_regtest strip_ecc "-v --strip" $TMPISO $NO_FILE fi # Strip ECC from a non-augmented image @@ -57,7 +58,7 @@ if try "strip ECC from a non-augmented image" strip_ecc_not; then cp $MASTERISO $TMPISO $NEWVER -i$TMPISO --strip >>$LOGFILE 2>&1 - run_regtest strip_ecc_not "-v --strip" $TMPISO + run_regtest strip_ecc_not "-v --strip" $TMPISO $NO_FILE fi ### Verification tests @@ -67,19 +68,20 @@ REGTEST_SECTION="Verify tests" # Test good files if try "good image" good; then - run_regtest good "-t -v" $MASTERISO + run_regtest good "-t -v" $MASTERISO $NO_FILE fi # Test good files, quick mode +# n.a. for GUI mode if try "good image, quick test" good_quick; then - run_regtest good_quick "-tq" $MASTERISO + run_regtest good_quick "-tq" $MASTERISO $NO_FILE fi # Test with non-existing image if try "missing image" no_image; then - run_regtest no_image "-t" $ISODIR/no.iso + run_regtest no_image "-t" $ISODIR/no.iso $NO_FILE fi # Image is truncated by 5 sectors @@ -89,7 +91,7 @@ if try "truncated image" truncated; then NEWSIZE=$((REAL_ECCSIZE-5)) $NEWVER -i$TMPISO --debug --truncate=$NEWSIZE >>$LOGFILE 2>&1 - run_regtest truncated "-t" $TMPISO + run_regtest truncated "-t" $TMPISO $NO_FILE fi # Image contains 1 extra sector @@ -98,7 +100,7 @@ if try "image with one extra sector" plus1; then cp $MASTERISO $TMPISO dd if=/dev/zero count=1 bs=2048 >>$TMPISO 2>/dev/null - run_regtest plus1 "-t" $TMPISO + run_regtest plus1 "-t" $TMPISO $NO_FILE fi # Image contains 17 extra sectors @@ -107,7 +109,7 @@ if try "image with 17 extra sectors" plus17; then cp $MASTERISO $TMPISO dd if=/dev/zero count=17 bs=2048 >>$TMPISO 2>/dev/null - run_regtest plus17 "-t" $TMPISO + run_regtest plus17 "-t" $TMPISO $NO_FILE fi # Image contains one header w/o cookie @@ -116,7 +118,7 @@ if try "image with defective header" bad_header; then cp $MASTERISO $TMPISO $NEWVER -i$TMPISO --debug --byteset 30592,1,1 >>$LOGFILE 2>&1 - run_regtest bad_header "-t" $TMPISO + run_regtest bad_header "-t" $TMPISO $NO_FILE fi # Image contains one header with CRC errors and one w/o cookie @@ -126,7 +128,7 @@ if try "image with defective headers" bad_headers; then $NEWVER -i$TMPISO --debug --byteset 30592,1,1 >>$LOGFILE 2>&1 $NEWVER -i$TMPISO --debug --byteset 31488,100,1 >>$LOGFILE 2>&1 - run_regtest bad_headers "-t" $TMPISO + run_regtest bad_headers "-t" $TMPISO $NO_FILE fi # Image contains 3 missing headers and two with CRC errors @@ -139,7 +141,7 @@ if try "image with defective headers" missing_headers; then $NEWVER -i$TMPISO --debug --byteset 30592,100,1 >>$LOGFILE 2>&1 $NEWVER -i$TMPISO --debug --byteset 31488,100,1 >>$LOGFILE 2>&1 - run_regtest missing_headers "-t" $TMPISO + run_regtest missing_headers "-t" $TMPISO $NO_FILE fi # Image contains 2 rows of missing sectors and a single one @@ -151,29 +153,29 @@ if try "image with missing data sectors" missing_data_sectors; then $NEWVER -i$TMPISO --debug --erase 21230 >>$LOGFILE 2>&1 $NEWVER -i$TMPISO --debug --erase 22450-22457 >>$LOGFILE 2>&1 - run_regtest missing_data_sectors "-t" $TMPISO + run_regtest missing_data_sectors "-t" $TMPISO $NO_FILE fi # Image contains 1 row of missing sectors and a single one -# in the crc portion +# (both) in the crc portion if try "image with missing crc sectors" missing_crc_sectors; then cp $MASTERISO $TMPISO $NEWVER -i$TMPISO --debug --erase 30020-30030 >>$LOGFILE 2>&1 $NEWVER -i$TMPISO --debug --erase 30034 >>$LOGFILE 2>&1 - run_regtest missing_crc_sectors "-t" $TMPISO + run_regtest missing_crc_sectors "-t" $TMPISO $NO_FILE fi # Image contains 1 row of missing sectors and a single one -# in the ecc portion +# (both) in the ecc portion if try "image with missing ecc sectors" missing_ecc_sectors; then cp $MASTERISO $TMPISO $NEWVER -i$TMPISO --debug --erase 32020-32030 >>$LOGFILE 2>&1 $NEWVER -i$TMPISO --debug --erase 33034 >>$LOGFILE 2>&1 - run_regtest missing_ecc_sectors "-t" $TMPISO + run_regtest missing_ecc_sectors "-t" $TMPISO $NO_FILE fi # Image contains bad byte in the data section @@ -182,7 +184,7 @@ if try "image with bad data byte" data_bad_byte; then cp $MASTERISO $TMPISO $NEWVER -i$TMPISO --debug --byteset 1235,50,10 >>$LOGFILE 2>&1 - run_regtest data_bad_byte "-t" $TMPISO + run_regtest data_bad_byte "-t" $TMPISO $NO_FILE fi # Image contains bad byte in the CRC section @@ -191,7 +193,7 @@ if try "image with bad crc byte" crc_bad_byte; then cp $MASTERISO $TMPISO $NEWVER -i$TMPISO --debug --byteset 30020,50,10 >>$LOGFILE 2>&1 - run_regtest crc_bad_byte "-t" $TMPISO + run_regtest crc_bad_byte "-t" $TMPISO $NO_FILE fi # Image contains bad byte in the ecc section @@ -200,13 +202,13 @@ if try "image with bad ecc byte" ecc_bad_byte; then cp $MASTERISO $TMPISO $NEWVER -i$TMPISO --debug --byteset 33100,50,10 >>$LOGFILE 2>&1 - run_regtest ecc_bad_byte "-t" $TMPISO + run_regtest ecc_bad_byte "-t" $TMPISO $NO_FILE fi # Image is good with ECC header following directly after the user data if try "good image, no ECC offset" good_0_offset; then - run_regtest good_0_offset "-v -t" $MASTERISO + run_regtest good_0_offset "-v -t" $MASTERISO $NO_FILE fi # Image is good with ECC header following after the user data with 150 sectors padding @@ -218,7 +220,7 @@ if try "good image, 150 sectors ECC offset" good_150_offset; then $NEWVER --debug -i$TMPISO --byteset 16,87,198 >>$LOGFILE 2>&1 $NEWVER --regtest --debug --set-version $SETVERSION -i$TMPISO -mRS02 -n$ECCSIZE -c >>$LOGFILE 2>&1 - run_regtest good_150_offset "-v -t" $TMPISO + run_regtest good_150_offset "-v -t" $TMPISO $NO_FILE fi # Image misses the first header. @@ -227,7 +229,7 @@ if try "master header missing" bad_master; then cp $MASTERISO $TMPISO $NEWVER --debug -i$TMPISO --erase 30000 >>$LOGFILE 2>&1 - run_regtest bad_master "-v -t" $TMPISO + run_regtest bad_master "-v -t" $TMPISO $NO_FILE fi # Test the pre-0.79.5 header modulo glitch correction @@ -241,7 +243,7 @@ if try "header modulo glitch, post 0.79.5 style hdr" modulo_glitch; then $NEWVER --regtest --debug --set-version $SETVERSION -i$HMGISO -mRS02 -c >>$LOGFILE 2>&1 fi - run_regtest modulo_glitch "-v -t" $HMGISO + run_regtest modulo_glitch "-v -t" $HMGISO $NO_FILE fi # Test the pre-0.79.5 header modulo glitch correction @@ -272,7 +274,7 @@ if try "header modulo glitch, old style, complete img" modulo_glitch2; then $NEWVER --debug -i $TMPISO --byteset $header,135,0 >>$LOGFILE 2>&1 done - run_regtest modulo_glitch2 "-v -t" $TMPISO + run_regtest modulo_glitch2 "-v -t" $TMPISO $NO_FILE fi # Test the pre-0.79.5 header modulo glitch correction @@ -306,7 +308,7 @@ if try "header modulo glitch, old style, truncated img" modulo_glitch3; then done $NEWVER --debug -i $TMPISO --truncate=357520 >>$LOGFILE 2>&1 - run_regtest modulo_glitch3 "-v -t" $TMPISO + run_regtest modulo_glitch3 "-v -t" $TMPISO $NO_FILE fi # Test the pre-0.79.5 header modulo glitch correction @@ -346,7 +348,7 @@ if try "header modulo glitch, old style, truncated img, missing ref secs" modulo $NEWVER --debug -i $TMPISO --erase $sector >>$LOGFILE 2>&1 done - run_regtest modulo_glitch4 "-v -t" $TMPISO + run_regtest modulo_glitch4 "-v -t" $TMPISO $NO_FILE fi # Augmented image is protected by an outer RS01 error correction file @@ -404,7 +406,7 @@ if try "image with uncorrectable dead sector markers" uncorrectable_dsm_in_image $NEWVER --debug -i$TMPISO --erase 4411 >>$LOGFILE 2>&1 $NEWVER --debug -i$TMPISO --byteset 4411,353,53 >>$LOGFILE 2>&1 // displaced from sector 4511 - run_regtest uncorrectable_dsm_in_image "-t" $TMPISO + run_regtest uncorrectable_dsm_in_image "-t" $TMPISO $NO_FILE fi # Test image containing several uncorrectable dead sector markers, verbose output @@ -419,7 +421,7 @@ if try "image with uncorrectable dead sector markers, verbose output" uncorrecta $NEWVER --debug -i$TMPISO --erase 4411 >>$LOGFILE 2>&1 $NEWVER --debug -i$TMPISO --byteset 4411,353,53 >>$LOGFILE 2>&1 // displaced from sector 4511 - run_regtest uncorrectable_dsm_in_image_verbose "-t -v" $TMPISO + run_regtest uncorrectable_dsm_in_image_verbose "-t -v" $TMPISO $NO_FILE fi # Test image containing several uncorrectable dead sector markers @@ -441,7 +443,7 @@ if try "image with uncorrectable dead sector markers (2)" uncorrectable_dsm_in_i $NEWVER --debug -i$TMPISO --byteset 4411,556,32 >>$LOGFILE 2>&1 // changed label $NEWVER --debug -i$TMPISO --byteset 4411,557,50 >>$LOGFILE 2>&1 // changed label - run_regtest uncorrectable_dsm_in_image2 "-t" $TMPISO + run_regtest uncorrectable_dsm_in_image2 "-t" $TMPISO $NO_FILE fi # Test image containing several uncorrectable dead sector markers, verbose @@ -463,7 +465,7 @@ if try "image with uncorrectable dead sector markers (2), verbose output" uncorr $NEWVER --debug -i$TMPISO --byteset 4411,556,32 >>$LOGFILE 2>&1 // changed label $NEWVER --debug -i$TMPISO --byteset 4411,557,50 >>$LOGFILE 2>&1 // changed label - run_regtest uncorrectable_dsm_in_image2_verbose "-t -v" $TMPISO + run_regtest uncorrectable_dsm_in_image2_verbose "-t -v" $TMPISO $NO_FILE fi # Testimage containing several uncorrectable dead sector markers in the CRC section @@ -486,7 +488,7 @@ if try "image with uncorrectable dead sector markers (3)" uncorrectable_dsm_in_i $NEWVER --debug -i$TMPISO --byteset 30032,556,32 >>$LOGFILE 2>&1 // changed label $NEWVER --debug -i$TMPISO --byteset 30032,557,50 >>$LOGFILE 2>&1 // changed label - run_regtest uncorrectable_dsm_in_image3 "-t" $TMPISO + run_regtest uncorrectable_dsm_in_image3 "-t" $TMPISO $NO_FILE fi @@ -502,18 +504,17 @@ if try "augmented image creation" ecc_create; then replace_config method-name RS02 replace_config medium-size 35000 extra_args="--debug --set-version $SETVERSION" - run_regtest ecc_create "-mRS02 -n$ECCSIZE -c" $TMPISO + run_regtest ecc_create "-mRS02 -n$ECCSIZE -c" $TMPISO $NO_FILE fi # Create with missing image if try "ecc creating with missing image" ecc_missing_image; then - NO_FILE=$ISODIR/none.iso replace_config method-name RS02 replace_config medium-size 35000 extra_args="--debug --set-version $SETVERSION" - run_regtest ecc_missing_image "-mRS02 -n$ECCSIZE -c" $NO_FILE + run_regtest ecc_missing_image "-mRS02 -n$ECCSIZE -c" $NO_FILE $NO_FILE fi # Create with no read permission on image @@ -525,7 +526,7 @@ if try "ecc creating with no read permission" ecc_no_read_perm; then replace_config method-name RS02 replace_config medium-size 35000 extra_args="--debug --set-version $SETVERSION" - run_regtest ecc_no_read_perm "-mRS02 -n$ECCSIZE -c" $TMPISO + run_regtest ecc_no_read_perm "-mRS02 -n$ECCSIZE -c" $TMPISO $NO_FILE fi # Create with no write permission on image @@ -537,7 +538,7 @@ if try "ecc creating with no write permission" ecc_no_write_perm; then replace_config method-name RS02 replace_config medium-size 35000 extra_args="--debug --set-version $SETVERSION" - run_regtest ecc_no_write_perm "-mRS02 -n$ECCSIZE -c" $TMPISO + run_regtest ecc_no_write_perm "-mRS02 -n$ECCSIZE -c" $TMPISO $NO_FILE fi # Create with already RS02-augmented image @@ -548,7 +549,7 @@ if try "ecc creating from RS02-augmented image" ecc_from_rs02; then replace_config method-name RS02 replace_config medium-size 35000 extra_args="--debug --set-version $SETVERSION" - run_regtest ecc_from_rs02 "-mRS02 -n$ECCSIZE -c" $TMPISO + run_regtest ecc_from_rs02 "-mRS02 -n$ECCSIZE -c" $TMPISO $NO_FILE fi # Create with already RS03-augmented image @@ -560,7 +561,7 @@ if try "ecc creating from RS03-augmented image" ecc_from_rs03; then replace_config method-name RS02 replace_config medium-size 35000 extra_args="--debug --set-version $SETVERSION" - run_regtest ecc_from_rs03 "-mRS02 -n$ECCSIZE -c" $TMPISO + run_regtest ecc_from_rs03 "-mRS02 -n$ECCSIZE -c" $TMPISO $NO_FILE fi # Create with already RS02-augmented image having a larger redundancy @@ -572,7 +573,7 @@ if try "ecc creating from RS02-augmented image w/ higher red." ecc_from_larger_r replace_config method-name RS02 replace_config medium-size 35000 extra_args="--debug --set-version $SETVERSION" - run_regtest ecc_from_larger_rs02 "-mRS02 -n$ECCSIZE -c" $TMPISO + run_regtest ecc_from_larger_rs02 "-mRS02 -n$ECCSIZE -c" $TMPISO $NO_FILE fi # Create with already RS02-augmented image of a non-2048 multiple size @@ -586,7 +587,7 @@ if try "ecc creating from RS02-augmented image w/ non-block size" ecc_from_rs02_ replace_config medium-size 35000 replace_config examine-rs02 1 extra_args="--debug --set-version $SETVERSION" - run_regtest ecc_from_rs02_non_blocksize "-mRS02 -n$ECCSIZE -c" $TMPISO + run_regtest ecc_from_rs02_non_blocksize "-mRS02 -n$ECCSIZE -c" $TMPISO $NO_FILE fi # Create with already RS03-augmented image of a non-2048 multiple size @@ -596,8 +597,11 @@ if try "ecc creating from RS03-augmented image w/ non-block size" ecc_from_rs03_ dd if="$RNDSEQ" count=1 bs=137 >>$TMPISO 2>/dev/null $NEWVER --debug --set-version $SETVERSION -i$TMPISO -mRS03 -n$ECCSIZE -c >/dev/null 2>&1 + replace_config method-name RS02 + replace_config medium-size 35000 + replace_config examine-rs02 1 extra_args="--debug --set-version $SETVERSION" - run_regtest ecc_from_rs03_non_blocksize "-mRS02 -n$ECCSIZE -c -a RS02" $TMPISO + run_regtest ecc_from_rs03_non_blocksize "-mRS02 -n$ECCSIZE -c -a RS02" $TMPISO $NO_FILE fi # Create with already RS02-augmented image of a non-2048 multiple size, larger redundancy. @@ -611,7 +615,7 @@ if try "ecc creating from RS02-augmented image w/ non-block size, larger red." e replace_config medium-size 35000 replace_config examine-rs02 1 extra_args="--debug --set-version $SETVERSION" - run_regtest ecc_from_larger_rs02_non_blocksize "-mRS02 -n$ECCSIZE -c" $TMPISO + run_regtest ecc_from_larger_rs02_non_blocksize "-mRS02 -n$ECCSIZE -c" $TMPISO $NO_FILE fi # Create with size not being a multiple of 2048 @@ -623,7 +627,7 @@ if try "ecc creating from non-blocksize image" ecc_non_blocksize; then replace_config method-name RS02 replace_config medium-size 35000 extra_args="--debug --set-version $SETVERSION" - run_regtest ecc_non_blocksize "-mRS02 -n$ECCSIZE -c" $TMPISO + run_regtest ecc_non_blocksize "-mRS02 -n$ECCSIZE -c" $TMPISO $NO_FILE fi # Create test image with unreadable sectors @@ -635,25 +639,28 @@ if try "ecc creating with unreadable sectors" ecc_missing_sectors; then replace_config method-name RS02 replace_config medium-size 35000 extra_args="--debug --set-version $SETVERSION" - run_regtest ecc_missing_sectors "-mRS02 -n$ECCSIZE -c" $TMPISO + run_regtest ecc_missing_sectors "-mRS02 -n$ECCSIZE -c" $TMPISO $NO_FILE fi # Read image and augment with RS02 in one pass. # Make sure that checksums are handed over correctly between reading # and error correction creation. +# Note: GUI mode will NOT automatically augment the image. if try "ecc creating after reading image" ecc_create_after_read; then $NEWVER --debug -i$SIMISO --random-image $ISOSIZE >>$LOGFILE 2>&1 replace_config method-name RS02 replace_config medium-size 35000 - replace_config read-and-create 1 + replace_config read-and-create 1 # intentionally ignored + replace_config last-ecc $TMPDIR/no.ecc extra_args="--debug --sim-cd=$SIMISO --fixed-speed-values --set-version $SETVERSION" - run_regtest ecc_create_after_read "-r --spinup-delay=0 -mRS02 -n$ECCSIZE -c" $TMPISO + run_regtest ecc_create_after_read "-r --spinup-delay=0 -mRS02 -n$ECCSIZE -c -v" $TMPISO $NO_FILE fi # Complete image and augment with RS02 in one pass. # In that case cached checksums can not be used. +# Note: GUI mode will NOT automatically augment the image. if try "ecc creating after completing image" ecc_create_after_partial_read; then $NEWVER --debug -i$SIMISO --random-image $ISOSIZE >>$LOGFILE 2>&1 @@ -663,8 +670,9 @@ if try "ecc creating after completing image" ecc_create_after_partial_read; then replace_config method-name RS02 replace_config medium-size 35000 + replace_config verbose 1 extra_args="--debug --sim-cd=$SIMISO --fixed-speed-values --set-version $SETVERSION" - run_regtest ecc_create_after_partial_read "-r --spinup-delay=0 -mRS02 -n$ECCSIZE -c" $TMPISO + run_regtest ecc_create_after_partial_read "-r --spinup-delay=0 -mRS02 -n$ECCSIZE -c -v" $TMPISO $TMPDIR/no.ecc fi # Read image with ecc file and create new (other) ecc in the same program call. @@ -676,8 +684,9 @@ if try "read image with ecc (RS01) and create new ecc" ecc_recreate_after_read_r replace_config method-name RS02 replace_config medium-size 35000 + replace_config verbose 1 extra_args="--debug --sim-cd=$SIMISO --fixed-speed-values --set-version $SETVERSION" - run_regtest ecc_recreate_after_read_rs01 "-r --spinup-delay=0 -mRS02 -n$ECCSIZE -c" $TMPISO $TMPECC + run_regtest ecc_recreate_after_read_rs01 "-r --spinup-delay=0 -mRS02 -n$ECCSIZE -c -v" $TMPISO $TMPECC fi # Read image with ecc file and create new (other) ecc in the same program call. @@ -689,8 +698,9 @@ if try "read image with ecc (RS02) and create new ecc" ecc_recreate_after_read_r replace_config method-name RS02 replace_config medium-size 35000 + replace_config verbose 1 extra_args="--debug --sim-cd=$SIMISO --fixed-speed-values --set-version $SETVERSION" - run_regtest ecc_recreate_after_read_rs02 "-r --spinup-delay=0 -mRS02 -n$ECCSIZE -c" $TMPISO + run_regtest ecc_recreate_after_read_rs02 "-r --spinup-delay=0 -mRS02 -n$ECCSIZE -c -v" $TMPISO $TMPDIR/no.ecc fi # Read image with ecc file and create new (other) ecc in the same program call. @@ -702,12 +712,15 @@ if try "read image with ecc (RS03i) and create new ecc" ecc_recreate_after_read_ replace_config method-name RS02 replace_config medium-size 35000 + replace_config verbose 1 extra_args="--debug --sim-cd=$SIMISO --fixed-speed-values --set-version $SETVERSION" - run_regtest ecc_recreate_after_read_rs03i "-r --spinup-delay=0 -mRS02 -n$ECCSIZE -c" $TMPISO + run_regtest ecc_recreate_after_read_rs03i "-r --spinup-delay=0 -mRS02 -n$ECCSIZE -c" $TMPISO $NO_FILE fi # Read image with ecc file and create new (other) ecc in the same program call. # Tests whether CRC and ECC information is handed over correctly. +# Note: Before doing a verifiy the GUI, remove the ecc file from the file box. +# Otherwise you will compare against the old ecc file and get bad image results. if try "read image with ecc (RS03f) and create new ecc" ecc_recreate_after_read_rs03f; then $NEWVER --debug -i$SIMISO --random-image $ISOSIZE >>$LOGFILE 2>&1 @@ -715,6 +728,7 @@ if try "read image with ecc (RS03f) and create new ecc" ecc_recreate_after_read_ replace_config method-name RS02 replace_config medium-size 35000 + replace_config verbose 1 extra_args="--debug --sim-cd=$SIMISO --fixed-speed-values --set-version $SETVERSION" run_regtest ecc_recreate_after_read_rs03f "-r --spinup-delay=0 -mRS02 -n$ECCSIZE -c" $TMPISO $TMPECC fi @@ -729,7 +743,7 @@ if try "trying fix with no read permission" fix_no_read_perm; then $NEWVER --debug -i$TMPISO --random-image $ISOSIZE >>$LOGFILE 2>&1 chmod 000 $TMPISO - run_regtest fix_no_read_perm "--debug --set-version $SETVERSION -f" $TMPISO + run_regtest fix_no_read_perm "--debug --set-version $SETVERSION -f" $TMPISO $NO_FILE fi # Fix with no write permission on image @@ -738,7 +752,7 @@ if try "trying fix with no write permission" fix_no_write_perm; then $NEWVER --debug -i$TMPISO --random-image $ISOSIZE >>$LOGFILE 2>&1 chmod 400 $TMPISO - run_regtest fix_no_write_perm "--debug --set-version $SETVERSION -f" $TMPISO + run_regtest fix_no_write_perm "--debug --set-version $SETVERSION -f" $TMPISO $NO_FILE fi # Fix already good image @@ -746,7 +760,7 @@ fi if try "trying fix with good image" fix_good_image; then cp $MASTERISO $TMPISO - run_regtest fix_good_image "--debug --set-version $SETVERSION -f" $TMPISO + run_regtest fix_good_image "--debug --set-version $SETVERSION -f" $TMPISO $NO_FILE fi # Fix image containing 137 extra bytes @@ -757,7 +771,7 @@ if try "trying to fix image with 137 extra bytes" fix_image_plus137; then cp $ISO_PLUS137 $TMPISO $NEWVER -i$TMPISO --debug --erase 17000 >>$LOGFILE 2>&1 - run_regtest fix_image_plus137 "-f" $TMPISO + run_regtest fix_image_plus137 "-f" $TMPISO $NO_FILE fi # Fix image containing one error in the 137 extra bytes and another @@ -771,7 +785,7 @@ if try "trying to fix image with error in 137 extra bytes" fix_image_error_in_pl $NEWVER -i$TMPISO --debug --byteset 30000,111,111 >>$LOGFILE 2>&1 $NEWVER -i$TMPISO --debug --byteset 30000,500,123 >>$LOGFILE 2>&1 - run_regtest fix_image_error_in_plus137 "-f" $TMPISO + run_regtest fix_image_error_in_plus137 "-f" $TMPISO $NO_FILE fi # Fix a truncated image @@ -781,7 +795,7 @@ if try "trying fix with truncated image" fix_truncated_image; then cp $MASTERISO $TMPISO $NEWVER --debug -i$TMPISO --truncate=$TRUNC_SIZE >>$LOGFILE 2>&1 - run_regtest fix_truncated_image "--debug --set-version $SETVERSION -f" $TMPISO + run_regtest fix_truncated_image "--debug --set-version $SETVERSION -f" $TMPISO $NO_FILE fi # Fix an image with a few trailing bytes @@ -790,7 +804,7 @@ if try "trying fix with trailing bytes" fix_trailing_bytes; then cp $MASTERISO $TMPISO echo "some trailing garbage appended for testing" >>$TMPISO - run_regtest fix_trailing_bytes "--debug --set-version $SETVERSION -f" $TMPISO + run_regtest fix_trailing_bytes "--debug --set-version $SETVERSION -f" $TMPISO $NO_FILE fi # Fix an image with trailing garbage (TAO case) @@ -799,7 +813,7 @@ if try "trying fix with trailing garbage (TAO case)" fix_trailing_tao; then cp $MASTERISO $TMPISO dd if=/dev/zero count=2 bs=2048 >>$TMPISO 2>/dev/null - run_regtest fix_trailing_tao "--debug --set-version $SETVERSION -f" $TMPISO + run_regtest fix_trailing_tao "--debug --set-version $SETVERSION -f" $TMPISO $NO_FILE fi # Fix an image with trailing garbage (general case), without doing anything @@ -808,7 +822,7 @@ if try "trying fix with trailing garbage (general case)" fix_trailing_garbage; t cp $MASTERISO $TMPISO dd if=/dev/zero count=23 bs=2048 >>$TMPISO 2>/dev/null - run_regtest fix_trailing_garbage "--debug --set-version $SETVERSION -f" $TMPISO + run_regtest fix_trailing_garbage "--debug --set-version $SETVERSION -f" $TMPISO $NO_FILE fi # Fix an image with trailing garbage (general case), with --truncate @@ -817,7 +831,7 @@ if try "trying fix with trailing garbage with --truncate" fix_trailing_garbage2; cp $MASTERISO $TMPISO dd if=/dev/zero count=23 bs=2048 >>$TMPISO 2>/dev/null - run_regtest fix_trailing_garbage2 "--debug --set-version $SETVERSION -f --truncate" $TMPISO + run_regtest fix_trailing_garbage2 "--debug --set-version $SETVERSION -f --truncate" $TMPISO $NO_FILE fi # Image contains bad master header @@ -826,7 +840,7 @@ if try "trying fix with missing master header" fix_bad_master; then cp $MASTERISO $TMPISO $NEWVER -i$TMPISO --debug --erase 30000 >>$LOGFILE 2>&1 - run_regtest fix_bad_master "--debug --set-version $SETVERSION -f" $TMPISO + run_regtest fix_bad_master "--debug --set-version $SETVERSION -f" $TMPISO $NO_FILE fi # Image contains one header w/o cookie @@ -835,7 +849,7 @@ if try "image with defective header" fix_bad_header; then cp $MASTERISO $TMPISO $NEWVER -i$TMPISO --debug --byteset 30592,1,1 >>$LOGFILE 2>&1 - run_regtest fix_bad_header "--debug --set-version $SETVERSION -f" $TMPISO + run_regtest fix_bad_header "--debug --set-version $SETVERSION -f" $TMPISO $NO_FILE fi # Image contains one header with CRC errors and one w/o cookie @@ -845,7 +859,7 @@ if try "image with defective headers" fix_bad_headers; then $NEWVER -i$TMPISO --debug --byteset 30592,1,1 >>$LOGFILE 2>&1 $NEWVER -i$TMPISO --debug --byteset 31488,100,1 >>$LOGFILE 2>&1 - run_regtest fix_bad_headers "--debug --set-version $SETVERSION -f" $TMPISO + run_regtest fix_bad_headers "--debug --set-version $SETVERSION -f" $TMPISO $NO_FILE fi # Image contains 3 missing headers and two with CRC errors @@ -858,7 +872,7 @@ if try "image with defective headers" fix_missing_headers; then $NEWVER -i$TMPISO --debug --byteset 30592,100,1 >>$LOGFILE 2>&1 $NEWVER -i$TMPISO --debug --byteset 31488,100,1 >>$LOGFILE 2>&1 - run_regtest fix_missing_headers "--debug --set-version $SETVERSION -f" $TMPISO + run_regtest fix_missing_headers "--debug --set-version $SETVERSION -f" $TMPISO $NO_FILE fi # Image contains 2 rows of missing sectors and a single one @@ -870,7 +884,7 @@ if try "image with missing data sectors" fix_missing_data_sectors; then $NEWVER -i$TMPISO --debug --erase 21230 >>$LOGFILE 2>&1 $NEWVER -i$TMPISO --debug --erase 22450-22457 >>$LOGFILE 2>&1 - run_regtest fix_missing_data_sectors "--debug --set-version $SETVERSION -f" $TMPISO + run_regtest fix_missing_data_sectors "--debug --set-version $SETVERSION -f" $TMPISO $NO_FILE fi # Image contains 1 row of missing sectors and a single one @@ -881,7 +895,7 @@ if try "image with missing crc sectors" fix_missing_crc_sectors; then $NEWVER -i$TMPISO --debug --erase 30020-30030 >>$LOGFILE 2>&1 $NEWVER -i$TMPISO --debug --erase 30034 >>$LOGFILE 2>&1 - run_regtest fix_missing_crc_sectors "--debug --set-version $SETVERSION -f" $TMPISO + run_regtest fix_missing_crc_sectors "--debug --set-version $SETVERSION -f" $TMPISO $NO_FILE fi # Image contains 1 row of missing sectors and a single one @@ -892,11 +906,11 @@ if try "image with missing ecc sectors" fix_missing_ecc_sectors; then $NEWVER -i$TMPISO --debug --erase 32020-32030 >>$LOGFILE 2>&1 $NEWVER -i$TMPISO --debug --erase 33034 >>$LOGFILE 2>&1 - run_regtest fix_missing_ecc_sectors "--debug --set-version $SETVERSION -f" $TMPISO + run_regtest fix_missing_ecc_sectors "--debug --set-version $SETVERSION -f" $TMPISO $NO_FILE fi # Image is large and contains errors in all three sections. -# We need this test to check whether we correction works +# We need this test to check whether the correction works # when multiple sectors are cached; the default test file # is too small for such tests. @@ -907,7 +921,7 @@ if try "large image with missing sectors" fix_large_file; then $NEWVER -i$TMPISO --debug --erase 223600-223605 >>$LOGFILE 2>&1 $NEWVER -i$TMPISO --debug --erase 279000-279007 >>$LOGFILE 2>&1 - run_regtest fix_large_file "-f" $TMPISO + run_regtest fix_large_file "-f" $TMPISO $NO_FILE fi # Image contains bad byte in the data section @@ -916,7 +930,7 @@ if try "image with bad data byte" fix_data_bad_byte; then cp $MASTERISO $TMPISO $NEWVER -i$TMPISO --debug --byteset 1235,50,10 >>$LOGFILE 2>&1 - run_regtest fix_data_bad_byte "--debug --set-version $SETVERSION -f" $TMPISO + run_regtest fix_data_bad_byte "--debug --set-version $SETVERSION -f" $TMPISO $NO_FILE fi # Image contains bad byte in the CRC section @@ -925,7 +939,7 @@ if try "image with bad crc byte" fix_crc_bad_byte; then cp $MASTERISO $TMPISO $NEWVER -i$TMPISO --debug --byteset 30020,50,10 >>$LOGFILE 2>&1 - run_regtest fix_crc_bad_byte "--debug --set-version $SETVERSION -f" $TMPISO + run_regtest fix_crc_bad_byte "--debug --set-version $SETVERSION -f" $TMPISO $NO_FILE fi # Image contains bad byte in the ecc section @@ -934,7 +948,7 @@ if try "image with bad ecc byte" fix_ecc_bad_byte; then cp $MASTERISO $TMPISO $NEWVER -i$TMPISO --debug --byteset 33100,50,10 >>$LOGFILE 2>&1 - run_regtest fix_ecc_bad_byte "--debug --set-version $SETVERSION -f" $TMPISO + run_regtest fix_ecc_bad_byte "--debug --set-version $SETVERSION -f" $TMPISO $NO_FILE fi # Image is good with ECC header following directly after the user data @@ -942,12 +956,12 @@ fi if try "good image, no ECC offset" fix_good_0_offset; then cp $MASTERISO $TMPISO - run_regtest fix_good_0_offset "--debug --set-version $SETVERSION -v -f" $TMPISO + run_regtest fix_good_0_offset "--debug --set-version $SETVERSION -v -f" $TMPISO $NO_FILE fi # Image is good with ECC header following after the user data with 150 sectors padding # Setting the VSS size 150 sectors beyond the actual image size is sufficient since -# the codes doesn not really care about the contents of the padding area. +# the codec does not really care about the contents of the padding area. if try "good image, 150 sectors ECC offset" fix_good_150_offset; then $NEWVER --debug -i$TMPISO --random-image $ISOSIZE >>$LOGFILE 2>&1 @@ -955,7 +969,7 @@ if try "good image, 150 sectors ECC offset" fix_good_150_offset; then $NEWVER --debug -i$TMPISO --byteset 16,87,198 >>$LOGFILE 2>&1 $NEWVER --regtest --debug --set-version $SETVERSION -i$TMPISO -mRS02 -n$ECCSIZE -c >>$LOGFILE 2>&1 - run_regtest fix_good_150_offset "--debug --set-version $SETVERSION -v -f" $TMPISO + run_regtest fix_good_150_offset "--debug --set-version $SETVERSION -v -f" $TMPISO $NO_FILE fi # Augmented image is protected by an outer RS01 error correction file @@ -992,7 +1006,7 @@ if try "scanning good image" scan_good; then cp $MASTERISO $SIMISO extra_args="--debug --sim-cd=$SIMISO --fixed-speed-values" - run_regtest scan_good "--spinup-delay=0 -s" $TMPISO + run_regtest scan_good "--spinup-delay=0 -s" $TMPISO $NO_FILE fi # Scan image which is shorter than expected @@ -1002,17 +1016,18 @@ if try "scanning image being shorter than expected" scan_shorter; then $NEWVER --debug -i$SIMISO --truncate=$((REAL_ECCSIZE-44)) >>$LOGFILE 2>&1 extra_args="--debug --sim-cd=$SIMISO --fixed-speed-values" - run_regtest scan_shorter "--spinup-delay=0 -s -v" $TMPISO + run_regtest scan_shorter "--spinup-delay=0 -s -v" $TMPISO $NO_FILE fi # Scan image which is longer than expected +# Note: this won't trigger any messages if try "scanning image being longer than expected" scan_longer; then cp $MASTERISO $SIMISO for i in $(seq 23); do cat fixed-random-sequence >>$SIMISO; done extra_args="--debug --sim-cd=$SIMISO --fixed-speed-values" - run_regtest scan_longer "--spinup-delay=0 -s -v" $TMPISO + run_regtest scan_longer "--spinup-delay=0 -s -v" $TMPISO $NO_FILE fi # Scan image with two multisession link sectors appended. @@ -1023,7 +1038,7 @@ if try "scanning image, tao tail case" scan_tao_tail; then $NEWVER --debug -i$SIMISO --erase 34932-34933 >>$LOGFILE 2>&1 extra_args="--debug --sim-cd=$SIMISO --fixed-speed-values" - run_regtest scan_tao_tail "--spinup-delay=0 -s" $TMPISO + run_regtest scan_tao_tail "--spinup-delay=0 -s" $TMPISO $NO_FILE fi # Scan image with two real sectors missing at the end. @@ -1034,7 +1049,7 @@ if try "scanning image, no tao tail case" scan_no_tao_tail; then $NEWVER --debug -i$SIMISO --erase 34930-34931 >>$LOGFILE 2>&1 extra_args="--debug --sim-cd=$SIMISO --fixed-speed-values" - run_regtest scan_no_tao_tail "--spinup-delay=0 -s --dao" $TMPISO + run_regtest scan_no_tao_tail "--spinup-delay=0 -s --dao" $TMPISO $NO_FILE fi # Scan an image for which ecc information is available, @@ -1061,7 +1076,7 @@ if try "scanning image requiring a newer dvdisaster version" scan_incompatible_e extra_args="--debug --sim-cd=$SIMISO --fixed-speed-values" IGNORE_LOG_LINE='^\* $' - run_regtest scan_incompatible_ecc "--spinup-delay=0 -s" $TMPISO + run_regtest scan_incompatible_ecc "--spinup-delay=0 -s" $TMPISO $NO_FILE unset IGNORE_LOG_LINE fi @@ -1075,7 +1090,7 @@ if try "scanning image with one defective header" scan_bad_header; then $NEWVER -i$SIMISO --debug --byteset 30592,1,1 >>$LOGFILE 2>&1 extra_args="--debug --sim-cd=$SIMISO --fixed-speed-values" - run_regtest scan_bad_header "--spinup-delay=0 -s" $TMPISO + run_regtest scan_bad_header "--spinup-delay=0 -s" $TMPISO $NO_FILE fi # Scan an image containing one header with an invalid cookie @@ -1090,7 +1105,7 @@ if try "scanning image with two defective headers" scan_bad_headers; then $NEWVER -i$SIMISO --debug --byteset 31488,100,1 >>$LOGFILE 2>&1 extra_args="--debug --sim-cd=$SIMISO --fixed-speed-values" - run_regtest scan_bad_headers "--spinup-delay=0 -s" $TMPISO + run_regtest scan_bad_headers "--spinup-delay=0 -s" $TMPISO $NO_FILE fi # Image contains 2 rows of missing sectors and a single one @@ -1103,7 +1118,7 @@ if try "scanning image with missing data sectors" scan_missing_data_sectors; the $NEWVER -i$SIMISO --debug --erase 22450-22457 >>$LOGFILE 2>&1 extra_args="--debug --sim-cd=$SIMISO --fixed-speed-values" - run_regtest scan_missing_data_sectors "--spinup-delay=0 -s" $TMPISO + run_regtest scan_missing_data_sectors "--spinup-delay=0 -s" $TMPISO $NO_FILE fi # Image contains 1 row of missing sectors and a single one @@ -1115,7 +1130,7 @@ if try "scanning image with missing crc sectors" scan_missing_crc_sectors; then $NEWVER -i$SIMISO --debug --erase 30034 >>$LOGFILE 2>&1 extra_args="--debug --sim-cd=$SIMISO --fixed-speed-values" - run_regtest scan_missing_crc_sectors "--spinup-delay=0 -s" $TMPISO + run_regtest scan_missing_crc_sectors "--spinup-delay=0 -s" $TMPISO $NO_FILE fi # Image contains 1 row of missing sectors and a single one @@ -1127,7 +1142,7 @@ if try "scanning image with missing ecc sectors" scan_missing_ecc_sectors; then $NEWVER -i$SIMISO --debug --erase 33034 >>$LOGFILE 2>&1 extra_args="--debug --sim-cd=$SIMISO --fixed-speed-values" - run_regtest scan_missing_ecc_sectors "--spinup-delay=0 -s" $TMPISO + run_regtest scan_missing_ecc_sectors "--spinup-delay=0 -s" $TMPISO $NO_FILE fi # Image contains bad byte in the data section @@ -1137,7 +1152,7 @@ if try "scanning image with bad data byte" scan_data_bad_byte; then $NEWVER -i$SIMISO --debug --byteset 1235,50,10 >>$LOGFILE 2>&1 extra_args="--debug --sim-cd=$SIMISO --fixed-speed-values" - run_regtest scan_data_bad_byte "--spinup-delay=0 -s" $TMPISO + run_regtest scan_data_bad_byte "--spinup-delay=0 -s" $TMPISO $NO_FILE fi # Image contains bad byte in the CRC section @@ -1148,7 +1163,7 @@ if try "scanning image with bad crc byte" scan_crc_bad_byte; then $NEWVER -i$SIMISO --debug --byteset 30020,50,10 >>$LOGFILE 2>&1 extra_args="--debug --sim-cd=$SIMISO --fixed-speed-values" - run_regtest scan_crc_bad_byte "--spinup-delay=0 -s" $TMPISO + run_regtest scan_crc_bad_byte "--spinup-delay=0 -s" $TMPISO $NO_FILE fi # Image contains bad byte in the ecc section @@ -1158,7 +1173,7 @@ if try "scanning image with bad ecc byte" scan_ecc_bad_byte; then $NEWVER -i$SIMISO --debug --byteset 33100,50,10 >>$LOGFILE 2>&1 extra_args="--debug --sim-cd=$SIMISO --fixed-speed-values" - run_regtest scan_ecc_bad_byte "--spinup-delay=0 -s" $TMPISO + run_regtest scan_ecc_bad_byte "--spinup-delay=0 -s" $TMPISO $NO_FILE fi # Test the pre-0.79.5 header modulo glitch correction @@ -1172,8 +1187,10 @@ if try "scanning with header modulo glitch, post 0.79.5 style hdr" scan_modulo_g $NEWVER --regtest --debug --set-version $SETVERSION -i$HMGISO -mRS02 -c >>$LOGFILE 2>&1 fi + replace_config verbose 1 + extra_args="--debug --sim-cd=$HMGISO --fixed-speed-values" - run_regtest scan_modulo_glitch "--spinup-delay=0 -s -v" $TMPISO + run_regtest scan_modulo_glitch "--spinup-delay=0 -s -v" $TMPISO $NO_FILE fi # Test the pre-0.79.5 header modulo glitch correction @@ -1204,8 +1221,10 @@ if try "header modulo glitch, old style, complete img" scan_modulo_glitch2; then $NEWVER --debug -i $SIMISO --byteset $header,135,0 >>$LOGFILE 2>&1 done + replace_config verbose 1 + extra_args="--debug --sim-cd=$SIMISO --fixed-speed-values" - run_regtest scan_modulo_glitch2 "--spinup-delay=0 -s -v" $TMPISO + run_regtest scan_modulo_glitch2 "--spinup-delay=0 -s -v" $TMPISO $NO_FILE fi # Test the pre-0.79.5 header modulo glitch correction @@ -1239,8 +1258,10 @@ if try "header modulo glitch, old style, truncated img" scan_modulo_glitch3; the done $NEWVER --debug -i $SIMISO --truncate=357520 >>$LOGFILE 2>&1 + replace_config verbose 1 + extra_args="--debug --sim-cd=$SIMISO --fixed-speed-values" - run_regtest scan_modulo_glitch3 "--spinup-delay=0 -s -v" $TMPISO + run_regtest scan_modulo_glitch3 "--spinup-delay=0 -s -v" $TMPISO $NO_FILE fi # Test the pre-0.79.5 header modulo glitch correction @@ -1280,8 +1301,10 @@ if try "header modulo glitch, old style, truncated img, missing ref secs" scan_m $NEWVER --debug -i $SIMISO --erase $sector >>$LOGFILE 2>&1 done + replace_config verbose 1 + extra_args="--debug --sim-cd=$SIMISO --fixed-speed-values" - run_regtest scan_modulo_glitch4 "--spinup-delay=0 -s -v" $TMPISO + run_regtest scan_modulo_glitch4 "--spinup-delay=0 -s -v" $TMPISO $NO_FILE fi # Augmented image is protected by an outer RS01 error correction file @@ -1353,7 +1376,7 @@ if try "reading good image" read_good; then cp $MASTERISO $SIMISO extra_args="--debug --sim-cd=$SIMISO --fixed-speed-values" - run_regtest read_good "--spinup-delay=0 -r" $TMPISO + run_regtest read_good "--spinup-delay=0 -r" $TMPISO $NO_FILE fi # Read into existing and complete image file @@ -1363,7 +1386,7 @@ if try "reading good image in good file" read_good_file; then cp $MASTERISO $TMPISO extra_args="--debug --sim-cd=$SIMISO --fixed-speed-values" - run_regtest read_good_file "--spinup-delay=0 -r" $TMPISO + run_regtest read_good_file "--spinup-delay=0 -r" $TMPISO $NO_FILE fi # Read complete / optimal image with verbose debugging output @@ -1371,8 +1394,10 @@ fi if try "reading good image with verbose output" read_good_verbose; then cp $MASTERISO $SIMISO + replace_config verbose 1 + extra_args="--debug --sim-cd=$SIMISO --fixed-speed-values" - run_regtest read_good_verbose "--spinup-delay=0 -r -v" $TMPISO + run_regtest read_good_verbose "--spinup-delay=0 -r -v" $TMPISO $NO_FILE fi # Read image which is shorter than expected @@ -1384,18 +1409,20 @@ if try "reading image being shorter than expected" read_shorter; then $NEWVER --debug -i$SIMISO --truncate=$((REAL_ECCSIZE-44)) >>$LOGFILE 2>&1 extra_args="--debug --sim-cd=$SIMISO --fixed-speed-values" - run_regtest read_shorter "--spinup-delay=0 -r -v" $TMPISO + run_regtest read_shorter "--spinup-delay=0 -r -v" $TMPISO $NO_FILE fi # Read image which is longer than expected -# Will return image in its original length. +# Will return image in its original length +# (without printing a notice - reading just +# stops after reading the required sectors). if try "reading image being longer than expected" read_longer; then cp $MASTERISO $SIMISO for i in $(seq 23); do cat fixed-random-sequence >>$SIMISO; done extra_args="--debug --sim-cd=$SIMISO --fixed-speed-values" - run_regtest read_longer "--spinup-delay=0 -r -v" $TMPISO + run_regtest read_longer "--spinup-delay=0 -r -v" $TMPISO $NO_FILE fi # Read image with two multisession link sectors appended. @@ -1407,18 +1434,19 @@ if try "reading image, tao tail case" read_tao_tail; then $NEWVER --debug -i$SIMISO --erase 34932-34933 >>$LOGFILE 2>&1 extra_args="--debug --sim-cd=$SIMISO --fixed-speed-values" - run_regtest read_tao_tail "--spinup-delay=0 -r" $TMPISO + run_regtest read_tao_tail "--spinup-delay=0 -r" $TMPISO $NO_FILE fi # Read image with two real sectors missing at the end. # -dao option prevents them from being clipped off. +# Use "Cancel" in the GUI for same results. if try "reading image, no tao tail case" read_no_tao_tail; then cp $MASTERISO $SIMISO $NEWVER --debug -i$SIMISO --erase 34930-34931 >>$LOGFILE 2>&1 extra_args="--debug --sim-cd=$SIMISO --fixed-speed-values" - run_regtest read_no_tao_tail "--spinup-delay=0 -r --dao" $TMPISO + run_regtest read_no_tao_tail "--spinup-delay=0 -r --dao" $TMPISO $NO_FILE fi # Read an image for which ecc information is available, @@ -1445,7 +1473,7 @@ if try "reading image requiring a newer dvdisaster version" read_incompatible_ec extra_args="--debug --sim-cd=$SIMISO --fixed-speed-values" IGNORE_LOG_LINE='^\* $' - run_regtest read_incompatible_ecc "--spinup-delay=0 -r" $TMPISO + run_regtest read_incompatible_ecc "--spinup-delay=0 -r" $TMPISO $NO_FILE unset IGNORE_LOG_LINE fi @@ -1463,7 +1491,7 @@ if try "reading image with missing master header" read_bad_master; then $NEWVER -i$SIMISO --debug --erase 32768 >>$LOGFILE 2>&1 extra_args="--debug --sim-cd=$SIMISO --fixed-speed-values" - run_regtest read_bad_master "--spinup-delay=0 -r -v" $TMPISO + run_regtest read_bad_master "--spinup-delay=0 -r -v" $TMPISO $NO_FILE fi # Read an image with missing master header @@ -1476,7 +1504,7 @@ if try "reading image with missing master header, exhaustive" read_bad_master_ex replace_config examine-rs02 1 extra_args="--debug --sim-cd=$SIMISO --fixed-speed-values" - run_regtest read_bad_master_exhaustive "--spinup-delay=0 -r -v -a RS02" $TMPISO + run_regtest read_bad_master_exhaustive "--spinup-delay=0 -r -v -a RS02" $TMPISO $NO_FILE fi # Read an image containing one header with an invalid cookie. @@ -1489,7 +1517,7 @@ if try "reading image with one defective header" read_bad_header; then $NEWVER -i$SIMISO --debug --byteset 30592,1,1 >>$LOGFILE 2>&1 extra_args="--debug --sim-cd=$SIMISO --fixed-speed-values" - run_regtest read_bad_header "--spinup-delay=0 -r" $TMPISO + run_regtest read_bad_header "--spinup-delay=0 -r" $TMPISO $NO_FILE fi # Read an image containing one header with an invalid cookie @@ -1504,7 +1532,7 @@ if try "reading image with two defective headers" read_bad_headers; then $NEWVER -i$SIMISO --debug --byteset 31488,100,1 >>$LOGFILE 2>&1 extra_args="--debug --sim-cd=$SIMISO --fixed-speed-values" - run_regtest read_bad_headers "--spinup-delay=0 -r" $TMPISO + run_regtest read_bad_headers "--spinup-delay=0 -r" $TMPISO $NO_FILE fi # Image contains 2 rows of missing sectors and a single one @@ -1517,7 +1545,7 @@ if try "reading image with missing data sectors" read_missing_data_sectors; then $NEWVER -i$SIMISO --debug --erase 22450-22457 >>$LOGFILE 2>&1 extra_args="--debug --sim-cd=$SIMISO --fixed-speed-values" - run_regtest read_missing_data_sectors "--spinup-delay=0 -r" $TMPISO + run_regtest read_missing_data_sectors "--spinup-delay=0 -r" $TMPISO $NO_FILE fi # Image contains 1 row of missing sectors and a single one @@ -1529,7 +1557,7 @@ if try "reading image with missing crc sectors" read_missing_crc_sectors; then $NEWVER -i$SIMISO --debug --erase 30034 >>$LOGFILE 2>&1 extra_args="--debug --sim-cd=$SIMISO --fixed-speed-values" - run_regtest read_missing_crc_sectors "--spinup-delay=0 -r" $TMPISO + run_regtest read_missing_crc_sectors "--spinup-delay=0 -r" $TMPISO $NO_FILE fi # Image contains 1 row of missing sectors and a single one @@ -1541,7 +1569,7 @@ if try "reading image with missing ecc sectors" read_missing_ecc_sectors; then $NEWVER -i$SIMISO --debug --erase 33034 >>$LOGFILE 2>&1 extra_args="--debug --sim-cd=$SIMISO --fixed-speed-values" - run_regtest read_missing_ecc_sectors "--spinup-delay=0 -r" $TMPISO + run_regtest read_missing_ecc_sectors "--spinup-delay=0 -r" $TMPISO $NO_FILE fi # Image contains bad bytes in the data section @@ -1553,7 +1581,7 @@ if try "reading image with bad data byte" read_data_bad_bytes; then $NEWVER -i$SIMISO --debug --byteset 29999,128,98 >>$LOGFILE 2>&1 extra_args="--debug --sim-cd=$SIMISO --fixed-speed-values" - run_regtest read_data_bad_bytes "--spinup-delay=0 -r" $TMPISO + run_regtest read_data_bad_bytes "--spinup-delay=0 -r" $TMPISO $NO_FILE fi # Image contains bad byte in the CRC section @@ -1564,7 +1592,7 @@ if try "reading image with bad crc byte" read_crc_bad_byte; then $NEWVER -i$SIMISO --debug --byteset 30020,50,10 >>$LOGFILE 2>&1 extra_args="--debug --sim-cd=$SIMISO --fixed-speed-values" - run_regtest read_crc_bad_byte "--spinup-delay=0 -r" $TMPISO + run_regtest read_crc_bad_byte "--spinup-delay=0 -r" $TMPISO $NO_FILE fi # Image contains bad byte in the ecc section @@ -1574,7 +1602,7 @@ if try "reading image with bad ecc byte" read_ecc_bad_byte; then $NEWVER -i$SIMISO --debug --byteset 33100,50,10 >>$LOGFILE 2>&1 extra_args="--debug --sim-cd=$SIMISO --fixed-speed-values" - run_regtest read_ecc_bad_byte "--spinup-delay=0 -r" $TMPISO + run_regtest read_ecc_bad_byte "--spinup-delay=0 -r" $TMPISO $NO_FILE fi # Test the pre-0.79.5 header modulo glitch correction @@ -1588,8 +1616,10 @@ if try "reading with header modulo glitch, post 0.79.5 style hdr" read_modulo_gl $NEWVER --regtest --debug --set-version $SETVERSION -i$HMGISO -mRS02 -c >>$LOGFILE 2>&1 fi + replace_config verbose 1 + extra_args="--debug --sim-cd=$HMGISO --fixed-speed-values" - run_regtest read_modulo_glitch "--spinup-delay=0 -r -v" $TMPISO + run_regtest read_modulo_glitch "--spinup-delay=0 -r -v" $TMPISO $NO_FILE fi # Test the pre-0.79.5 header modulo glitch correction @@ -1620,8 +1650,10 @@ if try "header modulo glitch, old style, complete img" read_modulo_glitch2; then $NEWVER --debug -i $SIMISO --byteset $header,135,0 >>$LOGFILE 2>&1 done + replace_config verbose 1 + extra_args="--debug --sim-cd=$SIMISO --fixed-speed-values" - run_regtest read_modulo_glitch2 "--spinup-delay=0 -r -v" $TMPISO + run_regtest read_modulo_glitch2 "--spinup-delay=0 -r -v" $TMPISO $NO_FILE fi # Test the pre-0.79.5 header modulo glitch correction @@ -1655,8 +1687,10 @@ if try "header modulo glitch, old style, truncated img" read_modulo_glitch3; the done $NEWVER --debug -i $SIMISO --truncate=357520 >>$LOGFILE 2>&1 + replace_config verbose 1 + extra_args="--debug --sim-cd=$SIMISO --fixed-speed-values" - run_regtest read_modulo_glitch3 "--spinup-delay=0 -r -v" $TMPISO + run_regtest read_modulo_glitch3 "--spinup-delay=0 -r -v" $TMPISO $NO_FILE fi # Test the pre-0.79.5 header modulo glitch correction @@ -1696,8 +1730,10 @@ if try "header modulo glitch, old style, truncated img, missing ref secs" read_m $NEWVER --debug -i $SIMISO --erase $sector >>$LOGFILE 2>&1 done + replace_config verbose 1 + extra_args="--debug --sim-cd=$SIMISO --fixed-speed-values" - run_regtest read_modulo_glitch4 "--spinup-delay=0 -r -v" $TMPISO + run_regtest read_modulo_glitch4 "--spinup-delay=0 -r -v" $TMPISO $NO_FILE fi # Augmented image is protected by an outer RS01 error correction file @@ -1772,11 +1808,11 @@ if try "re-reading medium with CRC error" read_second_pass_with_crc_error; then $NEWVER --debug -i$TMPISO --erase 15800-16199 >>$LOGFILE 2>&1 extra_args="--debug --sim-cd=$SIMISO --fixed-speed-values" - run_regtest read_second_pass_with_crc_error "--spinup-delay=0 -r" $TMPISO + run_regtest read_second_pass_with_crc_error "--spinup-delay=0 -r" $TMPISO $NO_FILE fi # Read medium in several passes; some sectors become readable in the third pass. -# One sector keeps is CRC error over all passes. +# One sector keeps its CRC error over all passes. if try "reading medium in 3 passes; 3rd pass recovers some" read_multipass_ecc_partial_success; then @@ -1792,7 +1828,7 @@ if try "reading medium in 3 passes; 3rd pass recovers some" read_multipass_ecc_p replace_config read-medium 3 extra_args="--debug --sim-cd=$SIMISO --fixed-speed-values" - run_regtest read_multipass_ecc_partial_success "--read-medium=3 --spinup-delay=0 -r" $TMPISO "" SORTED + run_regtest read_multipass_ecc_partial_success "--read-medium=3 --spinup-delay=0 -r" $TMPISO $NO_FILE SORTED fi ### Reading tests (adaptive) @@ -1804,7 +1840,7 @@ REGTEST_SECTION="Reading tests (adaptive)" if try "reading good image" adaptive_good; then cp $MASTERISO $SIMISO - run_regtest adaptive_good "--debug --sim-cd=$SIMISO --fixed-speed-values --spinup-delay=0 -r --adaptive-read" $TMPISO + run_regtest adaptive_good "--debug --sim-cd=$SIMISO --fixed-speed-values --spinup-delay=0 -r --adaptive-read" $TMPISO $NO_FILE fi # Read into existing and complete image file @@ -1813,7 +1849,7 @@ if try "reading good image in good file" adaptive_good_file; then cp $MASTERISO $SIMISO cp $MASTERISO $TMPISO - run_regtest adaptive_good_file "--debug --sim-cd=$SIMISO --fixed-speed-values --spinup-delay=0 -r --adaptive-read" $TMPISO + run_regtest adaptive_good_file "--debug --sim-cd=$SIMISO --fixed-speed-values --spinup-delay=0 -r --adaptive-read" $TMPISO $NO_FILE fi # Read complete / optimal image with verbose debugging output @@ -1821,7 +1857,7 @@ fi if try "reading good image with verbose output" adaptive_good_verbose; then cp $MASTERISO $SIMISO - run_regtest adaptive_good_verbose "--debug --sim-cd=$SIMISO --fixed-speed-values --spinup-delay=0 -r -v --adaptive-read" $TMPISO + run_regtest adaptive_good_verbose "--debug --sim-cd=$SIMISO --fixed-speed-values --spinup-delay=0 -r -v --adaptive-read" $TMPISO $NO_FILE fi # Read image which is shorter than expected @@ -1834,7 +1870,7 @@ if try "reading image being shorter than expected" adaptive_shorter; then cp $MASTERISO $SIMISO $NEWVER --debug -i$SIMISO --truncate=$((REAL_ECCSIZE-44)) >>$LOGFILE 2>&1 - run_regtest adaptive_shorter "--debug --sim-cd=$SIMISO --fixed-speed-values --spinup-delay=0 -r -v --adaptive-read" $TMPISO + run_regtest adaptive_shorter "--debug --sim-cd=$SIMISO --fixed-speed-values --spinup-delay=0 -r -v --adaptive-read" $TMPISO $NO_FILE fi # Read image which is longer than expected @@ -1847,7 +1883,7 @@ if try "reading image being longer than expected" adaptive_longer; then cp $MASTERISO $SIMISO for i in $(seq 23); do cat fixed-random-sequence >>$SIMISO; done - run_regtest adaptive_longer "--debug --sim-cd=$SIMISO --fixed-speed-values --spinup-delay=0 -r -v --adaptive-read" $TMPISO + run_regtest adaptive_longer "--debug --sim-cd=$SIMISO --fixed-speed-values --spinup-delay=0 -r -v --adaptive-read" $TMPISO $NO_FILE fi # Read image with two multisession link sectors appended. @@ -1860,7 +1896,7 @@ if try "reading image, tao tail case" adaptive_tao_tail; then cat fixed-random-sequence >>$SIMISO $NEWVER --debug -i$SIMISO --erase 34932-34933 >>$LOGFILE 2>&1 - run_regtest adaptive_tao_tail "--debug --sim-cd=$SIMISO --fixed-speed-values --spinup-delay=0 -r --adaptive-read" $TMPISO + run_regtest adaptive_tao_tail "--debug --sim-cd=$SIMISO --fixed-speed-values --spinup-delay=0 -r --adaptive-read" $TMPISO $NO_FILE fi # Read image with two real sectors missing at the end. @@ -1872,7 +1908,7 @@ if try "reading image, no tao tail case" adaptive_no_tao_tail; then cp $MASTERISO $SIMISO $NEWVER --debug -i$SIMISO --erase 34930-34931 >>$LOGFILE 2>&1 - run_regtest adaptive_no_tao_tail "--debug --sim-cd=$SIMISO --fixed-speed-values --spinup-delay=0 -r --dao --adaptive-read" $TMPISO + run_regtest adaptive_no_tao_tail "--debug --sim-cd=$SIMISO --fixed-speed-values --spinup-delay=0 -r --dao --adaptive-read" $TMPISO $NO_FILE fi # Read an image for which ecc information is available, @@ -1897,7 +1933,7 @@ if try "reading image requiring a newer dvdisaster version" adaptive_incompatibl $NEWVER --debug -i$SIMISO --byteset 30000,98,75 >>$LOGFILE 2>&1 $NEWVER --debug -i$SIMISO --byteset 30000,99,203 >>$LOGFILE 2>&1 - run_regtest adaptive_incompatible_ecc "--debug --sim-cd=$SIMISO --fixed-speed-values --spinup-delay=0 -r --adaptive-read" $TMPISO + run_regtest adaptive_incompatible_ecc "--debug --sim-cd=$SIMISO --fixed-speed-values --spinup-delay=0 -r --adaptive-read" $TMPISO $NO_FILE fi # Read an image containing one header with an invalid cookie. @@ -1910,7 +1946,7 @@ if try "reading image with one defective header" adaptive_bad_header; then cp $MASTERISO $SIMISO $NEWVER -i$SIMISO --debug --byteset 30592,1,1 >>$LOGFILE 2>&1 - run_regtest adaptive_bad_header "--debug --sim-cd=$SIMISO --fixed-speed-values --spinup-delay=0 -r -v --adaptive-read" $TMPISO + run_regtest adaptive_bad_header "--debug --sim-cd=$SIMISO --fixed-speed-values --spinup-delay=0 -r -v --adaptive-read" $TMPISO $NO_FILE fi # Read an image containing one header with an invalid cookie @@ -1924,7 +1960,7 @@ if try "reading image with two defective headers" adaptive_bad_headers; then $NEWVER -i$SIMISO --debug --byteset 30592,1,1 >>$LOGFILE 2>&1 $NEWVER -i$SIMISO --debug --byteset 31488,100,1 >>$LOGFILE 2>&1 - run_regtest adaptive_bad_headers "--debug --sim-cd=$SIMISO --fixed-speed-values --spinup-delay=0 -r --adaptive-read" $TMPISO + run_regtest adaptive_bad_headers "--debug --sim-cd=$SIMISO --fixed-speed-values --spinup-delay=0 -r --adaptive-read" $TMPISO $NO_FILE fi # Image contains 2 rows of missing sectors and a single one @@ -1936,7 +1972,7 @@ if try "reading image with missing data sectors" adaptive_missing_data_sectors; $NEWVER -i$SIMISO --debug --erase 21230 >>$LOGFILE 2>&1 $NEWVER -i$SIMISO --debug --erase 22450-22457 >>$LOGFILE 2>&1 - run_regtest adaptive_missing_data_sectors "--debug --sim-cd=$SIMISO --fixed-speed-values --spinup-delay=0 -r --adaptive-read" $TMPISO + run_regtest adaptive_missing_data_sectors "--debug --sim-cd=$SIMISO --fixed-speed-values --spinup-delay=0 -r --adaptive-read" $TMPISO $NO_FILE fi # Image contains 1 row of missing sectors and a single one @@ -1947,7 +1983,7 @@ if try "reading image with missing crc sectors" adaptive_missing_crc_sectors; th $NEWVER -i$SIMISO --debug --erase 30020-30030 >>$LOGFILE 2>&1 $NEWVER -i$SIMISO --debug --erase 30034 >>$LOGFILE 2>&1 - run_regtest adaptive_missing_crc_sectors "--debug --sim-cd=$SIMISO --fixed-speed-values --spinup-delay=0 -r --adaptive-read" $TMPISO + run_regtest adaptive_missing_crc_sectors "--debug --sim-cd=$SIMISO --fixed-speed-values --spinup-delay=0 -r --adaptive-read" $TMPISO $NO_FILE fi # Image contains 1 row of missing sectors and a single one @@ -1958,7 +1994,7 @@ if try "reading image with missing ecc sectors" adaptive_missing_ecc_sectors; th $NEWVER -i$SIMISO --debug --erase 32020-32030 >>$LOGFILE 2>&1 $NEWVER -i$SIMISO --debug --erase 33034 >>$LOGFILE 2>&1 - run_regtest adaptive_missing_ecc_sectors "--debug --sim-cd=$SIMISO --fixed-speed-values --spinup-delay=0 -r --adaptive-read" $TMPISO + run_regtest adaptive_missing_ecc_sectors "--debug --sim-cd=$SIMISO --fixed-speed-values --spinup-delay=0 -r --adaptive-read" $TMPISO $NO_FILE fi # Image contains bad byte in the data section @@ -1967,7 +2003,7 @@ if try "reading image with bad data byte" adaptive_data_bad_byte; then cp $MASTERISO $SIMISO $NEWVER -i$SIMISO --debug --byteset 1235,50,10 >>$LOGFILE 2>&1 - run_regtest adaptive_data_bad_byte "--debug --sim-cd=$SIMISO --fixed-speed-values --spinup-delay=0 -r --adaptive-read" $TMPISO + run_regtest adaptive_data_bad_byte "--debug --sim-cd=$SIMISO --fixed-speed-values --spinup-delay=0 -r --adaptive-read" $TMPISO $NO_FILE fi # Image contains bad byte in the CRC section @@ -1978,7 +2014,7 @@ if try "reading image with bad crc byte" adaptive_crc_bad_byte; then cp $MASTERISO $SIMISO $NEWVER -i$SIMISO --debug --byteset 30020,50,10 >>$LOGFILE 2>&1 - run_regtest adaptive_crc_bad_byte "--debug --sim-cd=$SIMISO --fixed-speed-values --spinup-delay=0 -r --adaptive-read" $TMPISO + run_regtest adaptive_crc_bad_byte "--debug --sim-cd=$SIMISO --fixed-speed-values --spinup-delay=0 -r --adaptive-read" $TMPISO $NO_FILE fi # Image contains bad byte in the ecc section @@ -1987,7 +2023,7 @@ if try "reading image with bad ecc byte" adaptive_ecc_bad_byte; then cp $MASTERISO $SIMISO $NEWVER -i$SIMISO --debug --byteset 33100,50,10 >>$LOGFILE 2>&1 - run_regtest adaptive_ecc_bad_byte "--debug --sim-cd=$SIMISO --fixed-speed-values --spinup-delay=0 -r --adaptive-read" $TMPISO + run_regtest adaptive_ecc_bad_byte "--debug --sim-cd=$SIMISO --fixed-speed-values --spinup-delay=0 -r --adaptive-read" $TMPISO $NO_FILE fi # Test the pre-0.79.5 header modulo glitch correction @@ -2001,7 +2037,7 @@ if try "reading with header modulo glitch, post 0.79.5 style hdr" adaptive_modul $NEWVER --regtest --debug --set-version $SETVERSION -i$HMGISO -mRS02 -c >>$LOGFILE 2>&1 fi - run_regtest adaptive_modulo_glitch "--debug --sim-cd=$HMGISO --fixed-speed-values --spinup-delay=0 -r -v --adaptive-read" $TMPISO + run_regtest adaptive_modulo_glitch "--debug --sim-cd=$HMGISO --fixed-speed-values --spinup-delay=0 -r -v --adaptive-read" $TMPISO $NO_FILE fi # Test the pre-0.79.5 header modulo glitch correction @@ -2032,7 +2068,7 @@ if try "header modulo glitch, old style, complete img" adaptive_modulo_glitch2; $NEWVER --debug -i $SIMISO --byteset $header,135,0 >>$LOGFILE 2>&1 done - run_regtest adaptive_modulo_glitch2 "--debug --sim-cd=$SIMISO --fixed-speed-values --spinup-delay=0 -r -v --adaptive-read" $TMPISO + run_regtest adaptive_modulo_glitch2 "--debug --sim-cd=$SIMISO --fixed-speed-values --spinup-delay=0 -r -v --adaptive-read" $TMPISO $NO_FILE fi # Test the pre-0.79.5 header modulo glitch correction @@ -2066,7 +2102,7 @@ if try "header modulo glitch, old style, truncated img" adaptive_modulo_glitch3; done $NEWVER --debug -i $SIMISO --truncate=357520 >>$LOGFILE 2>&1 - run_regtest adaptive_modulo_glitch3 "--debug --sim-cd=$SIMISO --fixed-speed-values --spinup-delay=0 -r -v --adaptive-read" $TMPISO + run_regtest adaptive_modulo_glitch3 "--debug --sim-cd=$SIMISO --fixed-speed-values --spinup-delay=0 -r -v --adaptive-read" $TMPISO $NO_FILE fi # Test the pre-0.79.5 header modulo glitch correction @@ -2106,7 +2142,7 @@ if try "header modulo glitch, old style, truncated img, missing ref secs" adapti $NEWVER --debug -i $SIMISO --erase $sector >>$LOGFILE 2>&1 done - run_regtest adaptive_modulo_glitch4 "--debug --sim-cd=$SIMISO --fixed-speed-values --spinup-delay=0 -r -v --adaptive-read" $TMPISO + run_regtest adaptive_modulo_glitch4 "--debug --sim-cd=$SIMISO --fixed-speed-values --spinup-delay=0 -r -v --adaptive-read" $TMPISO $NO_FILE fi # Augmented image is protected by an outer RS01 error correction file diff --git a/regtest/rs03f.bash b/regtest/rs03f.bash index 9a5d95d..76427ec 100755 --- a/regtest/rs03f.bash +++ b/regtest/rs03f.bash @@ -7,9 +7,9 @@ REDUNDANCY=20 MASTERISO=$ISODIR/rs03f-master.iso MASTERECC=$ISODIR/rs03f-master.ecc -SIMISO=$ISODIR/rs03f-sim.iso -TMPISO=$ISODIR/rs03f-tmp.iso -TMPECC=$ISODIR/rs03f-tmp.ecc +SIMISO=$TMPDIR/rs03f-sim.iso +TMPISO=$TMPDIR/rs03f-tmp.iso +TMPECC=$TMPDIR/rs03f-tmp.ecc CODEC_PREFIX=RS03f # Create master image @@ -139,7 +139,7 @@ fi # Test with image a few bytes shorter than ecc (both not multiple of 2048) if try "image a few bytes shorter as expected; both not multiple of 2048" few_bytes_shorter; then - LONGISO=$ISODIR/rs03f-plus390-bytes.iso + LONGISO=$TMPDIR/rs03f-plus390-bytes.iso cp $MASTERISO $TMPISO dd if="$RNDSEQ" count=1 bs=56 >>$TMPISO 2>/dev/null @@ -156,7 +156,7 @@ fi # Test with image a few bytes longer than ecc (both not multiple of 2048) if try "image a few bytes longer as expected; both not multiple of 2048" few_bytes_longer; then - SHORTISO=$ISODIR/rs03f-plus56-bytes.iso + SHORTISO=$TMPDIR/rs03f-plus56-bytes.iso cp $MASTERISO $SHORTISO dd if="$RNDSEQ" count=1 bs=56 >>$SHORTISO 2>/dev/null @@ -645,12 +645,15 @@ if try "read image with ecc (RS01) and create new ecc" ecc_recreate_after_read_r replace_config method-name RS03 replace_config ecc-target 0 replace_config redundancy $REDUNDANCY + replace_config read-and-create 1 + replace_config verbose 1 extra_args="--debug --set-version $SETVERSION --sim-cd=$SIMISO --fixed-speed-values" run_regtest ecc_recreate_after_read_rs01 "-r -c -mRS03 -o file -n$REDUNDANCY -v" $TMPISO $TMPECC fi # Read image with ecc file and create new (other) ecc in the same program call. -# Tests whether CRC and ECC information is handed over correctly. +# This will wrap the RS02 image with a RS03 ecc file; CRC information from +# the read process will be reused. if try "read image with ecc (RS02) and create new ecc" ecc_recreate_after_read_rs02; then cp $MASTERISO $SIMISO @@ -661,6 +664,8 @@ if try "read image with ecc (RS02) and create new ecc" ecc_recreate_after_read_r replace_config method-name RS03 replace_config ecc-target 0 replace_config redundancy $REDUNDANCY + replace_config read-and-create 1 + replace_config verbose 1 extra_args="--debug --set-version $SETVERSION --sim-cd=$SIMISO --fixed-speed-values" run_regtest ecc_recreate_after_read_rs02 "-r -c -mRS03 -o file -n$REDUNDANCY -v" $TMPISO $TMPECC fi @@ -677,6 +682,8 @@ if try "read image with ecc (RS03i) and create new ecc" ecc_recreate_after_read_ replace_config method-name RS03 replace_config ecc-target 0 replace_config redundancy $REDUNDANCY + replace_config read-and-create 1 + replace_config verbose 1 extra_args="--debug --set-version $SETVERSION --sim-cd=$SIMISO --fixed-speed-values" run_regtest ecc_recreate_after_read_rs03i "-r -c -mRS03 -o file -n$REDUNDANCY -v" $TMPISO $TMPECC fi @@ -693,6 +700,8 @@ if try "read image with ecc (RS03f) and create new ecc" ecc_recreate_after_read_ replace_config method-name RS03 replace_config ecc-target 0 replace_config redundancy $REDUNDANCY + replace_config read-and-create 1 + replace_config verbose 1 extra_args="--debug --set-version $SETVERSION --sim-cd=$SIMISO --fixed-speed-values" run_regtest ecc_recreate_after_read_rs03f "-r -c -mRS03 -o file -n$REDUNDANCY -v" $TMPISO $TMPECC fi @@ -709,6 +718,8 @@ if try "create ecc after completing partial image" ecc_create_after_partial_read replace_config method-name RS03 replace_config ecc-target 0 replace_config redundancy $REDUNDANCY + replace_config read-and-create 1 + replace_config verbose 1 extra_args="--debug --set-version $SETVERSION --sim-cd=$MASTERISO --fixed-speed-values" run_regtest ecc_create_after_partial_read "-r -c -mRS03 -o file -n$REDUNDANCY -v" $TMPISO $TMPECC fi @@ -873,6 +884,7 @@ if try "fixing image with one additional sector" fix_additional_sector; then fi # Fix image with additional sectors (general case) +# no truncate, answer "Cancel" in the GUI if try "fixing image with 17 additional sectors" fix_plus17; then cp $MASTERISO $TMPISO @@ -900,6 +912,7 @@ if try "fixing image with CRC error in 56 additional bytes" fix_plus56; then fi # Fix image+56bytes+more bytes +# no truncate, leaves image unchanged (answer "Cancel" in the GUI) if try "fixing image with CRC error in 56 additional bytes + few bytes more" fix_plus56_plus17; then cp $ISO_PLUS56 $TMPISO @@ -1031,7 +1044,7 @@ if try "scanning image being shorter than expected" scan_shorter; then fi # Scan image which is longer than expected -# Will return image in its original length. +# Superflous sectors will be silently ignored. if try "scanning image being longer than expected" scan_longer; then cp $MASTERISO $SIMISO @@ -1043,7 +1056,7 @@ if try "scanning image being longer than expected" scan_longer; then fi # Scan image with two multisession link sectors appended. -# Will return image in its original length. +# Superflous sectors will be silently ignored. if try "scanning image, tao tail case" scan_tao_tail; then cp $MASTERISO $SIMISO @@ -1056,7 +1069,6 @@ if try "scanning image, tao tail case" scan_tao_tail; then fi # Scan image with two real sectors missing at the end. -# -dao option prevents them from being clipped off. if try "scanning image, no tao tail case" scan_no_tao_tail; then cp $MASTERISO $SIMISO @@ -1098,7 +1110,9 @@ if try "scanning image requiring a newer dvdisaster version" scan_incompatible_e fi # Scan an image containing a defective ECC header. -# Will be treated like an ECC-less image since --assume is not set. +# RS03RecognizeFile() will automatically perform an exhaustive search +# regardless of the --asume setting. +# Rationale: The ecc file is on a HD/SSD where seeking is cheap if try "scanning image with a defective header" scan_bad_header; then @@ -1140,6 +1154,8 @@ fi # Image contains 1 row of missing sectors and a single one # in the ecc portion +# Since we are scanning the image, defects in the ecc file will not +# be reported. if try "scanning image with missing ecc sectors" scan_missing_ecc_sectors; then cp $MASTERISO $SIMISO @@ -1173,6 +1189,8 @@ if try "scanning image with bad crc byte" scan_crc_bad_byte; then fi # Image contains bad byte in the ecc section +# Since we are scanning the image, defects in the ecc file will not +# be reported. if try "scanning image with bad ecc byte" scan_ecc_bad_byte; then cp $MASTERISO $SIMISO @@ -1202,6 +1220,7 @@ if try "scanning image with missing ecc header and CRC blocks" scan_missing_ecc_ cp $MASTERECC $TMPECC $NEWVER --debug -i $TMPECC --erase 0-16 >>$LOGFILE 2>&1 + replace_config verbose 1 extra_args="--debug --sim-cd=$SIMISO --fixed-speed-values" run_regtest scan_missing_ecc_header_and_crc "--spinup-delay=0 -s -v" $MASTERISO $TMPECC fi @@ -1216,6 +1235,7 @@ if try "scanning image with ecc header missing, first CRC block defective" scan_ $NEWVER --debug -i $TMPECC --erase 0 >>$LOGFILE 2>&1 $NEWVER --debug -i $TMPECC --byteset 2,50,107 >>$LOGFILE 2>&1 + replace_config verbose 1 extra_args="--debug --sim-cd=$SIMISO --fixed-speed-values" run_regtest scan_missing_ecc_header_and_defective_crc "--spinup-delay=0 -s -v" $MASTERISO $TMPECC fi @@ -1227,6 +1247,7 @@ if try "checksum error in ecc header" scan_ecc_header_crc_error; then cp $MASTERECC $TMPECC $NEWVER --debug -i $TMPECC --byteset 0,32,107 >>$LOGFILE 2>&1 + replace_config verbose 1 extra_args="--debug --sim-cd=$MASTERISO --fixed-speed-values" run_regtest scan_ecc_header_crc_error "--spinup-delay=0 -s -v" $MASTERISO $TMPECC fi @@ -1354,6 +1375,7 @@ if try "reading image with a defective header" read_bad_header; then cp $MASTERECC $TMPECC $NEWVER -i$TMPECC --debug --byteset 0,1,1 >>$LOGFILE 2>&1 + replace_config verbose 1 extra_args="--debug --sim-cd=$SIMISO --fixed-speed-values" run_regtest read_bad_header "--spinup-delay=0 -r -v" $TMPISO $TMPECC fi @@ -1388,6 +1410,7 @@ fi # Image contains 1 row of missing sectors and a single one # in the ecc portion +# Problem goes unnoticed as the image is not affected. if try "reading image with missing ecc sectors" read_missing_ecc_sectors; then cp $MASTERISO $SIMISO diff --git a/regtest/rs03i.bash b/regtest/rs03i.bash index 563dbfa..f71b74d 100755 --- a/regtest/rs03i.bash +++ b/regtest/rs03i.bash @@ -7,9 +7,10 @@ ECCSIZE=25000 REAL_ECCSIZE=24990 MASTERISO=$ISODIR/rs03i-master.iso -TMPISO=$ISODIR/rs03i-tmp.iso -TMPECC=$ISODIR/rs03i-tmp.ecc # rs03 augmented image wrapped by ecc file -SIMISO=$ISODIR/rs03i-sim.iso +TMPISO=$TMPDIR/rs03i-tmp.iso +TMPECC=$TMPDIR/rs03i-tmp.ecc # rs03 augmented image wrapped by ecc file +SIMISO=$TMPDIR/rs03i-sim.iso +NO_FILE=$TMPDIR/none.file LARGEMASTERISO=$ISODIR/rs03i-large.iso LMI_HEADER=235219 @@ -45,7 +46,7 @@ REGTEST_SECTION="Strip tests" if try "strip ECC from augmented image" strip_ecc; then cp $MASTERISO $TMPISO - run_regtest strip_ecc "-v --strip" $TMPISO + run_regtest strip_ecc "-v --strip" $TMPISO $NO_FILE fi # Strip ECC from a non-augmented image @@ -54,7 +55,7 @@ if try "strip ECC from a non-augmented image" strip_ecc_not; then cp $MASTERISO $TMPISO $NEWVER -i$TMPISO --strip >>$LOGFILE 2>&1 - run_regtest strip_ecc_not "-v --strip" $TMPISO + run_regtest strip_ecc_not "-v --strip" $TMPISO $NO_FILE fi ### Verification tests @@ -64,19 +65,19 @@ REGTEST_SECTION="Verify tests" # Test good files if try "good image" good; then - run_regtest good "-t" $MASTERISO + run_regtest good "-t" $MASTERISO $NO_FILE fi # Test good files, quick test if try "good image, quick test" good_quick; then - run_regtest good_quick "-tq" $MASTERISO + run_regtest good_quick "-tq" $MASTERISO $NO_FILE fi # Test with non-existing image if try "missing image" no_image; then - run_regtest no_image "-t" $ISODIR/no.iso + run_regtest no_image "-t" $ISODIR/no.iso $ISODIR/no.ecc fi # Image is truncated by 5 sectors @@ -86,7 +87,7 @@ if try "truncated image" truncated; then NEWSIZE=$((REAL_ECCSIZE-5)) $NEWVER -i$TMPISO --debug --truncate=$NEWSIZE >>$LOGFILE 2>&1 - run_regtest truncated "-t" $TMPISO + run_regtest truncated "-t" $TMPISO $NO_FILE fi # Image contains 1 extra sector @@ -95,7 +96,7 @@ if try "image with one extra sector" plus1; then cp $MASTERISO $TMPISO dd if=/dev/zero count=1 bs=2048 >>$TMPISO 2>/dev/null - run_regtest plus1 "-t" $TMPISO + run_regtest plus1 "-t" $TMPISO $NO_FILE fi # Image contains 17 extra sectors @@ -104,7 +105,7 @@ if try "image with 17 extra sectors" plus17; then cp $MASTERISO $TMPISO dd if=/dev/zero count=17 bs=2048 >>$TMPISO 2>/dev/null - run_regtest plus17 "-t" $TMPISO + run_regtest plus17 "-t" $TMPISO $NO_FILE fi # Image contains 56 extra bytes (which are not recorded in the ISO @@ -118,7 +119,8 @@ if try "image with 56 extra bytes" plus_56_bytes; then $NEWVER --regtest --debug -i$TMPISO --set-version $SETVERSION -mRS03 -n$ECCSIZE -c >>$LOGFILE 2>&1 IGNORE_LOG_LINE="^Avg performance|^Augmenting image with Method RS03" - run_regtest plus_56_bytes "--debug -t -v -n$ECCSIZE" $TMPISO + extra_args="--debug -n$ECCSIZE" + run_regtest plus_56_bytes "-t -v" $TMPISO $NO_FILE fi # Image contains one CRC block w/o cookie @@ -127,7 +129,7 @@ if try "CRC block with invalid cookie" bad_crc_cookie; then cp $MASTERISO $TMPISO $NEWVER -i$TMPISO --debug --byteset 21100,1026,1 >>$LOGFILE 2>&1 - run_regtest bad_crc_cookie "-t" $TMPISO + run_regtest bad_crc_cookie "-t" $TMPISO $NO_FILE fi # Image contains two CRC block CRC errors @@ -137,7 +139,7 @@ if try "CRC blocks with invalid checksum" bad_crc_checksum; then $NEWVER -i$TMPISO --debug --byteset 21100,900,1 >>$LOGFILE 2>&1 $NEWVER -i$TMPISO --debug --byteset 21107,555,1 >>$LOGFILE 2>&1 - run_regtest bad_crc_checksum "-t" $TMPISO + run_regtest bad_crc_checksum "-t" $TMPISO $NO_FILE fi # Image contains several missing CRC sectors @@ -147,7 +149,7 @@ if try "several missing CRC sectors" missing_crc_sectors; then $NEWVER -i$TMPISO --debug --erase 21100-21108 >>$LOGFILE 2>&1 $NEWVER -i$TMPISO --debug --erase 21111 >>$LOGFILE 2>&1 - run_regtest missing_crc_sectors "-t" $TMPISO + run_regtest missing_crc_sectors "-t" $TMPISO $NO_FILE fi # Image contains several missing data sectors @@ -158,7 +160,7 @@ if try "several missing data sectors" missing_data_sectors; then $NEWVER -i$TMPISO --debug --erase 13420-14109 >>$LOGFILE 2>&1 $NEWVER -i$TMPISO --debug --erase 17812 >>$LOGFILE 2>&1 - run_regtest missing_data_sectors "-t" $TMPISO + run_regtest missing_data_sectors "-t" $TMPISO $NO_FILE fi # Image contains several missing ecc sectors @@ -168,7 +170,7 @@ if try "several missing ecc sectors" missing_ecc_sectors; then $NEWVER -i$TMPISO --debug --erase 21168 >>$LOGFILE 2>&1 $NEWVER -i$TMPISO --debug --erase 21900-21950 >>$LOGFILE 2>&1 - run_regtest missing_ecc_sectors "-t" $TMPISO + run_regtest missing_ecc_sectors "-t" $TMPISO $NO_FILE fi # Image contains bad byte in data portion @@ -177,7 +179,7 @@ if try "bad byte in data sector" data_bad_byte; then cp $MASTERISO $TMPISO $NEWVER -i$TMPISO --debug --byteset 4096,100,17 >>$LOGFILE 2>&1 - run_regtest data_bad_byte "-t" $TMPISO + run_regtest data_bad_byte "-t" $TMPISO $NO_FILE fi # Image contains bad byte in crc portion @@ -189,7 +191,7 @@ if try "bad byte in ecc sector" ecc_bad_byte; then cp $MASTERISO $TMPISO $NEWVER -i$TMPISO --debug --byteset 21878,100,17 >>$LOGFILE 2>&1 - run_regtest ecc_bad_byte "-t" $TMPISO + run_regtest ecc_bad_byte "-t" $TMPISO $NO_FILE fi # Image size is exact multiple of layer size, @@ -199,7 +201,7 @@ if try "image is multiple of layer size" layer_multiple; then $NEWVER --debug -i $TMPISO --random-image 14508 >>$LOGFILE 2>&1 $NEWVER --regtest --debug --set-version $SETVERSION -mRS03 -n20000 -c -i $TMPISO >>$LOGFILE 2>&1 - run_regtest layer_multiple "-t" $TMPISO + run_regtest layer_multiple "-t" $TMPISO $NO_FILE fi # Image size is exact multiple of layer size minus two sectors, @@ -209,7 +211,7 @@ if try "image crafted to have no padding" no_padding; then $NEWVER --debug -i $TMPISO --random-image 14506 >>$LOGFILE 2>&1 $NEWVER --regtest --debug --set-version $SETVERSION -mRS03 -n20000 -c -i $TMPISO >>$LOGFILE 2>&1 - run_regtest no_padding "-t" $TMPISO + run_regtest no_padding "-t" $TMPISO $NO_FILE fi # Augmented image is protected by an outer RS01 error correction file @@ -271,7 +273,7 @@ if try "crc section with uncorrectable dead sector markers" crc_section_with_unc $NEWVER --debug -i$TMPISO --erase 21081 >>$LOGFILE 2>&1 $NEWVER --debug -i$TMPISO --byteset 21081,353,53 >>$LOGFILE 2>&1 // displaced sector from 25081 - run_regtest crc_section_with_uncorrectable_dsm "-t" $TMPISO + run_regtest crc_section_with_uncorrectable_dsm "-t" $TMPISO $NO_FILE fi # Augmented image containing several uncorrectable dead sector markers @@ -287,7 +289,7 @@ if try "image with uncorrectable dead sector markers" uncorrectable_dsm_in_image $NEWVER --debug -i$TMPISO --erase 4411 >>$LOGFILE 2>&1 $NEWVER --debug -i$TMPISO --byteset 4411,353,53 >>$LOGFILE 2>&1 // displaced from sector 4511 - run_regtest uncorrectable_dsm_in_image "-t" $TMPISO + run_regtest uncorrectable_dsm_in_image "-t" $TMPISO $NO_FILE fi # Augmented image containing several uncorrectable dead sector markers @@ -303,7 +305,7 @@ if try "image with uncorrectable dead sector markers, verbose" uncorrectable_dsm $NEWVER --debug -i$TMPISO --erase 4411 >>$LOGFILE 2>&1 $NEWVER --debug -i$TMPISO --byteset 4411,353,53 >>$LOGFILE 2>&1 // displaced from sector 4511 - run_regtest uncorrectable_dsm_in_image_verbose "-t -v" $TMPISO + run_regtest uncorrectable_dsm_in_image_verbose "-t -v" $TMPISO $NO_FILE fi # Augmented image containing several uncorrectable dead sector markers @@ -319,7 +321,7 @@ if try "ecc section with uncorrectable dead sector markers" ecc_section_with_unc $NEWVER --debug -i$TMPISO --erase 22411 >>$LOGFILE 2>&1 $NEWVER --debug -i$TMPISO --byteset 22411,353,53 >>$LOGFILE 2>&1 // displaced from sector 25411 - run_regtest ecc_section_with_uncorrectable_dsm "-t" $TMPISO + run_regtest ecc_section_with_uncorrectable_dsm "-t" $TMPISO $NO_FILE fi # Augmented image containing several uncorrectable dead sector markers @@ -341,7 +343,7 @@ if try "image with uncorrectable dead sector markers (2)" uncorrectable_dsm_in_i $NEWVER --debug -i$TMPISO --byteset 4411,556,32 >>$LOGFILE 2>&1 // changed label $NEWVER --debug -i$TMPISO --byteset 4411,557,50 >>$LOGFILE 2>&1 // changed label - run_regtest uncorrectable_dsm_in_image2 "-t" $TMPISO + run_regtest uncorrectable_dsm_in_image2 "-t" $TMPISO $NO_FILE fi # Augmented image containing several uncorrectable dead sector markers @@ -363,7 +365,7 @@ if try "image with uncorrectable dead sector markers (2), verbose" uncorrectable $NEWVER --debug -i$TMPISO --byteset 4411,556,32 >>$LOGFILE 2>&1 // changed label $NEWVER --debug -i$TMPISO --byteset 4411,557,50 >>$LOGFILE 2>&1 // changed label - run_regtest uncorrectable_dsm_in_image2_verbose "-t -v" $TMPISO + run_regtest uncorrectable_dsm_in_image2_verbose "-t -v" $TMPISO $NO_FILE fi # Normal sized image with missing iso header. @@ -373,17 +375,38 @@ if try "image with missing iso header" missing_iso_header; then cp $LARGEMASTERISO $TMPISO $NEWVER --debug -i$TMPISO --erase 16 >>$LOGFILE 2>&1 - run_regtest missing_iso_header "-tq -v" $TMPISO + run_regtest missing_iso_header "-tq -v" $TMPISO $NO_FILE fi -# Normal sized image with missing ecc header. +# Normal sized image with missing ecc header (first sector missing). -if try "image with missing ecc header" missing_header; then +if try "image with missing ecc header / first sector" missing_header; then cp $LARGEMASTERISO $TMPISO $NEWVER --debug -i$TMPISO --erase $LMI_HEADER >>$LOGFILE 2>&1 - run_regtest missing_header "-tq -v" $TMPISO + run_regtest missing_header "-t -v" $TMPISO $NO_FILE +fi + +# Normal sized image with missing ecc header (second sector missing). + +if try "image with missing ecc header / second sector" missing_header5; then + + cp $LARGEMASTERISO $TMPISO + $NEWVER --debug -i$TMPISO --erase $((LMI_HEADER+1)) >>$LOGFILE 2>&1 + + run_regtest missing_header5 "-t -v" $TMPISO $NO_FILE +fi + +# Normal sized image with missing ecc header (both sectors missing). + +if try "image with missing ecc header / both sectors missing" missing_header6; then + + cp $LARGEMASTERISO $TMPISO + $NEWVER --debug -i$TMPISO --erase $LMI_HEADER >>$LOGFILE 2>&1 + $NEWVER --debug -i$TMPISO --erase $((LMI_HEADER+1)) >>$LOGFILE 2>&1 + + run_regtest missing_header6 "-t -v" $TMPISO $NO_FILE fi # Normal sized image with missing ecc header; with exhaustive search. @@ -398,11 +421,12 @@ if try "image with missing ecc header (2)" missing_header2; then $NEWVER --debug -i$TMPISO --erase $i >>$LOGFILE 2>&1 done - run_regtest missing_header2 "-tq -v" $TMPISO + run_regtest missing_header2 "-t -v" $TMPISO $NO_FILE fi # Normal sized image with missing ecc header; with exhaustive search. # In the first few slices, the CRC sector and some other sectors are unreadable. +# Note: Layer 167 contains the CRC sectors; redundancy is 87. if try "image with missing ecc header (3)" missing_header3; then @@ -410,20 +434,20 @@ if try "image with missing ecc header (3)" missing_header3; then $NEWVER --debug -i$TMPISO --erase $LMI_HEADER >>$LOGFILE 2>&1 # slice 0 $NEWVER --debug -i$TMPISO --erase $LMI_FIRSTCRC >>$LOGFILE 2>&1 - for i in $(seq $((100*LMI_LAYER_SIZE)) $LMI_LAYER_SIZE $((235*LMI_LAYER_SIZE))); do + for i in $(seq $((150*LMI_LAYER_SIZE)) $LMI_LAYER_SIZE $((236*LMI_LAYER_SIZE))); do $NEWVER --debug -i$TMPISO --erase $i >>$LOGFILE 2>&1 done - # slice 1 + # slice 1 (CRC sector present, but bad sector checksum) $NEWVER --debug -i$TMPISO --byteset $((LMI_FIRSTCRC+1)),500,0 >>$LOGFILE 2>&1 for i in $(seq $((110*LMI_LAYER_SIZE+1)) $LMI_LAYER_SIZE $((140*LMI_LAYER_SIZE+1))); do $NEWVER --debug -i$TMPISO --erase $i >>$LOGFILE 2>&1 done - # slice 2 + # slice 2 (CRC sector present, but bad sector checksum) $NEWVER --debug -i$TMPISO --erase $((LMI_FIRSTCRC+2)) >>$LOGFILE 2>&1 for i in $(seq $((110*LMI_LAYER_SIZE+2)) $LMI_LAYER_SIZE $((140*LMI_LAYER_SIZE+2))); do $NEWVER --debug -i$TMPISO --erase $i >>$LOGFILE 2>&1 done - # slice 3 + # slice 3 (CRC sector present, but bad sector checksum) $NEWVER --debug -i$TMPISO --byteset $((LMI_FIRSTCRC+3)),500,0 >>$LOGFILE 2>&1 for i in $(seq $((110*LMI_LAYER_SIZE+3)) $LMI_LAYER_SIZE $((139*LMI_LAYER_SIZE+3))); do $NEWVER --debug -i$TMPISO --erase $i >>$LOGFILE 2>&1 @@ -431,7 +455,7 @@ if try "image with missing ecc header (3)" missing_header3; then # slice 4 $NEWVER --debug -i$TMPISO --erase $((LMI_FIRSTCRC+4)) >>$LOGFILE 2>&1 - run_regtest missing_header3 "-tq -v" $TMPISO + run_regtest missing_header3 "-t -v" $TMPISO $NO_FILE fi # Normal sized image with missing ecc header; with exhaustive search. @@ -443,7 +467,7 @@ if try "image with missing ecc header (4)" missing_header4; then $NEWVER --debug -i$TMPISO --erase $LMI_HEADER >>$LOGFILE 2>&1 # slice 0 $NEWVER --debug -i$TMPISO --erase $LMI_FIRSTCRC >>$LOGFILE 2>&1 - for i in $(seq $((100*LMI_LAYER_SIZE)) $LMI_LAYER_SIZE $((235*LMI_LAYER_SIZE))); do + for i in $(seq $((100*LMI_LAYER_SIZE)) $LMI_LAYER_SIZE $((186*LMI_LAYER_SIZE))); do $NEWVER --debug -i$TMPISO --erase $i >>$LOGFILE 2>&1 done # slice 1 @@ -464,7 +488,7 @@ if try "image with missing ecc header (4)" missing_header4; then # slices 4-1407 $NEWVER --debug -i$TMPISO --erase $((LMI_FIRSTCRC+4))-$((LMI_FIRSTCRC+1407)) >>$LOGFILE 2>&1 - run_regtest missing_header4 "-tq -v" $TMPISO + run_regtest missing_header4 "-t -v" $TMPISO $NO_FILE fi # Normal sized but truncated image with missing ecc header; with exhaustive search. @@ -480,7 +504,7 @@ if try "image with missing ecc header, truncated" missing_header_truncated; then done $NEWVER --debug -i$TMPISO --truncate=300000 >>$LOGFILE 2>&1 - run_regtest missing_header_truncated "-tq -v" $TMPISO + run_regtest missing_header_truncated "-t -v" $TMPISO $NO_FILE fi # Normal sized image with missing ecc header; with exhaustive search. @@ -495,7 +519,7 @@ if try "image with missing ecc header and no crc sectors" missing_header_no_crcs # delete CRC layer completely $NEWVER --debug -i$TMPISO --erase $((LMI_FIRSTCRC))-$((LMI_FIRSTCRC+1408)) >>$LOGFILE 2>&1 - run_regtest missing_header_no_crcsec "-tq -v" $TMPISO + run_regtest missing_header_no_crcsec "-t -v" $TMPISO $NO_FILE fi # Completely random image (no ecc) @@ -504,7 +528,7 @@ if try "image with no ecc at all" random_image; then $NEWVER --debug -i$TMPISO --random-image 359295 >>$LOGFILE 2>&1 - run_regtest random_image "-tq -v" $TMPISO + run_regtest random_image "-tq -v" $TMPISO $NO_FILE fi # Image with 8 roots (smallest possible case) @@ -516,7 +540,7 @@ if try "image with 8 roots, no ecc header" rediscover_8_roots; then # delete the header $NEWVER --debug -i$TMPISO --erase 346612 >>$LOGFILE 2>&1 - run_regtest rediscover_8_roots "-tq -v" $TMPISO + run_regtest rediscover_8_roots "-t -v" $TMPISO $NO_FILE fi # Image with 8 roots (smallest possible case) @@ -528,7 +552,7 @@ if try "image with 8 roots, no ecc header (2)" rediscover_8_roots2; then # delete the header and some more CRC sectors $NEWVER --debug -i$TMPISO --erase 346612-346620 >>$LOGFILE 2>&1 - run_regtest rediscover_8_roots2 "-tq -v" $TMPISO + run_regtest rediscover_8_roots2 "-t -v" $TMPISO $NO_FILE fi # Image with 170 roots (biggest possible case with no padding) @@ -540,7 +564,7 @@ if try "image with 170 roots, no ecc header" rediscover_170_roots; then # delete the header $NEWVER --debug -i$TMPISO --erase 118354 >>$LOGFILE 2>&1 - run_regtest rediscover_170_roots "-tq -v" $TMPISO + run_regtest rediscover_170_roots "-t -v" $TMPISO $NO_FILE fi # Image with 170 roots (biggest possible case with no padding) @@ -552,7 +576,7 @@ if try "image with 170 roots, no ecc header (2)" rediscover_170_roots2; then # delete the header and some more CRC sectors $NEWVER --debug -i$TMPISO --erase 118354-118360 >>$LOGFILE 2>&1 - run_regtest rediscover_170_roots2 "-tq -v" $TMPISO + run_regtest rediscover_170_roots2 "-t -v" $TMPISO $NO_FILE fi # Image with 170 roots (biggest possible case with padding) @@ -563,7 +587,7 @@ if try "image with 170 roots, padding" rediscover_170_roots_padding; then $NEWVER --debug -i$TMPISO --random-image $((LMI_LAYER_SIZE*84-2-6000)) >>$LOGFILE 2>&1 $NEWVER --regtest --debug --set-version $SETVERSION -i$TMPISO -mRS03 -c -x 2 >>$LOGFILE 2>&1 - run_regtest rediscover_170_roots-padding "-tq -v" $TMPISO + run_regtest rediscover_170_roots-padding "-tq -v" $TMPISO $NO_FILE fi # Image with 170 roots (biggest possible case with padding) @@ -576,7 +600,7 @@ if try "image with 170 roots, no ecc header, padding" rediscover_170_roots_paddi $NEWVER --debug -i$TMPISO --erase 112354 >>$LOGFILE 2>&1 $NEWVER --debug -i$TMPISO --erase 118356-118360 >>$LOGFILE 2>&1 - run_regtest rediscover_170_roots-padding2 "-tq -v" $TMPISO + run_regtest rediscover_170_roots-padding2 "-t -v" $TMPISO $NO_FILE fi # Image contains Ecc header with the ecc file flag set @@ -593,7 +617,8 @@ if try "image with ecc header from a file" with_ecc_file_header; then $NEWVER -i$TMPISO --debug --byteset 21000,98,137 >>$LOGFILE 2>&1 $NEWVER -i$TMPISO --debug --byteset 21000,99,29 >>$LOGFILE 2>&1 - run_regtest with_ecc_file_header "--debug -t -v -n$ECCSIZE" $TMPISO + extra_args="--debug -n$ECCSIZE" + run_regtest with_ecc_file_header "-t -v" $TMPISO $NO_FILE fi # Image contains defective Ecc header @@ -615,7 +640,8 @@ if try "image with crc block from a file" with_ecc_file_crc_block; then $NEWVER -i$TMPISO --debug --byteset 21070,1122,142 >>$LOGFILE 2>&1 $NEWVER -i$TMPISO --debug --byteset 21070,1123,101 >>$LOGFILE 2>&1 - run_regtest with_ecc_file_crc_block "--debug -t -v -n$ECCSIZE" $TMPISO + extra_args="--debug -n$ECCSIZE" + run_regtest with_ecc_file_crc_block "-t -v" $TMPISO $NO_FILE fi # Image contains CRC error in the padding section @@ -627,7 +653,7 @@ if try "image with crc error in padding area" with_crc_error_in_padding; then # Manipulate a padding sector $NEWVER -i$TMPISO --debug --byteset 21020,400,255 >>$LOGFILE 2>&1 - run_regtest with_crc_error_in_padding "--debug -t -n$ECCSIZE" $TMPISO + run_regtest with_crc_error_in_padding "--debug -t -n$ECCSIZE" $TMPISO $NO_FILE fi ### Creation tests @@ -643,7 +669,7 @@ if try "augmented image creation" ecc_create; then replace_config method-name RS03 replace_config ecc-target 1 extra_args="--debug --set-version $SETVERSION" - run_regtest ecc_create "-mRS03 -n$ECCSIZE -c" $TMPISO + run_regtest ecc_create "-mRS03 -n$ECCSIZE -c" $TMPISO $NO_FILE fi # Create with missing image @@ -653,7 +679,7 @@ if try "creating augmented image with missing image" ecc_missing_image; then replace_config method-name RS03 replace_config ecc-target 1 extra_args="--debug --set-version $SETVERSION" - run_regtest ecc_missing_image "-mRS03 -n$ECCSIZE -c" $ISODIR/no.iso + run_regtest ecc_missing_image "-mRS03 -n$ECCSIZE -c" $ISODIR/no.iso $NO_FILE fi # Create with no read permission on image @@ -665,7 +691,7 @@ if try "creating augmented image with no read permission" ecc_no_read_perm; then replace_config method-name RS03 replace_config ecc-target 1 extra_args="--debug --set-version $SETVERSION" - run_regtest ecc_no_read_perm "-mRS03 -n$ECCSIZE -c" $TMPISO + run_regtest ecc_no_read_perm "-mRS03 -n$ECCSIZE -c" $TMPISO $NO_FILE fi # Create with no write permission on image @@ -677,7 +703,7 @@ if try "creating augmented image with no write permission" ecc_no_write_perm; th replace_config method-name RS03 replace_config ecc-target 1 extra_args="--debug --set-version $SETVERSION" - run_regtest ecc_no_write_perm "-mRS03 -n$ECCSIZE -c" $TMPISO + run_regtest ecc_no_write_perm "-mRS03 -n$ECCSIZE -c" $TMPISO $NO_FILE fi # Create with already RS03-augmented image @@ -689,7 +715,7 @@ if try "ecc creating from RS03-augmented image" ecc_from_rs03; then replace_config method-name RS03 replace_config ecc-target 1 extra_args="--debug --set-version $SETVERSION" - run_regtest ecc_from_rs03 "-mRS03 -n$ECCSIZE -c" $TMPISO + run_regtest ecc_from_rs03 "-mRS03 -n$ECCSIZE -c" $TMPISO $NO_FILE fi # Create with already RS02-augmented image @@ -702,7 +728,7 @@ if try "ecc creating from RS02-augmented image" ecc_from_rs02; then replace_config method-name RS03 replace_config ecc-target 1 extra_args="--debug --set-version $SETVERSION" - run_regtest ecc_from_rs02 "-mRS03 -n$ECCSIZE -c" $TMPISO + run_regtest ecc_from_rs02 "-mRS03 -n$ECCSIZE -c" $TMPISO $NO_FILE fi # Create with already RS03-augmented image having a larger redundancy @@ -715,7 +741,7 @@ if try "ecc creating from RS03-augmented image w/ higher red." ecc_from_larger_r replace_config method-name RS03 replace_config ecc-target 1 extra_args="--debug --set-version $SETVERSION" - run_regtest ecc_from_larger_rs03 "-mRS03 -n$ECCSIZE -c" $TMPISO + run_regtest ecc_from_larger_rs03 "-mRS03 -n$ECCSIZE -c" $TMPISO $NO_FILE fi # Create with already RS02-augmented image of a non-2048 multiple size @@ -729,7 +755,7 @@ if try "ecc creating from RS02-augmented image w/ non block size." ecc_from_rs02 replace_config method-name RS03 replace_config ecc-target 1 extra_args="--debug --set-version $SETVERSION" - run_regtest ecc_from_rs02_non_blocksize "-mRS03 -n$ECCSIZE -c -a RS03" $TMPISO + run_regtest ecc_from_rs02_non_blocksize "-mRS03 -n$ECCSIZE -c -a RS03" $TMPISO $NO_FILE fi # Create with already RS03-augmented image of a non-2048 multiple size @@ -743,7 +769,7 @@ if try "ecc creating from RS03-augmented image w/ non block size." ecc_from_rs03 replace_config method-name RS03 replace_config ecc-target 1 extra_args="--debug --set-version $SETVERSION" - run_regtest ecc_from_rs03_non_blocksize "-mRS03 -n$ECCSIZE -c -a RS03" $TMPISO + run_regtest ecc_from_rs03_non_blocksize "-mRS03 -n$ECCSIZE -c -a RS03" $TMPISO $NO_FILE fi # Create with already RS03-augmented image of a non-2048 multiple size, larger redundancy. @@ -758,7 +784,7 @@ if try "ecc creating from RS03-augmented image w/ non block size, larger red." e replace_config method-name RS03 replace_config ecc-target 1 extra_args="--debug --set-version $SETVERSION" - run_regtest ecc_from_larger_rs03_non_blocksize "-mRS03 -n$ECCSIZE -c" $TMPISO + run_regtest ecc_from_larger_rs03_non_blocksize "-mRS03 -n$ECCSIZE -c" $TMPISO $NO_FILE fi # Create ecc file for image with 56 additional bytes @@ -772,7 +798,7 @@ if try "image with 56 extra bytes" ecc_non_blocksize; then replace_config method-name RS03 replace_config ecc-target 1 extra_args="--debug --set-version $SETVERSION" - run_regtest ecc_non_blocksize "-mRS03 -n$ECCSIZE -c" $TMPISO + run_regtest ecc_non_blocksize "-mRS03 -n$ECCSIZE -c" $TMPISO $NO_FILE fi # Try to create ecc file from image with missing sectors @@ -784,7 +810,7 @@ if try "creating ecc from image with missing sectors" ecc_missing_sectors; then replace_config method-name RS03 replace_config ecc-target 1 extra_args="--debug --set-version $SETVERSION" - run_regtest ecc_missing_sectors "-mRS03 -n$ECCSIZE -c" $TMPISO + run_regtest ecc_missing_sectors "-mRS03 -n$ECCSIZE -c" $TMPISO $NO_FILE fi # Create ecc file where image size is exact multiple of layer size, @@ -798,7 +824,7 @@ if try "creating ecc, image is multiple of layer size" ecc_layer_multiple; then replace_config ecc-target 1 replace_config medium-size 20000 extra_args="--debug --set-version $SETVERSION" - run_regtest ecc_layer_multiple "-mRS03 -n20000 -c" $TMPISO + run_regtest ecc_layer_multiple "-mRS03 -n20000 -c" $TMPISO $NO_FILE fi # Create ecc file where image size is exact multiple of layer size minus two sectors, @@ -812,19 +838,22 @@ if try "creating ecc crafted to have no padding" ecc_no_padding; then replace_config ecc-target 1 replace_config medium-size 20000 extra_args="--debug --set-version $SETVERSION" - run_regtest ecc_no_padding "-mRS03 -n20000 -c" $TMPISO + run_regtest ecc_no_padding "-mRS03 -n20000 -c" $TMPISO $NO_FILE fi # Read image and create ecc in the same program call. # Tests whether CRC and ECC information is handed over correctly. +# Note: GUI mode will NOT automatically augment the image. if try "read image and create ecc in one call" ecc_create_after_read; then $NEWVER --debug -i$SIMISO --random-image $ISOSIZE >>$LOGFILE 2>&1 IGNORE_LOG_LINE="^Avg performance|^Augmenting image with Method RS03" - replace_config read-and-create 1 + replace_config method-name RS03 + replace_config ecc-target 1 + replace_config read-and-create 1 # intentionall ignored extra_args="--debug --set-version $SETVERSION --sim-cd=$SIMISO --fixed-speed-values" - run_regtest ecc_create_after_read "-r -mRS03 -c -n$ECCSIZE -v --spinup-delay=0" $TMPISO $TMPECC + run_regtest ecc_create_after_read "-r -mRS03 -c -n$ECCSIZE -v --spinup-delay=0" $TMPISO $NO_FILE fi # Complete image in a reading pass, then create an ecc file for it. @@ -836,6 +865,8 @@ if try "create ecc after completing partial image" ecc_create_after_partial_read $NEWVER --debug -i$TMPISO --erase 1000-1500 >>$LOGFILE 2>&1 IGNORE_LOG_LINE="^Avg performance|^Augmenting image with Method RS03" + replace_config method-name RS03 + replace_config ecc-target 1 extra_args="--debug --set-version $SETVERSION --sim-cd=$SIMISO --fixed-speed-values" run_regtest ecc_create_after_partial_read "-r -mRS03 -c -n$ECCSIZE -v --spinup-delay=0" $TMPISO $TMPECC fi @@ -848,6 +879,9 @@ if try "read image with ecc (RS01) and create new ecc" ecc_recreate_after_read_r $NEWVER --regtest --debug --set-version $SETVERSION -i$SIMISO -e $TMPECC -mRS01 -c -n 10 >>$LOGFILE 2>&1 IGNORE_LOG_LINE="^Avg performance|^Augmenting image with Method RS03" + replace_config method-name RS03 + replace_config ecc-target 1 + replace_config verbose 1 extra_args="--debug --set-version $SETVERSION --sim-cd=$SIMISO --fixed-speed-values" run_regtest ecc_recreate_after_read_rs01 "-r -mRS03 -c -n$ECCSIZE -v --spinup-delay=0" $TMPISO $TMPECC fi @@ -860,6 +894,9 @@ if try "read image with ecc (RS02) and create new ecc" ecc_recreate_after_read_r $NEWVER --regtest --debug --set-version $SETVERSION -i$SIMISO -mRS02 -c -n24000 >>$LOGFILE 2>&1 IGNORE_LOG_LINE="^Avg performance|^Augmenting image with Method RS03" + replace_config method-name RS03 + replace_config ecc-target 1 + replace_config verbose 1 extra_args="--debug --set-version $SETVERSION --sim-cd=$SIMISO --fixed-speed-values" run_regtest ecc_recreate_after_read_rs02 "-r -mRS03 -c -n$ECCSIZE -v --spinup-delay=0" $TMPISO $TMPECC fi @@ -872,6 +909,9 @@ if try "read image with ecc (RS03i) and create new ecc" ecc_recreate_after_read_ $NEWVER --regtest --debug --set-version $SETVERSION -i$SIMISO -mRS03 -c -n23000 >>$LOGFILE 2>&1 IGNORE_LOG_LINE="^Avg performance|^Augmenting image with Method RS03" + replace_config method-name RS03 + replace_config ecc-target 1 + replace_config verbose 1 extra_args="--debug --set-version $SETVERSION --sim-cd=$SIMISO --fixed-speed-values" run_regtest ecc_recreate_after_read_rs03i "-r -mRS03 -c -n$ECCSIZE -v --spinup-delay=0" $TMPISO $TMPECC fi @@ -884,6 +924,9 @@ if try "read image with ecc (RS03f) and create new ecc" ecc_recreate_after_read_ $NEWVER --regtest --debug --set-version $SETVERSION -i$SIMISO -e $TMPECC -mRS03 -c -n 10 -o file >>$LOGFILE 2>&1 IGNORE_LOG_LINE="^Avg performance|^Augmenting image with Method RS03" + replace_config method-name RS03 + replace_config ecc-target 1 + replace_config verbose 1 extra_args="--debug --set-version $SETVERSION --sim-cd=$SIMISO --fixed-speed-values" run_regtest ecc_recreate_after_read_rs03f "-r -mRS03 -c -n$ECCSIZE -v --spinup-delay=0" $TMPISO $TMPECC fi @@ -898,7 +941,7 @@ if try "trying fix with no read permission" fix_no_read_perm; then $NEWVER --debug -i$TMPISO --random-image $ISOSIZE >>$LOGFILE 2>&1 chmod 000 $TMPISO - run_regtest fix_no_read_perm "-f" $TMPISO + run_regtest fix_no_read_perm "-f" $TMPISO $NO_FILE fi # Fix with no write permission on image @@ -907,7 +950,7 @@ if try "trying fix with no write permission" fix_no_write_perm; then $NEWVER --debug -i$TMPISO --random-image $ISOSIZE >>$LOGFILE 2>&1 chmod 400 $TMPISO - run_regtest fix_no_write_perm "-f" $TMPISO + run_regtest fix_no_write_perm "-f" $TMPISO $NO_FILE fi # Fix already good image @@ -915,7 +958,7 @@ fi if try "trying fix with good image" fix_good_image; then cp $MASTERISO $TMPISO - run_regtest fix_good_image "-f" $TMPISO + run_regtest fix_good_image "-f" $TMPISO $NO_FILE fi # Fix a truncated image @@ -925,7 +968,7 @@ if try "trying fix with truncated image" fix_truncated_image; then cp $MASTERISO $TMPISO $NEWVER --debug -i$TMPISO --truncate=$TRUNC_SIZE >>$LOGFILE 2>&1 - run_regtest fix_truncated_image "-f" $TMPISO + run_regtest fix_truncated_image "-f" $TMPISO $NO_FILE fi # Fix an image with a few trailing bytes @@ -934,7 +977,7 @@ if try "trying fix with trailing bytes" fix_trailing_bytes; then cp $MASTERISO $TMPISO echo "some trailing garbage appended for testing" >>$TMPISO - run_regtest fix_trailing_bytes "-f" $TMPISO + run_regtest fix_trailing_bytes "-f" $TMPISO $NO_FILE fi # Fix an image with trailing garbage (TAO case) @@ -943,7 +986,7 @@ if try "trying fix with trailing garbage (TAO case)" fix_trailing_tao; then cp $MASTERISO $TMPISO dd if=/dev/zero count=2 bs=2048 >>$TMPISO 2>>$LOGFILE - run_regtest fix_trailing_tao "-f" $TMPISO + run_regtest fix_trailing_tao "-f" $TMPISO $NO_FILE fi # Fix an image with trailing garbage (general case), without doing anything @@ -952,7 +995,7 @@ if try "trying fix with trailing garbage (general case)" fix_trailing_garbage; t cp $MASTERISO $TMPISO dd if=/dev/zero count=23 bs=2048 >>$TMPISO 2>>$LOGFILE - run_regtest fix_trailing_garbage "-f" $TMPISO + run_regtest fix_trailing_garbage "-f" $TMPISO $NO_FILE fi # Fix an image with trailing garbage (general case), with --truncate @@ -961,7 +1004,7 @@ if try "trying fix with trailing garbage with --truncate" fix_trailing_garbage2; cp $MASTERISO $TMPISO dd if=/dev/zero count=23 bs=2048 >>$TMPISO 2>>$LOGFILE - run_regtest fix_trailing_garbage2 "-f --truncate" $TMPISO + run_regtest fix_trailing_garbage2 "-f --truncate" $TMPISO $NO_FILE fi # Fix image with missing sectors (real damage and everything else being okay) @@ -972,7 +1015,7 @@ if try "trying to fix correctable image" fix_correctable; then $NEWVER --debug -i$TMPISO --erase 1000 >>$LOGFILE 2>&1 $NEWVER --debug -i$TMPISO --byteset 2000,0,111 >>$LOGFILE 2>&1 - run_regtest fix_correctable "-f" $TMPISO + run_regtest fix_correctable "-f" $TMPISO $NO_FILE fi # Fix image with missing sectors in several border locations @@ -997,7 +1040,7 @@ if try "trying to fix image with missing sectors in border cases" fix_border_cas $NEWVER --debug -i$TMPISO --erase 21363 >>$LOGFILE 2>&1 # last sector, second ecc layer $NEWVER --debug -i$TMPISO --erase 24989 >>$LOGFILE 2>&1 # last sector, last ecc layer - run_regtest fix_border_cases_erasures "-f" $TMPISO + run_regtest fix_border_cases_erasures "-f" $TMPISO $NO_FILE fi # Fix image with CRC errors in several border locations @@ -1022,7 +1065,7 @@ if try "trying to fix image with crc errors in border cases" fix_border_cases_cr $NEWVER --debug -i$TMPISO --byteset 21363,0,0 >>$LOGFILE 2>&1 # last sector, second ecc layer $NEWVER --debug -i$TMPISO --byteset 24989,0,0 >>$LOGFILE 2>&1 # last sector, last ecc layer - run_regtest fix_border_cases_crc_errors "-f" $TMPISO + run_regtest fix_border_cases_crc_errors "-f" $TMPISO $NO_FILE fi # Fix ecc file where image size is exact multiple of layer size, @@ -1034,7 +1077,7 @@ if try "fixing ecc, image is multiple of layer size" fix_layer_multiple; then $NEWVER --debug -i$TMPISO --erase 500-524 >>$LOGFILE 2>&1 $NEWVER --debug -i$TMPISO --erase 14510-14520 >>$LOGFILE 2>&1 - run_regtest fix_layer_multiple "-f" $TMPISO + run_regtest fix_layer_multiple "-f" $TMPISO $NO_FILE fi # Fix ecc file where image size is exact multiple of layer size minus two sectors, @@ -1045,7 +1088,7 @@ if try "fixing ecc crafted to have no padding" fix_no_padding; then $NEWVER --regtest --debug --set-version $SETVERSION -mRS03 -n20000 -c -i $TMPISO >>$LOGFILE 2>&1 $NEWVER --debug -i$TMPISO --erase 500-524 >>$LOGFILE 2>&1 - run_regtest fix_no_padding "-f" $TMPISO + run_regtest fix_no_padding "-f" $TMPISO $NO_FILE fi # Augmented image is protected by an outer RS01 error correction file @@ -1080,7 +1123,7 @@ if try "trying fix with missing header" fix_with_missing_header; then $NEWVER --debug -i$TMPISO --erase $ISOSIZE >>$LOGFILE 2>&1 extra_args="--debug -n $ECCSIZE" - run_regtest fix_with_missing_header "-f -v" $TMPISO + run_regtest fix_with_missing_header "-f -v" $TMPISO $NO_FILE fi # Fix image with iso missing header @@ -1090,10 +1133,11 @@ if try "trying fix with missing iso header" fix_with_missing_iso_header; then $NEWVER --debug -i$TMPISO --erase 16 >>$LOGFILE 2>&1 extra_args="--debug -n $ECCSIZE" - run_regtest fix_with_missing_iso_header "-f -v" $TMPISO + run_regtest fix_with_missing_iso_header "-f -v" $TMPISO $NO_FILE fi # Image contains Ecc header with the ecc file flag set +# Header should be ignored and repaired if try "image with ecc header from a file" fix_with_ecc_file_header; then cp $MASTERISO $TMPISO @@ -1107,8 +1151,9 @@ if try "image with ecc header from a file" fix_with_ecc_file_header; then $NEWVER -i$TMPISO --debug --byteset 21000,98,137 >>$LOGFILE 2>&1 $NEWVER -i$TMPISO --debug --byteset 21000,99,29 >>$LOGFILE 2>&1 + replace_config verbose 1 extra_args="--debug -n $ECCSIZE" - run_regtest fix_with_ecc_file_header "-f -v" $TMPISO + run_regtest fix_with_ecc_file_header "-f -v" $TMPISO $NO_FILE fi # Image contains defective Ecc header @@ -1131,7 +1176,7 @@ if try "image with crc block from a file" fix_with_ecc_file_crc_block; then $NEWVER -i$TMPISO --debug --byteset 21070,1123,101 >>$LOGFILE 2>&1 extra_args="--debug -n $ECCSIZE" - run_regtest fix_with_ecc_file_crc_block "-f -v" $TMPISO + run_regtest fix_with_ecc_file_crc_block "-f -v" $TMPISO $NO_FILE fi # Image contains CRC error in the padding section @@ -1144,7 +1189,7 @@ if try "image with crc error in padding area" fix_with_crc_error_in_padding; the $NEWVER -i$TMPISO --debug --byteset 21020,400,255 >>$LOGFILE 2>&1 extra_args="--debug -n $ECCSIZE" - run_regtest fix_with_crc_error_in_padding "-f" $TMPISO + run_regtest fix_with_crc_error_in_padding "-f" $TMPISO $NO_FILE fi ### Scanning tests @@ -1157,7 +1202,7 @@ if try "scanning good image" scan_good; then cp $MASTERISO $SIMISO extra_args="--debug --sim-cd=$SIMISO --fixed-speed-values" - run_regtest scan_good "--spinup-delay=0 -s" $TMPISO + run_regtest scan_good "--spinup-delay=0 -s" $TMPISO $NO_FILE fi # Scan complete / optimal image, verbose output @@ -1166,7 +1211,7 @@ if try "scanning good image, verbose output" scan_good_verbose; then cp $MASTERISO $SIMISO extra_args="--debug --sim-cd=$SIMISO --fixed-speed-values" - run_regtest scan_good_verbose "--spinup-delay=0 -s -v" $TMPISO + run_regtest scan_good_verbose "--spinup-delay=0 -s -v" $TMPISO $NO_FILE fi # Scan image which is shorter than expected @@ -1179,7 +1224,7 @@ if try "scanning image being shorter than expected" scan_shorter; then $NEWVER --debug -i$SIMISO --truncate=$((REAL_ECCSIZE-44)) >>$LOGFILE 2>&1 extra_args="--debug --sim-cd=$SIMISO --fixed-speed-values" - run_regtest scan_shorter "--spinup-delay=0 -s" $TMPISO + run_regtest scan_shorter "--spinup-delay=0 -s" $TMPISO $NO_FILE fi # Scan image which is longer than expected @@ -1191,11 +1236,10 @@ if try "scanning image being longer than expected" scan_longer; then for i in $(seq 23); do cat fixed-random-sequence >>$SIMISO; done extra_args="--debug --sim-cd=$SIMISO --fixed-speed-values" - run_regtest scan_longer "--spinup-delay=0 -s -v" $TMPISO + run_regtest scan_longer "--spinup-delay=0 -s -v" $TMPISO $NO_FILE fi # Scan image with two multisession link sectors appended. -# Will return image in its original length. if try "scanning image, tao tail case" scan_tao_tail; then cp $MASTERISO $SIMISO @@ -1204,7 +1248,7 @@ if try "scanning image, tao tail case" scan_tao_tail; then $NEWVER --debug -i$SIMISO --erase 24990-24991 >>$LOGFILE 2>&1 extra_args="--debug --sim-cd=$SIMISO --fixed-speed-values" - run_regtest scan_tao_tail "--spinup-delay=0 -s" $TMPISO + run_regtest scan_tao_tail "--spinup-delay=0 -s" $TMPISO $NO_FILE fi # Scan image with two real sectors missing at the end. @@ -1216,7 +1260,7 @@ if try "scanning image, no tao tail case" scan_no_tao_tail; then $NEWVER --debug -i$SIMISO --erase 24988-24989 >>$LOGFILE 2>&1 extra_args="--debug --sim-cd=$SIMISO --fixed-speed-values" - run_regtest scan_no_tao_tail "--spinup-delay=0 -s --dao" $TMPISO + run_regtest scan_no_tao_tail "--spinup-delay=0 -s --dao" $TMPISO $NO_FILE fi # Scan an image for which ecc information is available, @@ -1243,7 +1287,7 @@ if try "scanning image requiring a newer dvdisaster version" scan_incompatible_e extra_args="--debug --sim-cd=$SIMISO --fixed-speed-values" IGNORE_LOG_LINE='^\* $' - run_regtest scan_incompatible_ecc "--spinup-delay=0 -s " $TMPISO + run_regtest scan_incompatible_ecc "--spinup-delay=0 -s " $TMPISO $NO_FILE unset IGNORE_LOG_LINE fi @@ -1256,7 +1300,7 @@ if try "scanning image with a defective header" scan_bad_header; then $NEWVER -i$SIMISO --debug --byteset 21000,1,1 >>$LOGFILE 2>&1 extra_args="--debug --sim-cd=$SIMISO --fixed-speed-values" - run_regtest scan_bad_header "--spinup-delay=0 -s" $TMPISO + run_regtest scan_bad_header "--spinup-delay=0 -s" $TMPISO $NO_FILE fi # Image contains 2 rows of missing sectors and a single one @@ -1269,7 +1313,7 @@ if try "scanning image with missing data sectors" scan_missing_data_sectors; the $NEWVER -i$SIMISO --debug --erase 22450-22457 >>$LOGFILE 2>&1 extra_args="--debug --sim-cd=$SIMISO --fixed-speed-values" - run_regtest scan_missing_data_sectors "--spinup-delay=0 -s " $TMPISO + run_regtest scan_missing_data_sectors "--spinup-delay=0 -s " $TMPISO $NO_FILE fi # Image contains 1 row of missing sectors and a single one @@ -1281,7 +1325,7 @@ if try "scanning image with missing crc sectors" scan_missing_crc_sectors; then $NEWVER -i$SIMISO --debug --erase 21100-21120 >>$LOGFILE 2>&1 extra_args="--debug --sim-cd=$SIMISO --fixed-speed-values" - run_regtest scan_missing_crc_sectors "--spinup-delay=0 -s " $TMPISO + run_regtest scan_missing_crc_sectors "--spinup-delay=0 -s " $TMPISO $NO_FILE fi # Image contains 1 row of missing sectors and a single one @@ -1293,7 +1337,7 @@ if try "scanning image with missing ecc sectors" scan_missing_ecc_sectors; then $NEWVER -i$SIMISO --debug --erase 21340-21365 >>$LOGFILE 2>&1 extra_args="--debug --sim-cd=$SIMISO --fixed-speed-values" - run_regtest scan_missing_ecc_sectors "--spinup-delay=0 -s " $TMPISO + run_regtest scan_missing_ecc_sectors "--spinup-delay=0 -s " $TMPISO $NO_FILE fi # Image contains bad byte in the data section @@ -1303,7 +1347,7 @@ if try "scanning image with bad data byte" scan_data_bad_byte; then $NEWVER -i$SIMISO --debug --byteset 1235,50,10 >>$LOGFILE 2>&1 extra_args="--debug --sim-cd=$SIMISO --fixed-speed-values" - run_regtest scan_data_bad_byte "--spinup-delay=0 -s " $TMPISO + run_regtest scan_data_bad_byte "--spinup-delay=0 -s " $TMPISO $NO_FILE fi # Image contains bad byte in the crc section @@ -1313,7 +1357,7 @@ if try "scanning image with bad crc byte" scan_crc_bad_byte; then $NEWVER -i$SIMISO --debug --byteset 21077,50,10 >>$LOGFILE 2>&1 extra_args="--debug --sim-cd=$SIMISO --fixed-speed-values" - run_regtest scan_crc_bad_byte "--spinup-delay=0 -s " $TMPISO + run_regtest scan_crc_bad_byte "--spinup-delay=0 -s " $TMPISO $NO_FILE fi # Image contains bad byte in the ecc section @@ -1323,7 +1367,7 @@ if try "scanning image with bad ecc byte" scan_ecc_bad_byte; then $NEWVER -i$SIMISO --debug --byteset 22000,50,10 >>$LOGFILE 2>&1 extra_args="--debug --sim-cd=$SIMISO --fixed-speed-values" - run_regtest scan_ecc_bad_byte "--spinup-delay=0 -s " $TMPISO + run_regtest scan_ecc_bad_byte "--spinup-delay=0 -s " $TMPISO $NO_FILE fi # Augmented image is protected by an outer RS01 error correction file @@ -1348,7 +1392,7 @@ fi # Ignore for now and debug later. # Should we change this behaviour? # Expected behaviour for verify is to report the non-matching ecc file -# rather than falling back to using the RS02 part since the +# rather than falling back to using the RS03 part since the # user did probably have some intentention specifying the ecc file. if try "scanning with non-matching RS01 error correction file" scan_with_wrong_rs01_file; then @@ -1395,6 +1439,7 @@ if try "scanning with missing ecc header, no exhaustive search" scan_missing_hea cp $LARGEMASTERISO $SIMISO $NEWVER --debug -i$SIMISO --erase $LMI_HEADER >>$LOGFILE 2>&1 + replace_config verbose 1 extra_args="--debug --sim-cd=$SIMISO --fixed-speed-values" run_regtest scan_missing_header_not_exhaustive "--spinup-delay=0 -s" $TMPISO $TMPECC fi @@ -1408,6 +1453,7 @@ if try "scanning with missing ecc header" scan_missing_header; then replace_config examine-rs03 1 replace_config medium-size 0 + replace_config verbose 1 extra_args="--debug --sim-cd=$SIMISO --fixed-speed-values" run_regtest scan_missing_header "--spinup-delay=0 -a RS03 -s -v" $TMPISO $TMPECC fi @@ -1426,6 +1472,7 @@ if try "scanning with missing ecc header (2)" scan_missing_header2; then replace_config examine-rs03 1 replace_config medium-size 0 + replace_config verbose 1 extra_args="--debug --sim-cd=$SIMISO --fixed-speed-values" run_regtest scan_missing_header2 "--spinup-delay=0 -a RS03 -s -v" $TMPISO $TMPECC fi @@ -1462,6 +1509,7 @@ if try "scanning with missing ecc header (3)" scan_missing_header3; then replace_config examine-rs03 1 replace_config medium-size 0 + replace_config verbose 1 extra_args="--debug --sim-cd=$SIMISO --fixed-speed-values" run_regtest scan_missing_header3 "--spinup-delay=0 -a RS03 -s -v" $TMPISO $TMPECC fi @@ -1498,6 +1546,7 @@ if try "scanning with missing ecc header (4)" scan_missing_header4; then replace_config examine-rs03 1 replace_config medium-size 0 + replace_config verbose 1 extra_args="--debug --sim-cd=$SIMISO --fixed-speed-values" run_regtest scan_missing_header4 "--spinup-delay=0 -a RS03 -s -v" $TMPISO $TMPECC fi @@ -1517,6 +1566,7 @@ if try "scanning with missing ecc header, truncated" scan_missing_header_truncat replace_config examine-rs03 1 replace_config medium-size 0 + replace_config verbose 1 extra_args="--debug --sim-cd=$SIMISO --fixed-speed-values" run_regtest scan_missing_header_truncated "--spinup-delay=0 -a RS03 -s -v" $TMPISO $TMPECC fi @@ -1560,6 +1610,7 @@ if try "scanning with 8 roots, no ecc header" scan_rediscover_8_roots; then replace_config examine-rs03 1 replace_config medium-size 0 + replace_config verbose 1 extra_args="--debug --sim-cd=$SIMISO --fixed-speed-values" run_regtest scan_rediscover_8_roots "--spinup-delay=0 -a RS03 -s -v" $TMPISO $TMPECC fi @@ -1575,6 +1626,7 @@ if try "scanning with 8 roots, no ecc header (2)" scan_rediscover_8_roots2; then replace_config examine-rs03 1 replace_config medium-size 0 + replace_config verbose 1 extra_args="--debug --sim-cd=$SIMISO --fixed-speed-values" run_regtest scan_rediscover_8_roots2 "--spinup-delay=0 -a RS03 -s -v" $TMPISO $TMPECC fi @@ -1590,6 +1642,7 @@ if try "scanning with 170 roots, no ecc header" scan_rediscover_170_roots; then replace_config examine-rs03 1 replace_config medium-size 0 + replace_config verbose 1 extra_args="--debug --sim-cd=$SIMISO --fixed-speed-values" run_regtest scan_rediscover_170_roots "--spinup-delay=0 -a RS03 -s -v" $TMPISO $TMPECC fi @@ -1605,6 +1658,7 @@ if try "scanning with 170 roots, no ecc header (2)" scan_rediscover_170_roots2; replace_config examine-rs03 1 replace_config medium-size 0 + replace_config verbose 1 extra_args="--debug --sim-cd=$SIMISO --fixed-speed-values" run_regtest scan_rediscover_170_roots2 "--spinup-delay=0 -a RS03 -s -v" $TMPISO $TMPECC fi @@ -1619,6 +1673,7 @@ if try "scanning with 170 roots, padding" scan_rediscover_170_roots_padding; the replace_config examine-rs03 1 replace_config medium-size 0 + replace_config verbose 1 extra_args="--debug --sim-cd=$SIMISO --fixed-speed-values" run_regtest scan_rediscover_170_roots-padding "--spinup-delay=0 -a RS03 -s -v" $TMPISO $TMPECC fi @@ -1635,6 +1690,7 @@ if try "scanning with 170 roots, no ecc header, padding" scan_rediscover_170_roo replace_config examine-rs03 1 replace_config medium-size 0 + replace_config verbose 1 extra_args="--debug --sim-cd=$SIMISO --fixed-speed-values" run_regtest scan_rediscover_170_roots-padding2 "--spinup-delay=0 -a RS03 -s -v" $TMPISO $TMPECC fi @@ -1651,7 +1707,7 @@ if try "scanning image with crc error in padding area" scan_with_crc_error_in_pa replace_config examine-rs03 1 replace_config medium-size 0 extra_args="--debug --sim-cd=$SIMISO --fixed-speed-values" - run_regtest scan_with_crc_error_in_padding "--spinup-delay=0 -a RS03 -s" $TMPISO + run_regtest scan_with_crc_error_in_padding "--spinup-delay=0 -a RS03 -s" $TMPISO $NO_FILE fi ### Reading tests (linear) @@ -1664,7 +1720,7 @@ if try "reading good image" read_good; then cp $MASTERISO $SIMISO extra_args="--debug --sim-cd=$SIMISO --fixed-speed-values" - run_regtest read_good "--spinup-delay=0 -r" $TMPISO + run_regtest read_good "--spinup-delay=0 -r" $TMPISO $NO_FILE fi # Read complete / optimal image, verbose output @@ -1673,7 +1729,7 @@ if try "reading good image, verbose output" read_good_verbose; then cp $MASTERISO $SIMISO extra_args="--debug --sim-cd=$SIMISO --fixed-speed-values" - run_regtest read_good_verbose "--spinup-delay=0 -r -v" $TMPISO + run_regtest read_good_verbose "--spinup-delay=0 -r -v" $TMPISO $NO_FILE fi # Read into existing and complete image file @@ -1683,7 +1739,7 @@ if try "reading good image in good file" read_good_file; then cp $MASTERISO $TMPISO extra_args="--debug --sim-cd=$SIMISO --fixed-speed-values" - run_regtest read_good_file "--spinup-delay=0 -r" $TMPISO + run_regtest read_good_file "--spinup-delay=0 -r" $TMPISO $NO_FILE fi # Read image which is shorter than expected @@ -1696,7 +1752,7 @@ if try "reading image being shorter than expected" read_shorter; then $NEWVER --debug -i$SIMISO --truncate=$((REAL_ECCSIZE-44)) >>$LOGFILE 2>&1 extra_args="--debug --sim-cd=$SIMISO --fixed-speed-values" - run_regtest read_shorter "--spinup-delay=0 -r" $TMPISO + run_regtest read_shorter "--spinup-delay=0 -r" $TMPISO $NO_FILE fi # Read image which is longer than expected @@ -1708,7 +1764,7 @@ if try "reading image being longer than expected" read_longer; then for i in $(seq 23); do cat fixed-random-sequence >>$SIMISO; done extra_args="--debug --sim-cd=$SIMISO --fixed-speed-values" - run_regtest read_longer "--spinup-delay=0 -r -v" $TMPISO + run_regtest read_longer "--spinup-delay=0 -r -v" $TMPISO $NO_FILE fi # Read image with two multisession link sectors appended. @@ -1721,7 +1777,7 @@ if try "reading image, tao tail case" read_tao_tail; then $NEWVER --debug -i$SIMISO --erase 24990-24991 >>$LOGFILE 2>&1 extra_args="--debug --sim-cd=$SIMISO --fixed-speed-values" - run_regtest read_tao_tail "--spinup-delay=0 -r" $TMPISO + run_regtest read_tao_tail "--spinup-delay=0 -r" $TMPISO $NO_FILE fi # Read image with two real sectors missing at the end. @@ -1734,7 +1790,7 @@ if try "reading image, no tao tail case" read_no_tao_tail; then $NEWVER --debug -i$SIMISO --erase 24988-24989 >>$LOGFILE 2>&1 extra_args="--debug --sim-cd=$SIMISO --fixed-speed-values" - run_regtest read_no_tao_tail "--spinup-delay=0 -r --dao" $TMPISO + run_regtest read_no_tao_tail "--spinup-delay=0 -r --dao" $TMPISO $NO_FILE fi # Read an image for which ecc information is available, @@ -1761,7 +1817,7 @@ if try "reading image requiring a newer dvdisaster version" read_incompatible_ec extra_args="--debug --sim-cd=$SIMISO --fixed-speed-values" IGNORE_LOG_LINE='^\* $' - run_regtest read_incompatible_ecc "--spinup-delay=0 -r " $TMPISO + run_regtest read_incompatible_ecc "--spinup-delay=0 -r " $TMPISO $NO_FILE unset IGNORE_LOG_LINE fi @@ -1774,7 +1830,7 @@ if try "reading image with a defective header" read_bad_header; then $NEWVER -i$SIMISO --debug --byteset 21000,1,1 >>$LOGFILE 2>&1 extra_args="--debug --sim-cd=$SIMISO --fixed-speed-values" - run_regtest read_bad_header "--spinup-delay=0 -r" $TMPISO + run_regtest read_bad_header "--spinup-delay=0 -r" $TMPISO $NO_FILE fi # Read an image containing a defective ECC header. @@ -1785,8 +1841,9 @@ if try "reading image with a defective header, exhaustive" read_bad_header_exhau cp $MASTERISO $SIMISO $NEWVER -i$SIMISO --debug --byteset 21000,1,1 >>$LOGFILE 2>&1 + replace_config examine-rs03 1 extra_args="--debug --sim-cd=$SIMISO --fixed-speed-values" - run_regtest read_bad_header_exhaustive "--debug --spinup-delay=0 -r -v -aRS03 -n$ECCSIZE" $TMPISO + run_regtest read_bad_header_exhaustive "--debug --spinup-delay=0 -r -v -aRS03 -n$ECCSIZE" $TMPISO $NO_FILE fi # Image contains 2 rows of missing sectors and a single one @@ -1799,7 +1856,7 @@ if try "reading image with missing data sectors" read_missing_data_sectors; then $NEWVER -i$SIMISO --debug --erase 22450-22457 >>$LOGFILE 2>&1 extra_args="--debug --sim-cd=$SIMISO --fixed-speed-values" - run_regtest read_missing_data_sectors "--spinup-delay=0 -r " $TMPISO + run_regtest read_missing_data_sectors "--spinup-delay=0 -r " $TMPISO $NO_FILE fi # Image contains 1 row of missing sectors and a single one @@ -1811,7 +1868,7 @@ if try "reading image with missing crc sectors" read_missing_crc_sectors; then $NEWVER -i$SIMISO --debug --erase 21100-21120 >>$LOGFILE 2>&1 extra_args="--debug --sim-cd=$SIMISO --fixed-speed-values" - run_regtest read_missing_crc_sectors "--spinup-delay=0 -r " $TMPISO + run_regtest read_missing_crc_sectors "--spinup-delay=0 -r " $TMPISO $NO_FILE fi # Image contains 1 row of missing sectors and a single one @@ -1823,7 +1880,7 @@ if try "reading image with missing ecc sectors" read_missing_ecc_sectors; then $NEWVER -i$SIMISO --debug --erase 21340-21365 >>$LOGFILE 2>&1 extra_args="--debug --sim-cd=$SIMISO --fixed-speed-values" - run_regtest read_missing_ecc_sectors "--spinup-delay=0 -r " $TMPISO + run_regtest read_missing_ecc_sectors "--spinup-delay=0 -r " $TMPISO $NO_FILE fi # Read image with missing iso header, exhaustive search, verbose. @@ -1833,8 +1890,10 @@ if try "reading image with missing iso header" read_missing_iso_header; then cp $MASTERISO $SIMISO $NEWVER -i$SIMISO --debug --erase 16 >>$LOGFILE 2>&1 + replace_config examine-rs03 1 + replace_config verbose 1 extra_args="--debug --sim-cd=$SIMISO --fixed-speed-values" - run_regtest read_missing_iso_header "--spinup-delay=0 -r -v -aRS03 -n$ECCSIZE" $TMPISO + run_regtest read_missing_iso_header "--spinup-delay=0 -r -v -aRS03 -n$ECCSIZE" $TMPISO $NO_FILE fi # Image contains bad byte in the data section @@ -1846,7 +1905,7 @@ if try "reading image with bad data byte" read_data_bad_byte; then $NEWVER -i$SIMISO --debug --byteset 20999,50,10 >>$LOGFILE 2>&1 extra_args="--debug --sim-cd=$SIMISO --fixed-speed-values" - run_regtest read_data_bad_byte "--spinup-delay=0 -r " $TMPISO + run_regtest read_data_bad_byte "--spinup-delay=0 -r " $TMPISO $NO_FILE fi # Image contains bad byte in the crc section @@ -1856,7 +1915,7 @@ if try "reading image with bad crc byte" read_crc_bad_byte; then $NEWVER -i$SIMISO --debug --byteset 21077,50,10 >>$LOGFILE 2>&1 extra_args="--debug --sim-cd=$SIMISO --fixed-speed-values" - run_regtest read_crc_bad_byte "--spinup-delay=0 -r " $TMPISO + run_regtest read_crc_bad_byte "--spinup-delay=0 -r " $TMPISO $NO_FILE fi # Image contains bad byte in the ecc section @@ -1866,7 +1925,7 @@ if try "reading image with bad ecc byte" read_ecc_bad_byte; then $NEWVER -i$SIMISO --debug --byteset 22000,50,10 >>$LOGFILE 2>&1 extra_args="--debug --sim-cd=$SIMISO --fixed-speed-values" - run_regtest read_ecc_bad_byte "--spinup-delay=0 -r " $TMPISO + run_regtest read_ecc_bad_byte "--spinup-delay=0 -r " $TMPISO $NO_FILE fi # Augmented image is protected by an outer RS01 error correction file @@ -1943,7 +2002,7 @@ if try "crc section with uncorrectable dead sector markers" read_crc_section_wit $NEWVER --debug -i$SIMISO --erase "21082:pass as dead sector marker" >>$LOGFILE 2>&1 extra_args="--debug --sim-cd=$SIMISO --fixed-speed-values" - run_regtest read_crc_section_with_uncorrectable_dsm "--spinup-delay=0 -r " $TMPISO + run_regtest read_crc_section_with_uncorrectable_dsm "--spinup-delay=0 -r " $TMPISO $NO_FILE fi # Normal sized image with missing ecc header; without exhaustive search. @@ -1976,6 +2035,7 @@ if try "reading with missing ecc header, exhaustive" read_with_missing_header_ex replace_config examine-rs03 1 replace_config medium-size 0 + replace_config verbose 1 extra_args="--debug --sim-cd=$SIMISO --fixed-speed-values" run_regtest read_with_missing_header_exhaustive "--spinup-delay=0 -r -v -a RS03" $TMPISO $TMPECC fi @@ -1990,6 +2050,7 @@ if try "reading with missing iso header, exhaustive" read_with_missing_iso_heade replace_config examine-rs03 1 replace_config medium-size 0 + replace_config verbose 1 extra_args="--debug --sim-cd=$SIMISO --fixed-speed-values" run_regtest read_with_missing_iso_header_exhaustive "--spinup-delay=0 -r -v -a RS03" $TMPISO $TMPECC fi @@ -2009,9 +2070,10 @@ if try "image with ecc header from a file" read_with_ecc_file_header; then $NEWVER -i$SIMISO --debug --byteset 21000,99,29 >>$LOGFILE 2>&1 replace_config examine-rs03 1 - replace_config medium-size 0 - extra_args="--debug --sim-cd=$SIMISO --fixed-speed-values -n $ECCSIZE" - run_regtest read_with_ecc_file_header "--spinup-delay=0 -r -v -a RS03" $TMPISO + replace_config medium-size $ECCSIZE + replace_config verbose 1 + extra_args="--debug --sim-cd=$SIMISO --fixed-speed-values" + run_regtest read_with_ecc_file_header "--spinup-delay=0 -r -v -a RS03 -n $ECCSIZE" $TMPISO $NO_FILE fi # Image contains defective Ecc header @@ -2034,9 +2096,10 @@ if try "image with crc block from a file" read_with_ecc_file_crc_block; then $NEWVER -i$SIMISO --debug --byteset 21070,1123,101 >>$LOGFILE 2>&1 replace_config examine-rs03 1 - replace_config medium-size 0 - extra_args="--debug --sim-cd=$SIMISO --fixed-speed-values -n $ECCSIZE" - run_regtest read_with_ecc_file_crc_block "--spinup-delay=0 -r -v -a RS03" $TMPISO + replace_config medium-size $ECCSIZE + replace_config verbose 1 + extra_args="--debug --sim-cd=$SIMISO --fixed-speed-values" + run_regtest read_with_ecc_file_crc_block "--spinup-delay=0 -r -v -a RS03 -n $ECCSIZE" $TMPISO $NO_FILE fi # Do a second read attempt at an incomplete image; @@ -2051,7 +2114,7 @@ if try "re-reading medium with CRC error" read_second_pass_with_crc_error; then $NEWVER --debug -i$TMPISO --erase 15800-16199 >>$LOGFILE 2>&1 extra_args="--debug --sim-cd=$SIMISO --fixed-speed-values" - run_regtest read_second_pass_with_crc_error "--spinup-delay=0 -r" $TMPISO $MASTERECC + run_regtest read_second_pass_with_crc_error "--spinup-delay=0 -r" $TMPISO $NO_FILE fi # Read medium in several passes; some sectors become readable in the third pass. @@ -2071,7 +2134,7 @@ if try "reading medium w/ ecc in 3 passes; 3rd pass recovers some" read_multipas replace_config read-medium 3 extra_args="--debug --sim-cd=$SIMISO --fixed-speed-values" - run_regtest read_multipass_ecc_partial_success "--read-medium=3 --spinup-delay=0 -r" $TMPISO $TMPECC SORTED + run_regtest read_multipass_ecc_partial_success "--read-medium=3 --spinup-delay=0 -r" $TMPISO $NO_FILE SORTED fi # Image contains CRC error in the padding section @@ -2085,7 +2148,7 @@ if try "reading image with crc error in padding area" read_with_crc_error_in_pad replace_config read-medium 3 extra_args="--debug --sim-cd=$SIMISO --fixed-speed-values" - run_regtest read_with_crc_error_in_padding "--spinup-delay=0 -r" $TMPISO + run_regtest read_with_crc_error_in_padding "--spinup-delay=0 -r" $TMPISO $NO_FILE fi ### Reading tests (adaptive) diff --git a/scripts/bash-based-configure b/scripts/bash-based-configure index 20bb86b..163c04f 100644 --- a/scripts/bash-based-configure +++ b/scripts/bash-based-configure @@ -18,6 +18,7 @@ # along with Bash based configure. If not, see . #/ + # Command overview: # # PACKAGE Define package name and version @@ -69,7 +70,7 @@ # WITH_OPTION name default adds -DWITH_OPTION_VALUE for -with-option=value args # to CFG_WITH_OPTIONS -CONFIGURE_VERSION="0.59" +CONFIGURE_VERSION="0.60" echo "Bash based configure V$CONFIGURE_VERSION" echo @@ -282,7 +283,7 @@ fi # Find out where bash resides -echo "SHELL = `which bash`" >>Makefile.config +echo "SHELL = `type -P bash`" >>Makefile.config # Setup the log file @@ -332,13 +333,13 @@ function REQUIRE_GMAKE() if (gmake -v 2>&1 | grep "GNU Make") > /dev/null 2>&1 ; then echo "yes" - echo "MAKE = `which gmake`" >>Makefile.config + echo "MAKE = `type -P gmake`" >>Makefile.config return 0 fi; if (make -v 2>&1 | grep "GNU Make") > /dev/null 2>&1 ; then echo "yes" - echo "MAKE = `which make`" >>Makefile.config + echo "MAKE = `type -P make`" >>Makefile.config return 0 fi; @@ -358,11 +359,11 @@ function REQUIRE_GCC() # Try $CC first if test -n "$CC" && $CC -v >/dev/null 2>&1; then - if ($CC -v 2>&1 | grep "gcc") > /dev/null 2>&1 ; - then CC=`which $CC` - echo "yes ($CC)" - echo "CC = `which $CC`" >>Makefile.config - return 0 + if ($CC -v 2>&1 | grep "gcc") > /dev/null 2>&1 ; then + CC=`type -P $CC` + echo "yes ($CC)" + echo "CC = $CC" >>Makefile.config + return 0 fi fi @@ -370,11 +371,11 @@ function REQUIRE_GCC() CC=gcc if test -n "$CC" && $CC -v >/dev/null 2>&1; then - if ($CC -v 2>&1 | grep "gcc") > /dev/null 2>&1 ; - then CC=`which $CC` - echo "yes ($CC)" - echo "CC = $CC" >>Makefile.config - return 0 + if ($CC -v 2>&1 | grep "gcc") > /dev/null 2>&1 ; then + CC=`type -P $CC` + echo "yes ($CC)" + echo "CC = $CC" >>Makefile.config + return 0 fi fi @@ -383,11 +384,11 @@ function REQUIRE_GCC() if test "$cfg_uname" == "FreeBSD"; then CC=$(ls /usr/local/bin | grep -E "^gcc[0-9]*$" | sort -n -r | head -n 1) if test -n "$CC" && $CC -v >/dev/null 2>&1; then - if ($CC -v 2>&1 | grep "gcc") > /dev/null 2>&1 ; - then CC=`which $CC` - echo "yes ($CC)" - echo "CC = $CC" >>Makefile.config - return 0 + if ($CC -v 2>&1 | grep "gcc") > /dev/null 2>&1 ; then + CC=`type -P $CC` + echo "yes ($CC)" + echo "CC = $CC" >>Makefile.config + return 0 fi fi fi @@ -470,7 +471,7 @@ function PACKAGE() echo "CFG_VERSION = $VERSION" >> Makefile.config } -# Add -D$1="$2" to CFG_OTHER_OPTIONS +# Add -D$1=$2 to CFG_OTHER_OPTIONS function DEFINE_STRING() { @@ -1490,7 +1491,7 @@ EOF CFG_GTK2_CFLAGS=`pkg-config --cflags gtk+-2.0` CFG_GTK2_LIBS=`pkg-config $threads --libs gtk+-2.0` - CFG_GTK2_BINDIR=`which pkg-config` + CFG_GTK2_BINDIR=`type -P pkg-config` CFG_GTK2_BINDIR=`echo $CFG_GTK2_BINDIR | sed -e 's/.exe//' | sed -e 's/\/pkg-config//'` CFG_CFLAGS="$CFG_CFLAGS $CFG_GTK2_CFLAGS" @@ -2124,7 +2125,7 @@ function CHECK_PROGRAM() return 0 fi - if (which $name) > /dev/null 2>&1; + if (type -P $name) > /dev/null 2>&1; then echo " $name: yes" return 0 diff --git a/scripts/time-stamper.bash b/scripts/time-stamper.bash index 4efc96a..b657c3f 100755 --- a/scripts/time-stamper.bash +++ b/scripts/time-stamper.bash @@ -2,10 +2,10 @@ build=$(grep BUILDNUM $1 2>/dev/null | cut -d\ -f3) build=$((build+1)) cat >$1 <. */ +/*** src type: no GUI code ***/ + #include "dvdisaster.h" /*** diff --git a/src/cacheprobe.c b/src/cacheprobe.c index 66c3fdd..6d8ff2a 100644 --- a/src/cacheprobe.c +++ b/src/cacheprobe.c @@ -1,6 +1,6 @@ /* dvdisaster: Additional error correction for optical media. * Copyright (C) 2004-2017 Carsten Gnoerlich. - * Copyright (C) 2019 The dvdisaster development team. + * Copyright (C) 2019-2021 The dvdisaster development team. * * Email: support@dvdisaster.org * @@ -20,6 +20,8 @@ * along with dvdisaster. If not, see . */ +/*** src type: no GUI code ***/ + #include "dvdisaster.h" #if defined(SYS_LINUX) diff --git a/src/closure.c b/src/closure.c index a8e4775..26b3328 100644 --- a/src/closure.c +++ b/src/closure.c @@ -20,6 +20,8 @@ * along with dvdisaster. If not, see . */ +/*** src type: some GUI code ***/ + #include "dvdisaster.h" #include "inlined-icons.h" @@ -36,99 +38,9 @@ /* safety margin in case we're getting UTF path names */ #define WIN_MAX_PATH (4*MAX_PATH) -/* - * Find the place of our executable - * (Windows only) - */ - -static char* get_exe_path() -{ char path[WIN_MAX_PATH]; - int n = GetModuleFileNameA(NULL, path, WIN_MAX_PATH); - - if(n>0 && nbinDir = g_strdup(SRCDIR); - Closure->docDir = g_strdup_printf("%s/documentation",SRCDIR); - Verbose("Using paths from SRCDIR = %s\n", SRCDIR); - goto find_dotfile; - } -#endif /* WITH_EMBEDDED_SRC_PATH_YES */ - - /*** Otherwise try the installation directory. - On Unices this is a hardcoded directory. */ - -#ifndef SYS_MINGW - if(DirStat(BINDIR)) - Closure->binDir = g_strdup(BINDIR); - - if(DirStat(DOCDIR)) - Closure->docDir = g_strdup(DOCDIR); - Verbose("Using hardcoded BINDIR = %s, DOCDIR = %s\n", BINDIR, DOCDIR); -#else - Closure->binDir = get_exe_path(); - /* We'll just put the 2 PDF in the same dir, portable mode */ - Closure->docDir = g_strdup(Closure->binDir); - Verbose("Using path from get_exe_path() = %s\n", Closure->binDir); -#endif - - /* for AppImage, get docdir from env if there */ - if (g_getenv("DVDISASTER_DOCDIR")) - { if (Closure->docDir) - g_free(Closure->docDir); - Closure->docDir = g_strdup(g_getenv("DVDISASTER_DOCDIR")); - } - - /*** The location of the dotfile depends on the operating system. - Under Unix the users home directory is used. */ - -#if defined(WITH_EMBEDDED_SRC_PATH_YES) && !defined(SYS_MINGW) -find_dotfile: -#endif /* WITH_EMBEDDED_SRC_PATH_YES */ - -#ifndef SYS_MINGW - Closure->homeDir = g_strdup(g_getenv("HOME")); -#else - Closure->homeDir = g_strdup(Closure->binDir); /* portable mode */ -#endif - if(!Closure->dotFile) /* may have been set by the --resource-file option */ -#ifndef SYS_MINGW - Closure->dotFile = g_strdup_printf("%s/.dvdisaster", Closure->homeDir); -#else - /* Windows doesn't really love dotfiles */ - Closure->dotFile = g_strdup_printf("%s/dvdisaster.cfg", Closure->homeDir); -#endif - - Verbose("\nUsing file locations:\n" - "- Homedir: %s\n" - "- Bin dir: %s\n" - "- Doc dir: %s\n" - "- dotfile: %s\n\n", - Closure->homeDir, - Closure->binDir, - Closure->docDir, - Closure->dotFile); -} +#ifdef WITH_GUI_YES /*** *** Set/get color values @@ -138,8 +50,7 @@ find_dotfile: * Update color string for the ... string */ -#ifndef WITH_CLI_ONLY_YES -void UpdateMarkup(char **string, GdkColor *color) +void GuiUpdateMarkup(char **string, GdkColor *color) { int hexval; hexval = (color->red << 8) & 0xff0000; @@ -154,7 +65,7 @@ void UpdateMarkup(char **string, GdkColor *color) * Default color values */ -void DefaultColors() +void GuiDefaultColors() { Closure->redText->red = 0xffff; Closure->redText->green = 0; @@ -200,8 +111,8 @@ void DefaultColors() Closure->whiteSector->green = 0xffff; Closure->whiteSector->blue = 0xffff; - UpdateMarkup(&Closure->redMarkup, Closure->redText); - UpdateMarkup(&Closure->greenMarkup, Closure->greenText); + GuiUpdateMarkup(&Closure->redMarkup, Closure->redText); + GuiUpdateMarkup(&Closure->greenMarkup, Closure->greenText); } static void save_colors(FILE *dotfile, char *symbol, GdkColor *color) @@ -223,7 +134,6 @@ static void get_color(GdkColor *color, char *value) color->green = hex&0xff00; color->blue = (hex<<8)&0xff00; } -#endif /*** *** Save and restore user settings to/from the .dvdisaster file @@ -231,7 +141,7 @@ static void get_color(GdkColor *color, char *value) #define MAX_LINE_LEN 512 -void ReadDotfile() +void GuiReadDotfile() { FILE *dotfile; char line[MAX_LINE_LEN]; @@ -247,7 +157,7 @@ void ReadDotfile() /* Get first MAX_LINE_LEN bytes of line, discard the rest */ line[MAX_LINE_LEN-1] = 1; - if (!fgets(line, MAX_LINE_LEN, dotfile)) break; + if(!fgets(line, MAX_LINE_LEN, dotfile)) break; if(!line[MAX_LINE_LEN-1]) /* line longer than buffer */ while(!feof(dotfile) && fgetc(dotfile) != '\n') ; @@ -337,13 +247,12 @@ void ReadDotfile() if(!strcmp(symbol, "verbose")) { Closure->verbose = atoi(value); continue; } if(!strcmp(symbol, "welcome-msg")) { Closure->welcomeMessage = atoi(value); continue; } -#ifndef WITH_CLI_ONLY_YES if(!strcmp(symbol, "positive-text")) { get_color(Closure->greenText, value); - UpdateMarkup(&Closure->greenMarkup, Closure->greenText); + GuiUpdateMarkup(&Closure->greenMarkup, Closure->greenText); continue; } if(!strcmp(symbol, "negative-text")) { get_color(Closure->redText, value); - UpdateMarkup(&Closure->redMarkup, Closure->redText); + GuiUpdateMarkup(&Closure->redMarkup, Closure->redText); continue; } if(!strcmp(symbol, "bar-color")) { get_color(Closure->barColor, value); continue; } @@ -355,7 +264,6 @@ void ReadDotfile() if(!strcmp(symbol, "ignored-sector")) { get_color(Closure->blueSector, value); continue; } if(!strcmp(symbol, "highlit-sector")) { get_color(Closure->whiteSector, value); continue; } if(!strcmp(symbol, "present-sector")) { get_color(Closure->darkSector, value); continue; } -#endif } if(fclose(dotfile)) @@ -442,7 +350,6 @@ static void update_dotfile() g_fprintf(dotfile, "verbose: %d\n", Closure->verbose); g_fprintf(dotfile, "welcome-msg: %d\n\n", Closure->welcomeMessage); -#ifndef WITH_CLI_ONLY_YES save_colors(dotfile, "positive-text", Closure->greenText); save_colors(dotfile, "negative-text", Closure->redText); save_colors(dotfile, "bar-color", Closure->barColor); @@ -454,12 +361,65 @@ static void update_dotfile() save_colors(dotfile, "ignored-sector", Closure->blueSector); save_colors(dotfile, "highlit-sector", Closure->whiteSector); save_colors(dotfile, "present-sector", Closure->darkSector); -#endif if(fclose(dotfile)) g_printf("Error closing configuration file %s: %s\n", Closure->dotFile, strerror(errno)); } +#endif /* WITH_GUI_YES */ + +/*** + *** Locate the binary and documentation directory + ***/ + +static void get_base_dirs() +{ + /*** Unless completely disabled through a configure option, the + source directory is supposed to hold the most recent files, + so try this first. */ + +#ifdef WITH_EMBEDDED_SRC_PATH_YES + if(DirStat(SRCDIR)) + { Closure->binDir = g_strdup(SRCDIR); + Closure->docDir = g_strdup_printf("%s/documentation",SRCDIR); + Verbose("Using paths from SRCDIR = %s\n", SRCDIR); + goto find_dotfile; + } +#endif /* WITH_EMBEDDED_SRC_PATH_YES */ + + /*** Otherwise try the installation directory. + On Unices this is a hardcoded directory. */ + +#if defined(SYS_LINUX) || defined(SYS_FREEBSD) || defined(SYS_NETBSD) || defined(SYS_UNKNOWN) + if(DirStat(BINDIR)) + Closure->binDir = g_strdup(BINDIR); + + if(DirStat(DOCDIR)) + Closure->docDir = g_strdup(DOCDIR); + Verbose("Using hardcoded BINDIR = %s, DOCDIR = %s\n", BINDIR, DOCDIR); +#endif + + /*** The location of the dotfile depends on the operating system. + Under Unix the users home directory is used. */ + +#ifdef WITH_EMBEDDED_SRC_PATH_YES +find_dotfile: +#endif /* WITH_EMBEDDED_SRC_PATH_YES */ + + Closure->homeDir = g_strdup(g_getenv("HOME")); + if(!Closure->dotFile) /* may have been set by the --resource-file option */ + Closure->dotFile = g_strdup_printf("%s/.dvdisaster", Closure->homeDir); + + Verbose("\nUsing file locations:\n" + "- Homedir: %s\n" + "- Bin dir: %s\n" + "- Doc dir: %s\n" + "- dotfile: %s\n\n", + Closure->homeDir, + Closure->binDir, + Closure->docDir, + Closure->dotFile); +} /*** *** Allocate and initialize our global variables @@ -561,11 +521,11 @@ void InitClosure() Closure->bdSize3 = Closure->savedBDSize3 = BDXL_TL_SIZE; Closure->bdSize4 = Closure->savedBDSize4 = BDXL_QL_SIZE; -#ifndef WITH_CLI_ONLY_YES Closure->logString = g_string_sized_new(1024); Closure->logLock = g_malloc0(sizeof(GMutex)); g_mutex_init(Closure->logLock); +#ifdef WITH_GUI_YES Closure->background = g_malloc0(sizeof(GdkColor)); Closure->foreground = g_malloc0(sizeof(GdkColor)); Closure->grid = g_malloc0(sizeof(GdkColor)); @@ -582,12 +542,9 @@ void InitClosure() Closure->whiteSector = g_malloc0(sizeof(GdkColor)); Closure->darkSector = g_malloc0(sizeof(GdkColor)); - DefaultColors(); - - Closure->tooltipOn = gdk_pixbuf_new_from_inline(-1, dvdisaster_tooltip, FALSE, NULL); - Closure->tooltipOff = gdk_pixbuf_new_from_inline(-1, dvdisaster_nothing, FALSE, NULL); -#endif - + GuiDefaultColors(); +#endif /* WITH_GUI_YES */ + memset(Closure->bs, '\b', 255); memset(Closure->sp, ' ', 255); @@ -631,12 +588,11 @@ void cond_free_ptr_array(GPtrArray *a) void FreeClosure() { -#ifndef WITH_CLI_ONLY_YES +#ifdef WITH_GUI_YES if(Closure->guiMode) -#endif -/* in CLI-only mode, always update dotfile */ update_dotfile(); - +#endif + cond_free(Closure->cookedVersion); cond_free(Closure->versionString); cond_free(Closure->device); @@ -660,13 +616,9 @@ void FreeClosure() cond_free(Closure->dDumpDir); cond_free(Closure->dDumpPrefix); -#ifndef WITH_CLI_ONLY_YES - if(Closure->prefsContext) - FreePreferences(Closure->prefsContext); - - if(Closure->rawEditorContext) - FreeRawEditorContext(Closure->rawEditorContext); - + if(Closure->crcBuf) + FreeCrcBuf(Closure->crcBuf); + if(Closure->logString) g_string_free(Closure->logString, TRUE); @@ -675,6 +627,13 @@ void FreeClosure() g_free(Closure->logLock); } +#ifdef WITH_GUI_YES + if(Closure->prefsContext) + GuiFreePreferences(Closure->prefsContext); + + if(Closure->rawEditorContext) + GuiFreeRawEditorContext(Closure->rawEditorContext); + if(Closure->drawGC) g_object_unref(Closure->drawGC); @@ -697,21 +656,17 @@ void FreeClosure() cond_free(Closure->greenMarkup); cond_free(Closure->invisibleDash); - if(Closure->readLinearCurve) - FreeCurve(Closure->readLinearCurve); - - if(Closure->readLinearSpiral) - FreeSpiral(Closure->readLinearSpiral); - - if(Closure->readAdaptiveSpiral) - FreeSpiral(Closure->readAdaptiveSpiral); + GuiFreeCurve(Closure->readLinearCurve); + GuiFreeSpiral(Closure->readLinearSpiral); + GuiFreeSpiral(Closure->readAdaptiveSpiral); if(Closure->readAdaptiveSubtitle) g_free(Closure->readAdaptiveSubtitle); if(Closure->readAdaptiveErrorMsg) g_free(Closure->readAdaptiveErrorMsg); -#endif - +#endif /* WITH_GUI_YES */ + g_free(Closure); } + diff --git a/src/crc32.c b/src/crc32.c index 35a6319..d3e266d 100644 --- a/src/crc32.c +++ b/src/crc32.c @@ -20,6 +20,8 @@ * along with dvdisaster. If not, see . */ +/*** src type: no GUI code ***/ + #include "dvdisaster.h" /*** diff --git a/src/crcbuf.c b/src/crcbuf.c index a23c1e1..abeaa04 100644 --- a/src/crcbuf.c +++ b/src/crcbuf.c @@ -20,6 +20,8 @@ * along with dvdisaster. If not, see . */ +/*** src type: no GUI code ***/ + #include "dvdisaster.h" #include "scsi-layer.h" @@ -171,13 +173,18 @@ int CheckAgainstCrcBuffer(CrcBuf *cb, gint64 idx, unsigned char *buf) * cached CRC and md5 informaton */ -int CrcBufValid(CrcBuf *crcbuf, Image *image, EccHeader *eh) +int CrcBufValid(CrcBuf *crcbuf, Image *image, int mode) { if(!crcbuf) { Verbose("CrcBufValid: crcbuf==NULL\n"); return FALSE; } + if(!image) + { Verbose("CrcBufValid: image==NULL\n"); + return FALSE; + } + /* if still in building state we do not have all CRC sums */ if(crcbuf->md5State & MD5_BUILDING) @@ -192,7 +199,50 @@ int CrcBufValid(CrcBuf *crcbuf, Image *image, EccHeader *eh) { Verbose("CrcBufValid: NOT complete\n"); return FALSE; } - + + /* compare fingerprints of buffer and image */ + + if(image->fpState != 2) + { Verbose("CrcBufValid: image fingerprint not valid (%d)\n", + image->fpState); + return FALSE; + } + + if(!crcbuf->fpValid) + { Verbose("CrcBufValid: crcbuf fingerprint not valid\n"); + return FALSE; + } + + if(crcbuf->fpSector != image->fpSector) + { Verbose("CrcBufValid: crcbuf/image have different fingerprint sectors (%d/%" PRId64 ")\n", + crcbuf->fpSector, image->fpSector); + return FALSE; + } + + if(memcmp(crcbuf->mediumFP, image->imageFP, 16)) + { Verbose("CrcBufValid: crcbuf/image have different fingerprints\n"); + return FALSE; + } + + /* additionally, compare the image sizes */ + + switch(mode) + { case FULL_IMAGE: + if(image->sectorSize != crcbuf->allSectors) + { Verbose("CrcBufValid(..., FULL_IMAGE): crcbuf/image have different size (%" PRId64 "/%" PRId64 " sectors)\n", + image->sectorSize, crcbuf->allSectors); + return FALSE; + } + break; + case DATA_SECTORS_ONLY: + if(image->sectorSize != crcbuf->dataSectors) + { Verbose("CrcBufValid(..., DATA_SECTORS_ONLY): crcbuf/image have different size (%" PRId64 "/%" PRId64 " sectors)\n", + image->sectorSize, crcbuf->dataSectors); + return FALSE; + } + break; + } + Verbose("CrcBufValid: buffer VALID\n"); return TRUE; } diff --git a/src/curve.c b/src/curve.c index 3dda875..82d2ea8 100644 --- a/src/curve.c +++ b/src/curve.c @@ -19,8 +19,10 @@ * You should have received a copy of the GNU General Public License * along with dvdisaster. If not, see . */ -// DVDISASTER_GUI_FILE +/*** src type: only GUI code ***/ + +#ifdef WITH_GUI_YES #include "dvdisaster.h" /*** @@ -31,7 +33,7 @@ * Initialize the curve */ -Curve* CreateCurve(GtkWidget *widget, char *left_label, char *left_format, int n_values, int bottom_format) +Curve* GuiCreateCurve(GtkWidget *widget, char *left_label, char *left_format, int n_values, int bottom_format) { Curve *curve = g_malloc0(sizeof(Curve)); curve->widget = widget; @@ -59,8 +61,9 @@ Curve* CreateCurve(GtkWidget *widget, char *left_label, char *left_format, int n * Get rid of it */ -void FreeCurve(Curve *curve) -{ +void GuiFreeCurve(Curve *curve) +{ if(!curve) return; + g_object_unref(curve->layout); g_free(curve->leftLabel); if(curve->leftLogLabel) @@ -76,7 +79,7 @@ void FreeCurve(Curve *curve) * Reset the values */ -void ZeroCurve(Curve *curve) +void GuiZeroCurve(Curve *curve) { int i; if(curve) @@ -95,19 +98,19 @@ void ZeroCurve(Curve *curve) * Calculate pixel coords from curve values */ -int CurveX(Curve *curve, gdouble x) +int GuiCurveX(Curve *curve, gdouble x) { gdouble width = (curve->rightX - curve->leftX - curve->margin); return 1 + curve->leftX + ((gdouble)x * width) / 1000.0; } -int CurveLX(Curve *curve, gdouble x) +int GuiCurveLX(Curve *curve, gdouble x) { gdouble width = (curve->rightX - curve->leftX - curve->margin); return 1 + curve->leftX + (x * width) / (gdouble)curve->maxX; } -int CurveY(Curve *curve, gdouble y) +int GuiCurveY(Curve *curve, gdouble y) { gdouble hfact; hfact = (gdouble)(curve->bottomY - curve->topY) @@ -116,7 +119,7 @@ int CurveY(Curve *curve, gdouble y) return curve->bottomY - y * hfact; } -int CurveLogY(Curve *curve, gdouble y) /* not really a log */ +int GuiCurveLogY(Curve *curve, gdouble y) /* not really a log */ { gdouble hfact; if(y<1) return curve->bottomLY; @@ -131,21 +134,21 @@ int CurveLogY(Curve *curve, gdouble y) /* not really a log */ *** Calculate the curve geometry ***/ -void UpdateCurveGeometry(Curve *curve, char *largest_left_label, int right_padding) +void GuiUpdateCurveGeometry(Curve *curve, char *largest_left_label, int right_padding) { GtkAllocation *a = &curve->widget->allocation; int w,h; /* Top and bottom margins */ - SetText(curve->layout, curve->leftLabel, &w, &h); + GuiSetText(curve->layout, curve->leftLabel, &w, &h); curve->topY = h + 10; - SetText(curve->layout, "0123456789", &w, &h); + GuiSetText(curve->layout, "0123456789", &w, &h); curve->bottomY = a->height - h - 10; /* Left and right margins */ - SetText(curve->layout, largest_left_label, &w, &h); + GuiSetText(curve->layout, largest_left_label, &w, &h); curve->leftX = 5 + 6 + 3 + w; curve->rightX = a->width - right_padding; @@ -164,7 +167,7 @@ void UpdateCurveGeometry(Curve *curve, char *largest_left_label, int right_paddi *** Redraw the coordinate axes ***/ -void RedrawAxes(Curve *curve) +void GuiRedrawAxes(Curve *curve) { GdkDrawable *d = curve->widget->window; int i,w,h,x,y; int yg=0; @@ -184,7 +187,7 @@ void RedrawAxes(Curve *curve) } gdk_gc_set_rgb_fg_color(Closure->drawGC, Closure->curveColor); - SetText(curve->layout, curve->leftLabel, &w, &h); + GuiSetText(curve->layout, curve->leftLabel, &w, &h); x = curve->leftX - w/2; if(x < 5) x = 5; gdk_draw_layout(d, Closure->drawGC, @@ -198,7 +201,7 @@ void RedrawAxes(Curve *curve) char buf[16]; gdk_gc_set_rgb_fg_color(Closure->drawGC, Closure->logColor); - SetText(curve->layout, curve->leftLogLabel, &w, &h); + GuiSetText(curve->layout, curve->leftLogLabel, &w, &h); x = curve->leftX - w/2; if(x < 5) x = 5; @@ -207,9 +210,9 @@ void RedrawAxes(Curve *curve) for(val=400; val>3; val/=2) - { y = CurveLogY(curve, val); + { y = GuiCurveLogY(curve, val); sprintf(buf,"%d",val); - SetText(curve->layout, buf, &w, &h); + GuiSetText(curve->layout, buf, &w, &h); gdk_gc_set_rgb_fg_color(Closure->drawGC, Closure->logColor); gdk_draw_layout(d, Closure->drawGC, curve->leftX-9-w, y-h/2, curve->layout); gdk_gc_set_rgb_fg_color(Closure->drawGC, Closure->foreground); @@ -218,13 +221,13 @@ void RedrawAxes(Curve *curve) gdk_draw_line(d, Closure->drawGC, curve->leftX, y, curve->rightX, y); val /=2; - y = CurveLogY(curve, val); + y = GuiCurveLogY(curve, val); gdk_gc_set_rgb_fg_color(Closure->drawGC, Closure->foreground); gdk_draw_line(d, Closure->drawGC, curve->leftX-3, y, curve->leftX, y); if(curve->bottomLY-curve->topLY > 8*h) { sprintf(buf,"%d",val); - SetText(curve->layout, buf, &w, &h); + GuiSetText(curve->layout, buf, &w, &h); gdk_gc_set_rgb_fg_color(Closure->drawGC, Closure->logColor); gdk_draw_layout(d, Closure->drawGC, curve->leftX-9-w, y-h/2, curve->layout); } @@ -240,9 +243,9 @@ void RedrawAxes(Curve *curve) { char buf[4]; g_snprintf(buf, 4, curve->leftFormat, i); - SetText(curve->layout, buf, &w, &h); + GuiSetText(curve->layout, buf, &w, &h); - y = yg = CurveY(curve, i); + y = yg = GuiCurveY(curve, i); gdk_gc_set_rgb_fg_color(Closure->drawGC, Closure->curveColor); gdk_draw_layout(d, Closure->drawGC, curve->leftX-9-w, y-h/2, curve->layout); gdk_gc_set_rgb_fg_color(Closure->drawGC, Closure->foreground); @@ -252,7 +255,7 @@ void RedrawAxes(Curve *curve) gdk_draw_line(d, Closure->drawGC, curve->leftX, y, curve->rightX, y); gdk_gc_set_rgb_fg_color(Closure->drawGC, Closure->foreground); - y = CurveY(curve, i+step/2); + y = GuiCurveY(curve, i+step/2); if(y >= curve->topY) gdk_draw_line(d, Closure->drawGC, curve->leftX-3, y, curve->leftX, y); } @@ -304,9 +307,9 @@ void RedrawAxes(Curve *curve) else g_snprintf(buf, 10, "%3.1fG",(gdouble)i/1024.0); break; } - SetText(curve->layout, buf, &w, &h); + GuiSetText(curve->layout, buf, &w, &h); - x = CurveLX(curve,i)-1; + x = GuiCurveLX(curve,i)-1; gdk_draw_line(d, Closure->drawGC, x, bottom_y+6, x, bottom_y); gdk_draw_layout(d, Closure->drawGC, x-w/2, bottom_y+8, curve->layout); @@ -319,7 +322,7 @@ void RedrawAxes(Curve *curve) } gdk_gc_set_rgb_fg_color(Closure->drawGC, Closure->foreground); - x = CurveLX(curve,i+step/2)-1; + x = GuiCurveLX(curve,i+step/2)-1; if(x < curve->rightX) gdk_draw_line(d, Closure->drawGC, x, bottom_y+3, x, bottom_y); } @@ -329,21 +332,21 @@ void RedrawAxes(Curve *curve) * Redraw the curve */ -void RedrawCurve(Curve *curve, int last) +void GuiRedrawCurve(Curve *curve, int last) { int i,x0,x1,fy0,fy1; - x0 = CurveX(curve, 0); - fy0 = CurveY(curve, curve->fvalue[0]); + x0 = GuiCurveX(curve, 0); + fy0 = GuiCurveY(curve, curve->fvalue[0]); gdk_gc_set_rgb_fg_color(Closure->drawGC, Closure->curveColor); /* Draw the curve */ for(i=1; i<=last; i++) - { x1 = CurveX(curve, i); + { x1 = GuiCurveX(curve, i); if(curve->enable & DRAW_ICURVE) - { int iy = CurveY(curve, curve->ivalue[i]); + { int iy = GuiCurveY(curve, curve->ivalue[i]); if(curve->ivalue[i] > 0) { gdk_gc_set_rgb_fg_color(Closure->drawGC, Closure->barColor); @@ -354,7 +357,7 @@ void RedrawCurve(Curve *curve, int last) } if(curve->enable & DRAW_LCURVE) - { int iy = CurveLogY(curve, curve->lvalue[i]); + { int iy = GuiCurveLogY(curve, curve->lvalue[i]); if(curve->lvalue[i] > 0) { gdk_gc_set_rgb_fg_color(Closure->drawGC, Closure->logColor); @@ -365,7 +368,7 @@ void RedrawCurve(Curve *curve, int last) } if(curve->enable & DRAW_FCURVE && curve->fvalue[i] >= 0) - { fy1 = CurveY(curve, curve->fvalue[i]); + { fy1 = GuiCurveY(curve, curve->fvalue[i]); if(x0 < x1) { gdk_gc_set_rgb_fg_color(Closure->drawGC, Closure->curveColor); @@ -377,3 +380,4 @@ void RedrawCurve(Curve *curve, int last) x0 = x1; } } +#endif /* WITH_GUI_YES */ diff --git a/src/debug.c b/src/debug.c index 9b1c259..b231230 100644 --- a/src/debug.c +++ b/src/debug.c @@ -20,6 +20,8 @@ * along with dvdisaster. If not, see . */ +/*** src type: no GUI code ***/ + #include "dvdisaster.h" #include "rs02-includes.h" @@ -499,7 +501,6 @@ void Erase(char *arg) image = OpenImageFromFile(Closure->imageName, O_RDWR, IMG_PERMS); if(!image) Stop(_("Can't open %s:\n%s"), Closure->imageName, strerror(errno)); - ExamineUDF(image); /* get the volume label */ /** See if there is a special debugging option following the sector range. This is intentionally an undocumented feature. */ diff --git a/src/ds-marker.c b/src/ds-marker.c index 63c3520..2d6dc00 100644 --- a/src/ds-marker.c +++ b/src/ds-marker.c @@ -20,6 +20,8 @@ * along with dvdisaster. If not, see . */ +/*** src type: some GUI code ***/ + #include "dvdisaster.h" #define DSM_VERSION "1.00" @@ -260,7 +262,7 @@ int CheckForMissingSectors(unsigned char *buf, guint64 sector, *** Dialogue for indicating problem with the missing sector ***/ -#ifndef WITH_CLI_ONLY_YES +#ifdef WITH_GUI_YES static void insert_buttons(GtkDialog *dialog) { gtk_dialog_add_buttons(dialog, @@ -270,13 +272,10 @@ static void insert_buttons(GtkDialog *dialog) #endif void ExplainMissingSector(unsigned char *buf, guint64 sector, int error, int source_type, int *number) -{ -#ifndef WITH_CLI_ONLY_YES - int answer; -#endif - guint64 recorded_number; +{ guint64 recorded_number; char *vol_label, *label_msg; - + int answer; + if(Closure->noMissingWarnings) return; @@ -293,11 +292,7 @@ void ExplainMissingSector(unsigned char *buf, guint64 sector, int error, int sou /* In CLI mode, only report the first unrecoverable sector unless verbose is given. */ -#ifndef WITH_CLI_ONLY_YES if(!Closure->guiMode && !Closure->verbose && *number > 0) -#else - if(!Closure->verbose && *number > 0) -#endif { if(*number == 1) PrintLog(_("* ... more unrecoverable sectors found ...\n" "* further messages are suppressed unless the -v option is given.\n")); @@ -312,13 +307,9 @@ void ExplainMissingSector(unsigned char *buf, guint64 sector, int error, int sou vol_label = get_volume_label(buf); if(vol_label) - { -#ifndef WITH_CLI_ONLY_YES - if(Closure->guiMode) + { if(Closure->guiMode) label_msg = g_strdup_printf(_("\n\nThe label of the original (defective) medium was:\n%s\n\n"), vol_label); - else -#endif - label_msg = g_strdup_printf(_("\n* \n* The label of the original (defective) medium was:\n* \n* %s\n* "), vol_label); + else label_msg = g_strdup_printf(_("\n* \n* The label of the original (defective) medium was:\n* \n* %s\n* "), vol_label); g_free(vol_label); } else label_msg = g_strdup("\n"); @@ -339,18 +330,14 @@ void ExplainMissingSector(unsigned char *buf, guint64 sector, int error, int sou "repaired by dvdisaster. Also it will not be possible to create\n" "error correction data for it. Sorry for the bad news.\n"); -#ifndef WITH_CLI_ONLY_YES if(!Closure->guiMode) -#endif PrintLogWithAsterisks(msg,sector, recorded_number, label_msg); -#ifndef WITH_CLI_ONLY_YES else - { answer = ModalDialog(GTK_MESSAGE_ERROR, GTK_BUTTONS_NONE, insert_buttons, msg, - sector, recorded_number, label_msg); + { answer = GuiModalDialog(GTK_MESSAGE_ERROR, GTK_BUTTONS_NONE, insert_buttons, + msg, sector, recorded_number, label_msg); if(answer) Closure->noMissingWarnings = TRUE; } -#endif } break; @@ -366,17 +353,13 @@ void ExplainMissingSector(unsigned char *buf, guint64 sector, int error, int sou "repaired by dvdisaster. Also it will not be possible to create\n" "error correction data for it. Sorry for the bad news.\n"); -#ifndef WITH_CLI_ONLY_YES if(!Closure->guiMode) -#endif - PrintLogWithAsterisks(msg,sector, label_msg); -#ifndef WITH_CLI_ONLY_YES + PrintLogWithAsterisks(msg,sector, label_msg); else - { answer = ModalDialog(GTK_MESSAGE_ERROR, GTK_BUTTONS_NONE, insert_buttons, msg, - sector, label_msg); + { answer = GuiModalDialog(GTK_MESSAGE_ERROR, GTK_BUTTONS_NONE, insert_buttons, + msg, sector, label_msg); if(answer) Closure->noMissingWarnings = TRUE; } -#endif } break; } @@ -395,18 +378,14 @@ void ExplainMissingSector(unsigned char *buf, guint64 sector, int error, int sou "repaired by dvdisaster. Also it will not be possible to create\n" "error correction data for it. Sorry for the bad news.\n"); -#ifndef WITH_CLI_ONLY_YES if(!Closure->guiMode) -#endif PrintLogWithAsterisks(msg, sector); -#ifndef WITH_CLI_ONLY_YES else - { answer = ModalDialog(GTK_MESSAGE_ERROR, GTK_BUTTONS_NONE, insert_buttons, msg, - sector); + { answer = GuiModalDialog(GTK_MESSAGE_ERROR, GTK_BUTTONS_NONE, insert_buttons, msg, + sector); if(answer) Closure->noMissingWarnings = TRUE; } -#endif } /* Error was found while reading an ecc file */ @@ -419,18 +398,14 @@ void ExplainMissingSector(unsigned char *buf, guint64 sector, int error, int sou "in the ecc file are missing and its error correction\n" "capacity will be reduced.\n"); -#ifndef WITH_CLI_ONLY_YES if(!Closure->guiMode) -#endif PrintLogWithAsterisks(msg, sector); -#ifndef WITH_CLI_ONLY_YES else - { answer = ModalDialog(GTK_MESSAGE_ERROR, GTK_BUTTONS_NONE, insert_buttons, msg, - sector); + { answer = GuiModalDialog(GTK_MESSAGE_ERROR, GTK_BUTTONS_NONE, insert_buttons, msg, + sector); if(answer) Closure->noMissingWarnings = TRUE; } -#endif } g_free(label_msg); diff --git a/src/dvdisaster.c b/src/dvdisaster.c index 70e3e5d..2e8fa97 100644 --- a/src/dvdisaster.c +++ b/src/dvdisaster.c @@ -20,13 +20,15 @@ * along with dvdisaster. If not, see . */ +/*** src type: some GUI code ***/ + #include "dvdisaster.h" /* * Those are now declared as extern in dvdisaster.h, * and as such are accessible from everywhere. - * MinGW didn't link these being declared directly + * MinGW didn't like these being declared directly * in dvdisaster.h (ended up having one copy of each * struct for every .c including dvdisaster.h) */ @@ -117,19 +119,19 @@ typedef enum int main(int argc, char *argv[]) { int mode = MODE_NONE; int sequence = MODE_NONE; -#ifndef WITH_CLI_ONLY_YES - int devices_queried = FALSE; -#endif char *debug_arg = NULL; char *read_range = NULL; + int debug_mode_required=FALSE; #ifdef WITH_NLS_YES char *locale_test; #ifdef WITH_EMBEDDED_SRC_PATH_YES char src_locale_path[strlen(SRCDIR)+10]; #endif /* WITH_EMBEDDED_SRC_PATH_YES */ #endif - int debug_mode_required=FALSE; - +#ifdef WITH_GUI_YES + int devices_queried = FALSE; +#endif + #ifdef WITH_MEMDEBUG_YES atexit(check_memleaks); #endif @@ -778,7 +780,7 @@ int main(int argc, char *argv[]) if(!Closure->device && mode == MODE_SEQUENCE && (sequence & (1<device = DefaultDevice(); -#ifndef WITH_CLI_ONLY_YES +#ifdef WITH_GUI_YES devices_queried = TRUE; #endif } @@ -939,10 +941,10 @@ int main(int argc, char *argv[]) /*** If no mode was selected, print the help screen. */ -#ifndef WITH_CLI_ONLY_YES +#ifdef WITH_GUI_YES if(mode == MODE_HELP) #else - if(mode == MODE_HELP || mode == MODE_NONE) + if(mode == MODE_NONE || mode == MODE_HELP) #endif { /* TRANSLATORS: Program options like -r and --read are not to be translated @@ -1042,10 +1044,10 @@ int main(int argc, char *argv[]) exit(EXIT_FAILURE); } -#ifndef WITH_CLI_ONLY_YES /* If no mode was selected at the command line, start the graphical user interface. */ +#ifdef WITH_GUI_YES if(mode == MODE_NONE) { /* We need to query devices in order to build @@ -1070,11 +1072,11 @@ int main(int argc, char *argv[]) } Closure->guiMode = TRUE; - ReadDotfile(); - CreateMainWindow(&argc, &argv); + GuiReadDotfile(); + GuiCreateMainWindow(&argc, &argv); } #endif - + FreeClosure(); exit(exitCode); } diff --git a/src/dvdisaster.h b/src/dvdisaster.h index 56b13db..2041b38 100644 --- a/src/dvdisaster.h +++ b/src/dvdisaster.h @@ -38,25 +38,13 @@ #define _GNU_SOURCE -/* under MinGW, __attribute__ format printf doesn't work and outputs warnings for %lld, - * even if it's supported and doesn't output any warning under -Wformat when directly - * used with the real printf() func. However 'gnu_printf' works, see - * https://github.com/ocornut/imgui/issues/3592 - */ -#ifdef __MINGW32__ /* defined under 32 and 64 bits mingw */ -# define PRINTF_FLAVOR gnu_printf -#else -# define PRINTF_FLAVOR printf -#endif -#define PRINTF_FORMAT2(ARG1,ARG2) __attribute__((format(PRINTF_FLAVOR, ARG1, ARG2))) -#define PRINTF_FORMAT(ARG) PRINTF_FORMAT2(ARG,ARG+1) - #include #include -#ifndef WITH_CLI_ONLY_YES -#include +#ifdef WITH_GUI_YES + #include +#else + #include #endif - #include #include #include @@ -82,6 +70,48 @@ #error "need multithreading glib2" #endif +#ifdef WITH_GUI_NO +/* define some symbols normally coming from gtk and helper libs */ + +#define GTK_MESSAGE_QUESTION 0 +#define GTK_MESSAGE_WARNING 0 +#define GTK_MESSAGE_ERROR 0 +#define GTK_BUTTONS_OK 0 +#define GTK_BUTTONS_OK_CANCEL 0 +#define GTK_BUTTONS_NONE 0 + +typedef int GtkButtonsType; +typedef void GtkDialog; +typedef void GtkLabel; +typedef void GtkNotebook; +typedef int GtkMessageType; +typedef void GtkScrolledWindow; +typedef void GtkTextBuffer; +typedef void GtkTooltips; +typedef void GtkWidget; +typedef void GtkWindow; + +typedef void GdkColor; +typedef void GdkDrawable; +typedef void GdkGC; +typedef void GdkPixbuf; + +typedef void PangoLayout; +#endif + +/* under MinGW, __attribute__ format printf doesn't work and outputs warnings for %lld, + * even if it's supported and doesn't output any warning under -Wformat when directly + * used with the real printf() func. However 'gnu_printf' works, see + * https://github.com/ocornut/imgui/issues/3592 + */ +#ifdef __MINGW32__ /* defined under 32 and 64 bits mingw */ +# define PRINTF_FLAVOR gnu_printf +#else +# define PRINTF_FLAVOR printf +#endif +#define PRINTF_FORMAT2(ARG1,ARG2) __attribute__((format(PRINTF_FLAVOR, ARG1, ARG2))) +#define PRINTF_FORMAT(ARG) PRINTF_FORMAT2(ARG,ARG+1) + /* Phrase extraction for gettext() Note that these functions are even required when WITH_NLS_NO is set! */ @@ -110,12 +140,6 @@ #define round(x) rint(x) #endif -#ifdef WITH_CLI_ONLY_YES -#define STATUS_LABEL_OR_NULL NULL -#else -#define STATUS_LABEL_OR_NULL Closure->status -#endif - /* Some standard media sizes */ /* WARNING: These values affect RS03 in non-obvious ways. @@ -309,15 +333,12 @@ typedef struct _GlobalClosure struct _CrcBuf *crcBuf; /* crcBuf of last image read */ -#ifndef WITH_CLI_ONLY_YES /*** GUI-related things */ int guiMode; /* TRUE if GUI is active */ int stopActions; /* crude method to stop ongoing action(s) */ -#endif int noMissingWarnings; /* suppress warnings about inconsistent missing sectors */ -#ifndef WITH_CLI_ONLY_YES GtkWidget *logWidget; /* Dialog for the log display */ GtkScrolledWindow *logScroll; /* and its scrolled window */ GtkTextBuffer *logBuffer; /* Text buffer for the log output */ @@ -344,7 +365,7 @@ typedef struct _GlobalClosure GtkWidget *eccEntry; /* ecc name entry field */ GtkWidget *notebook; /* The notebook behind our central output area */ - GtkLabel *status; /* The status label */ + GtkWidget *status; /* The status label */ GtkWidget *prefsButton; GtkWidget *helpButton; @@ -401,9 +422,7 @@ typedef struct _GlobalClosure GtkWidget *readLinearErrors; GtkWidget *readLinearFootline; GtkWidget *readLinearFootlineBox; -#endif gint64 crcErrors, readErrors; /* these are passed between threads and must therefore be global */ -#ifndef WITH_CLI_ONLY_YES /*** Widgets for the adaptive reading action */ @@ -413,7 +432,6 @@ typedef struct _GlobalClosure char *readAdaptiveSubtitle; char *readAdaptiveErrorMsg; int additionalSpiralColor; -#endif } GlobalClosure; @@ -508,7 +526,7 @@ typedef struct _CrcBlock } CrcBlock; /*** - *** dvdisaster.c + *** forward declarations ***/ extern struct _RawBuffer *rawbuffer_forward; @@ -551,15 +569,16 @@ int ProbeCacheLineSize(); void InitClosure(void); void LocalizedFileDefaults(void); -#ifndef WITH_CLI_ONLY_YES -void UpdateMarkup(char**, GdkColor*); -void DefaultColors(void); -#endif void FreeClosure(void); -void ReadDotfile(void); void WriteSignature(void); int VerifySignature(void); +#ifdef WITH_GUI_YES +void GuiDefaultColors(void); +void GuiReadDotfile(void); +void GuiUpdateMarkup(char**, GdkColor*); +#endif + /*** *** crc32.c ***/ @@ -617,16 +636,20 @@ enum #define CRCBUF_UPDATE_ALL 3 #define CRCBUF_UPDATE_CRC_AFTER_DATA 1<<2 +/* Modes for CtcBufValid */ + +#define FULL_IMAGE 0 +#define DATA_SECTORS_ONLY 1 + CrcBuf *CreateCrcBuf(struct _Image*); void FreeCrcBuf(CrcBuf*); int CheckAgainstCrcBuffer(CrcBuf*, gint64, unsigned char*); int AddSectorToCrcBuffer(CrcBuf*, int, guint64, unsigned char*, int); -int CrcBufValid(CrcBuf*, struct _Image*, EccHeader*); +int CrcBufValid(CrcBuf*, struct _Image*, int); void PrintCrcBuf(CrcBuf*); -#ifndef WITH_CLI_ONLY_YES /*** *** curve.c ***/ @@ -659,17 +682,19 @@ typedef struct _Curve #define DRAW_FCURVE (1<<1) #define DRAW_LCURVE (1<<2) -Curve* CreateCurve(GtkWidget*, char*, char*, int, int); -void ZeroCurve(Curve*); -void FreeCurve(Curve*); +#ifdef WITH_GUI_YES +Curve* GuiCreateCurve(GtkWidget*, char*, char*, int, int); +void GuiZeroCurve(Curve*); +void GuiFreeCurve(Curve*); -void UpdateCurveGeometry(Curve*, char*, int); +void GuiUpdateCurveGeometry(Curve*, char*, int); -int CurveX(Curve*, gdouble); -int CurveY(Curve*, gdouble); -int CurveLogY(Curve*, gdouble); -void RedrawAxes(Curve*); -void RedrawCurve(Curve*, int); +int GuiCurveX(Curve*, gdouble); +int GuiCurveY(Curve*, gdouble); +int GuiCurveLogY(Curve*, gdouble); + +void GuiRedrawAxes(Curve*); +void GuiRedrawCurve(Curve*, int); #endif /*** @@ -737,9 +762,7 @@ void PrintEccHeader(EccHeader*); *** fix-window.c ***/ -#ifndef WITH_CLI_ONLY_YES void CreateFixWindow(GtkWidget*); -#endif /*** *** galois.c @@ -797,7 +820,6 @@ void FreeGaloisTables(GaloisTables*); ReedSolomonTables *CreateReedSolomonTables(GaloisTables*, gint32, gint32, int); void FreeReedSolomonTables(ReedSolomonTables*); -#ifndef WITH_CLI_ONLY_YES /*** *** help-dialogs.c ***/ @@ -820,25 +842,26 @@ typedef struct _LabelWithOnlineHelp int outerPadding; /* Padding between window and outer vbox */ } LabelWithOnlineHelp; -LabelWithOnlineHelp* CreateLabelWithOnlineHelp(char*, char*); -LabelWithOnlineHelp* CloneLabelWithOnlineHelp(LabelWithOnlineHelp*, char*); -void FreeLabelWithOnlineHelp(LabelWithOnlineHelp*); -void SetOnlineHelpLinkText(LabelWithOnlineHelp*, char*); -void AddHelpListItem(LabelWithOnlineHelp*, char*, ...) PRINTF_FORMAT(2); -void AddHelpParagraph(LabelWithOnlineHelp*, char*, ...) PRINTF_FORMAT(2); -void AddHelpWidget(LabelWithOnlineHelp*, GtkWidget*); +#ifdef WITH_GUI_YES +LabelWithOnlineHelp* GuiCreateLabelWithOnlineHelp(char*, char*); +LabelWithOnlineHelp* GuiCloneLabelWithOnlineHelp(LabelWithOnlineHelp*, char*); +void GuiFreeLabelWithOnlineHelp(LabelWithOnlineHelp*); +void GuiSetOnlineHelpLinkText(LabelWithOnlineHelp*, char*); +void GuiAddHelpListItem(LabelWithOnlineHelp*, char*, ...) PRINTF_FORMAT(2); +void GuiAddHelpParagraph(LabelWithOnlineHelp*, char*, ...) PRINTF_FORMAT(2); +void GuiAddHelpWidget(LabelWithOnlineHelp*, GtkWidget*); /* Specific online help dialogs */ -GtkWidget* ShowTextfile(char*, char*, char*, GtkScrolledWindow**, GtkTextBuffer**); -void ShowGPL(); -void ShowLog(); -void UpdateLog(); -void AboutDialog(); +GtkWidget* GuiShowTextfile(char*, char*, char*, GtkScrolledWindow**, GtkTextBuffer**); +void GuiShowGPL(); +void GuiShowLog(); +void GuiUpdateLog(); +void GuiAboutDialog(); -void AboutText(GtkWidget*, char*, ...) PRINTF_FORMAT(2); -void AboutLink(GtkWidget*, char*, char*); -void AboutTextWithLink(GtkWidget*, char*, char*); +void GuiAboutText(GtkWidget*, char*, ...) PRINTF_FORMAT(2); +void GuiAboutLink(GtkWidget*, char*, char*); +void GuiAboutTextWithLink(GtkWidget*, char*, char*); #endif /*** @@ -858,7 +881,9 @@ int AckHeuristic(struct _RawBuffer*); *** icon-factory.c ***/ -void CreateIconFactory(); +#ifdef WITH_GUI_YES +void GuiCreateIconFactory(); +#endif /*** *** image.c @@ -1018,16 +1043,21 @@ typedef enum ACTION_STRIP /* --- does not have a window */ } MajorActions; -void CreateMainWindow(int*, char***); -void ContinueWithAction(int); +#ifdef WITH_GUI_YES +void GuiCreateMainWindow(int*, char***); +void GuiContinueWithAction(int); +#endif /*** *** medium-info.c ***/ -void CreateMediumInfoWindow(void); void PrintMediumInfo(void*); +#ifdef WITH_GUI_YES +void GuiCreateMediumInfoWindow(void); +#endif + /*** *** memtrack.c ***/ @@ -1077,14 +1107,14 @@ int forget(void*); void check_memleaks(void); -#ifndef WITH_CLI_ONLY_YES /*** *** menubar.c ***/ -void AttachTooltip(GtkWidget*, char*, char*); -GtkWidget* CreateMenuBar(GtkWidget*); -GtkWidget* CreateToolBar(GtkWidget*); +#ifdef WITH_GUI_YES +void GuiAttachTooltip(GtkWidget*, char*, char*); +GtkWidget* GuiCreateMenuBar(GtkWidget*); +GtkWidget* GuiCreateToolBar(GtkWidget*); #endif /*** @@ -1098,7 +1128,7 @@ GtkWidget* CreateToolBar(GtkWidget*); #define ECC_MD5_BAD (1<<2) typedef struct _Method -{ char name[5]; /* Method name tag */ +{ char name[4]; /* Method name tag */ guint32 properties; /* see definition above */ char *description; /* Fulltext description */ char *menuEntry; /* Text for use in preferences menu */ @@ -1113,7 +1143,6 @@ typedef struct _Method void (*updateCksums)(Image*, gint64, unsigned char*);/* checksum while reading an image */ int (*finalizeCksums)(Image*); void *ckSumClosure; /* working closure for above */ -#ifndef WITH_CLI_ONLY_YES void (*createVerifyWindow)(struct _Method*, GtkWidget*); void (*createCreateWindow)(struct _Method*, GtkWidget*); void (*createFixWindow)(struct _Method*, GtkWidget*); @@ -1123,12 +1152,9 @@ typedef struct _Method void (*resetFixWindow)(struct _Method*); void (*resetPrefsPage)(struct _Method*); void (*readPreferences)(struct _Method*); -#endif void (*destroy)(struct _Method*); -#ifndef WITH_CLI_ONLY_YES int tabWindowIndex; /* our position in the (invisible) notebook */ void *widgetList; /* linkage to window system */ -#endif } Method; void BindMethods(void); /* created by configure in method-link.c */ @@ -1159,12 +1185,9 @@ void Verbose(char*, ...) PRINTF_FORMAT(1); void PrintTimeToLog(GTimer*, char*, ...) PRINTF_FORMAT(2); void PrintProgress(char*, ...) PRINTF_FORMAT(1); void ClearProgress(void); -#ifndef WITH_CLI_ONLY_YES -void PrintCLIorLabel(GtkLabel*, char*, ...) PRINTF_FORMAT(2); -#else -void PrintCLIorLabel(void*, char*, ...) PRINTF_FORMAT(2); -#endif +void PrintCLIorLabel(GtkWidget*, char*, ...) PRINTF_FORMAT(2); int GetLongestTranslation(char*, ...); +void vLogWarning(char*, va_list); void LogWarning(char*, ...) PRINTF_FORMAT(1); void Stop(char*, ...) PRINTF_FORMAT(1); @@ -1173,51 +1196,60 @@ void UnregisterCleanup(void); GThread* CreateGThread(GThreadFunc, gpointer); -#ifndef WITH_CLI_ONLY_YES -void ShowWidget(GtkWidget*); -void AllowActions(gboolean); +/*** + *** misc-gui.c + ***/ -void ShowMessage(GtkWindow*, char*, GtkMessageType); -GtkWidget* CreateMessage(char*, GtkMessageType, ...) PRINTF_FORMAT2(1,3); -void SetLabelText(GtkLabel*, char*, ...) PRINTF_FORMAT(2); -void SetProgress(GtkWidget*, int, int); - -int ModalDialog(GtkMessageType, GtkButtonsType, void (*)(GtkDialog*), char*, ...) PRINTF_FORMAT(4); -int ModalWarning(GtkMessageType, GtkButtonsType, void (*)(GtkDialog*), char*, ...) PRINTF_FORMAT(4); -#define ModalWarningOrCLI(a,b,c,d,...) ModalWarning(a,b,c,d,__VA_ARGS__) +#ifdef WITH_GUI_YES +void GuiAllowActions(gboolean); +int GuiConfirmEccDeletion(char *); +int GuiConfirmImageDeletion(char *); +GtkWidget* GuiCreateMessage(char*, GtkMessageType, ...) PRINTF_FORMAT2(1,3); +void GuiExitWorkerThread(); +int GuiGetLabelWidth(GtkLabel*, char*, ...) PRINTF_FORMAT(2); +void GuiLockLabelSize(GtkWidget*, char*, ...) PRINTF_FORMAT(2); +int GuiModalDialog(GtkMessageType, GtkButtonsType, void (*)(GtkDialog*), char*, ...) PRINTF_FORMAT(4); +void GuiReverseCancelOK(GtkDialog*); +void GuiSetLabelText(GtkWidget*, char*, ...) PRINTF_FORMAT(2); +void GuiShowMessage(GtkWindow*, char*, GtkMessageType); +void GuiSetProgress(GtkWidget*, int, int); +void GuiSetText(PangoLayout*, char*, int*, int*); +void GuiShowWidget(GtkWidget*); +void GuiSwitchAndSetFootline(GtkWidget*, int, GtkWidget*, char*, ...) PRINTF_FORMAT(4); #else -int ModalWarning(char*, ...) PRINTF_FORMAT(1); -#define ModalWarningOrCLI(a,b,c,d,...) ModalWarning(d,__VA_ARGS__) +#define GuiAllowActions(g) +#define GuiConfirmEccDeletion(c) (1) +#define GuiConfirmImageDeletion(c) (1) +#define GuiCreateMessage(a, b, args...) +#define GuiExitWorkerThread() +#define GuiGetLabelWidth(l, c, args...) (0) +#define GuiLockLabelSize(w, c, args...) +#define GuiModalDialog(a, b, c, d, args...) (0) +#define GuiReverseCancelOK(d) +#define GuiSetLabelText(w, c, args...) +#define GuiShowMessage(w, a, b) +#define GuiSetProgress(w, a, b) +#define GuiSetText(p, a, b, c) +#define GuiShowWidget(w) +#define GuiSwitchAndSetFootline(w, a, b, c, args...) #endif -#ifndef WITH_CLI_ONLY_YES -void SetText(PangoLayout*, char*, int*, int*); -void SwitchAndSetFootline(GtkWidget*, int, GtkWidget*, char*, ...) PRINTF_FORMAT(4); -void ReverseCancelOK(GtkDialog*); -void TimedInsensitive(GtkWidget*, int); +int ModalWarning(GtkMessageType, GtkButtonsType, void (*)(GtkDialog*), char*, ...) PRINTF_FORMAT(4); -int GetLabelWidth(GtkLabel*, char*, ...) PRINTF_FORMAT(2); -void LockLabelSize(GtkLabel*, char*, ...) PRINTF_FORMAT(2); -#endif - -int ConfirmImageDeletion(char *); -int ConfirmEccDeletion(char *); -void StripECCFromImageFile(void); - -#ifndef WITH_CLI_ONLY_YES /*** *** preferences.c ***/ -void CreatePreferencesWindow(void); -void UpdateMethodPreferences(void); -void HidePreferences(void); -void FreePreferences(void*); +#ifdef WITH_GUI_YES +void GuiCreatePreferencesWindow(void); +void GuiUpdateMethodPreferences(void); +void GuiHidePreferences(void); +void GuiFreePreferences(void*); -void UpdatePrefsExhaustiveSearch(void); -void UpdatePrefsConfirmDeletion(void); -void RegisterPreferencesHelpWindow(LabelWithOnlineHelp*); +void GuiUpdatePrefsExhaustiveSearch(void); +void GuiUpdatePrefsConfirmDeletion(void); +void GuiRegisterPreferencesHelpWindow(LabelWithOnlineHelp*); #endif /*** @@ -1231,7 +1263,7 @@ void GetLastSense(int*, int*, int*); /*** *** random.c - **/ + ***/ #define MY_RAND_MAX 2147483647 @@ -1243,9 +1275,8 @@ guint32 Random32(void); *** raw-editor.c ***/ -void CreateRawEditor(void); -void FreeRawEditorContext(void*); - +void GuiCreateRawEditor(void); +void GuiFreeRawEditorContext(void*); /*** *** raw-sector-cache.c @@ -1275,18 +1306,24 @@ void ReadDefectiveSectorFile(DefectiveSectorHeader *, struct _RawBuffer*, char*) void ReadMediumLinear(gpointer); -#ifndef WITH_CLI_ONLY_YES /*** *** read-linear-window.c ***/ -void ResetLinearReadWindow(); -void CreateLinearReadWindow(GtkWidget*); +#ifdef WITH_GUI_YES +void GuiInitializeCurve(void*, int, int); +void GuiAddCurveValues(void*, int, int, int); +void GuiMarkExistingSectors(void); -void InitializeCurve(void*, int, int); -void AddCurveValues(void*, int, int, int); -void MarkExistingSectors(void); -void RedrawReadLinearWindow(void); +void GuiResetLinearReadWindow(); +void GuiRedrawReadLinearWindow(void); +void GuiCreateLinearReadWindow(GtkWidget*); +#else +#define GuiInitializeCurve(a, b, c) +#define GuiAddCurveValues(a, b, c, d) +#define GuiMarkExistingSectors() + +#define GuiRedrawReadLinearWindow() #endif /*** @@ -1294,28 +1331,39 @@ void RedrawReadLinearWindow(void); ***/ void GetReadingRange(gint64, gint64*, gint64*); - void ReadMediumAdaptive(gpointer); -#ifndef WITH_CLI_ONLY_YES /*** *** read-adaptive-window.c ***/ #define ADAPTIVE_READ_SPIRAL_SIZE 4800 -void ResetAdaptiveReadWindow(); -void SetAdaptiveReadMinimumPercentage(int); -void CreateAdaptiveReadWindow(GtkWidget*); +#ifdef WITH_GUI_YES +void GuiClipReadAdaptiveSpiral(int); +void GuiChangeSegmentColor(GdkColor*, int); +void GuiRemoveFillMarkers(); -void ClipReadAdaptiveSpiral(int); -void SetAdaptiveReadSubtitle(char*); -void SetAdaptiveReadFootline(char*, GdkColor*); -void UpdateAdaptiveResults(gint64, gint64, gint64, int); -void ChangeSegmentColor(GdkColor*, int); -void RemoveFillMarkers(); +void GuiSetAdaptiveReadSubtitle(char*); +void GuiSetAdaptiveReadFootline(char*, GdkColor*); +void GuiSetAdaptiveReadMinimumPercentage(int); +void GuiUpdateAdaptiveResults(gint64, gint64, gint64, int); + +void GuiResetAdaptiveReadWindow(); +#else +#define GuiClipReadAdaptiveSpiral(i) +#define GuiChangeSegmentColor(g, i) +#define GuiRemoveFillMarkers() + +#define GuiSetAdaptiveReadSubtitle(c) +#define GuiSetAdaptiveReadFootline(c, d) +#define GuiSetAdaptiveReadMinimumPercentage(i) +#define GuiUpdateAdaptiveResults(a, b, c, d) #endif +void GuiCreateAdaptiveReadWindow(GtkWidget*); + + /*** *** recover-raw.c ***/ @@ -1456,13 +1504,7 @@ int ProbeAltiVec(void); *** show-manual.c ***/ -void ShowURL(char*); - -/*** - *** show-html.c - ***/ - -void ShowHTML(char*); +void GuiShowURL(char*); /*** *** smart-lec.c @@ -1478,7 +1520,6 @@ void *PrepareIterativeSmartLEC(RawBuffer*); void SmartLECIteration(void*, char*); void EndIterativeSmartLEC(void*); -#ifndef WITH_CLI_ONLY_YES /*** *** spiral.c ***/ @@ -1498,22 +1539,28 @@ typedef struct _Spiral GdkColor *colorUnderCursor; } Spiral; -Spiral* CreateSpiral(GdkColor*, GdkColor*, int, int, int); -void SetSpiralWidget(Spiral*, GtkWidget*); -void FillSpiral(Spiral*, GdkColor*); -void FreeSpiral(Spiral*); -void DrawSpiral(Spiral*); -void DrawSpiralSegment(Spiral*, GdkColor*, int); -void DrawSpiralLabel(Spiral*, PangoLayout*, char*, GdkColor*, int, int); +#ifdef WITH_GUI_YES +Spiral* GuiCreateSpiral(GdkColor*, GdkColor*, int, int, int); +void GuiSetSpiralWidget(Spiral*, GtkWidget*); +void GuiFreeSpiral(Spiral*); -void ChangeSpiralCursor(Spiral*, int); -void MoveSpiralCursor(Spiral*, int); +void GuiFillSpiral(Spiral*, GdkColor*); +void GuiDrawSpiral(Spiral*); +void GuiDrawSpiralSegment(Spiral*, GdkColor*, int); +void GuiDrawSpiralLabel(Spiral*, PangoLayout*, char*, GdkColor*, int, int); +void GuiChangeSpiralCursor(Spiral*, int); +void GuiMoveSpiralCursor(Spiral*, int); +#else +#define GuiChangeSpiralCursor(a, b) +#define GuiFreeSpiral(s) +#endif /*** *** welcome-window.c ***/ -void CreateWelcomePage(GtkNotebook*); -#endif +void GuiCreateWelcomePage(GtkNotebook*); -#endif /* DVDISASTER_H */ +void StripECCFromImageFile(void); + +#endif /* DVDISASTER_H */ diff --git a/src/ecc-rs01.c b/src/ecc-rs01.c index 447318a..41d551b 100644 --- a/src/ecc-rs01.c +++ b/src/ecc-rs01.c @@ -20,6 +20,8 @@ * along with dvdisaster. If not, see . */ +/*** src type: some GUI code ***/ + #include "dvdisaster.h" #include "rs01-includes.h" @@ -53,7 +55,12 @@ void register_rs01(void) method->finalizeCksums = RS01FinalizeCksums; method->expectedImageSize = RS01ExpectedImageSize; -#ifndef WITH_CLI_ONLY_YES + /*** Widget list must even exist with dummy values in CLI only version + to prevent null ptr references in SetLabel() etc. */ + + method->widgetList = g_malloc0(sizeof(RS01Widgets)); + +#ifdef WITH_GUI_YES /*** Linkage to rs01-window.c */ method->createCreateWindow = CreateRS01EWindow; @@ -70,7 +77,7 @@ void register_rs01(void) method->createVerifyWindow = CreateRS01VerifyWindow; method->resetVerifyWindow = ResetRS01VerifyWindow; #endif - + /*** Register ourself */ method->destroy = destroy; @@ -79,26 +86,22 @@ void register_rs01(void) } static void destroy(Method *method) -{ -#ifndef WITH_CLI_ONLY_YES - RS01Widgets *wl = (RS01Widgets*)method->widgetList; -#endif +{ RS01Widgets *wl = (RS01Widgets*)method->widgetList; + g_free(method->ckSumClosure); -#ifndef WITH_CLI_ONLY_YES if(wl) - { if(wl->fixCurve) FreeCurve(wl->fixCurve); - - if(wl->cmpSpiral) - FreeSpiral(wl->cmpSpiral); + { +#ifdef WITH_GUI_YES + GuiFreeCurve(wl->fixCurve); + GuiFreeSpiral(wl->cmpSpiral); if(wl->cmpLayout) g_object_unref(wl->cmpLayout); - +#endif g_free(wl); } -#endif } diff --git a/src/ecc-rs02.c b/src/ecc-rs02.c index a20efe5..c85be39 100644 --- a/src/ecc-rs02.c +++ b/src/ecc-rs02.c @@ -20,6 +20,8 @@ * along with dvdisaster. If not, see . */ +/*** src type: some GUI code ***/ + #include "dvdisaster.h" #include "rs02-includes.h" @@ -54,7 +56,12 @@ void register_rs02(void) method->finalizeCksums = RS02FinalizeCksums; method->expectedImageSize = RS02ExpectedImageSize; -#ifndef WITH_CLI_ONLY_YES + /*** Widget list must even exist with dummy values in CLI only version + to prevent null ptr references in SetLabel() etc. */ + + method->widgetList = g_malloc0(sizeof(RS02Widgets)); + +#ifdef WITH_GUI_YES /*** Linkage to rs02-window.c */ method->createCreateWindow = CreateRS02EncWindow; @@ -72,7 +79,7 @@ void register_rs02(void) method->createVerifyWindow = CreateRS02VerifyWindow; method->resetVerifyWindow = ResetRS02VerifyWindow; #endif - + /*** Register ourself */ method->destroy = destroy; @@ -81,28 +88,23 @@ void register_rs02(void) } static void destroy(Method *method) -{ -#ifndef WITH_CLI_ONLY_YES - RS02Widgets *wl = (RS02Widgets*)method->widgetList; -#endif +{ RS02Widgets *wl = (RS02Widgets*)method->widgetList; RS02CksumClosure *csc = (RS02CksumClosure*)method->ckSumClosure; if(csc->lay) g_free(csc->lay); g_free(method->ckSumClosure); -#ifndef WITH_CLI_ONLY_YES if(wl) - { if(wl->fixCurve) FreeCurve(wl->fixCurve); - - if(wl->cmpSpiral) - FreeSpiral(wl->cmpSpiral); + { +#ifdef WITH_GUI_YES + GuiFreeCurve(wl->fixCurve); + GuiFreeSpiral(wl->cmpSpiral); if(wl->cmpLayout) g_object_unref(wl->cmpLayout); - +#endif g_free(wl); } -#endif } diff --git a/src/ecc-rs03.c b/src/ecc-rs03.c index 3aa300b..7e0f29b 100644 --- a/src/ecc-rs03.c +++ b/src/ecc-rs03.c @@ -20,6 +20,8 @@ * along with dvdisaster. If not, see . */ +/*** src type: some GUI code ***/ + #include "dvdisaster.h" #include "rs03-includes.h" @@ -55,7 +57,9 @@ void register_rs03(void) method->recognizeEccFile = RS03RecognizeFile; method->recognizeEccImage = RS03RecognizeImage; -#ifndef WITH_CLI_ONLY_YES + method->widgetList = g_malloc0(sizeof(RS03Widgets)); + +#ifdef WITH_GUI_YES /*** Linkage to rs03-window.c */ method->createCreateWindow = CreateRS03EncWindow; @@ -72,8 +76,8 @@ void register_rs03(void) method->createVerifyWindow = CreateRS03VerifyWindow; method->resetVerifyWindow = ResetRS03VerifyWindow; -#endif - +#endif /* WITH_GUI_YES */ + /*** Register ourself */ method->destroy = destroy; @@ -82,28 +86,23 @@ void register_rs03(void) } static void destroy(Method *method) -{ -#ifndef WITH_CLI_ONLY_YES - RS03Widgets *wl = (RS03Widgets*)method->widgetList; -#endif +{ RS03Widgets *wl = (RS03Widgets*)method->widgetList; RS03CksumClosure *csc = (RS03CksumClosure*)method->ckSumClosure; if(csc->lay) g_free(csc->lay); g_free(method->ckSumClosure); -#ifndef WITH_CLI_ONLY_YES if(wl) - { if(wl->fixCurve) FreeCurve(wl->fixCurve); - - if(wl->cmpSpiral) - FreeSpiral(wl->cmpSpiral); + { +#ifdef WITH_GUI_YES + GuiFreeCurve(wl->fixCurve); + GuiFreeSpiral(wl->cmpSpiral); if(wl->cmpLayout) g_object_unref(wl->cmpLayout); - +#endif g_free(wl); } -#endif } diff --git a/src/endian.c b/src/endian.c index 3958f8b..f6ee7dd 100644 --- a/src/endian.c +++ b/src/endian.c @@ -20,6 +20,8 @@ * along with dvdisaster. If not, see . */ +/*** src type: no GUI code ***/ + #include "dvdisaster.h" /*** diff --git a/src/galois.c b/src/galois.c index fb2b6e2..a87aa5c 100644 --- a/src/galois.c +++ b/src/galois.c @@ -23,6 +23,8 @@ * along with dvdisaster. If not, see . */ +/*** src type: no GUI code ***/ + #include "dvdisaster.h" #include "galois-inlines.h" diff --git a/src/help-dialogs.c b/src/help-dialogs.c index de1196d..87ca87e 100644 --- a/src/help-dialogs.c +++ b/src/help-dialogs.c @@ -19,8 +19,10 @@ * You should have received a copy of the GNU General Public License * along with dvdisaster. If not, see . */ -// DVDISASTER_GUI_FILE +/*** src type: only GUI code ***/ + +#ifdef WITH_GUI_YES #include "dvdisaster.h" #include "build.h" @@ -101,7 +103,7 @@ static gint help_cb(GtkWidget *widget, GdkEvent *event, gpointer data) * Create a frame labeled with a link to the help system */ -LabelWithOnlineHelp* CreateLabelWithOnlineHelp(char *title, char *ascii_text) +LabelWithOnlineHelp* GuiCreateLabelWithOnlineHelp(char *title, char *ascii_text) { GtkWidget *window = gtk_window_new(GTK_WINDOW_TOPLEVEL); GtkWidget *vbox, *hbox, *button; GtkWidget *ebox = gtk_event_box_new(); @@ -114,7 +116,7 @@ LabelWithOnlineHelp* CreateLabelWithOnlineHelp(char *title, char *ascii_text) lwoh->linkLabel = gtk_label_new(NULL); lwoh->linkBox = ebox; lwoh->windowTitle = g_locale_to_utf8(title, -1, NULL, NULL, NULL); - SetOnlineHelpLinkText(lwoh, ascii_text); + GuiSetOnlineHelpLinkText(lwoh, ascii_text); /*** Add a tooltip image */ lwoh->tooltip = gtk_image_new(); @@ -164,7 +166,7 @@ LabelWithOnlineHelp* CreateLabelWithOnlineHelp(char *title, char *ascii_text) return lwoh; } -LabelWithOnlineHelp* CloneLabelWithOnlineHelp(LabelWithOnlineHelp *orig, char *ascii_text) +LabelWithOnlineHelp* GuiCloneLabelWithOnlineHelp(LabelWithOnlineHelp *orig, char *ascii_text) { LabelWithOnlineHelp *lwoh; GtkWidget *ebox = gtk_event_box_new(); @@ -181,7 +183,7 @@ LabelWithOnlineHelp* CloneLabelWithOnlineHelp(LabelWithOnlineHelp *orig, char *a lwoh->windowTitle = g_strdup("ignore"); lwoh->tooltip = orig->tooltip; - SetOnlineHelpLinkText(lwoh, ascii_text); + GuiSetOnlineHelpLinkText(lwoh, ascii_text); /*** Put link label into an event box */ @@ -197,7 +199,7 @@ LabelWithOnlineHelp* CloneLabelWithOnlineHelp(LabelWithOnlineHelp *orig, char *a return lwoh; } -void SetOnlineHelpLinkText(LabelWithOnlineHelp *lwoh, char *ascii_text) +void GuiSetOnlineHelpLinkText(LabelWithOnlineHelp *lwoh, char *ascii_text) { char text[strlen(ascii_text)+80]; if(lwoh->normalText) g_free(lwoh->normalText); @@ -208,7 +210,7 @@ void SetOnlineHelpLinkText(LabelWithOnlineHelp *lwoh, char *ascii_text) lwoh->highlitText = g_locale_to_utf8(text, -1, NULL, NULL, NULL); } -void FreeLabelWithOnlineHelp(LabelWithOnlineHelp *lwoh) +void GuiFreeLabelWithOnlineHelp(LabelWithOnlineHelp *lwoh) { if(lwoh->lastSizes) { int i; @@ -249,7 +251,7 @@ static gboolean wrapper_fix_cb(GtkWidget *widget, GdkEventExpose *event, gpointe return FALSE; } -void AddHelpParagraph(LabelWithOnlineHelp *lwoh, char *format, ...) +void GuiAddHelpParagraph(LabelWithOnlineHelp *lwoh, char *format, ...) { GtkWidget *label = gtk_label_new(NULL); va_list argp; char *text,*utf; @@ -280,7 +282,7 @@ void AddHelpParagraph(LabelWithOnlineHelp *lwoh, char *format, ...) * The list may be preceeded by an optional paragraph of text. */ -void AddHelpListItem(LabelWithOnlineHelp *lwoh, char *format, ...) +void GuiAddHelpListItem(LabelWithOnlineHelp *lwoh, char *format, ...) { GtkWidget *label = gtk_label_new(NULL); GtkWidget *bullet = gtk_label_new(" - "); GtkWidget *hbox = gtk_hbox_new(FALSE, 0); @@ -317,7 +319,7 @@ void AddHelpListItem(LabelWithOnlineHelp *lwoh, char *format, ...) * Add a (fully functional!) widget set to the help window */ -void AddHelpWidget(LabelWithOnlineHelp *lwoh, GtkWidget *widget) +void GuiAddHelpWidget(LabelWithOnlineHelp *lwoh, GtkWidget *widget) { gtk_box_pack_start(GTK_BOX(lwoh->vbox), widget, FALSE, FALSE, 10); gtk_box_pack_start(GTK_BOX(lwoh->vbox), gtk_hseparator_new(), FALSE, FALSE, 10); @@ -373,7 +375,7 @@ static gboolean log_idle_func(gpointer data) } -void UpdateLog() +void GuiUpdateLog() { static int unique_addr; if(Closure->logWidget) @@ -382,7 +384,7 @@ void UpdateLog() } } -void ShowLog() +void GuiShowLog() { GtkWidget *w; if(Closure->logWidget) @@ -390,10 +392,10 @@ void ShowLog() return; } - w = ShowTextfile(_("windowtitle|Log data"), - _("Log data\n" - "Protocol of the current or previous action"), - "*LOG*", &Closure->logScroll, &Closure->logBuffer); + w = GuiShowTextfile(_("windowtitle|Log data"), + _("Log data\n" + "Protocol of the current or previous action"), + "*LOG*", &Closure->logScroll, &Closure->logBuffer); g_signal_connect(G_OBJECT(w), "destroy", G_CALLBACK(log_destroy_cb), NULL); @@ -405,12 +407,12 @@ void ShowLog() *** Specific help dialogs ***/ -void ShowGPL() +void GuiShowGPL() { - ShowTextfile(_("windowtitle|GNU General Public License"), - _("GNU General Public License\n" - "The license terms of dvdisaster."), - "COPYING", NULL, NULL); + GuiShowTextfile(_("windowtitle|GNU General Public License"), + _("GNU General Public License\n" + "The license terms of dvdisaster."), + "COPYING", NULL, NULL); } /* @@ -481,8 +483,8 @@ char *find_file(char *file, size_t *size, char *lang) return NULL; } -GtkWidget* ShowTextfile(char *title, char *explanation, char *file, - GtkScrolledWindow **scroll_out, GtkTextBuffer **buffer_out) +GtkWidget* GuiShowTextfile(char *title, char *explanation, char *file, + GtkScrolledWindow **scroll_out, GtkTextBuffer **buffer_out) { GtkWidget *dialog, *scroll_win, *vbox, *lab, *sep, *view; GtkTextBuffer *buffer; GtkTextIter start; @@ -598,8 +600,8 @@ static gint about_cb(GtkWidget *widget, GdkEvent *event, gpointer data) switch(event->type) { case GDK_BUTTON_PRESS: if(!inside) return FALSE; /* Defect in certain Gtk versions? */ - if(!strcmp(label,"GPL")) ShowGPL(); - else ShowURL(g_strdup(label)); + if(!strcmp(label,"GPL")) GuiShowGPL(); + else GuiShowURL(g_strdup(label)); break; case GDK_ENTER_NOTIFY: g_sprintf(text, "%s", label); @@ -621,7 +623,7 @@ static gint about_cb(GtkWidget *widget, GdkEvent *event, gpointer data) return FALSE; } -void AboutText(GtkWidget *parent, char *format, ...) +void GuiAboutText(GtkWidget *parent, char *format, ...) { GtkWidget *lab; char *tmp, *utf_text; va_list argp; @@ -641,7 +643,7 @@ void AboutText(GtkWidget *parent, char *format, ...) va_end(argp); } -void AboutLink(GtkWidget *parent, char *label, char *action) +void GuiAboutLink(GtkWidget *parent, char *label, char *action) { GtkWidget *ebox,*lab; char text[strlen(label)+80]; char *label_copy = strdup(label); @@ -663,7 +665,7 @@ void AboutLink(GtkWidget *parent, char *label, char *action) g_free(utf); } -void AboutTextWithLink(GtkWidget *parent, char *text, char *action) +void GuiAboutTextWithLink(GtkWidget *parent, char *text, char *action) { char *copy,*head,*end_of_line; char *link_start,*link_end; char *utf; @@ -693,7 +695,7 @@ void AboutTextWithLink(GtkWidget *parent, char *text, char *action) g_free(utf); } - AboutLink(hbox, link_start, action); + GuiAboutLink(hbox, link_start, action); if(*link_end) { GtkWidget *lab = gtk_label_new(NULL); @@ -704,7 +706,7 @@ void AboutTextWithLink(GtkWidget *parent, char *text, char *action) g_free(utf); } } - else AboutText(parent, "%s", head); + else GuiAboutText(parent, "%s", head); if(end_of_line) head = end_of_line+1; else break; @@ -713,7 +715,7 @@ void AboutTextWithLink(GtkWidget *parent, char *text, char *action) g_free(copy); } -void AboutDialog() +void GuiAboutDialog() { GtkWidget *about, *vbox, *sep; char *text; @@ -734,35 +736,37 @@ void AboutDialog() text = g_strdup_printf("dvdisaster " "Version %s", Closure->cookedVersion); - AboutText(vbox, "%s", text); + GuiAboutText(vbox, "%s", text); g_free(text); - AboutText(vbox, _("Copyright 2004-2017 Carsten Gnoerlich.\nCopyright 2019-2021 The dvdisaster development team.")); + GuiAboutText(vbox, _("Copyright 2004-2017 Carsten Gnoerlich.\nCopyright 2019-2021 The dvdisaster development team.")); sep = gtk_hseparator_new(); gtk_box_pack_start(GTK_BOX(vbox), sep, FALSE, FALSE, 10); - AboutText(vbox, _("dvdisaster provides a margin of safety against data loss\n" - "on optical media caused by aging or scratches.\n" - "It creates error correction data which is used to recover\n" - "unreadable sectors if the disc becomes damaged later on.\n")); + GuiAboutText(vbox, _("dvdisaster provides a margin of safety against data loss\n" + "on optical media caused by aging or scratches.\n" + "It creates error correction data which is used to recover\n" + "unreadable sectors if the disc becomes damaged later on.\n")); - AboutTextWithLink(vbox, _("This software comes with absolutely no warranty.\n" + GuiAboutTextWithLink(vbox, _("This software comes with absolutely no warranty.\n" "This is free software and you are welcome to redistribute it\n" "under the conditions of the [GNU General Public License].\n"), "GPL"); - AboutText(vbox, _("\ne-mail: support@dvdisaster.org")); + GuiAboutText(vbox, _("\ne-mail: support@dvdisaster.org")); text = g_strdup_printf("WWW: [%s]", HOMEPAGE); - AboutTextWithLink(vbox, text, HOMEPAGE); + GuiAboutTextWithLink(vbox, text, HOMEPAGE); g_free(text); #ifdef SYS_NETBSD - AboutText(vbox, _("\nNetBSD port: Sergey Svishchev <svs@ropnet.ru>")); + GuiAboutText(vbox, _("\nNetBSD port: Sergey Svishchev <svs@ropnet.ru>")); #endif + /* Show it */ gtk_widget_show_all(about); } +#endif /* WITH_GUI_YES */ diff --git a/src/heuristic-lec.c b/src/heuristic-lec.c index 8465fa6..1de732d 100644 --- a/src/heuristic-lec.c +++ b/src/heuristic-lec.c @@ -21,6 +21,8 @@ * along with dvdisaster. If not, see . */ +/*** src type: no GUI code ***/ + #include "dvdisaster.h" /*** diff --git a/src/icon-factory.c b/src/icon-factory.c index 34e2e50..26cf084 100644 --- a/src/icon-factory.c +++ b/src/icon-factory.c @@ -19,8 +19,10 @@ * You should have received a copy of the GNU General Public License * along with dvdisaster. If not, see . */ -// DVDISASTER_GUI_FILE +/*** src type: only GUI code ***/ + +#ifdef WITH_GUI_YES #include "dvdisaster.h" #include "inlined-icons.h" @@ -53,7 +55,7 @@ static GdkPixbuf* create_icon(GtkIconFactory *ifact, char *name, const guint8 *i return pb; } -void CreateIconFactory() +void GuiCreateIconFactory() { GtkIconFactory *ifact; /*** Create and register our icon factory */ @@ -86,3 +88,4 @@ void CreateIconFactory() create_icon(ifact, "dvdisaster-gtk-quit", dvdisaster_gtk_quit); create_icon(ifact, "dvdisaster-gtk-stop", dvdisaster_gtk_stop); } +#endif /* WITH_GUI_YES */ diff --git a/src/image.c b/src/image.c index c051d41..ab61213 100644 --- a/src/image.c +++ b/src/image.c @@ -20,6 +20,8 @@ * along with dvdisaster. If not, see . */ +/*** src type: some GUI code ***/ + #include "dvdisaster.h" #include "scsi-layer.h" #include "udf.h" @@ -148,9 +150,10 @@ int ReportImageEccInconsistencies(Image *image) if(!image || image->type == IMAGE_NONE) { if(image) CloseImage(image); -#ifndef WITH_CLI_ONLY_YES + +#ifdef WITH_GUI_YES if(Closure->guiMode) - { CreateMessage(_("Image file %s not present or permission denied.\n"), GTK_MESSAGE_ERROR, Closure->imageName); + { GuiCreateMessage(_("Image file %s not present or permission denied.\n"), GTK_MESSAGE_ERROR, Closure->imageName); return TRUE; } else @@ -163,13 +166,14 @@ int ReportImageEccInconsistencies(Image *image) if(image->eccFile && !image->eccFileMethod) { CloseImage(image); -#ifndef WITH_CLI_ONLY_YES + +#ifdef WITH_GUI_YES if(Closure->guiMode) - { CreateMessage(_("\nError correction file type unknown.\n"), GTK_MESSAGE_ERROR); + { GuiCreateMessage(_("\nError correction file type unknown.\n"), GTK_MESSAGE_ERROR); return TRUE; } else -#endif +#endif { Stop(_("\nError correction file type unknown.\n")); } } @@ -178,9 +182,10 @@ int ReportImageEccInconsistencies(Image *image) if(!image->eccFile && image->eccFileState == ECCFILE_NOPERM) { CloseImage(image); -#ifndef WITH_CLI_ONLY_YES + +#ifdef WITH_GUI_YES if(Closure->guiMode) - { CreateMessage(_("\nPermission denied on ecc file (perhaps not writeable?).\n"), + { GuiCreateMessage(_("\nPermission denied on ecc file (perhaps not writeable?).\n"), GTK_MESSAGE_ERROR); return TRUE; } @@ -195,10 +200,11 @@ int ReportImageEccInconsistencies(Image *image) if(!image->eccFile && !image->eccMethod) { CloseImage(image); -#ifndef WITH_CLI_ONLY_YES + +#ifdef WITH_GUI_YES if(Closure->guiMode) - { CreateMessage(_("\nNo error correction file present.\n" - "No error correction data recognized in image.\n"), GTK_MESSAGE_ERROR); + { GuiCreateMessage(_("\nNo error correction file present.\n" + "No error correction data recognized in image.\n"), GTK_MESSAGE_ERROR); return TRUE; } else diff --git a/src/l-ec.c b/src/l-ec.c index b845e4a..1115a25 100644 --- a/src/l-ec.c +++ b/src/l-ec.c @@ -20,11 +20,12 @@ * along with dvdisaster. If not, see . */ +/*** src type: no GUI code ***/ + #include "dvdisaster.h" #include "galois-inlines.h" - /*** *** Mapping between cd frame and parity vectors ***/ diff --git a/src/large-io.c b/src/large-io.c index ec63ff5..fa8256d 100644 --- a/src/large-io.c +++ b/src/large-io.c @@ -20,6 +20,8 @@ * along with dvdisaster. If not, see . */ +/*** src type: some GUI code ***/ + #include "dvdisaster.h" /*** @@ -211,7 +213,7 @@ ssize_t LargeRead(LargeFile *lf, void *buf, size_t count) * Writing large files */ -#ifndef WITH_CLI_ONLY_YES +#ifdef WITH_GUI_YES static void insert_buttons(GtkDialog *dialog) { gtk_dialog_add_buttons(dialog, @@ -226,9 +228,7 @@ static ssize_t xwrite(int fdes, void *buf_base, size_t count) /* Simply fail when going out of space in command line mode */ -#ifndef WITH_CLI_ONLY_YES if(!Closure->guiMode) -#endif { while(count) { ssize_t n = write(fdes, buf, count); @@ -243,7 +243,7 @@ static ssize_t xwrite(int fdes, void *buf_base, size_t count) return total; } -#ifndef WITH_CLI_ONLY_YES +#ifdef WITH_GUI_YES /* Give the user a chance to free more space in GUI mode. When running out of space, the last write() may complete with n. */ +/*** src type: no GUI code ***/ + #include "dvdisaster.h" #include diff --git a/src/main-window.c b/src/main-window.c index 7e55f1e..a7788cf 100644 --- a/src/main-window.c +++ b/src/main-window.c @@ -19,8 +19,10 @@ * You should have received a copy of the GNU General Public License * along with dvdisaster. If not, see . */ -// DVDISASTER_GUI_FILE +/*** src type: only GUI code ***/ + +#ifdef WITH_GUI_YES #include "dvdisaster.h" /*** @@ -61,6 +63,7 @@ static void action_cb(GtkWidget *widget, gpointer data) if(action != ACTION_STOP) { /* Clear the log buffer, request new log file time stamp */ + if(action != ACTION_CREATE_CONT) { g_mutex_lock(Closure->logLock); g_string_truncate(Closure->logString, 0); @@ -68,6 +71,7 @@ static void action_cb(GtkWidget *widget, gpointer data) g_mutex_unlock(Closure->logLock); Closure->logFileStamped = FALSE; } + /* Make sure we're using the current file selections */ g_free(Closure->imageName); @@ -90,21 +94,21 @@ static void action_cb(GtkWidget *widget, gpointer data) { int len = strlen(Closure->eccName); if(!strcmp(Closure->eccName, Closure->imageName)) - { CreateMessage(_("The .iso image and error correction file\n" - "must not be the same file!\n\n" - "If you intended to create or use an .iso image\n" - "which is augmented with error correction data,\n" - "please leave the error correction file name blank."), - GTK_MESSAGE_ERROR); + { GuiCreateMessage(_("The .iso image and error correction file\n" + "must not be the same file!\n\n" + "If you intended to create or use an .iso image\n" + "which is augmented with error correction data,\n" + "please leave the error correction file name blank."), + GTK_MESSAGE_ERROR); return; } if(!strcmp(Closure->eccName+len-4, ".iso")) - { CreateMessage(_("The error correction file type must not be \".iso\".\n\n" - "If you intended to create or use an .iso image\n" - "which is augmented with error correction data,\n" - "please leave the error correction file name blank."), - GTK_MESSAGE_ERROR); + { GuiCreateMessage(_("The error correction file type must not be \".iso\".\n\n" + "If you intended to create or use an .iso image\n" + "which is augmented with error correction data,\n" + "please leave the error correction file name blank."), + GTK_MESSAGE_ERROR); return; } } @@ -126,18 +130,18 @@ static void action_cb(GtkWidget *widget, gpointer data) break; case ACTION_READ: - AllowActions(FALSE); + GuiAllowActions(FALSE); if(Closure->adaptiveRead) { gtk_notebook_set_current_page(GTK_NOTEBOOK(Closure->notebook), 2); - ResetAdaptiveReadWindow(); + GuiResetAdaptiveReadWindow(); CreateGThread((GThreadFunc)ReadMediumAdaptive, (gpointer)0); } else { gtk_notebook_set_current_page(GTK_NOTEBOOK(Closure->notebook), 1); Closure->additionalSpiralColor = 1; - ResetLinearReadWindow(); + GuiResetLinearReadWindow(); CreateGThread((GThreadFunc)ReadMediumLinear, (gpointer)0); } break; @@ -146,15 +150,15 @@ static void action_cb(GtkWidget *widget, gpointer data) case ACTION_CREATE_CONT: method = FindMethod(Closure->methodName); if(!method) - { CreateMessage(_("\nMethod %s not available.\n" - "Use -m without parameters for a method list.\n"), - GTK_MESSAGE_ERROR, Closure->methodName); + { GuiCreateMessage(_("\nMethod %s not available.\n" + "Use -m without parameters for a method list.\n"), + GTK_MESSAGE_ERROR, Closure->methodName); break; } gtk_notebook_set_current_page(GTK_NOTEBOOK(Closure->notebook), method->tabWindowIndex); method->resetCreateWindow(method); - AllowActions(FALSE); + GuiAllowActions(FALSE); CreateGThread((GThreadFunc)method->create, (gpointer)method); break; @@ -170,13 +174,13 @@ static void action_cb(GtkWidget *widget, gpointer data) if(image && image->eccFileMethod) method = image->eccFileMethod; else if(image && image->eccMethod) method = image->eccMethod; - else { CreateMessage(_("Internal error: No suitable method for repairing image."), - GTK_MESSAGE_ERROR); + else { GuiCreateMessage(_("Internal error: No suitable method for repairing image."), + GTK_MESSAGE_ERROR); return; } gtk_notebook_set_current_page(GTK_NOTEBOOK(Closure->notebook), method->tabWindowIndex+1); method->resetFixWindow(method); - AllowActions(FALSE); + GuiAllowActions(FALSE); CreateGThread((GThreadFunc)method->fix, (gpointer)image); } break; @@ -184,13 +188,13 @@ static void action_cb(GtkWidget *widget, gpointer data) case ACTION_SCAN: gtk_notebook_set_current_page(GTK_NOTEBOOK(Closure->notebook), 1); Closure->additionalSpiralColor = -1; - ResetLinearReadWindow(); - AllowActions(FALSE); + GuiResetLinearReadWindow(); + GuiAllowActions(FALSE); CreateGThread((GThreadFunc)ReadMediumLinear, (gpointer)1); break; case ACTION_STRIP: - AllowActions(FALSE); + GuiAllowActions(FALSE); CreateGThread((GThreadFunc)StripECCFromImageFile, (gpointer)0); break; @@ -209,14 +213,14 @@ static void action_cb(GtkWidget *widget, gpointer data) if(image && image->eccFileMethod) method = image->eccFileMethod; else if(image && image->eccMethod) method = image->eccMethod; else if(!(method = FindMethod("RS01"))) - { CreateMessage(_("RS01 method not available for comparing files."), - GTK_MESSAGE_ERROR); + { GuiCreateMessage(_("RS01 method not available for comparing files."), + GTK_MESSAGE_ERROR); return; } gtk_notebook_set_current_page(GTK_NOTEBOOK(Closure->notebook), method->tabWindowIndex+2); method->resetVerifyWindow(method); - AllowActions(FALSE); + GuiAllowActions(FALSE); CreateGThread((GThreadFunc)method->verify, (gpointer)image); break; } @@ -237,7 +241,7 @@ static gboolean action_idle_func(gpointer action) } -void ContinueWithAction(int action) +void GuiContinueWithAction(int action) { g_idle_add(action_idle_func, GINT_TO_POINTER(action)); } @@ -280,59 +284,66 @@ static GtkWidget* create_action_bar(GtkNotebook *notebook) Closure->readButton = wid = create_button(_("button|Read"), "dvdisaster-read"); g_signal_connect(G_OBJECT(wid), "clicked", G_CALLBACK(action_cb), (gpointer)ACTION_READ); gtk_box_pack_start(GTK_BOX(vbox), wid, FALSE, FALSE, 0); - AttachTooltip(wid, _("tooltip|Read Image"), _("Reads an optical disc image into a file (or tries to complete an existing image file).")); + GuiAttachTooltip(wid, _("tooltip|Read Image"), + _("Reads an optical disc image into a file (or tries to complete an existing image file).")); content = gtk_vbox_new(FALSE, 0); /* read linear window */ ignore = gtk_label_new("read_tab_l"); gtk_notebook_append_page(notebook, content, ignore); - CreateLinearReadWindow(content); + GuiCreateLinearReadWindow(content); content = gtk_vbox_new(FALSE, 0); /* read adaptive window */ ignore = gtk_label_new("read_tab_a"); gtk_notebook_append_page(notebook, content, ignore); - CreateAdaptiveReadWindow(content); + GuiCreateAdaptiveReadWindow(content); /*** Create */ Closure->createButton = wid = create_button(_("button|Create"), "dvdisaster-create"); g_signal_connect(G_OBJECT(wid), "clicked", G_CALLBACK(action_cb), (gpointer)ACTION_CREATE); gtk_box_pack_start(GTK_BOX(vbox), wid, FALSE, FALSE, 0); - AttachTooltip(wid, _("tooltip|Create error correction data"), _("Creates error correction data. Requires an image file.")); + GuiAttachTooltip(wid, _("tooltip|Create error correction data"), + _("Creates error correction data. Requires an image file.")); /*** Scan */ Closure->scanButton = wid = create_button(_("button|Scan"), "dvdisaster-scan"); g_signal_connect(G_OBJECT(wid), "clicked", G_CALLBACK(action_cb), (gpointer)ACTION_SCAN); gtk_box_pack_start(GTK_BOX(vbox), wid, FALSE, FALSE, 0); - AttachTooltip(wid, _("tooltip|Scan medium"), _("Scans medium for unreadable sectors.")); + GuiAttachTooltip(wid, _("tooltip|Scan medium"), + _("Scans medium for unreadable sectors.")); /*** Fix */ Closure->fixButton = wid = create_button(_("button|Fix"), "dvdisaster-fix"); g_signal_connect(G_OBJECT(wid), "clicked", G_CALLBACK(action_cb), (gpointer)ACTION_FIX); gtk_box_pack_start(GTK_BOX(vbox), wid, FALSE, FALSE, 0); - AttachTooltip(wid, _("tooltip|Repair image"), _("Repairs an image. Requires an image file and error correction data.")); + GuiAttachTooltip(wid, _("tooltip|Repair image"), + _("Repairs an image. Requires an image file and error correction data.")); /*** Verify */ Closure->testButton = wid = create_button(_("button|Verify"), "dvdisaster-verify"); g_signal_connect(G_OBJECT(wid), "clicked", G_CALLBACK(action_cb), (gpointer)ACTION_VERIFY); gtk_box_pack_start(GTK_BOX(vbox), wid, FALSE, FALSE, 0); - AttachTooltip(wid, _("tooltip|Consistency check"), _("Tests consistency of error correction data and image file.")); + GuiAttachTooltip(wid, _("tooltip|Consistency check"), + _("Tests consistency of error correction data and image file.")); /*** Strip */ Closure->stripButton = wid = create_button(_("button|Strip"), "dvdisaster-strip"); g_signal_connect(G_OBJECT(wid), "clicked", G_CALLBACK(action_cb), (gpointer)ACTION_STRIP); gtk_box_pack_start(GTK_BOX(vbox), wid, FALSE, FALSE, 0); - AttachTooltip(wid, _("tooltip|Strip ECC"), _("Strip ECC data from an augmented image.")); + GuiAttachTooltip(wid, _("tooltip|Strip ECC"), + _("Strip ECC data from an augmented image.")); /*** Stop */ wid = create_button(_("button|Stop"), "dvdisaster-gtk-stop"); g_signal_connect(G_OBJECT(wid), "clicked", G_CALLBACK(action_cb), (gpointer)ACTION_STOP); gtk_box_pack_end(GTK_BOX(vbox), wid, FALSE, FALSE, 0); - AttachTooltip(wid, _("tooltip|Abort action"), _("Aborts an ongoing action.")); + GuiAttachTooltip(wid, _("tooltip|Abort action"), + _("Aborts an ongoing action.")); /*** Block drive related actions if no drives were found */ @@ -384,10 +395,10 @@ static GtkWidget* create_action_bar(GtkNotebook *notebook) */ static void log_cb(GtkWidget *widget, gpointer data) -{ ShowLog(); +{ GuiShowLog(); } -void CreateMainWindow(int *argc, char ***argv) +void GuiCreateMainWindow(int *argc, char ***argv) { GtkWidget *window,*wid,*outer_box,*middle_box,*status_box,*sep; GtkWidget *box, *icon, *button; char title[80]; @@ -407,7 +418,7 @@ void CreateMainWindow(int *argc, char ***argv) /*** Create our icons */ - CreateIconFactory(); + GuiCreateIconFactory(); /*** Open the main window */ @@ -439,13 +450,13 @@ void CreateMainWindow(int *argc, char ***argv) /* Menu and tool bar */ - wid = CreateMenuBar(outer_box); + wid = GuiCreateMenuBar(outer_box); gtk_box_pack_start(GTK_BOX(outer_box), wid, FALSE, FALSE, 0); sep = gtk_hseparator_new(); gtk_box_pack_start(GTK_BOX(outer_box), sep, FALSE, FALSE, 0); - wid = CreateToolBar(outer_box); + wid = GuiCreateToolBar(outer_box); gtk_box_pack_start(GTK_BOX(outer_box), wid, FALSE, FALSE, 3); /* Middle part */ @@ -461,7 +472,7 @@ void CreateMainWindow(int *argc, char ***argv) gtk_notebook_set_show_border(GTK_NOTEBOOK(wid), FALSE); gtk_box_pack_start(GTK_BOX(middle_box), wid, TRUE, TRUE, 0); - CreateWelcomePage(GTK_NOTEBOOK(Closure->notebook)); + GuiCreateWelcomePage(GTK_NOTEBOOK(Closure->notebook)); wid = create_action_bar((GTK_NOTEBOOK(Closure->notebook))); gtk_box_pack_end(GTK_BOX(middle_box), wid, FALSE, FALSE, 3); @@ -479,7 +490,7 @@ void CreateMainWindow(int *argc, char ***argv) /* Status bar contents. */ - Closure->status = GTK_LABEL(gtk_label_new(NULL)); + Closure->status = gtk_label_new(NULL); gtk_label_set_ellipsize(GTK_LABEL(Closure->status), PANGO_ELLIPSIZE_END); gtk_misc_set_alignment(GTK_MISC(Closure->status), 0.0, 0.5); gtk_box_pack_start(GTK_BOX(status_box), GTK_WIDGET(Closure->status), TRUE, TRUE, 5); @@ -488,9 +499,9 @@ void CreateMainWindow(int *argc, char ***argv) gtk_button_set_relief(GTK_BUTTON(button), GTK_RELIEF_NONE); gtk_box_pack_end(GTK_BOX(status_box), button, FALSE, FALSE, 5); g_signal_connect(G_OBJECT(button), "clicked", G_CALLBACK(log_cb), NULL); - AttachTooltip(button, - _("tooltip|Protocol for current action"), - _("Displays additional information created during the current or last action.")); + GuiAttachTooltip(button, + _("tooltip|Protocol for current action"), + _("Displays additional information created during the current or last action.")); box = gtk_hbox_new(FALSE, 0); gtk_container_add(GTK_CONTAINER(button), box); @@ -507,3 +518,4 @@ void CreateMainWindow(int *argc, char ***argv) gtk_widget_show_all(window); gtk_main(); } +#endif /* WITH_GUI_YES */ diff --git a/src/maintenance.c b/src/maintenance.c index 07c9704..7efeff3 100644 --- a/src/maintenance.c +++ b/src/maintenance.c @@ -20,6 +20,8 @@ * along with dvdisaster. If not, see . */ +/*** src type: no GUI code ***/ + #include "dvdisaster.h" #if 0 diff --git a/src/medium-info.c b/src/medium-info.c index 83ba1cd..0c9f743 100644 --- a/src/medium-info.c +++ b/src/medium-info.c @@ -20,32 +20,33 @@ * along with dvdisaster. If not, see . */ +/*** src type: some GUI code ***/ + #include "dvdisaster.h" #include "scsi-layer.h" #include "udf.h" -#ifndef WITH_CLI_ONLY_YES /* * Local data */ typedef struct _medium_info -{ GtkLabel *profileDescr; - GtkLabel *physicalType; - GtkLabel *bookType; - GtkLabel *manufID; - GtkLabel *discStatus; - GtkLabel *usedCapacity1; - GtkLabel *usedCapacity2; - GtkLabel *blankCapacity; - GtkLabel *isoLabel; - GtkLabel *isoSize; - GtkLabel *isoTime; - GtkLabel *eccState; - GtkLabel *eccSize; - GtkLabel *eccVersion; - GtkLabel *exhaustiveSearch; +{ GtkWidget *profileDescr; + GtkWidget *physicalType; + GtkWidget *bookType; + GtkWidget *manufID; + GtkWidget *discStatus; + GtkWidget *usedCapacity1; + GtkWidget *usedCapacity2; + GtkWidget *blankCapacity; + GtkWidget *isoLabel; + GtkWidget *isoSize; + GtkWidget *isoTime; + GtkWidget *eccState; + GtkWidget *eccSize; + GtkWidget *eccVersion; + GtkWidget *exhaustiveSearch; GtkWidget *exhaustiveSearchButton; } medium_info; @@ -54,23 +55,22 @@ typedef struct _medium_info ***/ static void print_defaults(medium_info *mi) -{ SetLabelText(mi->physicalType, _("Please wait...")); - SetLabelText(mi->bookType, "-"); - SetLabelText(mi->manufID, "-"); - SetLabelText(mi->profileDescr, "-"); - SetLabelText(mi->discStatus, "-"); - SetLabelText(mi->usedCapacity1, "-"); - SetLabelText(mi->usedCapacity2, " "); - SetLabelText(mi->blankCapacity, "-"); - SetLabelText(mi->isoLabel, "-"); - SetLabelText(mi->isoSize, "-"); - SetLabelText(mi->isoTime, "-"); - SetLabelText(mi->eccState, "-"); - SetLabelText(mi->eccSize, "-"); - SetLabelText(mi->eccVersion, "-"); - SetLabelText(mi->exhaustiveSearch, "-"); +{ GuiSetLabelText(mi->physicalType, _("Please wait...")); + GuiSetLabelText(mi->bookType, "-"); + GuiSetLabelText(mi->manufID, "-"); + GuiSetLabelText(mi->profileDescr, "-"); + GuiSetLabelText(mi->discStatus, "-"); + GuiSetLabelText(mi->usedCapacity1, "-"); + GuiSetLabelText(mi->usedCapacity2, " "); + GuiSetLabelText(mi->blankCapacity, "-"); + GuiSetLabelText(mi->isoLabel, "-"); + GuiSetLabelText(mi->isoSize, "-"); + GuiSetLabelText(mi->isoTime, "-"); + GuiSetLabelText(mi->eccState, "-"); + GuiSetLabelText(mi->eccSize, "-"); + GuiSetLabelText(mi->eccVersion, "-"); + GuiSetLabelText(mi->exhaustiveSearch, "-"); } -#endif static void print_tab(char *label, int tab_width) { char *translation=_(label); @@ -89,34 +89,27 @@ static void print_tab(char *label, int tab_width) void PrintMediumInfo(void *mi_ptr) { Image *image; DeviceHandle *dh; -#ifndef WITH_CLI_ONLY_YES medium_info *mi=(medium_info*)mi_ptr; -#endif char *disc_status; char *sess_status; int tab_width=30; -#ifndef WITH_CLI_ONLY_YES if(!mi) /* create dummy medium_info in CLI mode so that PrintCLIorLabel() won't crash */ { mi=alloca(sizeof(medium_info)); memset(mi, 0, sizeof(medium_info)); } -#endif -#ifndef WITH_CLI_ONLY_YES if(Closure->guiMode) print_defaults(mi); +#ifdef WITH_GUI_YES /*** Ensure the UI is fully updated before our thread is stuck doing i/o */ while (gtk_events_pending()) gtk_main_iteration(); #endif image = OpenImageFromDevice(Closure->device, 2 /* allow blanks, see comment in OpenImageFromDevice() */); -#ifndef WITH_CLI_ONLY_YES /*** in case of !image, say that we didn't find any medium */ - if(Closure->guiMode) - SetLabelText(mi->physicalType, _("Medium not present")); -#endif + GuiSetLabelText(mi->physicalType, _("Medium not present")); if(!image) return; dh = image->dh; QueryBlankCapacity(dh); @@ -136,37 +129,13 @@ void PrintMediumInfo(void *mi_ptr) NULL)+1; print_tab("Medium type:",tab_width); - PrintCLIorLabel( -#ifndef WITH_CLI_ONLY_YES -mi->physicalType, -#else -NULL, -#endif - "%s\n", dh->typeDescr); + PrintCLIorLabel(mi->physicalType, "%s\n", dh->typeDescr); print_tab("Book type:",tab_width); - PrintCLIorLabel( -#ifndef WITH_CLI_ONLY_YES -mi->bookType, -#else -NULL, -#endif - "%s\n", dh->bookDescr); + PrintCLIorLabel(mi->bookType, "%s\n", dh->bookDescr); print_tab("Manuf.-ID:",tab_width); - PrintCLIorLabel( -#ifndef WITH_CLI_ONLY_YES -mi->manufID, -#else -NULL, -#endif - "%s\n", dh->manuID); + PrintCLIorLabel(mi->manufID, "%s\n", dh->manuID); print_tab("Drive profile:",tab_width); - PrintCLIorLabel( -#ifndef WITH_CLI_ONLY_YES -mi->profileDescr, -#else -NULL, -#endif - "%s\n", dh->profileDescr); + PrintCLIorLabel(mi->profileDescr, "%s\n", dh->profileDescr); switch(dh->discStatus&3) { case 0: disc_status = g_strdup(_("empty")); break; @@ -183,44 +152,20 @@ NULL, print_tab("Disc status:",tab_width); - PrintCLIorLabel( -#ifndef WITH_CLI_ONLY_YES -mi->discStatus, -#else -NULL, -#endif - _("%s (%d sessions; last session %s)\n"), + PrintCLIorLabel(mi->discStatus, _("%s (%d sessions; last session %s)\n"), disc_status, dh->sessions, sess_status); g_free(disc_status); g_free(sess_status); print_tab("Used sectors:",tab_width); - PrintCLIorLabel( -#ifndef WITH_CLI_ONLY_YES -mi->usedCapacity1, -#else -NULL, -#endif - _("%" PRId64 " sectors (%" PRId64 " MiB), from READ CAPACITY\n"), + PrintCLIorLabel(mi->usedCapacity1, _("%" PRId64 " sectors (%" PRId64 " MiB), from READ CAPACITY\n"), dh->readCapacity+1, (dh->readCapacity+1)>>9); print_tab(" ",tab_width); - PrintCLIorLabel( -#ifndef WITH_CLI_ONLY_YES -mi->usedCapacity2, -#else -NULL, -#endif - _("%" PRId64 " sectors (%" PRId64 " MiB), from DVD structure\n"), + PrintCLIorLabel(mi->usedCapacity2, _("%" PRId64 " sectors (%" PRId64 " MiB), from DVD structure\n"), dh->userAreaSize, dh->userAreaSize>>9); print_tab("Blank capacity:",tab_width); - PrintCLIorLabel( -#ifndef WITH_CLI_ONLY_YES -mi->blankCapacity, -#else -NULL, -#endif - _("%" PRId64 " sectors (%" PRId64 " MiB)\n"), + PrintCLIorLabel(mi->blankCapacity, _("%" PRId64 " sectors (%" PRId64 " MiB)\n"), dh->blankCapacity, (dh->blankCapacity)>>9); /* Filesystem properties */ @@ -236,30 +181,12 @@ NULL, PrintCLI("\n\n"); print_tab("Medium label:",tab_width); - PrintCLIorLabel( -#ifndef WITH_CLI_ONLY_YES -mi->isoLabel, -#else -NULL, -#endif - "%s\n", image->isoInfo->volumeLabel); + PrintCLIorLabel(mi->isoLabel, "%s\n", image->isoInfo->volumeLabel); print_tab("File system size:",tab_width); - PrintCLIorLabel( -#ifndef WITH_CLI_ONLY_YES -mi->isoSize, -#else -NULL, -#endif - _("%d sectors (%" PRId64 " MiB)\n"), + PrintCLIorLabel(mi->isoSize, _("%d sectors (%" PRId64 " MiB)\n"), image->isoInfo->volumeSize, (gint64)image->isoInfo->volumeSize>>9); print_tab("Creation time:",tab_width); - PrintCLIorLabel( -#ifndef WITH_CLI_ONLY_YES -mi->isoTime, -#else -NULL, -#endif - "%s\n", image->isoInfo->creationDate); + PrintCLIorLabel(mi->isoTime, "%s\n", image->isoInfo->creationDate); } /* Augmented image properties @@ -283,44 +210,28 @@ NULL, memcpy(method, eh->method, 4); method[4] = 0; print_tab("Error correction data:",tab_width); -#ifndef WITH_CLI_ONLY_YES PrintCLIorLabel(mi->eccState, _("%s, %d roots, %4.1f%% redundancy.\n"), -#else - PrintCLIorLabel(NULL, _("%s, %d roots, %4.1f%% redundancy.\n"), -#endif - method, eh->eccBytes, - ((double)eh->eccBytes*100.0)/(double)eh->dataBytes); + method, eh->eccBytes, + ((double)eh->eccBytes*100.0)/(double)eh->dataBytes); print_tab("Augmented image size:",tab_width); -#ifndef WITH_CLI_ONLY_YES PrintCLIorLabel(mi->eccSize, _("%" PRIu64 " sectors (%" PRId64 " MiB)\n"), -#else - PrintCLIorLabel(NULL, _("%" PRId64 " sectors (%" PRId64 " MiB)\n"), -#endif - image->expectedSectors, image->expectedSectors>>9); + image->expectedSectors, image->expectedSectors>>9); print_tab("dvdisaster version:", tab_width); if(micro) -#ifndef WITH_CLI_ONLY_YES PrintCLIorLabel(mi->eccVersion, "%d.%d.%d", major, minor, micro); -#else - PrintCLIorLabel(NULL, "%d.%d.%d", major, minor, micro); -#endif - else -#ifndef WITH_CLI_ONLY_YES - PrintCLIorLabel(mi->eccVersion, "%d.%d", major, minor); -#else - PrintCLIorLabel(NULL, "%d.%d", major, minor); -#endif + else PrintCLIorLabel(mi->eccVersion, "%d.%d", major, minor); } -#ifndef WITH_CLI_ONLY_YES +#ifdef WITH_GUI_YES if (Closure->examineRS02 && Closure->examineRS03) - { SetLabelText(mi->exhaustiveSearch, _("yes")); + { GuiSetLabelText(mi->exhaustiveSearch, _("yes")); /*** Hide exhaustive search button if exhaustive search is already enabled for RS02 / RS03 */ - gtk_widget_hide(mi->exhaustiveSearchButton); - } else - { SetLabelText(mi->exhaustiveSearch, _("no")); + gtk_widget_hide(mi->exhaustiveSearchButton); + } + else + { GuiSetLabelText(mi->exhaustiveSearch, _("no")); gtk_widget_show(mi->exhaustiveSearchButton); } #endif @@ -330,10 +241,11 @@ NULL, CloseImage(image); } +#ifdef WITH_GUI_YES + /*** *** GUI callbacks ***/ -#ifndef WITH_CLI_ONLY_YES /* * Callback for drive selection @@ -403,7 +315,7 @@ static void mi_destroy_cb(GtkWidget *widget, gpointer data) *** Create the medium info window ***/ -void CreateMediumInfoWindow() +void GuiCreateMediumInfoWindow() { GtkWidget *dialog,*vbox,*hbox,*table,*button,*lab,*sep,*frame,*combo_box; medium_info *mi; int i; @@ -496,7 +408,7 @@ void CreateMediumInfoWindow() gtk_misc_set_alignment(GTK_MISC(lab), 0.0, 0.0); gtk_table_attach(GTK_TABLE(table), lab, 0, 1, 0, 1, GTK_SHRINK | GTK_FILL, GTK_SHRINK, 5, 2 ); lab = gtk_label_new(" "); - mi->physicalType = GTK_LABEL(lab); + mi->physicalType = lab; gtk_misc_set_alignment(GTK_MISC(lab), 0.0, 0.0); gtk_table_attach(GTK_TABLE(table), lab, 1, 2, 0, 1, GTK_EXPAND | GTK_FILL, GTK_SHRINK, 0, 0); @@ -504,7 +416,7 @@ void CreateMediumInfoWindow() gtk_misc_set_alignment(GTK_MISC(lab), 0.0, 0.0); gtk_table_attach(GTK_TABLE(table), lab, 0, 1, 1, 2, GTK_SHRINK | GTK_FILL, GTK_SHRINK, 5, 2 ); lab = gtk_label_new(" "); - mi->bookType = GTK_LABEL(lab); + mi->bookType = lab; gtk_misc_set_alignment(GTK_MISC(lab), 0.0, 0.0); gtk_table_attach(GTK_TABLE(table), lab, 1, 2, 1, 2, GTK_EXPAND | GTK_FILL, GTK_SHRINK, 0, 0); @@ -512,7 +424,7 @@ void CreateMediumInfoWindow() gtk_misc_set_alignment(GTK_MISC(lab), 0.0, 0.0); gtk_table_attach(GTK_TABLE(table), lab, 0, 1, 2, 3, GTK_SHRINK | GTK_FILL, GTK_SHRINK, 5, 2 ); lab = gtk_label_new(" "); - mi->manufID = GTK_LABEL(lab); + mi->manufID = lab; gtk_misc_set_alignment(GTK_MISC(lab), 0.0, 0.0); gtk_table_attach(GTK_TABLE(table), lab, 1, 2, 2, 3, GTK_EXPAND | GTK_FILL, GTK_SHRINK, 0, 0); @@ -520,7 +432,7 @@ void CreateMediumInfoWindow() gtk_misc_set_alignment(GTK_MISC(lab), 0.0, 0.0); gtk_table_attach(GTK_TABLE(table), lab, 0, 1, 3, 4, GTK_SHRINK | GTK_FILL, GTK_SHRINK, 5, 2 ); lab = gtk_label_new(" "); - mi->profileDescr = GTK_LABEL(lab); + mi->profileDescr = lab; gtk_misc_set_alignment(GTK_MISC(lab), 0.0, 0.0); gtk_table_attach(GTK_TABLE(table), lab, 1, 2, 3, 4, GTK_EXPAND | GTK_FILL, GTK_SHRINK, 0, 0); @@ -528,7 +440,7 @@ void CreateMediumInfoWindow() gtk_misc_set_alignment(GTK_MISC(lab), 0.0, 0.0); gtk_table_attach(GTK_TABLE(table), lab, 0, 1, 4, 5, GTK_SHRINK | GTK_FILL, GTK_SHRINK, 5, 2 ); lab = gtk_label_new(" "); - mi->discStatus = GTK_LABEL(lab); + mi->discStatus = lab; gtk_misc_set_alignment(GTK_MISC(lab), 0.0, 0.0); gtk_table_attach(GTK_TABLE(table), lab, 1, 2, 4, 5, GTK_EXPAND | GTK_FILL, GTK_SHRINK, 0, 0); @@ -536,7 +448,7 @@ void CreateMediumInfoWindow() gtk_misc_set_alignment(GTK_MISC(lab), 0.0, 0.0); gtk_table_attach(GTK_TABLE(table), lab, 0, 1, 5, 6, GTK_SHRINK | GTK_FILL, GTK_SHRINK, 5, 2 ); lab = gtk_label_new(" "); - mi->usedCapacity1 = GTK_LABEL(lab); + mi->usedCapacity1 = lab; gtk_misc_set_alignment(GTK_MISC(lab), 0.0, 0.0); gtk_table_attach(GTK_TABLE(table), lab, 1, 2, 5, 6, GTK_EXPAND | GTK_FILL, GTK_SHRINK, 0, 0); @@ -544,7 +456,7 @@ void CreateMediumInfoWindow() gtk_misc_set_alignment(GTK_MISC(lab), 0.0, 0.0); gtk_table_attach(GTK_TABLE(table), lab, 0, 1, 6, 7, GTK_SHRINK | GTK_FILL, GTK_SHRINK, 5, 2 ); lab = gtk_label_new(" "); - mi->usedCapacity2 = GTK_LABEL(lab); + mi->usedCapacity2 = lab; gtk_misc_set_alignment(GTK_MISC(lab), 0.0, 0.0); gtk_table_attach(GTK_TABLE(table), lab, 1, 2, 6, 7, GTK_EXPAND | GTK_FILL, GTK_SHRINK, 0, 0); @@ -552,7 +464,7 @@ void CreateMediumInfoWindow() gtk_misc_set_alignment(GTK_MISC(lab), 0.0, 0.0); gtk_table_attach(GTK_TABLE(table), lab, 0, 1, 7, 8, GTK_SHRINK | GTK_FILL, GTK_SHRINK, 5, 2 ); lab = gtk_label_new(" "); - mi->blankCapacity = GTK_LABEL(lab); + mi->blankCapacity = lab; gtk_misc_set_alignment(GTK_MISC(lab), 0.0, 0.0); gtk_table_attach(GTK_TABLE(table), lab, 1, 2, 7, 8, GTK_EXPAND | GTK_FILL, GTK_SHRINK, 0, 0); @@ -569,7 +481,7 @@ void CreateMediumInfoWindow() gtk_misc_set_alignment(GTK_MISC(lab), 0.0, 0.0); gtk_table_attach(GTK_TABLE(table), lab, 0, 1, 0, 1, GTK_SHRINK | GTK_FILL, GTK_SHRINK, 5, 2 ); lab = gtk_label_new(" "); - mi->isoLabel = GTK_LABEL(lab); + mi->isoLabel = lab; gtk_misc_set_alignment(GTK_MISC(lab), 0.0, 0.0); gtk_table_attach(GTK_TABLE(table), lab, 1, 2, 0, 1, GTK_EXPAND | GTK_FILL, GTK_SHRINK, 0, 0); @@ -577,7 +489,7 @@ void CreateMediumInfoWindow() gtk_misc_set_alignment(GTK_MISC(lab), 0.0, 0.0); gtk_table_attach(GTK_TABLE(table), lab, 0, 1, 1, 2, GTK_SHRINK | GTK_FILL, GTK_SHRINK, 5, 2 ); lab = gtk_label_new(" "); - mi->isoSize = GTK_LABEL(lab); + mi->isoSize = lab; gtk_misc_set_alignment(GTK_MISC(lab), 0.0, 0.0); gtk_table_attach(GTK_TABLE(table), lab, 1, 2, 1, 2, GTK_EXPAND | GTK_FILL, GTK_SHRINK, 0, 0); @@ -585,7 +497,7 @@ void CreateMediumInfoWindow() gtk_misc_set_alignment(GTK_MISC(lab), 0.0, 0.0); gtk_table_attach(GTK_TABLE(table), lab, 0, 1, 2, 3, GTK_SHRINK | GTK_FILL, GTK_SHRINK, 5, 2 ); lab = gtk_label_new(" "); - mi->isoTime = GTK_LABEL(lab); + mi->isoTime = lab; gtk_misc_set_alignment(GTK_MISC(lab), 0.0, 0.0); gtk_table_attach(GTK_TABLE(table), lab, 1, 2, 2, 3, GTK_EXPAND | GTK_FILL, GTK_SHRINK, 0, 0); @@ -602,7 +514,7 @@ void CreateMediumInfoWindow() gtk_misc_set_alignment(GTK_MISC(lab), 0.0, 0.0); gtk_table_attach(GTK_TABLE(table), lab, 0, 1, 0, 1, GTK_SHRINK | GTK_FILL, GTK_SHRINK, 5, 2 ); lab = gtk_label_new(" "); - mi->eccState = GTK_LABEL(lab); + mi->eccState = lab; gtk_misc_set_alignment(GTK_MISC(lab), 0.0, 0.0); gtk_table_attach(GTK_TABLE(table), lab, 1, 3, 0, 1, GTK_EXPAND | GTK_FILL, GTK_SHRINK, 0, 0); @@ -610,7 +522,7 @@ void CreateMediumInfoWindow() gtk_misc_set_alignment(GTK_MISC(lab), 0.0, 0.0); gtk_table_attach(GTK_TABLE(table), lab, 0, 1, 1, 2, GTK_SHRINK | GTK_FILL, GTK_SHRINK, 5, 2 ); lab = gtk_label_new(" "); - mi->eccSize = GTK_LABEL(lab); + mi->eccSize = lab; gtk_misc_set_alignment(GTK_MISC(lab), 0.0, 0.0); gtk_table_attach(GTK_TABLE(table), lab, 1, 3, 1, 2, GTK_EXPAND | GTK_FILL, GTK_SHRINK, 0, 0); @@ -618,7 +530,7 @@ void CreateMediumInfoWindow() gtk_misc_set_alignment(GTK_MISC(lab), 0.0, 0.0); gtk_table_attach(GTK_TABLE(table), lab, 0, 1, 2, 3, GTK_SHRINK | GTK_FILL, GTK_SHRINK, 5, 2 ); lab = gtk_label_new(" "); - mi->eccVersion = GTK_LABEL(lab); + mi->eccVersion = lab; gtk_misc_set_alignment(GTK_MISC(lab), 0.0, 0.0); gtk_table_attach(GTK_TABLE(table), lab, 1, 3, 2, 3, GTK_EXPAND | GTK_FILL, GTK_SHRINK, 0, 0); @@ -626,7 +538,7 @@ void CreateMediumInfoWindow() gtk_misc_set_alignment(GTK_MISC(lab), 0.0, 0.0); gtk_table_attach(GTK_TABLE(table), lab, 0, 1, 3, 4, GTK_SHRINK | GTK_FILL, GTK_SHRINK, 5, 2 ); lab = gtk_label_new(" "); - mi->exhaustiveSearch = GTK_LABEL(lab); + mi->exhaustiveSearch = lab; gtk_misc_set_alignment(GTK_MISC(lab), 0.0, 0.0); gtk_table_attach(GTK_TABLE(table), lab, 1, 2, 3, 4, GTK_EXPAND | GTK_FILL, GTK_SHRINK, 0, 0); mi->exhaustiveSearchButton = gtk_button_new_with_label(_utf("Run exhaustive search")); diff --git a/src/memtrack.c b/src/memtrack.c index cd85957..977c57a 100644 --- a/src/memtrack.c +++ b/src/memtrack.c @@ -20,6 +20,8 @@ * along with dvdisaster. If not, see . */ +/*** src type: no GUI code ***/ + #ifdef WITH_MEMDEBUG_YES #define _GNU_SOURCE diff --git a/src/menubar.c b/src/menubar.c index 3a87f22..9a66847 100644 --- a/src/menubar.c +++ b/src/menubar.c @@ -19,8 +19,10 @@ * You should have received a copy of the GNU General Public License * along with dvdisaster. If not, see . */ -// DVDISASTER_GUI_FILE +/*** src type: only GUI code ***/ + +#ifdef WITH_GUI_YES #include "dvdisaster.h" #include @@ -104,48 +106,48 @@ static void menu_cb(GtkWidget *widget, gpointer data) break; case MENU_TOOLS_MEDIUM_INFO: - CreateMediumInfoWindow(); + GuiCreateMediumInfoWindow(); break; case MENU_TOOLS_RAW_EDITOR: - CreateRawEditor(); + GuiCreateRawEditor(); break; case MENU_PREFERENCES: - CreatePreferencesWindow(); + GuiCreatePreferencesWindow(); break; case MENU_HELP_MANUAL: - ShowURL(NULL); + GuiShowURL(NULL); break; case MENU_HELP_ABOUT: - AboutDialog(); + GuiAboutDialog(); break; case MENU_HELP_GPL: - ShowGPL(); + GuiShowGPL(); break; case MENU_HELP_CHANGELOG: - ShowTextfile(_("windowtitle|Change log"), - _("Change log\n" - "Major differences from earlier program versions."), - "CHANGELOG", NULL, NULL); + GuiShowTextfile(_("windowtitle|Change log"), + _("Change log\n" + "Major differences from earlier program versions."), + "CHANGELOG", NULL, NULL); break; case MENU_HELP_CREDITS: - ShowTextfile(_("windowtitle|Credits"), - _("Credits\n" - "Thanks go out to..."), - "CREDITS", NULL, NULL); + GuiShowTextfile(_("windowtitle|Credits"), + _("Credits\n" + "Thanks go out to..."), + "CREDITS", NULL, NULL); break; case MENU_HELP_TODO: - ShowTextfile(_("windowtitle|To do list"), - _("To do list\n" - "A sneak preview of coming features ... perhaps ;-)"), - "TODO", NULL, NULL); + GuiShowTextfile(_("windowtitle|To do list"), + _("To do list\n" + "A sneak preview of coming features ... perhaps ;-)"), + "TODO", NULL, NULL); break; default: @@ -198,7 +200,7 @@ static void append_sub_menu(GtkWidget *parent, GtkWidget *strip, char *name) * Using the itemfactory would make things more complicated wrt localization. */ -GtkWidget *CreateMenuBar(GtkWidget *parent) +GtkWidget *GuiCreateMenuBar(GtkWidget *parent) { GtkWidget *menu_bar, *menu_anchor, *menu_strip, *item; /* The overall menu bar */ @@ -269,10 +271,10 @@ static gint tooltip_cb(GtkWidget *widget, GdkEvent *event, gpointer data) { switch(event->type) { case GDK_ENTER_NOTIFY: - gtk_label_set_text(Closure->status, (gchar*)data); + gtk_label_set_text(GTK_LABEL(Closure->status), (gchar*)data); break; case GDK_LEAVE_NOTIFY: - gtk_label_set_text(Closure->status, ""); + gtk_label_set_text(GTK_LABEL(Closure->status), ""); break; default: @@ -282,7 +284,7 @@ static gint tooltip_cb(GtkWidget *widget, GdkEvent *event, gpointer data) return FALSE; /* don't intercept the default button callbacks! */ } -void AttachTooltip(GtkWidget *widget, char *short_descr, char *long_descr) +void GuiAttachTooltip(GtkWidget *widget, char *short_descr, char *long_descr) { char *long_copy = g_locale_to_utf8(long_descr, -1, NULL, NULL, NULL); char *short_copy = g_locale_to_utf8(short_descr, -1, NULL, NULL, NULL); @@ -334,7 +336,7 @@ static void file_select_cb(GtkWidget *widget, gpointer data) case MENU_FILE_IMAGE: if(!Closure->imageFileSel) { Closure->imageFileSel = gtk_file_selection_new(_utf("windowtitle|Image file selection")); - ReverseCancelOK(GTK_DIALOG(Closure->imageFileSel)); + GuiReverseCancelOK(GTK_DIALOG(Closure->imageFileSel)); g_signal_connect(G_OBJECT(Closure->imageFileSel), "destroy", G_CALLBACK(file_select_cb), GINT_TO_POINTER(MENU_FILE_IMAGE_DESTROY)); g_signal_connect(G_OBJECT(GTK_FILE_SELECTION(Closure->imageFileSel)->ok_button),"clicked", @@ -371,7 +373,7 @@ static void file_select_cb(GtkWidget *widget, gpointer data) case MENU_FILE_ECC: if(!Closure->eccFileSel) { Closure->eccFileSel = gtk_file_selection_new(_utf("windowtitle|Error correction file selection")); - ReverseCancelOK(GTK_DIALOG(Closure->eccFileSel)); + GuiReverseCancelOK(GTK_DIALOG(Closure->eccFileSel)); g_signal_connect(G_OBJECT(Closure->eccFileSel), "destroy", G_CALLBACK(file_select_cb), GINT_TO_POINTER(MENU_FILE_ECC_DESTROY)); g_signal_connect(G_OBJECT(GTK_FILE_SELECTION(Closure->eccFileSel)->ok_button),"clicked", @@ -419,7 +421,7 @@ void set_path(GtkWidget *entry, char *path) else { char buf[PATH_MAX + strlen(path) + 2]; - if (!getcwd(buf, PATH_MAX)) return; + if(!getcwd(buf, PATH_MAX)) return; strcat(buf,"/"); strcat(buf,path); @@ -454,7 +456,7 @@ static void suffix_cb(GtkWidget *widget, gpointer data) * Create the toolbar */ -GtkWidget *CreateToolBar(GtkWidget *parent) +GtkWidget *GuiCreateToolBar(GtkWidget *parent) { GtkWidget *box, *button, *ebox, *icon, *prefs, *help, *quit, *sep, *space; GtkWidget *combo_box; int dev_idx = 0; @@ -472,7 +474,8 @@ GtkWidget *CreateToolBar(GtkWidget *parent) ebox = gtk_event_box_new(); gtk_widget_set_events(ebox, GDK_ENTER_NOTIFY_MASK | GDK_LEAVE_NOTIFY_MASK); gtk_box_pack_start(GTK_BOX(box), ebox, FALSE, FALSE, 0); - AttachTooltip(ebox, _("tooltip|Drive selection"), _("Use the nearby drop-down list to select the input drive.")); + GuiAttachTooltip(ebox, _("tooltip|Drive selection"), + _("Use the nearby drop-down list to select the input drive.")); icon = gtk_image_new_from_stock("dvdisaster-cd", GTK_ICON_SIZE_LARGE_TOOLBAR); gtk_container_add(GTK_CONTAINER(ebox), icon); @@ -496,7 +499,8 @@ GtkWidget *CreateToolBar(GtkWidget *parent) gtk_combo_box_set_active(GTK_COMBO_BOX(combo_box), dev_idx); gtk_widget_set_size_request(combo_box, 200, -1); gtk_box_pack_start(GTK_BOX(box), combo_box, FALSE, FALSE, 7); - AttachTooltip(combo_box, _("tooltip|Drive selection"), _("Selects the input drive for reading images.")); + GuiAttachTooltip(combo_box, _("tooltip|Drive selection"), + _("Selects the input drive for reading images.")); space = gtk_label_new(NULL); gtk_box_pack_start(GTK_BOX(box), space, FALSE, FALSE, 1); @@ -526,8 +530,11 @@ GtkWidget *CreateToolBar(GtkWidget *parent) sep = gtk_vseparator_new(); gtk_box_pack_start(GTK_BOX(box), sep, FALSE, FALSE, 3); - AttachTooltip(button, _("tooltip|Image file selection"), _("Selects a new image file.")); - AttachTooltip(Closure->imageEntry, _("tooltip|Current image file"), _("Shows the name of the current image file.")); + GuiAttachTooltip(button, _("tooltip|Image file selection"), + _("Selects a new image file.")); + GuiAttachTooltip(Closure->imageEntry, + _("tooltip|Current image file"), + _("Shows the name of the current image file.")); /*** Ecc file selection */ @@ -551,9 +558,12 @@ GtkWidget *CreateToolBar(GtkWidget *parent) sep = gtk_vseparator_new(); gtk_box_pack_start(GTK_BOX(box), sep, FALSE, FALSE, 3); - AttachTooltip(button, _("tooltip|Error correction file selection"), _("Selects a new error correction file.")); - AttachTooltip(Closure->eccEntry, _("tooltip|Current error correction file"), _("Shows the name of the current error correction file.")); - + GuiAttachTooltip(button, + _("tooltip|Error correction file selection"), + _("Selects a new error correction file.")); + GuiAttachTooltip(Closure->eccEntry, + _("tooltip|Current error correction file"), + _("Shows the name of the current error correction file.")); /*** Preferences button */ @@ -563,7 +573,9 @@ GtkWidget *CreateToolBar(GtkWidget *parent) gtk_container_add(GTK_CONTAINER(prefs), icon); g_signal_connect(G_OBJECT(prefs), "clicked", G_CALLBACK(menu_cb), (gpointer)MENU_PREFERENCES); gtk_box_pack_start(GTK_BOX(box), prefs, FALSE, FALSE, 0); - AttachTooltip(prefs, _("tooltip|Preferences"), _("Customize settings for creating images, error correction files and other stuff.")); + GuiAttachTooltip(prefs, + _("tooltip|Preferences"), + _("Customize settings for creating images, error correction files and other stuff.")); /*** Help button */ @@ -573,7 +585,8 @@ GtkWidget *CreateToolBar(GtkWidget *parent) gtk_container_add(GTK_CONTAINER(help), icon); g_signal_connect(G_OBJECT(help), "clicked", G_CALLBACK(menu_cb), (gpointer)MENU_HELP_MANUAL); gtk_box_pack_start(GTK_BOX(box), help, FALSE, FALSE, 0); - AttachTooltip(help, _("tooltip|User manual"), _("Displays the user manual (external PDF viewer required).")); + GuiAttachTooltip(help, _("tooltip|User manual"), + _("Displays the user manual (external PDF viewer required).")); /*** Quit button */ @@ -583,7 +596,8 @@ GtkWidget *CreateToolBar(GtkWidget *parent) gtk_container_add(GTK_CONTAINER(quit), icon); g_signal_connect(G_OBJECT(quit), "clicked", G_CALLBACK(menu_cb), (gpointer)MENU_FILE_QUIT); gtk_box_pack_start(GTK_BOX(box), quit, FALSE, FALSE, 0); - AttachTooltip(quit, _("tooltip|Quit"), _("Quit dvdisaster")); + GuiAttachTooltip(quit, _("tooltip|Quit"), _("Quit dvdisaster")); return box; } +#endif /* WITH_GUI_YES */ diff --git a/src/method.c b/src/method.c index 2771dcd..dce4a0f 100644 --- a/src/method.c +++ b/src/method.c @@ -20,6 +20,8 @@ * along with dvdisaster. If not, see . */ +/*** src type: no GUI code ***/ + #include "dvdisaster.h" /*** diff --git a/src/misc-gui.c b/src/misc-gui.c new file mode 100644 index 0000000..3945f96 --- /dev/null +++ b/src/misc-gui.c @@ -0,0 +1,667 @@ +/* dvdisaster: Additional error correction for optical media. + * Copyright (C) 2004-2017 Carsten Gnoerlich. + * Copyright (C) 2019-2021 The dvdisaster development team. + * + * Email: support@dvdisaster.org + * + * This file is part of dvdisaster. + * + * dvdisaster is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * dvdisaster is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with dvdisaster. If not, see . + */ + +/*** src type: some GUI code ***/ + +#include "dvdisaster.h" + +/*** + *** GUI functions which are cli-only safe for convenience. + ***/ + +/* + * Label convenience functions. + * Sets the label text from another thread. + */ + +#ifdef WITH_GUI_YES +typedef struct +{ GtkLabel *label; + char *text; +} label_info; + +static gboolean label_idle_func(gpointer data) +{ label_info *li = (label_info*)data; + + gtk_label_set_markup(li->label, li->text); + + g_free(li->text); + g_free(li); + + return FALSE; +} + +void GuiSetLabelText(GtkWidget *widget, char *format, ...) +{ label_info *li; + va_list argp; + + if(!Closure->guiMode) + return; + + li = g_malloc(sizeof(label_info)); + li->label = GTK_LABEL(widget); + + va_start(argp, format); + if(format) + { char *tmp = g_strdup_vprintf(format, argp); + + if(!tmp) tmp=g_strdup_printf("GuiSetLabelText(%s) failed",format); + li->text = g_locale_to_utf8(tmp, -1, NULL, NULL, NULL); + g_free(tmp); + } + else li->text = g_locale_to_utf8("(null)", -1, NULL, NULL, NULL); + va_end(argp); + g_idle_add(label_idle_func, li); +} +#endif + +/* + * Progress bar convenience function. + * Percentage is given as a multiple of 0.1 percent. + */ + +#ifdef WITH_GUI_YES + +typedef struct +{ GtkWidget *pbar; + int percent; + int max; +} progress_info; + +static gboolean progress_idle_func(gpointer data) +{ progress_info *pi = (progress_info*)data; + gdouble val = (gdouble)pi->percent / (gdouble)pi->max; + char text[20]; + + switch(pi->max) + { case 100: g_sprintf(text, "%3d%%",pi->percent); break; + case 1000: g_sprintf(text, "%3d.%1d%%",pi->percent/10,pi->percent%10); break; + } + + gtk_progress_bar_set_fraction(GTK_PROGRESS_BAR(pi->pbar), val); + gtk_progress_bar_set_text(GTK_PROGRESS_BAR(pi->pbar), text); + + g_free(pi); + + return FALSE; +} + +void GuiSetProgress(GtkWidget *pbar, int percent, int max) +{ progress_info *pi; + + if(!Closure->guiMode) return; + + pi = g_malloc(sizeof(progress_info)); + + pi->pbar = pbar; + pi->percent = percent; + pi->max = max; + + g_idle_add(progress_idle_func, pi); +} +#endif + +/* + * Switch a notebook to another page and set the text in a label. + * Used in some footlines in the GUI. + * Does nothing in CLI mode to save us from lots of #ifdef WITH_GUI + */ + +#ifdef WITH_GUI_YES +typedef struct +{ GtkWidget *notebook; + int newPage; + GtkWidget *label; + char *newText; +} footline_info; + +static gboolean footline_idle_func(gpointer data) +{ footline_info *fi = (footline_info*)data; + + if(fi->label) + gtk_label_set_markup(GTK_LABEL(fi->label), fi->newText); + gtk_notebook_set_current_page(GTK_NOTEBOOK(fi->notebook), fi->newPage); + + if(fi->newText) + g_free(fi->newText); + g_free(fi); + + return FALSE; +} + +void GuiSwitchAndSetFootline(GtkWidget *notebook, int page, GtkWidget *label, char *format, ...) +{ va_list argp; + char *tmp; + footline_info *fi; + int len; + + if(!Closure->guiMode) return; + + fi = g_malloc0(sizeof(footline_info)); + fi->notebook = notebook; + fi->newPage = page; + fi->label = label; + + if(label) + { va_start(argp, format); + tmp = g_strdup_vprintf(format, argp); + len = strlen(tmp); + if(tmp[len-1] == '\n') tmp[len-1]=0; + fi->newText = g_locale_to_utf8(tmp, -1, NULL, NULL, NULL); + g_free(tmp); + va_end(argp); + } + + g_idle_add(footline_idle_func, fi); +} + +/* + * CLI mode and GUI mode behave differently wrt. to the worker thread. + * In CLI mode, the worker thread is the main thread and must not be terminated + * when the worker task is finished. However in GUI mode the worker is a separate + * thread which must exit after the assigned work is done. + */ + +void GuiExitWorkerThread() +{ + if(Closure->guiMode) + g_thread_exit(0); +} + +#endif + +/* + * A wrapper around GuiModalDialog() to create a logged warning. + * Note that in CLI mode the answer is always "yes", + * so warnings will be printed but never abort CLI mode. + */ + +#ifdef WITH_GUI_YES +static int vmodal_dialog(GtkMessageType, GtkButtonsType, + void(*)(GtkDialog*), char*, va_list); +#endif + +int ModalWarning(GtkMessageType mt, GtkButtonsType bt, + void(*button_fn)(GtkDialog*), char *msg, ...) +{ va_list argp; + int result = 1; + + va_start(argp, msg); + vLogWarning(msg, argp); + va_end(argp); + +#ifdef WITH_GUI_YES + if(Closure->guiMode) + { va_start(argp, msg); + result = vmodal_dialog(mt, bt, button_fn, msg, argp); + va_end(argp); + } +#endif + + return result; +} + +/* + * Safety requesters before deleting something. + */ + +#ifdef WITH_GUI_YES +static void insert_button(GtkDialog*); + +int GuiConfirmEccDeletion(char *file) +{ int answer; + + if(!Closure->guiMode) /* Always delete it in command line mode */ + return TRUE; + + if(!Closure->confirmDeletion) /* I told you so... */ + return TRUE; + + answer = GuiModalDialog(GTK_MESSAGE_QUESTION, GTK_BUTTONS_OK_CANCEL, + insert_button, + _("The error correction file is already present:\n\n" + "%s\n\n" + "Overwrite it?"), + file); + + return answer == GTK_RESPONSE_OK; +} +#endif + +/*** remaining GUI functions */ + +#ifdef WITH_GUI_YES +/* + * Spawning of idle functions. + * Idle functions are required to perform actions (like opening + * a dialogue) from a sub thread. + * However idle functions must not be spawned from the main thread + * as it would block infinitely; in that case we must run the idle + * function directly. + */ + +static void call_idle_func(gboolean (*idle_func)(gpointer), gpointer data) +{ + if(Closure->mainThread == g_thread_self()) + { idle_func(data); + } + else + { g_idle_add(idle_func, data); + } +} + +/*** + *** Graphical user interface convenience + ***/ + +/* + * Show the given widget + */ + +static gboolean show_idle_func(gpointer data) +{ + gtk_widget_show(GTK_WIDGET(data)); + + return FALSE; +} + +void GuiShowWidget(GtkWidget *widget) +{ + if(Closure->guiMode) + g_idle_add(show_idle_func, (gpointer)widget); +} + +/* + * Activation / Deactivation of the action buttons + */ + +static gboolean allow_actions_idle_func(gpointer data) +{ gboolean s = (data != NULL); + + /* Disable/Enable parts of the menu */ + + gtk_widget_set_sensitive(Closure->fileMenuImage, s); + gtk_widget_set_sensitive(Closure->fileMenuEcc, s); + gtk_widget_set_sensitive(Closure->toolMenuAnchor, s); + + /* Disable/Enable toolbar and sidebar buttons */ + + if(Closure->deviceNodes->len) + { gtk_widget_set_sensitive(Closure->readButton, s); + gtk_widget_set_sensitive(Closure->scanButton, s); + } + gtk_widget_set_sensitive(Closure->createButton, s); + gtk_widget_set_sensitive(Closure->fixButton, s); + gtk_widget_set_sensitive(Closure->testButton, s); + + gtk_widget_set_sensitive(Closure->prefsButton, s); + if(!s && Closure->prefsWindow) + { GuiHidePreferences(); + } + + Closure->stopActions = FALSE; + + return FALSE; +} + +void GuiAllowActions(gboolean s) +{ + g_idle_add(allow_actions_idle_func, GINT_TO_POINTER(s)); +} + +/* + * Dispatch a non-modal message dialog + */ + +typedef struct +{ char *msg; + GtkMessageType type; + GtkWindow *window; +} message_info; + +static gboolean message_idle_func(gpointer data) +{ message_info *mi = (message_info*)data; + GtkWidget *dialog; + + dialog = gtk_message_dialog_new_with_markup(mi->window, + GTK_DIALOG_DESTROY_WITH_PARENT, + mi->type, + GTK_BUTTONS_CLOSE, + mi->msg, NULL); + + gtk_label_set_line_wrap(GTK_LABEL(((struct _GtkMessageDialog*)dialog)->label), FALSE); + g_signal_connect_swapped(dialog, "response", G_CALLBACK(gtk_widget_destroy), dialog); + gtk_widget_show(dialog); + + g_free(mi->msg); + g_free(mi); + + return FALSE; +} + +void GuiShowMessage(GtkWindow *parent, char *msg, GtkMessageType type) +{ message_info *mi; + + if(!Closure->guiMode) return; + + mi = g_malloc(sizeof(message_info)); + mi->msg = g_strdup(msg); + mi->type = type; + mi->window = parent; + + if(Closure->mainThread == g_thread_self()) + message_idle_func(mi); + else g_idle_add(message_idle_func, mi); +} + +/* + * Creates a message from the main thread + */ + +GtkWidget* GuiCreateMessage(char *format, GtkMessageType type, ...) +{ GtkWidget *dialog; + va_list argp; + char *text,*utf8; + + if(!Closure->guiMode) + return NULL; + + va_start(argp, type); + text = g_strdup_vprintf(format, argp); + va_end(argp); + utf8 = g_locale_to_utf8(text, -1, NULL, NULL, NULL); + + dialog = gtk_message_dialog_new(Closure->window, + GTK_DIALOG_DESTROY_WITH_PARENT, + type, + GTK_BUTTONS_CLOSE, + utf8, NULL); + + gtk_label_set_line_wrap(GTK_LABEL(((struct _GtkMessageDialog*)dialog)->label), FALSE); + g_signal_connect_swapped(dialog, "response", G_CALLBACK(gtk_widget_destroy), dialog); + gtk_widget_show(dialog); + g_free(text); + g_free(utf8); + + return dialog; +} + +/* + * Perform a modal dialog. + * Note that the thread running the dialog is different + * from the one blocking/waiting for the response! + */ + +typedef struct +{ GMutex *mutex; + GCond *cond; + char *msg; + int ret; + GtkMessageType message_type; + GtkButtonsType button_type; + void (*button_fn)(GtkDialog*); +} modal_info; + +static gboolean modal_idle_func(gpointer data) +{ modal_info *mi = (modal_info*)data; + GtkWidget *dialog; + int response; + + dialog = gtk_message_dialog_new(Closure->window, + GTK_DIALOG_DESTROY_WITH_PARENT, + mi->message_type, + mi->button_type, + "%s", mi->msg); + gtk_label_set_line_wrap(GTK_LABEL(((struct _GtkMessageDialog*)dialog)->label), FALSE); + + if(mi->button_fn) + mi->button_fn(GTK_DIALOG(dialog)); + else GuiReverseCancelOK(GTK_DIALOG(dialog)); + + response = gtk_dialog_run(GTK_DIALOG(dialog)); + + g_mutex_lock(mi->mutex); + if(mi->button_fn) + mi->ret = response; + else switch(response) + { case GTK_RESPONSE_OK: + mi->ret = 1; + break; + + default: + mi->ret = 0; + break; + } + + g_cond_signal(mi->cond); + g_mutex_unlock(mi->mutex); + + gtk_widget_destroy(dialog); + + return FALSE; +} + +static int vmodal_dialog(GtkMessageType mt, GtkButtonsType bt, + void(*button_fn)(GtkDialog*), char *msg, va_list argp) +{ modal_info *mi = g_malloc(sizeof(modal_info)); + char *tmp; + int idx,ret; + + mi->message_type = mt; + mi->button_type = bt; + mi->button_fn = button_fn; + mi->mutex = g_malloc(sizeof(GMutex)); g_mutex_init(mi->mutex); + mi->cond = g_malloc(sizeof(GCond)); g_cond_init(mi->cond); + + tmp = g_strdup_vprintf(msg, argp); + idx = strlen(tmp); /* Remove trailing newline */ + if(tmp[idx-1] == '\n') + tmp[idx-1] = 0; + mi->msg = g_locale_to_utf8(tmp, -1, NULL, NULL, NULL); + g_free(tmp); + + mi->ret = -1; + + call_idle_func(modal_idle_func, mi); + + g_mutex_lock(mi->mutex); + while(mi->ret == -1) + g_cond_wait(mi->cond, mi->mutex); + + ret = mi->ret; + g_mutex_unlock(mi->mutex); + g_free(mi->msg); + g_mutex_clear(mi->mutex); + g_free(mi->mutex); + g_cond_clear(mi->cond); + g_free(mi->cond); + g_free(mi); + + return ret; +} + +int GuiModalDialog(GtkMessageType mt, GtkButtonsType bt, + void(*button_fn)(GtkDialog*), char *msg, ...) +{ va_list argp; + int result; + + if(!Closure->guiMode) + Stop("GuiModalDialog() called with Closure->guiMode == False"); + + va_start(argp, msg); + result = vmodal_dialog(mt, bt, button_fn, msg, argp); + va_end(argp); + + return result; +} + +/* + * Set the text in the pango layout and retrieve its extents. + */ + +void GuiSetText(PangoLayout *layout, char *text, int *w, int *h) +{ PangoRectangle rect; + char *t; + + if(!Closure->guiMode) + return; + + t = g_locale_to_utf8(text, -1, NULL, NULL, NULL); + + pango_layout_set_text(layout, t, -1); + pango_layout_get_pixel_extents(layout, NULL, &rect); + + g_free(t); + + *w = rect.width; + *h = rect.height; +} + +/* + * Rearrange buttons to OK Cancel order + * in file dialogs + * + * gtk_dialog_set_alternative_button_order() + * has been introduced since gtk+2.6, + * but does not seem to work correctly. + */ + +void GuiReverseCancelOK(GtkDialog *dialog) +{ GtkWidget *box, *button ; + + if(!Closure->guiMode || !Closure->reverseCancelOK) + return; + + box = dialog->action_area; + button = ((GtkBoxChild*)(g_list_first(GTK_BOX(box)->children)->data))->widget; + + gtk_box_reorder_child(GTK_BOX(box), button, 1); + +#if 0 + gtk_dialog_set_alternative_button_order(GTK_DIALOG(dialog), + GTK_RESPONSE_OK, + GTK_RESPONSE_CANCEL, + -1); +#endif +} + +/* + * Get the width of a label text + */ + +int GuiGetLabelWidth(GtkLabel *label, char *format, ...) +{ PangoLayout *layout; + PangoRectangle rect; + va_list argp; + char *text; + + if(!Closure->guiMode) + return 0; + + va_start(argp, format); + text = g_strdup_vprintf(format, argp); + va_end(argp); + + layout = gtk_label_get_layout(label); + pango_layout_set_text(layout, text, -1); + pango_layout_get_pixel_extents(layout, NULL, &rect); + + g_free(text); + + return rect.width; +} + + +/* + * Lock the size of a label to that of the given sample text. + */ + +void GuiLockLabelSize(GtkWidget *wid, char *format, ...) +{ PangoLayout *layout; + PangoRectangle rect; + va_list argp; + char *text; + + if(!Closure->guiMode) + return; + + va_start(argp, format); + text = g_strdup_vprintf(format, argp); + va_end(argp); + + layout = gtk_label_get_layout(GTK_LABEL(wid)); + pango_layout_set_text(layout, text, -1); + pango_layout_get_pixel_extents(layout, NULL, &rect); + + gtk_widget_set_size_request(wid, rect.width, rect.height); + gtk_misc_set_alignment(GTK_MISC(wid), 0.0, 0.0); + + g_free(text); +} + +/*** + *** Safety requesters before overwriting stuff + ***/ + +static void dont_ask_again_cb(GtkWidget *widget, gpointer data) +{ int state = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget)); + + Closure->confirmDeletion = !state; + + GuiUpdatePrefsConfirmDeletion(); +} + +static void insert_button(GtkDialog *dialog) +{ GtkWidget *check,*align; + + align = gtk_alignment_new(0.5, 0.5, 0.0, 0.0); + gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog)->vbox), align, FALSE, FALSE, 0); + + check = gtk_check_button_new_with_label(_utf("Do not ask again")); + gtk_container_add(GTK_CONTAINER(align), check); + gtk_container_set_border_width(GTK_CONTAINER(align), 10); + g_signal_connect(G_OBJECT(check), "toggled", G_CALLBACK(dont_ask_again_cb), NULL); + + gtk_widget_show(align); + gtk_widget_show(check); + GuiReverseCancelOK(GTK_DIALOG(dialog)); +} + +int GuiConfirmImageDeletion(char *file) +{ int answer; + + if(!Closure->guiMode) /* Always delete it in command line mode */ + return TRUE; + + if(!Closure->confirmDeletion) /* I told you so... */ + return TRUE; + + answer = GuiModalDialog(GTK_MESSAGE_QUESTION, GTK_BUTTONS_OK_CANCEL, + insert_button, + _("Image file already exists and does not match the medium:\n\n" + "%s\n\n" + "The existing image file will be deleted."), + file); + + return answer == GTK_RESPONSE_OK; +} +#endif diff --git a/src/misc.c b/src/misc.c index 61aa2a8..a63d8f6 100644 --- a/src/misc.c +++ b/src/misc.c @@ -20,6 +20,8 @@ * along with dvdisaster. If not, see . */ +/*** src type: some GUI code ***/ + #include "dvdisaster.h" int canprint(char c) @@ -27,6 +29,70 @@ int canprint(char c) return ((isascii(c) && !iscntrl(c)) ? 1 : 0); } +#ifdef WITH_GUI_NO +static void log_window_vprintf(char *format, va_list argp) {} +static void log_window_append(char *text) {} +#else + +/* + * limit message output to the log window. + */ + +#define MAX_LOG_WIN_SIZE 10240 + +static void clamp_gstring(GString *string) +{ gchar *ptr; + int cut; + + if(string->len < MAX_LOG_WIN_SIZE) + return; + + /* Remove head of the string so that it gets smaller than + the maximum size, and cut off until the next newline */ + + ptr = string->str; + cut = string->len - MAX_LOG_WIN_SIZE; + ptr += cut; + + while(*ptr && *ptr != '\n') + { ptr++; + cut++; + } + + g_string_erase(string, 0, cut); +} + +static void log_window_vprintf(char *format, va_list argp) +{ char *tmp,*utf_tmp; + + tmp = g_strdup_vprintf(format, argp); + utf_tmp = g_locale_to_utf8(tmp, -1, NULL, NULL, NULL); + + g_mutex_lock(Closure->logLock); + g_string_append(Closure->logString, utf_tmp); + clamp_gstring(Closure->logString); + g_mutex_unlock(Closure->logLock); + + GuiUpdateLog(); + + g_free(tmp); + g_free(utf_tmp); +} + +static void log_window_append(char *text) +{ char *utf_tmp = g_locale_to_utf8(text, -1, NULL, NULL, NULL); + + g_mutex_lock(Closure->logLock); + g_string_append(Closure->logString, utf_tmp); + clamp_gstring(Closure->logString); + g_mutex_unlock(Closure->logLock); + + GuiUpdateLog(); + + g_free(utf_tmp); +} +#endif /* WITH_GUI_YES */ + /*** *** gettext() convenience ***/ @@ -57,11 +123,8 @@ char *sgettext(char *msgid) } char *sgettext_utf8(char *msgid) -{ -#ifndef WITH_CLI_ONLY_YES - static gchar ringbuf[20][1024]; +{ static gchar ringbuf[20][1024]; static int ringptr; -#endif char *msgval; #ifdef WITH_NLS_YES @@ -80,7 +143,6 @@ char *sgettext_utf8(char *msgid) /*** If we are running the GUI, convert to UTF8 for Gtk+ */ -#ifndef WITH_CLI_ONLY_YES if(Closure->guiMode) { char *msg_utf8 = g_locale_to_utf8(msgval, -1, NULL, NULL, NULL); @@ -90,7 +152,6 @@ char *sgettext_utf8(char *msgid) return ringbuf[ringptr]; } -#endif return msgval; } @@ -144,67 +205,6 @@ void CalcSectors(guint64 size, guint64 *sectors, int *in_last) *** Message output ***/ -/* - * Append message to the log window. - */ - -#ifndef WITH_CLI_ONLY_YES - -#define MAX_LOG_WIN_SIZE 1024000 - -static void clamp_gstring(GString *string) -{ gchar *ptr; - int cut; - - if(string->len < MAX_LOG_WIN_SIZE) - return; - - /* Remove head of the string so that it gets smaller than - the maximum size, and cut off until the next newline */ - - ptr = string->str; - cut = string->len - MAX_LOG_WIN_SIZE; - ptr += cut; - - while(*ptr && *ptr != '\n') - { ptr++; - cut++; - } - - g_string_erase(string, 0, cut); -} - -static void log_window_vprintf(char *format, va_list argp) -{ char *tmp,*utf_tmp; - - tmp = g_strdup_vprintf(format, argp); - utf_tmp = g_locale_to_utf8(tmp, -1, NULL, NULL, NULL); - - g_mutex_lock(Closure->logLock); - g_string_append(Closure->logString, utf_tmp); - clamp_gstring(Closure->logString); - g_mutex_unlock(Closure->logLock); - - UpdateLog(); - - g_free(tmp); - g_free(utf_tmp); -} - -static void log_window_append(char *text) -{ char *utf_tmp = g_locale_to_utf8(text, -1, NULL, NULL, NULL); - - g_mutex_lock(Closure->logLock); - g_string_append(Closure->logString, utf_tmp); - clamp_gstring(Closure->logString); - g_mutex_unlock(Closure->logLock); - - UpdateLog(); - - g_free(utf_tmp); -} -#endif - /* * Output of the greetings is delayed until the first message is printed. */ @@ -215,7 +215,7 @@ static void print_greetings(FILE *where) if(greetings_shown) return; greetings_shown = 1; - g_fprintf(where, "%s.\n%s\n", Closure->versionString, + g_fprintf(where, "%s\n%s\n", Closure->versionString, _("Copyright 2004-2017 Carsten Gnoerlich.\nCopyright 2019-2021 The dvdisaster development team.")); /* TRANSLATORS: Excluding all kinds of warranty might be harmful under your legislature. If in doubt, just translate the following like "This is free @@ -242,7 +242,6 @@ void PrintCLI(char *format, ...) va_end(argp); } -#ifndef WITH_CLI_ONLY_YES if(Closure->guiMode) { if(Closure->verbose) { va_start(argp, format); @@ -251,7 +250,6 @@ void PrintCLI(char *format, ...) } return; } -#endif va_start(argp, format); g_vprintf(format, argp); @@ -272,10 +270,8 @@ void PrintProgress(char *format, ...) va_list argp; int n; -#ifndef WITH_CLI_ONLY_YES if(Closure->guiMode) return; -#endif print_greetings(stdout); @@ -339,11 +335,9 @@ void PrintLog(char *format, ...) va_start(argp, format); -#ifndef WITH_CLI_ONLY_YES if(Closure->guiMode) log_window_vprintf(format, argp); else -#endif { print_greetings(stdout); g_vprintf(format, argp); @@ -390,11 +384,9 @@ void PrintLogWithAsterisks(char *format, ...) va_start(argp, format); -#ifndef WITH_CLI_ONLY_YES if(Closure->guiMode) log_window_vprintf(new_format, argp); else -#endif { print_greetings(stdout); g_vprintf(new_format, argp); @@ -424,11 +416,9 @@ void Verbose(char *format, ...) va_start(argp, format); -#ifndef WITH_CLI_ONLY_YES if(Closure->guiMode) log_window_vprintf(format, argp); else -#endif { print_greetings(stdout); g_vprintf(format, argp); @@ -460,13 +450,11 @@ void PrintTimeToLog(GTimer *timer, char *format, ...) tmp2 = g_strdup_printf("%02d:%02d:%04.1f %s", hours, minutes, seconds, tmp1); va_end(argp); -#ifndef WITH_CLI_ONLY_YES if(Closure->guiMode) { log_window_append(tmp2); } else -#endif { g_printf("%s", tmp2); fflush(stdout); @@ -481,11 +469,7 @@ void PrintTimeToLog(GTimer *timer, char *format, ...) * or show it in the given label */ -#ifndef WITH_CLI_ONLY_YES -void PrintCLIorLabel(GtkLabel *label, char *format, ...) -#else -void PrintCLIorLabel(void *unused, char *format, ...) -#endif +void PrintCLIorLabel(GtkWidget *label, char *format, ...) { va_list argp; if(Closure->logFileEnabled) @@ -495,8 +479,8 @@ void PrintCLIorLabel(void *unused, char *format, ...) } va_start(argp, format); - -#ifndef WITH_CLI_ONLY_YES + +#ifdef WITH_GUI_YES if(Closure->guiMode) { char *c,*tmp; @@ -509,7 +493,7 @@ void PrintCLIorLabel(void *unused, char *format, ...) while(*c == '\n') /* Remove trailing newlines */ *c-- = 0; - SetLabelText(label, "%s", tmp); /* converts to utf8 by itself */ + GuiSetLabelText(label, "%s", tmp); /* converts to utf8 by itself */ g_free(tmp); } @@ -547,7 +531,7 @@ int GetLongestTranslation(char *first, ...) * Issue a warning message to stdout and the log */ -static void vlog_warning(char *format, va_list argp) +void vLogWarning(char *format, va_list argp) { char *warn = _("Warning"); int len = strlen(warn)+4; char prefix[len+1]; @@ -563,18 +547,12 @@ static void vlog_warning(char *format, va_list argp) prefix[len] = 0; str = g_string_sized_new(256); -#ifndef WITH_CLI_ONLY_YES g_string_append_printf(str,"* %s:%c", warn, Closure->guiMode ? '\n' : ' '); -#else - g_string_append_printf(str,"* %s: ", warn); -#endif do { c = strchr(line,'\n'); if(c) *c=0; -#ifndef WITH_CLI_ONLY_YES if(Closure->guiMode) g_string_append_printf(str,"* %s\n",line); else -#endif { if(line != body) g_string_append_printf(str,"%s%s\n",prefix,line); else g_string_append_printf(str,"%s\n",line); @@ -585,12 +563,10 @@ static void vlog_warning(char *format, va_list argp) if(Closure->logFileEnabled) PrintLogFile("%s", str->str); -#ifndef WITH_CLI_ONLY_YES if(Closure->guiMode) { log_window_append(str->str); } else -#endif { print_greetings(stdout); g_printf("%s", str->str); fflush(stdout); @@ -604,7 +580,7 @@ void LogWarning(char *format, ...) { va_list argp; va_start(argp, format); - vlog_warning(format, argp); + vLogWarning(format, argp); va_end(argp); } @@ -620,7 +596,7 @@ void LogWarning(char *format, ...) * -> spawn the dialogue * - via idle function when we're called from a sub thread * - directly when we're called from the main thread - * ShowMessage() takes care of this. + * GuiShowMessage() takes care of this. * -> clean up and continue execution */ @@ -638,9 +614,7 @@ void Stop(char *format, ...) /*** CLI mode */ -#ifndef WITH_CLI_ONLY_YES if(!Closure->guiMode) -#endif { print_greetings(stdout); g_printf("%s", _("\n*\n* dvdisaster - can not continue:\n*\n")); va_start(argp, format); @@ -651,8 +625,7 @@ void Stop(char *format, ...) } /*** GUI mode */ - -#ifndef WITH_CLI_ONLY_YES +#ifdef WITH_GUI_YES else { char *titled,*msg,*utf_msg; int idx; @@ -674,12 +647,12 @@ void Stop(char *format, ...) utf_msg = g_locale_to_utf8(msg, -1, NULL, NULL, NULL); - ShowMessage(Closure->window, utf_msg, GTK_MESSAGE_ERROR); + GuiShowMessage(Closure->window, utf_msg, GTK_MESSAGE_ERROR); g_free(msg); g_free(utf_msg); } -#endif - +#endif /* WITH_GUI_YES */ + /* The cleanup procedure is supposed to terminate any running threads except for the main thread. Since we are running from a "side" thread in GUI mode, @@ -712,9 +685,7 @@ void Stop(char *format, ...) /* see above: possibly unreachable in GUI mode! */ -#ifndef WITH_CLI_ONLY_YES if(!Closure->guiMode) -#endif { FreeClosure(); exit(EXIT_FAILURE); } @@ -762,604 +733,6 @@ GThread* CreateGThread(GThreadFunc f, gpointer data) return t; } -/* - * Spawning of idle functions. - * Idle functions are required to perform actions (like opening - * a dialogue) from a sub thread. - * However idle functions must not be spawned from the main thread - * as it would block infinitely; in that case we must run the idle - * function directly. - */ - -void CallIdleFunc(gboolean (*idle_func)(gpointer), gpointer data) -{ - if(Closure->mainThread == g_thread_self()) - { idle_func(data); - } - else - { g_idle_add(idle_func, data); - } -} - -/*** - *** Graphical user interface convenience - ***/ -#ifndef WITH_CLI_ONLY_YES - -/* - * Show the given widget - */ - -static gboolean show_idle_func(gpointer data) -{ - gtk_widget_show(GTK_WIDGET(data)); - - return FALSE; -} - -void ShowWidget(GtkWidget *widget) -{ - g_idle_add(show_idle_func, (gpointer)widget); -} - -/* - * Activation / Deactivation of the action buttons - */ - -static gboolean allow_actions_idle_func(gpointer data) -{ gboolean s = (data != NULL); - - /* Disable/Enable parts of the menu */ - - gtk_widget_set_sensitive(Closure->fileMenuImage, s); - gtk_widget_set_sensitive(Closure->fileMenuEcc, s); - gtk_widget_set_sensitive(Closure->toolMenuAnchor, s); - - /* Disable/Enable toolbar and sidebar buttons */ - - if(Closure->deviceNodes->len) - { gtk_widget_set_sensitive(Closure->readButton, s); - gtk_widget_set_sensitive(Closure->scanButton, s); - } - gtk_widget_set_sensitive(Closure->createButton, s); - gtk_widget_set_sensitive(Closure->fixButton, s); - gtk_widget_set_sensitive(Closure->testButton, s); - gtk_widget_set_sensitive(Closure->stripButton, s); - - gtk_widget_set_sensitive(Closure->prefsButton, s); - if(!s && Closure->prefsWindow) - HidePreferences(); - - Closure->stopActions = FALSE; - - return FALSE; -} - -void AllowActions(gboolean s) -{ - g_idle_add(allow_actions_idle_func, GINT_TO_POINTER(s)); -} - -/* - * Dispatch a non-modal message dialog - */ - -typedef struct -{ char *msg; - GtkMessageType type; - GtkWindow *window; -} message_info; - -static gboolean message_idle_func(gpointer data) -{ message_info *mi = (message_info*)data; - GtkWidget *dialog; - - dialog = gtk_message_dialog_new_with_markup(mi->window, - GTK_DIALOG_DESTROY_WITH_PARENT, - mi->type, - GTK_BUTTONS_CLOSE, - mi->msg, NULL); - - gtk_label_set_line_wrap(GTK_LABEL(((struct _GtkMessageDialog*)dialog)->label), FALSE); - g_signal_connect_swapped(dialog, "response", G_CALLBACK(gtk_widget_destroy), dialog); - gtk_widget_show(dialog); - - g_free(mi->msg); - g_free(mi); - - return FALSE; -} - -void ShowMessage(GtkWindow *parent, char *msg, GtkMessageType type) -{ message_info *mi = g_malloc(sizeof(message_info)); - - mi->msg = g_strdup(msg); - mi->type = type; - mi->window = parent; - - if(Closure->mainThread == g_thread_self()) - message_idle_func(mi); - else g_idle_add(message_idle_func, mi); -} - -/* - * Creates a message from the main thread - */ - -GtkWidget* CreateMessage(char *format, GtkMessageType type, ...) -{ GtkWidget *dialog; - va_list argp; - char *text,*utf8; - - va_start(argp, type); - text = g_strdup_vprintf(format, argp); - va_end(argp); - utf8 = g_locale_to_utf8(text, -1, NULL, NULL, NULL); - - dialog = gtk_message_dialog_new(Closure->window, - GTK_DIALOG_DESTROY_WITH_PARENT, - type, - GTK_BUTTONS_CLOSE, - utf8, NULL); - - gtk_label_set_line_wrap(GTK_LABEL(((struct _GtkMessageDialog*)dialog)->label), FALSE); - g_signal_connect_swapped(dialog, "response", G_CALLBACK(gtk_widget_destroy), dialog); - gtk_widget_show(dialog); - g_free(text); - g_free(utf8); - - return dialog; -} - -/* - * Label convenience functions. - * Sets the label text from another thread. - */ - -typedef struct -{ GtkLabel *label; - char *text; -} label_info; - -static gboolean label_idle_func(gpointer data) -{ label_info *li = (label_info*)data; - - gtk_label_set_markup(li->label, li->text); - - g_free(li->text); - g_free(li); - - return FALSE; -} - -void SetLabelText(GtkLabel *label, char *format, ...) -{ label_info *li = g_malloc(sizeof(label_info)); - va_list argp; - - li->label = label; - - va_start(argp, format); - if(format) - { char *tmp = g_strdup_vprintf(format, argp); - - if(!tmp) tmp=g_strdup_printf("SetLabelText(%s) failed",format); - li->text = g_locale_to_utf8(tmp, -1, NULL, NULL, NULL); - g_free(tmp); - } - else li->text = g_locale_to_utf8("(null)", -1, NULL, NULL, NULL); - va_end(argp); - g_idle_add(label_idle_func, li); -} - -/* - * Progress bar convenience function. - * Percentage is given as a multiple of 0.1 percent. - */ - -typedef struct -{ GtkWidget *pbar; - int percent; - int max; -} progress_info; - -static gboolean progress_idle_func(gpointer data) -{ progress_info *pi = (progress_info*)data; - gdouble val = (gdouble)pi->percent / (gdouble)pi->max; - char text[20]; - - switch(pi->max) - { case 100: g_sprintf(text, "%3d%%",pi->percent); break; - case 1000: g_sprintf(text, "%3d.%1d%%",pi->percent/10,pi->percent%10); break; - } - - gtk_progress_bar_set_fraction(GTK_PROGRESS_BAR(pi->pbar), val); - gtk_progress_bar_set_text(GTK_PROGRESS_BAR(pi->pbar), text); - - g_free(pi); - - return FALSE; -} - -void SetProgress(GtkWidget *pbar, int percent, int max) -{ progress_info *pi = g_malloc(sizeof(progress_info)); - - pi->pbar = pbar; - pi->percent = percent; - pi->max = max; - - g_idle_add(progress_idle_func, pi); -} - -/* - * Perform a modal dialog. - * Note that the thread running the dialog is different - * from the one blocking/waiting for the response! - */ - -typedef struct -{ GMutex *mutex; - GCond *cond; - char *msg; - int ret; - GtkMessageType message_type; - GtkButtonsType button_type; - void (*button_fn)(GtkDialog*); -} modal_info; - -static gboolean modal_idle_func(gpointer data) -{ modal_info *mi = (modal_info*)data; - GtkWidget *dialog; - int response; - - dialog = gtk_message_dialog_new(Closure->window, - GTK_DIALOG_DESTROY_WITH_PARENT, - mi->message_type, - mi->button_type, - "%s", mi->msg); - gtk_label_set_line_wrap(GTK_LABEL(((struct _GtkMessageDialog*)dialog)->label), FALSE); - - if(mi->button_fn) - mi->button_fn(GTK_DIALOG(dialog)); - else ReverseCancelOK(GTK_DIALOG(dialog)); - - response = gtk_dialog_run(GTK_DIALOG(dialog)); - - g_mutex_lock(mi->mutex); - if(mi->button_fn) - mi->ret = response; - else switch(response) - { case GTK_RESPONSE_OK: - mi->ret = 1; - break; - - default: - mi->ret = 0; - break; - } - - g_cond_signal(mi->cond); - g_mutex_unlock(mi->mutex); - - gtk_widget_destroy(dialog); - - return FALSE; -} - -static int vmodal_dialog(GtkMessageType mt, GtkButtonsType bt, - void(*button_fn)(GtkDialog*), char *msg, va_list argp) -{ modal_info *mi = g_malloc(sizeof(modal_info)); - char *tmp; - int idx,ret; - - mi->message_type = mt; - mi->button_type = bt; - mi->button_fn = button_fn; - mi->mutex = g_malloc(sizeof(GMutex)); g_mutex_init(mi->mutex); - mi->cond = g_malloc(sizeof(GCond)); g_cond_init(mi->cond); - - tmp = g_strdup_vprintf(msg, argp); - idx = strlen(tmp); /* Remove trailing newline */ - if(tmp[idx-1] == '\n') - tmp[idx-1] = 0; - mi->msg = g_locale_to_utf8(tmp, -1, NULL, NULL, NULL); - g_free(tmp); - - mi->ret = -1; - - CallIdleFunc(modal_idle_func, mi); - - g_mutex_lock(mi->mutex); - while(mi->ret == -1) - g_cond_wait(mi->cond, mi->mutex); - - ret = mi->ret; - g_mutex_unlock(mi->mutex); - g_free(mi->msg); - g_mutex_clear(mi->mutex); - g_free(mi->mutex); - g_cond_clear(mi->cond); - g_free(mi->cond); - g_free(mi); - - return ret; -} - -int ModalDialog(GtkMessageType mt, GtkButtonsType bt, - void(*button_fn)(GtkDialog*), char *msg, ...) -{ va_list argp; - int result; - - va_start(argp, msg); - result = vmodal_dialog(mt, bt, button_fn, msg, argp); - va_end(argp); - - return result; -} - -/* - * A wrapper around ModalDialog() to create a logged warning. - * Note that in CLI mode the answer is always "yes", - * so warnings will be printed but never abort CLI mode. - */ - -int ModalWarning(GtkMessageType mt, GtkButtonsType bt, - void(*button_fn)(GtkDialog*), char *msg, ...) -#else -int ModalWarning(char *msg, ...) -#endif -{ va_list argp; - int result = 1; - - va_start(argp, msg); - vlog_warning(msg, argp); - va_end(argp); - -#ifndef WITH_CLI_ONLY_YES - if(Closure->guiMode) - { va_start(argp, msg); - result = vmodal_dialog(mt, bt, button_fn, msg, argp); - va_end(argp); - } -#endif - - return result; -} - -/* - * Set the text in the pango layout and retrieve its extents. - */ - -#ifndef WITH_CLI_ONLY_YES -void SetText(PangoLayout *layout, char *text, int *w, int *h) -{ PangoRectangle rect; - char *t = g_locale_to_utf8(text, -1, NULL, NULL, NULL); - - pango_layout_set_text(layout, t, -1); - pango_layout_get_pixel_extents(layout, NULL, &rect); - - g_free(t); - - *w = rect.width; - *h = rect.height; -} - -/* - * Switch a notebook to another page and set the text in a label. - * Used in some footlines in the GUI. - */ - -typedef struct -{ GtkWidget *notebook; - int newPage; - GtkWidget *label; - char *newText; -} footline_info; - -static gboolean footline_idle_func(gpointer data) -{ footline_info *fi = (footline_info*)data; - - if(fi->label) - gtk_label_set_markup(GTK_LABEL(fi->label), fi->newText); - gtk_notebook_set_current_page(GTK_NOTEBOOK(fi->notebook), fi->newPage); - - if(fi->newText) - g_free(fi->newText); - g_free(fi); - - return FALSE; -} - -void SwitchAndSetFootline(GtkWidget *notebook, int page, GtkWidget *label, char *format, ...) -{ va_list argp; - char *tmp; - footline_info *fi = g_malloc0(sizeof(footline_info)); - int len; - - fi->notebook = notebook; - fi->newPage = page; - fi->label = label; - - if(label) - { va_start(argp, format); - tmp = g_strdup_vprintf(format, argp); - len = strlen(tmp); - if(tmp[len-1] == '\n') tmp[len-1]=0; - fi->newText = g_locale_to_utf8(tmp, -1, NULL, NULL, NULL); - g_free(tmp); - va_end(argp); - } - - g_idle_add(footline_idle_func, fi); -} - -/* - * Rearrange buttons to OK Cancel order - * in file dialogs - * - * gtk_dialog_set_alternative_button_order() - * has been introduced since gtk+2.6, - * but does not seem to work correctly. - */ - -void ReverseCancelOK(GtkDialog *dialog) -{ GtkWidget *box, *button ; - - if(!Closure->reverseCancelOK) - return; - - box = dialog->action_area; - button = ((GtkBoxChild*)(g_list_first(GTK_BOX(box)->children)->data))->widget; - - gtk_box_reorder_child(GTK_BOX(box), button, 1); - -#if 0 - gtk_dialog_set_alternative_button_order(GTK_DIALOG(dialog), - GTK_RESPONSE_OK, - GTK_RESPONSE_CANCEL, - -1); -#endif -} - -/* - * Make widget insensitive for a given amount of time. - */ - -static gboolean insensitive_timeout_func(gpointer data) -{ - gtk_widget_set_sensitive((GtkWidget*)data, TRUE); - - return FALSE; -} - - -void TimedInsensitive(GtkWidget *widget, int delay) -{ - - gtk_widget_set_sensitive(widget, FALSE); - - g_timeout_add(delay, insensitive_timeout_func, (gpointer)widget); -} - -/* - * Get the width of a label text - */ - -int GetLabelWidth(GtkLabel *label, char *format, ...) -{ PangoLayout *layout; - PangoRectangle rect; - va_list argp; - char *text; - - va_start(argp, format); - text = g_strdup_vprintf(format, argp); - va_end(argp); - - layout = gtk_label_get_layout(label); - pango_layout_set_text(layout, text, -1); - pango_layout_get_pixel_extents(layout, NULL, &rect); - - g_free(text); - - return rect.width; -} - - -/* - * Lock the size of a label to that of the given sample text. - */ - -void LockLabelSize(GtkLabel *label, char *format, ...) -{ PangoLayout *layout; - PangoRectangle rect; - va_list argp; - char *text; - - va_start(argp, format); - text = g_strdup_vprintf(format, argp); - va_end(argp); - - layout = gtk_label_get_layout(label); - pango_layout_set_text(layout, text, -1); - pango_layout_get_pixel_extents(layout, NULL, &rect); - - gtk_widget_set_size_request(GTK_WIDGET(label), rect.width, rect.height); - gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.0); - - g_free(text); -} - -/*** - *** Safety requesters before overwriting stuff - ***/ - -static void dont_ask_again_cb(GtkWidget *widget, gpointer data) -{ int state = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget)); - - Closure->confirmDeletion = !state; - - UpdatePrefsConfirmDeletion(); -} - -static void insert_button(GtkDialog *dialog) -{ GtkWidget *check,*align; - - align = gtk_alignment_new(0.5, 0.5, 0.0, 0.0); - gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog)->vbox), align, FALSE, FALSE, 0); - - check = gtk_check_button_new_with_label(_utf("Do not ask again")); - gtk_container_add(GTK_CONTAINER(align), check); - gtk_container_set_border_width(GTK_CONTAINER(align), 10); - g_signal_connect(G_OBJECT(check), "toggled", G_CALLBACK(dont_ask_again_cb), NULL); - - gtk_widget_show(align); - gtk_widget_show(check); - ReverseCancelOK(GTK_DIALOG(dialog)); -} - -#endif -int ConfirmImageDeletion(char *file) -{ -#ifndef WITH_CLI_ONLY_YES - if(!Closure->guiMode) /* Always delete it in command line mode */ -#endif - return TRUE; - -#ifndef WITH_CLI_ONLY_YES - if(!Closure->confirmDeletion) /* I told you so... */ - return TRUE; - - int answer = ModalDialog(GTK_MESSAGE_QUESTION, GTK_BUTTONS_OK_CANCEL, - insert_button, - _("Image file already exists and does not match the medium:\n\n" - "%s\n\n" - "The existing image file will be deleted."), - file); - - return answer == GTK_RESPONSE_OK; -#endif -} - -int ConfirmEccDeletion(char *file) -{ -#ifndef WITH_CLI_ONLY_YES - if(!Closure->guiMode) /* Always delete it in command line mode */ -#endif - return TRUE; - -#ifndef WITH_CLI_ONLY_YES - if(!Closure->confirmDeletion) /* I told you so... */ - return TRUE; - - int answer = ModalDialog(GTK_MESSAGE_QUESTION, GTK_BUTTONS_OK_CANCEL, - insert_button, - _("The error correction file is already present:\n\n" - "%s\n\n" - "Overwrite it?"), - file); - - return answer == GTK_RESPONSE_OK; -#endif -} /* * --strip method and associated cleanup func @@ -1374,12 +747,7 @@ static void stripecc_cleanup(gpointer data) if (image) CloseImage(image); -#ifndef WITH_CLI_ONLY_YES - if(Closure->guiMode) - { AllowActions(TRUE); - g_thread_exit(0); - } -#endif + GuiExitWorkerThread(); } @@ -1407,9 +775,9 @@ void StripECCFromImageFile() /*** Last chance to cancel in GUI mode */ -#ifndef WITH_CLI_ONLY_YES +#ifdef WITH_GUI_YES if(Closure->guiMode) - { int answer = ModalDialog(GTK_MESSAGE_QUESTION, GTK_BUTTONS_OK_CANCEL, NULL, + { int answer = GuiModalDialog(GTK_MESSAGE_QUESTION, GTK_BUTTONS_OK_CANCEL, NULL, _("We're about to truncate the image from %" PRId64 " sectors (%" PRId64 " MiB)\n" "to %" PRId64 " sectors (%" PRId64 " MiB), removing any dvdisaster-added ECC data.\n" "This will restore the image to its pre-augmented original size."), @@ -1428,9 +796,9 @@ void StripECCFromImageFile() PrintLog(_("Image successfully truncated back to its original size.\n")); -#ifndef WITH_CLI_ONLY_YES +#ifdef WITH_GUI_YES if (Closure->guiMode) - { ModalDialog(GTK_MESSAGE_INFO, GTK_BUTTONS_OK, NULL, _("Image successfully truncated")); + { GuiModalDialog(GTK_MESSAGE_INFO, GTK_BUTTONS_OK, NULL, "%s", _("Image successfully truncated")); } #endif diff --git a/src/preferences.c b/src/preferences.c index 32af82f..2df509c 100644 --- a/src/preferences.c +++ b/src/preferences.c @@ -19,8 +19,10 @@ * You should have received a copy of the GNU General Public License * along with dvdisaster. If not, see . */ -// DVDISASTER_GUI_FILE +/*** src type: only GUI code ***/ + +#ifdef WITH_GUI_YES #include "dvdisaster.h" extern gint64 CurrentMediumSize(int); /* from scsi-layer.h */ @@ -158,14 +160,14 @@ typedef struct _prefs_context LabelWithOnlineHelp *minAttemptsScaleLwoh, *maxAttemptsScaleLwoh; } prefs_context; -void FreePreferences(void *context) +void GuiFreePreferences(void *context) { prefs_context *pc = (prefs_context*)context; int i; for(i=0; ihelpPages->len; i++) { LabelWithOnlineHelp *lwoh = g_ptr_array_index(pc->helpPages,i); - FreeLabelWithOnlineHelp(lwoh); + GuiFreeLabelWithOnlineHelp(lwoh); } g_ptr_array_free(pc->helpPages, FALSE); @@ -211,14 +213,14 @@ void FreePreferences(void *context) static gboolean delete_cb(GtkWidget *widget, GdkEvent *event, gpointer data) { - FreePreferences(Closure->prefsContext); + GuiFreePreferences(Closure->prefsContext); Closure->prefsWindow = NULL; Closure->prefsContext = NULL; return FALSE; } -void HidePreferences(void) +void GuiHidePreferences(void) { prefs_context *pc = (prefs_context*)Closure->prefsContext; Method *method; const char *value1, *value2; @@ -325,14 +327,14 @@ void HidePreferences(void) static void close_cb(GtkWidget *widget, gpointer data) { - HidePreferences(); + GuiHidePreferences(); } /*** *** Setting preferences from external functions ***/ -void UpdatePrefsExhaustiveSearch(void) +void GuiUpdatePrefsExhaustiveSearch(void) { prefs_context *pc = (prefs_context*)Closure->prefsContext; if(Closure->prefsContext) @@ -343,7 +345,7 @@ void UpdatePrefsExhaustiveSearch(void) } } -void UpdatePrefsConfirmDeletion(void) +void GuiUpdatePrefsConfirmDeletion(void) { prefs_context *pc = (prefs_context*)Closure->prefsContext; if(Closure->prefsContext) @@ -356,7 +358,7 @@ void UpdatePrefsConfirmDeletion(void) * Register a preferences help window */ -void RegisterPreferencesHelpWindow(LabelWithOnlineHelp *lwoh) +void GuiRegisterPreferencesHelpWindow(LabelWithOnlineHelp *lwoh) { prefs_context *pc = (prefs_context*)Closure->prefsContext; g_ptr_array_add(pc->helpPages, lwoh); @@ -448,9 +450,9 @@ static void toggle_cb(GtkWidget *widget, gpointer data) activate_toggle_button(GTK_TOGGLE_BUTTON(pc->radioLinearA), TRUE); activate_toggle_button(GTK_TOGGLE_BUTTON(pc->radioLinearB), TRUE); - ShowMessage(Closure->prefsWindow, - _("Switched to the linear reading strategy."), - GTK_MESSAGE_INFO); + GuiShowMessage(Closure->prefsWindow, + _("Switched to the linear reading strategy."), + GTK_MESSAGE_INFO); } break; @@ -800,12 +802,12 @@ static void color_ok_cb(GtkWidget *widget, gpointer data) case COLOR_RED_TEXT: update_color_buttons(pc->redTextA, pc->redTextB, TRUE); - UpdateMarkup(&Closure->redMarkup, Closure->redText); + GuiUpdateMarkup(&Closure->redMarkup, Closure->redText); break; case COLOR_GREEN_TEXT: update_color_buttons(pc->greenTextA, pc->greenTextB, TRUE); - UpdateMarkup(&Closure->greenMarkup, Closure->greenText); + GuiUpdateMarkup(&Closure->greenMarkup, Closure->greenText); break; case COLOR_BAR: @@ -842,7 +844,7 @@ static void color_choose_cb(GtkWidget *widget, gpointer data) g_signal_connect(G_OBJECT(csd->cancel_button), "clicked", G_CALLBACK(color_cancel_cb), cbi); g_signal_connect(G_OBJECT(csd->ok_button), "clicked", G_CALLBACK(color_ok_cb), cbi); - ReverseCancelOK(GTK_DIALOG(cbi->dialog)); + GuiReverseCancelOK(GTK_DIALOG(cbi->dialog)); } gtk_color_selection_set_current_color(GTK_COLOR_SELECTION(((GtkColorSelectionDialog*)cbi->dialog)->colorsel), cbi->color); @@ -852,7 +854,7 @@ static void color_choose_cb(GtkWidget *widget, gpointer data) static void default_color_cb(GtkWidget *widget, gpointer data) { prefs_context *pc = (prefs_context*)Closure->prefsContext; - DefaultColors(); + GuiDefaultColors(); update_color_buttons(pc->redA, pc->redB, FALSE); update_color_buttons(pc->yellowA, pc->yellowB, FALSE); @@ -922,7 +924,7 @@ static void non_linear_cb(GtkWidget *widget, gpointer data) gtk_range_set_value(GTK_RANGE(nli->pc->jumpScaleA), index); gtk_label_set_markup(GTK_LABEL(nli->pc->jumpScaleInfoA->label), utf); - SetOnlineHelpLinkText(nli->pc->jumpScaleLwoh, text); + GuiSetOnlineHelpLinkText(nli->pc->jumpScaleLwoh, text); break; case SLIDER_MIN_READ_ATTEMPTS: @@ -935,7 +937,7 @@ static void non_linear_cb(GtkWidget *widget, gpointer data) gtk_range_set_value(GTK_RANGE(nli->pc->minAttemptsScaleA), index); gtk_label_set_markup(GTK_LABEL(nli->pc->minAttemptsScaleInfoA->label), utf); - SetOnlineHelpLinkText(nli->pc->minAttemptsScaleLwoh, text); + GuiSetOnlineHelpLinkText(nli->pc->minAttemptsScaleLwoh, text); if(index > max) { @@ -955,7 +957,7 @@ static void non_linear_cb(GtkWidget *widget, gpointer data) gtk_range_set_value(GTK_RANGE(nli->pc->maxAttemptsScaleA), index); gtk_label_set_markup(GTK_LABEL(nli->pc->maxAttemptsScaleInfoA->label), utf); - SetOnlineHelpLinkText(nli->pc->maxAttemptsScaleLwoh, text); + GuiSetOnlineHelpLinkText(nli->pc->maxAttemptsScaleLwoh, text); if(index < min) { @@ -1012,7 +1014,7 @@ static GtkWidget* non_linear_scale(GtkWidget **hbox_out, non_linear_info *nli, gtk_label_set_markup(GTK_LABEL(label), utf); if(nli->lwoh) - { SetOnlineHelpLinkText(nli->lwoh, text); + { GuiSetOnlineHelpLinkText(nli->lwoh, text); if (addTooltip) gtk_box_pack_start(GTK_BOX(hbox), nli->lwoh->tooltip, FALSE, FALSE, 0); gtk_box_pack_start(GTK_BOX(hbox), nli->lwoh->linkBox, FALSE, FALSE, 0); } @@ -1055,9 +1057,9 @@ static void strategy_cb(GtkWidget *widget, gpointer data) activate_toggle_button(GTK_TOGGLE_BUTTON(pc->readAndCreateButtonA), FALSE); activate_toggle_button(GTK_TOGGLE_BUTTON(pc->readAndCreateButtonB), FALSE); - ShowMessage(Closure->prefsWindow, - _("Disabled automatic error correction file generation."), - GTK_MESSAGE_INFO); + GuiShowMessage(Closure->prefsWindow, + _("Disabled automatic error correction file generation."), + GTK_MESSAGE_INFO); } } @@ -1220,7 +1222,7 @@ static void cache_defective_dir_cb(GtkWidget *widget, gpointer data) { char filename[strlen(Closure->dDumpDir)+10]; pc->cacheDefectiveChooser = gtk_file_selection_new(_utf("Raw sector caching")); - ReverseCancelOK(GTK_DIALOG(pc->cacheDefectiveChooser)); + GuiReverseCancelOK(GTK_DIALOG(pc->cacheDefectiveChooser)); g_signal_connect(G_OBJECT(pc->cacheDefectiveChooser), "destroy", G_CALLBACK(cache_defective_select_cb), @@ -1292,7 +1294,7 @@ static void logfile_cb(GtkWidget *widget, gpointer data) if(!pc->logFileChooser) { pc->logFileChooser = gtk_file_selection_new(_utf("Log file")); - ReverseCancelOK(GTK_DIALOG(pc->logFileChooser)); + GuiReverseCancelOK(GTK_DIALOG(pc->logFileChooser)); g_signal_connect(G_OBJECT(pc->logFileChooser), "destroy", G_CALLBACK(logfile_select_cb), @@ -1316,7 +1318,7 @@ static void logfile_cb(GtkWidget *widget, gpointer data) "%s", _utf("Delete the log file?")); int answer; - ReverseCancelOK(GTK_DIALOG(dialog)); + GuiReverseCancelOK(GTK_DIALOG(dialog)); answer = gtk_dialog_run(GTK_DIALOG(dialog)); if(answer == GTK_RESPONSE_OK) @@ -1381,7 +1383,7 @@ static gboolean notebook_idle_func(gpointer data) *** Assemble and open the preferences window. ***/ -void UpdateMethodPreferences(void) +void GuiUpdateMethodPreferences(void) { int i; for(i=0; imethodList->len; i++) @@ -1392,7 +1394,7 @@ void UpdateMethodPreferences(void) } } -void CreatePreferencesWindow(void) +void GuiCreatePreferencesWindow(void) { if(!Closure->prefsWindow) /* No window to reuse? */ { GtkWidget *window, *outer_box, *notebook, *space; @@ -1450,8 +1452,9 @@ void CreatePreferencesWindow(void) /* Reading strategy */ - lwoh = CreateLabelWithOnlineHelp(_("Reading strategy"), _("Reading strategy: ")); - RegisterPreferencesHelpWindow(lwoh); + lwoh = GuiCreateLabelWithOnlineHelp(_("Reading strategy"), + _("Reading strategy: ")); + GuiRegisterPreferencesHelpWindow(lwoh); for(i=0; i<2; i++) { GtkWidget *hbox = gtk_hbox_new(FALSE, 4); @@ -1481,24 +1484,25 @@ void CreatePreferencesWindow(void) else activate_toggle_button(GTK_TOGGLE_BUTTON(radio1), TRUE); if(!i) gtk_box_pack_start(GTK_BOX(vbox2), hbox, FALSE, FALSE, 0); - else AddHelpWidget(lwoh, hbox); + else GuiAddHelpWidget(lwoh, hbox); } - AddHelpParagraph(lwoh, - _("Reading strategy\n\n" - "Use the linear strategy for:\n" - "- processing undamaged media, or\n" - "- reading defective media when no error correction data is available.\n\n" - "The adaptive strategy is optimized for\n" - "- reading defective media\n" - "- if (and only if) error correction data is available.\n\n" - "Using the adaptive strategy without error correction data " - "is possible but it is recommended to use linear reading in that case.")); + GuiAddHelpParagraph(lwoh, + _("Reading strategy\n\n" + "Use the linear strategy for:\n" + "- processing undamaged media, or\n" + "- reading defective media when no error correction data is available.\n\n" + "The adaptive strategy is optimized for\n" + "- reading defective media\n" + "- if (and only if) error correction data is available.\n\n" + "Using the adaptive strategy without error correction data " + "is possible but it is recommended to use linear reading in that case.")); /* Reading range */ - lwoh = CreateLabelWithOnlineHelp(_("Reading range"), _("Read/Scan from sector")); - RegisterPreferencesHelpWindow(lwoh); + lwoh = GuiCreateLabelWithOnlineHelp(_("Reading range"), + _("Read/Scan from sector")); + GuiRegisterPreferencesHelpWindow(lwoh); for(i=0; i<2; i++) { GtkWidget *hbox = gtk_hbox_new(FALSE, 4); @@ -1535,19 +1539,19 @@ void CreatePreferencesWindow(void) gtk_box_pack_start(GTK_BOX(hbox), spin2, FALSE, FALSE, 0); if(!i) gtk_box_pack_start(GTK_BOX(vbox2), hbox, FALSE, FALSE, 0); - else AddHelpWidget(lwoh, hbox); + else GuiAddHelpWidget(lwoh, hbox); activate_toggle_button(GTK_TOGGLE_BUTTON(toggle), FALSE); } - AddHelpParagraph(lwoh, - _("Reading range\n\n" - "Reading can be limited to a part of the medium (in sectors holding 2KB each). " - "The values include the borders: 0-100 will read 101 sectors.\n\n" + GuiAddHelpParagraph(lwoh, + _("Reading range\n\n" + "Reading can be limited to a part of the medium (in sectors holding 2KB each). " + "The values include the borders: 0-100 will read 101 sectors.\n\n" - "Note: Limiting the reading range is not recommended for adaptive reading since it might " - "prevent sectors from being read which are required for a successful error correction.\n\n" - "These settings are only effective for the current session and will not be saved.")); + "Note: Limiting the reading range is not recommended for adaptive reading since it might " + "prevent sectors from being read which are required for a successful error correction.\n\n" + "These settings are only effective for the current session and will not be saved.")); /*** Image recognization */ @@ -1560,8 +1564,9 @@ void CreatePreferencesWindow(void) /* RS02 */ - lwoh = CreateLabelWithOnlineHelp(_("Exhaustive RS02 header search"), _("Perform exhaustive search for RS02 headers")); - RegisterPreferencesHelpWindow(lwoh); + lwoh = GuiCreateLabelWithOnlineHelp(_("Exhaustive RS02 header search"), + _("Perform exhaustive search for RS02 headers")); + GuiRegisterPreferencesHelpWindow(lwoh); for(i=0; i<2; i++) { GtkWidget *hbox = gtk_hbox_new(FALSE, 0); @@ -1577,31 +1582,32 @@ void CreatePreferencesWindow(void) activate_toggle_button(GTK_TOGGLE_BUTTON(button), Closure->examineRS02); g_signal_connect(G_OBJECT(button), "toggled", G_CALLBACK(toggle_cb), GINT_TO_POINTER(TOGGLE_RECOG_RS02)); if(!i) gtk_box_pack_start(GTK_BOX(vbox2), hbox, FALSE, FALSE, 0); - else AddHelpWidget(lwoh, hbox); + else GuiAddHelpWidget(lwoh, hbox); } - AddHelpParagraph(lwoh, - _("Exhaustive RS02 header search\n\n" - "When this setting is off only a quick check " - "for RS02 data is performed. If the medium or " - "image is damaged, the quick test may not suffice " - "to identify the image as being augmented with RS02.\n\n" - "Therefore you should turn this option on " - "if a medium/image contains RS02 data, but is not " - "being recognized as such. Searching for the RS02 " - "information may cause a significant delay at the " - "start of reading and scanning processes.\n\n" - "Leave this option off when you are " - "processing media or images which are not augmented " - "with RS02 data. Otherwise you will waste a lot of " - "time searching for the RS02 signatures and increase " - "wear on the drive." - )); + GuiAddHelpParagraph(lwoh, + _("Exhaustive RS02 header search\n\n" + "When this setting is off only a quick check " + "for RS02 data is performed. If the medium or " + "image is damaged, the quick test may not suffice " + "to identify the image as being augmented with RS02.\n\n" + "Therefore you should turn this option on " + "if a medium/image contains RS02 data, but is not " + "being recognized as such. Searching for the RS02 " + "information may cause a significant delay at the " + "start of reading and scanning processes.\n\n" + "Leave this option off when you are " + "processing media or images which are not augmented " + "with RS02 data. Otherwise you will waste a lot of " + "time searching for the RS02 signatures and increase " + "wear on the drive." + )); /* RS03 */ - lwoh = CreateLabelWithOnlineHelp(_("Recover RS03 signatures"), _("Find and recover RS03 signatures")); - RegisterPreferencesHelpWindow(lwoh); + lwoh = GuiCreateLabelWithOnlineHelp(_("Recover RS03 signatures"), + _("Find and recover RS03 signatures")); + GuiRegisterPreferencesHelpWindow(lwoh); for(i=0; i<2; i++) { GtkWidget *hbox = gtk_hbox_new(FALSE, 0); @@ -1617,26 +1623,26 @@ void CreatePreferencesWindow(void) activate_toggle_button(GTK_TOGGLE_BUTTON(button), Closure->examineRS03); g_signal_connect(G_OBJECT(button), "toggled", G_CALLBACK(toggle_cb), GINT_TO_POINTER(TOGGLE_RECOG_RS03)); if(!i) gtk_box_pack_start(GTK_BOX(vbox2), hbox, FALSE, FALSE, 0); - else AddHelpWidget(lwoh, hbox); + else GuiAddHelpWidget(lwoh, hbox); } - AddHelpParagraph(lwoh, - _("Exhaustive RS03 header search\n\n" - "When this setting is off only a quick check " - "for RS03 data is performed. If the medium or " - "image is damaged, the quick test may not suffice " - "to identify the image as being augmented with RS03.\n\n" - "Therefore you should turn this option on " - "if a medium/image contains RS03 data, but is not " - "being recognized as such. Searching for the RS03 " - "information may cause a significant delay at the " - "start of reading and scanning processes.\n\n" - "Leave this option off when you are " - "processing media or images which are not augmented " - "with RS03 data. Otherwise you will waste a lot of " - "time searching for the RS03 signatures and increase " - "wear on the drive." - )); + GuiAddHelpParagraph(lwoh, + _("Exhaustive RS03 header search\n\n" + "When this setting is off only a quick check " + "for RS03 data is performed. If the medium or " + "image is damaged, the quick test may not suffice " + "to identify the image as being augmented with RS03.\n\n" + "Therefore you should turn this option on " + "if a medium/image contains RS03 data, but is not " + "being recognized as such. Searching for the RS03 " + "information may cause a significant delay at the " + "start of reading and scanning processes.\n\n" + "Leave this option off when you are " + "processing media or images which are not augmented " + "with RS03 data. Otherwise you will waste a lot of " + "time searching for the RS03 signatures and increase " + "wear on the drive." + )); /** Image properties */ @@ -1649,8 +1655,9 @@ void CreatePreferencesWindow(void) /* Query size from drive */ - lwoh = CreateLabelWithOnlineHelp(_("Ignore ISO/UDF meta data"), _("Ignore image size recorded in ISO/UDF file system")); - RegisterPreferencesHelpWindow(lwoh); + lwoh = GuiCreateLabelWithOnlineHelp(_("Ignore ISO/UDF meta data"), + _("Ignore image size recorded in ISO/UDF file system")); + GuiRegisterPreferencesHelpWindow(lwoh); for(i=0; i<2; i++) { GtkWidget *hbox = gtk_hbox_new(FALSE, 0); @@ -1666,31 +1673,32 @@ void CreatePreferencesWindow(void) activate_toggle_button(GTK_TOGGLE_BUTTON(button), Closure->ignoreIsoSize); g_signal_connect(G_OBJECT(button), "toggled", G_CALLBACK(toggle_cb), GINT_TO_POINTER(TOGGLE_SIZEDRIVE)); if(!i) gtk_box_pack_start(GTK_BOX(vbox2), hbox, FALSE, FALSE, 0); - else AddHelpWidget(lwoh, hbox); + else GuiAddHelpWidget(lwoh, hbox); } - AddHelpParagraph(lwoh, - _("Ignore image size recorded in ISO/UDF filesystem\n\n" - "When reading or scanning optical discs, the overall size of the medium " - "needs to be determined. dvdisaster will always use the image size " - "recorded in the error correction data if such data is present. " - "Otherwise, image size is queried in the following order:\n\n" - "1. Image size recorded in the ISO/UDF file system\n" - "2. Image size reported by the optical drive.\n\n" - "Using this order makes sense as image sizes reported by most drives " - "are unreliable in many cases. However in some rare cases " - "the image size recorded in the ISO/UDF filesystem is wrong. Some " - "GNU/Linux live CDs may have this problem. If you read back the ISO " - "image from such CDs and its md5sum does not match the advertised one, " - "try re-reading the image with this option turned on.\n" - "Do not blindly turn this option on as it will most likely " - "create sub optimal or corrupted ISO images, especially if you " - "plan to use the image for error correction data generation.")); + GuiAddHelpParagraph(lwoh, + _("Ignore image size recorded in ISO/UDF filesystem\n\n" + "When reading or scanning optical discs, the overall size of the medium " + "needs to be determined. dvdisaster will always use the image size " + "recorded in the error correction data if such data is present. " + "Otherwise, image size is queried in the following order:\n\n" + "1. Image size recorded in the ISO/UDF file system\n" + "2. Image size reported by the optical drive.\n\n" + "Using this order makes sense as image sizes reported by most drives " + "are unreliable in many cases. However in some rare cases " + "the image size recorded in the ISO/UDF filesystem is wrong. Some " + "GNU/Linux live CDs may have this problem. If you read back the ISO " + "image from such CDs and its md5sum does not match the advertised one, " + "try re-reading the image with this option turned on.\n" + "Do not blindly turn this option on as it will most likely " + "create sub optimal or corrupted ISO images, especially if you " + "plan to use the image for error correction data generation.")); /* DAO button */ - lwoh = CreateLabelWithOnlineHelp(_("DAO mode"), _("Assume image to be written in DAO mode (don't truncate)")); - RegisterPreferencesHelpWindow(lwoh); + lwoh = GuiCreateLabelWithOnlineHelp(_("DAO mode"), + _("Assume image to be written in DAO mode (don't truncate)")); + GuiRegisterPreferencesHelpWindow(lwoh); for(i=0; i<2; i++) { GtkWidget *hbox = gtk_hbox_new(FALSE, 0); @@ -1706,22 +1714,22 @@ void CreatePreferencesWindow(void) activate_toggle_button(GTK_TOGGLE_BUTTON(button), Closure->noTruncate); g_signal_connect(G_OBJECT(button), "toggled", G_CALLBACK(toggle_cb), GINT_TO_POINTER(TOGGLE_DAO)); if(!i) gtk_box_pack_start(GTK_BOX(vbox2), hbox, FALSE, FALSE, 0); - else AddHelpWidget(lwoh, hbox); + else GuiAddHelpWidget(lwoh, hbox); } - AddHelpParagraph(lwoh, - _("Assume DAO mode\n\n" - "Media written in \"TAO\" (\"track at once\") mode may contain two sectors " - "with pseudo read errors at the end. By default these two sectors are ignored.\n\n" + GuiAddHelpParagraph(lwoh, + _("Assume DAO mode\n\n" + "Media written in \"TAO\" (\"track at once\") mode may contain two sectors " + "with pseudo read errors at the end. By default these two sectors are ignored.\n\n" - "If you are extremely unlucky to have a \"DAO\" (\"disc at once\") medium " - "with exactly one or two real read errors at the end, dvdisaster may treat " - "this as a \"TAO\" disc and truncate the image by two sectors. In that case " - "activate this option to have the last two read errors handled correctly.\n\n" + "If you are extremely unlucky to have a \"DAO\" (\"disc at once\") medium " + "with exactly one or two real read errors at the end, dvdisaster may treat " + "this as a \"TAO\" disc and truncate the image by two sectors. In that case " + "activate this option to have the last two read errors handled correctly.\n\n" - "Tip: To avoid these problems, consider using the \"DAO / Disc at once\" " - "(sometimes also called \"SAO / Session at once\") mode for writing single " - "session media.")); + "Tip: To avoid these problems, consider using the \"DAO / Disc at once\" " + "(sometimes also called \"SAO / Session at once\") mode for writing single " + "session media.")); /*** Image format */ @@ -1734,8 +1742,9 @@ void CreatePreferencesWindow(void) /* new style missing sector marker */ - lwoh = CreateLabelWithOnlineHelp(_("Missing sector tags"), _("Use old style missing sector tags (not recommended)")); - RegisterPreferencesHelpWindow(lwoh); + lwoh = GuiCreateLabelWithOnlineHelp(_("Missing sector tags"), + _("Use old style missing sector tags (not recommended)")); + GuiRegisterPreferencesHelpWindow(lwoh); for(i=0; i<2; i++) { GtkWidget *hbox = gtk_hbox_new(FALSE, 0); @@ -1751,33 +1760,33 @@ void CreatePreferencesWindow(void) activate_toggle_button(GTK_TOGGLE_BUTTON(button), !Closure->dsmVersion); g_signal_connect(G_OBJECT(button), "toggled", G_CALLBACK(toggle_cb), GINT_TO_POINTER(TOGGLE_DSM)); if(!i) gtk_box_pack_start(GTK_BOX(vbox2), hbox, FALSE, FALSE, 0); - else AddHelpWidget(lwoh, hbox); + else GuiAddHelpWidget(lwoh, hbox); } - AddHelpParagraph(lwoh, - _("Missing sector tagging\n\n" - "Missing sectors are tagged with a special code sequence " - "in the image. By default, an improved " - "code is used which can detect some wilfully damaged " - "content. This includes media which have been created " - "from partially recovered images, and images containing " - "files from such partial media.\n" - "However only dvdisaster 0.72 and up will recognize " - "the improved tags. Activate this switch to force using the " - "older format when this image will be processed with older " - "dvdisaster versions. Otherwise the older dvdisaster versions " - "will not see any missing sectors in the resulting images.\n" - "N.b.: dvdisaster >= 0.72 will automatically recognize " - "both tag formats when reading images; setting this value " - "only affects the creation of new images.")); + GuiAddHelpParagraph(lwoh, + _("Missing sector tagging\n\n" + "Missing sectors are tagged with a special code sequence " + "in the image. By default, an improved " + "code is used which can detect some wilfully damaged " + "content. This includes media which have been created " + "from partially recovered images, and images containing " + "files from such partial media.\n" + "However only dvdisaster 0.72 and up will recognize " + "the improved tags. Activate this switch to force using the " + "older format when this image will be processed with older " + "dvdisaster versions. Otherwise the older dvdisaster versions " + "will not see any missing sectors in the resulting images.\n" + "N.b.: dvdisaster >= 0.72 will automatically recognize " + "both tag formats when reading images; setting this value " + "only affects the creation of new images.")); /** byte filling */ if(Closure->debugMode) { - lwoh = CreateLabelWithOnlineHelp(_("Filling of unreadable sectors"), - _("Fill unreadable sectors with byte:")); - RegisterPreferencesHelpWindow(lwoh); + lwoh = GuiCreateLabelWithOnlineHelp(_("Filling of unreadable sectors"), + _("Fill unreadable sectors with byte:")); + GuiRegisterPreferencesHelpWindow(lwoh); for(i=0; i<2; i++) { GtkWidget *hbox = gtk_hbox_new(FALSE, 4); @@ -1802,7 +1811,7 @@ void CreatePreferencesWindow(void) else { pc->byteCheckB = check; pc->byteEntryB = entry; - AddHelpWidget(lwoh, hbox); + GuiAddHelpWidget(lwoh, hbox); } if(Closure->fillUnreadable >= 0) @@ -1815,23 +1824,23 @@ void CreatePreferencesWindow(void) else set_widget_sensitive(entry, FALSE); } - AddHelpParagraph(lwoh, - _("Filling of unreadable sectors\n\n" + GuiAddHelpParagraph(lwoh, + _("Filling of unreadable sectors\n\n" - "dvdisaster marks unreadable sectors with a special filling pattern which " - "is very unlikely to occur in undamaged media.\n" - "In other data recovery software it is common to fill unreadable sectors " - "with a certain byte value. To allow interoperability with such programs, " - "you can specify the byte value they are using:\n")); + "dvdisaster marks unreadable sectors with a special filling pattern which " + "is very unlikely to occur in undamaged media.\n" + "In other data recovery software it is common to fill unreadable sectors " + "with a certain byte value. To allow interoperability with such programs, " + "you can specify the byte value they are using:\n")); - AddHelpListItem(lwoh, - _("0xb0 (176 decimal): for compatibility with h2cdimage published by \"c't\", " - "a German periodical.\n")); + GuiAddHelpListItem(lwoh, + _("0xb0 (176 decimal): for compatibility with h2cdimage published by \"c't\", " + "a German periodical.\n")); - AddHelpParagraph(lwoh, - _("Note: Using zero filling (0x00, decimal 0) is highly discouraged. " - "Most media contain regular zero filled sectors which can not be told apart " - "from unreadable sectors if zero filling is used.")); + GuiAddHelpParagraph(lwoh, + _("Note: Using zero filling (0x00, decimal 0) is highly discouraged. " + "Most media contain regular zero filled sectors which can not be told apart " + "from unreadable sectors if zero filling is used.")); } /*** Drive parameters page */ @@ -1843,12 +1852,12 @@ void CreatePreferencesWindow(void) frame = gtk_frame_new(_utf("Drive initialisation")); gtk_box_pack_start(GTK_BOX(vbox), frame, FALSE, FALSE, 0); - lwoh = CreateLabelWithOnlineHelp(_("Drive initialisation"), - _("Wait")); - RegisterPreferencesHelpWindow(lwoh); + lwoh = GuiCreateLabelWithOnlineHelp(_("Drive initialisation"), + _("Wait")); + GuiRegisterPreferencesHelpWindow(lwoh); - lwoh_clone = CloneLabelWithOnlineHelp(lwoh, _("seconds for drive to spin up")); - RegisterPreferencesHelpWindow(lwoh_clone); + lwoh_clone = GuiCloneLabelWithOnlineHelp(lwoh, _("seconds for drive to spin up")); + GuiRegisterPreferencesHelpWindow(lwoh_clone); for(i=0; i<2; i++) { GtkWidget *hbox = gtk_hbox_new(FALSE, 4); @@ -1872,14 +1881,14 @@ void CreatePreferencesWindow(void) } else { pc->spinUpB = spin; - AddHelpWidget(lwoh, hbox); + GuiAddHelpWidget(lwoh, hbox); } } - AddHelpParagraph(lwoh, - _("Drive initialisation\n\n" - "Waits the specified amount of seconds for letting the drive spin up. " - "This avoids speed jumps at the beginning of the reading curve.")); + GuiAddHelpParagraph(lwoh, + _("Drive initialisation\n\n" + "Waits the specified amount of seconds for letting the drive spin up. " + "This avoids speed jumps at the beginning of the reading curve.")); /** Drive raw reading parameters */ @@ -1892,8 +1901,9 @@ void CreatePreferencesWindow(void) /* Raw reading mode */ - lwoh = CreateLabelWithOnlineHelp(_("Raw reading mode"), _("Raw reading mode: ")); - RegisterPreferencesHelpWindow(lwoh); + lwoh = GuiCreateLabelWithOnlineHelp(_("Raw reading mode"), + _("Raw reading mode: ")); + GuiRegisterPreferencesHelpWindow(lwoh); for(i=0; i<2; i++) { GtkWidget *hbox = gtk_hbox_new(FALSE, 4); @@ -1954,42 +1964,42 @@ void CreatePreferencesWindow(void) } if(!i) gtk_box_pack_start(GTK_BOX(vbox2), hbox, FALSE, FALSE, 0); - else AddHelpWidget(lwoh, hbox); + else GuiAddHelpWidget(lwoh, hbox); } - AddHelpParagraph(lwoh, - _("Raw reading mode\n\n" - "There are several ways to put the drive into a mode " - "which transfers partially read data from defective sectors:\n\n" - "0x20 This is the recommended mode. " - "The drive tries to apply " - "the built-in error correction to the best possible extent " - "before transferring a defective sector.\n\n" - "0x21 In this mode the drive skips the last stage " - "of its internal error correction and returns the " - "uncorrected sector instead. This may result in sectors " - "being tagged and processed as defective which would come " - "out good in other reading modes, causing unnecessary " - "work or even uncorrectable sectors.\n" - "However some drives appear to be unable to transfer data " - "in mode 0x20, but can do so in mode 0x21, so this is your " - "last resort then. Also, if sectors are not recoverable " - "after reading and caching sectors in mode 0x20, then adding " - "some mode 0x21 reads to the cache might deliver additional information.\n\n" - "0x01 Some drives do the right thing when given this value, " - "although this makes no sense according to the SCSI specs. Try entering " - "this value in the \"other\" field if the other choices do not work. " - "See the mode page 01h documentation in chapter 6 of MMC3 or later " - "for additional information.")); + GuiAddHelpParagraph(lwoh, + _("Raw reading mode\n\n" + "There are several ways to put the drive into a mode " + "which transfers partially read data from defective sectors:\n\n" + "0x20 This is the recommended mode. " + "The drive tries to apply " + "the built-in error correction to the best possible extent " + "before transferring a defective sector.\n\n" + "0x21 In this mode the drive skips the last stage " + "of its internal error correction and returns the " + "uncorrected sector instead. This may result in sectors " + "being tagged and processed as defective which would come " + "out good in other reading modes, causing unnecessary " + "work or even uncorrectable sectors.\n" + "However some drives appear to be unable to transfer data " + "in mode 0x20, but can do so in mode 0x21, so this is your " + "last resort then. Also, if sectors are not recoverable " + "after reading and caching sectors in mode 0x20, then adding " + "some mode 0x21 reads to the cache might deliver additional information.\n\n" + "0x01 Some drives do the right thing when given this value, " + "although this makes no sense according to the SCSI specs. Try entering " + "this value in the \"other\" field if the other choices do not work. " + "See the mode page 01h documentation in chapter 6 of MMC3 or later " + "for additional information.")); /* Firmware rereads */ - lwoh = CreateLabelWithOnlineHelp(_("Internal read attempts"), - _("Reread defective sectors")); - RegisterPreferencesHelpWindow(lwoh); + lwoh = GuiCreateLabelWithOnlineHelp(_("Internal read attempts"), + _("Reread defective sectors")); + GuiRegisterPreferencesHelpWindow(lwoh); - lwoh_clone = CloneLabelWithOnlineHelp(lwoh, _("times")); - RegisterPreferencesHelpWindow(lwoh_clone); + lwoh_clone = GuiCloneLabelWithOnlineHelp(lwoh, _("times")); + GuiRegisterPreferencesHelpWindow(lwoh_clone); for(i=0; i<2; i++) { GtkWidget *hbox = gtk_hbox_new(FALSE, 4); @@ -2014,30 +2024,30 @@ void CreatePreferencesWindow(void) } else { pc->internalAttemptsB = spin; - AddHelpWidget(lwoh, hbox); + GuiAddHelpWidget(lwoh, hbox); } } - AddHelpParagraph(lwoh, - _("Internal read attempts\n\n" - "The drive firmware usually retries unreadable sectors " - "a few times before giving up and returning a read error.\n" - "But it is usually more efficient to manage the reading " - "attempts from the client software, e.g. through the " - "settings in the \"Read attempts\" preferences tab.\n" - "Lowering this value to 0 or 1 can speed up processing " - "of damaged media and reduce the drive wear; however " - "most drives will simply ignore what you enter here.\n" - "Use the value -1 to leave the drive at its default setting.")); + GuiAddHelpParagraph(lwoh, + _("Internal read attempts\n\n" + "The drive firmware usually retries unreadable sectors " + "a few times before giving up and returning a read error.\n" + "But it is usually more efficient to manage the reading " + "attempts from the client software, e.g. through the " + "settings in the \"Read attempts\" preferences tab.\n" + "Lowering this value to 0 or 1 can speed up processing " + "of damaged media and reduce the drive wear; however " + "most drives will simply ignore what you enter here.\n" + "Use the value -1 to leave the drive at its default setting.")); /* Fatal error handling */ frame = gtk_frame_new(_utf("Fatal error handling")); gtk_box_pack_start(GTK_BOX(vbox), frame, FALSE, FALSE, 0); - lwoh = CreateLabelWithOnlineHelp(_("Fatal error handling"), - _("Ignore fatal errors")); - RegisterPreferencesHelpWindow(lwoh); + lwoh = GuiCreateLabelWithOnlineHelp(_("Fatal error handling"), + _("Ignore fatal errors")); + GuiRegisterPreferencesHelpWindow(lwoh); for(i=0; i<2; i++) { GtkWidget *hbox = gtk_hbox_new(FALSE, 4); @@ -2058,27 +2068,27 @@ void CreatePreferencesWindow(void) else { pc->fatalSenseB = toggle; gtk_box_pack_start(GTK_BOX(hbox), lwoh->normalLabel, FALSE, FALSE, 0); - AddHelpWidget(lwoh, hbox); + GuiAddHelpWidget(lwoh, hbox); } } - AddHelpParagraph(lwoh, - _("Fatal error handling\n\n" - "By default dvdisaster stops reading when the drive " - "reports a fatal error. This prevents further fruitless " - "read attempts and possible damage to the drive.\n" - "However some drives produce unfounded fatal messages. " - "For such drives ignoring fatal errors may be needed to " - "do uninterrupted reading of damaged media.")); + GuiAddHelpParagraph(lwoh, + _("Fatal error handling\n\n" + "By default dvdisaster stops reading when the drive " + "reports a fatal error. This prevents further fruitless " + "read attempts and possible damage to the drive.\n" + "However some drives produce unfounded fatal messages. " + "For such drives ignoring fatal errors may be needed to " + "do uninterrupted reading of damaged media.")); /* Eject medium */ frame = gtk_frame_new(_utf("Media ejection")); gtk_box_pack_start(GTK_BOX(vbox), frame, FALSE, FALSE, 0); - lwoh = CreateLabelWithOnlineHelp(_("Eject medium after successful read"), - _("Eject medium after successful read")); - RegisterPreferencesHelpWindow(lwoh); + lwoh = GuiCreateLabelWithOnlineHelp(_("Eject medium after successful read"), + _("Eject medium after successful read")); + GuiRegisterPreferencesHelpWindow(lwoh); for(i=0; i<2; i++) { GtkWidget *hbox = gtk_hbox_new(FALSE, 4); @@ -2099,18 +2109,18 @@ void CreatePreferencesWindow(void) else { pc->ejectB = toggle; gtk_box_pack_start(GTK_BOX(hbox), lwoh->normalLabel, FALSE, FALSE, 0); - AddHelpWidget(lwoh, hbox); + GuiAddHelpWidget(lwoh, hbox); } } - AddHelpParagraph(lwoh, - _("Medium ejection\n\n" - "Activate this option to have the medium ejected after " - "a successful read or scan operation.\n\n" - "Note that the desktop environment " - "may prevent other applications from ejecting media. " - "In that case eject the medium through the desktop " - "user interface.")); + GuiAddHelpParagraph(lwoh, + _("Medium ejection\n\n" + "Activate this option to have the medium ejected after " + "a successful read or scan operation.\n\n" + "Note that the desktop environment " + "may prevent other applications from ejecting media. " + "In that case eject the medium through the desktop " + "user interface.")); /*** "Read attempts" page */ @@ -2127,8 +2137,9 @@ void CreatePreferencesWindow(void) /* Raw verify */ - lwoh = CreateLabelWithOnlineHelp(_("Raw reading"), _("Read and analyze raw sectors")); - RegisterPreferencesHelpWindow(lwoh); + lwoh = GuiCreateLabelWithOnlineHelp(_("Raw reading"), + _("Read and analyze raw sectors")); + GuiRegisterPreferencesHelpWindow(lwoh); for(i=0; i<2; i++) { GtkWidget *hbox = gtk_hbox_new(FALSE, 0); @@ -2145,31 +2156,32 @@ void CreatePreferencesWindow(void) g_signal_connect(G_OBJECT(button), "toggled", G_CALLBACK(toggle_cb), GINT_TO_POINTER(TOGGLE_RAW)); if(!i) gtk_box_pack_start(GTK_BOX(vbox2), hbox, FALSE, FALSE, 0); - else AddHelpWidget(lwoh, hbox); + else GuiAddHelpWidget(lwoh, hbox); } - AddHelpParagraph(lwoh, - _("Raw reading (affects CD media only)\n\n" - "Activating this option has several effects:\n\n" - "C2 quality scanning will be performed when supported " - "by the drive.\n\n" - "Media sectors are read in raw mode. The L-EC P/Q " - "vectors, EDC checksum and MSF address contained " - "in the raw data are checked to make sure that the " - "sector was correctly read.\n\n" - "Additional data recovery heuristics and raw sector " - "caching becomes available if either\n" - "- adaptive reading is used, or\n" - "- linear reading is configured to skip 0 sectors after a read error.\n" - "Raw sector caching also needs checking of the respective option." - )); + GuiAddHelpParagraph(lwoh, + _("Raw reading (affects CD media only)\n\n" + "Activating this option has several effects:\n\n" + "C2 quality scanning will be performed when supported " + "by the drive.\n\n" + "Media sectors are read in raw mode. The L-EC P/Q " + "vectors, EDC checksum and MSF address contained " + "in the raw data are checked to make sure that the " + "sector was correctly read.\n\n" + "Additional data recovery heuristics and raw sector " + "caching becomes available if either\n" + "- adaptive reading is used, or\n" + "- linear reading is configured to skip 0 sectors after a read error.\n" + "Raw sector caching also needs checking of the respective option." + )); /* Minimum reading attempts */ - lwoh = CreateLabelWithOnlineHelp(_("Minimum number of reading attempts"), "ignore"); - RegisterPreferencesHelpWindow(lwoh); - LockLabelSize(GTK_LABEL(lwoh->normalLabel), _utf("Min. %d reading attempts per sector"), 99); - LockLabelSize(GTK_LABEL(lwoh->linkLabel), _utf("Min. %d reading attempts per sector"), 99); + lwoh = GuiCreateLabelWithOnlineHelp(_("Minimum number of reading attempts"), + "ignore"); + GuiRegisterPreferencesHelpWindow(lwoh); + GuiLockLabelSize(lwoh->normalLabel, _utf("Min. %d reading attempts per sector"), 99); + GuiLockLabelSize(lwoh->linkLabel, _utf("Min. %d reading attempts per sector"), 99); pc->minAttemptsScaleLwoh = lwoh; pc->minAttemptsScaleInfoA = g_malloc0(sizeof(non_linear_info)); @@ -2192,23 +2204,24 @@ void CreatePreferencesWindow(void) else pc->minAttemptsScaleB = scale; if(!i) gtk_box_pack_start(GTK_BOX(vbox2), scale_box, FALSE, FALSE, 0); - else AddHelpWidget(lwoh, scale_box); + else GuiAddHelpWidget(lwoh, scale_box); } - AddHelpParagraph(lwoh, - _("Minimum number of reading attempts\n\n" - "If an unreadable sector is encountered, " - "dvdisaster tries to re-read it the given number of times.\n\n" - "Increasing the number of reading attempts may improve data recovery " - "on marginal media, but will also increase processing time and " - "mechanical wear on the drive.")); + GuiAddHelpParagraph(lwoh, + _("Minimum number of reading attempts\n\n" + "If an unreadable sector is encountered, " + "dvdisaster tries to re-read it the given number of times.\n\n" + "Increasing the number of reading attempts may improve data recovery " + "on marginal media, but will also increase processing time and " + "mechanical wear on the drive.")); /* Maximum reading attempts */ - lwoh = CreateLabelWithOnlineHelp(_("Maximum number of reading attempts"), "ignore"); - RegisterPreferencesHelpWindow(lwoh); - LockLabelSize(GTK_LABEL(lwoh->normalLabel), _utf("Max. %d reading attempts per sector"), 100); - LockLabelSize(GTK_LABEL(lwoh->linkLabel), _utf("Max. %d reading attempts per sector"), 100); + lwoh = GuiCreateLabelWithOnlineHelp(_("Maximum number of reading attempts"), + "ignore"); + GuiRegisterPreferencesHelpWindow(lwoh); + GuiLockLabelSize(lwoh->normalLabel, _utf("Max. %d reading attempts per sector"), 100); + GuiLockLabelSize(lwoh->linkLabel, _utf("Max. %d reading attempts per sector"), 100); pc->maxAttemptsScaleLwoh = lwoh; pc->maxAttemptsScaleInfoA = g_malloc0(sizeof(non_linear_info)); @@ -2231,34 +2244,35 @@ void CreatePreferencesWindow(void) else pc->maxAttemptsScaleB = scale; if(!i) gtk_box_pack_start(GTK_BOX(vbox2), scale_box, FALSE, FALSE, 0); - else AddHelpWidget(lwoh, scale_box); + else GuiAddHelpWidget(lwoh, scale_box); } - AddHelpParagraph(lwoh, - _("Maximum number of reading attempts\n\n" - "When the minimum number of reading attempts is reached " - "without success, dvdisaster might choose to perform additional " - "reading attempts up to this number.\n\n" + GuiAddHelpParagraph(lwoh, + _("Maximum number of reading attempts\n\n" + "When the minimum number of reading attempts is reached " + "without success, dvdisaster might choose to perform additional " + "reading attempts up to this number.\n\n" - "The decision to do more attempts depends on the quality of " - "data gathered so far, which in turn is influenced by the " - "capabilities of your optical drive and the operating system. " - "So depending on your configuration, you may or " - "may not see dvdisaster using the maximum value." - )); + "The decision to do more attempts depends on the quality of " + "data gathered so far, which in turn is influenced by the " + "capabilities of your optical drive and the operating system. " + "So depending on your configuration, you may or " + "may not see dvdisaster using the maximum value." + )); /* Jump selector */ - lwoh = CreateLabelWithOnlineHelp(_("Treatment of unreadable areas"), "ignore"); - RegisterPreferencesHelpWindow(lwoh); - if( GetLabelWidth(GTK_LABEL(lwoh->normalLabel), _utf("Skip %d sectors after read error"), 20480) - > GetLabelWidth(GTK_LABEL(lwoh->normalLabel), _utf("Stop reading when unreadable intervals < %d"), 20480)) - { LockLabelSize(GTK_LABEL(lwoh->normalLabel), _utf("Skip %d sectors after read error"), 20480); - LockLabelSize(GTK_LABEL(lwoh->linkLabel), _utf("Skip %d sectors after read error"), 20480); + lwoh = GuiCreateLabelWithOnlineHelp(_("Treatment of unreadable areas"), + "ignore"); + GuiRegisterPreferencesHelpWindow(lwoh); + if( GuiGetLabelWidth(GTK_LABEL(lwoh->normalLabel), _utf("Skip %d sectors after read error"), 20480) + > GuiGetLabelWidth(GTK_LABEL(lwoh->normalLabel), _utf("Stop reading when unreadable intervals < %d"), 20480)) + { GuiLockLabelSize(lwoh->normalLabel, _utf("Skip %d sectors after read error"), 20480); + GuiLockLabelSize(lwoh->linkLabel, _utf("Skip %d sectors after read error"), 20480); } else - { LockLabelSize(GTK_LABEL(lwoh->normalLabel), _utf("Stop reading when unreadable intervals < %d"), 20480); - LockLabelSize(GTK_LABEL(lwoh->linkLabel), _utf("Stop reading when unreadable intervals < %d"), 20480); + { GuiLockLabelSize(lwoh->normalLabel, _utf("Stop reading when unreadable intervals < %d"), 20480); + GuiLockLabelSize(lwoh->linkLabel, _utf("Stop reading when unreadable intervals < %d"), 20480); } pc->jumpScaleLwoh = lwoh; @@ -2285,44 +2299,44 @@ void CreatePreferencesWindow(void) else pc->jumpScaleB = scale; if(!i) gtk_box_pack_start(GTK_BOX(vbox2), scale_box, FALSE, FALSE, 0); - else AddHelpWidget(lwoh, scale_box); + else GuiAddHelpWidget(lwoh, scale_box); } - AddHelpParagraph(lwoh, - _("Treatment of unreadable areas\n\n" - "Defective media usually contain numerous read errors in a contigous region. " - "Skipping sectors after a read error reduces the processing time and the " - "mechanical wear on the drive, but leaves larger gaps in the image file.\n\n" - "Effects on the linear reading strategy:")); + GuiAddHelpParagraph(lwoh, + _("Treatment of unreadable areas\n\n" + "Defective media usually contain numerous read errors in a contigous region. " + "Skipping sectors after a read error reduces the processing time and the " + "mechanical wear on the drive, but leaves larger gaps in the image file.\n\n" + "Effects on the linear reading strategy:")); - AddHelpListItem(lwoh, - _("Skipping a large number of sectors (e.g. 1024) gives a quick overview of " - "damaged areas, but will usually not collect enough data for repairing the image.")); + GuiAddHelpListItem(lwoh, + _("Skipping a large number of sectors (e.g. 1024) gives a quick overview of " + "damaged areas, but will usually not collect enough data for repairing the image.")); - AddHelpListItem(lwoh, - _("Smaller values like 16, 32 or 64 are a good trade-off: The processing time will be" - "considerably shortened, but still enough data for repairing the image is collected.\n")); + GuiAddHelpListItem(lwoh, + _("Smaller values like 16, 32 or 64 are a good trade-off: The processing time will be" + "considerably shortened, but still enough data for repairing the image is collected.\n")); - AddHelpParagraph(lwoh, - _("The adaptive reading strategy uses this setting only if no error correction data " - "is available. In that case the reading process will stop when no unread areas " - "larger than the selected size remain. Values smaller than 128 are not recommended " - "as they cause the drive to carry out lots of laser head repositioning during the " - "final phase of the reading process. If adaptive reading with a setting of 128 is not " - "sufficient, try reading the remaining sectors with an additional linear reading pass.\n\n" + GuiAddHelpParagraph(lwoh, + _("The adaptive reading strategy uses this setting only if no error correction data " + "is available. In that case the reading process will stop when no unread areas " + "larger than the selected size remain. Values smaller than 128 are not recommended " + "as they cause the drive to carry out lots of laser head repositioning during the " + "final phase of the reading process. If adaptive reading with a setting of 128 is not " + "sufficient, try reading the remaining sectors with an additional linear reading pass.\n\n" - "On DVD and BD media read errors do usually extend over at least 16 sectors for technical " - "reasons. Therefore selecting a value less than 16 is not recommended for DVD and BD." - )); + "On DVD and BD media read errors do usually extend over at least 16 sectors for technical " + "reasons. Therefore selecting a value less than 16 is not recommended for DVD and BD." + )); /** Media re-reads */ frame = gtk_frame_new(_utf("Media read attempts")); gtk_box_pack_start(GTK_BOX(vbox), frame, FALSE, FALSE, 0); - lwoh = CreateLabelWithOnlineHelp(_("Media read attempts"), - _("Read the whole medium ")); - RegisterPreferencesHelpWindow(lwoh); + lwoh = GuiCreateLabelWithOnlineHelp(_("Media read attempts"), + _("Read the whole medium ")); + GuiRegisterPreferencesHelpWindow(lwoh); for(i=0; i<2; i++) { GtkWidget *hbox = gtk_hbox_new(FALSE, 0); @@ -2347,15 +2361,15 @@ void CreatePreferencesWindow(void) } else { pc->readMediumB = spin; - AddHelpWidget(lwoh, hbox); + GuiAddHelpWidget(lwoh, hbox); } } - AddHelpParagraph(lwoh, - _("Media read attempts for the linear reading strategy\n\n" - "If unreadable sectors remain after reading the medium from start to end, " - "the medium is read again up to he given number of times.\n\n" - "Only the missing sectors will be tried in the additional reading passes.")); + GuiAddHelpParagraph(lwoh, + _("Media read attempts for the linear reading strategy\n\n" + "If unreadable sectors remain after reading the medium from start to end, " + "the medium is read again up to he given number of times.\n\n" + "Only the missing sectors will be tried in the additional reading passes.")); /** Defective sector caching */ @@ -2368,9 +2382,9 @@ void CreatePreferencesWindow(void) /* Toggle button */ - lwoh = CreateLabelWithOnlineHelp(_("Raw sector caching"), - _("Keep uncorrectable raw sectors in the following directory:")); - RegisterPreferencesHelpWindow(lwoh); + lwoh = GuiCreateLabelWithOnlineHelp(_("Raw sector caching"), + _("Keep uncorrectable raw sectors in the following directory:")); + GuiRegisterPreferencesHelpWindow(lwoh); for(i=0; i<2; i++) { GtkWidget *table = gtk_table_new(3,2,FALSE); @@ -2414,31 +2428,31 @@ void CreatePreferencesWindow(void) g_signal_connect(G_OBJECT(button), "toggled", G_CALLBACK(toggle_cb), GINT_TO_POINTER(TOGGLE_CACHE_DEFECTIVE)); if(!i) gtk_box_pack_start(GTK_BOX(vbox2), table, FALSE, FALSE, 0); - else AddHelpWidget(lwoh, table); + else GuiAddHelpWidget(lwoh, table); } - AddHelpParagraph(lwoh, - _("Raw sector caching\n\n" - "Some drives are capable of delivering partial data from defective " - "sectors. While one partial sector is useless by itself, " - "20 or more of them might combine into a complete sector.\n\n" - "If you activate this button, dvdisaster will collect partial " - "sectors in the selected directory. " - "When enough parts have been gathered in subsequent reading passes, " - "the respective sector is automatically recombined from the " - "stored parts.\n\n" - "Please note that not all drives and operating systems " - "support reading partial data. " - "It is not an error of the cache directory remains empty.\n" - "dvdisaster will not remove any files from the given directory; " - "you need to clean it up manually after a successful medium recovery." - )); + GuiAddHelpParagraph(lwoh, + _("Raw sector caching\n\n" + "Some drives are capable of delivering partial data from defective " + "sectors. While one partial sector is useless by itself, " + "20 or more of them might combine into a complete sector.\n\n" + "If you activate this button, dvdisaster will collect partial " + "sectors in the selected directory. " + "When enough parts have been gathered in subsequent reading passes, " + "the respective sector is automatically recombined from the " + "stored parts.\n\n" + "Please note that not all drives and operating systems " + "support reading partial data. " + "It is not an error of the cache directory remains empty.\n" + "dvdisaster will not remove any files from the given directory; " + "you need to clean it up manually after a successful medium recovery." + )); /* Sector cache file prefix */ - lwoh = CreateLabelWithOnlineHelp(_("Raw sector file prefix"), - _("Raw sector file prefix: ")); - RegisterPreferencesHelpWindow(lwoh); + lwoh = GuiCreateLabelWithOnlineHelp(_("Raw sector file prefix"), + _("Raw sector file prefix: ")); + GuiRegisterPreferencesHelpWindow(lwoh); for(i=0; i<2; i++) { GtkWidget *hbox = gtk_hbox_new(FALSE, 0); @@ -2456,13 +2470,13 @@ void CreatePreferencesWindow(void) else pc->cacheDefectivePrefixB = entry; if(!i) gtk_box_pack_start(GTK_BOX(vbox2), hbox, FALSE, FALSE, 0); - else AddHelpWidget(lwoh, hbox); + else GuiAddHelpWidget(lwoh, hbox); } - AddHelpParagraph(lwoh, - _("Raw sector file prefix\n\n" - "Use a different prefix for each disc you are trying " - "to recover, e.g. \"disc1-\" and so on.")); + GuiAddHelpParagraph(lwoh, + _("Raw sector file prefix\n\n" + "Use a different prefix for each disc you are trying " + "to recover, e.g. \"disc1-\" and so on.")); /*** "Error correction" page */ @@ -2470,9 +2484,9 @@ void CreatePreferencesWindow(void) vbox = create_page(notebook, _utf("Error correction")); - lwoh = CreateLabelWithOnlineHelp(_("Error correction method"), - _("Storage method:")); - RegisterPreferencesHelpWindow(lwoh); + lwoh = GuiCreateLabelWithOnlineHelp(_("Error correction method"), + _("Storage method:")); + GuiRegisterPreferencesHelpWindow(lwoh); for(i=0; i<2; i++) { GtkWidget *hbox = gtk_hbox_new(FALSE, 4); @@ -2507,30 +2521,29 @@ void CreatePreferencesWindow(void) } else { pc->methodChooserB = chooser; - AddHelpWidget(lwoh, hbox); + GuiAddHelpWidget(lwoh, hbox); } } - AddHelpParagraph(lwoh, _("Error correction method\n\n" - "dvdisaster creates error correction data which is used to recover " - "unreadable sectors if the disc becomes damaged later on. There are " - "different codecs and ways available for storing the error correction " - "information:\n")); + GuiAddHelpParagraph(lwoh, _("Error correction method\n\n" + "dvdisaster creates error correction data which is used to recover " + "unreadable sectors if the disc becomes damaged later on. There are " + "different codecs and ways available for storing the error correction " + "information:\n")); - AddHelpListItem(lwoh, _("The RS01 codec\n" - "RS01 is the recommended codec for storing error correction data in separate files.\n")); + GuiAddHelpListItem(lwoh, _("The RS01 codec\n" + "RS01 is the recommended codec for storing error correction data in separate files.\n")); - AddHelpListItem(lwoh, _("The RS02 codec\n" - "RS02 is the currently recommended codec for " - "augmenting images with error correction data.\n")); - - AddHelpListItem(lwoh, _("The RS03 codec (Warning: experimental)\n" - "RS03 can either store error correction data in a separate file " - "or augment the image with it. It provides multithreading " - "to scale with multicore processors and contains some subtle improvements " - "over RS01 and RS02. However it should not be used for productive work " - "unless a stable version is released with dvdisaster V0.80.")); + GuiAddHelpListItem(lwoh, _("The RS02 codec\n" + "RS02 is the currently recommended codec for " + "augmenting images with error correction data.\n")); + GuiAddHelpListItem(lwoh, _("The RS03 codec (Warning: experimental)\n" + "RS03 can either store error correction data in a separate file " + "or augment the image with it. It provides multithreading " + "to scale with multicore processors and contains some subtle improvements " + "over RS01 and RS02. However it should not be used for productive work " + "unless a stable version is released with dvdisaster V0.80.")); /* sub pages for individual method configuration */ @@ -2573,8 +2586,9 @@ void CreatePreferencesWindow(void) gtk_container_set_border_width(GTK_CONTAINER(vbox2), 10); gtk_container_add(GTK_CONTAINER(frame), vbox2); - lwoh = CreateLabelWithOnlineHelp(_("Automatic file suffixes"), _("Automatically add .iso and .ecc file suffixes")); - RegisterPreferencesHelpWindow(lwoh); + lwoh = GuiCreateLabelWithOnlineHelp(_("Automatic file suffixes"), + _("Automatically add .iso and .ecc file suffixes")); + GuiRegisterPreferencesHelpWindow(lwoh); for(i=0; i<2; i++) { GtkWidget *hbox = gtk_hbox_new(FALSE, 0); @@ -2593,14 +2607,14 @@ void CreatePreferencesWindow(void) } else { pc->suffixB = button; - AddHelpWidget(lwoh, hbox); + GuiAddHelpWidget(lwoh, hbox); } } - AddHelpParagraph(lwoh, - _("Automatically add file suffixes\n\n" - "When this switch is set, files will be automatically appended with \".iso\" " - "or \".ecc\" suffixes if no other file name extension is already present.")); + GuiAddHelpParagraph(lwoh, + _("Automatically add file suffixes\n\n" + "When this switch is set, files will be automatically appended with \".iso\" " + "or \".ecc\" suffixes if no other file name extension is already present.")); /*** Automatic file creation and deletion */ @@ -2613,8 +2627,9 @@ void CreatePreferencesWindow(void) /* automatic creation */ - lwoh = CreateLabelWithOnlineHelp(_("Automatic .ecc file creation"), _("Create error correction file after reading image")); - RegisterPreferencesHelpWindow(lwoh); + lwoh = GuiCreateLabelWithOnlineHelp(_("Automatic .ecc file creation"), + _("Create error correction file after reading image")); + GuiRegisterPreferencesHelpWindow(lwoh); for(i=0; i<2; i++) { GtkWidget *hbox = gtk_hbox_new(FALSE, 0); @@ -2632,20 +2647,21 @@ void CreatePreferencesWindow(void) } else { pc->readAndCreateButtonB = button; - AddHelpWidget(lwoh, hbox); + GuiAddHelpWidget(lwoh, hbox); } } - AddHelpParagraph(lwoh, - _("Automatic error correction file creation\n\n" - "Automatically creates an error correction file after reading an image. " - "Together with the \"Remove image\" option this will speed up error correction " - "file generation for a series of different media.")); + GuiAddHelpParagraph(lwoh, + _("Automatic error correction file creation\n\n" + "Automatically creates an error correction file after reading an image. " + "Together with the \"Remove image\" option this will speed up error correction " + "file generation for a series of different media.")); /* automatic deletion */ - lwoh = CreateLabelWithOnlineHelp(_("Automatic image file removal"), _("Remove image after error correction file creation")); - RegisterPreferencesHelpWindow(lwoh); + lwoh = GuiCreateLabelWithOnlineHelp(_("Automatic image file removal"), + _("Remove image after error correction file creation")); + GuiRegisterPreferencesHelpWindow(lwoh); for(i=0; i<2; i++) { GtkWidget *hbox = gtk_hbox_new(FALSE, 0); @@ -2663,14 +2679,14 @@ void CreatePreferencesWindow(void) } else { pc->unlinkImageButtonB = button; - AddHelpWidget(lwoh, hbox); + GuiAddHelpWidget(lwoh, hbox); } } - AddHelpParagraph(lwoh, - _("Automatic image file removal\n\n" - "If this switch is set the image file will be deleted following the successful " - "generation of the respective error correction file.")); + GuiAddHelpParagraph(lwoh, + _("Automatic image file removal\n\n" + "If this switch is set the image file will be deleted following the successful " + "generation of the respective error correction file.")); /*** Deletion confirmation */ @@ -2683,8 +2699,9 @@ void CreatePreferencesWindow(void) /* automatic creation */ - lwoh = CreateLabelWithOnlineHelp(_("Confirm file overwriting"), _("Ask before overwriting image and ecc files")); - RegisterPreferencesHelpWindow(lwoh); + lwoh = GuiCreateLabelWithOnlineHelp(_("Confirm file overwriting"), + _("Ask before overwriting image and ecc files")); + GuiRegisterPreferencesHelpWindow(lwoh); for(i=0; i<2; i++) { GtkWidget *hbox = gtk_hbox_new(FALSE, 0); @@ -2702,15 +2719,15 @@ void CreatePreferencesWindow(void) } else { pc->confirmDeletionB = button; - AddHelpWidget(lwoh, hbox); + GuiAddHelpWidget(lwoh, hbox); } } - AddHelpParagraph(lwoh, - _("Ask before overwriting image and ecc files\n\n" - "dvdisaster will ask you for confirmation " - "when it is going to overwrite an existing image " - "or error correction file if this option is checked.")); + GuiAddHelpParagraph(lwoh, + _("Ask before overwriting image and ecc files\n\n" + "dvdisaster will ask you for confirmation " + "when it is going to overwrite an existing image " + "or error correction file if this option is checked.")); /*** GUI page */ @@ -2737,8 +2754,8 @@ void CreatePreferencesWindow(void) /* Green color */ - lwoh = CreateLabelWithOnlineHelp(_("Good sectors"), _("Good sector")); - RegisterPreferencesHelpWindow(lwoh); + lwoh = GuiCreateLabelWithOnlineHelp(_("Good sectors"), _("Good sector")); + GuiRegisterPreferencesHelpWindow(lwoh); for(i=0; i<2; i++) { GtkWidget *hbox = gtk_hbox_new(FALSE, 4); @@ -2756,19 +2773,19 @@ void CreatePreferencesWindow(void) else { gtk_box_pack_start(GTK_BOX(hbox), lwoh->normalLabel, FALSE, FALSE, 0); - AddHelpWidget(lwoh, hbox); + GuiAddHelpWidget(lwoh, hbox); pc->greenB = cbi; } } - AddHelpParagraph(lwoh, - _("Good sectors\n\n" - "This color indicates good sectors.")); + GuiAddHelpParagraph(lwoh, + _("Good sectors\n\n" + "This color indicates good sectors.")); /* Yellow color */ - lwoh = CreateLabelWithOnlineHelp(_("Checksum errors"), _("Checksum error")); - RegisterPreferencesHelpWindow(lwoh); + lwoh = GuiCreateLabelWithOnlineHelp(_("Checksum errors"), _("Checksum error")); + GuiRegisterPreferencesHelpWindow(lwoh); for(i=0; i<2; i++) { GtkWidget *hbox = gtk_hbox_new(FALSE, 4); @@ -2786,19 +2803,19 @@ void CreatePreferencesWindow(void) else { gtk_box_pack_start(GTK_BOX(hbox), lwoh->normalLabel, FALSE, FALSE, 0); - AddHelpWidget(lwoh, hbox); + GuiAddHelpWidget(lwoh, hbox); pc->yellowB = cbi; } } - AddHelpParagraph(lwoh, - _("Checksum errors\n\n" - "This color is used for displaying sectors with wrong check sums.")); + GuiAddHelpParagraph(lwoh, + _("Checksum errors\n\n" + "This color is used for displaying sectors with wrong check sums.")); /* Red color */ - lwoh = CreateLabelWithOnlineHelp(_("Unreadable sectors"), _("Unreadable")); - RegisterPreferencesHelpWindow(lwoh); + lwoh = GuiCreateLabelWithOnlineHelp(_("Unreadable sectors"), _("Unreadable")); + GuiRegisterPreferencesHelpWindow(lwoh); for(i=0; i<2; i++) { GtkWidget *hbox = gtk_hbox_new(FALSE, 4); @@ -2816,19 +2833,19 @@ void CreatePreferencesWindow(void) else { gtk_box_pack_start(GTK_BOX(hbox), lwoh->normalLabel, FALSE, FALSE, 0); - AddHelpWidget(lwoh, hbox); + GuiAddHelpWidget(lwoh, hbox); pc->redB = cbi; } } - AddHelpParagraph(lwoh, - _("Unreadable sectors\n\n" - "This color is used for marking unreadable sectors.")); + GuiAddHelpParagraph(lwoh, + _("Unreadable sectors\n\n" + "This color is used for marking unreadable sectors.")); /* Dark color */ - lwoh = CreateLabelWithOnlineHelp(_("Present sectors"), _("Present sector")); - RegisterPreferencesHelpWindow(lwoh); + lwoh = GuiCreateLabelWithOnlineHelp(_("Present sectors"), _("Present sector")); + GuiRegisterPreferencesHelpWindow(lwoh); for(i=0; i<2; i++) { GtkWidget *hbox = gtk_hbox_new(FALSE, 4); @@ -2846,19 +2863,19 @@ void CreatePreferencesWindow(void) else { gtk_box_pack_start(GTK_BOX(hbox), lwoh->normalLabel, FALSE, FALSE, 0); - AddHelpWidget(lwoh, hbox); + GuiAddHelpWidget(lwoh, hbox); pc->darkB = cbi; } } - AddHelpParagraph(lwoh, - _("Present sectors\n\n" - "Sectors which are already present are marked with this color.")); + GuiAddHelpParagraph(lwoh, + _("Present sectors\n\n" + "Sectors which are already present are marked with this color.")); /* Blue color */ - lwoh = CreateLabelWithOnlineHelp(_("Ignored sectors"), _("Ignored sector")); - RegisterPreferencesHelpWindow(lwoh); + lwoh = GuiCreateLabelWithOnlineHelp(_("Ignored sectors"), _("Ignored sector")); + GuiRegisterPreferencesHelpWindow(lwoh); for(i=0; i<2; i++) { GtkWidget *hbox = gtk_hbox_new(FALSE, 4); @@ -2876,20 +2893,20 @@ void CreatePreferencesWindow(void) else { gtk_box_pack_start(GTK_BOX(hbox), lwoh->normalLabel, FALSE, FALSE, 0); - AddHelpWidget(lwoh, hbox); + GuiAddHelpWidget(lwoh, hbox); pc->blueB = cbi; } } - AddHelpParagraph(lwoh, - _("Ignored sectors\n\n" - "Sectors marked with this color will not be processed " - "in the current run.")); + GuiAddHelpParagraph(lwoh, + _("Ignored sectors\n\n" + "Sectors marked with this color will not be processed " + "in the current run.")); /* White color */ - lwoh = CreateLabelWithOnlineHelp(_("Highlit sectors"), _("Highlit sector")); - RegisterPreferencesHelpWindow(lwoh); + lwoh = GuiCreateLabelWithOnlineHelp(_("Highlit sectors"), _("Highlit sector")); + GuiRegisterPreferencesHelpWindow(lwoh); for(i=0; i<2; i++) { GtkWidget *hbox = gtk_hbox_new(FALSE, 4); @@ -2907,15 +2924,15 @@ void CreatePreferencesWindow(void) else { gtk_box_pack_start(GTK_BOX(hbox), lwoh->normalLabel, FALSE, FALSE, 0); - AddHelpWidget(lwoh, hbox); + GuiAddHelpWidget(lwoh, hbox); pc->whiteB = cbi; } } - AddHelpParagraph(lwoh, - _("Highlit sectors\n\n" - "This color is used for temporarily highlighting " - "sectors during adaptive reading.")); + GuiAddHelpParagraph(lwoh, + _("Highlit sectors\n\n" + "This color is used for temporarily highlighting " + "sectors during adaptive reading.")); /** Text colors */ @@ -2929,8 +2946,8 @@ void CreatePreferencesWindow(void) /* Positive text */ - lwoh = CreateLabelWithOnlineHelp(_("Positive text"), _("Positive text")); - RegisterPreferencesHelpWindow(lwoh); + lwoh = GuiCreateLabelWithOnlineHelp(_("Positive text"), _("Positive text")); + GuiRegisterPreferencesHelpWindow(lwoh); for(i=0; i<2; i++) { GtkWidget *hbox = gtk_hbox_new(FALSE, 4); @@ -2948,19 +2965,19 @@ void CreatePreferencesWindow(void) else { gtk_box_pack_start(GTK_BOX(hbox), lwoh->normalLabel, FALSE, FALSE, 0); - AddHelpWidget(lwoh, hbox); + GuiAddHelpWidget(lwoh, hbox); pc->greenTextB = cbi; } } - AddHelpParagraph(lwoh, - _("Positive text\n\n" - "Good news are printed in this color.")); + GuiAddHelpParagraph(lwoh, + _("Positive text\n\n" + "Good news are printed in this color.")); /* Positive text */ - lwoh = CreateLabelWithOnlineHelp(_("Negative text"), _("Negative text")); - RegisterPreferencesHelpWindow(lwoh); + lwoh = GuiCreateLabelWithOnlineHelp(_("Negative text"), _("Negative text")); + GuiRegisterPreferencesHelpWindow(lwoh); for(i=0; i<2; i++) { GtkWidget *hbox = gtk_hbox_new(FALSE, 4); @@ -2978,14 +2995,14 @@ void CreatePreferencesWindow(void) else { gtk_box_pack_start(GTK_BOX(hbox), lwoh->normalLabel, FALSE, FALSE, 0); - AddHelpWidget(lwoh, hbox); + GuiAddHelpWidget(lwoh, hbox); pc->redTextB = cbi; } } - AddHelpParagraph(lwoh, - _("Negative text\n\n" - "Bad news are printed in this color.")); + GuiAddHelpParagraph(lwoh, + _("Negative text\n\n" + "Bad news are printed in this color.")); /** Curve colors */ @@ -2998,8 +3015,8 @@ void CreatePreferencesWindow(void) /* Reading speed curve */ - lwoh = CreateLabelWithOnlineHelp(_("Curve color"), _("Curve color")); - RegisterPreferencesHelpWindow(lwoh); + lwoh = GuiCreateLabelWithOnlineHelp(_("Curve color"), _("Curve color")); + GuiRegisterPreferencesHelpWindow(lwoh); for(i=0; i<2; i++) { GtkWidget *hbox = gtk_hbox_new(FALSE, 4); @@ -3017,20 +3034,20 @@ void CreatePreferencesWindow(void) else { gtk_box_pack_start(GTK_BOX(hbox), lwoh->normalLabel, FALSE, FALSE, 0); - AddHelpWidget(lwoh, hbox); + GuiAddHelpWidget(lwoh, hbox); pc->curveColorB = cbi; } } - AddHelpParagraph(lwoh, - _("Curve color and labels\n\n" - "The reading speed curve, its left side and top labels " - "are printed in this color.")); + GuiAddHelpParagraph(lwoh, + _("Curve color and labels\n\n" + "The reading speed curve, its left side and top labels " + "are printed in this color.")); /* Logarithmic scale (C2 errors) */ - lwoh = CreateLabelWithOnlineHelp(_("C2 errors"), _("C2 errors")); - RegisterPreferencesHelpWindow(lwoh); + lwoh = GuiCreateLabelWithOnlineHelp(_("C2 errors"), _("C2 errors")); + GuiRegisterPreferencesHelpWindow(lwoh); for(i=0; i<2; i++) { GtkWidget *hbox = gtk_hbox_new(FALSE, 4); @@ -3048,21 +3065,21 @@ void CreatePreferencesWindow(void) else { gtk_box_pack_start(GTK_BOX(hbox), lwoh->normalLabel, FALSE, FALSE, 0); - AddHelpWidget(lwoh, hbox); + GuiAddHelpWidget(lwoh, hbox); pc->logColorB = cbi; } } - AddHelpParagraph(lwoh, - _("C2 error color\n\n" - "The logarithmic bar graph showing the C2 errors " - "is rendered in this color during the \"read\" " - "and \"scan\" operations.")); + GuiAddHelpParagraph(lwoh, + _("C2 error color\n\n" + "The logarithmic bar graph showing the C2 errors " + "is rendered in this color during the \"read\" " + "and \"scan\" operations.")); /* Error correction load */ - lwoh = CreateLabelWithOnlineHelp(_("Error correction load"), _("Error correction load")); - RegisterPreferencesHelpWindow(lwoh); + lwoh = GuiCreateLabelWithOnlineHelp(_("Error correction load"), _("Error correction load")); + GuiRegisterPreferencesHelpWindow(lwoh); for(i=0; i<2; i++) { GtkWidget *hbox = gtk_hbox_new(FALSE, 4); @@ -3080,15 +3097,15 @@ void CreatePreferencesWindow(void) else { gtk_box_pack_start(GTK_BOX(hbox), lwoh->normalLabel, FALSE, FALSE, 0); - AddHelpWidget(lwoh, hbox); + GuiAddHelpWidget(lwoh, hbox); pc->barColorB = cbi; } } - AddHelpParagraph(lwoh, - _("Error correction load\n\n" - "The bar graph showing the error correction load " - "is rendered in this color during the \"Fix\" operation.")); + GuiAddHelpParagraph(lwoh, + _("Error correction load\n\n" + "The bar graph showing the error correction load " + "is rendered in this color during the \"Fix\" operation.")); /* Padding space */ #if 0 @@ -3109,8 +3126,9 @@ void CreatePreferencesWindow(void) frame = gtk_frame_new(_utf("Dialog boxes")); gtk_box_pack_start(GTK_BOX(vbox), frame, FALSE, FALSE, 0); - lwoh = CreateLabelWithOnlineHelp(_("Reverse OK / Cancel buttons"), _("Reverse OK / Cancel buttons")); - RegisterPreferencesHelpWindow(lwoh); + lwoh = GuiCreateLabelWithOnlineHelp(_("Reverse OK / Cancel buttons"), + _("Reverse OK / Cancel buttons")); + GuiRegisterPreferencesHelpWindow(lwoh); for(i=0; i<2; i++) { GtkWidget *hbox = gtk_hbox_new(FALSE, 0); @@ -3129,15 +3147,15 @@ void CreatePreferencesWindow(void) } else { pc->cancelOKB = button; - AddHelpWidget(lwoh, hbox); + GuiAddHelpWidget(lwoh, hbox); } } - AddHelpParagraph(lwoh, - _("Reverse OK / Cancel buttons\n\n" - "This switch reverses the order of dialog buttons " - "(e.g. OK, Cancel).\n\n" - "Changes will become active after restarting dvdisaster.")); + GuiAddHelpParagraph(lwoh, + _("Reverse OK / Cancel buttons\n\n" + "This switch reverses the order of dialog buttons " + "(e.g. OK, Cancel).\n\n" + "Changes will become active after restarting dvdisaster.")); /*** "Misc" page */ @@ -3152,8 +3170,9 @@ void CreatePreferencesWindow(void) gtk_container_set_border_width(GTK_CONTAINER(vbox2), 10); gtk_container_add(GTK_CONTAINER(frame), vbox2); - lwoh = CreateLabelWithOnlineHelp(_("Verbose logging"), _("Verbose logging")); - RegisterPreferencesHelpWindow(lwoh); + lwoh = GuiCreateLabelWithOnlineHelp(_("Verbose logging"), + _("Verbose logging")); + GuiRegisterPreferencesHelpWindow(lwoh); for(i=0; i<2; i++) { GtkWidget *hbox = gtk_hbox_new(FALSE, 0); @@ -3172,21 +3191,21 @@ void CreatePreferencesWindow(void) } else { pc->verboseB = button; - AddHelpWidget(lwoh, hbox); + GuiAddHelpWidget(lwoh, hbox); } } - AddHelpParagraph(lwoh, - _("Verbose logging\n\n" - "More information will be supplied in the Log window " - "and/or log file. Useful for debugging, but may lead " - "to slower performance.")); + GuiAddHelpParagraph(lwoh, + _("Verbose logging\n\n" + "More information will be supplied in the Log window " + "and/or log file. Useful for debugging, but may lead " + "to slower performance.")); /** Log file */ - lwoh = CreateLabelWithOnlineHelp(_("Logfile:"), - _("Copy log to file:")); - RegisterPreferencesHelpWindow(lwoh); + lwoh = GuiCreateLabelWithOnlineHelp(_("Logfile:"), + _("Copy log to file:")); + GuiRegisterPreferencesHelpWindow(lwoh); for(i=0; i<2; i++) { GtkWidget *table = gtk_table_new(4,2,FALSE); @@ -3238,18 +3257,19 @@ void CreatePreferencesWindow(void) g_signal_connect(G_OBJECT(button), "toggled", G_CALLBACK(toggle_cb), GINT_TO_POINTER(TOGGLE_LOGFILE)); if(!i) gtk_box_pack_start(GTK_BOX(vbox2), table, FALSE, FALSE, 0); - else AddHelpWidget(lwoh, table); + else GuiAddHelpWidget(lwoh, table); } - AddHelpParagraph(lwoh, - _("Logfile\n\n" - "A copy of the logging information from the log window " - "is written to the specified log file. This is useful to " - "collect information on program crashes, but affects " - "performance negatively.")); + GuiAddHelpParagraph(lwoh, + _("Logfile\n\n" + "A copy of the logging information from the log window " + "is written to the specified log file. This is useful to " + "collect information on program crashes, but affects " + "performance negatively.")); } /* Show the created / reused window */ gtk_widget_show_all(GTK_WIDGET(Closure->prefsWindow)); } +#endif /* WITH_GUI_YES */ diff --git a/src/print-sense.c b/src/print-sense.c index 4c03d7f..54332ea 100644 --- a/src/print-sense.c +++ b/src/print-sense.c @@ -20,6 +20,8 @@ * along with dvdisaster. If not, see . */ +/*** src type: no GUI code ***/ + #include "dvdisaster.h" /*** diff --git a/src/raw-editor.c b/src/raw-editor.c index 8d3030c..41a804a 100644 --- a/src/raw-editor.c +++ b/src/raw-editor.c @@ -19,8 +19,10 @@ * You should have received a copy of the GNU General Public License * along with dvdisaster. If not, see . */ -// DVDISASTER_GUI_FILE +/*** src type: only GUI code ***/ + +#ifdef WITH_GUI_YES #include "dvdisaster.h" #define UNDO_SLOTS 100 @@ -128,7 +130,7 @@ static raw_editor_context* create_raw_editor_context() return rec; } -void FreeRawEditorContext(void *rptr) +void GuiFreeRawEditorContext(void *rptr) { raw_editor_context *rec = rptr; int i; @@ -151,7 +153,7 @@ void FreeRawEditorContext(void *rptr) static gboolean delete_cb(GtkWidget *widget, GdkEvent *event, gpointer data) { - FreeRawEditorContext(Closure->rawEditorContext); + GuiFreeRawEditorContext(Closure->rawEditorContext); return FALSE; } @@ -295,7 +297,7 @@ static void file_select_cb(GtkWidget *widget, gpointer data) { char filename[strlen(Closure->dDumpDir)+10]; rec->fileSel = gtk_file_selection_new(_utf("windowtitle|Raw sector dump selection")); - ReverseCancelOK(GTK_DIALOG(rec->fileSel)); + GuiReverseCancelOK(GTK_DIALOG(rec->fileSel)); g_signal_connect(G_OBJECT(rec->fileSel), "destroy", G_CALLBACK(file_select_cb), GINT_TO_POINTER(ACTION_FILESEL_DESTROY)); g_signal_connect(G_OBJECT(GTK_FILE_SELECTION(rec->fileSel)->ok_button),"clicked", @@ -325,8 +327,8 @@ static void file_select_cb(GtkWidget *widget, gpointer data) calculate_failures(rec); evaluate_vectors(rec); render_sector(rec); - SetLabelText(GTK_LABEL(rec->rightLabel), _("%s loaded, LBA %" PRId64 ", %d samples."), - rec->filepath, rec->rb->lba, rec->rb->samplesRead); + GuiSetLabelText(rec->rightLabel, _("%s loaded, LBA %" PRId64 ", %d samples."), + rec->filepath, rec->rb->lba, rec->rb->samplesRead); break; case ACTION_FILESEL_CANCEL: @@ -416,7 +418,7 @@ static void buffer_io_cb(GtkWidget *widget, gpointer data) { char filename[strlen(Closure->dDumpDir)+10]; rec->loadBufSel = gtk_file_selection_new(_utf("windowtitle|Load buffer from file")); - ReverseCancelOK(GTK_DIALOG(rec->loadBufSel)); + GuiReverseCancelOK(GTK_DIALOG(rec->loadBufSel)); g_signal_connect(G_OBJECT(rec->loadBufSel), "destroy", G_CALLBACK(buffer_io_cb), GINT_TO_POINTER(ACTION_FILESEL_LOAD_DESTROY)); g_signal_connect(G_OBJECT(GTK_FILE_SELECTION(rec->loadBufSel)->ok_button),"clicked", @@ -434,7 +436,7 @@ static void buffer_io_cb(GtkWidget *widget, gpointer data) { char filename[strlen(Closure->dDumpDir)+10]; rec->saveBufSel = gtk_file_selection_new(_utf("windowtitle|Save buffer to file")); - ReverseCancelOK(GTK_DIALOG(rec->saveBufSel)); + GuiReverseCancelOK(GTK_DIALOG(rec->saveBufSel)); g_signal_connect(G_OBJECT(rec->saveBufSel), "destroy", G_CALLBACK(buffer_io_cb), GINT_TO_POINTER(ACTION_FILESEL_SAVE_DESTROY)); g_signal_connect(G_OBJECT(GTK_FILE_SELECTION(rec->saveBufSel)->ok_button),"clicked", @@ -471,7 +473,7 @@ static void buffer_io_cb(GtkWidget *widget, gpointer data) render_sector(rec); undo_remember(rec); - SetLabelText(GTK_LABEL(rec->rightLabel), _("Buffer loaded from %s."), path); + GuiSetLabelText(rec->rightLabel, _("Buffer loaded from %s."), path); break; } @@ -486,7 +488,7 @@ static void buffer_io_cb(GtkWidget *widget, gpointer data) LargeWrite(file, rec->rb->recovered, rec->rb->sampleSize); LargeClose(file); - SetLabelText(GTK_LABEL(rec->rightLabel), _("Buffer saved to %s."), path); + GuiSetLabelText(rec->rightLabel, _("Buffer saved to %s."), path); break; } @@ -509,11 +511,11 @@ static void buffer_io_cb(GtkWidget *widget, gpointer data) static void calculate_geometry(raw_editor_context *rec) { int w,h; - SetText(rec->layout, "w", &w, &h); + GuiSetText(rec->layout, "w", &w, &h); rec->charWidth = w; rec->charHeight = h+h/4; - SetText(rec->layout, "34", &w, &h); + GuiSetText(rec->layout, "34", &w, &h); rec->byteWidth = w+w/2; rec->byteHeight = h+h/4; @@ -573,11 +575,12 @@ static void evaluate_vectors(raw_editor_context *rec) if( CheckEDC(rb->recovered, rb->xaMode) && CheckMSF(rb->recovered, rb->lba, STRICT_MSF_CHECK)) { gtk_widget_set_sensitive(rec->saveButton, TRUE); - SetLabelText(GTK_LABEL(rec->leftLabel), _("*** Well done: Sector has been recovered! ***")); + GuiSetLabelText(rec->leftLabel, _("*** Well done: Sector has been recovered! ***")); } else - SetLabelText(GTK_LABEL(rec->leftLabel), _("Current buffer state: P %d/%d, Q %d/%d"), - rec->p2, rec->p1, rec->q2, rec->q1); + GuiSetLabelText(rec->leftLabel, + _("Current buffer state: P %d/%d, Q %d/%d"), + rec->p2, rec->p1, rec->q2, rec->q1); } /* Render the sector */ @@ -625,7 +628,7 @@ static void render_sector(raw_editor_context *rec) sprintf(byte, "%c", canprint(buf[idx]) ? buf[idx] : '.'); idx++; - SetText(rec->layout, byte, &w, &h); + GuiSetText(rec->layout, byte, &w, &h); gdk_draw_layout(d, Closure->drawGC, x, y, rec->layout); } } @@ -687,7 +690,8 @@ static gboolean button_cb(GtkWidget *widget, GdkEventButton *event, gpointer dat for(i=0; i2) - { SetLabelText(GTK_LABEL(rec->rightLabel), _("%c Vector %d has >2 erasures (nothing done)."), type, v); + { GuiSetLabelText(rec->rightLabel, + _("%c Vector %d has >2 erasures (nothing done)."), type, v); return TRUE; } eras[erasures++] = i; @@ -715,19 +719,19 @@ static gboolean button_cb(GtkWidget *widget, GdkEventButton *event, gpointer dat err = DecodePQ(rb->rt, vector, Q_PADDING, eras, e_scratch); } - if(err==0) SetLabelText(GTK_LABEL(rec->rightLabel), - _("%c Vector %d already good."), type, v); + if(err==0) GuiSetLabelText(rec->rightLabel, + _("%c Vector %d already good."), type, v); else if(err==1 || err==2) { if(type=='P') SetPVector(rb->recovered, vector, v); else SetQVector(rb->recovered, vector, v); evaluate_vectors(rec); render_sector(rec); undo_remember(rec); - SetLabelText(GTK_LABEL(rec->rightLabel), - _("%c Vector %d corrected (%d erasures)."), type, v, e_scratch); + GuiSetLabelText(rec->rightLabel, + _("%c Vector %d corrected (%d erasures)."), type, v, e_scratch); } - else SetLabelText(GTK_LABEL(rec->rightLabel), - _("%c Vector %d not correctable (%d erasures)."), type, v, e_scratch); + else GuiSetLabelText(rec->rightLabel, + _("%c Vector %d not correctable (%d erasures)."), type, v, e_scratch); } break; @@ -741,8 +745,8 @@ static gboolean button_cb(GtkWidget *widget, GdkEventButton *event, gpointer dat v = mouse_x/rec->charWidth; if(!rb->pn[v]) - { SetLabelText(GTK_LABEL(rec->rightLabel), - _("no replacements for P vector %d available"), v); + { GuiSetLabelText(rec->rightLabel, + _("no replacements for P vector %d available"), v); return TRUE; } @@ -757,7 +761,7 @@ static gboolean button_cb(GtkWidget *widget, GdkEventButton *event, gpointer dat SetPVector(rb->recovered, rb->pList[v][i], v); evaluate_vectors(rec); render_sector(rec); - SetLabelText(GTK_LABEL(rec->rightLabel), + GuiSetLabelText(rec->rightLabel, _("Exchanged P vector %d with version %d (of %d)."), v, i+1, rb->pn[v]); rec->lastPFrame = i; @@ -779,7 +783,7 @@ static gboolean button_cb(GtkWidget *widget, GdkEventButton *event, gpointer dat ByteIndexToQ(bytepos, &v, &ignore); if(!rb->qn[v]) - { SetLabelText(GTK_LABEL(rec->rightLabel), + { GuiSetLabelText(rec->rightLabel, _("no replacements for Q vector %d available"), v); return TRUE; } @@ -793,7 +797,7 @@ static gboolean button_cb(GtkWidget *widget, GdkEventButton *event, gpointer dat SetQVector(rb->recovered, rb->qList[v][i], v); evaluate_vectors(rec); render_sector(rec); - SetLabelText(GTK_LABEL(rec->rightLabel), + GuiSetLabelText(rec->rightLabel, _("Exchanged Q vector %d with version %d (of %d)."), v, i+1, rb->qn[v]); rec->lastQFrame = i; @@ -855,7 +859,7 @@ static void action_cb(GtkWidget *widget, gpointer data) evaluate_vectors(rec); render_sector(rec); undo_remember(rec); - SetLabelText(GTK_LABEL(rec->rightLabel), _("Showing sample %d (of %d)."), + GuiSetLabelText(rec->rightLabel, _("Showing sample %d (of %d)."), rec->currentSample, rec->rb->samplesRead); break; @@ -868,7 +872,7 @@ static void action_cb(GtkWidget *widget, gpointer data) evaluate_vectors(rec); render_sector(rec); undo_remember(rec); - SetLabelText(GTK_LABEL(rec->rightLabel), _("Showing sample %d (of %d)."), + GuiSetLabelText(rec->rightLabel, _("Showing sample %d (of %d)."), rec->currentSample, rec->rb->samplesRead); break; @@ -914,7 +918,7 @@ static void action_cb(GtkWidget *widget, gpointer data) evaluate_vectors(rec); render_sector(rec); undo_remember(rec); - SetLabelText(GTK_LABEL(rec->rightLabel), _("Sector with lowest P failures selected.")); + GuiSetLabelText(rec->rightLabel, _("Sector with lowest P failures selected.")); break; case ACTION_SORT_BY_Q: @@ -924,7 +928,7 @@ static void action_cb(GtkWidget *widget, gpointer data) evaluate_vectors(rec); render_sector(rec); undo_remember(rec); - SetLabelText(GTK_LABEL(rec->rightLabel), _("Sector with lowest Q failures selected.")); + GuiSetLabelText(rec->rightLabel, _("Sector with lowest Q failures selected.")); break; case ACTION_SMART_LEC: @@ -935,8 +939,7 @@ static void action_cb(GtkWidget *widget, gpointer data) evaluate_vectors(rec); render_sector(rec); undo_remember(rec); - SetLabelText(GTK_LABEL(rec->rightLabel), - _("Smart L-EC: %s"), message); + GuiSetLabelText(rec->rightLabel, _("Smart L-EC: %s"), message); break; } } @@ -946,7 +949,7 @@ static void action_cb(GtkWidget *widget, gpointer data) *** Raw sector editor widget creation ***/ -void CreateRawEditor(void) +void GuiCreateRawEditor(void) { raw_editor_context *rec = NULL; rec = create_raw_editor_context(); @@ -1130,3 +1133,4 @@ void CreateRawEditor(void) gtk_widget_show_all(GTK_WIDGET(rec->window)); } +#endif /* WITH_GUI_YES */ diff --git a/src/raw-sector-cache.c b/src/raw-sector-cache.c index a675e05..db15184 100644 --- a/src/raw-sector-cache.c +++ b/src/raw-sector-cache.c @@ -20,6 +20,8 @@ * along with dvdisaster. If not, see . */ +/*** src type: no GUI code ***/ + #include "dvdisaster.h" /* @@ -193,14 +195,7 @@ int SaveDefectiveSector(RawBuffer *rb, int can_c2_scan) (long long)rb->lba); if(!LargeStat(filename, &length)) - { - PrintCLIorLabel( -#ifndef WITH_CLI_ONLY_YES - Closure->status, -#else - NULL, -#endif - _(" [Creating new cache file %s]\n"), filename); + { PrintCLIorLabel(Closure->status,_(" [Creating new cache file %s]\n"), filename); init_defective_sector_file(filename, rb, &file, dsh); } else @@ -271,12 +266,7 @@ int SaveDefectiveSector(RawBuffer *rb, int can_c2_scan) LargeClose(file); - PrintCLIorLabel( -#ifndef WITH_CLI_ONLY_YES - Closure->status, -#else - NULL, -#endif + PrintCLIorLabel(Closure->status, _(" [Appended %d/%d sectors to cache file %s; LBA=%" PRId64 ", ssize=%d, %d sectors]\n"), count, rb->samplesRead, filename, dsh->lba, dsh->sectorSize, dsh->nSectors); @@ -325,13 +315,7 @@ int TryDefectiveSectorCache(RawBuffer *rb, unsigned char *outbuf) status = TryCDFrameRecovery(rb, outbuf); if(!status) - { - PrintCLIorLabel( -#ifndef WITH_CLI_ONLY_YES - Closure->status, -#else - NULL, -#endif + { PrintCLIorLabel(Closure->status, " [Success after processing cached sector %d]\n", i+1); return status; } diff --git a/src/read-adaptive-window.c b/src/read-adaptive-window.c index bd8ee36..8de2900 100644 --- a/src/read-adaptive-window.c +++ b/src/read-adaptive-window.c @@ -19,10 +19,13 @@ * You should have received a copy of the GNU General Public License * along with dvdisaster. If not, see . */ -// DVDISASTER_GUI_FILE + +/*** src type: only GUI code ***/ #include "dvdisaster.h" +#ifdef WITH_GUI_YES + /*** *** Spiral drawing and updating ***/ @@ -42,7 +45,7 @@ static int draw_text(GdkDrawable *d, PangoLayout *l, char *text, int x, int y, G int w,h,pw; int erase_to = Closure->readAdaptiveSpiral->mx - Closure->readAdaptiveSpiral->diameter/2; - SetText(l, text, &w, &h); + GuiSetText(l, text, &w, &h); pw = erase_to-x; if(pw > pixmap_width || h > pixmap_height) @@ -141,7 +144,7 @@ static void redraw_labels(GtkWidget *widget, int erase_mask) if(Closure->readAdaptiveErrorMsg && erase_mask & REDRAW_ERRORMSG) { gdk_gc_set_rgb_fg_color(Closure->drawGC, footer_color); - SetText(Closure->readLinearCurve->layout, Closure->readAdaptiveErrorMsg, &w, &h); + GuiSetText(Closure->readLinearCurve->layout, Closure->readAdaptiveErrorMsg, &w, &h); y = Closure->readAdaptiveSpiral->my + Closure->readAdaptiveSpiral->diameter/2 - h; gdk_draw_layout(d, Closure->drawGC, x, y, Closure->readLinearCurve->layout); } @@ -149,7 +152,7 @@ static void redraw_labels(GtkWidget *widget, int erase_mask) static void redraw_spiral(GtkWidget *widget) { - DrawSpiral(Closure->readAdaptiveSpiral); + GuiDrawSpiral(Closure->readAdaptiveSpiral); } /* Calculate the geometry of the spiral */ @@ -165,7 +168,7 @@ static void update_geometry(GtkWidget *widget) static gboolean expose_cb(GtkWidget *widget, GdkEventExpose *event, gpointer data) { - SetSpiralWidget(Closure->readAdaptiveSpiral, widget); + GuiSetSpiralWidget(Closure->readAdaptiveSpiral, widget); if(event->count) /* Exposure compression */ return TRUE; @@ -193,7 +196,7 @@ static gboolean clip_idle_func(gpointer data) spiral->segmentClipping = spiral->segmentCount; for(i=clipping; i < spiral->segmentCount; i++) - DrawSpiralSegment(spiral, Closure->background, i); + GuiDrawSpiralSegment(spiral, Closure->background, i); spiral->outline = outline; spiral->segmentClipping = clipping; @@ -201,13 +204,13 @@ static gboolean clip_idle_func(gpointer data) /* Now redraw the last turn */ for(i=ADAPTIVE_READ_SPIRAL_SIZE-300; i<=clipping; i++) - DrawSpiralSegment(spiral, Closure->background, i); + GuiDrawSpiralSegment(spiral, Closure->background, i); } return FALSE; } -void ClipReadAdaptiveSpiral(int segments) +void GuiClipReadAdaptiveSpiral(int segments) { Closure->readAdaptiveSpiral->segmentClipping = segments; @@ -227,14 +230,14 @@ static gboolean segment_idle_func(gpointer data) { int segment = GPOINTER_TO_INT(data); segment-=100; - DrawSpiralSegment(Closure->readAdaptiveSpiral, - Closure->readAdaptiveSpiral->segmentColor[segment], - segment); + GuiDrawSpiralSegment(Closure->readAdaptiveSpiral, + Closure->readAdaptiveSpiral->segmentColor[segment], + segment); return FALSE; } -void ChangeSegmentColor(GdkColor *color, int segment) +void GuiChangeSegmentColor(GdkColor *color, int segment) { Closure->readAdaptiveSpiral->segmentColor[segment] = color; if(Closure->readAdaptiveSpiral->cursorPos == segment) @@ -252,12 +255,12 @@ static gboolean remove_fill_idle_func(gpointer data) for(i=0; isegmentCount; i++) if(spiral->segmentColor[i] == Closure->whiteSector) - DrawSpiralSegment(spiral, Closure->background, i); + GuiDrawSpiralSegment(spiral, Closure->background, i); return FALSE; } -void RemoveFillMarkers() +void GuiRemoveFillMarkers() { g_idle_add(remove_fill_idle_func, NULL); } @@ -274,8 +277,11 @@ static gboolean label_redraw_idle_func(gpointer data) return FALSE; } -void SetAdaptiveReadSubtitle(char *title) +void GuiSetAdaptiveReadSubtitle(char *title) { + if(!Closure->guiMode) + return; + if(Closure->readAdaptiveSubtitle) g_free(Closure->readAdaptiveSubtitle); @@ -284,8 +290,11 @@ void SetAdaptiveReadSubtitle(char *title) g_idle_add(label_redraw_idle_func, GINT_TO_POINTER(REDRAW_SUBTITLE)); } -void SetAdaptiveReadFootline(char *msg, GdkColor *color) +void GuiSetAdaptiveReadFootline(char *msg, GdkColor *color) { + if(!Closure->guiMode) + return; + if(Closure->readAdaptiveErrorMsg) g_free(Closure->readAdaptiveErrorMsg); @@ -295,12 +304,15 @@ void SetAdaptiveReadFootline(char *msg, GdkColor *color) g_idle_add(label_redraw_idle_func, GINT_TO_POINTER(REDRAW_ERRORMSG)); } -void UpdateAdaptiveResults(gint64 r, gint64 c, gint64 m, int p) +void GuiUpdateAdaptiveResults(gint64 r, gint64 c, gint64 m, int p) { readable = r; correctable = c; missing = m; percent = p; + if(!Closure->guiMode) + return; + g_idle_remove_by_data(GINT_TO_POINTER(REDRAW_PROGRESS)); g_idle_add(label_redraw_idle_func, GINT_TO_POINTER(REDRAW_PROGRESS)); } @@ -309,8 +321,8 @@ void UpdateAdaptiveResults(gint64 r, gint64 c, gint64 m, int p) *** Reset the notebook contents for new read action ***/ -void ResetAdaptiveReadWindow() -{ FillSpiral(Closure->readAdaptiveSpiral, Closure->background); +void GuiResetAdaptiveReadWindow() +{ GuiFillSpiral(Closure->readAdaptiveSpiral, Closure->background); // DrawSpiral(Closure->readAdaptiveSpiral); if(Closure->readAdaptiveSubtitle) @@ -342,7 +354,7 @@ void ResetAdaptiveReadWindow() * Set the minimum required data recovery value */ -void SetAdaptiveReadMinimumPercentage(int value) +void GuiSetAdaptiveReadMinimumPercentage(int value) { min_required = value; } @@ -350,7 +362,7 @@ void SetAdaptiveReadMinimumPercentage(int value) *** Create the notebook contents for the reading and scanning action ***/ -void CreateAdaptiveReadWindow(GtkWidget *parent) +void GuiCreateAdaptiveReadWindow(GtkWidget *parent) { GtkWidget *sep,*d_area; Closure->readAdaptiveHeadline = gtk_label_new(NULL); @@ -369,9 +381,10 @@ void CreateAdaptiveReadWindow(GtkWidget *parent) gtk_box_pack_start(GTK_BOX(parent), d_area, TRUE, TRUE, 0); g_signal_connect(G_OBJECT(d_area), "expose_event", G_CALLBACK(expose_cb), NULL); - Closure->readAdaptiveSpiral = CreateSpiral(Closure->grid, Closure->background, 10, 5, - ADAPTIVE_READ_SPIRAL_SIZE); + Closure->readAdaptiveSpiral + = GuiCreateSpiral(Closure->grid, Closure->background, 10, 5, + ADAPTIVE_READ_SPIRAL_SIZE); gtk_widget_set_size_request(d_area, -1, Closure->readAdaptiveSpiral->diameter); } - +#endif /* WITH_GUI_YES */ diff --git a/src/read-adaptive.c b/src/read-adaptive.c index 9317a82..725004e 100644 --- a/src/read-adaptive.c +++ b/src/read-adaptive.c @@ -1,6 +1,6 @@ /* dvdisaster: Additional error correction for optical media. * Copyright (C) 2004-2017 Carsten Gnoerlich. - * Copyright (C) 2019-2021 The dvdisaster development team. + * Copyright (C) 2019-2021 The readdvdisaster development team. * * Email: support@dvdisaster.org * @@ -20,6 +20,8 @@ * along with dvdisaster. If not, see . */ +/*** src type: some GUI code ***/ + #include "dvdisaster.h" #include "scsi-layer.h" @@ -368,14 +370,12 @@ static void cleanup(gpointer data) } bail_out: -#ifndef WITH_CLI_ONLY_YES if(Closure->guiMode) { if(rc->earlyTermination) - SetAdaptiveReadFootline(_("Aborted by unrecoverable error."), Closure->redText); - - AllowActions(TRUE); + { GuiSetAdaptiveReadFootline(_("Aborted by unrecoverable error."), Closure->redText); + } + GuiAllowActions(TRUE); } -#endif if(rc->image) if(!LargeClose(rc->image)) @@ -401,7 +401,7 @@ bail_out: g_free(rc); -#ifndef WITH_CLI_ONLY_YES +#ifdef WITH_GUI_YES if(Closure->guiMode) g_thread_exit(0); #endif @@ -490,10 +490,8 @@ static void print_progress(read_closure *rc, int immediate) int total = rc->readable+rc->correctable; int percent = (int)((1000LL*(long long)total)/rc->expectedSectors); -#ifndef WITH_CLI_ONLY_YES if(Closure->guiMode) return; -#endif if( rc->lastPercent >= percent && rc->lastCorrectable == rc->correctable @@ -541,12 +539,7 @@ static void print_progress(read_closure *rc, int immediate) static void clear_progress(read_closure *rc) { - if(!rc->progressMsgLen || -#ifndef WITH_CLI_ONLY_YES - Closure->guiMode) -#else - 0) -#endif + if(!rc->progressMsgLen || Closure->guiMode) return; rc->progressSp[rc->progressMsgLen] = 0; @@ -564,7 +557,9 @@ static void clear_progress(read_closure *rc) * Sector markup in the spiral */ -#ifndef WITH_CLI_ONLY_YES +#ifdef WITH_GUI_NO +#define mark_sector(r, s, c) +#else static void mark_sector(read_closure *rc, gint64 sector, GdkColor *color) { int segment; int changed = FALSE; @@ -599,18 +594,19 @@ static void mark_sector(read_closure *rc, gint64 sector, GdkColor *color) } if(new != old) - { ChangeSegmentColor(color, segment); + { GuiChangeSegmentColor(color, segment); changed = TRUE; } } else changed = TRUE; if(changed) - UpdateAdaptiveResults(rc->readable, rc->correctable, - rc->expectedSectors-rc->readable-rc->correctable, - (int)((1000LL*(rc->readable+rc->correctable))/rc->expectedSectors)); + { GuiUpdateAdaptiveResults(rc->readable, rc->correctable, + rc->expectedSectors-rc->readable-rc->correctable, + (int)((1000LL*(rc->readable+rc->correctable))/rc->expectedSectors)); + } } -#endif +#endif /* WITH_GUI_YES */ /*** *** Basic device and image handling and sanity checks. @@ -653,10 +649,7 @@ static void open_and_determine_mode(read_closure *rc) rc->rs01LayerSectors = (rc->ei->sectors+rc->eh->dataBytes-1)/rc->eh->dataBytes; PrintLog(_("%s-type ECC found\n"), "RS01"); - -#ifndef WITH_CLI_ONLY_YES - SetAdaptiveReadMinimumPercentage((1000*(rc->eh->dataBytes-rc->eh->eccBytes))/rc->eh->dataBytes); -#endif + GuiSetAdaptiveReadMinimumPercentage((1000*(rc->eh->dataBytes-rc->eh->eccBytes))/rc->eh->dataBytes); } else /* see if we have RS02 type ecc */ if(rc->medium->eccHeader && !strncmp((char*)rc->medium->eccHeader->method,"RS02",4)) @@ -664,16 +657,14 @@ static void open_and_determine_mode(read_closure *rc) rc->eh = rc->medium->eccHeader; rc->lay = RS02LayoutFromImage(rc->medium); -#ifndef WITH_CLI_ONLY_YES - SetAdaptiveReadMinimumPercentage((1000*rc->lay->ndata)/255); -#endif + GuiSetAdaptiveReadMinimumPercentage((1000*rc->lay->ndata)/255); PrintLog(_("%s-type ECC found\n"), "RS02"); if(Closure->version < rc->eh->neededVersion) PrintCLI(_("* Warning: This image requires dvdisaster-%d.%d!\n" "* Proceeding could trigger incorrect behaviour.\n" - "* Please visit http://www.dvdisaster.org for an upgrade.\n\n"), + "* Please upgrade dvdisaster.\n\n"), rc->eh->neededVersion/10000, (rc->eh->neededVersion%10000)/100); @@ -699,18 +690,15 @@ static void open_and_determine_mode(read_closure *rc) if(rc->medium->eccHeader && !strncmp((char*)rc->medium->eccHeader->method,"RS03",4)) { int answer; PrintLog(_("%s-type ECC found\n"), "RS03"); - answer = ModalWarningOrCLI(GTK_MESSAGE_WARNING, GTK_BUTTONS_OK_CANCEL, NULL, "%s", + answer = ModalWarning(GTK_MESSAGE_WARNING, GTK_BUTTONS_OK_CANCEL, NULL, _("Adaptive reading has not been adapted yet to handle RS03-augmented images properly.\n" "To quote the original author: \"behaviour with RS03 is unpredictable and undefined\".\n" "You should cancel and use the linear reading strategy instead. Continue at your own risk.\n")); if(!answer) - { -#ifndef WITH_CLI_ONLY_YES - SetAdaptiveReadFootline(_("Aborted by user request!"), Closure->redText); -#endif - rc->earlyTermination = FALSE; - cleanup((gpointer)rc); + { GuiSetAdaptiveReadFootline(_("Aborted by user request!"), Closure->redText); + rc->earlyTermination = FALSE; + cleanup((gpointer)rc); } } @@ -757,10 +745,9 @@ static void check_size(read_closure *rc) /* Compare size with answer from drive */ if(rc->sectors < rc->dh->sectors) - { - int answer; + { int answer; - answer = ModalWarningOrCLI(GTK_MESSAGE_WARNING, GTK_BUTTONS_OK_CANCEL, NULL, + answer = ModalWarning(GTK_MESSAGE_WARNING, GTK_BUTTONS_OK_CANCEL, NULL, _("Medium contains %" PRId64 " sectors more as recorded in the .ecc file\n" "(Medium: %" PRId64 " sectors; expected from .ecc file: %" PRId64 " sectors).\n" "Only the first %" PRId64 " medium sectors will be processed.\n"), @@ -768,29 +755,22 @@ static void check_size(read_closure *rc) rc->sectors); if(!answer) - { -#ifndef WITH_CLI_ONLY_YES - SetAdaptiveReadFootline(_("Aborted by user request!"), Closure->redText); -#endif + { GuiSetAdaptiveReadFootline(_("Aborted by user request!"), Closure->redText); rc->earlyTermination = FALSE; cleanup((gpointer)rc); } } if(rc->sectors > rc->dh->sectors) - { - int answer; + { int answer; - answer = ModalWarningOrCLI(GTK_MESSAGE_WARNING, GTK_BUTTONS_OK_CANCEL, NULL, + answer = ModalWarning(GTK_MESSAGE_WARNING, GTK_BUTTONS_OK_CANCEL, NULL, _("Medium contains %" PRId64 " sectors less as recorded in the .ecc file\n" "(Medium: %" PRId64 " sectors; expected from .ecc file: %" PRId64 " sectors).\n"), rc->sectors - rc->dh->sectors, rc->dh->sectors, rc->sectors); if(!answer) - { -#ifndef WITH_CLI_ONLY_YES - SetAdaptiveReadFootline(_("Aborted by user request!"), Closure->redText); -#endif + { GuiSetAdaptiveReadFootline(_("Aborted by user request!"), Closure->redText); rc->earlyTermination = FALSE; cleanup((gpointer)rc); } @@ -807,14 +787,10 @@ void GetReadingRange(gint64 sectors, gint64 *firstSector, gint64 *lastSector) { gint64 first, last; if(Closure->readStart || Closure->readEnd) - { -#ifndef WITH_CLI_ONLY_YES - if(!Closure->guiMode) /* more range checks are made below */ -#endif + { if(!Closure->guiMode) /* more range checks are made below */ { first = Closure->readStart; last = Closure->readEnd < 0 ? sectors-1 : Closure->readEnd; } -#ifndef WITH_CLI_ONLY_YES else /* be more permissive in GUI mode */ { first = 0; last = sectors-1; @@ -824,7 +800,6 @@ void GetReadingRange(gint64 sectors, gint64 *firstSector, gint64 *lastSector) last = Closure->readEnd < sectors ? Closure->readEnd : sectors-1; } } -#endif if(first > last || first < 0 || last >= sectors) Stop(_("Sectors must be in range [0..%" PRId64 "].\n"), sectors-1); @@ -851,19 +826,15 @@ static void check_ecc_fingerprint(read_closure *rc) fp_read = GetImageFingerprint(rc->medium, digest, rc->eh->fpSector); if(!fp_read) /* Not readable. Bad luck. */ - { - int answer; + { int answer; - answer = ModalWarningOrCLI(GTK_MESSAGE_WARNING, GTK_BUTTONS_OK_CANCEL, NULL, + answer = ModalWarning(GTK_MESSAGE_WARNING, GTK_BUTTONS_OK_CANCEL, NULL, _("Sector %d is missing. Can not compare medium and ecc fingerprints.\n" "Double check that the medium and the ecc file belong together.\n"), rc->eh->fpSector); if(!answer) - { -#ifndef WITH_CLI_ONLY_YES - SetAdaptiveReadFootline(_("Aborted by user request!"), Closure->redText); -#endif + { GuiSetAdaptiveReadFootline(_("Aborted by user request!"), Closure->redText); rc->earlyTermination = FALSE; cleanup((gpointer)rc); } @@ -911,18 +882,16 @@ int check_image_fingerprint(read_closure *rc) if(memcmp(image_fp, medium_fp, 16)) { -#ifndef WITH_CLI_ONLY_YES if(!Closure->guiMode) -#endif Stop(_("Image file does not match the optical disc.")); -#ifndef WITH_CLI_ONLY_YES +#ifdef WITH_GUI_YES else - { int answer = ConfirmImageDeletion(Closure->imageName); + { int answer = GuiConfirmImageDeletion(Closure->imageName); if(!answer) { rc->earlyTermination = FALSE; - SetAdaptiveReadFootline(_("Reading aborted. Please select a different image file."), - Closure->redText); + GuiSetAdaptiveReadFootline(_("Reading aborted. Please select a different image file."), + Closure->redText); cleanup((gpointer)rc); } else @@ -931,7 +900,7 @@ int check_image_fingerprint(read_closure *rc) return TRUE; /* causes reopen of image in caller */ } } -#endif +#endif /* WITH_GUI_YES */ } return 0; /* okay */ @@ -945,20 +914,16 @@ int check_image_fingerprint(read_closure *rc) void check_image_size(read_closure *rc, gint64 image_file_sectors) { if(image_file_sectors > rc->expectedSectors) - { - int answer; + { int answer; - answer = ModalWarningOrCLI(GTK_MESSAGE_WARNING, GTK_BUTTONS_OK_CANCEL, NULL, + answer = ModalWarning(GTK_MESSAGE_WARNING, GTK_BUTTONS_OK_CANCEL, NULL, _("Image file is %" PRId64 " sectors longer than inserted medium\n" "(Image file: %" PRId64 " sectors; medium: %" PRId64 " sectors).\n"), image_file_sectors-rc->expectedSectors, image_file_sectors, rc->expectedSectors); if(!answer) - { -#ifndef WITH_CLI_ONLY_YES - SetAdaptiveReadFootline(_("Aborted by user request!"), Closure->redText); -#endif + { GuiSetAdaptiveReadFootline(_("Aborted by user request!"), Closure->redText); rc->earlyTermination = FALSE; cleanup((gpointer)rc); } @@ -976,15 +941,11 @@ static void load_crc_buf(read_closure *rc) { switch(rc->readMode) { case ECC_IN_FILE: -#ifndef WITH_CLI_ONLY_YES - SetAdaptiveReadSubtitle(_utf("Loading CRC data.")); -#endif + GuiSetAdaptiveReadSubtitle(_utf("Loading CRC data.")); rc->crcBuf = GetCRCFromRS01_obsolete(rc->ei); break; case ECC_IN_IMAGE: -#ifndef WITH_CLI_ONLY_YES - SetAdaptiveReadSubtitle(_utf("Loading CRC data.")); -#endif + GuiSetAdaptiveReadSubtitle(_utf("Loading CRC data.")); rc->crcBuf = GetCRCFromRS02_obsolete(rc->lay, rc->dh, rc->image); break; default: @@ -1014,24 +975,19 @@ static void build_interval_from_image(read_closure *rc) /*** Go through all sectors in the image file. Check them for "dead sector markers" and for checksum failures if ecc data is present. */ - -#ifndef WITH_CLI_ONLY_YES - if(Closure->guiMode) - SetAdaptiveReadSubtitle(_("Analysing existing image file")); -#endif + GuiSetAdaptiveReadSubtitle(_("Analysing existing image file")); + for(s=0; s<=rc->highestWrittenSector; s++) { int n,percent; /* Check for user interruption. */ -#ifndef WITH_CLI_ONLY_YES if(Closure->stopActions) - { SetAdaptiveReadFootline(_("Aborted by user request!"), Closure->redText); + { GuiSetAdaptiveReadFootline(_("Aborted by user request!"), Closure->redText); rc->earlyTermination = FALSE; cleanup((gpointer)rc); } -#endif /* Read the next sector */ @@ -1045,9 +1001,7 @@ static void build_interval_from_image(read_closure *rc) if(current_missing) { int fixme=0; -#ifndef WITH_CLI_ONLY_YES mark_sector(rc, s, Closure->redSector); -#endif ExplainMissingSector(rc->buf, s, current_missing, SOURCE_IMAGE, &fixme); } @@ -1067,9 +1021,7 @@ static void build_interval_from_image(read_closure *rc) make it missing due to the CRC failure. */ if(!current_missing) { current_missing = 1; -#ifndef WITH_CLI_ONLY_YES mark_sector(rc, s, Closure->yellowSector); -#endif } } @@ -1084,9 +1036,7 @@ static void build_interval_from_image(read_closure *rc) if(rc->map) SetBit(rc->map, s); -#ifndef WITH_CLI_ONLY_YES mark_sector(rc, s, Closure->greenSector); -#endif #ifdef CHECK_VISITED rc->count[s]++; @@ -1120,10 +1070,7 @@ static void build_interval_from_image(read_closure *rc) percent = (100*s)/(rc->highestWrittenSector+1); if(last_percent != percent) - { -#ifndef WITH_CLI_ONLY_YES - if(!Closure->guiMode) -#endif + { if(!Closure->guiMode) PrintProgress(_("Analysing existing image file: %2d%%"),percent); last_percent = percent; @@ -1151,11 +1098,8 @@ static void build_interval_from_image(read_closure *rc) /*** Now that all readable sectors are known, determine those which can already be corrected. */ -#ifndef WITH_CLI_ONLY_YES - if(Closure->guiMode) - SetAdaptiveReadSubtitle(_("Determining correctable sectors")); -#endif - + GuiSetAdaptiveReadSubtitle(_("Determining correctable sectors")); + /* RS01 type error correction. */ if(rc->readMode == ECC_IN_FILE) @@ -1186,9 +1130,7 @@ static void build_interval_from_image(read_closure *rc) #ifdef CHECK_VISITED rc->count[layer_idx]++; #endif -#ifndef WITH_CLI_ONLY_YES mark_sector(rc, layer_idx, Closure->greenSector); -#endif } layer_idx += rc->rs01LayerSectors; @@ -1221,9 +1163,7 @@ static void build_interval_from_image(read_closure *rc) && !GetBit(rc->map, sector)) { SetBit(rc->map, sector); rc->correctable++; -#ifndef WITH_CLI_ONLY_YES mark_sector(rc, sector, Closure->greenSector); -#endif } } } @@ -1238,13 +1178,10 @@ static void build_interval_from_image(read_closure *rc) else PrintLog(_("Analysing existing image file: %" PRId64 " readable, %" PRId64 " still missing.\n"), rc->readable, rc->expectedSectors-rc->readable-rc->correctable); -#ifndef WITH_CLI_ONLY_YES - if(Closure->guiMode) - UpdateAdaptiveResults(rc->readable, rc->correctable, - rc->expectedSectors-rc->readable-rc->correctable, - (int)((1000LL*(rc->readable+rc->correctable))/rc->expectedSectors)); -#endif - + GuiUpdateAdaptiveResults(rc->readable, rc->correctable, + rc->expectedSectors-rc->readable-rc->correctable, + (int)((1000LL*(rc->readable+rc->correctable))/rc->expectedSectors)); + // print_intervals(rc); } @@ -1267,16 +1204,12 @@ static void mark_rs02_headers(read_closure *rc) while(hpos < end) { if(!GetBit(rc->map, hpos)) { SetBit(rc->map, hpos); -#ifndef WITH_CLI_ONLY_YES mark_sector(rc, hpos, Closure->greenSector); -#endif rc->correctable++; } if(!GetBit(rc->map, hpos+1)) { SetBit(rc->map, hpos+1); -#ifndef WITH_CLI_ONLY_YES mark_sector(rc, hpos+1, Closure->greenSector); -#endif rc->correctable++; } @@ -1288,7 +1221,7 @@ static void mark_rs02_headers(read_closure *rc) *** Main routine for adaptive reading ***/ -#ifndef WITH_CLI_ONLY_YES +#ifdef WITH_GUI_YES static void insert_buttons(GtkDialog *dialog) { gtk_dialog_add_buttons(dialog, @@ -1333,12 +1266,10 @@ void fill_gap(read_closure *rc) t = g_strdup_printf(_("Filling image area [%" PRId64 "..%" PRId64 "]"), firstUnwritten, rc->intervalStart-1); clear_progress(rc); -#ifndef WITH_CLI_ONLY_YES - if(Closure->guiMode) - { SetAdaptiveReadSubtitle(t); - ChangeSpiralCursor(Closure->readAdaptiveSpiral, -1); - } -#endif + + GuiSetAdaptiveReadSubtitle(t); + GuiChangeSpiralCursor(Closure->readAdaptiveSpiral, -1); + PrintCLI("%s", t); g_free(t); @@ -1364,51 +1295,43 @@ void fill_gap(read_closure *rc) /* Check whether user hit the Stop button */ -#ifndef WITH_CLI_ONLY_YES if(Closure->stopActions) { - if(Closure->guiMode) - SetAdaptiveReadFootline(_("Aborted by user request!"), Closure->redText); + GuiSetAdaptiveReadFootline(_("Aborted by user request!"), Closure->redText); rc->earlyTermination = FALSE; /* suppress respective error message */ cleanup((gpointer)rc); } -#endif /* Cycle the progress animation */ if(j++ % 2000) { int seq = (j/2000)%10; -#ifndef WITH_CLI_ONLY_YES if(!Closure->guiMode) -#endif { g_printf("%s", anim[seq]); fflush(stdout); } } /* Show progress in the spiral */ - -#ifndef WITH_CLI_ONLY_YES + if(Closure->guiMode) { int segment = i / rc->sectorsPerSegment; if(Closure->readAdaptiveSpiral->segmentColor[segment] == Closure->background) - ChangeSegmentColor(Closure->whiteSector, segment); + { GuiChangeSegmentColor(Closure->whiteSector, segment); + } } -#endif } PrintCLI(" \n"); rc->highestWrittenSector = rc->intervalStart-1; -#ifndef WITH_CLI_ONLY_YES if(Closure->guiMode) /* remove temporary fill markers */ - { RemoveFillMarkers(); - SetAdaptiveReadSubtitle(rc->subtitle); + { GuiRemoveFillMarkers(); + GuiSetAdaptiveReadSubtitle(rc->subtitle); } -#endif } @@ -1463,20 +1386,18 @@ void ReadMediumAdaptive(gpointer data) rc->earlyTermination = TRUE; RegisterCleanup(_("Reading aborted"), cleanup, rc); -#ifndef WITH_CLI_ONLY_YES - if(Closure->guiMode) - SetLabelText(GTK_LABEL(Closure->readAdaptiveHeadline), "%s\n%s", - _("Preparing for reading the medium image."), - _("Medium: not yet determined")); -#endif + GuiSetLabelText(Closure->readAdaptiveHeadline, + "%s\n%s", + _("Preparing for reading the medium image."), + _("Medium: not yet determined")); /* Please note: Commenting the follwing Stop() out will provide adaptive reading for RS01 and RS02, but behaviour with RS03 - is unpredictable and undefined. Therefore feel free to re-enable + is unpredictable und undefined. Therefore feel free to re-enable adaptive reading for your own use, but do not distibute such binaries to unsuspecting users. Adaptive reading will be re-introduced for all codecs - in one of the next versions. */ + in version 0.79.11. */ /* Unofficial version addendum: we enable adaptative reading, but we warn the user if we find RS03 data (see open_and_determine_mode()) */ @@ -1528,16 +1449,14 @@ void ReadMediumAdaptive(gpointer data) /*** Initialize segment state counters (only in GUI mode) */ -#ifndef WITH_CLI_ONLY_YES if(Closure->guiMode) { //rc->sectorsPerSegment = 1 + (rc->sectors / ADAPTIVE_READ_SPIRAL_SIZE); rc->sectorsPerSegment = ((rc->expectedSectors+ADAPTIVE_READ_SPIRAL_SIZE-1) / ADAPTIVE_READ_SPIRAL_SIZE); rc->segmentState = g_malloc0(ADAPTIVE_READ_SPIRAL_SIZE * sizeof(int)); // ClipReadAdaptiveSpiral(rc->sectors/rc->sectorsPerSegment); - ClipReadAdaptiveSpiral((rc->expectedSectors+rc->sectorsPerSegment-1)/rc->sectorsPerSegment); + GuiClipReadAdaptiveSpiral((rc->expectedSectors+rc->sectorsPerSegment-1)/rc->sectorsPerSegment); } -#endif - + /*** Initialize the interval list */ rc->intervals = g_malloc(8*sizeof(gint64)); @@ -1552,13 +1471,10 @@ reopen_image: Stop(_("Can't open %s:\n%s"),Closure->imageName,strerror(errno)); PrintLog(_("Creating new %s image.\n"),Closure->imageName); -#ifndef WITH_CLI_ONLY_YES - if(Closure->guiMode) - SetLabelText(GTK_LABEL(Closure->readAdaptiveHeadline), - "%s\n%s", - _("Reading new medium image."), - rc->dh->mediumDescr); -#endif + GuiSetLabelText(Closure->readAdaptiveHeadline, + "%s\n%s", + _("Reading new medium image."), + rc->dh->mediumDescr); /* Mark RS02 header sectors as correctable. */ @@ -1574,13 +1490,10 @@ reopen_image: else { int reopen; -#ifndef WITH_CLI_ONLY_YES - if(Closure->guiMode) - SetLabelText(GTK_LABEL(Closure->readAdaptiveHeadline), - "%s\n%s", - _("Completing existing medium image."), - rc->dh->mediumDescr); -#endif + GuiSetLabelText(Closure->readAdaptiveHeadline, + "%s\n%s", + _("Completing existing medium image."), + rc->dh->mediumDescr); /* Open the existing image file. */ @@ -1616,10 +1529,7 @@ reopen_image: if(rc->readMode != IMAGE_ONLY) { PrintLog("%s", t); -#ifndef WITH_CLI_ONLY_YES - if(Closure->guiMode) - SetAdaptiveReadFootline(t, Closure->greenText); -#endif + GuiSetAdaptiveReadFootline(t, Closure->greenText); } goto finished; } @@ -1637,10 +1547,7 @@ reopen_image: /*** Read the medium image. */ -#ifndef WITH_CLI_ONLY_YES - if(Closure->guiMode) - SetAdaptiveReadSubtitle(rc->subtitle); -#endif + GuiSetAdaptiveReadSubtitle(rc->subtitle); for(;;) { int cluster_mask = rc->dh->clusterSize-1; @@ -1665,18 +1572,17 @@ reopen_image: for(s=rc->intervalStart; s<=rc->intervalEnd; ) /* s is incremented elsewhere */ { int nsectors,cnt; -#ifndef WITH_CLI_ONLY_YES if(Closure->stopActions) /* somebody hit the Stop button */ - { if(Closure->guiMode) - SetAdaptiveReadFootline(_("Aborted by user request!"), Closure->redText); + { GuiSetAdaptiveReadFootline(_("Aborted by user request!"), Closure->redText); rc->earlyTermination = FALSE; /* suppress respective error message */ goto terminate; } - if(Closure->guiMode) - ChangeSpiralCursor(Closure->readAdaptiveSpiral, s / rc->sectorsPerSegment); -#endif + /* avoid a division by zero */ + if (Closure->guiMode) + { GuiChangeSpiralCursor(Closure->readAdaptiveSpiral, s / rc->sectorsPerSegment); + } /* Determine number of sectors to read. Read the next dh->clusterSize sectors unless we're at the end of the interval or at a position which is @@ -1723,28 +1629,26 @@ reread: && rc->dh->sense.sense_key && rc->dh->sense.sense_key != 3 && rc->dh->sense.sense_key != 5) { -#ifndef WITH_CLI_ONLY_YES - int answer; - - if(!Closure->guiMode) +#ifdef WITH_GUI_YES + int answer; #endif + if(!Closure->guiMode) Stop(_("Sector %" PRId64 ": %s\nCan not recover from above error.\n" "Use the --ignore-fatal-sense option to override."), s, GetLastSenseString(FALSE)); - -#ifndef WITH_CLI_ONLY_YES - answer = ModalDialog(GTK_MESSAGE_QUESTION, GTK_BUTTONS_NONE, insert_buttons, - _("Sector %" PRId64 ": %s\n\n" - "It may not be possible to recover from this error.\n" - "Should the reading continue and ignore this error?"), - s, GetLastSenseString(FALSE)); +#ifdef WITH_GUI_YES + answer = GuiModalDialog(GTK_MESSAGE_QUESTION, GTK_BUTTONS_NONE, insert_buttons, + _("Sector %" PRId64 ": %s\n\n" + "It may not be possible to recover from this error.\n" + "Should the reading continue and ignore this error?"), + s, GetLastSenseString(FALSE)); if(answer == 2) Closure->ignoreFatalSense = 2; if(!answer) - { - SetAdaptiveReadFootline(_("Aborted by unrecoverable error."), Closure->redText); + { GuiSetAdaptiveReadFootline(_("Aborted by unrecoverable error."), Closure->redText); + rc->earlyTermination = FALSE; /* suppress respective error message */ goto terminate; } @@ -1802,9 +1706,7 @@ reread: Stop(_("Failed writing to sector %" PRId64 " in image [%s]: %s"), b, "unv", strerror(errno)); -#ifndef WITH_CLI_ONLY_YES mark_sector(rc, b, Closure->yellowSector); -#endif if(rc->highestWrittenSector < b) rc->highestWrittenSector = b; @@ -1821,9 +1723,7 @@ reread: SetBit(rc->map, b); rc->readable++; -#ifndef WITH_CLI_ONLY_YES mark_sector(rc, b, Closure->greenSector); -#endif if(rc->highestWrittenSector < b) rc->highestWrittenSector = b; @@ -1876,9 +1776,7 @@ reread: && !GetBit(rc->map, layer_idx)) { SetBit(rc->map, layer_idx); rc->correctable++; -#ifndef WITH_CLI_ONLY_YES mark_sector(rc, layer_idx, Closure->greenSector); -#endif #ifdef CHECK_VISITED rc->count[layer_idx]++; @@ -1921,9 +1819,7 @@ reread: && !GetBit(rc->map, sector)) { SetBit(rc->map, sector); rc->correctable++; -#ifndef WITH_CLI_ONLY_YES mark_sector(rc, sector, Closure->greenSector); -#endif fill_correctable_gap(rc, sector); } } @@ -1948,10 +1844,9 @@ reread: print_progress(rc, TRUE); if(rc->readMode != IMAGE_ONLY) { PrintLog("%s", t); -#ifndef WITH_CLI_ONLY_YES - if(Closure->guiMode && rc->ei) - SetAdaptiveReadFootline(t, Closure->foreground); -#endif + if(rc->ei) + { GuiSetAdaptiveReadFootline(t, Closure->foreground); + } } if(Closure->eject) LoadMedium(rc->dh, FALSE); @@ -1963,20 +1858,10 @@ reread: { unsigned char buf[2048]; PrintCLI("\n"); - if(nsectors>1) PrintCLIorLabel( -#ifndef WITH_CLI_ONLY_YES -Closure->status, -#else -NULL, -#endif + if(nsectors>1) PrintCLIorLabel(Closure->status, _("Sectors %" PRId64 "-%" PRId64 ": %s\n"), s, s+nsectors-1, GetLastSenseString(FALSE)); - else PrintCLIorLabel( -#ifndef WITH_CLI_ONLY_YES -Closure->status, -#else -NULL, -#endif + else PrintCLIorLabel(Closure->status, _("Sector %" PRId64 ": %s\n"), s, GetLastSenseString(FALSE)); @@ -1996,9 +1881,7 @@ NULL, Stop(_("Failed writing to sector %" PRId64 " in image [%s]: %s"), s, "nds", strerror(errno)); -#ifndef WITH_CLI_ONLY_YES mark_sector(rc, s+i, Closure->redSector); -#endif } if(rc->highestWrittenSector < s+nsectors) @@ -2093,12 +1976,10 @@ finished: /* Force output of final results */ -#ifndef WITH_CLI_ONLY_YES if(Closure->guiMode) - { ChangeSpiralCursor(Closure->readAdaptiveSpiral, -1); + { GuiChangeSpiralCursor(Closure->readAdaptiveSpiral, -1); mark_sector(rc, 0, NULL); } -#endif /*** Summarize results. */ @@ -2114,10 +1995,7 @@ finished: PrintLog(_("\n%s\n" "(%" PRId64 " readable, %" PRId64 " correctable, %" PRId64 " still missing).\n"), t, rc->readable, rc->correctable, rc->expectedSectors-total); -#ifndef WITH_CLI_ONLY_YES - if(Closure->guiMode) - SetAdaptiveReadFootline(t, Closure->foreground); -#endif + GuiSetAdaptiveReadFootline(t, Closure->foreground); g_free(t); exitCode = EXIT_FAILURE; @@ -2129,10 +2007,7 @@ finished: { if(rc->readable == rc->expectedSectors) { char *t = _("\nGood! All sectors have been read.\n"); PrintLog("%s", t); -#ifndef WITH_CLI_ONLY_YES - if(Closure->guiMode) - SetAdaptiveReadFootline(t, Closure->foreground); -#endif + GuiSetAdaptiveReadFootline(t, Closure->foreground); if(Closure->eject) LoadMedium(rc->dh, FALSE); } @@ -2145,10 +2020,7 @@ finished: "%2d.%1d%% of the image have been read (%" PRId64 " sectors).\n"), t, percent/10, percent%10, rc->readable); -#ifndef WITH_CLI_ONLY_YES - if(Closure->guiMode) - SetAdaptiveReadFootline(t, Closure->foreground); -#endif + GuiSetAdaptiveReadFootline(t, Closure->foreground); g_free(t); exitCode = EXIT_FAILURE; } @@ -2166,9 +2038,7 @@ finished: rc->earlyTermination = FALSE; -#ifndef WITH_CLI_ONLY_YES terminate: -#endif cleanup((gpointer)rc); } diff --git a/src/read-linear-window.c b/src/read-linear-window.c index 7d2fb85..40ebe9b 100644 --- a/src/read-linear-window.c +++ b/src/read-linear-window.c @@ -19,8 +19,10 @@ * You should have received a copy of the GNU General Public License * along with dvdisaster. If not, see . */ -// DVDISASTER_GUI_FILE +/*** src type: only GUI code ***/ + +#ifdef WITH_GUI_YES #include "dvdisaster.h" #include "read-linear.h" @@ -52,10 +54,13 @@ static gboolean max_speed_idle_func(gpointer data) return FALSE; } -void InitializeCurve(void *rc_ptr, int max_rate, int can_c2) +void GuiInitializeCurve(void *rc_ptr, int max_rate, int can_c2) { read_closure *rc = (read_closure*)rc_ptr; int i; + if(!Closure->guiMode) + return; + Closure->readLinearCurve->maxY = max_rate; Closure->readLinearCurve->maxX = rc->image->dh->sectors/512; Closure->readLinearCurve->logMaxY = C2_CLAMP_VALUE; @@ -101,7 +106,7 @@ static gboolean curve_idle_func(gpointer data) gtk_label_set_text(GTK_LABEL(Closure->readLinearSpeed), utf); g_free(utf); - g_snprintf(buf, 80, _("Unreadable / skipped sectors: %" PRId64 ""), Closure->readErrors); + g_snprintf(buf, 80, _("Unreadable / skipped sectors: %" PRId64), Closure->readErrors); utf = g_locale_to_utf8(buf, -1, NULL, NULL, NULL); gtk_label_set_text(GTK_LABEL(Closure->readLinearErrors), utf); @@ -111,11 +116,11 @@ static gboolean curve_idle_func(gpointer data) for(i=rc->lastSegment; ipercent; i++) switch(Closure->readLinearCurve->ivalue[i]) - { case 0: DrawSpiralSegment(Closure->readLinearSpiral, Closure->blueSector, i); break; - case 1: DrawSpiralSegment(Closure->readLinearSpiral, Closure->greenSector, i); break; - case 2: DrawSpiralSegment(Closure->readLinearSpiral, Closure->redSector, i); break; - case 3: DrawSpiralSegment(Closure->readLinearSpiral, Closure->darkSector, i); break; - case 4: DrawSpiralSegment(Closure->readLinearSpiral, Closure->yellowSector, i); break; + { case 0: GuiDrawSpiralSegment(Closure->readLinearSpiral, Closure->blueSector, i); break; + case 1: GuiDrawSpiralSegment(Closure->readLinearSpiral, Closure->greenSector, i); break; + case 2: GuiDrawSpiralSegment(Closure->readLinearSpiral, Closure->redSector, i); break; + case 3: GuiDrawSpiralSegment(Closure->readLinearSpiral, Closure->darkSector, i); break; + case 4: GuiDrawSpiralSegment(Closure->readLinearSpiral, Closure->yellowSector, i); break; } rc->lastSegment = ci->percent; @@ -141,7 +146,7 @@ static gboolean curve_idle_func(gpointer data) gdk_window_clear(Closure->readLinearDrawingArea->window); redraw_curve(); rc->lastPlotted = ci->percent; - rc->lastPlottedY = CurveY(Closure->readLinearCurve, Closure->readLinearCurve->fvalue[ci->percent]); + rc->lastPlottedY = GuiCurveY(Closure->readLinearCurve, Closure->readLinearCurve->fvalue[ci->percent]); g_free(ci); g_mutex_lock(rc->rendererMutex); rc->activeRenderers--; @@ -151,14 +156,14 @@ static gboolean curve_idle_func(gpointer data) /*** Draw the changed curve part */ - x0 = CurveX(Closure->readLinearCurve, rc->lastPlotted); - y0 = CurveY(Closure->readLinearCurve, Closure->readLinearCurve->fvalue[rc->lastPlotted]); + x0 = GuiCurveX(Closure->readLinearCurve, rc->lastPlotted); + y0 = GuiCurveY(Closure->readLinearCurve, Closure->readLinearCurve->fvalue[rc->lastPlotted]); if(rc->lastPlottedY) y0 = rc->lastPlottedY; for(i=rc->lastPlotted+1; i<=ci->percent; i++) - { gint x1 = CurveX(Closure->readLinearCurve, i); - gint y1 = CurveY(Closure->readLinearCurve, Closure->readLinearCurve->fvalue[i]); - gint l1 = CurveLogY(Closure->readLinearCurve, Closure->readLinearCurve->lvalue[i]); + { gint x1 = GuiCurveX(Closure->readLinearCurve, i); + gint y1 = GuiCurveY(Closure->readLinearCurve, Closure->readLinearCurve->fvalue[i]); + gint l1 = GuiCurveLogY(Closure->readLinearCurve, Closure->readLinearCurve->lvalue[i]); if(Closure->readLinearCurve->lvalue[i]) { gdk_gc_set_rgb_fg_color(Closure->drawGC, Closure->logColor); @@ -191,12 +196,12 @@ static gboolean curve_idle_func(gpointer data) * Add one new data point */ -void AddCurveValues(void *rc_ptr, int percent, int color, int c2) +void GuiAddCurveValues(void *rc_ptr, int percent, int color, int c2) { read_closure *rc = (read_closure*)rc_ptr; curve_info *ci; int i; - if(percent < 0 || percent > 1000) + if(!Closure->guiMode || percent < 0 || percent > 1000) return; ci = g_malloc(sizeof(curve_info)); @@ -240,18 +245,23 @@ void AddCurveValues(void *rc_ptr, int percent, int color, int c2) static gboolean curve_mark_idle_func(gpointer data) { - DrawSpiral(Closure->readLinearSpiral); + GuiDrawSpiral(Closure->readLinearSpiral); return FALSE; } -void MarkExistingSectors(void) +void GuiMarkExistingSectors(void) { int i; - int x = Closure->readLinearCurve->rightX + 20; + int x; + if(!Closure->guiMode) + return; + + x = Closure->readLinearCurve->rightX + 20; + Closure->additionalSpiralColor = 3; - DrawSpiralLabel(Closure->readLinearSpiral, Closure->readLinearCurve->layout, - _("Already present"), Closure->darkSector, x, -1); + GuiDrawSpiralLabel(Closure->readLinearSpiral, Closure->readLinearCurve->layout, + _("Already present"), Closure->darkSector, x, -1); for(i=0; i<1000; i++) if(Closure->readLinearSpiral->segmentColor[i] == Closure->greenSector) @@ -274,8 +284,8 @@ static void update_geometry(void) /* Curve geometry */ - UpdateCurveGeometry(Closure->readLinearCurve, "99x", - Closure->readLinearSpiral->diameter + 30); + GuiUpdateCurveGeometry(Closure->readLinearCurve, "99x", + Closure->readLinearSpiral->diameter + 30); /* Spiral center */ @@ -285,7 +295,7 @@ static void update_geometry(void) if(Closure->crcBuf && Closure->crcBuf->crcCached) { int w,h; - SetText(Closure->readLinearCurve->layout, _("Sectors with CRC errors"), &w, &h); + GuiSetText(Closure->readLinearCurve->layout, _("Sectors with CRC errors"), &w, &h); Closure->readLinearSpiral->my -= h; } @@ -308,41 +318,41 @@ static void redraw_curve(void) x = Closure->readLinearCurve->rightX + 20; gdk_gc_set_rgb_fg_color(Closure->drawGC, Closure->curveColor); - SetText(Closure->readLinearCurve->layout, _("Medium state"), &w, &h); + GuiSetText(Closure->readLinearCurve->layout, _("Medium state"), &w, &h); gdk_draw_layout(d, Closure->drawGC, x, Closure->readLinearCurve->topY - h - 5, Closure->readLinearCurve->layout); if(Closure->additionalSpiralColor == 0) - DrawSpiralLabel(Closure->readLinearSpiral, Closure->readLinearCurve->layout, - _("Not touched this time"), Closure->curveColor, x, -1); + GuiDrawSpiralLabel(Closure->readLinearSpiral, Closure->readLinearCurve->layout, + _("Not touched this time"), Closure->curveColor, x, -1); if(Closure->additionalSpiralColor == 3) - DrawSpiralLabel(Closure->readLinearSpiral, Closure->readLinearCurve->layout, - _("Already present"), Closure->darkSector, x, -1); + GuiDrawSpiralLabel(Closure->readLinearSpiral, Closure->readLinearCurve->layout, + _("Already present"), Closure->darkSector, x, -1); - DrawSpiralLabel(Closure->readLinearSpiral, Closure->readLinearCurve->layout, - _("Successfully read"), Closure->greenSector, x, pos++); + GuiDrawSpiralLabel(Closure->readLinearSpiral, Closure->readLinearCurve->layout, + _("Successfully read"), Closure->greenSector, x, pos++); if(Closure->crcBuf && Closure->crcBuf->crcCached) - DrawSpiralLabel(Closure->readLinearSpiral, Closure->readLinearCurve->layout, - _("Sectors with CRC errors"), Closure->yellowSector, x, pos++); + GuiDrawSpiralLabel(Closure->readLinearSpiral, Closure->readLinearCurve->layout, + _("Sectors with CRC errors"), Closure->yellowSector, x, pos++); - DrawSpiralLabel(Closure->readLinearSpiral, Closure->readLinearCurve->layout, - _("Unreadable / skipped"), Closure->redSector, x, pos++); + GuiDrawSpiralLabel(Closure->readLinearSpiral, Closure->readLinearCurve->layout, + _("Unreadable / skipped"), Closure->redSector, x, pos++); - DrawSpiral(Closure->readLinearSpiral); + GuiDrawSpiral(Closure->readLinearSpiral); /* Redraw the curve */ - RedrawAxes(Closure->readLinearCurve); - RedrawCurve(Closure->readLinearCurve, 1000); + GuiRedrawAxes(Closure->readLinearCurve); + GuiRedrawCurve(Closure->readLinearCurve, 1000); } static gboolean expose_cb(GtkWidget *widget, GdkEventExpose *event, gpointer data) { - SetSpiralWidget(Closure->readLinearSpiral, widget); + GuiSetSpiralWidget(Closure->readLinearSpiral, widget); if(event->count) /* Exposure compression */ return TRUE; @@ -357,13 +367,13 @@ static gboolean expose_cb(GtkWidget *widget, GdkEventExpose *event, gpointer dat *** Reset the notebook contents for new scan/read action ***/ -void ResetLinearReadWindow() +void GuiResetLinearReadWindow() { gtk_notebook_set_current_page(GTK_NOTEBOOK(Closure->readLinearNotebook), 0); - ZeroCurve(Closure->readLinearCurve); - FillSpiral(Closure->readLinearSpiral, Closure->background); - DrawSpiral(Closure->readLinearSpiral); + GuiZeroCurve(Closure->readLinearCurve); + GuiFillSpiral(Closure->readLinearSpiral, Closure->background); + GuiDrawSpiral(Closure->readLinearSpiral); } /* @@ -390,16 +400,16 @@ static gboolean redraw_idle_func(gpointer data) return FALSE; } -void RedrawReadLinearWindow(void) -{ - g_idle_add(redraw_idle_func, NULL); +void GuiRedrawReadLinearWindow(void) +{ if(Closure->guiMode) + g_idle_add(redraw_idle_func, NULL); } /*** *** Create the notebook contents for the reading and scanning action ***/ -void CreateLinearReadWindow(GtkWidget *parent) +void GuiCreateLinearReadWindow(GtkWidget *parent) { GtkWidget *sep,*ignore,*d_area,*notebook,*hbox; Closure->readLinearHeadline = gtk_label_new(NULL); @@ -441,7 +451,8 @@ void CreateLinearReadWindow(GtkWidget *parent) ignore = gtk_label_new("footer_tab"); gtk_notebook_append_page(GTK_NOTEBOOK(notebook), Closure->readLinearFootline, ignore); - Closure->readLinearCurve = CreateCurve(d_area, _("Speed"), "%dx", 1000, CURVE_MEGABYTES); + Closure->readLinearCurve = GuiCreateCurve(d_area, _("Speed"), "%dx", 1000, CURVE_MEGABYTES); Closure->readLinearCurve->leftLogLabel = g_strdup(_("C2 errors")); - Closure->readLinearSpiral = CreateSpiral(Closure->grid, Closure->background, 10, 5, 1000); + Closure->readLinearSpiral = GuiCreateSpiral(Closure->grid, Closure->background, 10, 5, 1000); } +#endif /* WITH_GUI_YES */ diff --git a/src/read-linear.c b/src/read-linear.c index 0f8cd23..59d9028 100644 --- a/src/read-linear.c +++ b/src/read-linear.c @@ -20,6 +20,8 @@ * along with dvdisaster. If not, see . */ +/*** src type: some GUI code ***/ + #include "dvdisaster.h" #include "read-linear.h" @@ -57,14 +59,14 @@ static void send_eof(read_closure *rc) static void cleanup(gpointer data) { read_closure *rc = (read_closure*)data; -#ifndef WITH_CLI_ONLY_YES + int i; + int renderers_left = TRUE; +#ifdef WITH_GUI_YES int full_read = FALSE; int aborted = rc->earlyTermination; int scan_mode = rc->scanMode; #endif - int i; - int renderers_left = TRUE; - + /* Make sure that all spiral/curve render idle functions have finished. They depend on some structures we are going to free now. If Closure->stopActions == STOP_SHUTDOWN_ALL, the main thread is @@ -72,11 +74,7 @@ static void cleanup(gpointer data) idle functions. Executing the while loop would create a deadlock in that case. */ - while(renderers_left -#ifndef WITH_CLI_ONLY_YES - && Closure->stopActions != STOP_SHUTDOWN_ALL -#endif - ) + while(renderers_left && Closure->stopActions != STOP_SHUTDOWN_ALL) { g_mutex_lock(rc->rendererMutex); if(rc->activeRenderers<=0) renderers_left=FALSE; @@ -112,21 +110,17 @@ static void cleanup(gpointer data) /* Clean up reader thread */ -#ifndef WITH_CLI_ONLY_YES +#ifdef WITH_GUI_YES if(rc->image) full_read = (rc->readOK == rc->image->dh->sectors && !Closure->crcErrors); #endif - + UnregisterCleanup(); -#ifndef WITH_CLI_ONLY_YES - if(Closure->guiMode) - { if(rc->unreportedError) - SwitchAndSetFootline(Closure->readLinearNotebook, 1, Closure->readLinearFootline, - _("Aborted by unrecoverable error. %" PRId64 " sectors read, %" PRId64 " sectors unreadable/skipped so far."), - Closure->redMarkup, rc->readOK, Closure->readErrors); - } -#endif + if(rc->unreportedError) + GuiSwitchAndSetFootline(Closure->readLinearNotebook, 1, Closure->readLinearFootline, + _("Aborted by unrecoverable error. %" PRId64 " sectors read, %" PRId64 " sectors unreadable/skipped so far."), + Closure->redMarkup, rc->readOK, Closure->readErrors); if(rc->readerImage) if(!LargeClose(rc->readerImage)) @@ -173,30 +167,34 @@ static void cleanup(gpointer data) /* Continue with ecc file creation after read. NOTE: Images are NOT automatically augmented after a read. */ -#ifndef WITH_CLI_ONLY_YES +#ifdef WITH_GUI_YES if(Closure->readAndCreate && Closure->guiMode && !scan_mode && !aborted) /* General prerequisites */ { if( !strncmp(Closure->methodName, "RS01", 4) /* codec prerequisites */ || (!strncmp(Closure->methodName, "RS03", 4) && Closure->eccTarget == ECC_FILE) ) { if(!full_read) - { ModalDialog(GTK_MESSAGE_ERROR, GTK_BUTTONS_OK, NULL, - _("Automatic error correction file creation\n" - "is only possible after a full reading pass.\n")); - AllowActions(TRUE); + { GuiModalDialog(GTK_MESSAGE_ERROR, GTK_BUTTONS_OK, NULL, + _("Automatic error correction file creation\n" + "is only possible after a full reading pass.\n")); + GuiAllowActions(TRUE); } - else ContinueWithAction(ACTION_CREATE_CONT); + else GuiContinueWithAction(ACTION_CREATE_CONT); + } + else + { GuiAllowActions(TRUE); } - else AllowActions(TRUE); } else - if(Closure->guiMode) - AllowActions(TRUE); + { if(Closure->guiMode) + { GuiAllowActions(TRUE); + } + } /* In GUI mode both the reader and worker are spawned sub threads; however in CLI mode the reader is the main thread and must not be terminated. */ if(Closure->guiMode) g_thread_exit(0); -#endif +#endif /* WITH_GUI_YES */ } /*** @@ -211,23 +209,17 @@ static void register_reader(read_closure *rc) { if(rc->scanMode) /* Output messages differ in read and scan mode */ { RegisterCleanup(_("Scanning aborted"), cleanup, rc); -#ifndef WITH_CLI_ONLY_YES - if(Closure->guiMode) - SetLabelText(GTK_LABEL(Closure->readLinearHeadline), - "%s\n%s", - _("Scanning medium for read errors."), - _("Medium: not yet determined")); -#endif + GuiSetLabelText(Closure->readLinearHeadline, + "%s\n%s", + _("Scanning medium for read errors."), + _("Medium: not yet determined")); } else { RegisterCleanup(_("Reading aborted"), cleanup, rc); -#ifndef WITH_CLI_ONLY_YES - if(Closure->guiMode) - SetLabelText(GTK_LABEL(Closure->readLinearHeadline), - "%s\n%s", - _("Preparing for reading the medium image."), - _("Medium: not yet determined")); -#endif + GuiSetLabelText(Closure->readLinearHeadline, + "%s\n%s", + _("Preparing for reading the medium image."), + _("Medium: not yet determined")); } } @@ -252,34 +244,26 @@ static void determine_mode(read_closure *rc) rc->msg = g_strdup(_("Scanning medium for read errors.")); PrintLog("%s\n", rc->msg); -#ifndef WITH_CLI_ONLY_YES - if(Closure->guiMode) - { if(rc->eccMethod) - SetLabelText(GTK_LABEL(Closure->readLinearHeadline), - "%s\n- %s -", rc->msg, - _("Reading CRC information")); - - else - SetLabelText(GTK_LABEL(Closure->readLinearHeadline), - "%s\n%s", rc->msg, rc->image->dh->mediumDescr); + if(rc->eccMethod) + { GuiSetLabelText(Closure->readLinearHeadline, + "%s\n- %s -", rc->msg, + _("Reading CRC information")); + } + else + { GuiSetLabelText(Closure->readLinearHeadline, + "%s\n%s", + rc->msg, rc->image->dh->mediumDescr); } -#endif rc->readMarker = 0; -#ifndef WITH_CLI_ONLY_YES - if(Closure->guiMode) - InitializeCurve(rc, rc->image->dh->maxRate, rc->image->dh->canC2Scan); -#endif - + GuiInitializeCurve(rc, rc->image->dh->maxRate, rc->image->dh->canC2Scan); return; } /*** If no image file exists, open a new one. */ -#ifndef WITH_CLI_ONLY_YES reopen_image: -#endif if(!LargeStat(Closure->imageName, &image_size)) { if(rc->msg) g_free(rc->msg); @@ -291,25 +275,20 @@ reopen_image: Stop(_("Can't open %s:\n%s"),Closure->imageName,strerror(errno)); PrintLog(_("Creating new %s image.\n"),Closure->imageName); -#ifndef WITH_CLI_ONLY_YES - if(Closure->guiMode) - { if(rc->eccMethod) - SetLabelText(GTK_LABEL(Closure->readLinearHeadline), + if(rc->eccMethod) + { GuiSetLabelText(Closure->readLinearHeadline, "%s\n%s", rc->msg, _("Reading CRC information")); - else - SetLabelText(GTK_LABEL(Closure->readLinearHeadline), - "%s\n%s", rc->msg, rc->image->dh->mediumDescr); } -#endif + else + { GuiSetLabelText(Closure->readLinearHeadline, + "%s\n%s", rc->msg, + rc->image->dh->mediumDescr); + } rc->rereading = FALSE; rc->readMarker = 0; -#ifndef WITH_CLI_ONLY_YES - if(Closure->guiMode) - InitializeCurve(rc, rc->image->dh->maxRate, rc->image->dh->canC2Scan); -#endif - + GuiInitializeCurve(rc, rc->image->dh->maxRate, rc->image->dh->canC2Scan); return; } @@ -354,20 +333,17 @@ reopen_image: if(!unknown_fingerprint && memcmp(image_fp, medium_fp, 16)) { -#ifndef WITH_CLI_ONLY_YES if(!Closure->guiMode) -#endif Stop(_("Image file does not match the optical disc.")); -#ifndef WITH_CLI_ONLY_YES else - { int answer = ConfirmImageDeletion(Closure->imageName); + { int answer = GuiConfirmImageDeletion(Closure->imageName); if(!answer) { rc->unreportedError = FALSE; - SwitchAndSetFootline(Closure->readLinearNotebook, 1, Closure->readLinearFootline, - _("Reading aborted. Please select a different image file."), - Closure->redMarkup); - cleanup((gpointer)rc); + GuiSwitchAndSetFootline(Closure->readLinearNotebook, 1, Closure->readLinearFootline, + _("Reading aborted. Please select a different image file."), + Closure->redMarkup); + cleanup((gpointer)rc); } else /* Start over with new file */ { LargeClose(rc->readerImage); @@ -376,7 +352,6 @@ reopen_image: goto reopen_image; } } -#endif } /*** If the image is not complete yet, first aim to read the @@ -388,25 +363,18 @@ reopen_image: { PrintLog(_("Completing image %s. Continuing with sector %" PRId64 ".\n"), Closure->imageName, rc->readMarker); rc->firstSector = rc->readMarker; -#ifndef WITH_CLI_ONLY_YES Closure->additionalSpiralColor = 0; /* blue */ -#endif } else { PrintLog(_("Completing image %s. Only missing sectors will be read.\n"), Closure->imageName); -#ifndef WITH_CLI_ONLY_YES Closure->additionalSpiralColor = 3; /* dark green*/ -#endif } -#ifndef WITH_CLI_ONLY_YES - if(Closure->guiMode) - SetLabelText(GTK_LABEL(Closure->readLinearHeadline), - "%s\n%s",rc->msg,rc->image->dh->mediumDescr); + GuiSetLabelText(Closure->readLinearHeadline, + "%s\n%s", + rc->msg,rc->image->dh->mediumDescr); - if(Closure->guiMode) - InitializeCurve(rc, rc->image->dh->maxRate, rc->image->dh->canC2Scan); -#endif + GuiInitializeCurve(rc, rc->image->dh->maxRate, rc->image->dh->canC2Scan); } /* @@ -445,6 +413,19 @@ static void fill_gap(read_closure *rc) static void prepare_crc_cache(read_closure *rc) { + /*** Remove old cached CRC information. + The following policy holds for the CRC cache: + - scan/read and verify create the crc cache, + - but do not use cached information from previous run themselves; + e.g. existing caches are deleted here + - create uses cached information if it is available + - fix is agnostic about cached information */ + + if(Closure->crcBuf) /* release old cached information */ + { FreeCrcBuf(Closure->crcBuf); + Closure->crcBuf = NULL; + } + /*** Memory for the CRC32 sums is needed in two cases: */ /* a) We have suitable ecc data and want to compare CRC32sums @@ -461,23 +442,16 @@ static void prepare_crc_cache(read_closure *rc) PrintCLI("%s (%s) ... ",_("Reading CRC information from ecc data"), method_name); - // FIXME: reuse CrcBuf and write respective message - -#ifndef WITH_CLI_ONLY_YES - if(Closure->guiMode) - SetLabelText(GTK_LABEL(Closure->readLinearHeadline), + GuiSetLabelText(Closure->readLinearHeadline, "%s\n%s", _("Reading CRC information from ecc data"), rc->image->dh->mediumDescr); -#endif if(rc->eccMethod->getCrcBuf) - { Closure->crcBuf = rc->eccMethod->getCrcBuf(rc->image); + { + Closure->crcBuf = rc->eccMethod->getCrcBuf(rc->image); Closure->crcBuf->crcCached = TRUE; -#ifndef WITH_CLI_ONLY_YES - if(Closure->guiMode) - RedrawReadLinearWindow(); -#endif + GuiRedrawReadLinearWindow(); /* Augmented image codecs provide the CRCs and md5sums for the data portion, but not for the full image. @@ -489,15 +463,13 @@ static void prepare_crc_cache(read_closure *rc) else Closure->crcBuf = NULL; if(rc->eccMethod->resetCksums) - { rc->doChecksumsFromCodec = TRUE; // FIXME - remove? + { rc->doChecksumsFromCodec = TRUE; rc->eccMethod->resetCksums(rc->image); } -#ifndef WITH_CLI_ONLY_YES - if(Closure->guiMode) - SetLabelText(GTK_LABEL(Closure->readLinearHeadline), - "%s\n%s", rc->msg, rc->image->dh->mediumDescr); -#endif + GuiSetLabelText(Closure->readLinearHeadline, + "%s\n%s", + rc->msg, rc->image->dh->mediumDescr); PrintCLI(_("done.\n")); return; } @@ -506,7 +478,7 @@ static void prepare_crc_cache(read_closure *rc) The image CRC32 and md5sum are calculated on the fly, as they may be used for ecc creation later. */ - Closure->crcBuf = CreateCrcBuf(rc->image); // FIXME: reuse, delete, ... + Closure->crcBuf = CreateCrcBuf(rc->image); rc->doChecksumsFromImage = CRCBUF_UPDATE_ALL; } @@ -516,18 +488,14 @@ static void prepare_crc_cache(read_closure *rc) static void prepare_timer(read_closure *rc) { -#ifndef WITH_CLI_ONLY_YES if(Closure->guiMode && Closure->spinupDelay) - SwitchAndSetFootline(Closure->readLinearNotebook, 1, Closure->readLinearFootline, - _("Waiting %d seconds for drive to spin up...\n"), Closure->spinupDelay); -#endif + GuiSwitchAndSetFootline(Closure->readLinearNotebook, 1, Closure->readLinearFootline, + _("Waiting %d seconds for drive to spin up...\n"), Closure->spinupDelay); SpinupDevice(rc->image->dh); -#ifndef WITH_CLI_ONLY_YES if(Closure->guiMode && Closure->spinupDelay) - SwitchAndSetFootline(Closure->readLinearNotebook, 0, Closure->readLinearFootline, "ignore"); -#endif + GuiSwitchAndSetFootline(Closure->readLinearNotebook, 0, Closure->readLinearFootline, "ignore"); if(Closure->spinupDelay) /* eliminate initial seek time from timing */ ReadSectors(rc->image->dh, rc->alignedBuf[0]->buf, rc->firstSector, 1); @@ -542,13 +510,12 @@ static void prepare_timer(read_closure *rc) static void show_progress(read_closure *rc) { int percent; -#ifndef WITH_CLI_ONLY_YES if(Closure->guiMode && rc->lastErrorsPrinted != Closure->readErrors) - { SetLabelText(GTK_LABEL(Closure->readLinearErrors), - _("Unreadable / skipped sectors: %" PRId64 ""), Closure->readErrors); + { GuiSetLabelText(Closure->readLinearErrors, + _("Unreadable / skipped sectors: %" PRId64), + Closure->readErrors); rc->lastErrorsPrinted = Closure->readErrors; } -#endif if(rc->readPos>rc->readMarker) rc->readMarker=rc->readPos; percent = (1000*rc->readPos)/rc->image->dh->sectors; @@ -561,24 +528,24 @@ static void show_progress(read_closure *rc) if(rc->lastPercent != percent) { gulong ignore; -#ifndef WITH_CLI_ONLY_YES + +#ifdef WITH_GUI_YES int color; - if(Closure->guiMode) - ChangeSpiralCursor(Closure->readLinearSpiral, percent); + GuiChangeSpiralCursor(Closure->readLinearSpiral, percent); #endif - + if(rc->readOK <= rc->lastReadOK) /* nothing read since last sample? */ { rc->speed = 0.0; -#ifndef WITH_CLI_ONLY_YES + +#ifdef WITH_GUI_YES if(Closure->readErrors - rc->previousReadErrors > 0) color = 2; else if(Closure->crcErrors - rc->previousCRCErrors > 0) color = 4; else color = Closure->additionalSpiralColor; - if(Closure->guiMode) - AddCurveValues(rc, percent, color, rc->maxC2); + GuiAddCurveValues(rc, percent, color, rc->maxC2); #endif rc->lastPercent = percent; rc->lastSpeed = rc->speed; @@ -590,25 +557,21 @@ static void show_progress(read_closure *rc) { double kb_read = (rc->readOK - rc->lastReadOK) * 2.0; double elapsed = g_timer_elapsed(rc->speedTimer, &ignore); double kb_sec = kb_read / elapsed; - -#ifndef WITH_CLI_ONLY_YES + +#ifdef WITH_GUI_YES if(Closure->readErrors - rc->previousReadErrors > 0) color = 2; else if(Closure->crcErrors - rc->previousCRCErrors > 0) color = 4; else color = 1; #endif - + if(rc->firstSpeedValue) { rc->speed = kb_sec / rc->image->dh->singleRate; -#ifndef WITH_CLI_ONLY_YES - if(Closure->guiMode) - { AddCurveValues(rc, rc->lastPercent, color, rc->maxC2); - AddCurveValues(rc, percent, color, rc->maxC2); - } -#endif - + GuiAddCurveValues(rc, rc->lastPercent, color, rc->maxC2); + GuiAddCurveValues(rc, percent, color, rc->maxC2); + rc->firstSpeedValue = FALSE; rc->lastPercent = percent; rc->lastSpeed = rc->speed; @@ -630,10 +593,7 @@ static void show_progress(read_closure *rc) cut_peaks=3; } -#ifndef WITH_CLI_ONLY_YES - if(Closure->guiMode) - AddCurveValues(rc, percent, color, rc->maxC2); -#endif + GuiAddCurveValues(rc, percent, color, rc->maxC2); if(Closure->speedWarning && rc->lastSpeed > 0.5) { double delta = rc->speed - rc->lastSpeed; @@ -781,9 +741,9 @@ update_mutex: *** The reader part ***/ -#ifndef WITH_CLI_ONLY_YES +#ifdef WITH_GUI_YES static void insert_buttons(GtkDialog *dialog) -{ +{ gtk_dialog_add_buttons(dialog, _utf("Ignore once"), 1, _utf("Ignore always"), 2, @@ -795,6 +755,7 @@ void ReadMediumLinear(gpointer data) { read_closure *rc = g_malloc0(sizeof(read_closure)); int md5_failure = 0; int unrecoverable_sectors = 0; + int corrupted_sectors = 0; GError *err = NULL; int nsectors; char *t = NULL; @@ -871,10 +832,12 @@ void ReadMediumLinear(gpointer data) if(rc->eccHeader && (Closure->version < rc->eccHeader->neededVersion)) { - int answer; +#ifdef WITH_GUI_YES + if(Closure->guiMode) + { int answer; if(rc->image->eccFileState == ECCFILE_PRESENT) - answer = ModalWarningOrCLI(GTK_MESSAGE_WARNING, GTK_BUTTONS_OK_CANCEL, NULL, + answer = ModalWarning(GTK_MESSAGE_WARNING, GTK_BUTTONS_OK_CANCEL, NULL, _("This ecc file requires dvdisaster-%d.%d!\n\n" "Proceeding could trigger incorrect behaviour.\n" "Please read the image without using this ecc file\n" @@ -882,7 +845,7 @@ void ReadMediumLinear(gpointer data) rc->eccHeader->neededVersion/10000, (rc->eccHeader->neededVersion%10000)/100); else - answer = ModalWarningOrCLI(GTK_MESSAGE_WARNING, GTK_BUTTONS_OK_CANCEL, NULL, + answer = ModalWarning(GTK_MESSAGE_WARNING, GTK_BUTTONS_OK_CANCEL, NULL, _("This image requires dvdisaster-%d.%d!\n\n" "Proceeding could trigger incorrect behaviour.\n" "Please upgrade dvdisaster.\n\n"), @@ -891,24 +854,36 @@ void ReadMediumLinear(gpointer data) PrintCLI("\n"); if(!answer) - { -#ifndef WITH_CLI_ONLY_YES - SwitchAndSetFootline(Closure->readLinearNotebook, 1, Closure->readLinearFootline, + { GuiSwitchAndSetFootline(Closure->readLinearNotebook, 1, Closure->readLinearFootline, _("Aborted by user request! %" PRId64 " sectors read, %" PRId64 " sectors unreadable/skipped so far."), Closure->redMarkup, rc->readOK,Closure->readErrors); -#endif rc->unreportedError = FALSE; /* suppress respective error message */ goto terminate; } + } + else +#endif /* WITH_GUI_YES */ + { if(rc->image->eccFileState == ECCFILE_PRESENT) + PrintCLI(_("* Warning: This ecc file requires dvdisaster-%d.%d!\n" + "* Proceeding could trigger incorrect behaviour.\n" + "* Please read the image without using this ecc file\n" + "* or upgrade dvdisaster.\n\n"), + rc->eccHeader->neededVersion/10000, + (rc->eccHeader->neededVersion%10000)/100); + else + PrintCLI(_("* Warning: This image requires dvdisaster-%d.%d!\n" + "* Proceeding could trigger incorrect behaviour.\n" + "* Please upgrade dvdisaster.\n\n"), + rc->eccHeader->neededVersion/10000, + (rc->eccHeader->neededVersion%10000)/100); + } } /*** See if user wants to limit the read range. */ GetReadingRange(rc->image->dh->sectors, &rc->firstSector, &rc->lastSector); -#ifndef WITH_CLI_ONLY_YES if(rc->firstSector > 0) /* Mark skipped sectors */ Closure->additionalSpiralColor = 0; /* blue */ -#endif /*** Determine the reading mode. There are three possibilities: 1. scanning (rc->scanMode == TRUE) @@ -973,10 +948,8 @@ next_reading_pass: break; } Closure->sectorSkip = 0; -#ifndef WITH_CLI_ONLY_YES - if(Closure->guiMode) - MarkExistingSectors(); -#endif + GuiMarkExistingSectors(); + rc->lastCopied = 0; /* Start rendering the spiral from the beginning */ } @@ -993,18 +966,16 @@ next_reading_pass: while(rc->readPos<=rc->lastSector) { int cluster_mask = rc->image->dh->clusterSize-1; -#ifndef WITH_CLI_ONLY_YES if(Closure->stopActions) /* somebody hit the Stop button */ { if(Closure->stopActions == STOP_CURRENT_ACTION) /* suppress memleak warning when closing window */ - { SwitchAndSetFootline(Closure->readLinearNotebook, 1, Closure->readLinearFootline, - _("Aborted by user request! %" PRId64 " sectors read, %" PRId64 " sectors unreadable/skipped so far."), - Closure->redMarkup, rc->readOK,Closure->readErrors); + { GuiSwitchAndSetFootline(Closure->readLinearNotebook, 1, Closure->readLinearFootline, + _("Aborted by user request! %" PRId64 " sectors read, %" PRId64 " sectors unreadable/skipped so far."), + Closure->redMarkup, rc->readOK,Closure->readErrors); } rc->unreportedError = FALSE; /* suppress respective error message */ goto terminate; } -#endif /*** Decide between reading in fast mode (dh->clusterSize sectors at once) or reading one sector at a time. @@ -1056,13 +1027,19 @@ reread: n = LargeRead(rc->readerImage, sector_buf, 2048); if(n != 2048) - Stop(_("unexpected read error in image for sector %" PRId64 ""),rc->readPos); + Stop(_("unexpected read error in image for sector %" PRId64),rc->readPos); err = CheckForMissingSector(sector_buf, rc->readPos+i, rc->image->fpState == 2 ? rc->image->imageFP : NULL, rc->image->fpSector); +#if 0 /* delete me: only explain missing sectors in the medium, not the image */ if(err != SECTOR_PRESENT) ExplainMissingSector(sector_buf, rc->readPos+i, err, SOURCE_IMAGE, &unrecoverable_sectors); else +#endif + if(err != SECTOR_PRESENT) + { unrecoverable_sectors++; + } + else { if(!Closure->crcBuf || CheckAgainstCrcBuffer(Closure->crcBuf, rc->readPos+i, sector_buf) != CRC_BAD) { ok++; /* CRC unavailable or good */ @@ -1106,30 +1083,28 @@ reread: if(status && !Closure->ignoreFatalSense && rc->image->dh->sense.sense_key && rc->image->dh->sense.sense_key != 3 && rc->image->dh->sense.sense_key != 5) { -#ifndef WITH_CLI_ONLY_YES - int answer; - - if(!Closure->guiMode) +#ifdef WITH_GUI_YES + int answer; #endif + if(!Closure->guiMode) Stop(_("Sector %" PRId64 ": %s\nCan not recover from above error.\n" "Use the --ignore-fatal-sense option to override."), rc->readPos, GetLastSenseString(FALSE)); -#ifndef WITH_CLI_ONLY_YES - answer = ModalDialog(GTK_MESSAGE_QUESTION, GTK_BUTTONS_NONE, insert_buttons, - _("Sector %" PRId64 ": %s\n\n" - "It may not be possible to recover from this error.\n" - "Should the reading continue and ignore this error?"), - rc->readPos, GetLastSenseString(FALSE)); +#ifdef WITH_GUI_YES + answer = GuiModalDialog(GTK_MESSAGE_QUESTION, GTK_BUTTONS_NONE, insert_buttons, + _("Sector %" PRId64 ": %s\n\n" + "It may not be possible to recover from this error.\n" + "Should the reading continue and ignore this error?"), + rc->readPos, GetLastSenseString(FALSE)); if(answer == 2) Closure->ignoreFatalSense = 2; if(!answer) - { - SwitchAndSetFootline(Closure->readLinearNotebook, 1, Closure->readLinearFootline, - _("Aborted by user request! %" PRId64 " sectors read, %" PRId64 " sectors unreadable/skipped so far."), - Closure->redMarkup, rc->readOK,Closure->readErrors); + { GuiSwitchAndSetFootline(Closure->readLinearNotebook, 1, Closure->readLinearFootline, + _("Aborted by user request! %" PRId64 " sectors read, %" PRId64 " sectors unreadable/skipped so far."), + Closure->redMarkup, rc->readOK,Closure->readErrors); rc->unreportedError = FALSE; /* suppress respective error message */ goto terminate; } @@ -1167,7 +1142,9 @@ reread: rc->image->fpState == 2 ? rc->image->imageFP : NULL, rc->image->fpSector); if(err != SECTOR_PRESENT) - ExplainMissingSector(sector_buf+i*2048, rc->readPos+i, err, SOURCE_MEDIUM, &unrecoverable_sectors); + { ExplainMissingSector(sector_buf+i*2048, rc->readPos+i, err, SOURCE_MEDIUM, &unrecoverable_sectors); + corrupted_sectors++; /* readable, but written corrupted */ + } } } @@ -1275,12 +1252,7 @@ reread: if(Closure->sectorSkip && nsectors > 1) { int i; - PrintCLIorLabel( -#ifndef WITH_CLI_ONLY_YES -Closure->status, -#else -NULL, -#endif + PrintCLIorLabel(Closure->status, _("Sector %" PRId64 ": %s Skipping %d sectors.\n"), rc->readPos, GetLastSenseString(FALSE), nfill-1); for(i=0; istatus, -#else -NULL, -#endif + { PrintCLIorLabel(Closure->status, _("Sector %" PRId64 ": %s\n"), rc->readPos, GetLastSenseString(FALSE)); if(rc->readPos >= rc->image->dh->sectors - 2) tao_tail++; @@ -1336,11 +1303,10 @@ step_counter: to checksum means we have ecc data - we can fix the image using ecc rather than by re-reading it. */ -#ifndef WITH_CLI_ONLY_YES - if(Closure->guiMode) - ChangeSpiralCursor(Closure->readLinearSpiral, -1); /* switch cursor off */ +#ifdef WITH_GUI_YES + GuiChangeSpiralCursor(Closure->readLinearSpiral, -1); /* switch cursor off */ #endif - + rc->pass++; rc->image->dh->pass = rc->pass; @@ -1349,14 +1315,10 @@ step_counter: && rc->pass < Closure->readingPasses) { int renderers_left = TRUE; -#ifndef WITH_CLI_ONLY_YES - if(Closure->guiMode) - SetLabelText(GTK_LABEL(Closure->readLinearHeadline), - _("Trying to complete image, reading pass %d of %d.\n%s"), - rc->pass+1, Closure->readingPasses, rc->image->dh->mediumDescr); - else -#endif - PrintCLI(_("\nTrying to complete image, reading pass %d of %d.\n"), + GuiSetLabelText(Closure->readLinearHeadline, + _("Trying to complete image, reading pass %d of %d.\n%s"), + rc->pass+1, Closure->readingPasses, rc->image->dh->mediumDescr); + PrintCLI(_("\nTrying to complete image, reading pass %d of %d.\n"), rc->pass+1, Closure->readingPasses); @@ -1400,7 +1362,13 @@ step_counter: /* We were reading the image for the first time */ else /* not rereading */ - { /* Image was fully readable and had no CRC errors (if CRC was available at all!). + { /* Image was fully readable, but contained some sectors marked as defective */ + if(corrupted_sectors > 0 && !Closure->readErrors) + { t = g_strdup_printf(_("All sectors are readable, but %d contain defective content."), + corrupted_sectors); + } + else + /* Image was fully readable and had no CRC errors (if CRC was available at all!). So we had no faulty sectors, but ... */ if(!Closure->readErrors && !Closure->crcErrors) { @@ -1417,11 +1385,11 @@ step_counter: if(!t) { if(rc->eccMethod) /* we had CRC sums to compare against */ - { if(rc->crcIncomplete) - t = g_strdup(_("All sectors successfully read, but incomplete or damaged checksums.")); - else t = g_strdup(_("All sectors successfully read. Checksums match.")); - } - else t = g_strdup(_("All sectors successfully read.")); + { if(rc->crcIncomplete) + t = g_strdup(_("All sectors successfully read, but incomplete or damaged checksums.")); + else t = g_strdup(_("All sectors successfully read. Checksums match.")); + } + else t = g_strdup(_("All sectors successfully read.")); } } else /* we have unreadable or damaged sectors */ @@ -1439,14 +1407,18 @@ step_counter: } PrintLog("\n%s\n",t); -#ifndef WITH_CLI_ONLY_YES if(Closure->guiMode) - { if(rc->scanMode) SwitchAndSetFootline(Closure->readLinearNotebook, 1, Closure->readLinearFootline, - "%s%s",_("Scanning finished: "),t); - else SwitchAndSetFootline(Closure->readLinearNotebook, 1, Closure->readLinearFootline, - "%s%s",_("Reading finished: "),t); + { if(rc->scanMode) + { GuiSwitchAndSetFootline(Closure->readLinearNotebook, + 1, Closure->readLinearFootline, + "%s%s",_("Scanning finished: "),t); + } + else + { GuiSwitchAndSetFootline(Closure->readLinearNotebook, + 1, Closure->readLinearFootline, + "%s%s",_("Reading finished: "),t); + } } -#endif if(t) g_free(t); if(!Closure->fixedSpeedValues) @@ -1455,22 +1427,32 @@ step_counter: if(rc->image->dh->mainType == CD && tao_tail && tao_tail == Closure->readErrors && !Closure->noTruncate) { int answer; -#ifndef WITH_CLI_ONLY_YES if(Closure->guiMode) - answer = ModalWarningOrCLI(GTK_MESSAGE_WARNING, GTK_BUTTONS_OK_CANCEL, NULL, + answer = ModalWarning(GTK_MESSAGE_WARNING, GTK_BUTTONS_OK_CANCEL, NULL, _("%d sectors missing at the end of the disc.\n" - "This is okay if the CD was written in TAO (track at once) mode.\n" - "The Image will be truncated accordingly. See the manual for details.\n"), - tao_tail); - else -#endif - answer = ModalWarningOrCLI(GTK_MESSAGE_WARNING, GTK_BUTTONS_OK_CANCEL, NULL, + "This is okay if the CD was written in TAO (track at once) mode.\n%s"), + tao_tail, + rc->scanMode + ? + _("See the manual for details.\n") + : + _("The Image will be truncated accordingly. See the manual for details.\n") + ); + else + { answer = ModalWarning(GTK_MESSAGE_WARNING, GTK_BUTTONS_OK_CANCEL, NULL, _("%d sectors missing at the end of the disc.\n" - "This is okay if the CD was written in TAO (track at once) mode.\n" - "The Image will be truncated accordingly. See the manual for details.\n" - "Use the --dao option to disable image truncating.\n"), - tao_tail); - + "This is okay if the CD was written in TAO (track at once) mode.\n%s"), + tao_tail, + rc->scanMode + ? + _("See the manual for details.\n" + "Use the --dao option to disable this message.\n") + : + _("The Image will be truncated accordingly. See the manual for details.\n" + "Use the --dao option to disable image truncating.\n") + + ); + } if(!rc->scanMode && answer) if(!LargeTruncate(rc->writerImage, (gint64)(2048*(rc->image->dh->sectors-tao_tail)))) Stop(_("Could not truncate %s: %s\n"),Closure->imageName,strerror(errno)); diff --git a/src/recover-raw.c b/src/recover-raw.c index e9b730e..d45b91d 100644 --- a/src/recover-raw.c +++ b/src/recover-raw.c @@ -20,6 +20,8 @@ * along with dvdisaster. If not, see . */ +/*** src type: no GUI code ***/ + #include "dvdisaster.h" /* @@ -475,7 +477,7 @@ static int simple_lec(RawBuffer *rb, unsigned char *frame, char *msg) if(q_failures || p_failures || q_corrected || p_corrected) { - PrintCLIorLabel(STATUS_LABEL_OR_NULL, + PrintCLIorLabel(Closure->status, "Sector %" PRId64 " L-EC P/Q results: %d/%d failures, %d/%d corrected (%s).\n", rb->lba, p_failures, q_failures, p_corrected, q_corrected, msg); return 1; @@ -557,7 +559,7 @@ int ValidateRawSector(RawBuffer *rb, unsigned char *frame, char *msg) /* Tell user that L-EC succeeded */ if(lec_did_sth) - PrintCLIorLabel(STATUS_LABEL_OR_NULL, + PrintCLIorLabel(Closure->status, "Sector %" PRId64 ": Recovered in raw reader by L-EC.\n", rb->lba); @@ -890,7 +892,7 @@ int TryCDFrameRecovery(RawBuffer *rb, unsigned char *outbuf) if(CheckEDC(rb->recovered, rb->xaMode) && CheckMSF(rb->recovered, rb->lba, STRICT_MSF_CHECK)) { - PrintCLIorLabel(STATUS_LABEL_OR_NULL, + PrintCLIorLabel(Closure->status, "Sector %" PRId64 ": Good. Data section passes EDC test.\n", rb->lba); memcpy(outbuf, rb->recovered+rb->dataOffset, 2048); @@ -906,7 +908,7 @@ int TryCDFrameRecovery(RawBuffer *rb, unsigned char *outbuf) if(CheckEDC(rb->recovered, rb->xaMode) && CheckMSF(rb->recovered, rb->lba, STRICT_MSF_CHECK)) { - PrintCLIorLabel(STATUS_LABEL_OR_NULL, + PrintCLIorLabel(Closure->status, "Sector %" PRId64 ": Recovered in raw reader after correcting sync pattern.\n", rb->lba); @@ -923,7 +925,7 @@ int TryCDFrameRecovery(RawBuffer *rb, unsigned char *outbuf) if(CheckEDC(rb->recovered, rb->xaMode) && CheckMSF(rb->recovered, rb->lba, STRICT_MSF_CHECK)) { - PrintCLIorLabel(STATUS_LABEL_OR_NULL, + PrintCLIorLabel(Closure->status, "Sector %" PRId64 ": Recovered in raw reader by iterative L-EC.\n", rb->lba); @@ -946,8 +948,8 @@ int TryCDFrameRecovery(RawBuffer *rb, unsigned char *outbuf) if(CheckEDC(rb->recovered, rb->xaMode) && CheckMSF(rb->recovered, rb->lba, STRICT_MSF_CHECK)) - { PrintCLIorLabel(STATUS_LABEL_OR_NULL, - "Sector %lld: Recovered in raw reader by smart L-EC.\n", + { PrintCLIorLabel(Closure->status, + "Sector %" PRId64 ": Recovered in raw reader by smart L-EC.\n", rb->lba); memcpy(outbuf, rb->recovered+rb->dataOffset, 2048); return 0; @@ -958,7 +960,7 @@ int TryCDFrameRecovery(RawBuffer *rb, unsigned char *outbuf) if(CheckEDC(rb->recovered, rb->xaMode) && CheckMSF(rb->recovered, rb->lba, STRICT_MSF_CHECK)) - { PrintCLIorLabel(STATUS_LABEL_OR_NULL, + { PrintCLIorLabel(Closure->status, "Sector %" PRId64 ": Recovered in raw reader by plausible sector search (0).\n", rb->lba); memcpy(outbuf, rb->recovered+rb->dataOffset, 2048); @@ -969,7 +971,7 @@ int TryCDFrameRecovery(RawBuffer *rb, unsigned char *outbuf) if(CheckEDC(rb->recovered, rb->xaMode) && CheckMSF(rb->recovered, rb->lba, STRICT_MSF_CHECK)) - { PrintCLIorLabel(STATUS_LABEL_OR_NULL, + { PrintCLIorLabel(Closure->status, "Sector %" PRId64 ": Recovered in raw reader by brute force plausible sector search (0).\n", rb->lba); memcpy(outbuf, rb->recovered+rb->dataOffset, 2048); @@ -980,7 +982,7 @@ int TryCDFrameRecovery(RawBuffer *rb, unsigned char *outbuf) if(CheckEDC(rb->recovered, rb->xaMode) && CheckMSF(rb->recovered, rb->lba, STRICT_MSF_CHECK)) - { PrintCLIorLabel(STATUS_LABEL_OR_NULL, + { PrintCLIorLabel(Closure->status, "Sector %" PRId64 ": Recovered in raw reader by mutual ack heuristic (0).\n", rb->lba); memcpy(outbuf, rb->recovered+rb->dataOffset, 2048); @@ -991,7 +993,7 @@ int TryCDFrameRecovery(RawBuffer *rb, unsigned char *outbuf) if(CheckEDC(rb->recovered, rb->xaMode) && CheckMSF(rb->recovered, rb->lba, STRICT_MSF_CHECK)) - { PrintCLIorLabel(STATUS_LABEL_OR_NULL, + { PrintCLIorLabel(Closure->status, "Sector %" PRId64 ": Recovered in raw reader by heuristic L-EC (0).\n", rb->lba); memcpy(outbuf, rb->recovered+rb->dataOffset, 2048); @@ -1002,7 +1004,7 @@ int TryCDFrameRecovery(RawBuffer *rb, unsigned char *outbuf) if(CheckEDC(rb->recovered, rb->xaMode) && CheckMSF(rb->recovered, rb->lba, STRICT_MSF_CHECK)) - { PrintCLIorLabel(STATUS_LABEL_OR_NULL, + { PrintCLIorLabel(Closure->status, "Sector %" PRId64 ": Recovered in raw reader by plausible sector search (1).\n", rb->lba); memcpy(outbuf, rb->recovered+rb->dataOffset, 2048); @@ -1013,7 +1015,7 @@ int TryCDFrameRecovery(RawBuffer *rb, unsigned char *outbuf) if(CheckEDC(rb->recovered, rb->xaMode) && CheckMSF(rb->recovered, rb->lba, STRICT_MSF_CHECK)) - { PrintCLIorLabel(STATUS_LABEL_OR_NULL, + { PrintCLIorLabel(Closure->status, "Sector %" PRId64 ": Recovered in raw reader by brute force plausible sector search (1).\n", rb->lba); memcpy(outbuf, rb->recovered+rb->dataOffset, 2048); @@ -1024,7 +1026,7 @@ int TryCDFrameRecovery(RawBuffer *rb, unsigned char *outbuf) if(CheckEDC(rb->recovered, rb->xaMode) && CheckMSF(rb->recovered, rb->lba, STRICT_MSF_CHECK)) - { PrintCLIorLabel(STATUS_LABEL_OR_NULL, + { PrintCLIorLabel(Closure->status, "Sector %" PRId64 ": Recovered in raw reader by mutual ack heuristic (1).\n", rb->lba); memcpy(outbuf, rb->recovered+rb->dataOffset, 2048); @@ -1035,7 +1037,7 @@ int TryCDFrameRecovery(RawBuffer *rb, unsigned char *outbuf) if(CheckEDC(rb->recovered, rb->xaMode) && CheckMSF(rb->recovered, rb->lba, STRICT_MSF_CHECK)) - { PrintCLIorLabel(STATUS_LABEL_OR_NULL, + { PrintCLIorLabel(Closure->status, "Sector %" PRId64 ": Recovered in raw reader by heuristic L-EC (1).\n", rb->lba); memcpy(outbuf, rb->recovered+rb->dataOffset, 2048); diff --git a/src/rs-decoder.c b/src/rs-decoder.c index 88a748a..c4e46ec 100644 --- a/src/rs-decoder.c +++ b/src/rs-decoder.c @@ -20,6 +20,8 @@ * along with dvdisaster. If not, see . */ +/*** src type: no GUI code ***/ + #include "dvdisaster.h" #include "galois-inlines.h" diff --git a/src/rs-encoder-altivec.c b/src/rs-encoder-altivec.c index 9f51267..d4cc427 100644 --- a/src/rs-encoder-altivec.c +++ b/src/rs-encoder-altivec.c @@ -20,6 +20,8 @@ * along with dvdisaster. If not, see . */ +/*** src type: no GUI code ***/ + #include "dvdisaster.h" #ifdef HAVE_ALTIVEC diff --git a/src/rs-encoder-sse2.c b/src/rs-encoder-sse2.c index d5a8871..db8ea5f 100644 --- a/src/rs-encoder-sse2.c +++ b/src/rs-encoder-sse2.c @@ -20,6 +20,8 @@ * along with dvdisaster. If not, see . */ +/*** src type: no GUI code ***/ + #include "dvdisaster.h" #ifdef HAVE_SSE2 diff --git a/src/rs-encoder.c b/src/rs-encoder.c index 4c74c31..cc3f559 100644 --- a/src/rs-encoder.c +++ b/src/rs-encoder.c @@ -20,6 +20,8 @@ * along with dvdisaster. If not, see . */ +/*** src type: no GUI code ***/ + #include "dvdisaster.h" /*** diff --git a/src/rs01-common.c b/src/rs01-common.c index af79b69..8c8200a 100644 --- a/src/rs01-common.c +++ b/src/rs01-common.c @@ -20,6 +20,8 @@ * along with dvdisaster. If not, see . */ +/*** src type: some GUI code ***/ + #include "dvdisaster.h" #include "rs01-includes.h" @@ -206,30 +208,27 @@ void RS01ReadSector(Image *image, unsigned char *buf, gint64 s) #define CRCBUFSIZE (1024*256) void RS01ScanImage(Method *method, Image* image, struct MD5Context *ecc_ctxt, int mode) -{ -#ifndef WITH_CLI_ONLY_YES - RS01Widgets *wl = NULL; -#endif - unsigned char buf[2048]; +{ unsigned char buf[2048]; guint32 *crcbuf = NULL; int unrecoverable_sectors = 0; int crcidx = 0; struct MD5Context image_md5; gint64 s, first_missing, last_missing; -#ifndef WITH_CLI_ONLY_YES - gint64 prev_missing = 0; - gint64 prev_crc_errors = 0; -#endif int last_percent,current_missing; char *msg; +#ifdef WITH_GUI_YES + RS01Widgets *wl = NULL; + gint64 prev_crc_errors = 0; + gint64 prev_missing = 0; +#endif +#ifdef WITH_GUI_YES /* Extract widget list from method */ -#ifndef WITH_CLI_ONLY_YES if(method->widgetList) wl = (RS01Widgets*)method->widgetList; #endif - + /* Position behind the ecc file header, initialize CRC buffer pointers */ @@ -263,13 +262,11 @@ void RS01ScanImage(Method *method, Image* image, struct MD5Context *ecc_ctxt, in /* Check for user interruption */ -#ifndef WITH_CLI_ONLY_YES if(Closure->stopActions) { image->sectorsMissing += image->sectorSize - s; if(crcbuf) g_free(crcbuf); return; } -#endif /* Read the next sector */ @@ -361,18 +358,18 @@ void RS01ScanImage(Method *method, Image* image, struct MD5Context *ecc_ctxt, in MD5Update(&image_md5, buf, n); /* update image md5sum */ -#ifndef WITH_CLI_ONLY_YES if(Closure->guiMode && mode & PRINT_MODE) percent = (VERIFY_IMAGE_SEGMENTS*(s+1))/image->sectorSize; else -#endif - percent = (100*(s+1))/image->sectorSize; + percent = (100*(s+1))/image->sectorSize; + if(last_percent != percent) { PrintProgress(msg,percent); -#ifndef WITH_CLI_ONLY_YES +#ifdef WITH_GUI_YES if(Closure->guiMode && mode & CREATE_CRC) - SetProgress(wl->encPBar1, percent, 100); + { GuiSetProgress(wl->encPBar1, percent, 100); + } if(Closure->guiMode && mode & PRINT_MODE) { RS01AddVerifyValues(method, percent, image->sectorsMissing, image->crcErrors, @@ -382,8 +379,7 @@ void RS01ScanImage(Method *method, Image* image, struct MD5Context *ecc_ctxt, in prev_missing = image->sectorsMissing; prev_crc_errors = image->crcErrors; } -#endif - +#endif /* WITH_GUI_YES */ last_percent = percent; } } diff --git a/src/rs01-create.c b/src/rs01-create.c index 1d992d7..35613de 100644 --- a/src/rs01-create.c +++ b/src/rs01-create.c @@ -23,6 +23,8 @@ * along with dvdisaster. If not, see . */ +/*** src type: some GUI code ***/ + #include "dvdisaster.h" #include "rs01-includes.h" @@ -97,31 +99,19 @@ static int calculate_redundancy(char *image_name) *** Remove the image file ***/ -#ifndef WITH_CLI_ONLY_YES static void unlink_image(GtkWidget *label) -#else -static void unlink_image(void *label) -#endif { if(LargeUnlink(Closure->imageName)) - { PrintLog(_("\nImage file %s deleted.\n"),Closure->imageName); - -#ifndef WITH_CLI_ONLY_YES - if(Closure->guiMode) - SetLabelText(GTK_LABEL(label), - _("\nImage file %s deleted.\n"), Closure->imageName); -#endif + { PrintLog(_("\nImage file %s deleted.\n"),Closure->imageName); + GuiSetLabelText(label, _("\nImage file %s deleted.\n"), Closure->imageName); } else - { -#ifndef WITH_CLI_ONLY_YES - if(!Closure->guiMode) -#endif + { if(!Closure->guiMode) PrintLog("\n"); - - ModalWarningOrCLI(GTK_MESSAGE_ERROR, GTK_BUTTONS_OK, NULL, - _("Image file %s not deleted: %s\n"), - Closure->imageName, strerror(errno)); + else + ModalWarning(GTK_MESSAGE_ERROR, GTK_BUTTONS_OK, NULL, + _("Image file %s not deleted: %s\n"), + Closure->imageName, strerror(errno)); } } @@ -135,9 +125,7 @@ static void unlink_image(void *label) typedef struct { Method *self; -#ifndef WITH_CLI_ONLY_YES RS01Widgets *wl; -#endif GaloisTables *gt; ReedSolomonTables *rt; Image *image; @@ -153,16 +141,15 @@ static void ecc_cleanup(gpointer data) UnregisterCleanup(); -#ifndef WITH_CLI_ONLY_YES if(Closure->guiMode) { if(ec->earlyTermination) - SetLabelText(GTK_LABEL(ec->wl->encFootline), - _("Aborted by unrecoverable error."), - Closure->redMarkup); - AllowActions(TRUE); + { GuiSetLabelText(ec->wl->encFootline, + _("Aborted by unrecoverable error."), + Closure->redMarkup); + } + GuiAllowActions(TRUE); } -#endif - + /** Clean up */ if(ec->gt) FreeGaloisTables(ec->gt); @@ -174,19 +161,17 @@ static void ecc_cleanup(gpointer data) if(ec->msg) g_free(ec->msg); if(ec->timer) g_timer_destroy(ec->timer); +#ifdef WITH_GUI_YES if(Closure->enableCurveSwitch) { Closure->enableCurveSwitch = FALSE; -#ifndef WITH_CLI_ONLY_YES RS01ShowCurveButton(ec->self); -#endif } - +#endif + g_free(ec); -#ifndef WITH_CLI_ONLY_YES if(Closure->guiMode) g_thread_exit(0); -#endif } /* @@ -197,9 +182,7 @@ enum { NORMAL, HIGH, GENERIC }; void RS01Create(void) { Method *self = FindMethod("RS01"); -#ifndef WITH_CLI_ONLY_YES RS01Widgets *wl = (RS01Widgets*)self->widgetList; -#endif GaloisTables *gt; ReedSolomonTables *rt; ecc_closure *ec = g_malloc0(sizeof(ecc_closure)); @@ -224,9 +207,7 @@ void RS01Create(void) /*** Register the cleanup procedure for GUI mode */ ec->self = self; -#ifndef WITH_CLI_ONLY_YES ec->wl = wl; -#endif ec->earlyTermination = TRUE; RegisterCleanup(_("Error correction file creation aborted"), ecc_cleanup, ec); @@ -255,11 +236,8 @@ void RS01Create(void) nroots, ((double)nroots*100.0)/(double)ndata); -#ifndef WITH_CLI_ONLY_YES - if(Closure->guiMode) - SetLabelText(GTK_LABEL(wl->encHeadline), - _("Creating the error correction file.\n%s"), ec->msg); -#endif + GuiSetLabelText(wl->encHeadline, + _("Creating the error correction file.\n%s"), ec->msg); /*** Test the image file and create the CRC sums */ @@ -267,17 +245,15 @@ void RS01Create(void) if(LargeStat(Closure->eccName, &n)) { - if(ConfirmEccDeletion(Closure->eccName)) + if(GuiConfirmEccDeletion(Closure->eccName)) LargeUnlink(Closure->eccName); -#ifndef WITH_CLI_ONLY_YES /* ConfirmEccDeletion always return true if CLI */ else - { SetLabelText(GTK_LABEL(ec->wl->encFootline), - _("Aborted to keep existing ecc file."), - Closure->redMarkup); + { GuiSetLabelText(ec->wl->encFootline, + _("Aborted to keep existing ecc file."), + Closure->redMarkup); ec->earlyTermination = FALSE; goto terminate; } -#endif } /* Open image and ecc files */ @@ -306,16 +282,13 @@ void RS01Create(void) /* Try to use CRC values created during last read */ - if(CrcBufValid(Closure->crcBuf, NULL, NULL)) + if(CrcBufValid(Closure->crcBuf, image, FULL_IMAGE)) { guint32 crc_idx; int percent, last_percent = 0; char *msg = _("Writing sector checksums: %3d%%"); -#ifndef WITH_CLI_ONLY_YES - if(Closure->guiMode) - SetLabelText(GTK_LABEL(wl->encLabel1), - _("1. Writing image sector checksums:")); -#endif + GuiSetLabelText(wl->encLabel1, + _("1. Writing image sector checksums:")); memcpy(image->mediumSum, Closure->crcBuf->imageMD5sum, 16); MD5Init(&md5Ctxt); /* md5sum of CRC portion of ecc file */ @@ -345,11 +318,7 @@ void RS01Create(void) percent = (100*crc_idx)/image->sectorSize; if(last_percent != percent) { PrintProgress(msg,percent); - -#ifndef WITH_CLI_ONLY_YES - if(Closure->guiMode) - SetProgress(wl->encPBar1, percent, 100); -#endif + GuiSetProgress(wl->encPBar1, percent, 100); last_percent = percent; } @@ -362,12 +331,8 @@ void RS01Create(void) Scan image for missing sectors and calculate the checksums. Checksums are only computed locally and not provided in the cache. */ else - { -#ifndef WITH_CLI_ONLY_YES - if(Closure->guiMode) - SetLabelText(GTK_LABEL(wl->encLabel1), - _("1. Calculating image sector checksums:")); -#endif + { GuiSetLabelText(wl->encLabel1, + _("1. Calculating image sector checksums:")); FreeCrcBuf(Closure->crcBuf); /* just a defensive measure */ Closure->crcBuf = NULL; @@ -380,23 +345,18 @@ void RS01Create(void) LargeUnlink(Closure->eccName); /* Do not leave a CRC-only .ecc file behind */ -#ifndef WITH_CLI_ONLY_YES if(Closure->stopActions) { if(Closure->stopActions == STOP_CURRENT_ACTION) /* suppress memleak warning when closing window */ - SetLabelText(GTK_LABEL(wl->encFootline), - _("Aborted by user request! (partial error correction file removed)"), - Closure->redMarkup); - ec->earlyTermination = FALSE; /* suppress respective error message */ + { GuiSetLabelText(wl->encFootline, + _("Aborted by user request! (partial error correction file removed)"), + Closure->redMarkup); + } + ec->earlyTermination = FALSE; /* suppress respective error message */ goto terminate; } else -#endif - { -#ifndef WITH_CLI_ONLY_YES - if(Closure->guiMode) - SetProgress(wl->encPBar1, 100, 100); -#endif + { GuiSetProgress(wl->encPBar1, 100, 100); Stop(_("%" PRId64 " sectors unread or missing due to errors.\n"), image->sectorsMissing); } @@ -405,15 +365,11 @@ void RS01Create(void) PrintTimeToLog(ec->timer, "for CRC writing/generation.\n"); -#ifndef WITH_CLI_ONLY_YES - if(Closure->guiMode) - { SetProgress(wl->encPBar1, 100, 100); - ShowWidget(wl->encPBar2); - ShowWidget(wl->encLabel2); - } - + GuiSetProgress(wl->encPBar1, 100, 100); + GuiShowWidget(wl->encPBar2); + GuiShowWidget(wl->encLabel2); + if(!Closure->guiMode) -#endif PrintLog("%s\n",ec->msg); /*** Prepare Ecc file header. @@ -531,19 +487,18 @@ void RS01Create(void) { int offset = 0; unsigned char *par_idx = ec->parity; -#ifndef WITH_CLI_ONLY_YES if(Closure->stopActions) /* User hit the Stop button */ { if(Closure->stopActions == STOP_CURRENT_ACTION) /* suppress memleak warning when closing window */ - SetLabelText(GTK_LABEL(wl->encFootline), - _("Aborted by user request! (partial error correction file removed)"), - Closure->redMarkup); + { GuiSetLabelText(wl->encFootline, + _("Aborted by user request! (partial error correction file removed)"), + Closure->redMarkup); + } ec->earlyTermination = FALSE; /* suppress respective error message */ LargeClose(image->eccFile); image->eccFile = NULL; LargeUnlink(Closure->eccName); /* Do not leave partial .ecc file behind */ goto terminate; } -#endif /* Read the next data sectors of this layer. */ @@ -610,13 +565,8 @@ void RS01Create(void) progress++; percent = (1000*progress)/max_percent; if(last_percent != percent) - { -#ifndef WITH_CLI_ONLY_YES - if(Closure->guiMode) - SetProgress(wl->encPBar2, percent, 1000); - else -#endif - PrintProgress(_("Ecc generation: %3d.%1d%%"), percent/10, percent%10); + { GuiSetProgress(wl->encPBar2, percent, 1000); + PrintProgress(_("Ecc generation: %3d.%1d%%"), percent/10, percent%10); last_percent = percent; } } @@ -629,19 +579,18 @@ void RS01Create(void) { int offset = 0; unsigned char *par_idx = ec->parity; -#ifndef WITH_CLI_ONLY_YES if(Closure->stopActions) /* User hit the Stop button */ { if(Closure->stopActions == STOP_CURRENT_ACTION) /* suppress memleak warning when closing window */ - SetLabelText(GTK_LABEL(wl->encFootline), - _("Aborted by user request! (partial error correction file removed)"), - Closure->redMarkup); + { GuiSetLabelText(wl->encFootline, + _("Aborted by user request! (partial error correction file removed)"), + Closure->redMarkup); + } ec->earlyTermination = FALSE; /* suppress respective error message */ LargeClose(image->eccFile); image->eccFile = NULL; LargeUnlink(Closure->eccName); /* Do not leave partial .ecc file behind */ goto terminate; } -#endif /* Read the next data sectors of this layer. */ @@ -740,13 +689,8 @@ void RS01Create(void) progress++; percent = (1000*progress)/max_percent; if(last_percent != percent) - { -#ifndef WITH_CLI_ONLY_YES - if(Closure->guiMode) - SetProgress(wl->encPBar2, percent, 1000); - else -#endif - PrintProgress(_("Ecc generation: %3d.%1d%%"), percent/10, percent%10); + { GuiSetProgress(wl->encPBar2, percent, 1000); + PrintProgress(_("Ecc generation: %3d.%1d%%"), percent/10, percent%10); last_percent = percent; } } @@ -762,19 +706,18 @@ void RS01Create(void) { int offset = 0; unsigned char *par_idx = ec->parity; -#ifndef WITH_CLI_ONLY_YES if(Closure->stopActions) /* User hit the Stop button */ { if(Closure->stopActions == STOP_CURRENT_ACTION) /* suppress memleak warning when closing window */ - SetLabelText(GTK_LABEL(wl->encFootline), - _("Aborted by user request!"), - Closure->redMarkup); + { GuiSetLabelText(wl->encFootline, + _("Aborted by user request!"), + Closure->redMarkup); + } ec->earlyTermination = FALSE; /* suppress respective error message */ LargeClose(image->eccFile); image->eccFile = NULL; LargeUnlink(Closure->eccName); /* Do not leave partial .ecc file behind */ goto terminate; } -#endif /* Read the next data sectors of this layer. */ @@ -1040,13 +983,8 @@ void RS01Create(void) progress++; percent = (1000*progress)/max_percent; if(last_percent != percent) - { -#ifndef WITH_CLI_ONLY_YES - if(Closure->guiMode) - SetProgress(wl->encPBar2, percent, 1000); - else -#endif - PrintProgress(_("Ecc generation: %3d.%1d%%"), percent/10, percent%10); + { GuiSetProgress(wl->encPBar2, percent, 1000); + PrintProgress(_("Ecc generation: %3d.%1d%%"), percent/10, percent%10); last_percent = percent; } } @@ -1087,15 +1025,11 @@ void RS01Create(void) "Make sure to keep this file on a reliable medium.\n"), Closure->eccName); -#ifndef WITH_CLI_ONLY_YES - if(Closure->guiMode) - { SetProgress(wl->encPBar2, 100, 100); + GuiSetProgress(wl->encPBar2, 100, 100); - SetLabelText(GTK_LABEL(wl->encFootline), + GuiSetLabelText(wl->encFootline, _("The error correction file has been successfully created.\n" "Make sure to keep this file on a reliable medium.")); - } -#endif /*** If the --unlink option or respective GUI switch is set, unlink the image. */ @@ -1103,20 +1037,14 @@ void RS01Create(void) if(Closure->unlinkImage) { if(ec->image) CloseImage(ec->image); ec->image = NULL; -#ifndef WITH_CLI_ONLY_YES unlink_image(Closure->guiMode ? wl->encFootline2 : NULL); -#else - unlink_image(NULL); -#endif } /*** Clean up */ ec->earlyTermination = FALSE; -#ifndef WITH_CLI_ONLY_YES terminate: -#endif ecc_cleanup((gpointer)ec); } diff --git a/src/rs01-fix.c b/src/rs01-fix.c index 0344e90..54b1581 100644 --- a/src/rs01-fix.c +++ b/src/rs01-fix.c @@ -23,6 +23,8 @@ * along with dvdisaster. If not, see . */ +/*** src type: some GUI code ***/ + #include "dvdisaster.h" #include "rs01-includes.h" @@ -54,10 +56,7 @@ static void read_crc(LargeFile *ecc, guint32 *buf, int first_sector, int n_secto */ typedef struct -{ -#ifndef WITH_CLI_ONLY_YES - RS01Widgets *wl; -#endif +{ RS01Widgets *wl; GaloisTables *gt; ReedSolomonTables *rt; Image *image; @@ -73,17 +72,16 @@ static void fix_cleanup(gpointer data) UnregisterCleanup(); -#ifndef WITH_CLI_ONLY_YES if(Closure->guiMode) { if(fc->earlyTermination) - SwitchAndSetFootline(fc->wl->fixNotebook, 1, - fc->wl->fixFootline, - _("Aborted by unrecoverable error."), - Closure->redMarkup); - AllowActions(TRUE); + { GuiSwitchAndSetFootline(fc->wl->fixNotebook, 1, + fc->wl->fixFootline, + _("Aborted by unrecoverable error."), + Closure->redMarkup); + } + GuiAllowActions(TRUE); } -#endif - + /** Clean up */ if(fc->image) CloseImage(fc->image); @@ -101,10 +99,7 @@ static void fix_cleanup(gpointer data) g_free(fc); -#ifndef WITH_CLI_ONLY_YES - if(Closure->guiMode) - g_thread_exit(0); -#endif + GuiExitWorkerThread(); } /* @@ -112,11 +107,8 @@ static void fix_cleanup(gpointer data) */ void RS01Fix(Image *image) -{ -#ifndef WITH_CLI_ONLY_YES - Method *method = FindMethod("RS01"); +{ Method *method = FindMethod("RS01"); RS01Widgets *wl = (RS01Widgets*)method->widgetList; -#endif GaloisTables *gt; ReedSolomonTables *rt; fix_closure *fc = g_malloc0(sizeof(fix_closure)); @@ -141,9 +133,7 @@ void RS01Fix(Image *image) /*** Register the cleanup procedure for GUI mode */ fc->image = image; -#ifndef WITH_CLI_ONLY_YES fc->wl = wl; -#endif fc->earlyTermination = TRUE; RegisterCleanup(_("Repairing of image aborted"), fix_cleanup, fc); @@ -155,14 +145,14 @@ void RS01Fix(Image *image) eh->eccBytes, ((double)eh->eccBytes*100.0)/(double)eh->dataBytes); -#ifndef WITH_CLI_ONLY_YES +#ifdef WITH_GUI_YES if(Closure->guiMode) - { SetLabelText(GTK_LABEL(wl->fixHeadline), - _("Repairing the image.\n%s"),fc->msg); + { GuiSetLabelText(wl->fixHeadline, + _("Repairing the image.\n%s"),fc->msg); RS01SetFixMaxValues(wl, eh->dataBytes, eh->eccBytes, image->sectorSize); } #endif - + PrintLog(_("\nFix mode(%s): Repairable sectors will be fixed in the image.\n"), "RS01"); @@ -205,43 +195,42 @@ void RS01Fix(Image *image) if(diff>0 && diff<=2) { - int answer = ModalWarningOrCLI(GTK_MESSAGE_QUESTION, GTK_BUTTONS_OK_CANCEL, NULL, + int answer = ModalWarning(GTK_MESSAGE_QUESTION, GTK_BUTTONS_OK_CANCEL, NULL, _("Image file is %" PRId64 " sectors longer than expected.\n" "Assuming this is a TAO mode medium.\n" "%" PRId64 " sectors will be removed from the image end.\n"), diff, diff); if(!answer) - { -#ifndef WITH_CLI_ONLY_YES - SwitchAndSetFootline(fc->wl->fixNotebook, 1, - fc->wl->fixFootline, - _("Aborted by user request!"), - Closure->redMarkup); -#endif + { GuiSwitchAndSetFootline(fc->wl->fixNotebook, 1, + fc->wl->fixFootline, + _("Aborted by user request!"), + Closure->redMarkup); fc->earlyTermination = FALSE; /* suppress respective error message */ goto terminate; } - + + /* in command line mode, 1-2 superflous sectors are silently removed. */ + image->sectorSize -= diff; image->inLast = eh->inLast; if(!LargeTruncate(image->file, expected_image_size)) Stop(_("Could not truncate %s: %s\n"),Closure->imageName,strerror(errno)); } - -#ifndef WITH_CLI_ONLY_YES + +#ifdef WITH_GUI_YES if(diff>2 && Closure->guiMode) - { int answer = ModalDialog(GTK_MESSAGE_QUESTION, GTK_BUTTONS_OK_CANCEL, NULL, - trans, - diff, - _("Is it okay to remove the superfluous sectors?")); + { int answer = GuiModalDialog(GTK_MESSAGE_QUESTION, GTK_BUTTONS_OK_CANCEL, NULL, + trans, + diff, + _("Is it okay to remove the superfluous sectors?")); if(!answer) - { SwitchAndSetFootline(fc->wl->fixNotebook, 1, - fc->wl->fixFootline, - _("Aborted by user request!"), - Closure->redMarkup); + { GuiSwitchAndSetFootline(fc->wl->fixNotebook, 1, + fc->wl->fixFootline, + _("Aborted by user request!"), + Closure->redMarkup); fc->earlyTermination = FALSE; /* suppress respective error message */ goto terminate; } @@ -254,14 +243,9 @@ void RS01Fix(Image *image) PrintLog(_("Image has been truncated by %" PRId64 " sectors.\n"), diff); } -#endif - - if(diff>2 && -#ifndef WITH_CLI_ONLY_YES - !Closure->guiMode) -#else - 1) -#endif +#endif /* WITH_GUI_YES */ + + if(diff>2 && !Closure->guiMode) { if(!Closure->truncate) Stop(trans, diff, @@ -281,30 +265,24 @@ void RS01Fix(Image *image) if(image->sectorSize == image->expectedSectors && image->inLast > eh->inLast) { int difference = image->inLast - eh->inLast; -#ifndef WITH_CLI_ONLY_YES if(Closure->guiMode) - { int answer = ModalDialog(GTK_MESSAGE_QUESTION, GTK_BUTTONS_OK_CANCEL, NULL, - _("The image file is %d bytes longer than noted\n" - "in the ecc file. Shall the superfluous bytes\n" - "be removed from the image file?\n"), - difference); + { int answer = GuiModalDialog(GTK_MESSAGE_QUESTION, GTK_BUTTONS_OK_CANCEL, NULL, + _("The image file is %d bytes longer than noted\n" + "in the ecc file. Shall the superfluous bytes\n" + "be removed from the image file?\n"), + difference); if(!answer) - { SwitchAndSetFootline(fc->wl->fixNotebook, 1, - fc->wl->fixFootline, - _("Aborted by user request!"), - Closure->redMarkup); + { GuiSwitchAndSetFootline(fc->wl->fixNotebook, 1, + fc->wl->fixFootline, + _("Aborted by user request!"), + Closure->redMarkup); fc->earlyTermination = FALSE; /* suppress respective error message */ goto terminate; } } -#endif - -#ifndef WITH_CLI_ONLY_YES + if(!Closure->guiMode && !Closure->truncate) -#else - if(!Closure->truncate) -#endif Stop(_("The image file is %d bytes longer than noted\n" "in the ecc file.\n" "Add the --truncate option to the program call\n" @@ -321,17 +299,14 @@ void RS01Fix(Image *image) if(image->sectorSize < image->expectedSectors) { int answer; - answer = ModalWarningOrCLI(GTK_MESSAGE_QUESTION, GTK_BUTTONS_OK_CANCEL, NULL, + answer = ModalWarning(GTK_MESSAGE_QUESTION, GTK_BUTTONS_OK_CANCEL, NULL, "%s",_("Image file appears to be truncated.\n" "Consider completing it with another reading pass before going on.\n")); if(!answer) - { -#ifndef WITH_CLI_ONLY_YES - SwitchAndSetFootline(fc->wl->fixNotebook, 1, - fc->wl->fixFootline, - _("Aborted by user request!"), - Closure->redMarkup); -#endif + { GuiSwitchAndSetFootline(fc->wl->fixNotebook, 1, + fc->wl->fixFootline, + _("Aborted by user request!"), + Closure->redMarkup); fc->earlyTermination = FALSE; /* suppress respective error message */ goto terminate; } @@ -340,18 +315,15 @@ void RS01Fix(Image *image) if(image->fpState != FP_PRESENT) { int answer; - answer = ModalWarningOrCLI(GTK_MESSAGE_QUESTION, GTK_BUTTONS_OK_CANCEL, NULL, + answer = ModalWarning(GTK_MESSAGE_QUESTION, GTK_BUTTONS_OK_CANCEL, NULL, _("Sector %d is missing. Can not compare image and ecc fingerprints.\n" "Double check that image and ecc file belong together.\n"), eh->fpSector); if(!answer) - { -#ifndef WITH_CLI_ONLY_YES - SwitchAndSetFootline(fc->wl->fixNotebook, 1, - fc->wl->fixFootline, - _("Aborted by user request!"), - Closure->redMarkup); -#endif + { GuiSwitchAndSetFootline(fc->wl->fixNotebook, 1, + fc->wl->fixFootline, + _("Aborted by user request!"), + Closure->redMarkup); fc->earlyTermination = FALSE; /* suppress respective error message */ goto terminate; } @@ -399,17 +371,16 @@ void RS01Fix(Image *image) for(si=0; sistopActions) /* User hit the Stop button */ { if(Closure->stopActions == STOP_CURRENT_ACTION) /* suppress memleak warning when closing window */ - SwitchAndSetFootline(fc->wl->fixNotebook, 1, - fc->wl->fixFootline, - _("Aborted by user request!"), - Closure->redMarkup); + { GuiSwitchAndSetFootline(fc->wl->fixNotebook, 1, + fc->wl->fixFootline, + _("Aborted by user request!"), + Closure->redMarkup); + } fc->earlyTermination = FALSE; /* suppress respective error message */ goto terminate; } -#endif /* Read the next batch of (cache_size * ndata) medium sectors if the cache ran empty. */ @@ -472,10 +443,7 @@ void RS01Fix(Image *image) and try to correct them. */ if(erasure_count>nroots) /* uncorrectable */ - { -#ifndef WITH_CLI_ONLY_YES - if(!Closure->guiMode) -#endif + { if(!Closure->guiMode) { PrintCLI(_("* %3d unrepairable sectors: "), erasure_count); for(i=0; iguiMode) { RS01AddFixValues(wl, percent, local_plot_max); @@ -794,8 +762,8 @@ skip: RS01UpdateFixResults(wl, corrected, uncorrected); } else -#endif - PrintProgress(_("Ecc progress: %3d.%1d%%"),percent/10,percent%10); +#endif + PrintProgress(_("Ecc progress: %3d.%1d%%"),percent/10,percent%10); last_percent = percent; } @@ -811,13 +779,10 @@ skip: if(corrected > 0) PrintLog(_("Repaired sectors: %" PRId64 " \n"),corrected); if(uncorrected > 0) { PrintLog(_("Unrepaired sectors: %" PRId64 "\n"), uncorrected); -#ifndef WITH_CLI_ONLY_YES - if(Closure->guiMode) - SwitchAndSetFootline(wl->fixNotebook, 1, wl->fixFootline, - _("Image sectors could not be fully restored " - "(%" PRId64 " repaired; %" PRId64 " unrepaired)"), - corrected, Closure->redMarkup, uncorrected); -#endif + GuiSwitchAndSetFootline(wl->fixNotebook, 1, wl->fixFootline, + _("Image sectors could not be fully restored " + "(%" PRId64 " repaired; %" PRId64 " unrepaired)"), + corrected, Closure->redMarkup, uncorrected); } else { if(!corrected) @@ -833,12 +798,10 @@ skip: PrintLog(_("Erasure counts per ecc block: avg = %.1f; worst = %d.\n"), (double)damaged_sec/(double)damaged_ecc,worst_ecc); -#ifndef WITH_CLI_ONLY_YES - if(Closure->guiMode && t) - SwitchAndSetFootline(wl->fixNotebook, 1, wl->fixFootline, - "%s %s", _("Repair results:"), t); -#endif - + if(t) + { GuiSwitchAndSetFootline(wl->fixNotebook, 1, wl->fixFootline, + "%s %s", _("Repair results:"), t); + } /*** Clean up */ diff --git a/src/rs01-includes.h b/src/rs01-includes.h index 9db18aa..16672ea 100644 --- a/src/rs01-includes.h +++ b/src/rs01-includes.h @@ -23,7 +23,6 @@ #ifndef RS01INCLUDES_H #define RS01INCLUDES_H -#ifndef WITH_CLI_ONLY_YES /* Data structs from rs01-window.c */ typedef struct @@ -97,7 +96,6 @@ typedef struct int dataBytes; int percent, lastPercent; } RS01Widgets; -#endif /* * local working closure for internal checksums @@ -107,7 +105,6 @@ typedef struct { struct MD5Context md5ctxt; /* Complete image checksum */ } RS01CksumClosure; -#ifndef WITH_CLI_ONLY_YES /* * These are exported via the Method struct */ @@ -123,7 +120,6 @@ void RS01ShowCurveButton(Method*); void ResetRS01VerifyWindow(Method*); void CreateRS01VerifyWindow(Method*, GtkWidget*); -#endif /* * These are exported (resp. only used) in ecc-rs01.c and rs01*.c @@ -159,13 +155,11 @@ void RS01Create(void); void RS01Fix(Image*); -#ifndef WITH_CLI_ONLY_YES /* rs01-window.c */ void RS01AddFixValues(RS01Widgets*, int, int); void RS01SetFixMaxValues(RS01Widgets*, int, int, gint64); void RS01UpdateFixResults(RS01Widgets*, gint64, gint64); -#endif /* rs01-verify.c */ diff --git a/src/rs01-verify.c b/src/rs01-verify.c index e7a4ec6..a43e138 100644 --- a/src/rs01-verify.c +++ b/src/rs01-verify.c @@ -20,11 +20,13 @@ * along with dvdisaster. If not, see . */ +/*** src type: some GUI code ***/ + #include "dvdisaster.h" #include "rs01-includes.h" -#ifndef WITH_CLI_ONLY_YES +#ifdef WITH_GUI_YES /*** *** Reset the verify output window @@ -33,28 +35,28 @@ void ResetRS01VerifyWindow(Method *self) { RS01Widgets *wl = (RS01Widgets*)self->widgetList; - SetLabelText(GTK_LABEL(wl->cmpChkSumErrors), "-"); - SetLabelText(GTK_LABEL(wl->cmpMissingSectors), "0"); - SetLabelText(GTK_LABEL(wl->cmpImageMd5Sum), "-"); - SetLabelText(GTK_LABEL(wl->cmpImageResult), ""); - SwitchAndSetFootline(wl->cmpImageNotebook, 1, NULL, NULL); + GuiSetLabelText(wl->cmpChkSumErrors, "-"); + GuiSetLabelText(wl->cmpMissingSectors, "0"); + GuiSetLabelText(wl->cmpImageMd5Sum, "-"); + GuiSetLabelText(wl->cmpImageResult, ""); + GuiSwitchAndSetFootline(wl->cmpImageNotebook, 1, NULL, NULL); - SetLabelText(GTK_LABEL(wl->cmpEccEmptyMsg), ""); - SetLabelText(GTK_LABEL(wl->cmpEccCreatedBy), "dvdisaster"); - SetLabelText(GTK_LABEL(wl->cmpEccMethod), ""); - SetLabelText(GTK_LABEL(wl->cmpEccRequires), ""); - SetLabelText(GTK_LABEL(wl->cmpEccMediumSectors), ""); - SetLabelText(GTK_LABEL(wl->cmpEccImgMd5Sum), ""); - SetLabelText(GTK_LABEL(wl->cmpEccFingerprint), _("n/a")); - SetLabelText(GTK_LABEL(wl->cmpEccBlocks), ""); - SetLabelText(GTK_LABEL(wl->cmpEccMd5Sum), ""); - SetLabelText(GTK_LABEL(wl->cmpEccResult), ""); - SwitchAndSetFootline(wl->cmpEccNotebook, 0, NULL, NULL); + GuiSetLabelText(wl->cmpEccEmptyMsg, ""); + GuiSetLabelText(wl->cmpEccCreatedBy, "dvdisaster"); + GuiSetLabelText(wl->cmpEccMethod, ""); + GuiSetLabelText(wl->cmpEccRequires, ""); + GuiSetLabelText(wl->cmpEccMediumSectors, ""); + GuiSetLabelText(wl->cmpEccImgMd5Sum, ""); + GuiSetLabelText(wl->cmpEccFingerprint, _("n/a")); + GuiSetLabelText(wl->cmpEccBlocks, ""); + GuiSetLabelText(wl->cmpEccMd5Sum, ""); + GuiSetLabelText(wl->cmpEccResult, ""); + GuiSwitchAndSetFootline(wl->cmpEccNotebook, 0, NULL, NULL); wl->lastPercent = 0; - FillSpiral(wl->cmpSpiral, Closure->background); - DrawSpiral(wl->cmpSpiral); + GuiFillSpiral(wl->cmpSpiral, Closure->background); + GuiDrawSpiral(wl->cmpSpiral); } /*** @@ -76,7 +78,7 @@ static gboolean spiral_idle_func(gpointer data) int i; for(i=sii->from; i<=sii->to; i++) - DrawSpiralSegment(sii->cmpSpiral, sii->segColor, i-1); + GuiDrawSpiralSegment(sii->cmpSpiral, sii->segColor, i-1); g_free(sii); return FALSE; @@ -92,13 +94,15 @@ void RS01AddVerifyValues(Method *method, int percent, return; if(newMissing) - SetLabelText(GTK_LABEL(wl->cmpMissingSectors), "%" PRId64 "", - Closure->redMarkup, totalMissing); - + { GuiSetLabelText(wl->cmpMissingSectors, "%" PRId64 "", + Closure->redMarkup, totalMissing); + } + if(newCrcErrors) - SetLabelText(GTK_LABEL(wl->cmpChkSumErrors), "%" PRId64 "", - Closure->redMarkup, totalCrcErrors); - + { GuiSetLabelText(wl->cmpChkSumErrors, "%" PRId64 "", + Closure->redMarkup, totalCrcErrors); + } + sii->cmpSpiral = wl->cmpSpiral; sii->segColor = Closure->greenSector; @@ -119,16 +123,16 @@ void RS01AddVerifyValues(Method *method, int percent, static void redraw_spiral(RS01Widgets *wl) { int x = wl->cmpSpiral->mx - wl->cmpSpiral->diameter/2 + 10; - DrawSpiralLabel(wl->cmpSpiral, wl->cmpLayout, - _("Good sectors"), Closure->greenSector, x, 1); + GuiDrawSpiralLabel(wl->cmpSpiral, wl->cmpLayout, + _("Good sectors"), Closure->greenSector, x, 1); - DrawSpiralLabel(wl->cmpSpiral, wl->cmpLayout, - _("Sectors with CRC errors"), Closure->yellowSector, x, 2); + GuiDrawSpiralLabel(wl->cmpSpiral, wl->cmpLayout, + _("Sectors with CRC errors"), Closure->yellowSector, x, 2); - DrawSpiralLabel(wl->cmpSpiral, wl->cmpLayout, - _("Missing sectors"), Closure->redSector, x, 3); + GuiDrawSpiralLabel(wl->cmpSpiral, wl->cmpLayout, + _("Missing sectors"), Closure->redSector, x, 3); - DrawSpiral(wl->cmpSpiral); + GuiDrawSpiral(wl->cmpSpiral); } /* @@ -143,11 +147,11 @@ static gboolean expose_cb(GtkWidget *widget, GdkEventExpose *event, gpointer dat /* Finish spiral initialization */ if(!wl->cmpLayout) - { SetSpiralWidget(wl->cmpSpiral, widget); + { GuiSetSpiralWidget(wl->cmpSpiral, widget); wl->cmpLayout = gtk_widget_create_pango_layout(widget, NULL); } - SetText(wl->cmpLayout, _("Missing sectors"), &w, &h); + GuiSetText(wl->cmpLayout, _("Missing sectors"), &w, &h); size = wl->cmpSpiral->diameter + 20 + 3*(10+h); /* approx. size of spiral + labels */ wl->cmpSpiral->mx = a->width / 2; @@ -209,7 +213,7 @@ void CreateRS01VerifyWindow(Method *self, GtkWidget *parent) lab = gtk_label_new(NULL); gtk_misc_set_alignment(GTK_MISC(lab), 0.0, 0.0); - SetLabelText(GTK_LABEL(lab), _("Medium sectors:")); + GuiSetLabelText(lab, _("Medium sectors:")); gtk_table_attach(GTK_TABLE(table2), lab, 0, 1, 0, 1, GTK_SHRINK | GTK_FILL, GTK_SHRINK, 5, 2 ); lab = wl->cmpImageSectors = gtk_label_new("0"); gtk_misc_set_alignment(GTK_MISC(lab), 0.0, 0.0); @@ -217,7 +221,7 @@ void CreateRS01VerifyWindow(Method *self, GtkWidget *parent) lab = gtk_label_new(NULL); gtk_misc_set_alignment(GTK_MISC(lab), 0.0, 0.0); - SetLabelText(GTK_LABEL(lab), _("Checksum errors:")); + GuiSetLabelText(lab, _("Checksum errors:")); gtk_table_attach(GTK_TABLE(table2), lab, 0, 1, 1, 2, GTK_SHRINK | GTK_FILL, GTK_SHRINK, 5, 2 ); lab = wl->cmpChkSumErrors = gtk_label_new("0"); gtk_misc_set_alignment(GTK_MISC(lab), 0.0, 0.0); @@ -225,7 +229,7 @@ void CreateRS01VerifyWindow(Method *self, GtkWidget *parent) lab = gtk_label_new(NULL); gtk_misc_set_alignment(GTK_MISC(lab), 0.0, 0.0); - SetLabelText(GTK_LABEL(lab), _("Missing Sectors:")); + GuiSetLabelText(lab, _("Missing Sectors:")); gtk_table_attach(GTK_TABLE(table2), lab, 0, 1, 2, 3, GTK_SHRINK | GTK_FILL, GTK_SHRINK, 5, 2 ); lab = wl->cmpMissingSectors = gtk_label_new("0"); gtk_misc_set_alignment(GTK_MISC(lab), 0.0, 0.0); @@ -233,7 +237,7 @@ void CreateRS01VerifyWindow(Method *self, GtkWidget *parent) lab = gtk_label_new(NULL); gtk_misc_set_alignment(GTK_MISC(lab), 0.0, 0.0); - SetLabelText(GTK_LABEL(lab), _("Image checksum:")); + GuiSetLabelText(lab, _("Image checksum:")); gtk_table_attach(GTK_TABLE(table2), lab, 0, 1, 3, 4, GTK_SHRINK | GTK_FILL, GTK_SHRINK, 5, 2 ); lab = wl->cmpImageMd5Sum = gtk_label_new("0"); gtk_misc_set_alignment(GTK_MISC(lab), 0.0, 0.0); @@ -248,7 +252,7 @@ void CreateRS01VerifyWindow(Method *self, GtkWidget *parent) frame = gtk_frame_new(_utf("Image state")); gtk_table_attach(GTK_TABLE(table), frame, 1, 2, 0, 2, GTK_SHRINK | GTK_FILL, GTK_EXPAND | GTK_FILL, 5, 5); - wl->cmpSpiral = CreateSpiral(Closure->grid, Closure->background, 10, 5, VERIFY_IMAGE_SEGMENTS); + wl->cmpSpiral = GuiCreateSpiral(Closure->grid, Closure->background, 10, 5, VERIFY_IMAGE_SEGMENTS); d_area = wl->cmpDrawingArea = gtk_drawing_area_new(); gtk_widget_set_size_request(d_area, wl->cmpSpiral->diameter+20, -1); gtk_container_add(GTK_CONTAINER(frame), d_area); @@ -275,7 +279,7 @@ void CreateRS01VerifyWindow(Method *self, GtkWidget *parent) lab = gtk_label_new(NULL); gtk_misc_set_alignment(GTK_MISC(lab), 0.0, 0.0); - SetLabelText(GTK_LABEL(lab), _("Created by:")); + GuiSetLabelText(lab, _("Created by:")); gtk_table_attach(GTK_TABLE(table2), lab, 0, 1, 0, 1, GTK_SHRINK | GTK_FILL, GTK_SHRINK, 5, 2 ); lab = wl->cmpEccCreatedBy = gtk_label_new(NULL); gtk_misc_set_alignment(GTK_MISC(lab), 0.0, 0.0); @@ -283,7 +287,7 @@ void CreateRS01VerifyWindow(Method *self, GtkWidget *parent) lab = gtk_label_new(NULL); gtk_misc_set_alignment(GTK_MISC(lab), 0.0, 0.0); - SetLabelText(GTK_LABEL(lab), _("Method:")); + GuiSetLabelText(lab, _("Method:")); gtk_table_attach(GTK_TABLE(table2), lab, 0, 1, 1, 2, GTK_SHRINK | GTK_FILL, GTK_SHRINK, 5, 2 ); lab = wl->cmpEccMethod = gtk_label_new(NULL); gtk_misc_set_alignment(GTK_MISC(lab), 0.0, 0.0); @@ -291,7 +295,7 @@ void CreateRS01VerifyWindow(Method *self, GtkWidget *parent) lab = gtk_label_new(NULL); gtk_misc_set_alignment(GTK_MISC(lab), 0.0, 0.0); - SetLabelText(GTK_LABEL(lab), _("Requires:")); + GuiSetLabelText(lab, _("Requires:")); gtk_table_attach(GTK_TABLE(table2), lab, 0, 1, 2, 3, GTK_SHRINK | GTK_FILL, GTK_SHRINK, 5, 2 ); lab = wl->cmpEccRequires = gtk_label_new(NULL); gtk_misc_set_alignment(GTK_MISC(lab), 0.0, 0.0); @@ -299,7 +303,7 @@ void CreateRS01VerifyWindow(Method *self, GtkWidget *parent) lab = gtk_label_new(NULL); gtk_misc_set_alignment(GTK_MISC(lab), 0.0, 0.0); - SetLabelText(GTK_LABEL(lab), _("Medium sectors:")); + GuiSetLabelText(lab, _("Medium sectors:")); gtk_table_attach(GTK_TABLE(table2), lab, 0, 1, 3, 4, GTK_SHRINK | GTK_FILL, GTK_SHRINK, 5, 2 ); lab = wl->cmpEccMediumSectors = gtk_label_new(NULL); gtk_misc_set_alignment(GTK_MISC(lab), 0.0, 0.0); @@ -307,7 +311,7 @@ void CreateRS01VerifyWindow(Method *self, GtkWidget *parent) lab = gtk_label_new(NULL); gtk_misc_set_alignment(GTK_MISC(lab), 0.0, 0.0); - SetLabelText(GTK_LABEL(lab), _("Image checksum:")); + GuiSetLabelText(lab, _("Image checksum:")); gtk_table_attach(GTK_TABLE(table2), lab, 0, 1, 4, 5, GTK_SHRINK | GTK_FILL, GTK_SHRINK, 5, 2 ); lab = wl->cmpEccImgMd5Sum = gtk_label_new(NULL); gtk_misc_set_alignment(GTK_MISC(lab), 0.0, 0.0); @@ -315,7 +319,7 @@ void CreateRS01VerifyWindow(Method *self, GtkWidget *parent) lab = gtk_label_new(NULL); gtk_misc_set_alignment(GTK_MISC(lab), 0.0, 0.0); - SetLabelText(GTK_LABEL(lab), _("Fingerprint:")); + GuiSetLabelText(lab, _("Fingerprint:")); gtk_table_attach(GTK_TABLE(table2), lab, 0, 1, 5, 6, GTK_SHRINK | GTK_FILL, GTK_SHRINK, 5, 2 ); lab = wl->cmpEccFingerprint = gtk_label_new(NULL); gtk_misc_set_alignment(GTK_MISC(lab), 0.0, 0.0); @@ -323,7 +327,7 @@ void CreateRS01VerifyWindow(Method *self, GtkWidget *parent) lab = gtk_label_new(NULL); gtk_misc_set_alignment(GTK_MISC(lab), 0.0, 0.0); - SetLabelText(GTK_LABEL(lab), _("Ecc blocks:")); + GuiSetLabelText(lab, _("Ecc blocks:")); gtk_table_attach(GTK_TABLE(table2), lab, 0, 1, 6, 7, GTK_SHRINK | GTK_FILL, GTK_SHRINK, 5, 2 ); lab = wl->cmpEccBlocks = gtk_label_new(NULL); gtk_misc_set_alignment(GTK_MISC(lab), 0.0, 0.0); @@ -331,7 +335,7 @@ void CreateRS01VerifyWindow(Method *self, GtkWidget *parent) lab = gtk_label_new(NULL); gtk_misc_set_alignment(GTK_MISC(lab), 0.0, 0.0); - SetLabelText(GTK_LABEL(lab), _("Ecc checksum:")); + GuiSetLabelText(lab, _("Ecc checksum:")); gtk_table_attach(GTK_TABLE(table2), lab, 0, 1, 7, 8, GTK_SHRINK | GTK_FILL, GTK_SHRINK, 5, 2 ); lab = wl->cmpEccMd5Sum = gtk_label_new(NULL); gtk_misc_set_alignment(GTK_MISC(lab), 0.0, 0.0); @@ -341,7 +345,7 @@ void CreateRS01VerifyWindow(Method *self, GtkWidget *parent) gtk_misc_set_alignment(GTK_MISC(lab), 0.0, 0.0); gtk_table_attach(GTK_TABLE(table2), lab, 0, 2, 8, 9, GTK_SHRINK | GTK_FILL, GTK_SHRINK, 5, 4); } -#endif +#endif /* WITH_GUI_YES */ /*** *** Verify the prefix.* files @@ -356,31 +360,26 @@ static void cleanup(gpointer data) UnregisterCleanup(); -#ifndef WITH_CLI_ONLY_YES - if(Closure->guiMode) - AllowActions(TRUE); -#endif - if(vc->image) CloseImage(vc->image); g_free(vc); -#ifndef WITH_CLI_ONLY_YES - if(Closure->guiMode) - g_thread_exit(0); -#endif + GuiAllowActions(TRUE); + GuiExitWorkerThread(); } +/*** + *** Verify entry point fpr both CLI and GUI mode + ***/ + void RS01Verify(Image *image) { verify_closure *vc = g_malloc0(sizeof(verify_closure)); Method *self = FindMethod("RS01"); -#ifndef WITH_CLI_ONLY_YES +#ifdef WITH_GUI_YES RS01Widgets *wl = (RS01Widgets*)self->widgetList; #endif char idigest[33],edigest[33]; gint64 excess_sectors = 0; -#ifndef WITH_CLI_ONLY_YES char *ecc_advice = NULL; -#endif EccHeader *eh; gint8 method[5]; @@ -399,23 +398,17 @@ void RS01Verify(Image *image) /*** Examine the .iso file */ -#ifndef WITH_CLI_ONLY_YES - if(Closure->guiMode) - SetLabelText(GTK_LABEL(wl->cmpHeadline), "%s\n%s", - _("Comparing image and error correction files."), - _("- Checking image file -")); -#endif + GuiSetLabelText(wl->cmpHeadline, "%s\n%s", + _("Comparing image and error correction files."), + _("- Checking image file -")); vc->image = image; -#ifndef WITH_CLI_ONLY_YES if(image && image->eccFile) - { if(Closure->guiMode) - SetLabelText(GTK_LABEL(wl->cmpChkSumErrors), "0"); + { GuiSetLabelText(wl->cmpChkSumErrors, "0"); + } + else + { GuiSetLabelText(wl->cmpChkSumErrors, _("n/a")); } - else - if(Closure->guiMode) - SetLabelText(GTK_LABEL(wl->cmpChkSumErrors), _("n/a")); -#endif /* Report basic image properties */ @@ -423,42 +416,32 @@ void RS01Verify(Image *image) if(!image || !image->file) { PrintLog(_("not present\n")); -#ifndef WITH_CLI_ONLY_YES - if(Closure->guiMode) - SwitchAndSetFootline(wl->cmpImageNotebook, 0, NULL, NULL); -#endif + GuiSwitchAndSetFootline(wl->cmpImageNotebook, 0, NULL, NULL); goto process_ecc; } if(image->inLast == 2048) { PrintLog(_("present, contains %" PRId64 " medium sectors.\n"), image->sectorSize); -#ifndef WITH_CLI_ONLY_YES - if(Closure->guiMode) - SetLabelText(GTK_LABEL(wl->cmpImageSectors), "%" PRId64 "", image->sectorSize); -#endif + GuiSetLabelText(wl->cmpImageSectors, "%" PRId64, image->sectorSize); } else { PrintLog(_("present, contains %" PRId64 " medium sectors and %d bytes.\n"), image->sectorSize-1, image->inLast); -#ifndef WITH_CLI_ONLY_YES - if(Closure->guiMode) - SetLabelText(GTK_LABEL(wl->cmpImageSectors), _("%" PRId64 " sectors + %d bytes"), + GuiSetLabelText(wl->cmpImageSectors, _("%" PRId64 " sectors + %d bytes"), image->sectorSize-1, image->inLast); -#endif } if(!Closure->quickVerify) RS01ScanImage(self, image, NULL, PRINT_MODE); -#ifndef WITH_CLI_ONLY_YES if(Closure->stopActions) { if(Closure->stopActions == STOP_CURRENT_ACTION) /* suppress memleak warning when closing window */ - SetLabelText(GTK_LABEL(wl->cmpImageResult), - _("Aborted by user request!"), - Closure->redMarkup); - goto terminate; + { GuiSetLabelText(wl->cmpImageResult, + _("Aborted by user request!"), + Closure->redMarkup); + } + goto terminate; } -#endif /*** Peek into the ecc file to get expected sector count */ @@ -469,12 +452,9 @@ void RS01Verify(Image *image) { diff = image->expectedSectors - image->sectorSize; PrintLog(_("* truncated image : %" PRId64 " sectors too short\n"), diff); -#ifndef WITH_CLI_ONLY_YES - if(Closure->guiMode) - SetLabelText(GTK_LABEL(wl->cmpImageSectors), - _("%" PRId64 " (%" PRId64 " sectors too short)"), - Closure->redMarkup, image->sectorSize, diff); -#endif + GuiSetLabelText(wl->cmpImageSectors, + _("%" PRId64 " (%" PRId64 " sectors too short)"), + Closure->redMarkup, image->sectorSize, diff); image->sectorsMissing += diff; } if(image->sectorSize > image->expectedSectors) @@ -484,29 +464,24 @@ void RS01Verify(Image *image) /*** Show summary of image read */ -#ifndef WITH_CLI_ONLY_YES - if(Closure->guiMode) - { if(image->crcErrors) - SetLabelText(GTK_LABEL(wl->cmpChkSumErrors), - "%" PRId64 "", Closure->redMarkup, image->crcErrors); - if(image->sectorsMissing) - SetLabelText(GTK_LABEL(wl->cmpMissingSectors), - "%" PRId64 "", Closure->redMarkup, image->sectorsMissing); + if(image->crcErrors) + { GuiSetLabelText(wl->cmpChkSumErrors, + "%" PRId64 "", + Closure->redMarkup, image->crcErrors); + } + if(image->sectorsMissing) + { GuiSetLabelText(wl->cmpMissingSectors, + "%" PRId64 "", + Closure->redMarkup, image->sectorsMissing); } -#endif - if(excess_sectors) { PrintLog(_("* image too long : %" PRId64 " excess sectors\n"), excess_sectors); -#ifndef WITH_CLI_ONLY_YES - if(Closure->guiMode) - { SetLabelText(GTK_LABEL(wl->cmpImageSectors), - _("%" PRId64 " (%" PRId64 " excess sectors)"), - Closure->redMarkup, image->sectorSize, excess_sectors); - SetLabelText(GTK_LABEL(wl->cmpImageResult), - _("Bad image."), - Closure->redMarkup); - } -#endif + GuiSetLabelText(wl->cmpImageSectors, + _("%" PRId64 " (%" PRId64 " excess sectors)"), + Closure->redMarkup, image->sectorSize, excess_sectors); + GuiSetLabelText(wl->cmpImageResult, + _("Bad image."), + Closure->redMarkup); } else if(Closure->quickVerify) { PrintLog(_("* quick mode : image NOT scanned\n")); @@ -519,23 +494,15 @@ void RS01Verify(Image *image) if(!image->crcErrors) { PrintLog(_("- good image : all sectors present\n" "- image md5sum : %s\n"),idigest); -#ifndef WITH_CLI_ONLY_YES - if(Closure->guiMode) - { SetLabelText(GTK_LABEL(wl->cmpImageResult),_("Good image."), Closure->greenMarkup); - SetLabelText(GTK_LABEL(wl->cmpImageMd5Sum), "%s", idigest); - } -#endif + GuiSetLabelText(wl->cmpImageResult,_("Good image."), Closure->greenMarkup); + GuiSetLabelText(wl->cmpImageMd5Sum, "%s", idigest); } else { PrintLog(_("* suspicious image : all sectors present, but %" PRId64 " CRC errors\n" "- image md5sum : %s\n"),image->crcErrors,idigest); -#ifndef WITH_CLI_ONLY_YES - if(Closure->guiMode) - { SetLabelText(GTK_LABEL(wl->cmpImageResult), _("Image complete, but contains checksum errors!"), Closure->redMarkup); - SetLabelText(GTK_LABEL(wl->cmpImageMd5Sum), "%s", idigest); - } -#endif + GuiSetLabelText(wl->cmpImageResult, _("Image complete, but contains checksum errors!"), Closure->redMarkup); + GuiSetLabelText(wl->cmpImageMd5Sum, "%s", idigest); } } else /* sectors are missing */ @@ -543,33 +510,25 @@ void RS01Verify(Image *image) PrintLog(_("* BAD image : %" PRId64 " sectors missing\n"), image->sectorsMissing); else PrintLog(_("* BAD image : %" PRId64 " sectors missing, %" PRId64 " CRC errors\n"), image->sectorsMissing, image->crcErrors); -#ifndef WITH_CLI_ONLY_YES - if(Closure->guiMode) - SetLabelText(GTK_LABEL(wl->cmpImageResult), + + GuiSetLabelText(wl->cmpImageResult, _("Bad image."), Closure->redMarkup); -#endif } } /*** The .ecc file */ process_ecc: -#ifndef WITH_CLI_ONLY_YES - if(Closure->guiMode) - SetLabelText(GTK_LABEL(wl->cmpHeadline), "%s\n%s", - _("Comparing image and error correction files."), - _("- Checking ecc file -")); -#endif + GuiSetLabelText(wl->cmpHeadline, "%s\n%s", + _("Comparing image and error correction files."), + _("- Checking ecc file -")); PrintLog("\n%s: ", Closure->eccName); if(!image) { PrintLog(_("not present\n")); -#ifndef WITH_CLI_ONLY_YES - if(Closure->guiMode) - SwitchAndSetFootline(wl->cmpEccNotebook, 0, - wl->cmpEccEmptyMsg,_("No error correction file present.")); -#endif + GuiSwitchAndSetFootline(wl->cmpEccNotebook, 0, + wl->cmpEccEmptyMsg,_("No error correction file present.")); goto skip_ecc; } @@ -595,11 +554,9 @@ process_ecc: PrintLog(_("unusable\n")); break; } -#ifndef WITH_CLI_ONLY_YES - if(Closure->guiMode) - SwitchAndSetFootline(wl->cmpEccNotebook, 0, - wl->cmpEccEmptyMsg,_("No error correction file present.")); -#endif + + GuiSwitchAndSetFootline(wl->cmpEccNotebook, 0, + wl->cmpEccEmptyMsg,_("No error correction file present.")); goto skip_ecc; } @@ -625,35 +582,25 @@ process_ecc: PrintLog(format, _("created by dvdisaster"), major, minor, micro, unstable); PrintLog("\n"); -#ifndef WITH_CLI_ONLY_YES - if(Closure->guiMode) - { SwitchAndSetFootline(wl->cmpEccNotebook, 1, + GuiSwitchAndSetFootline(wl->cmpEccNotebook, 1, wl->cmpEccCreatedBy, format, "dvdisaster", major, minor, micro, unstable); - } -#endif } else /* version format x.xx */ { char *format = "%s-%d.%d%s"; PrintLog(format, _("created by dvdisaster"), major, minor, unstable); PrintLog("\n"); -#ifndef WITH_CLI_ONLY_YES - if(Closure->guiMode) - SwitchAndSetFootline(wl->cmpEccNotebook, 1, - wl->cmpEccCreatedBy, format, "dvdisaster", - major, minor, unstable); -#endif + GuiSwitchAndSetFootline(wl->cmpEccNotebook, 1, + wl->cmpEccCreatedBy, format, "dvdisaster", + major, minor, unstable); } } else { PrintLog(_("created by dvdisaster-0.41.x.\n")); -#ifndef WITH_CLI_ONLY_YES - if(Closure->guiMode) - SwitchAndSetFootline(wl->cmpEccNotebook, 1, - wl->cmpEccCreatedBy, "dvdisaster-0.41.x"); -#endif + GuiSwitchAndSetFootline(wl->cmpEccNotebook, 1, + wl->cmpEccCreatedBy, "dvdisaster-0.41.x"); } /* Information on RS01 properties */ @@ -663,12 +610,10 @@ process_ecc: PrintLog(_("- method : %4s, %d roots, %4.1f%% redundancy.\n"), method, eh->eccBytes, ((double)eh->eccBytes*100.0)/(double)eh->dataBytes); -#ifndef WITH_CLI_ONLY_YES - if(Closure->guiMode) - SetLabelText(GTK_LABEL(wl->cmpEccMethod), _("%4s, %d roots, %4.1f%% redundancy"), - method, eh->eccBytes, - ((double)eh->eccBytes*100.0)/(double)eh->dataBytes); -#endif + + GuiSetLabelText(wl->cmpEccMethod, _("%4s, %d roots, %4.1f%% redundancy"), + method, eh->eccBytes, + ((double)eh->eccBytes*100.0)/(double)eh->dataBytes); /* Show and verify needed version */ @@ -676,12 +621,9 @@ process_ecc: { PrintLog(_("- requires : dvdisaster-%d.%d (good)\n"), eh->neededVersion/10000, (eh->neededVersion%10000)/100); -#ifndef WITH_CLI_ONLY_YES - if(Closure->guiMode) - SetLabelText(GTK_LABEL(wl->cmpEccRequires), "dvdisaster-%d.%d", - eh->neededVersion/10000, - (eh->neededVersion%10000)/100); -#endif + GuiSetLabelText(wl->cmpEccRequires, "dvdisaster-%d.%d", + eh->neededVersion/10000, + (eh->neededVersion%10000)/100); } else { PrintLog(_("* requires : dvdisaster-%d.%d (BAD)\n" @@ -690,17 +632,13 @@ process_ecc: eh->neededVersion/10000, (eh->neededVersion%10000)/100); -#ifndef WITH_CLI_ONLY_YES - if(Closure->guiMode) - { SetLabelText(GTK_LABEL(wl->cmpEccRequires), - "dvdisaster-%d.%d", - Closure->redMarkup, - eh->neededVersion/10000, - (eh->neededVersion%10000)/100); - if(!ecc_advice) - ecc_advice = g_strdup_printf(_("Please upgrade your version of dvdisaster!"), Closure->redMarkup); - } -#endif + GuiSetLabelText(wl->cmpEccRequires, + "dvdisaster-%d.%d", + Closure->redMarkup, + eh->neededVersion/10000, + (eh->neededVersion%10000)/100); + if(!ecc_advice) + ecc_advice = g_strdup_printf(_("Please upgrade your version of dvdisaster!"), Closure->redMarkup); } @@ -712,21 +650,15 @@ process_ecc: if(!image->file) { if(!ecc_in_last) { PrintLog(_("- medium sectors : %" PRId64 "\n"), image->expectedSectors); -#ifndef WITH_CLI_ONLY_YES - if(Closure->guiMode) - SetLabelText(GTK_LABEL(wl->cmpEccMediumSectors), "%" PRId64 "", image->expectedSectors); -#endif + GuiSetLabelText(wl->cmpEccMediumSectors, "%" PRId64 "", image->expectedSectors); } else { PrintLog(_("- medium sectors : %" PRId64 " sectors + %d bytes\n"), image->expectedSectors-1, ecc_in_last); -#ifndef WITH_CLI_ONLY_YES - if(Closure->guiMode) - SetLabelText(GTK_LABEL(wl->cmpEccMediumSectors), - _("%" PRId64 " sectors + %d bytes"), - image->expectedSectors-1, ecc_in_last); -#endif - } + GuiSetLabelText(wl->cmpEccMediumSectors, + _("%" PRId64 " sectors + %d bytes"), + image->expectedSectors-1, ecc_in_last); + } } if(image->file) @@ -735,20 +667,14 @@ process_ecc: && (!ecc_in_last || image->inLast == eh->inLast)) { if(!ecc_in_last) { PrintLog(_("- medium sectors : %" PRId64 " (good)\n"), image->expectedSectors); -#ifndef WITH_CLI_ONLY_YES - if(Closure->guiMode) - SetLabelText(GTK_LABEL(wl->cmpEccMediumSectors), "%" PRId64 "", image->expectedSectors); -#endif + GuiSetLabelText(wl->cmpEccMediumSectors, "%" PRId64, image->expectedSectors); } else { PrintLog(_("- medium sectors : %" PRId64 " sectors + %d bytes (good)\n"), image->expectedSectors-1, ecc_in_last); -#ifndef WITH_CLI_ONLY_YES - if(Closure->guiMode) - SetLabelText(GTK_LABEL(wl->cmpEccMediumSectors), - _("%" PRId64 " sectors + %d bytes"), - image->expectedSectors-1, ecc_in_last); -#endif + GuiSetLabelText(wl->cmpEccMediumSectors, + _("%" PRId64 " sectors + %d bytes"), + image->expectedSectors-1, ecc_in_last); } } @@ -756,40 +682,31 @@ process_ecc: { /* TAO case (1 or 2 sectors more than expected) */ if(image->sectorSize > image->expectedSectors && image->sectorSize - image->expectedSectors <= 2) { PrintLog(_("* medium sectors : %" PRId64 " (BAD, perhaps TAO/DAO mismatch)\n"), image->expectedSectors); -#ifndef WITH_CLI_ONLY_YES - if(Closure->guiMode) - { if(!ecc_in_last) - SetLabelText(GTK_LABEL(wl->cmpEccMediumSectors), "%" PRId64 "", - Closure->redMarkup, image->expectedSectors); - else SetLabelText(GTK_LABEL(wl->cmpEccMediumSectors), "%" PRId64 " sectors + %d bytes", - Closure->redMarkup, image->expectedSectors-1, ecc_in_last); + if(!ecc_in_last) + { GuiSetLabelText(wl->cmpEccMediumSectors, "%" PRId64 "", + Closure->redMarkup, image->expectedSectors); + } + else + { GuiSetLabelText(wl->cmpEccMediumSectors, "%" PRId64 " sectors + %d bytes", + Closure->redMarkup, image->expectedSectors-1, ecc_in_last); } -#endif } else /* more than 2 Sectors difference */ { if(!ecc_in_last) { PrintLog(_("* medium sectors : %" PRId64 " (BAD)\n"), image->expectedSectors); -#ifndef WITH_CLI_ONLY_YES - if(Closure->guiMode) - { SetLabelText(GTK_LABEL(wl->cmpEccMediumSectors), "%" PRId64 "", + GuiSetLabelText(wl->cmpEccMediumSectors, "%" PRId64 "", Closure->redMarkup, image->expectedSectors); - if(!ecc_advice) - ecc_advice = g_strdup_printf(_("Image size does not match error correction file."), Closure->redMarkup); - } -#endif + if(!ecc_advice) + ecc_advice = g_strdup_printf(_("Image size does not match error correction file."), Closure->redMarkup); } else /* byte size difference */ { PrintLog(_("* medium sectors : %" PRId64 " sectors + %d bytes (BAD)\n"), image->expectedSectors-1, ecc_in_last); -#ifndef WITH_CLI_ONLY_YES - if(Closure->guiMode) - { SetLabelText(GTK_LABEL(wl->cmpEccMediumSectors), + GuiSetLabelText(wl->cmpEccMediumSectors, _("%" PRId64 " sectors + %d bytes"), Closure->redMarkup, image->expectedSectors-1, ecc_in_last); - if(!ecc_advice) - ecc_advice = g_strdup_printf(_("Image size does not match error correction file."), Closure->redMarkup); - } -#endif + if(!ecc_advice) + ecc_advice = g_strdup_printf(_("Image size does not match error correction file."), Closure->redMarkup); } } } @@ -801,56 +718,45 @@ process_ecc: { AsciiDigest(edigest, eh->mediumSum); if(image && image->file && !image->sectorsMissing && !excess_sectors) { int n = !memcmp(eh->mediumSum, image->mediumSum, 16); - if(n) PrintLog(_("- image md5sum : %s (good)\n"),edigest); - else PrintLog(_("* image md5sum : %s (BAD)\n"),edigest); -#ifndef WITH_CLI_ONLY_YES - if(Closure->guiMode) - { if(n) SetLabelText(GTK_LABEL(wl->cmpEccImgMd5Sum), "%s", edigest); - else - { SetLabelText(GTK_LABEL(wl->cmpEccImgMd5Sum), "%s", Closure->redMarkup, edigest); - SetLabelText(GTK_LABEL(wl->cmpImageMd5Sum), "%s", Closure->redMarkup, idigest); - } + if(n) + { PrintLog(_("- image md5sum : %s (good)\n"),edigest); + GuiSetLabelText(wl->cmpEccImgMd5Sum, "%s", edigest); + } + else + { PrintLog(_("* image md5sum : %s (BAD)\n"),edigest); + GuiSetLabelText(wl->cmpEccImgMd5Sum, "%s", + Closure->redMarkup, edigest); + GuiSetLabelText(wl->cmpImageMd5Sum, "%s", + Closure->redMarkup, idigest); } -#endif } else { PrintLog(_("- image md5sum : %s\n"),edigest); -#ifndef WITH_CLI_ONLY_YES - if(Closure->guiMode) - SetLabelText(GTK_LABEL(wl->cmpEccImgMd5Sum), "%s", edigest); -#endif + GuiSetLabelText(wl->cmpEccImgMd5Sum, "%s", edigest); } } if(image && image->file) { if(image->fpState != FP_PRESENT) { PrintLog(_("* fingerprint match: NOT POSSIBLE - related sector is missing in image!\n")); -#ifndef WITH_CLI_ONLY_YES - if(Closure->guiMode) - SetLabelText(GTK_LABEL(wl->cmpEccFingerprint), _("missing sector prevents calculation"), Closure->redMarkup); -#endif + GuiSetLabelText(wl->cmpEccFingerprint, + _("missing sector prevents calculation"), + Closure->redMarkup); } else { if(memcmp(image->imageFP, eh->mediumFP, 16)) { PrintLog(_("* fingerprint match: MISMATCH - .iso and .ecc don't belong together!\n")); -#ifndef WITH_CLI_ONLY_YES - if(Closure->guiMode) - { SetLabelText(GTK_LABEL(wl->cmpEccFingerprint), + GuiSetLabelText(wl->cmpEccFingerprint, _("mismatch"), Closure->redMarkup); - if(!ecc_advice) - ecc_advice = g_strdup_printf(_("Image and error correction files do not belong together!"), Closure->redMarkup); - } -#endif + if(!ecc_advice) + ecc_advice = g_strdup_printf(_("Image and error correction files do not belong together!"), Closure->redMarkup); } else { PrintLog(_("- fingerprint match: good\n")); -#ifndef WITH_CLI_ONLY_YES - if(Closure->guiMode) - SetLabelText(GTK_LABEL(wl->cmpEccFingerprint), _("good")); -#endif + GuiSetLabelText(wl->cmpEccFingerprint, _("good")); } } } @@ -867,17 +773,14 @@ process_ecc: if(ecc_expected == ecc_blocks) { PrintLog(_("- ecc blocks : %" PRId64 " (good)\n"),ecc_blocks); -#ifndef WITH_CLI_ONLY_YES - if(Closure->guiMode) - SetLabelText(GTK_LABEL(wl->cmpEccBlocks), "%" PRId64 "", ecc_blocks); -#endif + GuiSetLabelText(wl->cmpEccBlocks, "%" PRId64, ecc_blocks); } else - { PrintLog(_("* ecc blocks : %" PRId64 " (BAD, expected %" PRId64 ")\n"),ecc_blocks,ecc_expected); -#ifndef WITH_CLI_ONLY_YES - if(Closure->guiMode) - SetLabelText(GTK_LABEL(wl->cmpEccBlocks), _("%" PRId64 " (bad, expected %" PRId64 ")"),Closure->redMarkup,ecc_blocks,ecc_expected); -#endif + { PrintLog(_("* ecc blocks : %" PRId64 " (BAD, expected %" PRId64 ")\n"), + ecc_blocks,ecc_expected); + GuiSetLabelText(wl->cmpEccBlocks, + _("%" PRId64 " (bad, expected %" PRId64 ")"), + Closure->redMarkup,ecc_blocks,ecc_expected); } /*** Test ecc file against its own md5sum */ @@ -898,25 +801,18 @@ process_ecc: count += n; percent = (100*count)/image->eccFile->size; if(last_percent != percent) - { -#ifndef WITH_CLI_ONLY_YES - if(!Closure->guiMode) -#endif - PrintProgress(_("- ecc md5sum : %3d%%"),percent); -#ifndef WITH_CLI_ONLY_YES - else SetLabelText(GTK_LABEL(wl->cmpEccMd5Sum), "%3d%%", percent); -#endif + { PrintProgress(_("- ecc md5sum : %3d%%"),percent); + GuiSetLabelText(wl->cmpEccMd5Sum, "%3d%%", percent); last_percent = percent; } -#ifndef WITH_CLI_ONLY_YES if(Closure->stopActions) { if(Closure->stopActions == STOP_CURRENT_ACTION) /* suppress memleak warning when closing window */ - SetLabelText(GTK_LABEL(wl->cmpEccResult), - _("Aborted by user request!"), Closure->redMarkup); + { GuiSetLabelText(wl->cmpEccResult, + _("Aborted by user request!"), Closure->redMarkup); + } goto terminate; } -#endif } MD5Final(digest, &md5ctxt); @@ -924,36 +820,27 @@ process_ecc: if(memcmp(eh->eccSum, digest, 16)) { PrintLog(_("* ecc md5sum : BAD, ecc file may be damaged!\n")); -#ifndef WITH_CLI_ONLY_YES - if(Closure->guiMode) - { SetLabelText(GTK_LABEL(wl->cmpEccMd5Sum), _("bad"), Closure->redMarkup); - if(!ecc_advice) - ecc_advice = g_strdup_printf(_("Error correction file may be damaged!"), Closure->redMarkup); - } -#endif + GuiSetLabelText(wl->cmpEccMd5Sum, _("bad"), Closure->redMarkup); + if(!ecc_advice) + ecc_advice = g_strdup_printf(_("Error correction file may be damaged!"), Closure->redMarkup); } else { PrintLog(_("- ecc md5sum : %s (good)\n"),edigest); -#ifndef WITH_CLI_ONLY_YES - if(Closure->guiMode) - SetLabelText(GTK_LABEL(wl->cmpEccMd5Sum), "%s", edigest); -#endif + GuiSetLabelText(wl->cmpEccMd5Sum, "%s", edigest); } skip_ecc: PrintLog("\n"); -#ifndef WITH_CLI_ONLY_YES - if(Closure->guiMode) - { if(ecc_advice) - { SetLabelText(GTK_LABEL(wl->cmpEccResult), "%s", ecc_advice); - g_free(ecc_advice); - } - else SetLabelText(GTK_LABEL(wl->cmpEccResult), - _("Good error correction file."), - Closure->greenMarkup); + if(ecc_advice) + { GuiSetLabelText(wl->cmpEccResult, "%s", ecc_advice); + g_free(ecc_advice); + } + else + { GuiSetLabelText(wl->cmpEccResult, + _("Good error correction file."), + Closure->greenMarkup); } -#endif /*** Close and clean up */ diff --git a/src/rs01-window.c b/src/rs01-window.c index 68a1a42..6f88ffe 100644 --- a/src/rs01-window.c +++ b/src/rs01-window.c @@ -19,7 +19,10 @@ * You should have received a copy of the GNU General Public License * along with dvdisaster. If not, see . */ -// DVDISASTER_GUI_FILE + +/*** src type: only GUI code ***/ + +#ifdef WITH_GUI_YES #include "dvdisaster.h" @@ -57,8 +60,8 @@ static void set_spin_button_value(GtkSpinButton *spin, int value) void ResetRS01EncodeWindow(Method *method) { RS01Widgets *wl = (RS01Widgets*)method->widgetList; - SetProgress(wl->encPBar1, 0, 100); - SetProgress(wl->encPBar2, 0, 100); + GuiSetProgress(wl->encPBar1, 0, 100); + GuiSetProgress(wl->encPBar2, 0, 100); gtk_widget_hide(wl->encLabel2); gtk_widget_hide(wl->encPBar2); @@ -103,15 +106,9 @@ static gboolean curve_button_cb(GtkWidget *wid, gpointer action) */ void CreateRS01EWindow(Method *method, GtkWidget *parent) -{ RS01Widgets *wl; +{ RS01Widgets *wl = method->widgetList; GtkWidget *sep,*wid,*pbar,*table,*hbox; - if(!method->widgetList) - { wl = g_malloc0(sizeof(RS01Widgets)); - method->widgetList = wl; - } - else wl = method->widgetList; - wl->encHeadline = gtk_label_new(NULL); gtk_misc_set_alignment(GTK_MISC(wl->encHeadline), 0.0, 0.0); gtk_misc_set_padding(GTK_MISC(wl->encHeadline), 5, 0); @@ -200,9 +197,9 @@ void RS01SetFixMaxValues(RS01Widgets *wl, int data_bytes, int ecc_bytes, gint64 static gboolean results_idle_func(gpointer data) { RS01Widgets *wl = (RS01Widgets*)data; - SetLabelText(GTK_LABEL(wl->fixCorrected), _("Repaired: %" PRId64 ""), wl->corrected); - SetLabelText(GTK_LABEL(wl->fixUncorrected), _("Unrepairable: %" PRId64 ""),Closure->redMarkup, wl->uncorrected); - SetLabelText(GTK_LABEL(wl->fixProgress), _("Progress: %3d.%1d%%"), wl->percent/10, wl->percent%10); + GuiSetLabelText(wl->fixCorrected, _("Repaired: %" PRId64), wl->corrected); + GuiSetLabelText(wl->fixUncorrected, _("Unrepairable: %" PRId64 ""),Closure->redMarkup, wl->uncorrected); + GuiSetLabelText(wl->fixProgress, _("Progress: %3d.%1d%%"), wl->percent/10, wl->percent%10); return FALSE; } @@ -221,9 +218,9 @@ void RS01UpdateFixResults(RS01Widgets *wl, gint64 corrected, gint64 uncorrected) static gboolean curve_idle_func(gpointer data) { RS01Widgets *wl = (RS01Widgets*)data; - gint x0 = CurveX(wl->fixCurve, (double)wl->lastPercent); - gint x1 = CurveX(wl->fixCurve, (double)wl->percent); - gint y = CurveY(wl->fixCurve, wl->fixCurve->ivalue[wl->percent]); + gint x0 = GuiCurveX(wl->fixCurve, (double)wl->lastPercent); + gint x1 = GuiCurveX(wl->fixCurve, (double)wl->percent); + gint y = GuiCurveY(wl->fixCurve, wl->fixCurve->ivalue[wl->percent]); gint i; /*** Mark unused ecc values */ @@ -257,7 +254,7 @@ static gboolean curve_idle_func(gpointer data) /* Redraw the ecc capacity threshold line */ - y = CurveY(wl->fixCurve, wl->eccBytes); + y = GuiCurveY(wl->fixCurve, wl->eccBytes); gdk_gc_set_rgb_fg_color(Closure->drawGC, Closure->greenSector); gdk_draw_line(wl->fixCurve->widget->window, Closure->drawGC, @@ -289,7 +286,7 @@ static void update_geometry(RS01Widgets *wl) { /* Curve geometry */ - UpdateCurveGeometry(wl->fixCurve, "999", 20); + GuiUpdateCurveGeometry(wl->fixCurve, "999", 20); /* Label positions in the foot line */ @@ -304,12 +301,12 @@ static void redraw_curve(RS01Widgets *wl) /* Redraw the curve */ - RedrawAxes(wl->fixCurve); - RedrawCurve(wl->fixCurve, wl->percent); + GuiRedrawAxes(wl->fixCurve); + GuiRedrawCurve(wl->fixCurve, wl->percent); /* Ecc capacity threshold line */ - y = CurveY(wl->fixCurve, wl->eccBytes); + y = GuiCurveY(wl->fixCurve, wl->eccBytes); gdk_gc_set_rgb_fg_color(Closure->drawGC, Closure->greenSector); gdk_draw_line(wl->fixCurve->widget->window, Closure->drawGC, @@ -342,7 +339,7 @@ void ResetRS01FixWindow(Method *method) gtk_notebook_set_current_page(GTK_NOTEBOOK(wl->fixNotebook), 0); - ZeroCurve(wl->fixCurve); + GuiZeroCurve(wl->fixCurve); RS01UpdateFixResults(wl, 0, 0); if(wl->fixCurve && wl->fixCurve->widget) @@ -359,15 +356,9 @@ void ResetRS01FixWindow(Method *method) */ void CreateRS01FWindow(Method *method, GtkWidget *parent) -{ RS01Widgets *wl; +{ RS01Widgets *wl = method->widgetList; GtkWidget *sep,*ignore,*d_area,*notebook,*hbox; - if(!method->widgetList) - { wl = g_malloc0(sizeof(RS01Widgets)); - method->widgetList = wl; - } - else wl = method->widgetList; - wl->fixHeadline = gtk_label_new(NULL); gtk_misc_set_alignment(GTK_MISC(wl->fixHeadline), 0.0, 0.0); gtk_misc_set_padding(GTK_MISC(wl->fixHeadline), 5, 0); @@ -411,7 +402,7 @@ void CreateRS01FWindow(Method *method, GtkWidget *parent) ignore = gtk_label_new("footer_tab"); gtk_notebook_append_page(GTK_NOTEBOOK(notebook), wl->fixFootline, ignore); - wl->fixCurve = CreateCurve(d_area, _("Errors/Ecc block"), "%d", 1000, CURVE_PERCENT); + wl->fixCurve = GuiCreateCurve(d_area, _("Errors/Ecc block"), "%d", 1000, CURVE_PERCENT); wl->fixCurve->enable = DRAW_ICURVE; } @@ -468,8 +459,8 @@ static void cache_cb(GtkWidget *widget, gpointer data) utf = g_locale_to_utf8(text, -1, NULL, NULL, NULL); gtk_label_set_markup(GTK_LABEL(lwoh->normalLabel), utf); gtk_label_set_markup(GTK_LABEL(lwoh->linkLabel), utf); - SetOnlineHelpLinkText(lwoh, text); - UpdateMethodPreferences(); + GuiSetOnlineHelpLinkText(lwoh, text); + GuiUpdateMethodPreferences(); g_free(text); g_free(utf); } @@ -486,7 +477,7 @@ static void nroots_cb(GtkWidget *widget, gpointer data) set_range_value(GTK_RANGE(wl->redundancyScaleB), value); else set_range_value(GTK_RANGE(wl->redundancyScaleA), value); - UpdateMethodPreferences(); + GuiUpdateMethodPreferences(); } static void ecc_size_cb(GtkWidget *widget, gpointer data) @@ -501,7 +492,7 @@ static void ecc_size_cb(GtkWidget *widget, gpointer data) gtk_spin_button_set_value(GTK_SPIN_BUTTON(wl->redundancySpinB), atoi(Closure->redundancy)); else gtk_spin_button_set_value(GTK_SPIN_BUTTON(wl->redundancySpinA), atoi(Closure->redundancy)); - UpdateMethodPreferences(); + GuiUpdateMethodPreferences(); } static void toggle_cb(GtkWidget *widget, gpointer data) @@ -580,7 +571,7 @@ static void toggle_cb(GtkWidget *widget, gpointer data) Closure->redundancy = g_strdup_printf("%dm", space); } - UpdateMethodPreferences(); + GuiUpdateMethodPreferences(); } } @@ -675,8 +666,8 @@ void CreateRS01PrefsPage(Method *method, GtkWidget *parent) /* Normal redundancy */ - lwoh = CreateLabelWithOnlineHelp(_("Normal redundancy"), _("Normal")); - RegisterPreferencesHelpWindow(lwoh); + lwoh = GuiCreateLabelWithOnlineHelp(_("Normal redundancy"), _("Normal")); + GuiRegisterPreferencesHelpWindow(lwoh); for(i=0; i<2; i++) { GtkWidget *hbox = gtk_hbox_new(FALSE, 4); @@ -694,19 +685,19 @@ void CreateRS01PrefsPage(Method *method, GtkWidget *parent) else { wl->radio1B = radio; gtk_box_pack_start(GTK_BOX(hbox), lwoh->normalLabel, FALSE, FALSE, 0); - AddHelpWidget(lwoh, hbox); + GuiAddHelpWidget(lwoh, hbox); } } - AddHelpParagraph(lwoh, _("Normal redundancy\n\n" - "The preset \"normal\" creates a redundancy of 14.3%%.\n" - "It invokes optimized program code to speed up the " - "error correction file creation.")); + GuiAddHelpParagraph(lwoh, _("Normal redundancy\n\n" + "The preset \"normal\" creates a redundancy of 14.3%%.\n" + "It invokes optimized program code to speed up the " + "error correction file creation.")); /* High redundancy */ - lwoh = CreateLabelWithOnlineHelp(_("High redundancy"), _("High")); - RegisterPreferencesHelpWindow(lwoh); + lwoh = GuiCreateLabelWithOnlineHelp(_("High redundancy"), _("High")); + GuiRegisterPreferencesHelpWindow(lwoh); for(i=0; i<2; i++) { GtkWidget *hbox = gtk_hbox_new(FALSE, 4); @@ -724,20 +715,20 @@ void CreateRS01PrefsPage(Method *method, GtkWidget *parent) else { wl->radio2B = radio; gtk_box_pack_start(GTK_BOX(hbox), lwoh->normalLabel, FALSE, FALSE, 0); - AddHelpWidget(lwoh, hbox); + GuiAddHelpWidget(lwoh, hbox); } } - AddHelpParagraph(lwoh, _("High redundancy\n\n" - "The preset \"high\" creates a redundancy of 33.5%%.\n" - "It invokes optimized program code to speed up the " - "error correction file creation.")); + GuiAddHelpParagraph(lwoh, _("High redundancy\n\n" + "The preset \"high\" creates a redundancy of 33.5%%.\n" + "It invokes optimized program code to speed up the " + "error correction file creation.")); /* User-selected redundancy */ - lwoh = CreateLabelWithOnlineHelp(_("Other redundancy"), _("Other")); - RegisterPreferencesHelpWindow(lwoh); + lwoh = GuiCreateLabelWithOnlineHelp(_("Other redundancy"), _("Other")); + GuiRegisterPreferencesHelpWindow(lwoh); for(i=0; i<2; i++) { hbox = gtk_hbox_new(FALSE, 4); @@ -771,20 +762,21 @@ void CreateRS01PrefsPage(Method *method, GtkWidget *parent) } else { wl->redundancyScaleB = scale; - AddHelpWidget(lwoh, hbox); + GuiAddHelpWidget(lwoh, hbox); } } - AddHelpParagraph(lwoh, _("Other redundancy\n\n" - "Specifies the redundancy by percent.\n" - "An error correction file with x%% redundancy " - "will be approximately x%% of the size of the " - "corresponding image file.")); + GuiAddHelpParagraph(lwoh, _("Other redundancy\n\n" + "Specifies the redundancy by percent.\n" + "An error correction file with x%% redundancy " + "will be approximately x%% of the size of the " + "corresponding image file.")); /* Space-delimited redundancy */ - lwoh = CreateLabelWithOnlineHelp(_("Space-delimited redundancy"), _("Use at most")); - RegisterPreferencesHelpWindow(lwoh); + lwoh = GuiCreateLabelWithOnlineHelp(_("Space-delimited redundancy"), + _("Use at most")); + GuiRegisterPreferencesHelpWindow(lwoh); for(i=0; i<2; i++) { hbox = gtk_hbox_new(FALSE, 4); @@ -821,18 +813,18 @@ void CreateRS01PrefsPage(Method *method, GtkWidget *parent) else { wl->redundancySpinB = spin; wl->radio4LabelB = lab; - AddHelpWidget(lwoh, hbox); + GuiAddHelpWidget(lwoh, hbox); } } - AddHelpParagraph(lwoh, _("Space-delimited redundancy\n\n" - "Specifies the maximum size of the error correction file in MiB. " - "dvdisaster will choose a suitable redundancy setting so that " - "the overall size of the error correction file does not exceed " - "the given limit.\n\n" - "Advance notice: When using the same size setting for " - "images of vastly different size, smaller images receive more " - "redundancy than larger ones. This is usually not what you want.")); + GuiAddHelpParagraph(lwoh, _("Space-delimited redundancy\n\n" + "Specifies the maximum size of the error correction file in MiB. " + "dvdisaster will choose a suitable redundancy setting so that " + "the overall size of the error correction file does not exceed " + "the given limit.\n\n" + "Advance notice: When using the same size setting for " + "images of vastly different size, smaller images receive more " + "redundancy than larger ones. This is usually not what you want.")); /*** Preset redundancy values */ @@ -872,13 +864,13 @@ void CreateRS01PrefsPage(Method *method, GtkWidget *parent) gtk_box_pack_start(GTK_BOX(parent), frame, FALSE, FALSE, 0); text = g_strdup_printf(_("%d MiB of file cache"), Closure->cacheMiB); - lwoh = CreateLabelWithOnlineHelp(_("File cache"), text); - RegisterPreferencesHelpWindow(lwoh); + lwoh = GuiCreateLabelWithOnlineHelp(_("File cache"), text); + GuiRegisterPreferencesHelpWindow(lwoh); g_free(text); wl->cacheLwoh = lwoh; - LockLabelSize(GTK_LABEL(lwoh->normalLabel), _utf("%d MiB of file cache"), 2222); - LockLabelSize(GTK_LABEL(lwoh->linkLabel), _utf("%d MiB of file cache"), 2222); + GuiLockLabelSize(lwoh->normalLabel, _utf("%d MiB of file cache"), 2222); + GuiLockLabelSize(lwoh->linkLabel, _utf("%d MiB of file cache"), 2222); for(i=0; i<2; i++) { GtkWidget *hbox = gtk_hbox_new(FALSE, 4); @@ -909,12 +901,14 @@ void CreateRS01PrefsPage(Method *method, GtkWidget *parent) else { wl->cacheScaleB = scale; gtk_box_pack_start(GTK_BOX(hbox), lwoh->normalLabel, FALSE, FALSE, 0); - AddHelpWidget(lwoh, hbox); + GuiAddHelpWidget(lwoh, hbox); } } - AddHelpParagraph(lwoh, _("File cache\n\n" - "dvdisaster optimizes access to the image and error correction " - "files by maintaining its own cache. " - "The preset of 32MiB is suitable for most systems.")); + GuiAddHelpParagraph(lwoh, _("File cache\n\n" + "dvdisaster optimizes access to the image and error correction " + "files by maintaining its own cache. " + "The preset of 32MiB is suitable for most systems.")); } + +#endif /* WITH_GUI_YES */ diff --git a/src/rs02-common.c b/src/rs02-common.c index 583283b..75b0280 100644 --- a/src/rs02-common.c +++ b/src/rs02-common.c @@ -20,6 +20,8 @@ * along with dvdisaster. If not, see . */ +/*** src type: no GUI code ***/ + #include "dvdisaster.h" #include "rs02-includes.h" @@ -432,19 +434,15 @@ RS02Layout *CalcRS02Layout(Image *image) /* See if user wants to pick a certain redundancy */ -#ifndef WITH_CLI_ONLY_YES if(!Closure->guiMode && Closure->redundancy) -#else - if(Closure->redundancy) -#endif { int len = strlen(Closure->redundancy); switch(Closure->redundancy[len-1]) { case 'r': /* pick number of roots */ - { char buf[len+1]; + { char buf[len]; memcpy(buf, Closure->redundancy, len-1); - buf[len-1]=0; + buf[len-1]=0; /* strip off the 'r' */ requested_roots = atoi(buf); break; } @@ -453,7 +451,7 @@ RS02Layout *CalcRS02Layout(Image *image) int percent; memcpy(buf, Closure->redundancy, len-1); - buf[len-1]=0; + buf[len-1]=0; /* strip off the '%' */ percent = atoi(buf); for(requested_roots = 7; requested_roots < 171; requested_roots++) diff --git a/src/rs02-create.c b/src/rs02-create.c index f33d810..b43b796 100644 --- a/src/rs02-create.c +++ b/src/rs02-create.c @@ -20,6 +20,8 @@ * along with dvdisaster. If not, see . */ +/*** src type: some GUI code ***/ + #include "dvdisaster.h" #include "rs02-includes.h" @@ -31,9 +33,7 @@ typedef struct { Image *image; Method *self; -#ifndef WITH_CLI_ONLY_YES RS02Widgets *wl; -#endif RS02Layout *lay; GaloisTables *gt; ReedSolomonTables *rt; @@ -56,15 +56,12 @@ static void ecc_cleanup(gpointer data) UnregisterCleanup(); -#ifndef WITH_CLI_ONLY_YES - if(Closure->guiMode) - { if(ec->earlyTermination && ec->wl) - SetLabelText(GTK_LABEL(ec->wl->encFootline), - _("Aborted by unrecoverable error."), - Closure->redMarkup); - AllowActions(TRUE); + if(ec->earlyTermination && ec->wl) + { GuiSetLabelText(ec->wl->encFootline, + _("Aborted by unrecoverable error."), + Closure->redMarkup); } -#endif + GuiAllowActions(TRUE); /*** We must invalidate the CRC cache as it does only cover the data portion of the image, not the full RS02 enhanced image. */ @@ -92,10 +89,7 @@ static void ecc_cleanup(gpointer data) g_free(ec); -#ifndef WITH_CLI_ONLY_YES - if(Closure->guiMode) - g_thread_exit(0); -#endif + GuiExitWorkerThread(); } /*** @@ -107,30 +101,24 @@ static void ecc_cleanup(gpointer data) */ static void abort_encoding(ecc_closure *ec, int truncate) -{ -#ifndef WITH_CLI_ONLY_YES - RS02Widgets *wl = ec->wl; -#endif - +{ if(truncate && ec->lay) { if(!LargeTruncate(ec->image->file, (gint64)(2048*ec->lay->dataSectors))) Stop(_("Could not truncate %s: %s\n"),Closure->imageName,strerror(errno)); -#ifndef WITH_CLI_ONLY_YES if(Closure->stopActions == STOP_CURRENT_ACTION) - SetLabelText(GTK_LABEL(wl->encFootline), - _("Aborted by user request! (partial ecc data removed from image)"), - Closure->redMarkup); -#endif + { GuiSetLabelText(ec->wl->encFootline, + _("Aborted by user request! (partial ecc data removed from image)"), + Closure->redMarkup); + } } -#ifndef WITH_CLI_ONLY_YES else { if(Closure->stopActions == STOP_CURRENT_ACTION) - SetLabelText(GTK_LABEL(wl->encFootline), - _("Aborted by user request!"), - Closure->redMarkup); + { GuiSetLabelText(ec->wl->encFootline, + _("Aborted by user request!"), + Closure->redMarkup); + } } -#endif ec->earlyTermination = FALSE; /* suppress respective error message */ @@ -149,16 +137,12 @@ static void remove_old_ecc(ecc_closure *ec) guint64 data_bytes; int answer; -#ifndef WITH_CLI_ONLY_YES if(Closure->confirmDeletion || !Closure->guiMode) -#endif - answer = ModalWarningOrCLI(GTK_MESSAGE_WARNING, GTK_BUTTONS_OK_CANCEL, NULL, + answer = ModalWarning(GTK_MESSAGE_WARNING, GTK_BUTTONS_OK_CANCEL, NULL, _("Image \"%s\" already contains error correction information.\n" "Truncating image to data part (%" PRId64 " sectors).\n"), Closure->imageName, data_sectors); -#ifndef WITH_CLI_ONLY_YES else answer = TRUE; -#endif if(!answer) abort_encoding(ec, FALSE); @@ -194,7 +178,7 @@ static void check_image(ecc_closure *ec) Otherwise create a new buffer. */ - if(CrcBufValid(Closure->crcBuf, NULL, NULL)) + if(CrcBufValid(Closure->crcBuf, image, DATA_SECTORS_ONLY)) { ec->checksumsReused=TRUE; memcpy(image->mediumSum, Closure->crcBuf->dataMD5sum, 16); return; @@ -213,10 +197,8 @@ static void check_image(ecc_closure *ec) { unsigned char buf[2048]; int expected,n,err; -#ifndef WITH_CLI_ONLY_YES if(Closure->stopActions) /* User hit the Stop button */ abort_encoding(ec, FALSE); -#endif if(sectors < image->sectorSize-1) expected = 2048; else @@ -256,10 +238,7 @@ static void check_image(ecc_closure *ec) if(last_percent != percent) { PrintProgress(_("Preparing image (checksums, adding space): %3d%%") ,percent); -#ifndef WITH_CLI_ONLY_YES - if(Closure->guiMode) - SetProgress(ec->wl->encPBar1, percent, 100); -#endif + GuiSetProgress(ec->wl->encPBar1, percent, 100); last_percent = percent; } @@ -308,10 +287,8 @@ static void expand_image(ecc_closure *ec) { unsigned char buf[2048]; int n; -#ifndef WITH_CLI_ONLY_YES if(Closure->stopActions) /* User hit the Stop button */ abort_encoding(ec, TRUE); -#endif CreateMissingSector(buf, lay->dataSectors+sectors, image->imageFP, FINGERPRINT_SECTOR, @@ -326,10 +303,7 @@ static void expand_image(ecc_closure *ec) PrintProgress(_("Preparing image (checksums taken from cache, adding space): %3d%%") ,percent); else PrintProgress(_("Preparing image (checksums, adding space): %3d%%"), percent); -#ifndef WITH_CLI_ONLY_YES - if(Closure->guiMode) - SetProgress(ec->wl->encPBar1, percent, 100); -#endif + GuiSetProgress(ec->wl->encPBar1, percent, 100); last_percent = percent; } @@ -339,11 +313,7 @@ static void expand_image(ecc_closure *ec) PrintProgress(_("Preparing image (checksums taken from cache, adding space): %3d%%"), 100); else PrintProgress(_("Preparing image (checksums, adding space): %3d%%"), 100); PrintProgress("\n"); - -#ifndef WITH_CLI_ONLY_YES - if(Closure->guiMode) - SetProgress(ec->wl->encPBar1, 100, 100); -#endif + GuiSetProgress(ec->wl->encPBar1, 100, 100); } /* @@ -495,13 +465,9 @@ static gint32 *enc_alpha_to; /*** Show the second progress bar */ -#ifndef WITH_CLI_ONLY_YES - if(Closure->guiMode) - { ShowWidget(ec->wl->encPBar2); - ShowWidget(ec->wl->encLabel2); - } -#endif - + GuiShowWidget(ec->wl->encPBar2); + GuiShowWidget(ec->wl->encLabel2); + /*** Adjust image bounds to include the CRC sectors */ image->sectorSize = lay->protectedSectors; @@ -607,10 +573,8 @@ static gint32 *enc_alpha_to; { int offset = 0; unsigned char *par_idx = ec->parity; -#ifndef WITH_CLI_ONLY_YES if(Closure->stopActions) /* User hit the Stop button */ abort_encoding(ec, TRUE); -#endif /* Read the next data sectors of this layer. */ @@ -996,14 +960,8 @@ static gint32 *enc_alpha_to; progress++; percent = (1000*progress)/max_percent; if(last_percent != percent) - { -#ifndef WITH_CLI_ONLY_YES - if(Closure->guiMode) - SetProgress(ec->wl->encPBar2, percent, 1000); - else -#endif - PrintProgress(_("Ecc generation: %3d.%1d%%"), percent/10, percent%10); - + { GuiSetProgress(ec->wl->encPBar2, percent, 1000); + PrintProgress(_("Ecc generation: %3d.%1d%%"), percent/10, percent%10); last_percent = percent; } } @@ -1060,9 +1018,7 @@ static gint32 *enc_alpha_to; void RS02Create(void) { Method *self = FindMethod("RS02"); -#ifndef WITH_CLI_ONLY_YES RS02Widgets *wl = (RS02Widgets*)self->widgetList; -#endif Image *image = NULL; RS02Layout *lay; ecc_closure *ec = g_malloc0(sizeof(ecc_closure)); @@ -1090,18 +1046,14 @@ void RS02Create(void) ec->image = image; ec->self = self; -#ifndef WITH_CLI_ONLY_YES ec->wl = wl; -#endif ec->eh = g_malloc0(sizeof(EccHeader)); ec->timer = g_timer_new(); -#ifndef WITH_CLI_ONLY_YES - if(Closure->guiMode) /* Preliminary fill text for the head line */ - SetLabelText(GTK_LABEL(wl->encHeadline), - _("Augmenting the image with error correction data.\n%s"), - _("- checking image -")); -#endif + /*** Preliminary fill text for the head line (in case of GUI) */ + GuiSetLabelText(wl->encHeadline, + _("Augmenting the image with error correction data.\n%s"), + _("- checking image -")); /*** If the image already contains error correction information, remove it. */ @@ -1113,17 +1065,15 @@ void RS02Create(void) /*** Announce what we are going to do */ -#ifndef WITH_CLI_ONLY_YES if(Closure->guiMode) /* Preliminary fill text for the head line */ { ec->msg = g_strdup_printf(_("Encoding with Method RS02: %" PRId64 " MiB data, %" PRId64 " MiB ecc (%d roots; %4.1f%% redundancy)."), lay->dataSectors/512, lay->eccSectors/512, lay->nroots, lay->redundancy); - SetLabelText(GTK_LABEL(wl->encHeadline), - _("Augmenting the image with error correction data.\n%s"), - ec->msg); + GuiSetLabelText(wl->encHeadline, + _("Augmenting the image with error correction data.\n%s"), + ec->msg); } else -#endif { ec->msg = g_strdup_printf(_("Augmenting image with Method RS02:\n %" PRId64 " MiB data, %" PRId64 " MiB ecc (%d roots; %4.1f%% redundancy)."), lay->dataSectors/512, lay->eccSectors/512, lay->nroots, lay->redundancy); @@ -1142,7 +1092,7 @@ void RS02Create(void) if(lay->redundancy < 20) { int answer; - answer = ModalWarningOrCLI(GTK_MESSAGE_WARNING, GTK_BUTTONS_OK_CANCEL, NULL, + answer = ModalWarning(GTK_MESSAGE_WARNING, GTK_BUTTONS_OK_CANCEL, NULL, "%s", _("Using redundancies below 20% may not give\n" "the expected data loss protection.\n")); @@ -1180,17 +1130,13 @@ void RS02Create(void) (lay->dataSectors + lay->eccSectors)/512, lay->dataSectors+lay->eccSectors); -#ifndef WITH_CLI_ONLY_YES - if(Closure->guiMode) - { SetProgress(wl->encPBar2, 100, 100); + GuiSetProgress(wl->encPBar2, 100, 100); - SetLabelText(GTK_LABEL(wl->encFootline), + GuiSetLabelText(wl->encFootline, _("Image has been augmented with error correction data.\n" "New image size is %" PRId64 " MiB (%" PRId64 " sectors).\n"), (lay->dataSectors + lay->eccSectors)/512, lay->dataSectors+lay->eccSectors); - } -#endif /*** Clean up */ diff --git a/src/rs02-fix.c b/src/rs02-fix.c index 4c335ed..4cb09ea 100644 --- a/src/rs02-fix.c +++ b/src/rs02-fix.c @@ -20,6 +20,8 @@ * along with dvdisaster. If not, see . */ +/*** src type: some GUI code ***/ + #include "dvdisaster.h" #include "rs02-includes.h" @@ -32,9 +34,7 @@ typedef struct { Image *image; EccHeader *eh; -#ifndef WITH_CLI_ONLY_YES RS02Widgets *wl; -#endif RS02Layout *lay; GaloisTables *gt; ReedSolomonTables *rt; @@ -49,16 +49,13 @@ static void fix_cleanup(gpointer data) UnregisterCleanup(); -#ifndef WITH_CLI_ONLY_YES - if(Closure->guiMode) - { if(fc->earlyTermination) - SwitchAndSetFootline(fc->wl->fixNotebook, 1, + if(fc->earlyTermination) + { GuiSwitchAndSetFootline(fc->wl->fixNotebook, 1, fc->wl->fixFootline, _("Aborted by unrecoverable error."), - Closure->redMarkup); - AllowActions(TRUE); + Closure->redMarkup); } -#endif + GuiAllowActions(TRUE); /** Clean up */ @@ -77,10 +74,7 @@ static void fix_cleanup(gpointer data) g_free(fc); -#ifndef WITH_CLI_ONLY_YES - if(Closure->guiMode) - g_thread_exit(0); -#endif + GuiExitWorkerThread(); } /* @@ -110,24 +104,14 @@ static void expand_image(fix_closure *fc, gint64 new_size) percent = (100*sectors) / new_sectors; if(last_percent != percent) - { -#ifndef WITH_CLI_ONLY_YES - if(Closure->guiMode) - ; - else -#endif - PrintProgress(_("Expanding image: %3d%%"), percent); + { if(!Closure->guiMode) + PrintProgress(_("Expanding image: %3d%%"), percent); last_percent = percent; } } -#ifndef WITH_CLI_ONLY_YES - if(Closure->guiMode) - ; - else -#endif - { - PrintProgress(_("Expanding image: %3d%%"), 100); + if(!Closure->guiMode) + { PrintProgress(_("Expanding image: %3d%%"), 100); PrintProgress("\n"); } @@ -140,11 +124,8 @@ static void expand_image(fix_closure *fc, gint64 new_size) ***/ void RS02Fix(Image *image) -{ -#ifndef WITH_CLI_ONLY_YES - Method *self = FindMethod("RS02"); +{ Method *self = FindMethod("RS02"); RS02Widgets *wl = (RS02Widgets*)self->widgetList; -#endif RS02Layout *lay; fix_closure *fc = g_malloc0(sizeof(fix_closure)); EccHeader *eh; @@ -183,20 +164,15 @@ void RS02Fix(Image *image) /*** Register the cleanup procedure for GUI mode */ fc->image = image; -#ifndef WITH_CLI_ONLY_YES fc->wl = wl; -#endif fc->earlyTermination = TRUE; RegisterCleanup(_("Repairing of image aborted"), fix_cleanup, fc); /*** Open the image file */ -#ifndef WITH_CLI_ONLY_YES - if(Closure->guiMode) - SetLabelText(GTK_LABEL(wl->fixHeadline), - _("Repairing the image.\n%s"), - _("Opening files...")); -#endif + GuiSetLabelText(wl->fixHeadline, + _("Repairing the image.\n%s"), + _("Opening files...")); eh = fc->eh = image->eccHeader; lay = fc->lay = RS02LayoutFromImage(image); @@ -219,19 +195,19 @@ void RS02Fix(Image *image) /*** Announce what we going to do */ -#ifndef WITH_CLI_ONLY_YES +#ifdef WITH_GUI_YES if(Closure->guiMode) { char *msg = g_strdup_printf(_("Image contains error correction data: Method RS02, %d roots, %4.1f%% redundancy."), eh->eccBytes, ((double)eh->eccBytes*100.0)/(double)eh->dataBytes); - SetLabelText(GTK_LABEL(wl->fixHeadline), - _("Repairing the image.\n%s"), msg); + GuiSetLabelText(wl->fixHeadline, + _("Repairing the image.\n%s"), msg); RS02SetFixMaxValues(wl, eh->dataBytes, eh->eccBytes, expected_sectors); g_free(msg); } #endif - + PrintLog(_("\nFix mode(%s): Repairable sectors will be fixed in the image.\n"), "RS02"); @@ -245,41 +221,37 @@ void RS02Fix(Image *image) "the error correction information.\n\n%s"); if(diff>0 && diff<=2) - { int answer; - answer = ModalWarningOrCLI(GTK_MESSAGE_QUESTION, GTK_BUTTONS_OK_CANCEL, NULL, + { int answer = ModalWarning(GTK_MESSAGE_QUESTION, GTK_BUTTONS_OK_CANCEL, NULL, _("Image file is %" PRId64 " sectors longer than expected.\n" "Assuming this is a TAO mode medium.\n" "%" PRId64 " sectors will be removed from the image end.\n"), diff, diff); if(!answer) - { -#ifndef WITH_CLI_ONLY_YES - SwitchAndSetFootline(fc->wl->fixNotebook, 1, - fc->wl->fixFootline, - _("Aborted by user request!"), - Closure->redMarkup); + { GuiSwitchAndSetFootline(fc->wl->fixNotebook, 1, + fc->wl->fixFootline, + _("Aborted by user request!"), + Closure->redMarkup); fc->earlyTermination = FALSE; /* suppress respective error message */ -#endif goto terminate; } if(!TruncateImage(image, (gint64)(2048*expected_sectors))) Stop(_("Could not truncate %s: %s\n"),Closure->imageName,strerror(errno)); } - -#ifndef WITH_CLI_ONLY_YES + +#ifdef WITH_GUI_YES if(diff>2 && Closure->guiMode) - { int answer = ModalDialog(GTK_MESSAGE_QUESTION, GTK_BUTTONS_OK_CANCEL, NULL, - trans, - diff, - _("Is it okay to remove the superfluous sectors?")); + { int answer = GuiModalDialog(GTK_MESSAGE_QUESTION, GTK_BUTTONS_OK_CANCEL, NULL, + trans, + diff, + _("Is it okay to remove the superfluous sectors?")); if(!answer) - { SwitchAndSetFootline(fc->wl->fixNotebook, 1, - fc->wl->fixFootline, - _("Aborted by user request!"), - Closure->redMarkup); + { GuiSwitchAndSetFootline(fc->wl->fixNotebook, 1, + fc->wl->fixFootline, + _("Aborted by user request!"), + Closure->redMarkup); fc->earlyTermination = FALSE; /* suppress respective error message */ goto terminate; } @@ -291,11 +263,7 @@ void RS02Fix(Image *image) } #endif -#ifndef WITH_CLI_ONLY_YES if(diff>2 && !Closure->guiMode) -#else - if(diff>2) -#endif { if(!Closure->truncate) Stop(trans, diff, @@ -364,17 +332,16 @@ void RS02Fix(Image *image) /* See if user hit the Stop button */ -#ifndef WITH_CLI_ONLY_YES if(Closure->stopActions) { if(Closure->stopActions == STOP_CURRENT_ACTION) /* suppress memleak warning when closing window */ - SwitchAndSetFootline(fc->wl->fixNotebook, 1, - fc->wl->fixFootline, - _("Aborted by user request!"), - Closure->redMarkup); + { GuiSwitchAndSetFootline(fc->wl->fixNotebook, 1, + fc->wl->fixFootline, + _("Aborted by user request!"), + Closure->redMarkup); + } fc->earlyTermination = FALSE; /* suppress respective error message */ goto terminate; } -#endif /* Make sure to wrap the block_idx[] ptr properly */ @@ -492,10 +459,7 @@ void RS02Fix(Image *image) /* Trivially reject uncorrectable ecc block */ if(erasure_count>lay->nroots) /* uncorrectable */ - { -#ifndef WITH_CLI_ONLY_YES - if(!Closure->guiMode) -#endif + { if(!Closure->guiMode) { PrintCLI(_("* Ecc block %" PRId64 ": %3d unrepairable sectors: "), s, erasure_count); for(i=0; isectorsPerLayer; if(last_percent != percent) - { -#ifndef WITH_CLI_ONLY_YES - if(Closure->guiMode) - { + { if(Closure->guiMode) + { +#ifdef WITH_GUI_YES RS02AddFixValues(wl, percent, local_plot_max); local_plot_max = 0; //if(last_corrected != corrected || last_uncorrected != uncorrected) RS02UpdateFixResults(wl, corrected, uncorrected); - } - else #endif - PrintProgress(_("Ecc progress: %3d.%1d%%"),percent/10,percent%10); + } + else PrintProgress(_("Ecc progress: %3d.%1d%%"),percent/10,percent%10); last_percent = percent; } @@ -852,13 +814,10 @@ skip: corrected, data_corr, ecc_corr); if(uncorrected > 0) { PrintLog(_("Unrepaired sectors: %" PRId64 "\n"), uncorrected); -#ifndef WITH_CLI_ONLY_YES - if(Closure->guiMode) - SwitchAndSetFootline(wl->fixNotebook, 1, wl->fixFootline, - _("Image sectors could not be fully restored " - "(%" PRId64 " repaired; %" PRId64 " unrepaired)"), - corrected, Closure->redMarkup, uncorrected); -#endif + GuiSwitchAndSetFootline(wl->fixNotebook, 1, wl->fixFootline, + _("Image sectors could not be fully restored " + "(%" PRId64 " repaired; %" PRId64 " unrepaired)"), + corrected, Closure->redMarkup, uncorrected); } else { if(!corrected) @@ -874,12 +833,11 @@ skip: PrintLog(_("Erasure counts per ecc block: avg = %.1f; worst = %d.\n"), (double)damaged_sectors/(double)damaged_eccsecs,worst_ecc); -#ifndef WITH_CLI_ONLY_YES if(Closure->guiMode && t) - SwitchAndSetFootline(wl->fixNotebook, 1, wl->fixFootline, - "%s %s", _("Repair results:"), t); -#endif - + { GuiSwitchAndSetFootline(wl->fixNotebook, 1, wl->fixFootline, + "%s %s", _("Repair results:"), t); + } + Verbose("\nSummary of processed sectors:\n"); Verbose("%" PRId64 " damaged sectors\n", damaged_sectors); Verbose("%" PRId64 " CRC errors\n", crc_errors); diff --git a/src/rs02-includes.h b/src/rs02-includes.h index f6d9ef8..2ff519b 100644 --- a/src/rs02-includes.h +++ b/src/rs02-includes.h @@ -23,7 +23,6 @@ #ifndef RS02INCLUDES_H #define RS02INCLUDES_H -#ifndef WITH_CLI_ONLY_YES /* Data structs from rs02-window.c */ typedef struct @@ -103,7 +102,6 @@ typedef struct int dataBytes; int percent, lastPercent; } RS02Widgets; -#endif /* * local working closure for internal checksums @@ -122,7 +120,6 @@ typedef struct * These are exported via the Method struct */ -#ifndef WITH_CLI_ONLY_YES void CreateRS02EncWindow(Method*, GtkWidget*); void CreateRS02FixWindow(Method*, GtkWidget*); void CreateRS02PrefsPage(Method*, GtkWidget*); @@ -133,7 +130,6 @@ void ReadRS02Preferences(Method*); void ResetRS02VerifyWindow(Method*); void CreateRS02VerifyWindow(Method*, GtkWidget*); -#endif /* * These are exported (resp. only used) in ecc-rs02.c and rs02*.c @@ -188,13 +184,11 @@ void RS02Fix(Image*); int RS02Recognize(Image*); -#ifndef WITH_CLI_ONLY_YES /* rs02-window.c */ void RS02AddFixValues(RS02Widgets*, int, int); void RS02SetFixMaxValues(RS02Widgets*, int, int, gint64); void RS02UpdateFixResults(RS02Widgets*, gint64, gint64); -#endif /* rs02-verify.c */ diff --git a/src/rs02-recognize.c b/src/rs02-recognize.c index 981a74f..222f02b 100644 --- a/src/rs02-recognize.c +++ b/src/rs02-recognize.c @@ -20,6 +20,8 @@ * along with dvdisaster. If not, see . */ +/*** src type: some GUI code ***/ + #include "dvdisaster.h" #include "rs02-includes.h" @@ -29,18 +31,16 @@ *** Recognize RS02 error correction data in the image ***/ -#ifndef WITH_CLI_ONLY_YES - /* * Dialog components for disabling RS02 search */ - +#ifdef WITH_GUI_YES static void no_rs02_cb(GtkWidget *widget, gpointer data) { int state = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget)); Closure->examineRS02 = !state; - UpdatePrefsExhaustiveSearch(); + GuiUpdatePrefsExhaustiveSearch(); } static void insert_buttons(GtkDialog *dialog) @@ -61,7 +61,7 @@ static void insert_buttons(GtkDialog *dialog) gtk_widget_show(align); gtk_widget_show(check); } -#endif +#endif /* WITH_GUI_YES */ /* * See whether a given header is valid for RS02 @@ -171,6 +171,7 @@ int RS02Recognize(Image *image) int read_count = 0; int answered_continue = FALSE; gint64 max_sectors = 0; + switch(image->type) { case IMAGE_FILE: Verbose("RS02Recognize: file %s\n", image->file->path); @@ -272,10 +273,8 @@ int RS02Recognize(Image *image) while(pos > 0) { int result; -#ifndef WITH_CLI_ONLY_YES if(Closure->stopActions) goto bail_out; -#endif if(GetBit(try_next_header, pos)) { Verbose("Sector %" PRId64 " cached; skipping\n", pos); @@ -299,18 +298,16 @@ int RS02Recognize(Image *image) read_count++; if(!answered_continue && read_count > 5) { -#ifndef WITH_CLI_ONLY_YES - if(Closure->guiMode) - { int answer = ModalDialog(GTK_MESSAGE_QUESTION, GTK_BUTTONS_NONE, insert_buttons, - _("Faster medium initialization\n\n" - "Searching this medium for error correction data may take a long time.\n" - "Press \"Skip RS02 test\" if you are certain that this medium was\n" - "not augmented with RS02 error correction data.")); + if(Closure->guiMode) + { int answer = GuiModalDialog(GTK_MESSAGE_QUESTION, GTK_BUTTONS_NONE, insert_buttons, + _("Faster medium initialization\n\n" + "Searching this medium for error correction data may take a long time.\n" + "Press \"Skip RS02 test\" if you are certain that this medium was\n" + "not augmented with RS02 error correction data.")); if(answer) goto bail_out; answered_continue = TRUE; } -#endif } goto check_next_header; case TRY_NEXT_MODULO: diff --git a/src/rs02-verify.c b/src/rs02-verify.c index af7d01a..ac0d677 100644 --- a/src/rs02-verify.c +++ b/src/rs02-verify.c @@ -20,44 +20,46 @@ * along with dvdisaster. If not, see . */ +/*** src type: some GUI code ***/ + #include "dvdisaster.h" #include "rs02-includes.h" +#ifdef WITH_GUI_YES + /*** *** Reset the verify output window ***/ -#ifndef WITH_CLI_ONLY_YES - void ResetRS02VerifyWindow(Method *self) { RS02Widgets *wl = (RS02Widgets*)self->widgetList; - SetLabelText(GTK_LABEL(wl->cmpImageSectors), ""); - SetLabelText(GTK_LABEL(wl->cmpImageMd5Sum), ""); - SetLabelText(GTK_LABEL(wl->cmpEccHeaders), ""); - SetLabelText(GTK_LABEL(wl->cmpDataSection), ""); - SetLabelText(GTK_LABEL(wl->cmpCrcSection), ""); - SetLabelText(GTK_LABEL(wl->cmpEccSection), ""); - SetLabelText(GTK_LABEL(wl->cmpImageResult), ""); + GuiSetLabelText(wl->cmpImageSectors, ""); + GuiSetLabelText(wl->cmpImageMd5Sum, ""); + GuiSetLabelText(wl->cmpEccHeaders, ""); + GuiSetLabelText(wl->cmpDataSection, ""); + GuiSetLabelText(wl->cmpCrcSection, ""); + GuiSetLabelText(wl->cmpEccSection, ""); + GuiSetLabelText(wl->cmpImageResult, ""); - SetLabelText(GTK_LABEL(wl->cmpEccCreatedBy), "dvdisaster"); - SetLabelText(GTK_LABEL(wl->cmpEccMethod), ""); - SetLabelText(GTK_LABEL(wl->cmpEccRequires), ""); - SetLabelText(GTK_LABEL(wl->cmpEccMediumSectors), ""); - SetLabelText(GTK_LABEL(wl->cmpEcc1Name), _("Data checksum:")); - SetLabelText(GTK_LABEL(wl->cmpEcc2Name), _("CRC checksum:")); - SetLabelText(GTK_LABEL(wl->cmpEcc3Name), _("Ecc checksum:")); - SetLabelText(GTK_LABEL(wl->cmpEcc1Msg), ""); - SetLabelText(GTK_LABEL(wl->cmpEcc2Msg), ""); - SetLabelText(GTK_LABEL(wl->cmpEcc3Msg), ""); + GuiSetLabelText(wl->cmpEccCreatedBy, "dvdisaster"); + GuiSetLabelText(wl->cmpEccMethod, ""); + GuiSetLabelText(wl->cmpEccRequires, ""); + GuiSetLabelText(wl->cmpEccMediumSectors, ""); + GuiSetLabelText(wl->cmpEcc1Name, _("Data checksum:")); + GuiSetLabelText(wl->cmpEcc2Name, _("CRC checksum:")); + GuiSetLabelText(wl->cmpEcc3Name, _("Ecc checksum:")); + GuiSetLabelText(wl->cmpEcc1Msg, ""); + GuiSetLabelText(wl->cmpEcc2Msg, ""); + GuiSetLabelText(wl->cmpEcc3Msg, ""); - SwitchAndSetFootline(wl->cmpEccNotebook, 0, NULL, NULL); + GuiSwitchAndSetFootline(wl->cmpEccNotebook, 0, NULL, NULL); wl->lastPercent = 0; - FillSpiral(wl->cmpSpiral, Closure->background); - DrawSpiral(wl->cmpSpiral); + GuiFillSpiral(wl->cmpSpiral, Closure->background); + GuiDrawSpiral(wl->cmpSpiral); } /*** @@ -79,7 +81,7 @@ static gboolean spiral_idle_func(gpointer data) int i; for(i=sii->from; i<=sii->to; i++) - DrawSpiralSegment(sii->cmpSpiral, sii->segColor, i-1); + GuiDrawSpiralSegment(sii->cmpSpiral, sii->segColor, i-1); g_free(sii); return FALSE; @@ -114,16 +116,16 @@ static void add_verify_values(Method *method, int percent, static void redraw_spiral(RS02Widgets *wl) { int x = wl->cmpSpiral->mx - wl->cmpSpiral->diameter/2 + 10; - DrawSpiralLabel(wl->cmpSpiral, wl->cmpLayout, - _("Good sectors"), Closure->greenSector, x, 1); + GuiDrawSpiralLabel(wl->cmpSpiral, wl->cmpLayout, + _("Good sectors"), Closure->greenSector, x, 1); - DrawSpiralLabel(wl->cmpSpiral, wl->cmpLayout, - _("Sectors with CRC errors"), Closure->yellowSector, x, 2); + GuiDrawSpiralLabel(wl->cmpSpiral, wl->cmpLayout, + _("Sectors with CRC errors"), Closure->yellowSector, x, 2); - DrawSpiralLabel(wl->cmpSpiral, wl->cmpLayout, - _("Missing sectors"), Closure->redSector, x, 3); + GuiDrawSpiralLabel(wl->cmpSpiral, wl->cmpLayout, + _("Missing sectors"), Closure->redSector, x, 3); - DrawSpiral(wl->cmpSpiral); + GuiDrawSpiral(wl->cmpSpiral); } /* @@ -138,11 +140,11 @@ static gboolean expose_cb(GtkWidget *widget, GdkEventExpose *event, gpointer dat /* Finish spiral initialization */ if(!wl->cmpLayout) - { SetSpiralWidget(wl->cmpSpiral, widget); + { GuiSetSpiralWidget(wl->cmpSpiral, widget); wl->cmpLayout = gtk_widget_create_pango_layout(widget, NULL); } - SetText(wl->cmpLayout, _("Missing sectors"), &w, &h); + GuiSetText(wl->cmpLayout, _("Missing sectors"), &w, &h); size = wl->cmpSpiral->diameter + 20 + 3*(10+h); /* approx. size of spiral + labels */ wl->cmpSpiral->mx = a->width / 2; @@ -189,7 +191,7 @@ void CreateRS02VerifyWindow(Method *self, GtkWidget *parent) lab = gtk_label_new(NULL); gtk_misc_set_alignment(GTK_MISC(lab), 0.0, 0.0); - SetLabelText(GTK_LABEL(lab), _("Medium sectors:")); + GuiSetLabelText(lab, _("Medium sectors:")); gtk_table_attach(GTK_TABLE(table2), lab, 0, 1, 0, 1, GTK_SHRINK | GTK_FILL, GTK_SHRINK, 5, 2 ); lab = wl->cmpImageSectors = gtk_label_new("0"); gtk_misc_set_alignment(GTK_MISC(lab), 0.0, 0.0); @@ -197,7 +199,7 @@ void CreateRS02VerifyWindow(Method *self, GtkWidget *parent) lab = gtk_label_new(NULL); gtk_misc_set_alignment(GTK_MISC(lab), 0.0, 0.0); - SetLabelText(GTK_LABEL(lab), _("Data checksum:")); + GuiSetLabelText(lab, _("Data checksum:")); gtk_table_attach(GTK_TABLE(table2), lab, 0, 1, 1, 2, GTK_SHRINK | GTK_FILL, GTK_SHRINK, 5, 2 ); lab = wl->cmpImageMd5Sum = gtk_label_new("0"); gtk_misc_set_alignment(GTK_MISC(lab), 0.0, 0.0); @@ -205,7 +207,7 @@ void CreateRS02VerifyWindow(Method *self, GtkWidget *parent) lab = gtk_label_new(NULL); gtk_misc_set_alignment(GTK_MISC(lab), 0.0, 0.0); - SetLabelText(GTK_LABEL(lab), _("Ecc headers:")); + GuiSetLabelText(lab, _("Ecc headers:")); gtk_table_attach(GTK_TABLE(table2), lab, 0, 1, 2, 3, GTK_SHRINK | GTK_FILL, GTK_SHRINK, 5, 2 ); lab = wl->cmpEccHeaders = gtk_label_new("."); gtk_misc_set_alignment(GTK_MISC(lab), 0.0, 0.0); @@ -213,7 +215,7 @@ void CreateRS02VerifyWindow(Method *self, GtkWidget *parent) lab = gtk_label_new(NULL); gtk_misc_set_alignment(GTK_MISC(lab), 0.0, 0.0); - SetLabelText(GTK_LABEL(lab), _("Data section:")); + GuiSetLabelText(lab, _("Data section:")); gtk_table_attach(GTK_TABLE(table2), lab, 0, 1, 3, 4, GTK_SHRINK | GTK_FILL, GTK_SHRINK, 5, 2 ); lab = wl->cmpDataSection = gtk_label_new("."); gtk_misc_set_alignment(GTK_MISC(lab), 0.0, 0.0); @@ -221,7 +223,7 @@ void CreateRS02VerifyWindow(Method *self, GtkWidget *parent) lab = gtk_label_new(NULL); gtk_misc_set_alignment(GTK_MISC(lab), 0.0, 0.0); - SetLabelText(GTK_LABEL(lab), _("Crc section:")); + GuiSetLabelText(lab, _("Crc section:")); gtk_table_attach(GTK_TABLE(table2), lab, 0, 1, 4, 5, GTK_SHRINK | GTK_FILL, GTK_SHRINK, 5, 2 ); lab = wl->cmpCrcSection = gtk_label_new("."); gtk_misc_set_alignment(GTK_MISC(lab), 0.0, 0.0); @@ -229,7 +231,7 @@ void CreateRS02VerifyWindow(Method *self, GtkWidget *parent) lab = gtk_label_new(NULL); gtk_misc_set_alignment(GTK_MISC(lab), 0.0, 0.0); - SetLabelText(GTK_LABEL(lab), _("Ecc section:")); + GuiSetLabelText(lab, _("Ecc section:")); gtk_table_attach(GTK_TABLE(table2), lab, 0, 1, 5, 6, GTK_SHRINK | GTK_FILL, GTK_SHRINK, 5, 2 ); lab = wl->cmpEccSection= gtk_label_new("."); gtk_misc_set_alignment(GTK_MISC(lab), 0.0, 0.0); @@ -244,7 +246,7 @@ void CreateRS02VerifyWindow(Method *self, GtkWidget *parent) frame = gtk_frame_new(_utf("Image state")); gtk_table_attach(GTK_TABLE(table), frame, 1, 2, 0, 2, GTK_SHRINK | GTK_FILL, GTK_EXPAND | GTK_FILL, 5, 5); - wl->cmpSpiral = CreateSpiral(Closure->grid, Closure->background, 10, 5, VERIFY_IMAGE_SEGMENTS); + wl->cmpSpiral = GuiCreateSpiral(Closure->grid, Closure->background, 10, 5, VERIFY_IMAGE_SEGMENTS); d_area = wl->cmpDrawingArea = gtk_drawing_area_new(); gtk_widget_set_size_request(d_area, wl->cmpSpiral->diameter+20, -1); gtk_container_add(GTK_CONTAINER(frame), d_area); @@ -271,7 +273,7 @@ void CreateRS02VerifyWindow(Method *self, GtkWidget *parent) lab = gtk_label_new(NULL); gtk_misc_set_alignment(GTK_MISC(lab), 0.0, 0.0); - SetLabelText(GTK_LABEL(lab), _("Created by:")); + GuiSetLabelText(lab, _("Created by:")); gtk_table_attach(GTK_TABLE(table2), lab, 0, 1, 0, 1, GTK_SHRINK | GTK_FILL, GTK_SHRINK, 5, 2 ); lab = wl->cmpEccCreatedBy = gtk_label_new(NULL); gtk_misc_set_alignment(GTK_MISC(lab), 0.0, 0.0); @@ -279,7 +281,7 @@ void CreateRS02VerifyWindow(Method *self, GtkWidget *parent) lab = gtk_label_new(NULL); gtk_misc_set_alignment(GTK_MISC(lab), 0.0, 0.0); - SetLabelText(GTK_LABEL(lab), _("Method:")); + GuiSetLabelText(lab, _("Method:")); gtk_table_attach(GTK_TABLE(table2), lab, 0, 1, 1, 2, GTK_SHRINK | GTK_FILL, GTK_SHRINK, 5, 2 ); lab = wl->cmpEccMethod = gtk_label_new(NULL); gtk_misc_set_alignment(GTK_MISC(lab), 0.0, 0.0); @@ -287,7 +289,7 @@ void CreateRS02VerifyWindow(Method *self, GtkWidget *parent) lab = gtk_label_new(NULL); gtk_misc_set_alignment(GTK_MISC(lab), 0.0, 0.0); - SetLabelText(GTK_LABEL(lab), _("Requires:")); + GuiSetLabelText(lab, _("Requires:")); gtk_table_attach(GTK_TABLE(table2), lab, 0, 1, 2, 3, GTK_SHRINK | GTK_FILL, GTK_SHRINK, 5, 2 ); lab = wl->cmpEccRequires = gtk_label_new(NULL); gtk_misc_set_alignment(GTK_MISC(lab), 0.0, 0.0); @@ -295,7 +297,7 @@ void CreateRS02VerifyWindow(Method *self, GtkWidget *parent) lab = gtk_label_new(NULL); gtk_misc_set_alignment(GTK_MISC(lab), 0.0, 0.0); - SetLabelText(GTK_LABEL(lab), _("Medium sectors:")); + GuiSetLabelText(lab, _("Medium sectors:")); gtk_table_attach(GTK_TABLE(table2), lab, 0, 1, 3, 4, GTK_SHRINK | GTK_FILL, GTK_SHRINK, 5, 2 ); lab = wl->cmpEccMediumSectors = gtk_label_new(NULL); gtk_misc_set_alignment(GTK_MISC(lab), 0.0, 0.0); @@ -303,7 +305,7 @@ void CreateRS02VerifyWindow(Method *self, GtkWidget *parent) lab = wl->cmpEcc1Name = gtk_label_new(NULL); gtk_misc_set_alignment(GTK_MISC(lab), 0.0, 0.0); - SetLabelText(GTK_LABEL(lab), _("Data checksum:")); + GuiSetLabelText(lab, _("Data checksum:")); gtk_table_attach(GTK_TABLE(table2), lab, 0, 1, 4, 5, GTK_SHRINK | GTK_FILL, GTK_SHRINK, 5, 2 ); lab = wl->cmpEcc1Msg = gtk_label_new(NULL); gtk_misc_set_alignment(GTK_MISC(lab), 0.0, 0.0); @@ -311,7 +313,7 @@ void CreateRS02VerifyWindow(Method *self, GtkWidget *parent) lab = wl->cmpEcc2Name = gtk_label_new(NULL); gtk_misc_set_alignment(GTK_MISC(lab), 0.0, 0.0); - SetLabelText(GTK_LABEL(lab), _("CRC checksum:")); + GuiSetLabelText(lab, _("CRC checksum:")); gtk_table_attach(GTK_TABLE(table2), lab, 0, 1, 5, 6, GTK_SHRINK | GTK_FILL, GTK_SHRINK, 5, 2 ); lab = wl->cmpEcc2Msg = gtk_label_new(NULL); gtk_misc_set_alignment(GTK_MISC(lab), 0.0, 0.0); @@ -319,7 +321,7 @@ void CreateRS02VerifyWindow(Method *self, GtkWidget *parent) lab = wl->cmpEcc3Name = gtk_label_new(NULL); gtk_misc_set_alignment(GTK_MISC(lab), 0.0, 0.0); - SetLabelText(GTK_LABEL(lab), _("Ecc checksum:")); + GuiSetLabelText(lab, _("Ecc checksum:")); gtk_table_attach(GTK_TABLE(table2), lab, 0, 1, 6, 7, GTK_SHRINK | GTK_FILL, GTK_SHRINK, 5, 2 ); lab = wl->cmpEcc3Msg = gtk_label_new(NULL); gtk_misc_set_alignment(GTK_MISC(lab), 0.0, 0.0); @@ -330,7 +332,7 @@ void CreateRS02VerifyWindow(Method *self, GtkWidget *parent) gtk_table_attach(GTK_TABLE(table2), lab, 0, 2, 7, 8, GTK_SHRINK | GTK_FILL, GTK_SHRINK, 5, 4); } -#endif +#endif /* WITH_GUI_YES */ /*** *** Check the consistency of the augmented image @@ -344,9 +346,7 @@ typedef struct { Image *image; EccHeader *eh; RS02Layout *lay; -#ifndef WITH_CLI_ONLY_YES RS02Widgets *wl; -#endif Bitmap *map; guint32 *crcBuf; gint8 *crcValid; @@ -358,10 +358,7 @@ static void cleanup(gpointer data) UnregisterCleanup(); -#ifndef WITH_CLI_ONLY_YES - if(Closure->guiMode) - AllowActions(TRUE); -#endif + GuiAllowActions(TRUE); if(cc->image) CloseImage(cc->image); if(cc->lay) g_free(cc->lay); @@ -371,10 +368,7 @@ static void cleanup(gpointer data) g_free(cc); -#ifndef WITH_CLI_ONLY_YES - if(Closure->guiMode) - g_thread_exit(0); -#endif + GuiExitWorkerThread(); } /*** @@ -515,24 +509,22 @@ static int prognosis(verify_closure *vc, gint64 missing, gint64 expected) PrintLog(_("- prognosis : %" PRId64 " of %" PRId64 " sectors recoverable (%d.%d%%)\n"), recoverable, expected, percentage/10, percentage%10); -#ifndef WITH_CLI_ONLY_YES if(Closure->guiMode) - { SetLabelText(GTK_LABEL(vc->wl->cmpEcc1Name), ""); - SetLabelText(GTK_LABEL(vc->wl->cmpEcc1Msg), ""); - SetLabelText(GTK_LABEL(vc->wl->cmpEcc2Name), _("Erasure counts:")); - SetLabelText(GTK_LABEL(vc->wl->cmpEcc3Name), _("Prognosis:")); + { GuiSetLabelText(vc->wl->cmpEcc1Name, ""); + GuiSetLabelText(vc->wl->cmpEcc1Msg, ""); + GuiSetLabelText(vc->wl->cmpEcc2Name, _("Erasure counts:")); + GuiSetLabelText(vc->wl->cmpEcc3Name, _("Prognosis:")); - SetLabelText(GTK_LABEL(vc->wl->cmpEcc2Msg), - _("avg = %.1f; worst = %d per ecc block."), - worst_ecc <= vc->lay->nroots ? Closure->greenMarkup : Closure->redMarkup, - (double)damaged_sectors/(double)damaged_eccsecs,worst_ecc); + GuiSetLabelText(vc->wl->cmpEcc2Msg, + _("avg = %.1f; worst = %d per ecc block."), + worst_ecc <= vc->lay->nroots ? Closure->greenMarkup : Closure->redMarkup, + (double)damaged_sectors/(double)damaged_eccsecs,worst_ecc); - SetLabelText(GTK_LABEL(vc->wl->cmpEcc3Msg), - _("%" PRId64 " of %" PRId64 " sectors recoverable (%d.%d%%)"), - recoverable < expected ? Closure->redMarkup : Closure->greenMarkup, - recoverable, expected, percentage/10, percentage%10); + GuiSetLabelText(vc->wl->cmpEcc3Msg, + _("%" PRId64 " of %" PRId64 " sectors recoverable (%d.%d%%)"), + recoverable < expected ? Closure->redMarkup : Closure->greenMarkup, + recoverable, expected, percentage/10, percentage%10); } -#endif } /* Why the first test? @@ -548,10 +540,8 @@ static int prognosis(verify_closure *vc, gint64 missing, gint64 expected) void RS02Verify(Image *image) { verify_closure *cc = g_malloc0(sizeof(verify_closure)); -#ifndef WITH_CLI_ONLY_YES Method *self = FindMethod("RS02"); RS02Widgets *wl = self->widgetList; -#endif EccHeader *eh; RS02Layout *lay; struct MD5Context image_md5; @@ -574,26 +564,20 @@ void RS02Verify(Image *image) gint64 hdr_missing, hdr_crc_errors; gint64 hdr_ok,hdr_pos,hdr_correctable; gint64 ecc_sector,expected_sectors; -#ifndef WITH_CLI_ONLY_YES int ecc_md5_failure = FALSE; -#endif int ecc_slice; int major,minor,micro; char *unstable=""; char method[5]; char *img_advice = NULL; char *ecc_advice = NULL; -#ifndef WITH_CLI_ONLY_YES int try_it; -#endif int unrecoverable_sectors = 0; /*** Prepare for early termination */ RegisterCleanup(_("Check aborted"), cleanup, cc); -#ifndef WITH_CLI_ONLY_YES cc->wl = wl; -#endif /* extract some important information */ @@ -609,30 +593,25 @@ void RS02Verify(Image *image) /*** Print information on image size */ -#ifndef WITH_CLI_ONLY_YES - if(Closure->guiMode) - SetLabelText(GTK_LABEL(wl->cmpHeadline), "%s\n%s", - _("Checking the image file."), - _("Image contains error correction data.")); -#endif + GuiSetLabelText(wl->cmpHeadline, "%s\n%s", + _("Checking the image file."), + _("Image contains error correction data.")); PrintLog("\n%s: ",Closure->imageName); PrintLog(_("present, contains %" PRId64 " medium sectors.\n"),image->sectorSize); -#ifndef WITH_CLI_ONLY_YES if(Closure->guiMode) { if(expected_sectors == image->sectorSize) - { SetLabelText(GTK_LABEL(wl->cmpImageSectors), "%" PRId64 "", image->sectorSize); + { GuiSetLabelText(wl->cmpImageSectors, "%" PRId64, image->sectorSize); } else - { SetLabelText(GTK_LABEL(wl->cmpImageSectors), "%" PRId64 "", - Closure->redMarkup, image->sectorSize); + { GuiSetLabelText(wl->cmpImageSectors, "%" PRId64 "", + Closure->redMarkup, image->sectorSize); if(expected_sectors > image->sectorSize) img_advice = g_strdup_printf(_("Image file is %" PRId64 " sectors shorter than expected."), Closure->redMarkup, expected_sectors - image->sectorSize); else img_advice = g_strdup_printf(_("Image file is %" PRId64 " sectors longer than expected."), Closure->redMarkup, image->sectorSize - expected_sectors); } } -#endif /*** Check integrity of the ecc headers */ @@ -689,16 +668,16 @@ void RS02Verify(Image *image) hdr_pos = (lay->protectedSectors + lay->headerModulo - 1) & ~(lay->headerModulo-1); else hdr_pos += lay->headerModulo; -#ifndef WITH_CLI_ONLY_YES if(Closure->guiMode) { if(!hdr_crc_errors && !hdr_missing) - SetLabelText(GTK_LABEL(wl->cmpEccHeaders), _("complete")); + { GuiSetLabelText(wl->cmpEccHeaders, _("complete")); + } else - { SetLabelText(GTK_LABEL(wl->cmpEccHeaders), _("%" PRId64 " ok, %" PRId64 " CRC errors, %" PRId64 " missing"), - Closure->redMarkup, hdr_ok, hdr_crc_errors, hdr_missing); + { GuiSetLabelText(wl->cmpEccHeaders, + _("%" PRId64 " ok, %" PRId64 " CRC errors, %" PRId64 " missing"), + Closure->redMarkup, hdr_ok, hdr_crc_errors, hdr_missing); } } -#endif } /* take shortcut in quick mode */ @@ -734,15 +713,14 @@ void RS02Verify(Image *image) /* Check for user interruption */ -#ifndef WITH_CLI_ONLY_YES if(Closure->stopActions) { if(Closure->stopActions == STOP_CURRENT_ACTION) /* suppress memleak warning when closing window */ - SetLabelText(GTK_LABEL(wl->cmpImageResult), - _("Aborted by user request!"), - Closure->redMarkup); + { GuiSetLabelText(wl->cmpImageResult, + _("Aborted by user request!"), + Closure->redMarkup); + } goto terminate; } -#endif /* Read the next sector */ @@ -820,32 +798,32 @@ void RS02Verify(Image *image) } } -#ifndef WITH_CLI_ONLY_YES if(Closure->guiMode) percent = (VERIFY_IMAGE_SEGMENTS*(s+1))/expected_sectors; - else -#endif - percent = (100*(s+1))/expected_sectors; + else percent = (100*(s+1))/expected_sectors; if(last_percent != percent) { PrintProgress(_("- testing sectors : %3d%%") ,percent); -#ifndef WITH_CLI_ONLY_YES +#ifdef WITH_GUI_YES if(Closure->guiMode) { add_verify_values(self, percent, new_missing, new_crc_errors); if(data_missing || data_crc_errors) - SetLabelText(GTK_LABEL(wl->cmpDataSection), - _("%" PRId64 " sectors missing; %" PRId64 " CRC errors"), - Closure->redMarkup, data_missing, data_crc_errors); + { GuiSetLabelText(wl->cmpDataSection, + _("%" PRId64 " sectors missing; %" PRId64 " CRC errors"), + Closure->redMarkup, data_missing, data_crc_errors); + } if(crc_missing) - SetLabelText(GTK_LABEL(wl->cmpCrcSection), - _("%" PRId64 " sectors missing"), - Closure->redMarkup, crc_missing); + { GuiSetLabelText(wl->cmpCrcSection, + _("%" PRId64 " sectors missing"), + Closure->redMarkup, crc_missing); + } if(ecc_missing) - SetLabelText(GTK_LABEL(wl->cmpEccSection), - _("%" PRId64 " sectors missing"), - Closure->redMarkup, ecc_missing); + { GuiSetLabelText(wl->cmpEccSection, + _("%" PRId64 " sectors missing"), + Closure->redMarkup, ecc_missing); + } } -#endif +#endif /* WITH_GUI_YES */ last_percent = percent; new_missing = new_crc_errors = 0; } @@ -853,22 +831,23 @@ void RS02Verify(Image *image) /* Complete damage summary */ -#ifndef WITH_CLI_ONLY_YES if(Closure->guiMode) { if(data_missing || data_crc_errors) - SetLabelText(GTK_LABEL(wl->cmpDataSection), - _("%" PRId64 " sectors missing; %" PRId64 " CRC errors"), - Closure->redMarkup, data_missing, data_crc_errors); + { GuiSetLabelText(wl->cmpDataSection, + _("%" PRId64 " sectors missing; %" PRId64 " CRC errors"), + Closure->redMarkup, data_missing, data_crc_errors); + } if(crc_missing) - SetLabelText(GTK_LABEL(wl->cmpCrcSection), - _("%" PRId64 " sectors missing"), - Closure->redMarkup, crc_missing); + { GuiSetLabelText(wl->cmpCrcSection, + _("%" PRId64 " sectors missing"), + Closure->redMarkup, crc_missing); + } if(ecc_missing) - SetLabelText(GTK_LABEL(wl->cmpEccSection), - _("%" PRId64 " sectors missing"), - Closure->redMarkup, ecc_missing); + { GuiSetLabelText(wl->cmpEccSection, + _("%" PRId64 " sectors missing"), + Closure->redMarkup, ecc_missing); + } } -#endif /* The image md5sum is only useful if all blocks have been successfully read. */ @@ -907,35 +886,29 @@ void RS02Verify(Image *image) PrintLog(_(" ... ecc section : %" PRId64 " sectors missing\n"), ecc_missing); } -#ifndef WITH_CLI_ONLY_YES if(Closure->guiMode) { if(!data_missing && !data_crc_errors) - SetLabelText(GTK_LABEL(wl->cmpDataSection), _("complete")); - if(!crc_missing) SetLabelText(GTK_LABEL(wl->cmpCrcSection), _("complete")); - if(!ecc_missing) SetLabelText(GTK_LABEL(wl->cmpEccSection), _("complete")); + { GuiSetLabelText(wl->cmpDataSection, _("complete")); } + if(!crc_missing) { GuiSetLabelText(wl->cmpCrcSection, _("complete")); } + if(!ecc_missing) { GuiSetLabelText(wl->cmpEccSection, _("complete")); } - SetLabelText(GTK_LABEL(wl->cmpImageMd5Sum), "%s", data_missing ? "-" : data_digest); + GuiSetLabelText(wl->cmpImageMd5Sum, "%s", data_missing ? "-" : data_digest); if(img_advice) - { SetLabelText(GTK_LABEL(wl->cmpImageResult), "%s", img_advice); + { GuiSetLabelText(wl->cmpImageResult, "%s", img_advice); g_free(img_advice); } else { if(!total_missing && !hdr_missing && !hdr_crc_errors && !data_crc_errors) - SetLabelText(GTK_LABEL(wl->cmpImageResult), - _("Good image."), - Closure->greenMarkup); + { GuiSetLabelText(wl->cmpImageResult, + _("Good image."), + Closure->greenMarkup); + } else - SetLabelText(GTK_LABEL(wl->cmpImageResult), - _("Damaged image."), - Closure->redMarkup); - } - } - else -#endif - { - if(img_advice) - { PrintLog("%s", img_advice); + { GuiSetLabelText(wl->cmpImageResult, + _("Damaged image."), + Closure->redMarkup); + } } } @@ -957,14 +930,10 @@ continue_with_ecc: PrintLog(format, _("created by dvdisaster"), major, minor, micro, unstable); PrintLog("\n"); -#ifndef WITH_CLI_ONLY_YES - if(Closure->guiMode) - { SwitchAndSetFootline(wl->cmpEccNotebook, 1, + GuiSwitchAndSetFootline(wl->cmpEccNotebook, 1, wl->cmpEccCreatedBy, format, "dvdisaster", major, minor, micro, unstable); - } -#endif } else { char *format = "%s-%d.%d%s"; @@ -972,13 +941,10 @@ continue_with_ecc: PrintLog(format, _("created by dvdisaster"), major, minor, unstable); PrintLog("\n"); -#ifndef WITH_CLI_ONLY_YES - if(Closure->guiMode) - SwitchAndSetFootline(wl->cmpEccNotebook, 1, - wl->cmpEccCreatedBy, - format, "dvdisaster", - major, minor, unstable); -#endif + GuiSwitchAndSetFootline(wl->cmpEccNotebook, 1, + wl->cmpEccCreatedBy, + format, "dvdisaster", + major, minor, unstable); } /* Error correction method */ @@ -989,12 +955,9 @@ continue_with_ecc: method, eh->eccBytes, ((double)eh->eccBytes*100.0)/(double)eh->dataBytes); -#ifndef WITH_CLI_ONLY_YES - if(Closure->guiMode) - SetLabelText(GTK_LABEL(wl->cmpEccMethod), _("%4s, %d roots, %4.1f%% redundancy"), - method, eh->eccBytes, - ((double)eh->eccBytes*100.0)/(double)eh->dataBytes); -#endif + GuiSetLabelText(wl->cmpEccMethod, _("%4s, %d roots, %4.1f%% redundancy"), + method, eh->eccBytes, + ((double)eh->eccBytes*100.0)/(double)eh->dataBytes); /* required dvdisaster version */ @@ -1004,12 +967,9 @@ continue_with_ecc: (eh->neededVersion%10000)/100); -#ifndef WITH_CLI_ONLY_YES - if(Closure->guiMode) - SetLabelText(GTK_LABEL(wl->cmpEccRequires), "dvdisaster-%d.%d", - eh->neededVersion/10000, - (eh->neededVersion%10000)/100); -#endif + GuiSetLabelText(wl->cmpEccRequires, "dvdisaster-%d.%d", + eh->neededVersion/10000, + (eh->neededVersion%10000)/100); } else { PrintLog(_("* requires : dvdisaster-%d.%d (BAD)\n" @@ -1019,18 +979,16 @@ continue_with_ecc: (eh->neededVersion%10000)/100); -#ifndef WITH_CLI_ONLY_YES if(Closure->guiMode) - { SetLabelText(GTK_LABEL(wl->cmpEccRequires), - "dvdisaster-%d.%d", - Closure->redMarkup, - eh->neededVersion/10000, - (eh->neededVersion%10000)/100); + { GuiSetLabelText(wl->cmpEccRequires, + "dvdisaster-%d.%d", + Closure->redMarkup, + eh->neededVersion/10000, + (eh->neededVersion%10000)/100); if(!ecc_advice) ecc_advice = g_strdup_printf(_("Please upgrade your version of dvdisaster!"), Closure->redMarkup); } else -#endif { if(!ecc_advice) ecc_advice = g_strdup(_("Please upgrade your version of dvdisaster!")); @@ -1043,11 +1001,8 @@ continue_with_ecc: { PrintLog(_("- medium sectors : %" PRId64 " / %" PRId64 " (good)\n"), expected_sectors, lay->dataSectors); -#ifndef WITH_CLI_ONLY_YES - if(Closure->guiMode) - SetLabelText(GTK_LABEL(wl->cmpEccMediumSectors), "%" PRId64 " / %" PRId64 "", - expected_sectors, lay->dataSectors); -#endif + GuiSetLabelText(wl->cmpEccMediumSectors, "%" PRId64 " / %" PRId64 "", + expected_sectors, lay->dataSectors); } else { if(image->sectorSize > expected_sectors && image->sectorSize - expected_sectors <= 2) @@ -1055,14 +1010,12 @@ continue_with_ecc: expected_sectors); else PrintLog(_("* medium sectors : %" PRId64 " (BAD)\n"),expected_sectors); -#ifndef WITH_CLI_ONLY_YES if(Closure->guiMode) - { SetLabelText(GTK_LABEL(wl->cmpEccMediumSectors), - "%" PRId64 "", Closure->redMarkup, expected_sectors); + { GuiSetLabelText(wl->cmpEccMediumSectors, + "%" PRId64 "", Closure->redMarkup, expected_sectors); if(!ecc_advice && image->sectorSize > expected_sectors) ecc_advice = g_strdup_printf(_("Image size does not match recorded size."), Closure->redMarkup); } -#endif } if(Closure->quickVerify) /* take shortcut again */ @@ -1078,23 +1031,18 @@ continue_with_ecc: if(n) PrintLog(_("- data md5sum : %s (good)\n"),hdr_digest); else PrintLog(_("* data md5sum : %s (BAD)\n"),hdr_digest); -#ifndef WITH_CLI_ONLY_YES - if(Closure->guiMode) - { if(n) SetLabelText(GTK_LABEL(wl->cmpEcc1Msg), "%s", hdr_digest); - else - { SetLabelText(GTK_LABEL(wl->cmpEcc1Msg), "%s", Closure->redMarkup, hdr_digest); - SetLabelText(GTK_LABEL(wl->cmpImageMd5Sum), "%s", Closure->redMarkup, data_digest); - } + if(n) + { GuiSetLabelText(wl->cmpEcc1Msg, "%s", hdr_digest); + } + else + { GuiSetLabelText(wl->cmpEcc1Msg, "%s", Closure->redMarkup, hdr_digest); + GuiSetLabelText(wl->cmpImageMd5Sum, "%s", Closure->redMarkup, data_digest); } -#endif } else { PrintLog(_("- data md5sum : %s\n"), "-"); -#ifndef WITH_CLI_ONLY_YES - if(Closure->guiMode) - SetLabelText(GTK_LABEL(wl->cmpEcc1Msg), "%s", "-"); -#endif + GuiSetLabelText(wl->cmpEcc1Msg, "%s", "-"); } /*** md5sum of the crc portion */ @@ -1104,28 +1052,18 @@ continue_with_ecc: if(!crc_missing) { if(!memcmp(eh->crcSum, cc->crcSum, 16)) { PrintLog(_("- crc md5sum : %s (good)\n"),digest); -#ifndef WITH_CLI_ONLY_YES - if(Closure->guiMode) - SetLabelText(GTK_LABEL(wl->cmpEcc2Msg), "%s", digest); -#endif + GuiSetLabelText(wl->cmpEcc2Msg, "%s", digest); } else - { PrintLog(_("* crc md5sum : %s (BAD)\n"),digest); -#ifndef WITH_CLI_ONLY_YES - if(Closure->guiMode) - { SetLabelText(GTK_LABEL(wl->cmpEcc2Msg), "%s", Closure->redMarkup, digest); - } - ecc_md5_failure = TRUE; -#endif + { PrintLog(_("* crc md5sum : %s (BAD)\n"),digest); + GuiSetLabelText(wl->cmpEcc2Msg, "%s", Closure->redMarkup, digest); + ecc_md5_failure = TRUE; } } else { PrintLog(_("- crc md5sum : %s\n"), "-"); -#ifndef WITH_CLI_ONLY_YES - if(Closure->guiMode) - SetLabelText(GTK_LABEL(wl->cmpEcc2Msg), "%s", "-"); -#endif + GuiSetLabelText(wl->cmpEcc2Msg, "%s", "-"); } /*** meta md5sum of the ecc slices */ @@ -1135,64 +1073,48 @@ continue_with_ecc: if(!ecc_missing) { if(!memcmp(eh->eccSum, ecc_sum, 16)) { PrintLog(_("- ecc md5sum : %s (good)\n"),digest); -#ifndef WITH_CLI_ONLY_YES - if(Closure->guiMode) - SetLabelText(GTK_LABEL(wl->cmpEcc3Msg), "%s", digest); -#endif + GuiSetLabelText(wl->cmpEcc3Msg, "%s", digest); } else { PrintLog(_("* ecc md5sum : %s (BAD)\n"),digest); -#ifndef WITH_CLI_ONLY_YES - if(Closure->guiMode) - { SetLabelText(GTK_LABEL(wl->cmpEcc3Msg), "%s", Closure->redMarkup, digest); - } + GuiSetLabelText(wl->cmpEcc3Msg, "%s", Closure->redMarkup, digest); ecc_md5_failure = TRUE; -#endif } } else { PrintLog(_("- ecc md5sum : %s\n"), "-"); -#ifndef WITH_CLI_ONLY_YES - if(Closure->guiMode) - SetLabelText(GTK_LABEL(wl->cmpEcc3Msg), "%s", "-"); -#endif + GuiSetLabelText(wl->cmpEcc3Msg, "%s", "-"); } /*** Print final results */ -#ifndef WITH_CLI_ONLY_YES - try_it = -#endif - prognosis(cc, total_missing + data_crc_errors - hdr_correctable, expected_sectors); + try_it = prognosis(cc, total_missing + data_crc_errors - hdr_correctable, expected_sectors); -#ifndef WITH_CLI_ONLY_YES if(Closure->guiMode) { if(ecc_advice) - { SetLabelText(GTK_LABEL(wl->cmpEccResult), "%s", ecc_advice); + { GuiSetLabelText(wl->cmpEccResult, "%s", ecc_advice); g_free(ecc_advice); } else if(!crc_missing && !ecc_missing && !hdr_missing && !hdr_crc_errors && !ecc_md5_failure) - SetLabelText(GTK_LABEL(wl->cmpEccResult), - _("Good error correction data."), - Closure->greenMarkup); - else - { if(try_it) SetLabelText(GTK_LABEL(wl->cmpEccResult), - _("Full data recovery is likely."), - Closure->greenMarkup); - else SetLabelText(GTK_LABEL(wl->cmpEccResult), - _("Full data recovery is NOT possible."), - Closure->redMarkup); + { GuiSetLabelText(wl->cmpEccResult, + _("Good error correction data."), + Closure->greenMarkup); + } + else + { if(try_it) + { GuiSetLabelText(wl->cmpEccResult, + _("Full data recovery is likely."), + Closure->greenMarkup); + } + else + { GuiSetLabelText(wl->cmpEccResult, + _("Full data recovery is NOT possible."), + Closure->redMarkup); + } } - } - else -#endif - { if(ecc_advice) - { PrintLog("%s", ecc_advice); - g_free(ecc_advice); - } } /*** Close and clean up */ diff --git a/src/rs02-window.c b/src/rs02-window.c index d391eb2..7c9d22c 100644 --- a/src/rs02-window.c +++ b/src/rs02-window.c @@ -19,7 +19,10 @@ * You should have received a copy of the GNU General Public License * along with dvdisaster. If not, see . */ -// DVDISASTER_GUI_FILE + +/*** src type: only GUI code ***/ + +#ifdef WITH_GUI_YES #include "dvdisaster.h" @@ -41,8 +44,8 @@ static void update_geometry(RS02Widgets*); void ResetRS02EncWindow(Method *method) { RS02Widgets *wl = (RS02Widgets*)method->widgetList; - SetProgress(wl->encPBar1, 0, 100); - SetProgress(wl->encPBar2, 0, 100); + GuiSetProgress(wl->encPBar1, 0, 100); + GuiSetProgress(wl->encPBar2, 0, 100); gtk_widget_hide(wl->encLabel2); gtk_widget_hide(wl->encPBar2); @@ -53,13 +56,7 @@ void ResetRS02EncWindow(Method *method) void CreateRS02EncWindow(Method *method, GtkWidget *parent) { GtkWidget *wid,*table,*pbar,*sep; - RS02Widgets *wl; - - if(!method->widgetList) - { wl = g_malloc0(sizeof(RS02Widgets)); - method->widgetList = wl; - } - else wl = method->widgetList; + RS02Widgets *wl = method->widgetList; wl->encHeadline = gtk_label_new(NULL); gtk_misc_set_alignment(GTK_MISC(wl->encHeadline), 0.0, 0.0); @@ -76,8 +73,7 @@ void CreateRS02EncWindow(Method *method, GtkWidget *parent) gtk_box_pack_start(GTK_BOX(parent), table, FALSE, FALSE, 30); wl->encLabel1 = wid = gtk_label_new(NULL); - gtk_label_set_markup(GTK_LABEL(wid), - _utf("1. Preparing image:")); + gtk_label_set_markup(GTK_LABEL(wid),_utf("1. Preparing image:")); gtk_misc_set_alignment(GTK_MISC(wid), 0.0, 0.0); gtk_table_attach(GTK_TABLE(table), wid, 0, 1, 0, 1, GTK_SHRINK | GTK_FILL, GTK_SHRINK, 20, 20); @@ -138,9 +134,12 @@ void RS02SetFixMaxValues(RS02Widgets *wl, int data_bytes, int ecc_bytes, gint64 static gboolean results_idle_func(gpointer data) { RS02Widgets *wl = (RS02Widgets*)data; - SetLabelText(GTK_LABEL(wl->fixCorrected), _("Repaired: %" PRId64 ""), wl->corrected); - SetLabelText(GTK_LABEL(wl->fixUncorrected), _("Unrepairable: %" PRId64 ""),Closure->redMarkup, wl->uncorrected); - SetLabelText(GTK_LABEL(wl->fixProgress), _("Progress: %3d.%1d%%"), wl->percent/10, wl->percent%10); + GuiSetLabelText(wl->fixCorrected, _("Repaired: %" PRId64), + wl->corrected); + GuiSetLabelText(wl->fixUncorrected, _("Unrepairable: %" PRId64 ""), + Closure->redMarkup, wl->uncorrected); + GuiSetLabelText(wl->fixProgress, _("Progress: %3d.%1d%%"), + wl->percent/10, wl->percent%10); return FALSE; } @@ -159,9 +158,9 @@ void RS02UpdateFixResults(RS02Widgets *wl, gint64 corrected, gint64 uncorrected) static gboolean curve_idle_func(gpointer data) { RS02Widgets *wl = (RS02Widgets*)data; - gint x0 = CurveX(wl->fixCurve, (double)wl->lastPercent); - gint x1 = CurveX(wl->fixCurve, (double)wl->percent); - gint y = CurveY(wl->fixCurve, wl->fixCurve->ivalue[wl->percent]); + gint x0 = GuiCurveX(wl->fixCurve, (double)wl->lastPercent); + gint x1 = GuiCurveX(wl->fixCurve, (double)wl->percent); + gint y = GuiCurveY(wl->fixCurve, wl->fixCurve->ivalue[wl->percent]); gint i; /*** Mark unused ecc values */ @@ -195,7 +194,7 @@ static gboolean curve_idle_func(gpointer data) /* Redraw the ecc capacity threshold line */ - y = CurveY(wl->fixCurve, wl->eccBytes); + y = GuiCurveY(wl->fixCurve, wl->eccBytes); gdk_gc_set_rgb_fg_color(Closure->drawGC, Closure->greenSector); gdk_draw_line(wl->fixCurve->widget->window, Closure->drawGC, @@ -227,7 +226,7 @@ static void update_geometry(RS02Widgets *wl) { /* Curve geometry */ - UpdateCurveGeometry(wl->fixCurve, "999", 20); + GuiUpdateCurveGeometry(wl->fixCurve, "999", 20); /* Label positions in the foot line */ @@ -242,12 +241,12 @@ static void redraw_curve(RS02Widgets *wl) /* Redraw the curve */ - RedrawAxes(wl->fixCurve); - RedrawCurve(wl->fixCurve, wl->percent); + GuiRedrawAxes(wl->fixCurve); + GuiRedrawCurve(wl->fixCurve, wl->percent); /* Ecc capacity threshold line */ - y = CurveY(wl->fixCurve, wl->eccBytes); + y = GuiCurveY(wl->fixCurve, wl->eccBytes); gdk_gc_set_rgb_fg_color(Closure->drawGC, Closure->greenSector); gdk_draw_line(wl->fixCurve->widget->window, Closure->drawGC, @@ -275,7 +274,7 @@ void ResetRS02FixWindow(Method *method) gtk_notebook_set_current_page(GTK_NOTEBOOK(wl->fixNotebook), 0); - ZeroCurve(wl->fixCurve); + GuiZeroCurve(wl->fixCurve); RS02UpdateFixResults(wl, 0, 0); if(wl->fixCurve && wl->fixCurve->widget) @@ -291,7 +290,6 @@ void ResetRS02FixWindow(Method *method) * Create the Fix window contents */ - void CreateRS02FixWindow(Method *method, GtkWidget *parent) { RS02Widgets *wl; GtkWidget *sep,*ignore,*d_area,*notebook,*hbox; @@ -345,7 +343,7 @@ void CreateRS02FixWindow(Method *method, GtkWidget *parent) ignore = gtk_label_new("footer_tab"); gtk_notebook_append_page(GTK_NOTEBOOK(notebook), wl->fixFootline, ignore); - wl->fixCurve = CreateCurve(d_area, _("Errors/Ecc block"), "%d", 1000, CURVE_PERCENT); + wl->fixCurve = GuiCreateCurve(d_area, _("Errors/Ecc block"), "%d", 1000, CURVE_PERCENT); wl->fixCurve->enable = DRAW_ICURVE; } @@ -396,8 +394,8 @@ static void cache_cb(GtkWidget *widget, gpointer data) utf = g_locale_to_utf8(text, -1, NULL, NULL, NULL); gtk_label_set_markup(GTK_LABEL(lwoh->normalLabel), utf); gtk_label_set_markup(GTK_LABEL(lwoh->linkLabel), utf); - SetOnlineHelpLinkText(lwoh, text); - UpdateMethodPreferences(); + GuiSetOnlineHelpLinkText(lwoh, text); + GuiUpdateMethodPreferences(); g_free(text); g_free(utf); } @@ -781,8 +779,9 @@ void CreateRS02PrefsPage(Method *method, GtkWidget *parent) /* Drive capacity table header */ - lwoh = CreateLabelWithOnlineHelp(_("Using the smallest possible size from table"), _("Use smallest possible size from following table (in sectors):")); - RegisterPreferencesHelpWindow(lwoh); + lwoh = GuiCreateLabelWithOnlineHelp(_("Using the smallest possible size from table"), + _("Use smallest possible size from following table (in sectors):")); + GuiRegisterPreferencesHelpWindow(lwoh); vbox2 = gtk_vbox_new(FALSE, 0); gtk_box_pack_start(GTK_BOX(hbox), vbox2, FALSE, FALSE, 0); @@ -801,20 +800,21 @@ void CreateRS02PrefsPage(Method *method, GtkWidget *parent) wl->radio1B = radio; gtk_box_pack_start(GTK_BOX(hbox), radio, FALSE, FALSE, 0); gtk_box_pack_start(GTK_BOX(hbox), lwoh->normalLabel, FALSE, FALSE, 0); - AddHelpWidget(lwoh, hbox); + GuiAddHelpWidget(lwoh, hbox); } } - AddHelpParagraph(lwoh, _("Determine augmented image size from table\n\n" - "Augmented images fill up unused medium space " - "with error correction information. Activate this option " - "if you want the augmented image to fit on the smallest " - "possible medium.\n\n" + GuiAddHelpParagraph(lwoh, + _("Determine augmented image size from table\n\n" + "Augmented images fill up unused medium space " + "with error correction information. Activate this option " + "if you want the augmented image to fit on the smallest " + "possible medium.\n\n" - "In order to pick a suitable medium the available media " - "capacities must be known. Default sizes for CD and " - "one/two layered DVD and BD are given in the table. You can edit " - "these sizes according to your needs.")); + "In order to pick a suitable medium the available media " + "capacities must be known. Default sizes for CD and " + "one/two layered DVD and BD are given in the table. You can edit " + "these sizes according to your needs.")); table = gtk_table_new(5, 6, FALSE); gtk_box_pack_start(GTK_BOX(hbox), table, FALSE, FALSE, 0); @@ -827,8 +827,8 @@ void CreateRS02PrefsPage(Method *method, GtkWidget *parent) /* CD capacity table row */ - lwoh = CreateLabelWithOnlineHelp(_("CD-R / CD-RW:"), _("CD-R / CD-RW:")); - RegisterPreferencesHelpWindow(lwoh); + lwoh = GuiCreateLabelWithOnlineHelp(_("CD-R / CD-RW:"), _("CD-R / CD-RW:")); + GuiRegisterPreferencesHelpWindow(lwoh); gtk_misc_set_alignment(GTK_MISC(lwoh->linkLabel), 0.0, 0.0); tinybox = gtk_hbox_new(FALSE, 0); @@ -870,28 +870,29 @@ void CreateRS02PrefsPage(Method *method, GtkWidget *parent) g_signal_connect(G_OBJECT(wl->cdUndoButtonB), "clicked", G_CALLBACK(query_cb), wl); gtk_box_pack_start(GTK_BOX(hbox), wl->cdUndoButtonB, FALSE, FALSE, 0); - AddHelpWidget(lwoh, hbox); + GuiAddHelpWidget(lwoh, hbox); - AddHelpParagraph(lwoh, _("CD medium size\n\n" - "This is the maximum capacity assumed for 80min CD media. " - "Images smaller than this value will be " - "augmented with error correction information " - "so that they will fit on the specified CD.\n\n" - "You can enter the medium size in sectors of 2K each, " - "or press the \"query medium\" button to use the size " - "of a medium currently inserted in the selected " - "drive. Sometimes this value is incorrect, though.\n" - "Use the arrow button to revert to the last saved value.\n\n" - "Please note that augmented images will at most triple " - "in size as the highest possible redundancy is 200%%.\n" - "Even if this limit is not reached the augmented image " - "may be a few sectors smaller than specified for " - "technical reasons.")); + GuiAddHelpParagraph(lwoh, + _("CD medium size\n\n" + "This is the maximum capacity assumed for 80min CD media. " + "Images smaller than this value will be " + "augmented with error correction information " + "so that they will fit on the specified CD.\n\n" + "You can enter the medium size in sectors of 2K each, " + "or press the \"query medium\" button to use the size " + "of a medium currently inserted in the selected " + "drive. Sometimes this value is incorrect, though.\n" + "Use the arrow button to revert to the last saved value.\n\n" + "Please note that augmented images will at most triple " + "in size as the highest possible redundancy is 200%%.\n" + "Even if this limit is not reached the augmented image " + "may be a few sectors smaller than specified for " + "technical reasons.")); /* DVD capacity table row */ - lwoh = CreateLabelWithOnlineHelp(_("DVD 1 layer:"), _("DVD 1 layer:")); - RegisterPreferencesHelpWindow(lwoh); + lwoh = GuiCreateLabelWithOnlineHelp(_("DVD 1 layer:"), _("DVD 1 layer:")); + GuiRegisterPreferencesHelpWindow(lwoh); gtk_misc_set_alignment(GTK_MISC(lwoh->linkLabel), 0.0, 0.0); tinybox = gtk_hbox_new(FALSE, 0); @@ -933,28 +934,29 @@ void CreateRS02PrefsPage(Method *method, GtkWidget *parent) g_signal_connect(G_OBJECT(wl->dvdUndoButton1B), "clicked", G_CALLBACK(query_cb), wl); gtk_box_pack_start(GTK_BOX(hbox), wl->dvdUndoButton1B, FALSE, FALSE, 0); - AddHelpWidget(lwoh, hbox); + GuiAddHelpWidget(lwoh, hbox); - AddHelpParagraph(lwoh, _("Single layer DVD medium size\n\n" - "This is the maximum capacity assumed for single layer DVD media. " - "Images exceeding the smaller media sizes but smaller " - "than this value will be augmented with error correction information " - "so that they will fit on the specified DVD.\n\n" - "You can enter the medium size in sectors of 2K each, " - "or press the \"query medium\" button to use the size " - "of a medium currently inserted in the selected " - "drive. Sometimes this value is incorrect, though.\n" - "Use the arrow button to revert to the last saved value.\n\n" - "Please note that augmented images will at most triple " - "in size as the highest possible redundancy is 200%%.\n" - "Even if this limit is not reached the augmented image " - "may be a few sectors smaller than specified for " - "technical reasons.")); + GuiAddHelpParagraph(lwoh, + _("Single layer DVD medium size\n\n" + "This is the maximum capacity assumed for single layer DVD media. " + "Images exceeding the smaller media sizes but smaller " + "than this value will be augmented with error correction information " + "so that they will fit on the specified DVD.\n\n" + "You can enter the medium size in sectors of 2K each, " + "or press the \"query medium\" button to use the size " + "of a medium currently inserted in the selected " + "drive. Sometimes this value is incorrect, though.\n" + "Use the arrow button to revert to the last saved value.\n\n" + "Please note that augmented images will at most triple " + "in size as the highest possible redundancy is 200%%.\n" + "Even if this limit is not reached the augmented image " + "may be a few sectors smaller than specified for " + "technical reasons.")); /* DVD two layer capacity table row */ - lwoh = CreateLabelWithOnlineHelp(_("DVD 2 layers:"), _("DVD 2 layers:")); - RegisterPreferencesHelpWindow(lwoh); + lwoh = GuiCreateLabelWithOnlineHelp(_("DVD 2 layers:"), _("DVD 2 layers:")); + GuiRegisterPreferencesHelpWindow(lwoh); gtk_misc_set_alignment(GTK_MISC(lwoh->linkLabel), 0.0, 0.0); tinybox = gtk_hbox_new(FALSE, 0); @@ -996,28 +998,29 @@ void CreateRS02PrefsPage(Method *method, GtkWidget *parent) g_signal_connect(G_OBJECT(wl->dvdUndoButton2B), "clicked", G_CALLBACK(query_cb), wl); gtk_box_pack_start(GTK_BOX(hbox), wl->dvdUndoButton2B, FALSE, FALSE, 0); - AddHelpWidget(lwoh, hbox); + GuiAddHelpWidget(lwoh, hbox); - AddHelpParagraph(lwoh, _("Two layered DVD medium size\n\n" - "This is the maximum capacity assumed for two layered DVD media. " - "Images exceeding the smaller media sizes but smaller " - "than this value will be augmented with error correction information " - "so that they will fit on the specified DVD.\n\n" - "You can enter the medium size in sectors of 2K each, " - "or press the \"query medium\" button to use the size " - "of a medium currently inserted in the selected " - "drive. Sometimes this value is incorrect, though.\n" - "Use the arrow button to revert to the last saved value.\n\n" - "Please note that augmented images will at most triple " - "in size as the highest possible redundancy is 200%%.\n" - "Even if this limit is not reached the augmented image " - "may be a few sectors smaller than specified for " - "technical reasons.")); + GuiAddHelpParagraph(lwoh, + _("Two layered DVD medium size\n\n" + "This is the maximum capacity assumed for two layered DVD media. " + "Images exceeding the smaller media sizes but smaller " + "than this value will be augmented with error correction information " + "so that they will fit on the specified DVD.\n\n" + "You can enter the medium size in sectors of 2K each, " + "or press the \"query medium\" button to use the size " + "of a medium currently inserted in the selected " + "drive. Sometimes this value is incorrect, though.\n" + "Use the arrow button to revert to the last saved value.\n\n" + "Please note that augmented images will at most triple " + "in size as the highest possible redundancy is 200%%.\n" + "Even if this limit is not reached the augmented image " + "may be a few sectors smaller than specified for " + "technical reasons.")); /* BD capacity table row */ - lwoh = CreateLabelWithOnlineHelp(_("BD 1 layer:"), _("BD 1 layer:")); - RegisterPreferencesHelpWindow(lwoh); + lwoh = GuiCreateLabelWithOnlineHelp(_("BD 1 layer:"), _("BD 1 layer:")); + GuiRegisterPreferencesHelpWindow(lwoh); gtk_misc_set_alignment(GTK_MISC(lwoh->linkLabel), 0.0, 0.0); tinybox = gtk_hbox_new(FALSE, 0); @@ -1059,27 +1062,28 @@ void CreateRS02PrefsPage(Method *method, GtkWidget *parent) g_signal_connect(G_OBJECT(wl->bdUndoButton1B), "clicked", G_CALLBACK(query_cb), wl); gtk_box_pack_start(GTK_BOX(hbox), wl->bdUndoButton1B, FALSE, FALSE, 0); - AddHelpWidget(lwoh, hbox); + GuiAddHelpWidget(lwoh, hbox); - AddHelpParagraph(lwoh, _("Single layer BD medium size\n\n" - "This is the maximum capacity assumed for single layer BD media. " - "Images exceeding the smaller media sizes but smaller " - "than this value will be augmented with error correction information " - "so that they will fit on the specified BD.\n\n" - "You can enter the medium size in sectors of 2K each, " - "or press the \"query medium\" button to use the size " - "of a blank medium currently inserted in the selected drive.\n" - "Use the arrow button to revert to the last saved value.\n\n" - "Please note that augmented images will at most triple " - "in size as the highest possible redundancy is 200%%.\n" - "Even if this limit is not reached the augmented image " - "may be a few sectors smaller than specified for " - "technical reasons.")); + GuiAddHelpParagraph(lwoh, + _("Single layer BD medium size\n\n" + "This is the maximum capacity assumed for single layer BD media. " + "Images exceeding the smaller media sizes but smaller " + "than this value will be augmented with error correction information " + "so that they will fit on the specified BD.\n\n" + "You can enter the medium size in sectors of 2K each, " + "or press the \"query medium\" button to use the size " + "of a blank medium currently inserted in the selected drive.\n" + "Use the arrow button to revert to the last saved value.\n\n" + "Please note that augmented images will at most triple " + "in size as the highest possible redundancy is 200%%.\n" + "Even if this limit is not reached the augmented image " + "may be a few sectors smaller than specified for " + "technical reasons.")); /* BD two layer capacity table row */ - lwoh = CreateLabelWithOnlineHelp(_("BD 2 layers:"), _("BD 2 layers:")); - RegisterPreferencesHelpWindow(lwoh); + lwoh = GuiCreateLabelWithOnlineHelp(_("BD 2 layers:"), _("BD 2 layers:")); + GuiRegisterPreferencesHelpWindow(lwoh); gtk_misc_set_alignment(GTK_MISC(lwoh->linkLabel), 0.0, 0.0); tinybox = gtk_hbox_new(FALSE, 0); @@ -1121,27 +1125,28 @@ void CreateRS02PrefsPage(Method *method, GtkWidget *parent) g_signal_connect(G_OBJECT(wl->bdUndoButton2B), "clicked", G_CALLBACK(query_cb), wl); gtk_box_pack_start(GTK_BOX(hbox), wl->bdUndoButton2B, FALSE, FALSE, 0); - AddHelpWidget(lwoh, hbox); + GuiAddHelpWidget(lwoh, hbox); - AddHelpParagraph(lwoh, _("Two layered BD medium size\n\n" - "This is the maximum capacity assumed for two layered BD media. " - "Images exceeding the smaller media sizes but smaller " - "than this value will be augmented with error correction information " - "so that they will fit on the specified BD.\n\n" - "You can enter the medium size in sectors of 2K each, " - "or press the \"query medium\" button to use the size " - "of a blank medium currently inserted in the selected drive.\n" - "Use the arrow button to revert to the last saved value.\n\n" - "Please note that augmented images will at most triple " - "in size as the highest possible redundancy is 200%%.\n" - "Even if this limit is not reached the augmented image " - "may be a few sectors smaller than specified for " - "technical reasons.")); + GuiAddHelpParagraph(lwoh, + _("Two layered BD medium size\n\n" + "This is the maximum capacity assumed for two layered BD media. " + "Images exceeding the smaller media sizes but smaller " + "than this value will be augmented with error correction information " + "so that they will fit on the specified BD.\n\n" + "You can enter the medium size in sectors of 2K each, " + "or press the \"query medium\" button to use the size " + "of a blank medium currently inserted in the selected drive.\n" + "Use the arrow button to revert to the last saved value.\n\n" + "Please note that augmented images will at most triple " + "in size as the highest possible redundancy is 200%%.\n" + "Even if this limit is not reached the augmented image " + "may be a few sectors smaller than specified for " + "technical reasons.")); /* BDXL three layer capacity table row */ - lwoh = CreateLabelWithOnlineHelp(_("BDXL 3 layers:"), _("BDXL 3 layers:")); - RegisterPreferencesHelpWindow(lwoh); + lwoh = GuiCreateLabelWithOnlineHelp(_("BDXL 3 layers:"), _("BDXL 3 layers:")); + GuiRegisterPreferencesHelpWindow(lwoh); gtk_misc_set_alignment(GTK_MISC(lwoh->linkLabel), 0.0, 0.0); tinybox = gtk_hbox_new(FALSE, 0); @@ -1183,29 +1188,30 @@ void CreateRS02PrefsPage(Method *method, GtkWidget *parent) g_signal_connect(G_OBJECT(wl->bdUndoButton3B), "clicked", G_CALLBACK(query_cb), wl); gtk_box_pack_start(GTK_BOX(hbox), wl->bdUndoButton3B, FALSE, FALSE, 0); - AddHelpWidget(lwoh, hbox); + GuiAddHelpWidget(lwoh, hbox); - AddHelpParagraph(lwoh, _("Three layered BDXL medium size\n\n" - "This is the maximum capacity assumed for three layered BDXL media. " - "Images exceeding the smaller media sizes but smaller " - "than this value will be augmented with error correction information " - "so that they will fit on the specified BD.\n\n" - "You can enter the medium size in sectors of 2K each, " - "or press the \"query medium\" button to use the size " - "of a blank medium currently inserted in the selected drive.\n" - "Use the arrow button to revert to the last saved value.\n\n" - "Please note that augmented images will at most triple " - "in size as the highest possible redundancy is 200%%.\n" - "Even if this limit is not reached the augmented image " - "may be a few sectors smaller than specified for " - "technical reasons.")); + GuiAddHelpParagraph(lwoh, + _("Three layered BDXL medium size\n\n" + "This is the maximum capacity assumed for three layered BDXL media. " + "Images exceeding the smaller media sizes but smaller " + "than this value will be augmented with error correction information " + "so that they will fit on the specified BD.\n\n" + "You can enter the medium size in sectors of 2K each, " + "or press the \"query medium\" button to use the size " + "of a blank medium currently inserted in the selected drive.\n" + "Use the arrow button to revert to the last saved value.\n\n" + "Please note that augmented images will at most triple " + "in size as the highest possible redundancy is 200%%.\n" + "Even if this limit is not reached the augmented image " + "may be a few sectors smaller than specified for " + "technical reasons.")); /* BDXL four layer capacity table row */ - lwoh = CreateLabelWithOnlineHelp(_("BDXL 4 layers:"), _("BDXL 4 layers:")); - RegisterPreferencesHelpWindow(lwoh); + lwoh = GuiCreateLabelWithOnlineHelp(_("BDXL 4 layers:"), _("BDXL 4 layers:")); + GuiRegisterPreferencesHelpWindow(lwoh); gtk_misc_set_alignment(GTK_MISC(lwoh->linkLabel), 0.0, 0.0); tinybox = gtk_hbox_new(FALSE, 0); @@ -1247,9 +1253,9 @@ void CreateRS02PrefsPage(Method *method, GtkWidget *parent) g_signal_connect(G_OBJECT(wl->bdUndoButton4B), "clicked", G_CALLBACK(query_cb), wl); gtk_box_pack_start(GTK_BOX(hbox), wl->bdUndoButton4B, FALSE, FALSE, 0); - AddHelpWidget(lwoh, hbox); + GuiAddHelpWidget(lwoh, hbox); - AddHelpParagraph(lwoh, _("Four layered BDXL medium size\n\n" + GuiAddHelpParagraph(lwoh, _("Four layered BDXL medium size\n\n" "This is the maximum capacity assumed for four layered BDXL media. " "Images exceeding the smaller media sizes but smaller " "than this value will be augmented with error correction information " @@ -1290,8 +1296,8 @@ void CreateRS02PrefsPage(Method *method, GtkWidget *parent) /* custom value selection */ - lwoh = CreateLabelWithOnlineHelp(_("Use at most"), _("Use at most")); - RegisterPreferencesHelpWindow(lwoh); + lwoh = GuiCreateLabelWithOnlineHelp(_("Use at most"), _("Use at most")); + GuiRegisterPreferencesHelpWindow(lwoh); for(i=0; i<2; i++) { GtkWidget *hbox = gtk_hbox_new(FALSE, 4); @@ -1320,22 +1326,23 @@ void CreateRS02PrefsPage(Method *method, GtkWidget *parent) } else { wl->otherEntryB = entry; - AddHelpWidget(lwoh, hbox); + GuiAddHelpWidget(lwoh, hbox); } } - AddHelpParagraph(lwoh, _("Use at most ... sectors\n\n" - "Use this option to override the table settings; " - "the augmented image will be expanded to the size " - "given in this field.\n" - "This allows for the creation of DVD-sized augmented images " - "which would normally be fitted to CD size, and to use " - "non standard media.\n\n" - "Please note that augmented images will at most triple " - "in size as the highest possible redundancy is 200%%.\n" - "Even if this limit is not reached the augmented image " - "may be a few sectors smaller than specified for " - "technical reasons.")); + GuiAddHelpParagraph(lwoh, + _("Use at most ... sectors\n\n" + "Use this option to override the table settings; " + "the augmented image will be expanded to the size " + "given in this field.\n" + "This allows for the creation of DVD-sized augmented images " + "which would normally be fitted to CD size, and to use " + "non standard media.\n\n" + "Please note that augmented images will at most triple " + "in size as the highest possible redundancy is 200%%.\n" + "Even if this limit is not reached the augmented image " + "may be a few sectors smaller than specified for " + "technical reasons.")); g_snprintf(value, 40, "%lld", (long long int)Closure->mediumSize); gtk_entry_set_text(GTK_ENTRY(wl->otherEntryA), value); @@ -1360,13 +1367,13 @@ void CreateRS02PrefsPage(Method *method, GtkWidget *parent) gtk_box_pack_start(GTK_BOX(parent), frame, FALSE, FALSE, 0); text = g_strdup_printf(_("%d MiB of file cache"), Closure->cacheMiB); - lwoh = CreateLabelWithOnlineHelp(_("File cache"), text); - RegisterPreferencesHelpWindow(lwoh); + lwoh = GuiCreateLabelWithOnlineHelp(_("File cache"), text); + GuiRegisterPreferencesHelpWindow(lwoh); g_free(text); wl->cacheLwoh = lwoh; - LockLabelSize(GTK_LABEL(lwoh->normalLabel), _utf("%d MiB of file cache"), 2222); - LockLabelSize(GTK_LABEL(lwoh->linkLabel), _utf("%d MiB of file cache"), 2222); + GuiLockLabelSize(lwoh->normalLabel, _utf("%d MiB of file cache"), 2222); + GuiLockLabelSize(lwoh->linkLabel, _utf("%d MiB of file cache"), 2222); for(i=0; i<2; i++) { GtkWidget *hbox = gtk_hbox_new(FALSE, 4); @@ -1397,12 +1404,15 @@ void CreateRS02PrefsPage(Method *method, GtkWidget *parent) else { wl->cacheScaleB = scale; gtk_box_pack_start(GTK_BOX(hbox), lwoh->normalLabel, FALSE, FALSE, 0); - AddHelpWidget(lwoh, hbox); + GuiAddHelpWidget(lwoh, hbox); } } - AddHelpParagraph(lwoh, _("File cache\n\n" - "dvdisaster optimizes access to the image and error correction " - "files by maintaining its own cache. " - "The preset of 32MiB is suitable for most systems.")); + GuiAddHelpParagraph(lwoh, + _("File cache\n\n" + "dvdisaster optimizes access to the image and error correction " + "files by maintaining its own cache. " + "The preset of 32MiB is suitable for most systems.")); } + +#endif /* WITH_GUI_YES */ diff --git a/src/rs03-common.c b/src/rs03-common.c index 475b169..aaf204d 100644 --- a/src/rs03-common.c +++ b/src/rs03-common.c @@ -20,11 +20,12 @@ * along with dvdisaster. If not, see . */ +/*** src type: no GUI code ***/ + #include "dvdisaster.h" #include "rs03-includes.h" - /*** *** Read and buffer CRC information from RS03 error correction data ***/ diff --git a/src/rs03-create.c b/src/rs03-create.c index b606a5f..bc68340 100644 --- a/src/rs03-create.c +++ b/src/rs03-create.c @@ -20,6 +20,8 @@ * along with dvdisaster. If not, see . */ +/*** src type: some GUI code ***/ + #include "dvdisaster.h" #include "rs03-includes.h" @@ -67,9 +69,7 @@ typedef struct { Method *self; Image *image; -#ifndef WITH_CLI_ONLY_YES RS03Widgets *wl; -#endif RS03Layout *lay; EccHeader *eh; /* ecc header in native byte order */ EccHeader *eh_le; /* ecc header in little endian order */ @@ -147,15 +147,12 @@ static void ecc_cleanup(gpointer data) } } -#ifndef WITH_CLI_ONLY_YES - if(Closure->guiMode) - { if(ec->earlyTermination) - SetLabelText(GTK_LABEL(ec->wl->encFootline), - _("Aborted by unrecoverable error."), - Closure->redMarkup); - AllowActions(TRUE); + if(ec->earlyTermination) + { GuiSetLabelText(ec->wl->encFootline, + _("Aborted by unrecoverable error."), + Closure->redMarkup); } -#endif + GuiAllowActions(TRUE); /*** We must invalidate the CRC cache as it does only cover the data portion of the image, not the full RS03 enhanced image @@ -229,10 +226,7 @@ static void ecc_cleanup(gpointer data) if(ec->encoderData) g_free(ec->encoderData); g_free(ec); -#ifndef WITH_CLI_ONLY_YES - if(Closure->guiMode) - g_thread_exit(0); -#endif + GuiExitWorkerThread(); } /*** @@ -244,32 +238,26 @@ static void ecc_cleanup(gpointer data) */ static void abort_encoding(ecc_closure *ec, int truncate) -{ -#ifndef WITH_CLI_ONLY_YES - RS03Widgets *wl = ec->wl; -#endif - +{ if(truncate && ec->lay) { if(Closure->eccTarget == ECC_FILE) LargeUnlink(Closure->eccName); else if(!LargeTruncate(ec->image->file, (gint64)(2048*ec->lay->dataSectors))) Stop(_("Could not truncate %s: %s\n"),Closure->imageName,strerror(errno)); -#ifndef WITH_CLI_ONLY_YES if(Closure->stopActions == STOP_CURRENT_ACTION) /* suppress memleak warning when closing window */ - SetLabelText(GTK_LABEL(wl->encFootline), - _("Aborted by user request! (partial ecc data removed from image)"), - Closure->redMarkup); -#endif + { GuiSetLabelText(ec->wl->encFootline, + _("Aborted by user request! (partial ecc data removed from image)"), + Closure->redMarkup); + } } -#ifndef WITH_CLI_ONLY_YES else { if(Closure->stopActions == STOP_CURRENT_ACTION) /* suppress memleak warning when closing window */ - SetLabelText(GTK_LABEL(wl->encFootline), - _("Aborted by user request!"), - Closure->redMarkup); + { GuiSetLabelText(ec->wl->encFootline, + _("Aborted by user request!"), + Closure->redMarkup); + } } -#endif ec->earlyTermination = FALSE; /* suppress respective error message */ @@ -289,17 +277,15 @@ static void remove_old_ecc(ecc_closure *ec) if(Closure->eccTarget == ECC_FILE) { if(LargeStat(Closure->eccName, &ignore)) { - if(ConfirmEccDeletion(Closure->eccName)) + if(GuiConfirmEccDeletion(Closure->eccName)) LargeUnlink(Closure->eccName); -#ifndef WITH_CLI_ONLY_YES else - { SetLabelText(GTK_LABEL(ec->wl->encFootline), - _("Aborted to keep existing ecc file."), - Closure->redMarkup); + { GuiSetLabelText(ec->wl->encFootline, + _("Aborted to keep existing ecc file."), + Closure->redMarkup); ec->earlyTermination = FALSE; ecc_cleanup((gpointer)ec); } -#endif } return; } @@ -311,16 +297,12 @@ static void remove_old_ecc(ecc_closure *ec) guint64 data_bytes; int answer; -#ifndef WITH_CLI_ONLY_YES if(Closure->confirmDeletion || !Closure->guiMode) -#endif - answer = ModalWarningOrCLI(GTK_MESSAGE_WARNING, GTK_BUTTONS_OK_CANCEL, NULL, + answer = ModalWarning(GTK_MESSAGE_WARNING, GTK_BUTTONS_OK_CANCEL, NULL, _("Image \"%s\" already contains error correction information.\n" "Truncating image to data part (%" PRId64 " sectors).\n"), Closure->imageName, data_sectors); -#ifndef WITH_CLI_ONLY_YES else answer = TRUE; -#endif if(!answer) abort_encoding(ec, FALSE); @@ -384,16 +366,18 @@ static void prepare_header(ecc_closure *ec) eh->selfCRC = 0x4c5047; - if(CrcBufValid(Closure->crcBuf, NULL, NULL)) - { if(Closure->eccTarget == ECC_FILE) /* ecc files span the whole image */ - { if(Closure->crcBuf->md5State & MD5_IMAGE_COMPLETE) + if(Closure->eccTarget == ECC_FILE) /* ecc files span the whole image */ + { if(CrcBufValid(Closure->crcBuf, image, FULL_IMAGE)) + { if(Closure->crcBuf->md5State & MD5_IMAGE_COMPLETE) { memcpy(eh->mediumSum, Closure->crcBuf->imageMD5sum, 16); eh->methodFlags[0] |= MFLAG_DATA_MD5; Verbose("CrcBuf present, ecc file: using image MD5 sum\n"); } else Verbose("CrcBuf present, ecc file: image MD5 sum NOT available\n"); } - else /* augmented images are stripped down to the data portion */ + } + else /* augmented images are stripped down to the data portion */ + { if(CrcBufValid(Closure->crcBuf, image, DATA_SECTORS_ONLY)) { if(Closure->crcBuf->md5State & MD5_DATA_COMPLETE) { memcpy(eh->mediumSum, Closure->crcBuf->dataMD5sum, 16); eh->methodFlags[0] |= MFLAG_DATA_MD5; @@ -514,10 +498,8 @@ static void expand_image(ecc_closure *ec) { unsigned char dead_sector[2048]; int n; -#ifndef WITH_CLI_ONLY_YES if(Closure->stopActions) /* User hit the Stop button */ abort_encoding(ec, TRUE); -#endif CreateMissingSector(dead_sector, lay->firstEccPos+sectors, image->imageFP, FINGERPRINT_SECTOR, "ECC padding by expand_image()"); @@ -530,11 +512,7 @@ static void expand_image(ecc_closure *ec) if(last_percent != percent) { PrintProgress(_(progress_msg), percent); - -#ifndef WITH_CLI_ONLY_YES - if(Closure->guiMode) - SetProgress(ec->wl->encPBar1, percent, 100); -#endif + GuiSetProgress(ec->wl->encPBar1, percent, 100); last_percent = percent; } @@ -543,10 +521,7 @@ static void expand_image(ecc_closure *ec) PrintProgress(_(progress_msg), 100); PrintProgress("\n"); -#ifndef WITH_CLI_ONLY_YES - if(Closure->guiMode) - SetProgress(ec->wl->encPBar1, 100, 100); -#endif + GuiSetProgress(ec->wl->encPBar1, 100, 100); } /* @@ -629,12 +604,10 @@ static void read_next_chunk(ecc_closure *ec, guint64 chunk) guint64 page_offset; #endif -#ifndef WITH_CLI_ONLY_YES if(Closure->stopActions) /* User hit the Stop button */ { ec->abortImmediately = TRUE; abort_encoding(ec, TRUE); } -#endif /* Read the next data sectors of this layer. Note that the last layer is made from CRC sums. */ @@ -859,10 +832,7 @@ static gpointer io_thread(ecc_closure *ec) verbose("NOTE: sectors per layer = %lld\n", (long long)lay->sectorsPerLayer); for(chunk=0; chunksectorsPerLayer; chunk+=ec->chunkSize) - { -#ifndef WITH_CLI_ONLY_YES - int cpu_bound = 0; -#endif + { int cpu_bound = 0; verbose("Starting IO processing for chunk %d\n", chunk); @@ -917,9 +887,7 @@ static gpointer io_thread(ecc_closure *ec) /* Wait until the encoders have finished */ g_mutex_lock(ec->lock); -#ifndef WITH_CLI_ONLY_YES cpu_bound = ec->buffersToEncode; -#endif while(ec->buffersToEncode) { verbose("%s", "IO: Waiting for encoders to finish\n"); g_cond_wait(ec->ioCond, ec->lock); @@ -930,18 +898,14 @@ static gpointer io_thread(ecc_closure *ec) verbose("IO: chunk %d finished\n", ec->ioChunk); -#ifndef WITH_CLI_ONLY_YES - if(Closure->guiMode) - { if(cpu_bound) - { SetLabelText(GTK_LABEL(ec->wl->encBottleneck), _("CPU bound")); - ec->cpuBound++; - } - else - { SetLabelText(GTK_LABEL(ec->wl->encBottleneck), _("I/O bound")); - ec->ioBound++; - } + if(cpu_bound) + { GuiSetLabelText(ec->wl->encBottleneck, _("CPU bound")); + ec->cpuBound++; + } + else + { GuiSetLabelText(ec->wl->encBottleneck, _("I/O bound")); + ec->ioBound++; } -#endif } /* chunk finished */ /* Broadcast read to the worker threads */ @@ -1137,7 +1101,7 @@ static gpointer encoder_thread(ecc_closure *ec) { ec->lastPercent = percent; g_mutex_unlock(ec->lock); -#ifndef WITH_CLI_ONLY_YES +#ifdef WITH_GUI_YES if(Closure->guiMode) { gdouble elapsed; gulong ignore; @@ -1145,16 +1109,16 @@ static gpointer encoder_thread(ecc_closure *ec) elapsed=g_timer_elapsed(ec->contTimer, &ignore); if(elapsed > 1.0) { gdouble mbs = ((double)ndata*(ec->progress-ec->lastProgress))/(512.0*elapsed); - SetLabelText(GTK_LABEL(ec->wl->encPerformance), - _("%5.2fMiB/s current"), mbs); + GuiSetLabelText(ec->wl->encPerformance, + _("%5.2fMiB/s current"), mbs); ec->lastProgress = ec->progress; g_timer_reset(ec->contTimer); } - SetProgress(ec->wl->encPBar2, percent, 1000); + GuiSetProgress(ec->wl->encPBar2, percent, 1000); } else -#endif - PrintProgress(_("Ecc generation: %3d.%1d%%"), percent/10, percent%10); +#endif /* WITH_GUI_YES */ + PrintProgress(_("Ecc generation: %3d.%1d%%"), percent/10, percent%10); } else g_mutex_unlock(ec->lock); @@ -1178,34 +1142,32 @@ static void create_reed_solomon(ecc_closure *ec) { int nroots = ec->lay->nroots; int ndata = ec->lay->ndata; int i; -#ifndef WITH_CLI_ONLY_YES +#ifdef WITH_GUI_YES char *alg="none"; char *iostrat="none"; #endif - /*** Show the second progress bar */ - -#ifndef WITH_CLI_ONLY_YES +#ifdef WITH_GUI_YES if(Closure->guiMode) - { ShowWidget(ec->wl->encPBar2); - ShowWidget(ec->wl->encLabel2); - ShowWidget(ec->wl->encLabel3); - ShowWidget(ec->wl->encLabel4); - ShowWidget(ec->wl->encLabel5); - ShowWidget(ec->wl->encThreads); - ShowWidget(ec->wl->encPerformance); - ShowWidget(ec->wl->encBottleneck); + { GuiShowWidget(ec->wl->encPBar2); + GuiShowWidget(ec->wl->encLabel2); + GuiShowWidget(ec->wl->encLabel3); + GuiShowWidget(ec->wl->encLabel4); + GuiShowWidget(ec->wl->encLabel5); + GuiShowWidget(ec->wl->encThreads); + GuiShowWidget(ec->wl->encPerformance); + GuiShowWidget(ec->wl->encBottleneck); DescribeRSEncoder(&alg, &iostrat); - SetLabelText(GTK_LABEL(ec->wl->encThreads), - _("%d threads with %s encoding and %s I/O"), - Closure->codecThreads, alg, iostrat); - SetLabelText(GTK_LABEL(ec->wl->encPerformance), ""); - SetLabelText(GTK_LABEL(ec->wl->encBottleneck), ""); + GuiSetLabelText(ec->wl->encThreads, + _("%d threads with %s encoding and %s I/O"), + Closure->codecThreads, alg, iostrat); + GuiSetLabelText(ec->wl->encPerformance, ""); + GuiSetLabelText(ec->wl->encBottleneck, ""); } -#endif - +#endif /* WITH_GUI_YES */ + /*** Calculate buffer size for the parity calculation and image data caching. The algorithm builds the parity file consecutively in chunks of @@ -1289,9 +1251,7 @@ static void create_reed_solomon(ecc_closure *ec) void RS03Create(void) { Method *method = FindMethod("RS03"); Image *image = NULL; -#ifndef WITH_CLI_ONLY_YES RS03Widgets *wl = (RS03Widgets*)method->widgetList; -#endif RS03Layout *lay; ecc_closure *ec = g_malloc0(sizeof(ecc_closure)); gdouble elapsed,mbs; @@ -1301,19 +1261,15 @@ void RS03Create(void) /*** Register the cleanup procedure for GUI mode */ ec->self = method; -#ifndef WITH_CLI_ONLY_YES ec->wl = wl; -#endif ec->earlyTermination = TRUE; RegisterCleanup(_("Error correction data creation aborted"), ecc_cleanup, ec); -#ifndef WITH_CLI_ONLY_YES - if(Closure->guiMode) /* Preliminary fill text for the head line */ - SetLabelText(GTK_LABEL(wl->encHeadline), - _("Augmenting the image with error correction data.\n%s"), - _("- checking image -")); -#endif + /* Preliminary fill text for the head line */ + GuiSetLabelText(wl->encHeadline, + _("Augmenting the image with error correction data.\n%s"), + _("- checking image -")); /*** Open image file. */ @@ -1359,23 +1315,25 @@ void RS03Create(void) /*** Announce what we are going to do */ ecc_sectors = lay->nroots*lay->sectorsPerLayer; -#ifndef WITH_CLI_ONLY_YES + +#ifdef WITH_GUI_YES if(Closure->guiMode) /* Preliminary fill text for the head line */ { ec->msg = g_strdup_printf(_("Encoding with Method RS03: %" PRId64 " MiB data, %" PRId64 " MiB ecc (%d roots; %4.1f%% redundancy)."), lay->dataSectors/512, ecc_sectors/512, lay->nroots, lay->redundancy); - if(lay->target == ECC_IMAGE) - SetLabelText(GTK_LABEL(wl->encHeadline), - _("Augmenting the image with error correction data.\n%s"), - ec->msg); - else - SetLabelText(GTK_LABEL(wl->encHeadline), - _("Creating the error correction file.\n%s"), - ec->msg); - + if(lay->target == ECC_IMAGE) + { GuiSetLabelText(wl->encHeadline, + _("Augmenting the image with error correction data.\n%s"), + ec->msg); + } + else + { GuiSetLabelText(wl->encHeadline, + _("Creating the error correction file.\n%s"), + ec->msg); + } } else -#endif +#endif /* WITH_GUI_YES */ { char *alg, *iostrat; DescribeRSEncoder(&alg, &iostrat); @@ -1405,7 +1363,7 @@ void RS03Create(void) if(Closure->eccTarget == ECC_IMAGE && lay->redundancy < 20) { int answer; - answer = ModalWarningOrCLI(GTK_MESSAGE_WARNING, GTK_BUTTONS_OK_CANCEL, NULL, + answer = ModalWarning(GTK_MESSAGE_WARNING, GTK_BUTTONS_OK_CANCEL, NULL, "%s", _("Using redundancies below 20% may not give\n" "the expected data loss protection.\n")); @@ -1421,7 +1379,7 @@ void RS03Create(void) lay->mediumCapacity == BDXL_QL_SIZE_NODM) { int answer; - answer = ModalWarningOrCLI(GTK_MESSAGE_WARNING, GTK_BUTTONS_OK_CANCEL, NULL, + answer = ModalWarning(GTK_MESSAGE_WARNING, GTK_BUTTONS_OK_CANCEL, NULL, "%s", _("BD-R size with no defect management enabled,\n" "remember it should you need to repair this image later!\n")); @@ -1458,33 +1416,27 @@ void RS03Create(void) mbs = ((double)lay->ndata*lay->sectorsPerLayer)/(512.0*elapsed); PrintLog(_("Avg performance: %5.2fs (%5.2fMiB/s) total\n"), elapsed, mbs); -#ifndef WITH_CLI_ONLY_YES - if(Closure->guiMode) - { SetLabelText(GTK_LABEL(wl->encPerformance), _("%5.2fMiB/s average"), mbs); - SetLabelText(GTK_LABEL(ec->wl->encBottleneck), + + GuiSetLabelText(wl->encPerformance, _("%5.2fMiB/s average"), mbs); + GuiSetLabelText(ec->wl->encBottleneck, _("%d times CPU bound; %d times I/O bound"), ec->cpuBound, ec->ioBound); + + GuiSetProgress(wl->encPBar2, 100, 100); + + if(Closure->eccTarget == ECC_IMAGE) + { GuiSetLabelText(wl->encFootline, + _("Image has been augmented with error correction data.\n" + "New image size is %" PRId64 " MiB (%" PRId64 " sectors).\n"), + (lay->totalSectors)/512, + lay->totalSectors); } -#endif - -#ifndef WITH_CLI_ONLY_YES - if(Closure->guiMode) - { SetProgress(wl->encPBar2, 100, 100); - - if(Closure->eccTarget == ECC_IMAGE) - SetLabelText(GTK_LABEL(wl->encFootline), - _("Image has been augmented with error correction data.\n" - "New image size is %" PRId64 " MiB (%" PRId64 " sectors).\n"), - (lay->totalSectors)/512, - lay->totalSectors); - else - SetLabelText(GTK_LABEL(wl->encFootline), - _("The error correction file has been successfully created.\n" - "Make sure to keep this file on a reliable medium.")); - + else + { GuiSetLabelText(wl->encFootline, + _("The error correction file has been successfully created.\n" + "Make sure to keep this file on a reliable medium.")); } -#endif - + /*** Clean up */ ec->earlyTermination = FALSE; diff --git a/src/rs03-fix.c b/src/rs03-fix.c index 8dcf45a..33c26c6 100644 --- a/src/rs03-fix.c +++ b/src/rs03-fix.c @@ -20,6 +20,8 @@ * along with dvdisaster. If not, see . */ +/*** src type: some GUI code ***/ + #include "dvdisaster.h" #include "rs03-includes.h" @@ -30,10 +32,7 @@ ***/ typedef struct -{ -#ifndef WITH_CLI_ONLY_YES - RS03Widgets *wl; -#endif +{ RS03Widgets *wl; RS03Layout *lay; GaloisTables *gt; ReedSolomonTables *rt; @@ -49,16 +48,13 @@ static void fix_cleanup(gpointer data) UnregisterCleanup(); -#ifndef WITH_CLI_ONLY_YES - if(Closure->guiMode) - { if(fc->earlyTermination) - SwitchAndSetFootline(fc->wl->fixNotebook, 1, + if(fc->earlyTermination) + { GuiSwitchAndSetFootline(fc->wl->fixNotebook, 1, fc->wl->fixFootline, _("Aborted by unrecoverable error."), - Closure->redMarkup); - AllowActions(TRUE); + Closure->redMarkup); } -#endif + GuiAllowActions(TRUE); /** Clean up */ @@ -76,10 +72,7 @@ static void fix_cleanup(gpointer data) g_free(fc); -#ifndef WITH_CLI_ONLY_YES - if(Closure->guiMode) - g_thread_exit(0); -#endif + GuiExitWorkerThread(); } /* @@ -113,24 +106,14 @@ static void expand_image(Image *image, EccHeader *eh, gint64 new_size) percent = (100*sectors) / new_sectors; if(last_percent != percent) - { -#ifndef WITH_CLI_ONLY_YES - if(Closure->guiMode) - ; - else -#endif - PrintProgress(_("Expanding image: %3d%%"), percent); + { if(!Closure->guiMode) + PrintProgress(_("Expanding image: %3d%%"), percent); last_percent = percent; } } -#ifndef WITH_CLI_ONLY_YES - if(Closure->guiMode) - ; - else -#endif - { - PrintProgress(_("Expanding image: %3d%%"), 100); + if(!Closure->guiMode) + { PrintProgress(_("Expanding image: %3d%%"), 100); PrintProgress("\n"); } } @@ -140,11 +123,8 @@ static void expand_image(Image *image, EccHeader *eh, gint64 new_size) ***/ void RS03Fix(Image *image) -{ -#ifndef WITH_CLI_ONLY_YES - Method *self = FindMethod("RS03"); +{ Method *self = FindMethod("RS03"); RS03Widgets *wl = (RS03Widgets*)self->widgetList; -#endif RS03Layout *lay; fix_closure *fc = g_malloc0(sizeof(fix_closure)); EccHeader *eh; @@ -175,16 +155,13 @@ void RS03Fix(Image *image) gint64 damaged_eccsecs=0; gint64 expected_sectors; char *t=NULL; -#ifndef WITH_CLI_ONLY_YES +#ifdef WITH_GUI_YES char *msg; #endif - /*** Register the cleanup procedure for GUI mode */ fc->image = image; -#ifndef WITH_CLI_ONLY_YES fc->wl = wl; -#endif fc->earlyTermination = TRUE; RegisterCleanup(_("Repairing of image aborted"), fix_cleanup, fc); @@ -194,12 +171,9 @@ void RS03Fix(Image *image) /*** Open the image file */ -#ifndef WITH_CLI_ONLY_YES - if(Closure->guiMode) - SetLabelText(GTK_LABEL(wl->fixHeadline), - _("Repairing the image.\n%s"), - _("Opening files...")); -#endif + GuiSetLabelText(wl->fixHeadline, + _("Repairing the image.\n%s"), + _("Opening files...")); /* Calculate the layout and optinally open thee ecc file */ @@ -237,7 +211,7 @@ void RS03Fix(Image *image) /*** Announce what we are going to do */ -#ifndef WITH_CLI_ONLY_YES +#ifdef WITH_GUI_YES if(Closure->guiMode) { if(eh->methodFlags[0] & MFLAG_ECC_FILE) msg = g_strdup_printf(_("Error correction file using Method RS03, %d roots, %4.1f%% redundancy."), @@ -248,13 +222,13 @@ void RS03Fix(Image *image) eh->eccBytes, ((double)eh->eccBytes*100.0)/(double)eh->dataBytes); - SetLabelText(GTK_LABEL(wl->fixHeadline), - _("Repairing the image.\n%s"), msg); + GuiSetLabelText(wl->fixHeadline, + _("Repairing the image.\n%s"), msg); RS03SetFixMaxValues(wl, eh->dataBytes, eh->eccBytes, expected_sectors); g_free(msg); } -#endif - +#endif /* WITH_GUI_YES */ + PrintLog(_("\nFix mode(%s): Repairable sectors will be fixed in the image.\n"), eh->methodFlags[0] & MFLAG_ECC_FILE ? "RS03f" : "RS03i"); @@ -264,30 +238,26 @@ void RS03Fix(Image *image) { int difference = image->inLast - eh->inLast; guint64 expected_image_size = 2048*(expected_sectors-1)+eh->inLast; -#ifndef WITH_CLI_ONLY_YES +#ifdef WITH_GUI_YES if(Closure->guiMode) - { int answer = ModalDialog(GTK_MESSAGE_QUESTION, GTK_BUTTONS_OK_CANCEL, NULL, - _("The image file is %d bytes longer than noted\n" - "in the ecc file. Shall the superfluous bytes\n" - "be removed from the image file?\n"), - difference); + { int answer = GuiModalDialog(GTK_MESSAGE_QUESTION, GTK_BUTTONS_OK_CANCEL, NULL, + _("The image file is %d bytes longer than noted\n" + "in the ecc file. Shall the superfluous bytes\n" + "be removed from the image file?\n"), + difference); if(!answer) - { SwitchAndSetFootline(fc->wl->fixNotebook, 1, - fc->wl->fixFootline, - _("Aborted by user request!"), - Closure->redMarkup); + { GuiSwitchAndSetFootline(fc->wl->fixNotebook, 1, + fc->wl->fixFootline, + _("Aborted by user request!"), + Closure->redMarkup); fc->earlyTermination = FALSE; /* suppress respective error message */ goto terminate; } } -#endif - -#ifndef WITH_CLI_ONLY_YES +#endif /* WITH_GUI_YES */ + if(!Closure->guiMode && !Closure->truncate) -#else - if(!Closure->truncate) -#endif Stop(_("The image file is %d bytes longer than noted\n" "in the ecc file.\n" "Add the --truncate option to the program call\n" @@ -313,20 +283,17 @@ void RS03Fix(Image *image) if(diff>0 && diff<=2) { int answer; - answer = ModalWarningOrCLI(GTK_MESSAGE_QUESTION, GTK_BUTTONS_OK_CANCEL, NULL, + answer = ModalWarning(GTK_MESSAGE_QUESTION, GTK_BUTTONS_OK_CANCEL, NULL, _("Image file is %" PRId64 " sectors longer than expected.\n" "Assuming this is a TAO mode medium.\n" "%" PRId64 " sectors will be removed from the image end.\n"), diff, diff); if(!answer) - { -#ifndef WITH_CLI_ONLY_YES - SwitchAndSetFootline(fc->wl->fixNotebook, 1, - fc->wl->fixFootline, - _("Aborted by user request!"), - Closure->redMarkup); -#endif + { GuiSwitchAndSetFootline(fc->wl->fixNotebook, 1, + fc->wl->fixFootline, + _("Aborted by user request!"), + Closure->redMarkup); fc->earlyTermination = FALSE; /* suppress respective error message */ goto terminate; } @@ -336,19 +303,19 @@ void RS03Fix(Image *image) if(!LargeTruncate(image->file, (gint64)expected_image_size)) Stop(_("Could not truncate %s: %s\n"),Closure->imageName,strerror(errno)); } - -#ifndef WITH_CLI_ONLY_YES + +#ifdef WITH_GUI_YES if(diff>2 && Closure->guiMode) - { int answer = ModalDialog(GTK_MESSAGE_QUESTION, GTK_BUTTONS_OK_CANCEL, NULL, - trans, - diff, - _("Is it okay to remove the superfluous sectors?")); + { int answer = GuiModalDialog(GTK_MESSAGE_QUESTION, GTK_BUTTONS_OK_CANCEL, NULL, + trans, + diff, + _("Is it okay to remove the superfluous sectors?")); if(!answer) - { SwitchAndSetFootline(fc->wl->fixNotebook, 1, - fc->wl->fixFootline, - _("Aborted by user request!"), - Closure->redMarkup); + { GuiSwitchAndSetFootline(fc->wl->fixNotebook, 1, + fc->wl->fixFootline, + _("Aborted by user request!"), + Closure->redMarkup); fc->earlyTermination = FALSE; /* suppress respective error message */ goto terminate; } @@ -360,13 +327,9 @@ void RS03Fix(Image *image) PrintLog(_("Image has been truncated by %" PRId64 " sectors.\n"), diff); } -#endif - -#ifndef WITH_CLI_ONLY_YES +#endif /* WITH_GUI_YES */ + if(diff>2 && !Closure->guiMode) -#else - if(diff>2) -#endif { if(!Closure->truncate) Stop(trans, diff, @@ -421,17 +384,16 @@ void RS03Fix(Image *image) /* See if user hit the Stop button */ -#ifndef WITH_CLI_ONLY_YES if(Closure->stopActions) { if(Closure->stopActions == STOP_CURRENT_ACTION) /* suppress memleak warning when closing window */ - SwitchAndSetFootline(fc->wl->fixNotebook, 1, - fc->wl->fixFootline, - _("Aborted by user request!"), - Closure->redMarkup); + { GuiSwitchAndSetFootline(fc->wl->fixNotebook, 1, + fc->wl->fixFootline, + _("Aborted by user request!"), + Closure->redMarkup); + } fc->earlyTermination = FALSE; /* suppress respective error message */ goto terminate; } -#endif /* Fill cache with the next batch of cache_size ecc blocks. */ @@ -550,10 +512,7 @@ void RS03Fix(Image *image) /* Trivially reject uncorrectable ecc block */ if(erasure_count>lay->nroots) /* uncorrectable */ - { -#ifndef WITH_CLI_ONLY_YES - if(!Closure->guiMode) -#endif + { if(!Closure->guiMode) { int sep_printed = 0; PrintCLI(_("* Ecc block %" PRId64 ": %3d unrepairable sectors: "), s, erasure_count); @@ -876,10 +835,10 @@ void RS03Fix(Image *image) if we were processing an augmented image. */ if(lay->target == ECC_FILE && i >= ndata-1) - { - if(!LargeSeek(image->eccFile, (gint64)(2048*sec))) - Stop(_("Failed seeking to sector %" PRId64 " in ecc file [%s]: %s"), - sec, "FW", strerror(errno)); + { + if(!LargeSeek(image->eccFile, (gint64)(2048*sec))) + Stop(_("Failed seeking to sector %" PRId64 " in ecc file [%s]: %s"), + sec, "FW", strerror(errno)); n = LargeWrite(image->eccFile, cache_offset+fc->imgBlock[i], 2048); if(n != 2048) @@ -913,7 +872,7 @@ skip: if(last_percent != percent) { -#ifndef WITH_CLI_ONLY_YES +#ifdef WITH_GUI_YES if(Closure->guiMode) { RS03AddFixValues(wl, percent, local_plot_max); @@ -924,7 +883,7 @@ skip: } else #endif - PrintProgress(_("Ecc progress: %3d.%1d%%"),percent/10,percent%10); + PrintProgress(_("Ecc progress: %3d.%1d%%"),percent/10,percent%10); last_percent = percent; } @@ -938,17 +897,16 @@ skip: PrintProgress(_("Ecc progress: 100.0%%\n")); - if(corrected > 0) PrintLog(_("Repaired sectors: %" PRId64 " (%" PRId64 " data, %" PRId64 " ecc)\n"), - corrected, data_corr, ecc_corr); + if(corrected > 0) + { PrintLog(_("Repaired sectors: %" PRId64 " (%" PRId64 " data, %" PRId64 " ecc)\n"), + corrected, data_corr, ecc_corr); + } if(uncorrected > 0) { PrintLog(_("Unrepaired sectors: %" PRId64 "\n"), uncorrected); -#ifndef WITH_CLI_ONLY_YES - if(Closure->guiMode) - SwitchAndSetFootline(wl->fixNotebook, 1, wl->fixFootline, - _("Image sectors could not be fully restored " - "(%" PRId64 " repaired; %" PRId64 " unrepaired)"), - corrected, Closure->redMarkup, uncorrected); -#endif + GuiSwitchAndSetFootline(wl->fixNotebook, 1, wl->fixFootline, + _("Image sectors could not be fully restored " + "(%" PRId64 " repaired; %" PRId64 " unrepaired)"), + corrected, Closure->redMarkup, uncorrected); exitCode = 2; } else @@ -967,12 +925,11 @@ skip: PrintLog(_("Erasure counts per ecc block: avg = %.1f; worst = %d.\n"), (double)damaged_sectors/(double)damaged_eccsecs,worst_ecc); -#ifndef WITH_CLI_ONLY_YES - if(Closure->guiMode && t) - SwitchAndSetFootline(wl->fixNotebook, 1, wl->fixFootline, - "%s %s", _("Repair results:"), t); -#endif - + if(t) + { GuiSwitchAndSetFootline(wl->fixNotebook, 1, wl->fixFootline, + "%s %s", _("Repair results:"), t); + } + Verbose("\nSummary of processed sectors:\n"); Verbose("%" PRId64 " damaged sectors\n", damaged_sectors); Verbose("%" PRId64 " CRC errors\n", crc_errors); diff --git a/src/rs03-includes.h b/src/rs03-includes.h index f5b282f..37c316d 100644 --- a/src/rs03-includes.h +++ b/src/rs03-includes.h @@ -23,7 +23,6 @@ #ifndef RS03INCLUDES_H #define RS03INCLUDES_H -#ifndef WITH_CLI_ONLY_YES /* Data structs from rs03-window.c */ typedef struct @@ -118,7 +117,6 @@ typedef struct int dataBytes; int percent, lastPercent; } RS03Widgets; -#endif /* * local working closure for internal checksums @@ -133,7 +131,6 @@ typedef struct * These are exported via the Method struct */ -#ifndef WITH_CLI_ONLY_YES void CreateRS03EncWindow(Method*, GtkWidget*); void CreateRS03FixWindow(Method*, GtkWidget*); void CreateRS03PrefsPage(Method*, GtkWidget*); @@ -144,7 +141,6 @@ void ReadRS03Preferences(Method*); void ResetRS03VerifyWindow(Method*); void CreateRS03VerifyWindow(Method*, GtkWidget*); -#endif /* * These are exported (resp. only used) in ecc-rs03.c and rs03*.c @@ -200,13 +196,11 @@ void RS03Fix(Image*); int RS03RecognizeFile(LargeFile*, EccHeader**); int RS03RecognizeImage(Image*); -#ifndef WITH_CLI_ONLY_YES /* rs03-window.c */ void RS03AddFixValues(RS03Widgets*, int, int); void RS03SetFixMaxValues(RS03Widgets*, int, int, gint64); void RS03UpdateFixResults(RS03Widgets*, gint64, gint64); -#endif /* rs03-verify.c */ @@ -217,9 +211,7 @@ void RS03Verify(Image*); /* temporary single threaded versions */ void RS03SCreate(void); -#ifndef WITH_CLI_ONLY_YES void CreateRS03SEncWindow(Method*, GtkWidget*); void ResetRS03SEncWindow(Method*); -#endif #endif diff --git a/src/rs03-preferences.c b/src/rs03-preferences.c index a3f9292..8c3e556 100644 --- a/src/rs03-preferences.c +++ b/src/rs03-preferences.c @@ -19,8 +19,10 @@ * You should have received a copy of the GNU General Public License * along with dvdisaster. If not, see . */ -// DVDISASTER_GUI_FILE +/*** src type: only GUI code ***/ + +#ifdef WITH_GUI_YES #include "dvdisaster.h" #include "rs03-includes.h" @@ -201,7 +203,7 @@ static void nroots_cb(GtkWidget *widget, gpointer data) set_range_value(GTK_RANGE(wl->redundancyScaleB), value); else set_range_value(GTK_RANGE(wl->redundancyScaleA), value); - UpdateMethodPreferences(); + GuiUpdateMethodPreferences(); } static void ecc_size_cb(GtkWidget *widget, gpointer data) @@ -216,7 +218,7 @@ static void ecc_size_cb(GtkWidget *widget, gpointer data) gtk_spin_button_set_value(GTK_SPIN_BUTTON(wl->redundancySpinB), atoi(Closure->redundancy)); else gtk_spin_button_set_value(GTK_SPIN_BUTTON(wl->redundancySpinA), atoi(Closure->redundancy)); - UpdateMethodPreferences(); + GuiUpdateMethodPreferences(); } static void toggle_cb(GtkWidget *widget, gpointer data) @@ -295,7 +297,7 @@ static void toggle_cb(GtkWidget *widget, gpointer data) Closure->redundancy = g_strdup_printf("%dm", space); } - UpdateMethodPreferences(); + GuiUpdateMethodPreferences(); } } @@ -346,8 +348,8 @@ static void prefetch_cb(GtkWidget *widget, gpointer data) utf = g_locale_to_utf8(text, -1, NULL, NULL, NULL); gtk_label_set_markup(GTK_LABEL(lwoh->normalLabel), utf); gtk_label_set_markup(GTK_LABEL(lwoh->linkLabel), utf); - SetOnlineHelpLinkText(lwoh, text); - UpdateMethodPreferences(); + GuiSetOnlineHelpLinkText(lwoh, text); + GuiUpdateMethodPreferences(); g_free(text); g_free(utf); } @@ -365,8 +367,8 @@ static void threads_cb(GtkWidget *widget, gpointer data) utf = g_locale_to_utf8(text, -1, NULL, NULL, NULL); gtk_label_set_markup(GTK_LABEL(lwoh->normalLabel), utf); gtk_label_set_markup(GTK_LABEL(lwoh->linkLabel), utf); - SetOnlineHelpLinkText(lwoh, text); - UpdateMethodPreferences(); + GuiSetOnlineHelpLinkText(lwoh, text); + GuiUpdateMethodPreferences(); g_free(text); g_free(utf); } @@ -491,9 +493,9 @@ void CreateRS03PrefsPage(Method *method, GtkWidget *parent) gtk_container_set_border_width(GTK_CONTAINER(vbox), 10); gtk_container_add(GTK_CONTAINER(frame), vbox); - lwoh = CreateLabelWithOnlineHelp(_("Error correction data storage"), - _("Store ECC data in: ")); - RegisterPreferencesHelpWindow(lwoh); + lwoh = GuiCreateLabelWithOnlineHelp(_("Error correction data storage"), + _("Store ECC data in: ")); + GuiRegisterPreferencesHelpWindow(lwoh); for(i=0; i<2; i++) { GtkWidget *hbox = gtk_hbox_new(FALSE, 4); @@ -527,31 +529,31 @@ void CreateRS03PrefsPage(Method *method, GtkWidget *parent) else { wl->eccFileB = radio1; wl->eccImageB = radio2; - AddHelpWidget(lwoh, hbox); + GuiAddHelpWidget(lwoh, hbox); } } - AddHelpParagraph(lwoh, - _("Error correction data storage\n\n" - "Select between two ways of storing the " - "error correction information:\n")); + GuiAddHelpParagraph(lwoh, + _("Error correction data storage\n\n" + "Select between two ways of storing the " + "error correction information:\n")); - AddHelpListItem(lwoh, _("Augmented image (recommended)\n" - "The error correction data will be stored along with the user data on the " - "same medium. This requires the creation of an image file prior to writing the " - "medium. The error correction data will be appended to that image " - "and fill up the remaining space.\n" - "Damaged sectors in the error correction " - "information reduce the data recovery capacity, but do not make recovery " - "impossible - a second medium for keeping or protecting the error correction " - "information is not required.\n")); + GuiAddHelpListItem(lwoh, _("Augmented image (recommended)\n" + "The error correction data will be stored along with the user data on the " + "same medium. This requires the creation of an image file prior to writing the " + "medium. The error correction data will be appended to that image " + "and fill up the remaining space.\n" + "Damaged sectors in the error correction " + "information reduce the data recovery capacity, but do not make recovery " + "impossible - a second medium for keeping or protecting the error correction " + "information is not required.\n")); - AddHelpListItem(lwoh, _("Error correction file\n" - "Error correction files are the only way of protecting existing media " - "as they can be stored somewhere else. They are kept on a separate " - "medium which must also be protected by dvdisaster. This prevents from losing the " - "error correction files in case of a medium defect.\n")); + GuiAddHelpListItem(lwoh, _("Error correction file\n" + "Error correction files are the only way of protecting existing media " + "as they can be stored somewhere else. They are kept on a separate " + "medium which must also be protected by dvdisaster. This prevents from losing the " + "error correction files in case of a medium defect.\n")); /*** Redundancy selection */ @@ -582,8 +584,8 @@ void CreateRS03PrefsPage(Method *method, GtkWidget *parent) /* Normal redundancy */ - lwoh = CreateLabelWithOnlineHelp(_("Normal redundancy"), _("Normal")); - RegisterPreferencesHelpWindow(lwoh); + lwoh = GuiCreateLabelWithOnlineHelp(_("Normal redundancy"), _("Normal")); + GuiRegisterPreferencesHelpWindow(lwoh); for(i=0; i<2; i++) { GtkWidget *hbox = gtk_hbox_new(FALSE, 4); @@ -602,19 +604,19 @@ void CreateRS03PrefsPage(Method *method, GtkWidget *parent) { wl->radio1B = radio; gtk_box_pack_start(GTK_BOX(hbox), lwoh->normalLabel, FALSE, FALSE, 0); if (!i) gtk_box_pack_start(GTK_BOX(hbox), lwoh->tooltip, FALSE, FALSE, 0); - AddHelpWidget(lwoh, hbox); + GuiAddHelpWidget(lwoh, hbox); } } - AddHelpParagraph(lwoh, _("Normal redundancy\n\n" - "The preset \"normal\" creates a redundancy of 14.3%%.\n" - "It invokes optimized program code to speed up the " - "error correction file creation.")); + GuiAddHelpParagraph(lwoh, _("Normal redundancy\n\n" + "The preset \"normal\" creates a redundancy of 14.3%%.\n" + "It invokes optimized program code to speed up the " + "error correction file creation.")); /* High redundancy */ - lwoh = CreateLabelWithOnlineHelp(_("High redundancy"), _("High")); - RegisterPreferencesHelpWindow(lwoh); + lwoh = GuiCreateLabelWithOnlineHelp(_("High redundancy"), _("High")); + GuiRegisterPreferencesHelpWindow(lwoh); for(i=0; i<2; i++) { GtkWidget *hbox = gtk_hbox_new(FALSE, 4); @@ -632,20 +634,19 @@ void CreateRS03PrefsPage(Method *method, GtkWidget *parent) else { wl->radio2B = radio; gtk_box_pack_start(GTK_BOX(hbox), lwoh->normalLabel, FALSE, FALSE, 0); - AddHelpWidget(lwoh, hbox); + GuiAddHelpWidget(lwoh, hbox); } } - AddHelpParagraph(lwoh, _("High redundancy\n\n" - "The preset \"high\" creates a redundancy of 33.5%%.\n" - "It invokes optimized program code to speed up the " - "error correction file creation.")); - + GuiAddHelpParagraph(lwoh, _("High redundancy\n\n" + "The preset \"high\" creates a redundancy of 33.5%%.\n" + "It invokes optimized program code to speed up the " + "error correction file creation.")); /* User-selected redundancy */ - lwoh = CreateLabelWithOnlineHelp(_("Other redundancy"), _("Other")); - RegisterPreferencesHelpWindow(lwoh); + lwoh = GuiCreateLabelWithOnlineHelp(_("Other redundancy"), _("Other")); + GuiRegisterPreferencesHelpWindow(lwoh); for(i=0; i<2; i++) { hbox = gtk_hbox_new(FALSE, 4); @@ -679,20 +680,21 @@ void CreateRS03PrefsPage(Method *method, GtkWidget *parent) } else { wl->redundancyScaleB = scale; - AddHelpWidget(lwoh, hbox); + GuiAddHelpWidget(lwoh, hbox); } } - AddHelpParagraph(lwoh, _("Other redundancy\n\n" - "Specifies the redundancy by percent.\n" - "An error correction file with x%% redundancy " - "will be approximately x%% of the size of the " - "corresponding image file.")); + GuiAddHelpParagraph(lwoh, _("Other redundancy\n\n" + "Specifies the redundancy by percent.\n" + "An error correction file with x%% redundancy " + "will be approximately x%% of the size of the " + "corresponding image file.")); /* Space-delimited redundancy */ - lwoh = CreateLabelWithOnlineHelp(_("Space-delimited redundancy"), _("Use at most")); - RegisterPreferencesHelpWindow(lwoh); + lwoh = GuiCreateLabelWithOnlineHelp(_("Space-delimited redundancy"), + _("Use at most")); + GuiRegisterPreferencesHelpWindow(lwoh); for(i=0; i<2; i++) { hbox = gtk_hbox_new(FALSE, 4); @@ -729,18 +731,18 @@ void CreateRS03PrefsPage(Method *method, GtkWidget *parent) else { wl->redundancySpinB = spin; wl->radio4LabelB = lab; - AddHelpWidget(lwoh, hbox); + GuiAddHelpWidget(lwoh, hbox); } } - AddHelpParagraph(lwoh, _("Space-delimited redundancy\n\n" - "Specifies the maximum size of the error correction file in MiB. " - "dvdisaster will choose a suitable redundancy setting so that " - "the overall size of the error correction file does not exceed " - "the given limit.\n\n" - "Advance notice: When using the same size setting for " - "images of vastly different size, smaller images receive more " - "redundancy than larger ones. This is usually not what you want.")); + GuiAddHelpParagraph(lwoh, _("Space-delimited redundancy\n\n" + "Specifies the maximum size of the error correction file in MiB. " + "dvdisaster will choose a suitable redundancy setting so that " + "the overall size of the error correction file does not exceed " + "the given limit.\n\n" + "Advance notice: When using the same size setting for " + "images of vastly different size, smaller images receive more " + "redundancy than larger ones. This is usually not what you want.")); /* Preset redundancy values FIXME: replace by ResetRS03Prefs()? */ @@ -786,13 +788,13 @@ void CreateRS03PrefsPage(Method *method, GtkWidget *parent) gtk_container_add(GTK_CONTAINER(frame), vbox); text = g_strdup_printf(_("%d sectors"), Closure->prefetchSectors); - lwoh = CreateLabelWithOnlineHelp(_("Sector preloading"), text); - RegisterPreferencesHelpWindow(lwoh); + lwoh = GuiCreateLabelWithOnlineHelp(_("Sector preloading"), text); + GuiRegisterPreferencesHelpWindow(lwoh); g_free(text); wl->prefetchLwoh = lwoh; - LockLabelSize(GTK_LABEL(lwoh->normalLabel), _utf("%d sectors"), 2222); - LockLabelSize(GTK_LABEL(lwoh->linkLabel), _utf("%d sectors"), 2222); + GuiLockLabelSize(lwoh->normalLabel, _utf("%d sectors"), 2222); + GuiLockLabelSize(lwoh->linkLabel, _utf("%d sectors"), 2222); for(i=0; i<2; i++) { GtkWidget *hbox = gtk_hbox_new(FALSE, 4); @@ -822,25 +824,25 @@ void CreateRS03PrefsPage(Method *method, GtkWidget *parent) else { wl->prefetchScaleB = scale; gtk_box_pack_start(GTK_BOX(hbox), lwoh->normalLabel, FALSE, FALSE, 0); - AddHelpWidget(lwoh, hbox); + GuiAddHelpWidget(lwoh, hbox); } } - AddHelpParagraph(lwoh, _("Sector preloading\n\n" - "dvdisaster optimizes access to the image and error correction " - "data by preloading and caching parts of them.\n\n" - "The optimal preload value depends on the storage system " - "used for the image and error correction files.\n" - "Use small preload values for systems with low latency " - "and seek time, e.g. SSDs. For magnetic hard disks " - "performance may be better using larger preload values.\n\n" - "A preload value of n will used approx. n MiB of RAM.")); + GuiAddHelpParagraph(lwoh, _("Sector preloading\n\n" + "dvdisaster optimizes access to the image and error correction " + "data by preloading and caching parts of them.\n\n" + "The optimal preload value depends on the storage system " + "used for the image and error correction files.\n" + "Use small preload values for systems with low latency " + "and seek time, e.g. SSDs. For magnetic hard disks " + "performance may be better using larger preload values.\n\n" + "A preload value of n will used approx. n MiB of RAM.")); /*** IO strategy */ - lwoh = CreateLabelWithOnlineHelp(_("I/O strategy"), - _("I/O strategy: ")); - RegisterPreferencesHelpWindow(lwoh); + lwoh = GuiCreateLabelWithOnlineHelp(_("I/O strategy"), + _("I/O strategy: ")); + GuiRegisterPreferencesHelpWindow(lwoh); for(i=0; i<2; i++) { GtkWidget *hbox = gtk_hbox_new(FALSE, 4); @@ -874,11 +876,11 @@ void CreateRS03PrefsPage(Method *method, GtkWidget *parent) else { wl->ioRadio1B = radio1; wl->ioRadio2B = radio2; - AddHelpWidget(lwoh, hbox); + GuiAddHelpWidget(lwoh, hbox); } } - AddHelpParagraph(lwoh, _("I/O strategy\n\n" + GuiAddHelpParagraph(lwoh, _("I/O strategy\n\n" "This option controls how dvdisaster performs its disk I/O while creating error " "correction data. Try both options and see which performs best on your hardware " "setting.\n\n" @@ -902,13 +904,13 @@ void CreateRS03PrefsPage(Method *method, GtkWidget *parent) gtk_box_pack_start(GTK_BOX(parent), frame, FALSE, FALSE, 0); text = g_strdup_printf(_("%d threads"), Closure->codecThreads); - lwoh = CreateLabelWithOnlineHelp(_("Multithreading"), text); - RegisterPreferencesHelpWindow(lwoh); + lwoh = GuiCreateLabelWithOnlineHelp(_("Multithreading"), text); + GuiRegisterPreferencesHelpWindow(lwoh); g_free(text); wl->threadsLwoh = lwoh; - LockLabelSize(GTK_LABEL(lwoh->normalLabel), _utf("%d threads"), 22); - LockLabelSize(GTK_LABEL(lwoh->linkLabel), _utf("%d threads"), 22); + GuiLockLabelSize(lwoh->normalLabel, _utf("%d threads"), 22); + GuiLockLabelSize(lwoh->linkLabel, _utf("%d threads"), 22); for(i=0; i<2; i++) { GtkWidget *hbox = gtk_hbox_new(FALSE, 4); @@ -939,22 +941,22 @@ void CreateRS03PrefsPage(Method *method, GtkWidget *parent) else { wl->threadsScaleB = scale; gtk_box_pack_start(GTK_BOX(hbox), lwoh->normalLabel, FALSE, FALSE, 0); - AddHelpWidget(lwoh, hbox); + GuiAddHelpWidget(lwoh, hbox); } } - AddHelpParagraph(lwoh, _("Multithreading\n\n" - "RS03 can use multiple threads (and therefore CPU cores)" - "for encoding.\n" - "For systems with 4 cores or less, set the number of " - "threads to the number of cores. If you have more cores, " - "leave one unused for doing I/O and graphics updates.\n" - "E.g. use 7 threads on an 8 core system.\n\n" - "Performance will not scale linearly " - "with the number of CPU cores. Hard disk performance " - "is more limiting than raw CPU power. When using " - "4 cores or more, memory bandwidth may also affect " - "performance.")); + GuiAddHelpParagraph(lwoh, _("Multithreading\n\n" + "RS03 can use multiple threads (and therefore CPU cores)" + "for encoding.\n" + "For systems with 4 cores or less, set the number of " + "threads to the number of cores. If you have more cores, " + "leave one unused for doing I/O and graphics updates.\n" + "E.g. use 7 threads on an 8 core system.\n\n" + "Performance will not scale linearly " + "with the number of CPU cores. Hard disk performance " + "is more limiting than raw CPU power. When using " + "4 cores or more, memory bandwidth may also affect " + "performance.")); /*** Codec type */ @@ -965,9 +967,9 @@ void CreateRS03PrefsPage(Method *method, GtkWidget *parent) gtk_container_set_border_width(GTK_CONTAINER(vbox), 10); gtk_container_add(GTK_CONTAINER(frame), vbox); - lwoh = CreateLabelWithOnlineHelp(_("Encoding algorithm"), - _("Use: ")); - RegisterPreferencesHelpWindow(lwoh); + lwoh = GuiCreateLabelWithOnlineHelp(_("Encoding algorithm"), + _("Use: ")); + GuiRegisterPreferencesHelpWindow(lwoh); for(i=0; i<2; i++) { GtkWidget *hbox = gtk_hbox_new(FALSE, 4); @@ -1029,11 +1031,11 @@ void CreateRS03PrefsPage(Method *method, GtkWidget *parent) wl->eaRadio2B = radio2; wl->eaRadio3B = radio3; wl->eaRadio4B = radio4; - AddHelpWidget(lwoh, hbox); + GuiAddHelpWidget(lwoh, hbox); } } - AddHelpParagraph(lwoh, _("Encoding algorithm\n\n" + GuiAddHelpParagraph(lwoh, _("Encoding algorithm\n\n" "This option affects the speed of generating RS03 error correction data.\n" "dvdisaster can either use a generic encoding algorithm using 32bit or 64bit " "wide operations running on the integer unit of the processor, or use " @@ -1045,3 +1047,4 @@ void CreateRS03PrefsPage(Method *method, GtkWidget *parent) "otherwise the 64bit algorithm will be used." )); } +#endif /* WITH_GUI_YES */ diff --git a/src/rs03-recognize.c b/src/rs03-recognize.c index 58c5697..4b4a17c 100644 --- a/src/rs03-recognize.c +++ b/src/rs03-recognize.c @@ -20,6 +20,8 @@ * along with dvdisaster. If not, see . */ +/*** src type: no GUI code ***/ + #include "dvdisaster.h" #include "udf.h" diff --git a/src/rs03-verify.c b/src/rs03-verify.c index 05b6569..a11fa72 100644 --- a/src/rs03-verify.c +++ b/src/rs03-verify.c @@ -20,6 +20,8 @@ * along with dvdisaster. If not, see . */ +/*** src type: some GUI code ***/ + #include "dvdisaster.h" #include "rs03-includes.h" @@ -32,41 +34,42 @@ #define EXIT_CODE_CHECKSUM_ERROR 12 #define EXIT_CODE_SYNDROME_ERROR 13 +#ifdef WITH_GUI_YES + /*** *** Reset the verify output window ***/ -#ifndef WITH_CLI_ONLY_YES void ResetRS03VerifyWindow(Method *self) { RS03Widgets *wl = (RS03Widgets*)self->widgetList; - SetLabelText(GTK_LABEL(wl->cmpImageSectors), ""); - SetLabelText(GTK_LABEL(wl->cmpImageMd5Sum), ""); - SetLabelText(GTK_LABEL(wl->cmpDataSection), ""); - SetLabelText(GTK_LABEL(wl->cmpCrcSection), ""); - SetLabelText(GTK_LABEL(wl->cmpEccSection), ""); - SetLabelText(GTK_LABEL(wl->cmpImageErasure), ""); - SetLabelText(GTK_LABEL(wl->cmpImagePrognosis), ""); - SetLabelText(GTK_LABEL(wl->cmpImageErasureCnt), ""); - SetLabelText(GTK_LABEL(wl->cmpImagePrognosisMsg), ""); - SetLabelText(GTK_LABEL(wl->cmpImageResult), ""); - SwitchAndSetFootline(wl->cmpImageNotebook, 1, NULL, NULL); + GuiSetLabelText(wl->cmpImageSectors, ""); + GuiSetLabelText(wl->cmpImageMd5Sum, ""); + GuiSetLabelText(wl->cmpDataSection, ""); + GuiSetLabelText(wl->cmpCrcSection, ""); + GuiSetLabelText(wl->cmpEccSection, ""); + GuiSetLabelText(wl->cmpImageErasure, ""); + GuiSetLabelText(wl->cmpImagePrognosis, ""); + GuiSetLabelText(wl->cmpImageErasureCnt, ""); + GuiSetLabelText(wl->cmpImagePrognosisMsg, ""); + GuiSetLabelText(wl->cmpImageResult, ""); + GuiSwitchAndSetFootline(wl->cmpImageNotebook, 1, NULL, NULL); - SetLabelText(GTK_LABEL(wl->cmpEccCreatedBy), "dvdisaster"); - SetLabelText(GTK_LABEL(wl->cmpEccMethod), ""); - SetLabelText(GTK_LABEL(wl->cmpEccType), ""); - SetLabelText(GTK_LABEL(wl->cmpEccRequires), ""); - SetLabelText(GTK_LABEL(wl->cmpEccDataCrc), _("Data checksum:")); - SetLabelText(GTK_LABEL(wl->cmpEccDataCrcVal), ""); - SetLabelText(GTK_LABEL(wl->cmpEccFingerprint), _("n/a")); - SetLabelText(GTK_LABEL(wl->cmpEccResult), ""); - SetLabelText(GTK_LABEL(wl->cmpEccSynLabel), ""); - SetLabelText(GTK_LABEL(wl->cmpEccSyndromes), ""); + GuiSetLabelText(wl->cmpEccCreatedBy, "dvdisaster"); + GuiSetLabelText(wl->cmpEccMethod, ""); + GuiSetLabelText(wl->cmpEccType, ""); + GuiSetLabelText(wl->cmpEccRequires, ""); + GuiSetLabelText(wl->cmpEccDataCrc, _("Data checksum:")); + GuiSetLabelText(wl->cmpEccDataCrcVal, ""); + GuiSetLabelText(wl->cmpEccFingerprint, _("n/a")); + GuiSetLabelText(wl->cmpEccResult, ""); + GuiSetLabelText(wl->cmpEccSynLabel, ""); + GuiSetLabelText(wl->cmpEccSyndromes, ""); wl->lastPercent = 0; - FillSpiral(wl->cmpSpiral, Closure->background); - DrawSpiral(wl->cmpSpiral); + GuiFillSpiral(wl->cmpSpiral, Closure->background); + GuiDrawSpiral(wl->cmpSpiral); } /*** @@ -88,7 +91,7 @@ static gboolean spiral_idle_func(gpointer data) int i; for(i=sii->from; i<=sii->to; i++) - DrawSpiralSegment(sii->cmpSpiral, sii->segColor, i-1); + GuiDrawSpiralSegment(sii->cmpSpiral, sii->segColor, i-1); g_free(sii); return FALSE; @@ -123,16 +126,16 @@ static void add_verify_values(Method *method, int percent, static void redraw_spiral(RS03Widgets *wl) { int x = wl->cmpSpiral->mx - wl->cmpSpiral->diameter/2 + 10; - DrawSpiralLabel(wl->cmpSpiral, wl->cmpLayout, - _("Good sectors"), Closure->greenSector, x, 1); + GuiDrawSpiralLabel(wl->cmpSpiral, wl->cmpLayout, + _("Good sectors"), Closure->greenSector, x, 1); - DrawSpiralLabel(wl->cmpSpiral, wl->cmpLayout, - _("Sectors with CRC errors"), Closure->yellowSector, x, 2); + GuiDrawSpiralLabel(wl->cmpSpiral, wl->cmpLayout, + _("Sectors with CRC errors"), Closure->yellowSector, x, 2); - DrawSpiralLabel(wl->cmpSpiral, wl->cmpLayout, - _("Missing sectors"), Closure->redSector, x, 3); + GuiDrawSpiralLabel(wl->cmpSpiral, wl->cmpLayout, + _("Missing sectors"), Closure->redSector, x, 3); - DrawSpiral(wl->cmpSpiral); + GuiDrawSpiral(wl->cmpSpiral); } /* @@ -147,11 +150,11 @@ static gboolean expose_cb(GtkWidget *widget, GdkEventExpose *event, gpointer dat /* Finish spiral initialization */ if(!wl->cmpLayout) - { SetSpiralWidget(wl->cmpSpiral, widget); + { GuiSetSpiralWidget(wl->cmpSpiral, widget); wl->cmpLayout = gtk_widget_create_pango_layout(widget, NULL); } - SetText(wl->cmpLayout, _("Missing sectors"), &w, &h); + GuiSetText(wl->cmpLayout, _("Missing sectors"), &w, &h); size = wl->cmpSpiral->diameter + 20 + 3*(10+h); /* approx. size of spiral + labels */ wl->cmpSpiral->mx = a->width / 2; @@ -201,7 +204,7 @@ void CreateRS03VerifyWindow(Method *self, GtkWidget *parent) lab = gtk_label_new(NULL); gtk_misc_set_alignment(GTK_MISC(lab), 0.0, 0.0); - SetLabelText(GTK_LABEL(lab), _("Type:")); + GuiSetLabelText(lab, _("Type:")); gtk_table_attach(GTK_TABLE(table2), lab, 0, 1, y1, y2, GTK_SHRINK | GTK_FILL, GTK_SHRINK, 5, 2 ); lab = wl->cmpEccType = gtk_label_new(NULL); gtk_misc_set_alignment(GTK_MISC(lab), 0.0, 0.0); @@ -210,7 +213,7 @@ void CreateRS03VerifyWindow(Method *self, GtkWidget *parent) lab = gtk_label_new(NULL); gtk_misc_set_alignment(GTK_MISC(lab), 0.0, 0.0); - SetLabelText(GTK_LABEL(lab), _("Method:")); + GuiSetLabelText(lab, _("Method:")); gtk_table_attach(GTK_TABLE(table2), lab, 0, 1, y1, y2, GTK_SHRINK | GTK_FILL, GTK_SHRINK, 5, 2 ); lab = wl->cmpEccMethod = gtk_label_new(NULL); gtk_misc_set_alignment(GTK_MISC(lab), 0.0, 0.0); @@ -219,7 +222,7 @@ void CreateRS03VerifyWindow(Method *self, GtkWidget *parent) lab = gtk_label_new(NULL); gtk_misc_set_alignment(GTK_MISC(lab), 0.0, 0.0); - SetLabelText(GTK_LABEL(lab), _("Created by:")); + GuiSetLabelText(lab, _("Created by:")); gtk_table_attach(GTK_TABLE(table2), lab, 0, 1, y1, y2, GTK_SHRINK | GTK_FILL, GTK_SHRINK, 5, 2 ); lab = wl->cmpEccCreatedBy = gtk_label_new(NULL); gtk_misc_set_alignment(GTK_MISC(lab), 0.0, 0.0); @@ -228,7 +231,7 @@ void CreateRS03VerifyWindow(Method *self, GtkWidget *parent) lab = gtk_label_new(NULL); gtk_misc_set_alignment(GTK_MISC(lab), 0.0, 0.0); - SetLabelText(GTK_LABEL(lab), _("Requires:")); + GuiSetLabelText(lab, _("Requires:")); gtk_table_attach(GTK_TABLE(table2), lab, 0, 1, y1, y2, GTK_SHRINK | GTK_FILL, GTK_SHRINK, 5, 2 ); lab = wl->cmpEccRequires = gtk_label_new(NULL); gtk_misc_set_alignment(GTK_MISC(lab), 0.0, 0.0); @@ -237,7 +240,7 @@ void CreateRS03VerifyWindow(Method *self, GtkWidget *parent) lab = wl->cmpEccDataCrc = gtk_label_new(NULL); gtk_misc_set_alignment(GTK_MISC(lab), 0.0, 0.0); - SetLabelText(GTK_LABEL(lab), _("Data checksum:")); + GuiSetLabelText(lab, _("Data checksum:")); gtk_table_attach(GTK_TABLE(table2), lab, 0, 1, y1, y2, GTK_SHRINK | GTK_FILL, GTK_SHRINK, 5, 2 ); lab = wl->cmpEccDataCrcVal = gtk_label_new(NULL); gtk_misc_set_alignment(GTK_MISC(lab), 0.0, 0.0); @@ -246,7 +249,7 @@ void CreateRS03VerifyWindow(Method *self, GtkWidget *parent) lab = gtk_label_new(NULL); gtk_misc_set_alignment(GTK_MISC(lab), 0.0, 0.0); - SetLabelText(GTK_LABEL(lab), _("Fingerprint:")); + GuiSetLabelText(lab, _("Fingerprint:")); gtk_table_attach(GTK_TABLE(table2), lab, 0, 1, y1, y2, GTK_SHRINK | GTK_FILL, GTK_SHRINK, 5, 2 ); lab = wl->cmpEccFingerprint = gtk_label_new(NULL); gtk_misc_set_alignment(GTK_MISC(lab), 0.0, 0.0); @@ -262,7 +265,7 @@ void CreateRS03VerifyWindow(Method *self, GtkWidget *parent) frame = gtk_frame_new(_utf("Image state")); gtk_table_attach(GTK_TABLE(table), frame, 1, 2, 0, 2, GTK_SHRINK | GTK_FILL, GTK_EXPAND | GTK_FILL, 5, 5); - wl->cmpSpiral = CreateSpiral(Closure->grid, Closure->background, 10, 5, VERIFY_IMAGE_SEGMENTS); + wl->cmpSpiral = GuiCreateSpiral(Closure->grid, Closure->background, 10, 5, VERIFY_IMAGE_SEGMENTS); d_area = wl->cmpDrawingArea = gtk_drawing_area_new(); gtk_widget_set_size_request(d_area, wl->cmpSpiral->diameter+20, -1); gtk_container_add(GTK_CONTAINER(frame), d_area); @@ -290,7 +293,7 @@ void CreateRS03VerifyWindow(Method *self, GtkWidget *parent) lab = gtk_label_new(NULL); gtk_misc_set_alignment(GTK_MISC(lab), 0.0, 0.0); - SetLabelText(GTK_LABEL(lab), _("Medium sectors:")); + GuiSetLabelText(lab, _("Medium sectors:")); gtk_table_attach(GTK_TABLE(table2), lab, 0, 1, y1, y2, GTK_SHRINK | GTK_FILL, GTK_SHRINK, 5, 2 ); lab = wl->cmpImageSectors = gtk_label_new("0"); gtk_misc_set_alignment(GTK_MISC(lab), 0.0, 0.0); @@ -299,7 +302,7 @@ void CreateRS03VerifyWindow(Method *self, GtkWidget *parent) lab = gtk_label_new(NULL); gtk_misc_set_alignment(GTK_MISC(lab), 0.0, 0.0); - SetLabelText(GTK_LABEL(lab), _("Data checksum:")); + GuiSetLabelText(lab, _("Data checksum:")); gtk_table_attach(GTK_TABLE(table2), lab, 0, 1, y1, y2, GTK_SHRINK | GTK_FILL, GTK_SHRINK, 5, 2 ); lab = wl->cmpImageMd5Sum = gtk_label_new("0"); gtk_misc_set_alignment(GTK_MISC(lab), 0.0, 0.0); @@ -308,7 +311,7 @@ void CreateRS03VerifyWindow(Method *self, GtkWidget *parent) lab = gtk_label_new(NULL); gtk_misc_set_alignment(GTK_MISC(lab), 0.0, 0.0); - SetLabelText(GTK_LABEL(lab), _("Data section:")); + GuiSetLabelText(lab, _("Data section:")); gtk_table_attach(GTK_TABLE(table2), lab, 0, 1, y1, y2, GTK_SHRINK | GTK_FILL, GTK_SHRINK, 5, 2 ); lab = wl->cmpDataSection = gtk_label_new("."); gtk_misc_set_alignment(GTK_MISC(lab), 0.0, 0.0); @@ -317,7 +320,7 @@ void CreateRS03VerifyWindow(Method *self, GtkWidget *parent) lab = gtk_label_new(NULL); gtk_misc_set_alignment(GTK_MISC(lab), 0.0, 0.0); - SetLabelText(GTK_LABEL(lab), _("Crc section:")); + GuiSetLabelText(lab, _("Crc section:")); gtk_table_attach(GTK_TABLE(table2), lab, 0, 1, y1, y2, GTK_SHRINK | GTK_FILL, GTK_SHRINK, 5, 2 ); lab = wl->cmpCrcSection = gtk_label_new("."); gtk_misc_set_alignment(GTK_MISC(lab), 0.0, 0.0); @@ -326,7 +329,7 @@ void CreateRS03VerifyWindow(Method *self, GtkWidget *parent) lab = gtk_label_new(NULL); gtk_misc_set_alignment(GTK_MISC(lab), 0.0, 0.0); - SetLabelText(GTK_LABEL(lab), _("Ecc section:")); + GuiSetLabelText(lab, _("Ecc section:")); gtk_table_attach(GTK_TABLE(table2), lab, 0, 1, y1, y2, GTK_SHRINK | GTK_FILL, GTK_SHRINK, 5, 2 ); lab = wl->cmpEccSection= gtk_label_new("."); gtk_misc_set_alignment(GTK_MISC(lab), 0.0, 0.0); @@ -335,7 +338,7 @@ void CreateRS03VerifyWindow(Method *self, GtkWidget *parent) lab = wl->cmpEccSynLabel = gtk_label_new(NULL); gtk_misc_set_alignment(GTK_MISC(lab), 0.0, 0.0); - SetLabelText(GTK_LABEL(lab), _("Ecc block test:")); + GuiSetLabelText(lab, _("Ecc block test:")); gtk_table_attach(GTK_TABLE(table2), lab, 0, 1, y1, y2, GTK_SHRINK | GTK_FILL, GTK_SHRINK, 5, 2 ); lab = wl->cmpEccSyndromes = gtk_label_new(NULL); gtk_misc_set_alignment(GTK_MISC(lab), 0.0, 0.0); @@ -362,7 +365,8 @@ void CreateRS03VerifyWindow(Method *self, GtkWidget *parent) gtk_misc_set_alignment(GTK_MISC(lab), 0.0, 0.0); gtk_table_attach(GTK_TABLE(table2), lab, 0, 2, y1, y2, GTK_SHRINK | GTK_FILL, GTK_SHRINK, 5, 4); } -#endif + +#endif /* WITH_GUI_YES */ /*** *** Check the consistency of the augmented image @@ -376,9 +380,7 @@ typedef struct { Image *image; EccHeader *eh; RS03Layout *lay; -#ifndef WITH_CLI_ONLY_YES RS03Widgets *wl; -#endif CrcBuf *crcBuf; Bitmap *map; unsigned char crcSum[16]; @@ -393,10 +395,7 @@ static void cleanup(gpointer data) UnregisterCleanup(); -#ifndef WITH_CLI_ONLY_YES - if(Closure->guiMode) - AllowActions(TRUE); -#endif + GuiAllowActions(TRUE); if(vc->image) CloseImage(vc->image); if(vc->lay) @@ -414,10 +413,7 @@ static void cleanup(gpointer data) g_free(vc); -#ifndef WITH_CLI_ONLY_YES - if(Closure->guiMode) - g_thread_exit(0); -#endif + GuiExitWorkerThread(); } /*** @@ -425,30 +421,35 @@ static void cleanup(gpointer data) ***/ static int prognosis(verify_closure *vc, gint64 missing, gint64 expected) -{ int j,eccblock; +{ RS03Layout *lay = vc->lay; + int j,eccblock; int worst_ecc = 0; gint64 damaged_sectors = 0, damaged_eccsecs = 0; gint64 correctable = 0; gint64 recoverable; - - for(eccblock=0; eccblocklay->sectorsPerLayer; eccblock++) + + /* compute the load on the error correction */ + + for(eccblock=0; eccblock < lay->sectorsPerLayer; eccblock++) { int count = 255; /* Note: ecc file sectors are virtually mapped to augmented image sectors */ for(j=0; j<255; j++) - { gint64 sector = j*vc->lay->sectorsPerLayer+eccblock; + { gint64 sector = j*lay->sectorsPerLayer+eccblock; if(GetBit(vc->map, sector)) count--; else damaged_sectors++; } - if(count>0) damaged_eccsecs++; - if(count>worst_ecc) worst_ecc = count; - if(count<=vc->lay->nroots) correctable += count; + if(count>0) damaged_eccsecs++; + if(count>worst_ecc) worst_ecc = count; + if(count<=lay->nroots) correctable += count; } + /* now see what is correctable */ + recoverable = expected - missing + correctable; if(damaged_sectors > 0) @@ -460,25 +461,21 @@ static int prognosis(verify_closure *vc, gint64 missing, gint64 expected) PrintLog(_("- prognosis : %" PRId64 " of %" PRId64 " sectors recoverable (%d.%d%%)\n"), recoverable, expected, percentage/10, percentage%10); -#ifndef WITH_CLI_ONLY_YES - if(Closure->guiMode) - { SetLabelText(GTK_LABEL(vc->wl->cmpImageErasure), _("Erasure counts:")); - SetLabelText(GTK_LABEL(vc->wl->cmpImagePrognosis), _("Prognosis:")); + GuiSetLabelText(vc->wl->cmpImageErasure, _("Erasure counts:")); + GuiSetLabelText(vc->wl->cmpImagePrognosis, _("Prognosis:")); - SetLabelText(GTK_LABEL(vc->wl->cmpImageErasureCnt), + GuiSetLabelText(vc->wl->cmpImageErasureCnt, _("avg = %.1f; worst = %d per ecc block."), - worst_ecc <= vc->lay->nroots ? Closure->greenMarkup : Closure->redMarkup, + worst_ecc <= lay->nroots ? Closure->greenMarkup : Closure->redMarkup, (double)damaged_sectors/(double)damaged_eccsecs,worst_ecc); - SetLabelText(GTK_LABEL(vc->wl->cmpImagePrognosisMsg), - _("%" PRId64 " of %" PRId64 " sectors recoverable (%d.%d%%)"), + GuiSetLabelText(vc->wl->cmpImagePrognosisMsg, + _("%" PRId64 " of %" PRId64 " sectors recoverable (%d.%d%%)"), recoverable < expected ? Closure->redMarkup : Closure->greenMarkup, - recoverable, expected, percentage/10, percentage%10); - } -#endif + recoverable, expected, percentage/10, percentage%10); } - if(damaged_sectors && worst_ecc <= vc->lay->nroots && recoverable >= expected) + if(damaged_sectors && worst_ecc <= lay->nroots && recoverable >= expected) return TRUE; else return FALSE; } @@ -497,12 +494,9 @@ static int check_syndromes(verify_closure *vc) int bad_counted; int layer,i,j; -#ifndef WITH_CLI_ONLY_YES - if(Closure->guiMode) - SetLabelText(GTK_LABEL(vc->wl->cmpHeadline), "%s\n%s", - _("Checking the image and error correction files."), - _("- Checking ecc blocks (deep verify) -")); -#endif + GuiSetLabelText(vc->wl->cmpHeadline, "%s\n%s", + _("Checking the image and error correction files."), + _("- Checking ecc blocks (deep verify) -")); /* Allocate buffers and initialize layer sector addresses */ @@ -515,12 +509,9 @@ static int check_syndromes(verify_closure *vc) for(j=0; jeccBlock[j]); -#ifndef WITH_CLI_ONLY_YES - if(Closure->guiMode) - SetLabelText(GTK_LABEL(vc->wl->cmpEccSyndromes), - _("Out of memory; try reducing sector prefetch!"), - Closure->redMarkup); -#endif + GuiSetLabelText(vc->wl->cmpEccSyndromes, + _("Out of memory; try reducing sector prefetch!"), + Closure->redMarkup); PrintLog(_("* Ecc block test : out of memory; try reducing sector prefetch!\n")); return 0; } @@ -541,15 +532,14 @@ static int check_syndromes(verify_closure *vc) /* Check for user interruption */ -#ifndef WITH_CLI_ONLY_YES if(Closure->stopActions) { if(Closure->stopActions == STOP_CURRENT_ACTION) /* suppress memleak warning when closing window */ - SetLabelText(GTK_LABEL(vc->wl->cmpEccSyndromes), - _("Aborted by user request!"), - Closure->redMarkup); + { GuiSetLabelText(vc->wl->cmpEccSyndromes, + _("Aborted by user request!"), + Closure->redMarkup); + } return 0; } -#endif /* Reload cache? */ @@ -602,24 +592,16 @@ static int check_syndromes(verify_closure *vc) { last_percent = percent; if(!ecc_bad) - { -#ifndef WITH_CLI_ONLY_YES - if(Closure->guiMode) - SetLabelText(GTK_LABEL(vc->wl->cmpEccSyndromes), - _("%d%% tested"), - percent); -#endif + { GuiSetLabelText(vc->wl->cmpEccSyndromes, + _("%d%% tested"), + percent); PrintProgress(_("- Ecc block test : %d%% tested"), percent); } else - { -#ifndef WITH_CLI_ONLY_YES - if(Closure->guiMode) - SetLabelText(GTK_LABEL(vc->wl->cmpEccSyndromes), - _("%" PRId64 " good, %" PRId64 " bad; %d%% tested"), - Closure->redMarkup, ecc_good, ecc_bad, percent); -#endif + { GuiSetLabelText(vc->wl->cmpEccSyndromes, + _("%" PRId64 " good, %" PRId64 " bad; %d%% tested"), + Closure->redMarkup, ecc_good, ecc_bad, percent); PrintProgress(_("* Ecc block test : %" PRId64 " good, %" PRId64 " bad; %d%% tested") , ecc_good, ecc_bad, percent); } @@ -629,22 +611,14 @@ static int check_syndromes(verify_closure *vc) /* Tell user about our findings */ if(!ecc_bad) - { -#ifndef WITH_CLI_ONLY_YES - if(Closure->guiMode) - SetLabelText(GTK_LABEL(vc->wl->cmpEccSyndromes),_("pass")); -#endif + { GuiSetLabelText(vc->wl->cmpEccSyndromes,_("pass")); ClearProgress(); PrintLog(_("- Ecc block test : pass\n")); } else - { -#ifndef WITH_CLI_ONLY_YES - if(Closure->guiMode) - SetLabelText(GTK_LABEL(vc->wl->cmpEccSyndromes), - _("%" PRId64 " good, %" PRId64 " bad; %" PRId64 " bad sub blocks"), - Closure->redMarkup, ecc_good, ecc_bad, ecc_bad_sub); -#endif + { GuiSetLabelText(vc->wl->cmpEccSyndromes, + _("%" PRId64 " good, %" PRId64 " bad; %" PRId64 " bad sub blocks"), + Closure->redMarkup, ecc_good, ecc_bad, ecc_bad_sub); PrintLog(_("* Ecc block test : %" PRId64 " good, %" PRId64 " bad; %" PRId64 " bad sub blocks\n"), ecc_good, ecc_bad, ecc_bad_sub); @@ -660,9 +634,7 @@ static int check_syndromes(verify_closure *vc) void RS03Verify(Image *image) { Method *self = FindMethod("RS03"); verify_closure *vc = g_malloc0(sizeof(verify_closure)); -#ifndef WITH_CLI_ONLY_YES RS03Widgets *wl = self->widgetList; -#endif EccHeader *eh = NULL; RS03Layout *lay; RS03CksumClosure *csc; @@ -683,25 +655,21 @@ void RS03Verify(Image *image) char *unstable=""; char method[5]; -#ifndef WITH_CLI_ONLY_YES - char *img_advice = NULL; char *ecc_advice = NULL; -#endif char *version; -#ifndef WITH_CLI_ONLY_YES - int syn_error = 0; - int try_it; -#endif int missing_sector_explained = 0; int matching_byte_size = TRUE; - +#ifdef WITH_GUI_YES + int try_it; + int syn_error = 0; + char *img_advice = NULL; +#endif + /*** Prepare for early termination */ RegisterCleanup(_("Check aborted"), cleanup, vc); vc->image = image; -#ifndef WITH_CLI_ONLY_YES vc->wl = wl; -#endif if(image->eccFileHeader && !strncmp((char*)(image->eccFileHeader->method), "RS03", 4)) { eh = image->eccFileHeader; @@ -717,36 +685,27 @@ void RS03Verify(Image *image) if(image->file) { - PrintLog("\n%s present.\n", Closure->imageName); + PrintLog(_("\n%s present.\n"), Closure->imageName); } else /* may only happen when ecc file is present */ - { PrintLog("\n%s not present.\n", Closure->imageName); + { PrintLog(_("\n%s not present.\n"), Closure->imageName); -#ifndef WITH_CLI_ONLY_YES - if(Closure->guiMode) - SwitchAndSetFootline(wl->cmpImageNotebook, 0, NULL, NULL); -#endif + GuiSwitchAndSetFootline(wl->cmpImageNotebook, 0, NULL, NULL); } if(eh->methodFlags[0] & MFLAG_ECC_FILE) { -#ifndef WITH_CLI_ONLY_YES - if(Closure->guiMode) - SetLabelText(GTK_LABEL(wl->cmpHeadline), "%s\n%s", - _("Checking the image and error correction files."), - _("- Checking image file -")); -#endif + GuiSetLabelText(wl->cmpHeadline, "%s\n%s", + _("Checking the image and error correction files."), + _("- Checking image file -")); PrintLog(_("%s present.\n"), Closure->eccName); } else { -#ifndef WITH_CLI_ONLY_YES - if(Closure->guiMode) - SetLabelText(GTK_LABEL(wl->cmpHeadline), "%s\n%s", - _("Checking the image file."), - _("- Checking image file -")); -#endif + GuiSetLabelText(wl->cmpHeadline, "%s\n%s", + _("Checking the image file."), + _("- Checking image file -")); } /*** Calculate the layout */ @@ -774,10 +733,8 @@ void RS03Verify(Image *image) else msg = g_strdup_printf(_("Ecc file is %" PRId64 " sectors longer than expected."), eccfile_sectors - expected_eccfile_sectors); -#ifndef WITH_CLI_ONLY_YES if(Closure->guiMode) ecc_advice = g_strdup_printf("%s", Closure->redMarkup, msg); -#endif PrintLog(_("* Warning : %s\n"), msg); g_free(msg); @@ -791,13 +748,12 @@ void RS03Verify(Image *image) PrintLog(_("- type : Error correction file\n")); else PrintLog(_("- type : Augmented image\n")); -#ifndef WITH_CLI_ONLY_YES - if(Closure->guiMode) - { if(eh->methodFlags[0] & MFLAG_ECC_FILE) - SetLabelText(GTK_LABEL(wl->cmpEccType), _("Error correction file")); - else SetLabelText(GTK_LABEL(wl->cmpEccType), _("Augmented image")); + if(eh->methodFlags[0] & MFLAG_ECC_FILE) + { GuiSetLabelText(wl->cmpEccType, _("Error correction file")); + } + else + { GuiSetLabelText(wl->cmpEccType, _("Augmented image")); } -#endif /* Error correction method */ @@ -807,12 +763,9 @@ void RS03Verify(Image *image) method, eh->eccBytes, ((double)eh->eccBytes*100.0)/(double)eh->dataBytes); -#ifndef WITH_CLI_ONLY_YES - if(Closure->guiMode) - SetLabelText(GTK_LABEL(wl->cmpEccMethod), _("%4s, %d roots, %4.1f%% redundancy"), - method, eh->eccBytes, - ((double)eh->eccBytes*100.0)/(double)eh->dataBytes); -#endif + GuiSetLabelText(wl->cmpEccMethod, _("%4s, %d roots, %4.1f%% redundancy"), + method, eh->eccBytes, + ((double)eh->eccBytes*100.0)/(double)eh->dataBytes); /* Creator version */ @@ -830,23 +783,16 @@ void RS03Verify(Image *image) PrintLog(format, _("- created by : dvdisaster"), major, minor, micro, unstable); PrintLog("\n"); -#ifndef WITH_CLI_ONLY_YES - if(Closure->guiMode) - { SetLabelText(GTK_LABEL(wl->cmpEccCreatedBy), format, + GuiSetLabelText(wl->cmpEccCreatedBy, format, "dvdisaster", major, minor, micro, unstable); - } -#endif } else { char *format = "%s-%d.%d%s"; PrintLog(format, _("- created by : dvdisaster"), major, minor, unstable); PrintLog("\n"); -#ifndef WITH_CLI_ONLY_YES - if(Closure->guiMode) - SetLabelText(GTK_LABEL(wl->cmpEccCreatedBy), format, - "dvdisaster", major, minor, unstable); -#endif + GuiSetLabelText(wl->cmpEccCreatedBy, format, + "dvdisaster", major, minor, unstable); } /* Required dvdisaster version */ @@ -863,10 +809,7 @@ void RS03Verify(Image *image) if(Closure->version >= eh->neededVersion) { PrintLog(_("- requires : dvdisaster-%s\n"), version); -#ifndef WITH_CLI_ONLY_YES - if(Closure->guiMode) - SetLabelText(GTK_LABEL(wl->cmpEccRequires), "dvdisaster-%s", version); -#endif + GuiSetLabelText(wl->cmpEccRequires, "dvdisaster-%s", version); } else { PrintLog(_("* requires : dvdisaster-%s (BAD)\n" @@ -874,17 +817,13 @@ void RS03Verify(Image *image) "* : Please upgrade dvdisaster.\n"), version); -#ifndef WITH_CLI_ONLY_YES - if(Closure->guiMode) - { SetLabelText(GTK_LABEL(wl->cmpEccRequires), - "dvdisaster-%s", - Closure->redMarkup, version); - if(!ecc_advice) - ecc_advice = g_strdup_printf(_("Please upgrade your version of dvdisaster!"), Closure->redMarkup); - } -#endif + GuiSetLabelText(wl->cmpEccRequires, + "dvdisaster-%s", + Closure->redMarkup, version); + if(!ecc_advice) + ecc_advice = g_strdup_printf(_("Please upgrade your version of dvdisaster!"), Closure->redMarkup); - exitCode = EXIT_CODE_VERSION_MISMATCH; + exitCode = EXIT_CODE_VERSION_MISMATCH; } g_free(version); @@ -897,10 +836,7 @@ void RS03Verify(Image *image) PrintLog(_("- data md5sum : %s\n"),hdr_digest); -#ifndef WITH_CLI_ONLY_YES - if(Closure->guiMode) - SetLabelText(GTK_LABEL(wl->cmpEccDataCrcVal), "%s", hdr_digest); -#endif + GuiSetLabelText(wl->cmpEccDataCrcVal, "%s", hdr_digest); /* compare images in ecc file case */ @@ -909,50 +845,38 @@ void RS03Verify(Image *image) { if(image->fpState != FP_PRESENT) { PrintLog(_("* fingerprint match: NOT POSSIBLE - related sector is missing in image!\n")); -#ifndef WITH_CLI_ONLY_YES - if(Closure->guiMode) - SetLabelText(GTK_LABEL(wl->cmpEccFingerprint), _("missing sector prevents calculation"), Closure->redMarkup); -#endif - } - else - { + GuiSetLabelText(wl->cmpEccFingerprint, _("missing sector prevents calculation"), Closure->redMarkup); + } + else + { if(memcmp(image->imageFP, eh->mediumFP, 16)) { PrintLog(_("* fingerprint match: MISMATCH - .iso and .ecc don't belong together!\n")); -#ifndef WITH_CLI_ONLY_YES - if(Closure->guiMode) - { SetLabelText(GTK_LABEL(wl->cmpEccFingerprint), + GuiSetLabelText(wl->cmpEccFingerprint, _("mismatch"), Closure->redMarkup); - if(!ecc_advice) - ecc_advice = g_strdup_printf(_("Image and error correction files do not belong together!"), Closure->redMarkup); - } -#endif + if(!ecc_advice) + ecc_advice = g_strdup_printf(_("Image and error correction files do not belong together!"), Closure->redMarkup); } else { PrintLog(_("- fingerprint match: good\n")); -#ifndef WITH_CLI_ONLY_YES - if(Closure->guiMode) - SetLabelText(GTK_LABEL(wl->cmpEccFingerprint), _("good")); -#endif + GuiSetLabelText(wl->cmpEccFingerprint, _("good")); } - } + } } } /* print advice collected from above tests */ -#ifndef WITH_CLI_ONLY_YES - if(Closure->guiMode) - { if(ecc_advice) - { SetLabelText(GTK_LABEL(wl->cmpEccResult), "%s", ecc_advice); - g_free(ecc_advice); - } - else SetLabelText(GTK_LABEL(wl->cmpEccResult), - _("Good error correction data."), - Closure->greenMarkup); + if(ecc_advice) + { GuiSetLabelText(wl->cmpEccResult, "%s", ecc_advice); + g_free(ecc_advice); + } + else + { GuiSetLabelText(wl->cmpEccResult, + _("Good error correction data."), + Closure->greenMarkup); } -#endif if(!image->file) /* Ecc file but no image */ goto terminate; @@ -976,25 +900,20 @@ void RS03Verify(Image *image) } else { virtual_expected = expected_image_sectors = lay->totalSectors; - SetBit(vc->map, lay->eccHeaderPos); - SetBit(vc->map, lay->eccHeaderPos+1); } /* Image size and expected size in ecc file match */ if(expected_image_sectors == image->sectorSize && matching_byte_size) { if(lay->target == ECC_FILE) - { -#ifndef WITH_CLI_ONLY_YES - if(Closure->guiMode) - { if(image->inLast == 2048) - SetLabelText(GTK_LABEL(wl->cmpImageSectors), _("%" PRId64 " in image; %" PRId64 " in ecc file"), - image->sectorSize, eccfile_sectors); - else - SetLabelText(GTK_LABEL(wl->cmpImageSectors), _("%" PRId64 " sectors + %d bytes in image; %" PRId64 " in ecc file"), - image->sectorSize-1, image->inLast, eccfile_sectors); + { if(image->inLast == 2048) + { GuiSetLabelText(wl->cmpImageSectors, _("%" PRId64 " in image; %" PRId64 " in ecc file"), + image->sectorSize, eccfile_sectors); + } + else + { GuiSetLabelText(wl->cmpImageSectors, _("%" PRId64 " sectors + %d bytes in image; %" PRId64 " in ecc file"), + image->sectorSize-1, image->inLast, eccfile_sectors); } -#endif if(image->inLast == 2048) PrintLog(_("- sectors : %" PRId64 " in image; "), image->sectorSize); @@ -1003,12 +922,8 @@ void RS03Verify(Image *image) PrintLog(_("%" PRId64 " in ecc file\n"), eccfile_sectors); } else - { -#ifndef WITH_CLI_ONLY_YES - if(Closure->guiMode) - SetLabelText(GTK_LABEL(wl->cmpImageSectors), _("%" PRId64 " total / %" PRId64 " data"), - image->sectorSize, lay->dataSectors); -#endif + { GuiSetLabelText(wl->cmpImageSectors, _("%" PRId64 " total / %" PRId64 " data"), + image->sectorSize, lay->dataSectors); PrintLog(_("- medium sectors : %" PRId64 " total / %" PRId64 " data\n"), image->sectorSize, lay->dataSectors); } @@ -1024,28 +939,26 @@ void RS03Verify(Image *image) expected_size = g_strdup_printf("%lld", (long long int)expected_image_sectors); else expected_size = g_strdup_printf("%lld sectors + %d bytes", (long long int)expected_image_sectors-1, eh->inLast); -#ifndef WITH_CLI_ONLY_YES - if(Closure->guiMode) - { SetLabelText(GTK_LABEL(wl->cmpImageSectors), _("%s (%s expected)"), +#ifdef WITH_GUI_YES + GuiSetLabelText(wl->cmpImageSectors, _("%s (%s expected)"), Closure->redMarkup, image_size, expected_size); - if(image->sectorSize == expected_image_sectors) - { if(image->inLast < eh->inLast) - img_advice = g_strdup_printf(_("Image file is %d bytes shorter than expected."), - Closure->redMarkup, eh->inLast-image->inLast); - else img_advice = g_strdup_printf(_("Image file is %d bytes longer than expected."), - Closure->redMarkup, image->inLast-eh->inLast); - } - - if(expected_image_sectors > image->sectorSize) - img_advice = g_strdup_printf(_("Image file is %" PRId64 " sectors shorter than expected."), - Closure->redMarkup, expected_image_sectors - image->sectorSize); - if(expected_image_sectors < image->sectorSize) - img_advice = g_strdup_printf(_("Image file is %" PRId64 " sectors longer than expected."), - Closure->redMarkup, image->sectorSize - expected_image_sectors); + if(image->sectorSize == expected_image_sectors) + { if(image->inLast < eh->inLast) + img_advice = g_strdup_printf(_("Image file is %d bytes shorter than expected."), + Closure->redMarkup, eh->inLast-image->inLast); + else img_advice = g_strdup_printf(_("Image file is %d bytes longer than expected."), + Closure->redMarkup, image->inLast-eh->inLast); } -#endif + if(expected_image_sectors > image->sectorSize) + img_advice = g_strdup_printf(_("Image file is %" PRId64 " sectors shorter than expected."), + Closure->redMarkup, expected_image_sectors - image->sectorSize); + if(expected_image_sectors < image->sectorSize) + img_advice = g_strdup_printf(_("Image file is %" PRId64 " sectors longer than expected."), + Closure->redMarkup, image->sectorSize - expected_image_sectors); +#endif /* WITH_GUI_YES */ + if(lay->target == ECC_FILE) PrintLog(_("* sectors : %s (%s expected); %" PRId64 " sectors in ecc file\n"), image_size, expected_size, eccfile_sectors); @@ -1058,6 +971,10 @@ void RS03Verify(Image *image) if(Closure->quickVerify) { PrintLog(_("* quick mode : image NOT scanned\n")); +#ifdef WITH_GUI_YES + if(img_advice) + g_free(img_advice); +#endif goto terminate; } @@ -1089,15 +1006,14 @@ void RS03Verify(Image *image) /* Check for user interruption */ -#ifndef WITH_CLI_ONLY_YES if(Closure->stopActions) { if(Closure->stopActions == STOP_CURRENT_ACTION) /* suppress memleak warning when closing window */ - SetLabelText(GTK_LABEL(wl->cmpImageResult), - _("Aborted by user request!"), - Closure->redMarkup); + { GuiSetLabelText(wl->cmpImageResult, + _("Aborted by user request!"), + Closure->redMarkup); + } goto terminate; } -#endif /* Read the next sector */ @@ -1211,7 +1127,7 @@ void RS03Verify(Image *image) if(!defective) SetBit(vc->map, s); -#ifndef WITH_CLI_ONLY_YES +#ifdef WITH_GUI_YES if(Closure->guiMode) { /* data part / spiral animation */ percent = (VERIFY_IMAGE_SEGMENTS*(s+1))/virtual_expected; @@ -1221,12 +1137,12 @@ void RS03Verify(Image *image) percent = (100*(s+1-lay->dataSectors)/(virtual_expected-lay->dataSectors)); } else -#endif - percent = (100*(s+1))/virtual_expected; +#endif /* WITH_GUI_YES */ + percent = (100*(s+1))/virtual_expected; if(last_percent != percent) /* Update sector results */ { PrintProgress(_("- testing sectors : %3d%%") ,percent); -#ifndef WITH_CLI_ONLY_YES +#ifdef WITH_GUI_YES if(Closure->guiMode) { if(lay->target == ECC_IMAGE) { add_verify_values(self, percent, new_missing, new_crc_errors); @@ -1238,24 +1154,27 @@ void RS03Verify(Image *image) add_verify_values(self, image_percent, new_missing, new_crc_errors); } else - { SetLabelText(GTK_LABEL(wl->cmpEccSyndromes),_("%d%% tested"),percent); + { GuiSetLabelText(wl->cmpEccSyndromes,_("%d%% tested"),percent); } } if(data_missing || data_crc_errors) - SetLabelText(GTK_LABEL(wl->cmpDataSection), - _("%" PRId64 " sectors missing; %" PRId64 " CRC errors"), - Closure->redMarkup, data_missing, data_crc_errors); + { GuiSetLabelText(wl->cmpDataSection, + _("%" PRId64 " sectors missing; %" PRId64 " CRC errors"), + Closure->redMarkup, data_missing, data_crc_errors); + } if(crc_missing || csc->signatureErrors) - SetLabelText(GTK_LABEL(wl->cmpCrcSection), - _("%" PRId64 " sectors missing; %" PRId64 " signature errors"), - Closure->redMarkup, crc_missing, csc->signatureErrors); + { GuiSetLabelText(wl->cmpCrcSection, + _("%" PRId64 " sectors missing; %" PRId64 " signature errors"), + Closure->redMarkup, crc_missing, csc->signatureErrors); + } if(ecc_missing) - SetLabelText(GTK_LABEL(wl->cmpEccSection), - _("%" PRId64 " sectors missing"), - Closure->redMarkup, ecc_missing); + { GuiSetLabelText(wl->cmpEccSection, + _("%" PRId64 " sectors missing"), + Closure->redMarkup, ecc_missing); + } } -#endif +#endif /* WITH_GUI_YES */ last_percent = percent; new_missing = new_crc_errors = 0; } @@ -1263,43 +1182,44 @@ void RS03Verify(Image *image) /* If we have processed the image and are about to switch over to the ecc file, do some bookkeeping. */ +#ifdef WITH_GUI_YES if(lay->target == ECC_FILE && s == lay->dataSectors-1) - { -#ifndef WITH_CLI_ONLY_YES + { if(Closure->guiMode) { /* flush/complete spiral */ add_verify_values(self, VERIFY_IMAGE_SEGMENTS, new_missing, new_crc_errors); - SetLabelText(GTK_LABEL(wl->cmpHeadline), "%s\n%s", - _("Checking the image and error correction files."), - _("- Checking ecc file -")); + GuiSetLabelText(wl->cmpHeadline, "%s\n%s", + _("Checking the image and error correction files."), + _("- Checking ecc file -")); - SetLabelText(GTK_LABEL(wl->cmpEccSynLabel), _("Error correction file:")); + GuiSetLabelText(wl->cmpEccSynLabel, _("Error correction file:")); last_percent = 0; /* restart counting for ecc file */ } -#endif } +#endif /* WITH_GUI_YES */ } /* Complete damage summary */ -#ifndef WITH_CLI_ONLY_YES if(Closure->guiMode) { if(data_missing || data_crc_errors) - SetLabelText(GTK_LABEL(wl->cmpDataSection), - _("%" PRId64 " sectors missing; %" PRId64 " CRC errors"), - Closure->redMarkup, data_missing, data_crc_errors); + { GuiSetLabelText(wl->cmpDataSection, + _("%" PRId64 " sectors missing; %" PRId64 " CRC errors"), + Closure->redMarkup, data_missing, data_crc_errors); + } if(crc_missing || csc->signatureErrors) - SetLabelText(GTK_LABEL(wl->cmpCrcSection), - _("%" PRId64 " sectors missing; %" PRId64 " signature errors"), - Closure->redMarkup, crc_missing, csc->signatureErrors); + { GuiSetLabelText(wl->cmpCrcSection, + _("%" PRId64 " sectors missing; %" PRId64 " signature errors"), + Closure->redMarkup, crc_missing, csc->signatureErrors); + } if(ecc_missing) - SetLabelText(GTK_LABEL(wl->cmpEccSection), - _("%" PRId64 " sectors missing"), - Closure->redMarkup, ecc_missing); + { GuiSetLabelText(wl->cmpEccSection, + _("%" PRId64 " sectors missing"), + Closure->redMarkup, ecc_missing); + } } -#endif - + /* The image md5sum is only useful if all blocks have been successfully read. */ MD5Final(medium_sum, &image_md5); @@ -1334,87 +1254,84 @@ void RS03Verify(Image *image) PrintLog(_(" ... ecc section : %" PRId64 " sectors missing\n"), ecc_missing); } -#ifndef WITH_CLI_ONLY_YES if(Closure->guiMode) { if(!data_missing && !data_crc_errors) - SetLabelText(GTK_LABEL(wl->cmpDataSection), _("complete")); + { GuiSetLabelText(wl->cmpDataSection, _("complete")); + } if(!crc_missing && !csc->signatureErrors) - SetLabelText(GTK_LABEL(wl->cmpCrcSection), _("complete")); - if(!ecc_missing) SetLabelText(GTK_LABEL(wl->cmpEccSection), _("complete")); - - SetLabelText(GTK_LABEL(wl->cmpImageMd5Sum), "%s", data_missing ? "-" : data_digest); + { GuiSetLabelText(wl->cmpCrcSection, _("complete")); + } + if(!ecc_missing) + { GuiSetLabelText(wl->cmpEccSection, _("complete")); + } + GuiSetLabelText(wl->cmpImageMd5Sum, "%s", data_missing ? "-" : data_digest); } -#endif - + /*** Test error syndromes */ -#ifndef WITH_CLI_ONLY_YES - if(Closure->guiMode) - { SetLabelText(GTK_LABEL(wl->cmpEccSynLabel), _("Ecc block test:")); - SetLabelText(GTK_LABEL(wl->cmpEccSyndromes), ""); - } -#endif - if(0&&total_missing + data_crc_errors != 0) - { -#ifndef WITH_CLI_ONLY_YES - if(Closure->guiMode) - SetLabelText(GTK_LABEL(wl->cmpEccSyndromes), - _("Skipped; not useful on known defective image"), - Closure->redMarkup); -#endif + GuiSetLabelText(wl->cmpEccSynLabel, _("Ecc block test:")); + GuiSetLabelText(wl->cmpEccSyndromes, ""); + + if(0&&total_missing + data_crc_errors != 0) // TODO: check why this is deactivated + { GuiSetLabelText(wl->cmpEccSyndromes, + _("Skipped; not useful on known defective image"), + Closure->redMarkup); PrintLog(_("* Ecc block test : skipped; not useful on defective image\n")); } else - { -#ifndef WITH_CLI_ONLY_YES - syn_error = +#ifdef WITH_GUI_YES + syn_error = check_syndromes(vc); +#else + check_syndromes(vc); #endif - check_syndromes(vc); - } - + /*** Print image advice */ -#ifndef WITH_CLI_ONLY_YES - if(Closure->guiMode) - { - if(img_advice) - { SetLabelText(GTK_LABEL(wl->cmpImageResult), "%s", img_advice); - g_free(img_advice); - } - else - { if(!total_missing && !data_crc_errors && !syn_error) - SetLabelText(GTK_LABEL(wl->cmpImageErasure), /* avoid two blank lines */ +#ifdef WITH_GUI_YES + if(img_advice) + { GuiSetLabelText(wl->cmpImageResult, "%s", img_advice); + g_free(img_advice); + } + else + { if(!total_missing && !data_crc_errors && !syn_error) + { GuiSetLabelText(wl->cmpImageErasure, /* avoid two blank lines */ _("Good image."), Closure->greenMarkup); - else - SetLabelText(GTK_LABEL(wl->cmpImageResult), - _("Damaged image."), - Closure->redMarkup); + } + else + { GuiSetLabelText(wl->cmpImageResult, + _("Damaged image."), + Closure->redMarkup); } } #endif - + /*** Print final results */ -#ifndef WITH_CLI_ONLY_YES - try_it = +#ifdef WITH_GUI_YES + try_it = prognosis(vc, total_missing+data_crc_errors, lay->totalSectors); +#else + prognosis(vc, total_missing+data_crc_errors, lay->totalSectors); #endif - prognosis(vc, total_missing+data_crc_errors, lay->totalSectors); - -#ifndef WITH_CLI_ONLY_YES + +#ifdef WITH_GUI_YES if(Closure->guiMode) { if(total_missing || data_crc_errors) - { if(try_it) SetLabelText(GTK_LABEL(wl->cmpImageResult), - _("Full data recovery is likely."), - Closure->greenMarkup); - else SetLabelText(GTK_LABEL(wl->cmpImageResult), - _("Full data recovery is NOT possible."), - Closure->redMarkup); + { if(try_it) + { GuiSetLabelText(wl->cmpImageResult, + _("Full data recovery is likely."), + Closure->greenMarkup); + } + else + { GuiSetLabelText(wl->cmpImageResult, + _("Full data recovery is NOT possible."), + Closure->redMarkup); + } } } -#endif - +#endif /* WITH_GUI_YES */ + /*** Close and clean up */ terminate: diff --git a/src/rs03-window.c b/src/rs03-window.c index 0ab30fe..3da6ff9 100644 --- a/src/rs03-window.c +++ b/src/rs03-window.c @@ -19,8 +19,10 @@ * You should have received a copy of the GNU General Public License * along with dvdisaster. If not, see . */ -// DVDISASTER_GUI_FILE +/*** src type: only GUI code ***/ + +#ifdef WITH_GUI_YES #include "dvdisaster.h" #include "rs03-includes.h" @@ -39,8 +41,8 @@ static void update_geometry(RS03Widgets*); void ResetRS03EncWindow(Method *method) { RS03Widgets *wl = (RS03Widgets*)method->widgetList; - SetProgress(wl->encPBar1, 0, 100); - SetProgress(wl->encPBar2, 0, 100); + GuiSetProgress(wl->encPBar1, 0, 100); + GuiSetProgress(wl->encPBar2, 0, 100); gtk_widget_hide(wl->encLabel2); gtk_widget_hide(wl->encPBar2); @@ -58,13 +60,7 @@ void ResetRS03EncWindow(Method *method) void CreateRS03EncWindow(Method *method, GtkWidget *parent) { GtkWidget *wid,*table,*pbar,*sep; - RS03Widgets *wl; - - if(!method->widgetList) - { wl = g_malloc0(sizeof(RS03Widgets)); - method->widgetList = wl; - } - else wl = method->widgetList; + RS03Widgets *wl=method->widgetList; wl->encHeadline = gtk_label_new(NULL); gtk_misc_set_alignment(GTK_MISC(wl->encHeadline), 0.0, 0.0); @@ -171,9 +167,9 @@ void RS03SetFixMaxValues(RS03Widgets *wl, int data_bytes, int ecc_bytes, gint64 static gboolean results_idle_func(gpointer data) { RS03Widgets *wl = (RS03Widgets*)data; - SetLabelText(GTK_LABEL(wl->fixCorrected), _("Repaired: %" PRId64 ""), wl->corrected); - SetLabelText(GTK_LABEL(wl->fixUncorrected), _("Unrepairable: %" PRId64 ""),Closure->redMarkup, wl->uncorrected); - SetLabelText(GTK_LABEL(wl->fixProgress), _("Progress: %3d.%1d%%"), wl->percent/10, wl->percent%10); + GuiSetLabelText(wl->fixCorrected, _("Repaired: %" PRId64 ""), wl->corrected); + GuiSetLabelText(wl->fixUncorrected, _("Unrepairable: %" PRId64 ""),Closure->redMarkup, wl->uncorrected); + GuiSetLabelText(wl->fixProgress, _("Progress: %3d.%1d%%"), wl->percent/10, wl->percent%10); return FALSE; } @@ -192,9 +188,9 @@ void RS03UpdateFixResults(RS03Widgets *wl, gint64 corrected, gint64 uncorrected) static gboolean curve_idle_func(gpointer data) { RS03Widgets *wl = (RS03Widgets*)data; - gint x0 = CurveX(wl->fixCurve, (double)wl->lastPercent); - gint x1 = CurveX(wl->fixCurve, (double)wl->percent); - gint y = CurveY(wl->fixCurve, wl->fixCurve->ivalue[wl->percent]); + gint x0 = GuiCurveX(wl->fixCurve, (double)wl->lastPercent); + gint x1 = GuiCurveX(wl->fixCurve, (double)wl->percent); + gint y = GuiCurveY(wl->fixCurve, wl->fixCurve->ivalue[wl->percent]); gint i; /*** Mark unused ecc values */ @@ -228,7 +224,7 @@ static gboolean curve_idle_func(gpointer data) /* Redraw the ecc capacity threshold line */ - y = CurveY(wl->fixCurve, wl->eccBytes); + y = GuiCurveY(wl->fixCurve, wl->eccBytes); gdk_gc_set_rgb_fg_color(Closure->drawGC, Closure->greenSector); gdk_draw_line(wl->fixCurve->widget->window, Closure->drawGC, @@ -260,7 +256,7 @@ static void update_geometry(RS03Widgets *wl) { /* Curve geometry */ - UpdateCurveGeometry(wl->fixCurve, "999", 20); + GuiUpdateCurveGeometry(wl->fixCurve, "999", 20); /* Label positions in the foot line */ @@ -275,12 +271,12 @@ static void redraw_curve(RS03Widgets *wl) /* Redraw the curve */ - RedrawAxes(wl->fixCurve); - RedrawCurve(wl->fixCurve, wl->percent); + GuiRedrawAxes(wl->fixCurve); + GuiRedrawCurve(wl->fixCurve, wl->percent); /* Ecc capacity threshold line */ - y = CurveY(wl->fixCurve, wl->eccBytes); + y = GuiCurveY(wl->fixCurve, wl->eccBytes); gdk_gc_set_rgb_fg_color(Closure->drawGC, Closure->greenSector); gdk_draw_line(wl->fixCurve->widget->window, Closure->drawGC, @@ -308,7 +304,7 @@ void ResetRS03FixWindow(Method *method) gtk_notebook_set_current_page(GTK_NOTEBOOK(wl->fixNotebook), 0); - ZeroCurve(wl->fixCurve); + GuiZeroCurve(wl->fixCurve); RS03UpdateFixResults(wl, 0, 0); if(wl->fixCurve && wl->fixCurve->widget) @@ -378,7 +374,8 @@ void CreateRS03FixWindow(Method *method, GtkWidget *parent) ignore = gtk_label_new("footer_tab"); gtk_notebook_append_page(GTK_NOTEBOOK(notebook), wl->fixFootline, ignore); - wl->fixCurve = CreateCurve(d_area, _("Errors/Ecc block"), "%d", 1000, CURVE_PERCENT); + wl->fixCurve = GuiCreateCurve(d_area, _("Errors/Ecc block"), "%d", 1000, CURVE_PERCENT); wl->fixCurve->enable = DRAW_ICURVE; } +#endif /* WITH_GUI_YES */ diff --git a/src/scsi-freebsd.c b/src/scsi-freebsd.c index 5344662..90823e3 100644 --- a/src/scsi-freebsd.c +++ b/src/scsi-freebsd.c @@ -20,6 +20,8 @@ * along with dvdisaster. If not, see . */ +/*** src type: no GUI code ***/ + #include "dvdisaster.h" #include "scsi-layer.h" diff --git a/src/scsi-layer.c b/src/scsi-layer.c index 180f7fe..09d7b43 100644 --- a/src/scsi-layer.c +++ b/src/scsi-layer.c @@ -20,6 +20,8 @@ * along with dvdisaster. If not, see . */ +/*** src type: some GUI code ***/ + #include "dvdisaster.h" #include "scsi-layer.h" @@ -589,6 +591,9 @@ static int query_cd(DeviceHandle *dh, int probe_only) dh->sessions = buf[3]; Verbose("#CD: %d sessions\n", dh->sessions); + if(dh->typeDescr) /* dh may have been reused; avoid memleak */ + g_free(dh->typeDescr); + if(control & 4) switch(buf[13]) { case 0x00: dh->typeDescr = g_strdup_printf("%s mode 1", dh->profileDescr); dh->subType = DATA1; break; @@ -2206,10 +2211,7 @@ int TestUnitReady(DeviceHandle *dh) if(SendPacket(dh, cmd, 6, NULL, 0, &dh->sense, DATA_NONE) != -1) { -#ifndef WITH_CLI_ONLY_YES - if(Closure->guiMode) - SetLabelText(Closure->status, ""); -#endif + GuiSetLabelText(Closure->status, ""); return TRUE; } @@ -2224,13 +2226,11 @@ int TestUnitReady(DeviceHandle *dh) continue_waiting = TRUE; if(continue_waiting) - { PrintCLIorLabel(STATUS_LABEL_OR_NULL, + { PrintCLIorLabel(Closure->status, _("Waiting 10 seconds for drive: %d\n"),9-i); -#ifndef WITH_CLI_ONLY_YES if(Closure->stopActions) return FALSE; -#endif g_usleep(G_USEC_PER_SEC); continue; @@ -2240,11 +2240,7 @@ int TestUnitReady(DeviceHandle *dh) break; /* Something is wrong with the drive */ } -#ifndef WITH_CLI_ONLY_YES - if(Closure->guiMode) - SetLabelText(Closure->status, ""); -#endif - + GuiSetLabelText(Closure->status, ""); return FALSE; } @@ -2496,10 +2492,8 @@ int ReadSectors(DeviceHandle *dh, unsigned char *buf, gint64 s, int nsectors) if(status) /* current try was unsuccessful */ { int last_key, last_asc, last_ascq; -#ifndef WITH_CLI_ONLY_YES if(Closure->stopActions) /* user break */ return status; -#endif /* Do not attempt multiple re-reads if nsectors > 1 and sectorSkip == 0 as these will be re-read with nsectors==1 anyways. */ @@ -2507,7 +2501,7 @@ int ReadSectors(DeviceHandle *dh, unsigned char *buf, gint64 s, int nsectors) // Why only apply this shortcut to raw reading? // if(dh->canReadDefective && nsectors > 1 && Closure->sectorSkip == 0) if(nsectors > 1 && Closure->sectorSkip == 0) - { PrintCLIorLabel(STATUS_LABEL_OR_NULL, + { PrintCLIorLabel(Closure->status, _("Sectors %" PRId64 " - %" PRId64 ": %s\n"), s, s+nsectors-1, GetLastSenseString(FALSE)); return status; @@ -2521,13 +2515,13 @@ int ReadSectors(DeviceHandle *dh, unsigned char *buf, gint64 s, int nsectors) if(last_key == 3 && last_asc == 255 && last_ascq == 2 && dh->rawBuffer) { unsigned char *frame = dh->rawBuffer->workBuf->buf; - PrintCLIorLabel(STATUS_LABEL_OR_NULL, + PrintCLIorLabel(Closure->status, _("Sector %" PRId64 ", try %d: %s Sector returned: %d.\n"), s, retry, GetLastSenseString(FALSE), MSFtoLBA(frame[12], frame[13], frame[14])); } else - PrintCLIorLabel(STATUS_LABEL_OR_NULL, + PrintCLIorLabel(Closure->status, _("Sector %" PRId64 ", try %d: %s\n"), s, retry, GetLastSenseString(FALSE)); @@ -2538,7 +2532,7 @@ int ReadSectors(DeviceHandle *dh, unsigned char *buf, gint64 s, int nsectors) } else /* good return status */ { if(recommended_attempts > 1 && retry > 1) - PrintCLIorLabel(STATUS_LABEL_OR_NULL, + PrintCLIorLabel(Closure->status, _("Sector %" PRId64 ", try %d: success\n"), s, retry); break; diff --git a/src/scsi-linux.c b/src/scsi-linux.c index d74a0dc..6081e24 100644 --- a/src/scsi-linux.c +++ b/src/scsi-linux.c @@ -20,6 +20,8 @@ * along with dvdisaster. If not, see . */ +/*** src type: no GUI code ***/ + #include "dvdisaster.h" #include "scsi-layer.h" diff --git a/src/scsi-netbsd.c b/src/scsi-netbsd.c index 35cebcb..601c708 100644 --- a/src/scsi-netbsd.c +++ b/src/scsi-netbsd.c @@ -23,6 +23,8 @@ /* NetBSD support by Sergey Svishchev . */ +/*** src type: no GUI code ***/ + #include "dvdisaster.h" #include "scsi-layer.h" diff --git a/src/scsi-simulated.c b/src/scsi-simulated.c index e1d76fd..0818867 100644 --- a/src/scsi-simulated.c +++ b/src/scsi-simulated.c @@ -20,6 +20,8 @@ * along with dvdisaster. If not, see . */ +/*** src type: no GUI code ***/ + #include "dvdisaster.h" #include "scsi-layer.h" diff --git a/src/scsi-unknown.c b/src/scsi-unknown.c index 29fbfbb..051d328 100644 --- a/src/scsi-unknown.c +++ b/src/scsi-unknown.c @@ -20,12 +20,14 @@ * along with dvdisaster. If not, see . */ +/*** src type: no GUI code ***/ + #include "dvdisaster.h" #include "scsi-layer.h" #include "udf.h" -#if defined(SYS_UNKNOWN) || defined(SYS_HURD) +#ifdef SYS_UNKNOWN /* Dummy routines so that we can compile on unknown architectures for which we don't have SCSI support yet. */ @@ -51,4 +53,4 @@ int SendPacket(DeviceHandle *dh, unsigned char *cmd, int cdb_size, unsigned char return -1; } -#endif /* defined(SYS_UNKNOWN) || defined(SYS_HURD) */ +#endif /* SYS_UNKNOWN */ diff --git a/src/show-html.c b/src/show-html.c deleted file mode 100644 index 9a46fc3..0000000 --- a/src/show-html.c +++ /dev/null @@ -1,408 +0,0 @@ -/* dvdisaster: Additional error correction for optical media. - * Copyright (C) 2004-2012 Carsten Gnoerlich. - * Project home page: http://www.dvdisaster.com - * Email: carsten@dvdisaster.com -or- cgnoerlich@fsfe.org - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA, - * or direct your browser at http://www.gnu.org. - */ -// DVDISASTER_GUI_FILE - -#include "dvdisaster.h" - -#if defined(SYS_LINUX) || defined(SYS_FREEBSD) || defined(SYS_KFREEBSD) || \ - defined(SYS_NETBSD) || defined(SYS_HURD) -#include -#endif - -#ifdef SYS_MINGW -#include "windows.h" -#include "shellapi.h" -#endif - -/*** - *** Ask user to specify his browser - ***/ - -#if defined(SYS_LINUX) || defined(SYS_FREEBSD) || defined(SYS_KFREEBSD) || \ - defined(SYS_NETBSD) || defined(SYS_HURD) - -#define SEARCH_BUTTON 1 - -typedef struct -{ GtkWidget *dialog; - GtkWidget *entry; - GtkWidget *search; - GtkWidget *filesel; - GtkWidget *fileok; - GtkWidget *filecancel; - char *url; -} browser_dialog_info; - -static void response_cb(GtkWidget *widget, int response, gpointer data) -{ browser_dialog_info *bdi = (browser_dialog_info*)data; - - switch(response) - { case GTK_RESPONSE_ACCEPT: - if(Closure->browser) g_free(Closure->browser); - Closure->browser = g_strdup(gtk_entry_get_text(GTK_ENTRY(bdi->entry))); - ShowHTML(bdi->url); - break; - - case GTK_RESPONSE_REJECT: - if(bdi->url) g_free(bdi->url); - break; - } - gtk_widget_destroy(widget); - if(bdi->filesel) - gtk_widget_destroy(bdi->filesel); - g_free(bdi); -} - -static void search_cb(GtkWidget *widget, gpointer data) -{ browser_dialog_info *bdi = (browser_dialog_info*)data; - - if(widget == bdi->search) - { bdi->filesel = gtk_file_selection_new(_utf("windowtitle|Choose a browser")); - bdi->fileok = GTK_FILE_SELECTION(bdi->filesel)->ok_button; - bdi->filecancel = GTK_FILE_SELECTION(bdi->filesel)->cancel_button; - ReverseCancelOK(GTK_DIALOG(bdi->filesel)); - gtk_file_selection_hide_fileop_buttons(GTK_FILE_SELECTION(bdi->filesel)); - g_signal_connect(G_OBJECT(GTK_FILE_SELECTION(bdi->filesel)->ok_button), "clicked", - G_CALLBACK(search_cb), bdi); - - g_signal_connect(G_OBJECT(GTK_FILE_SELECTION(bdi->filesel)->cancel_button), "clicked", - G_CALLBACK(search_cb), bdi); - - gtk_widget_show(bdi->filesel); - } - - if(widget == bdi->fileok) - { - if(Closure->browser) g_free(Closure->browser); - Closure->browser = g_strdup(gtk_file_selection_get_filename(GTK_FILE_SELECTION(bdi->filesel))); - ShowHTML(bdi->url); - gtk_widget_destroy(bdi->filesel); - gtk_widget_destroy(bdi->dialog); - g_free(bdi); - return; - } - - if(widget == bdi->filecancel) - { gtk_widget_destroy(bdi->filesel); - bdi->filesel = NULL; - } -} - -static void browser_dialog(char *url) -{ GtkWidget *dialog, *vbox, *hbox, *label, *entry, *button; - browser_dialog_info *bdi = g_malloc0(sizeof(browser_dialog_info)); - - /* Create the dialog */ - - dialog = gtk_dialog_new_with_buttons(_utf("windowtitle|Browser required"), - Closure->window, GTK_DIALOG_DESTROY_WITH_PARENT, - GTK_STOCK_OK, GTK_RESPONSE_ACCEPT, - GTK_STOCK_CANCEL, GTK_RESPONSE_REJECT, NULL); - bdi->dialog = dialog; - if(url) - { bdi->url = g_strdup(url); - } - - vbox = gtk_vbox_new(FALSE, 0); - gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog)->vbox), vbox, FALSE, FALSE, 0); - gtk_container_set_border_width(GTK_CONTAINER(vbox), 10); - - /* Insert the contents */ - - label = gtk_label_new(NULL); - gtk_label_set_markup(GTK_LABEL(label), _utf("Could not find a suitable browser.\n\n" - "Which browser would you like to use\n" - "for reading the online documentation?\n\n" - "Please enter its name (e.g. mozilla) or\n" - "use the \"Search\" button for a file dialog.\n")), - gtk_box_pack_start(GTK_BOX(vbox), label, TRUE, TRUE, 10); - - hbox = gtk_hbox_new(FALSE, 0); - gtk_box_pack_start(GTK_BOX(vbox), hbox, TRUE, TRUE, 10); - - bdi->entry = entry = gtk_entry_new(); - gtk_box_pack_start(GTK_BOX(hbox), entry, FALSE, FALSE, 10); - - bdi->search = button = gtk_button_new_with_label(_utf("Search")); - g_signal_connect(G_OBJECT(button), "clicked", G_CALLBACK(search_cb), bdi); - gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 10); - - /* Show it */ - - g_signal_connect(dialog, "response", G_CALLBACK(response_cb), bdi); - - gtk_widget_show_all(dialog); -} -#endif /* SYS_ unix-like */ - -/*** - *** Show the manual in an external browser - ***/ - -/* - * Check the child processes exit status - * to find whether the browser could be invoked. - */ - -typedef struct -{ pid_t pid; - char *url; - GtkWidget *msg; - int seconds; -} browser_info; - - -static void msg_destroy_cb(GtkWidget *widget, gpointer data) -{ browser_info *bi = (browser_info*)data; - - bi->msg = NULL; -} - -#if defined(SYS_LINUX) || defined(SYS_FREEBSD) || defined(SYS_KFREEBSD) || \ - defined(SYS_NETBSD) || defined(SYS_HURD) - -/* - * The following list of browsers and html wrappers - * will be tried one at a time until one entry succeeds by: - * - returning zero - * - not returning within 60 seconds - */ - -static int browser_index; -static void try_browser(browser_info*); - -static char *browsers[] = -{ "user-selection", - "xdg-open", - "gnome-open", - "htmlview", - "firefox", - "mozilla", - "konqueror", - "epiphany", - "opera", - "/Applications/Safari.app/Contents/MacOS/Safari", /* better way to do this? */ - NULL -}; - -static gboolean browser_timeout_func(gpointer data) -{ browser_info *bi = (browser_info*)data; - int status; - - waitpid(bi->pid, &status, WNOHANG); - - /* At least mozilla returns random values under FreeBSD on success, - so we can't rely on the return value exept our own 110 one. */ - - if(WIFEXITED(status)) - { - switch(WEXITSTATUS(status)) - { case 110: /* browser did not execute */ - browser_index++; - if(!browsers[browser_index]) /* all browsers from the list failed */ - { browser_dialog(bi->url); - - if(bi->msg) - gtk_widget_destroy(bi->msg); - if(bi->url) - g_free(bi->url); - g_free(bi); - } - else /* try next browser from list */ - { bi->seconds = 0; - try_browser(bi); - } - return FALSE; - - case 0: /* browser assumed to be successful */ - default: - if(bi->msg) - gtk_widget_destroy(bi->msg); - if(bi->url) - g_free(bi->url); - g_free(bi); - return FALSE; - } - } - - bi->seconds++; - if(bi->seconds == 10 && bi->msg) - { gtk_widget_destroy(bi->msg); - bi->msg = NULL; - } - - return bi->seconds > 60 ? FALSE : TRUE; -} -#endif /* SYS_ unix-like */ - -#ifdef SYS_MINGW -static gboolean browser_timeout_func(gpointer data) -{ browser_info *bi = (browser_info*)data; - - bi->seconds++; - - if(bi->seconds >= 10) - { if(bi->msg) - { gtk_widget_destroy(bi->msg); - bi->msg = NULL; - } - if(bi->url) g_free(bi->url); - g_free(bi); - return FALSE; - } - - return TRUE; -} -#endif /* SYS_MINGW */ - -/* - * Invoke the browser - */ - -#if defined(SYS_LINUX) || defined(SYS_FREEBSD) || defined(SYS_KFREEBSD) || \ - defined(SYS_NETBSD) || defined(SYS_HURD) -static void try_browser(browser_info *bi) -{ pid_t pid; - - bi->pid = pid = fork(); - - if(pid == -1) - { printf("fork failed\n"); - return; - } - - /* make the parent remember and wait() for the browser */ - - if(pid > 0) - { g_timeout_add(1000, browser_timeout_func, (gpointer)bi); - - if(browser_index) - { g_free(Closure->browser); - Closure->browser = g_strdup(browsers[browser_index]); - } - } - - /* try calling the browser */ - - if(pid == 0) - { char *argv[10]; - int argc = 0; - - argv[argc++] = browser_index ? browsers[browser_index] : Closure->browser; - argv[argc++] = bi->url; - argv[argc++] = NULL; - execvp(argv[0], argv); - - _exit(110); /* couldn't execute */ - } -} -#endif /* SYS_ unix-like */ - - -void ShowHTML(char *target) -{ browser_info *bi = g_malloc0(sizeof(browser_info)); - guint64 ignore; - const char *lang; - char *path = NULL; - int http_url; - - /* If no target is given, select between translations of the manual. */ - - if(!target) target = g_strdup("index.html"); - - http_url = strlen(target) > 4 && !strncmp(target, "http", 4); - - if(!http_url && !strchr(target, '/')) /* create full path */ - { - if(!Closure->docDir) - { - CreateMessage(_("Documentation not installed."), GTK_MESSAGE_ERROR); - g_free(bi); - return; - } - - lang = g_getenv("LANG"); - - if(lang) - { if(!strncmp(lang, "ru", 2)) -#ifdef SYS_MINGW - path = g_strdup_printf("%s\\ru\\%s",Closure->docDir,target); -#else - path = g_strdup_printf("%s/ru/%s",Closure->docDir,target); -#endif - else if(!strncmp(lang, "de", 2)) -#ifdef SYS_MINGW - path = g_strdup_printf("%s\\de\\%s",Closure->docDir,target); -#else - path = g_strdup_printf("%s/de/%s",Closure->docDir,target); -#endif - } - - if(!path) - { -#ifdef SYS_MINGW - path = g_strdup_printf("%s\\en\\%s",Closure->docDir,target); -#else - path = g_strdup_printf("%s/en/%s",Closure->docDir,target); -#endif - } - -#ifdef SYS_MINGW - if(!LargeStat(path, &ignore)) - { - g_free(path); /* the local dir is Windows specific */ - path = g_strdup_printf("%s\\local\\%s",Closure->docDir,target); - } -#endif - g_free(target); - bi->url = path; - } - else bi->url = target; - - if(!http_url && !LargeStat(bi->url, &ignore)) - { - CreateMessage(_("Documentation file\n%s\nnot found.\n"), GTK_MESSAGE_ERROR, bi->url); - g_free(bi); - g_free(bi->url); - return; - } - - /* Lock the help button and show a message for 10 seconds. */ - - TimedInsensitive(Closure->helpButton, 10000); - bi->msg = CreateMessage(_("Please hang on until the browser comes up!"), GTK_MESSAGE_INFO); - g_signal_connect(G_OBJECT(bi->msg), "destroy", G_CALLBACK(msg_destroy_cb), bi); - -#ifdef SYS_MINGW - /* Okay, Billy wins big time here ;-) */ - - ShellExecute(NULL, "open", bi->url, NULL, NULL, SW_SHOWNORMAL); - g_timeout_add(1000, browser_timeout_func, (gpointer)bi); -#endif - -#if defined(SYS_LINUX) || defined(SYS_FREEBSD) || defined(SYS_KFREEBSD) || \ - defined(SYS_NETBSD) || defined(SYS_HURD) - /* Try the first browser */ - - browser_index = 0; - try_browser(bi); -#endif -} diff --git a/src/show-manual.c b/src/show-manual.c index d40165a..2e86186 100644 --- a/src/show-manual.c +++ b/src/show-manual.c @@ -20,6 +20,9 @@ * along with dvdisaster. If not, see . */ +/*** src type: only GUI code ***/ + +#ifdef WITH_GUI_YES #include "dvdisaster.h" #ifdef SYS_MINGW @@ -27,6 +30,7 @@ #include "shellapi.h" #endif +#ifndef SYS_MINGW static void send_errormsg(int fd, char *format, ...) { va_list argp; char *msg; @@ -52,14 +56,19 @@ static int recv_errormsg(int fd, char **msg) return n; } +#endif -void ShowURL(char *target) +void GuiShowURL(char *target) { guint64 ignore; - pid_t pid; int hyperlink = 0; - char *path, *msg; + char *path; + +#ifndef SYS_MINGW + pid_t pid; + char *msg; int err_pipe[2]; /* child may send down err msgs to us here */ int result; +#endif if(target && !strncmp(target, "http", 4)) { hyperlink = 1; @@ -71,7 +80,7 @@ void ShowURL(char *target) if(!hyperlink) { if(!Closure->docDir) { - CreateMessage(_("Documentation not installed."), GTK_MESSAGE_ERROR); + GuiCreateMessage(_("Documentation not installed."), GTK_MESSAGE_ERROR); return; } @@ -86,7 +95,7 @@ void ShowURL(char *target) if(!LargeStat(path, &ignore)) { - CreateMessage(_("Documentation file\n%s\nnot found.\n"), GTK_MESSAGE_ERROR, path); + GuiCreateMessage(_("Documentation file\n%s\nnot found.\n"), GTK_MESSAGE_ERROR, path); g_free(path); return; } @@ -102,7 +111,7 @@ void ShowURL(char *target) result = pipe2(err_pipe, O_CLOEXEC); if(result == -1) - { CreateMessage(_("Could not create pipe before fork"), GTK_MESSAGE_ERROR); + { GuiCreateMessage(_("Could not create pipe before fork"), GTK_MESSAGE_ERROR); return; } pid = fork(); @@ -110,7 +119,7 @@ void ShowURL(char *target) if(pid == -1) { close(err_pipe[0]); close(err_pipe[1]); - CreateMessage(_("Could not fork to start xdg-open"), GTK_MESSAGE_ERROR); + GuiCreateMessage(_("Could not fork to start xdg-open"), GTK_MESSAGE_ERROR); return; } @@ -124,7 +133,7 @@ void ShowURL(char *target) close(err_pipe[0]); /* prepare args and try to exec xdg-open */ - + argv[argc++] = "xdg-open"; argv[argc++] = path; argv[argc++] = NULL; @@ -133,8 +142,8 @@ void ShowURL(char *target) /* if we reach this, telegraph our parent that sth f*cked up */ send_errormsg(err_pipe[1], - _("execvp could not execute \"xdg-open\":\n%s\nIs xdg-open installed correctly?\n"), - strerror(errno)); + _("execvp could not execute \"xdg-open\":\n%s\nIs xdg-open installed correctly?\n"), + strerror(errno)); close(err_pipe[1]); _exit(110); /* couldn't execute */ } @@ -146,7 +155,9 @@ void ShowURL(char *target) close(err_pipe[0]); if(result) - CreateMessage(msg, GTK_MESSAGE_ERROR); + { GuiCreateMessage("%s", GTK_MESSAGE_ERROR, msg); + } #endif } +#endif diff --git a/src/smart-lec.c b/src/smart-lec.c index a864821..7c17623 100644 --- a/src/smart-lec.c +++ b/src/smart-lec.c @@ -20,6 +20,8 @@ * along with dvdisaster. If not, see . */ +/*** src type: no GUI code ***/ + #include "dvdisaster.h" //#define LOCAL_ONLY 1 diff --git a/src/spiral.c b/src/spiral.c index ae12b0c..99b299a 100644 --- a/src/spiral.c +++ b/src/spiral.c @@ -19,8 +19,10 @@ * You should have received a copy of the GNU General Public License * along with dvdisaster. If not, see . */ -// DVDISASTER_GUI_FILE +/*** src type: only GUI code ***/ + +#ifdef WITH_GUI_YES #include "dvdisaster.h" /*** @@ -32,14 +34,18 @@ * Allocate and fill in the spiral data structure */ -Spiral* CreateSpiral(GdkColor *outline, GdkColor *fill, - int start_radius, int segment_size, int n_segments) -{ Spiral *spiral = g_malloc0(sizeof(Spiral)); +Spiral* GuiCreateSpiral(GdkColor *outline, GdkColor *fill, + int start_radius, int segment_size, int n_segments) +{ Spiral *spiral; double a = 0.0; double scale_o = start_radius + segment_size; double ring_expand; int i; + if(!Closure->guiMode) + return NULL; + + spiral = g_malloc0(sizeof(Spiral)); spiral->startRadius = start_radius; spiral->segmentSize = segment_size; spiral->segmentCount = spiral->segmentClipping = n_segments; @@ -63,7 +69,7 @@ Spiral* CreateSpiral(GdkColor *outline, GdkColor *fill, return spiral; } -void SetSpiralWidget(Spiral *spiral, GtkWidget *widget) +void GuiSetSpiralWidget(Spiral *spiral, GtkWidget *widget) { GtkAllocation *al = &widget->allocation; if(!spiral->drawable) @@ -73,8 +79,10 @@ void SetSpiralWidget(Spiral *spiral, GtkWidget *widget) } } -void FreeSpiral(Spiral *spiral) -{ g_free(spiral->segmentPos); +void GuiFreeSpiral(Spiral *spiral) +{ if(!spiral) return; + + g_free(spiral->segmentPos); g_free(spiral->segmentColor); g_free(spiral); } @@ -83,7 +91,7 @@ void FreeSpiral(Spiral *spiral) * Fill spiral segments with given color */ -void FillSpiral(Spiral *spiral, GdkColor *color) +void GuiFillSpiral(Spiral *spiral, GdkColor *color) { int i; if(spiral) @@ -95,7 +103,7 @@ void FillSpiral(Spiral *spiral, GdkColor *color) * Draw the whole spiral */ -void DrawSpiral(Spiral *spiral) +void GuiDrawSpiral(Spiral *spiral) { double a; int xi0,yi0,xo0,yo0; double scale_i,scale_o; @@ -142,7 +150,7 @@ void DrawSpiral(Spiral *spiral) * Draw just one segment of the spiral */ -void DrawSpiralSegment(Spiral *spiral, GdkColor *color, int segment) +void GuiDrawSpiralSegment(Spiral *spiral, GdkColor *color, int segment) { double a; double scale_i,scale_o,ring_expand; GdkPoint points[4]; @@ -183,12 +191,12 @@ void DrawSpiralSegment(Spiral *spiral, GdkColor *color, int segment) * Draw a label above or below the spiral */ -void DrawSpiralLabel(Spiral *spiral, PangoLayout *layout, - char *text, GdkColor *color, int x, int line) +void GuiDrawSpiralLabel(Spiral *spiral, PangoLayout *layout, + char *text, GdkColor *color, int x, int line) { GdkDrawable *d = spiral->drawable; int w,h,y; - SetText(layout, text, &w, &h); + GuiSetText(layout, text, &w, &h); if(line > 0) y = spiral->my + spiral->diameter / 2 + 20 + (line-1) * (10 + h); else y = spiral->my - spiral->diameter / 2 - 20 - h + (line+1) * (10 + h); gdk_gc_set_rgb_fg_color(Closure->drawGC, color); @@ -204,8 +212,11 @@ void DrawSpiralLabel(Spiral *spiral, PangoLayout *layout, * Moving to segment -1 means to disable the cursor. */ -void MoveSpiralCursor(Spiral *spiral, int to_segment) +void GuiMoveSpiralCursor(Spiral *spiral, int to_segment) { + if(!Closure->guiMode) + return; + if(to_segment == spiral->cursorPos) return; @@ -215,7 +226,7 @@ void MoveSpiralCursor(Spiral *spiral, int to_segment) /* Erase old cursor */ if(spiral->cursorPos >= 0) - DrawSpiralSegment(spiral, spiral->colorUnderCursor, spiral->cursorPos); + GuiDrawSpiralSegment(spiral, spiral->colorUnderCursor, spiral->cursorPos); /* Moving to -1 means cursor off */ @@ -232,7 +243,7 @@ void MoveSpiralCursor(Spiral *spiral, int to_segment) /* Draw cursor at new place */ spiral->colorUnderCursor = spiral->segmentColor[to_segment]; - DrawSpiralSegment(spiral, Closure->blueSector, to_segment); + GuiDrawSpiralSegment(spiral, Closure->blueSector, to_segment); } /* @@ -247,14 +258,17 @@ typedef struct _cursor_info static gboolean cursor_idle_func(gpointer data) { cursor_info *ci = (cursor_info*)data; - MoveSpiralCursor(ci->spiral, ci->segment); + GuiMoveSpiralCursor(ci->spiral, ci->segment); g_free(ci); return FALSE; } -void ChangeSpiralCursor(Spiral *spiral, int segment) -{ +void GuiChangeSpiralCursor(Spiral *spiral, int segment) +{ + if(!Closure->guiMode) + return; + if(segment != spiral->cursorPos) { cursor_info *ci = g_malloc(sizeof(cursor_info)); @@ -263,3 +277,4 @@ void ChangeSpiralCursor(Spiral *spiral, int segment) g_idle_add(cursor_idle_func, ci); } } +#endif /* WITH_GUI_YES */ diff --git a/src/udf.c b/src/udf.c index 7f8ebed..d462057 100644 --- a/src/udf.c +++ b/src/udf.c @@ -20,6 +20,8 @@ * along with dvdisaster. If not, see . */ +/*** src type: no GUI code ***/ + #include "dvdisaster.h" #include "udf.h" @@ -364,11 +366,8 @@ static IsoInfo* examine_iso(Image *image) /*** Iterate over the volume decriptors */ for(sector=16; sector<32; sector++) - { -#ifndef WITH_CLI_ONLY_YES - if(Closure->stopActions) + { if(Closure->stopActions) continue; -#endif if(ImageReadSectors(image, buf, sector, 1) != 1) { Verbose(" Sector %2d: unreadable\n", sector); diff --git a/src/welcome-window.c b/src/welcome-window.c index 849a6c3..4c7f758 100644 --- a/src/welcome-window.c +++ b/src/welcome-window.c @@ -19,8 +19,10 @@ * You should have received a copy of the GNU General Public License * along with dvdisaster. If not, see . */ -// DVDISASTER_GUI_FILE +/*** src type: only GUI code ***/ + +#ifdef WITH_GUI_YES #include "dvdisaster.h" /*** @@ -79,19 +81,12 @@ static gboolean expose_cb(GtkWidget *widget, GdkEventExpose *event, gpointer dat Closure->invisibleDash = g_strdup_printf("-", bg->red>>8, bg->green>>8, bg->blue>>8); - AboutText(box, _("This is v0.79.6-pl9. The patchlevel series are enhanced from the last upstream pre-release.\n" - "We add support for a CLI version, BD-R TL/QL, a Windows build, an option to produce bigger BD-R RS03,\n" + GuiAboutText(box, _("This is v0.79.10-pl1. The patchlevel series are enhanced from the last upstream release.\n" + "We add support for BD-R TL/QL, a Windows build, an option to produce bigger BD-R RS03,\n" "images, support for stripping ECC from ISOs, re-enabled adaptive reading (except for RS03), and more.\n" "\n" - "Please refer to the Help > Change log menu for all the details.\n" - "The warning message from the pre-release version is retained below.\n")); + "Please refer to the Help > Change log menu for all the details.")); - AboutText(box, _("Please note:\n" - "This is a pre-release for expert users.\n" - "It may contain unfinished features.\n" - "Adaptive reading is unavailable in this version.\n" - "It will be re-introduced in one of the next releases.")); - gtk_box_pack_start(GTK_BOX(box), gtk_hseparator_new(), FALSE, FALSE, 10); button = gtk_check_button_new_with_label(_utf("Show this message again")); @@ -112,7 +107,7 @@ static gboolean expose_cb(GtkWidget *widget, GdkEventExpose *event, gpointer dat * Create the window */ -void CreateWelcomePage(GtkNotebook *notebook) +void GuiCreateWelcomePage(GtkNotebook *notebook) { GtkWidget *box,*align,*ignore; int show_msg; @@ -135,22 +130,22 @@ void CreateWelcomePage(GtkNotebook *notebook) widget = gtk_image_new_from_stock("dvdisaster-create", GTK_ICON_SIZE_LARGE_TOOLBAR); gtk_box_pack_start(GTK_BOX(box), widget, FALSE, FALSE, 0); - AboutText(box, "dvdisaster"); + GuiAboutText(box, "dvdisaster"); return; #endif } - AboutText(box, _("Welcome to dvdisaster!")); + GuiAboutText(box, _("Welcome to dvdisaster!")); - AboutText(box, _("\ndvdisaster creates error correction data to protect\n" - "optical media (CD,DVD,BD) against data loss.\n")); + GuiAboutText(box, _("\ndvdisaster creates error correction data to protect\n" + "optical media (CD,DVD,BD) against data loss.\n")); - AboutTextWithLink(box, _("Please see the [manual] for typical uses of dvdisaster.\n\n"), + GuiAboutTextWithLink(box, _("Please see the [manual] for typical uses of dvdisaster.\n\n"), "manual.pdf"); - AboutText(box, _("New in this Version:")); + GuiAboutText(box, _("New in this Version:")); /* actual list is generated in the expose event handler */ } - +#endif /* WITH_GUI_YES */