Compare commits

...

80 Commits

Author SHA1 Message Date
Stéphane Lesimple
42bb0a120b release v0.79.10-pl3 2024-02-18 18:29:12 +01:00
Stéphane Lesimple
8d24545c88 fix: corrupt data under Windows with mmap (fixes #82) (#87) 2024-02-18 12:26:41 +01:00
Stéphane Lesimple
16ea27d791 fix: re-enable buttons after Split is used (#86) 2024-02-18 12:21:57 +01:00
Stéphane Lesimple
a7c5268f37 fix: suboptimal layout for RS03 w/o defect management (#79) (#80)
* fix: suboptimal layout for RS03 w/o defect management (#79)

Co-authored-by: jpovixwm <53523617+jpovixwm@users.noreply.github.com>
2024-01-18 11:13:55 +01:00
Stéphane Lesimple
45ff2c5fda chore: update github actions 2023-10-01 15:02:53 +02:00
Stéphane Lesimple
1338598abb chore: fix github actions for release (macOS and AppImage) 2023-09-17 22:39:37 +02:00
Stéphane Lesimple
1577a7c18d chore: fix github actions for release, again 2023-09-17 19:47:49 +02:00
Stéphane Lesimple
36ef8517fd chore: fix github actions for release 2023-09-17 19:37:42 +02:00
Stéphane Lesimple
64c0361179 release v0.79.10-pl2 2023-09-17 19:22:32 +02:00
Stéphane Lesimple
eeb9f0705d feat: re-introduced MacOS support (#71)
* preparatory changes to make dvdisaster compilable under MacOS
* Implemented workaround to macOS Test Unit Ready bug
* fixed manual.pdf not opening on macOS
* Added case for binary being in app bundle
* updated locale files due to change in closure.c
* added back mac app bundle specific files
* reverted make-dist.sh to windows/linux only version and created separate mac script which uses dylibbundler
* altered release.yml accordingly
* chore: fix build under MacOS

---------

Co-authored-by: Stéphane Lesimple <speed47_github@speed47.net>
Co-authored-by: jlnbxn <julianboxan@gmail.com>
Co-authored-by: wojas <github@m.wojas.nl>
2023-09-17 19:13:47 +02:00
Stéphane Lesimple
f38969c7c8 chore: update github actions to use windows-latest 2023-06-01 10:00:29 +02:00
Stéphane Lesimple
be6970f5df chore: add codeql 2023-06-01 10:00:29 +02:00
Stéphane Lesimple
cb3d628f12 chore: fix regtests under github actions 2022-07-23 15:48:06 +02:00
Stéphane Lesimple
62ec64d18f fix: appimage: issue with glib #60 2022-07-23 15:48:06 +02:00
Stéphane Lesimple
981226eec2 chore: fix bad utf8 encoding 2021-10-10 00:58:30 +02:00
Stéphane Lesimple
06b367e1cd fix: re-introduce Windows-specific code in closure.c 2021-10-09 17:32:10 +02:00
Stéphane Lesimple
3d3a65d8c2 fix: manual was not opening from the menu 2021-10-09 17:11:18 +02:00
Stéphane Lesimple
50ff1c0403 fix: documentation path under Windows 2021-10-09 16:56:31 +02:00
Stéphane Lesimple
65976868cf fix: appimage: replace ubuntu 16.04 by 18.04
The 16.04 image is no longer available on GitHub.
2021-10-09 16:56:31 +02:00
Stéphane Lesimple
62b602030a fix: re-introduce modified version info 2021-10-09 16:56:31 +02:00
Stéphane Lesimple
db4d3af31d sync from upstream up to 22:14a375563e2b
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.
2021-10-09 15:22:57 +02:00
Stéphane Lesimple
244111e7db upstream: 13:f2fdd6d3a1f5 [updated TODO and CHANGELOG] 2021-10-09 15:22:57 +02:00
Stéphane Lesimple
eb4c232059 upstream: 12:af7ecbca7a9e [added error message dialog when xdg-open can not be forked] 2021-10-09 15:22:57 +02:00
Stéphane Lesimple
1382e19eb5 upstream: 11:9fa5dfdc9718 [strengthened install and uninstall against path names with blanks]
strengthened install and uninstall against path names with blanks;
small updates in various files and documentation
2021-10-09 15:22:57 +02:00
Stéphane Lesimple
8d088fc6e4 upstream: 9:bcdddf4f72e8 [verified that Slackware 15 fix also works for Debian 11 (sid)] 2021-10-09 15:22:57 +02:00
Stéphane Lesimple
a8eb4acf08 upstream: 8:df8ab86066ea [preparations for 0.79.9 rollout] 2021-10-09 15:22:57 +02:00
dvdisaster developers
90b5ab6443 upstream: 2:3d07b022a7df [aggregated changes for version 0.79.8] 2021-10-09 15:22:57 +02:00
Stéphane Lesimple
eac7884373 upstream: 0:71e73a60f282 [Genesis commit: dvdisaster 0.79.7] 2021-10-09 15:22:57 +02:00
Stéphane Lesimple
8d080d69c5 chore: welcome: forgot to update msg for pl9 2021-07-03 20:55:22 +02:00
Stéphane Lesimple
70342e3174 doc: add image of bdxl read 2021-07-03 20:55:22 +02:00
Stéphane Lesimple
d7a1936536 enh: read linear: more progress info in console 2021-07-03 20:55:22 +02:00
Stéphane Lesimple
3147aa3ce8 chore: README.md: better images 2021-06-30 19:40:27 +02:00
Stéphane Lesimple
ab057244b4 fix: windows build: -mwindows in LDFLAGS instead of CLFAGS 2021-06-28 22:43:41 +02:00
Stéphane Lesimple
275decd40e bump to patchlevel 9 2021-06-28 22:08:51 +02:00
Stéphane Lesimple
9264713614 chore: update locales 2021-06-28 22:08:51 +02:00
Stéphane Lesimple
d0fd46c97c enh: read linear: add sectors ok/err in verbose mode
print amount of correctly read sectors during session
when at least one read failed, in verbose mode
2021-06-28 22:08:51 +02:00
Stéphane Lesimple
451bdf9a7e test: fail by default 2021-06-28 22:08:51 +02:00
Stéphane Lesimple
58b558ea7e enh: linear read: log amount of correctly read sectors during a sesssion 2021-06-27 21:04:23 +02:00
Stéphane Lesimple
6444ff67c5 enh: log window: bigger scrollback buffer 2021-06-27 21:04:23 +02:00
Stéphane Lesimple
bd9777a531 fix: --strip in console without X server would segfault & fix tests 2021-06-26 21:03:54 +02:00
Stéphane Lesimple
464f2b8bfa doc: codecs-specs: regenerate codecs.pdf 2021-06-26 11:59:40 +02:00
Stéphane Lesimple
af178e89bc chore: fix codec-specs Makefile
We need to run latex twice to get the page numbers, figures numbers
and summary right.
2021-06-26 11:59:40 +02:00
Stéphane Lesimple
8710519821 enh: windows: hide useless background console 2021-06-19 21:14:02 +02:00
Stéphane Lesimple
36fa2db965 release pl8 2021-02-22 23:26:59 +01:00
Stéphane Lesimple
442af06f7a enh: gui: medium-info: add an 'exhaustive search' button' 2021-02-22 21:45:07 +01:00
Stéphane Lesimple
d8773e5ee6 enh: gui prefs: add a visual indication of tooltips 2021-02-21 02:18:47 +01:00
Stéphane Lesimple
5063106418 release patchlevel 7 2021-01-30 14:51:38 +01:00
Stéphane Lesimple
430fc71932 chore: update locales 2021-01-30 13:24:00 +01:00
Stéphane Lesimple
c336d039a9 feat: add -z (--strip) to remove ECC data from an iso 2021-01-30 13:17:28 +01:00
Stéphane Lesimple
fd4f8424f7 chore: update tests accordingly 2021-01-27 22:03:59 +01:00
Stéphane Lesimple
cc4547810f enh: more logs around exhaustive RS03 search in verbose 2021-01-27 22:03:59 +01:00
Stéphane Lesimple
f5fa3d9952 enh: add --examine-rs0[23] in --debug mode for CLI 2021-01-27 22:03:59 +01:00
Stéphane Lesimple
dac6f14af0 chore: update readme 2021-01-23 11:51:26 +01:00
Stéphane Lesimple
fef782b246 fix: win: fix the last warns 2021-01-22 22:54:53 +01:00
Stéphane Lesimple
9916ce74bc enh: try harder to find RS02/RS03 sigs in non-exhaustive mode
Look at the extensive comments in the code for more context.
2021-01-21 07:29:04 +01:00
Stéphane Lesimple
355427b6e0 bump to pl6 2021-01-18 00:19:07 +01:00
Stéphane Lesimple
da44e81561 chore: debug printf format with CI 2021-01-17 15:01:49 +01:00
Stéphane Lesimple
9e5ba80e29 chore: better use of configure features 2021-01-17 15:01:49 +01:00
Stéphane Lesimple
c72b85bb9a chore: ensure configure works properly even with -Werror 2021-01-17 15:01:49 +01:00
Stéphane Lesimple
97a4df2f21 chore: update locales 2021-01-17 00:22:13 +01:00
Stéphane Lesimple
f68efb758e fix: printf: some potentially severe format errors 2021-01-17 00:22:13 +01:00
Stéphane Lesimple
66cf0d25ee fix: don't use plain strings in vars as printf formats 2021-01-17 00:22:13 +01:00
Stéphane Lesimple
e8eb7824aa fix: replace %ldd/%ld by PRId64 to remove warnings on all archs 2021-01-17 00:22:13 +01:00
Stéphane Lesimple
a3aedbd4a2 chore: configure: add DEBUG_PRINTF_FORMAT=1 to catch printf format eerrors 2021-01-17 00:22:13 +01:00
Stéphane Lesimple
83acea4684 fix: another warning under clang 2021-01-15 20:33:26 +01:00
Stéphane Lesimple
3bd06abbda fix: warning under clang
src/crcbuf.c:142:24: warning: shifting a negative signed value is undefined [-Wshift-negative-value]
      cb->md5State &= ~MD5_BUILDING;
                      ~^~~~~~~~~~~~
src/dvdisaster.h:561:23: note: expanded from macro 'MD5_BUILDING'
 #define MD5_BUILDING 1<<0
                      ^
1 warning generated.
2021-01-15 19:12:32 +01:00
Stéphane Lesimple
901e87dfcd fix: reversed order or arguments in memset() 2021-01-15 19:12:20 +01:00
Stéphane Lesimple
4518992908 fix: allow blank media in Preferences>Error correction>RS02>query medium 2021-01-13 20:15:29 +01:00
Stéphane Lesimple
802e095cfb fix: additional case of error with blank media in medium info
This completes 396c73f5c8
2021-01-13 20:15:29 +01:00
Stéphane Lesimple
8332b845a7 chore: windist: fix gtk-2.0 location 2021-01-13 20:15:29 +01:00
Stéphane Lesimple
c0de13c027 fix: appimage: adjust docdir for help menu 2021-01-12 23:21:06 +01:00
Stéphane Lesimple
b03bd5d076 chore: update CHANGELOG and version 2021-01-12 21:47:25 +01:00
Stéphane Lesimple
290097c9b3 chore: update locales 2021-01-12 21:47:25 +01:00
Stéphane Lesimple
305f773bd3 chore: update welcome msg and year for release 2021-01-12 21:47:25 +01:00
Stéphane Lesimple
fc18da7043 chore: add CHANGELOG, TODO, CREDITS to dist 2021-01-12 21:16:20 +01:00
Stéphane Lesimple
396c73f5c8 fix: allow blank media in medium-info
This resolves the second part of issue #19.

This bug was present since upstream v0.79.5
2021-01-12 21:07:33 +01:00
Stéphane Lesimple
93c6a7a887 fix: gui: fix the 'SetLabelText() failed' error caption on the medium-info window
This is a cosmetic fix only, this bug is present since at least 0.72,
but only became apparent since commit 4cebc5af, which made the error
no longer silently ignored (v0.72.3).

Fixes one of the reported problem of issue #19.
2021-01-12 20:30:31 +01:00
Stéphane Lesimple
53ddb9a51b chore: appimage: add missing gtk engines 2020-11-21 20:19:47 +01:00
Stéphane Lesimple
0521f5271e chore: enhance packaging 2020-11-21 15:42:16 +01:00
Stéphane Lesimple
3844c156e5 chore: docs: website superseded by manual.pdf, add codecs.pdf symlink 2020-09-07 12:31:22 +02:00
304 changed files with 260948 additions and 18279 deletions

64
.github/workflows/codeql.yml vendored Normal file
View File

@@ -0,0 +1,64 @@
# For most projects, this workflow file will not need changing; you simply need
# to commit it to your repository.
#
# You may wish to alter this file to override the set of languages analyzed,
# or to provide custom queries or build logic.
#
# ******** NOTE ********
# We have attempted to detect the languages in your repository. Please check
# the `language` matrix defined below to confirm you have the correct set of
# supported CodeQL languages.
#
name: "CodeQL"
on: [push,pull_request]
jobs:
analyze:
name: Analyze
runs-on: ${{ (matrix.language == 'swift' && 'macos-latest') || 'ubuntu-latest' }}
permissions:
actions: read
contents: read
security-events: write
strategy:
fail-fast: false
matrix:
language: [ 'cpp' ]
# CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python', 'ruby' ]
# Use only 'java' to analyze code written in Java, Kotlin or both
# Use only 'javascript' to analyze code written in JavaScript, TypeScript or both
# Learn more about CodeQL language support at https://aka.ms/codeql-docs/language-support
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
persist-credentials: false
# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
uses: github/codeql-action/init@v2
with:
languages: ${{ matrix.language }}
# If you wish to specify custom queries, you can do so here or in a config file.
# By default, queries listed here will override any specified in a config file.
# Prefix the list here with "+" to use these queries and those in the config file.
# For more details on CodeQL's query packs, refer to: https://docs.github.com/en/code-security/code-scanning/automatically-scanning-your-code-for-vulnerabilities-and-errors/configuring-code-scanning#using-queries-in-ql-packs
# queries: security-extended,security-and-quality
- name: Build app
run: |
sudo apt-get update && sudo apt-get install -y libglib2.0-dev ghostscript man jq libgtk2.0-dev
./configure --with-werror
nproc && make -j$(nproc)
env:
DEBIAN_FRONTEND: noninteractive
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v2
with:
category: "/language:${{matrix.language}}"

View File

@@ -4,44 +4,33 @@ set -x
github_ref="$1"
if [ -n "$GITHUB_EVENT_PATH" ] && [ -f "$GITHUB_EVENT_PATH" ]; then
if command -v jq >/dev/null; then
upload_url=$(jq -r '.release.upload_url' < $GITHUB_EVENT_PATH)
echo "Upload URL is $upload_url"
echo "::set-output name=upload_url::$upload_url"
fi
else
echo "This should only be run from GitHub Actions"
exit 1
fi
case "$MSYSTEM" in
MINGW64) os=win64; exe=.exe;;
MINGW32) os=win32; exe=.exe;;
*) os=linux64; exe='';;
MINGW64) os=win64; suf=$os-portable; exe=.exe;;
MINGW32) os=win32; suf=$os-portable; exe=.exe;;
*) os=linux64; suf=$os-static; exe='';;
esac
./dvdisaster$exe --version
if ./dvdisaster$exe --version | grep -q NOGUI; then
GUI=0
suffix="$os-cli-only"
suffix=$suf-cli-only
else
GUI=1
suffix=$os-static
suffix=$suf
fi
archive=dvdisaster-$(echo "$github_ref" | grep -Eo '[^/]+$')-$suffix.zip
echo "Archive name is $archive"
echo "::set-output name=archive::$archive"
[ -n "$GITHUB_OUTPUT" ] && echo "archive=$archive" >> "$GITHUB_OUTPUT"
echo "appimage is <$archive>"
mkdir -p dist/locale
cp -vr locale/*/ dist/locale/
if [ "$os" != "linux64" ]; then
if [ "$GUI" = 1 ]; then
mkdir -p dist/share/themes
mkdir -p dist/share/themes dist/lib/gtk-2.0
cp -vr $MINGW_PREFIX/share/themes/MS-Windows dist/share/themes/
cp -vr $MINGW_PREFIX/lib/gtk-2.0 dist/lib/
cp -vr $MINGW_PREFIX/lib/gtk-2.0/* dist/lib/gtk-2.0/
rm -rf dist/lib/gtk-2.0/include
fi
mkdir -p dist/lib
@@ -53,7 +42,7 @@ if [ "$os" != "linux64" ]; then
find dist -type f -name "*.a" -delete
fi
man -t documentation/dvdisaster.en.1 | ps2pdf - dist/dvdisaster.pdf
cp dvdisaster documentation/dvdisaster.*.1 documentation/user-manual/manual.pdf dist/
cp CHANGELOG TODO COPYING CREDITS.* dvdisaster documentation/dvdisaster.*.1 documentation/user-manual/manual.pdf dist/
if command -v zip >/dev/null; then
mv dist ${archive/.zip/}
zip -9r $archive ${archive/.zip/}

51
.github/workflows/make-mac-app.sh vendored Executable file
View File

@@ -0,0 +1,51 @@
#!/bin/bash
set -e
set -x
github_ref="$1"
if ./dvdisaster --version | grep -q NOGUI; then
suffix="-cli-only"
else
suffix=""
fi
archive="dvdisaster-$(echo "$github_ref" | grep -Eo '[^/]+$')$suffix.dmg"
[ -n "$GITHUB_OUTPUT" ] && echo "archive=$archive" >> "$GITHUB_OUTPUT"
echo "mac dmg is <$archive>"
mkdir -p dist
# Create directory structure for the macOS application bundle
mkdir -p dvdisaster.app/Contents/{MacOS,Resources}
# Copy the main executable to the appropriate location
cp dvdisaster dvdisaster.app/Contents/MacOS
# Use dylibbundler to bundle dynamic libraries into the application bundle
dylibbundler -od -cd -b -x dvdisaster.app/Contents/MacOS/dvdisaster -d 'dvdisaster.app/Contents/libs/'
# Copy the Info.plist file to define application metadata
cp macinst/Info.plist dvdisaster.app/Contents/
# Create a directory for documentation resources
mkdir dvdisaster.app/Contents/Resources/documentation
# Copy documentation files to the documentation directory
cp CHANGELOG TODO COPYING CREDITS.* documentation/dvdisaster.*.1 documentation/user-manual/manual.pdf dvdisaster.app/Contents/Resources/documentation
# Copy localization files to the locale directory
find locale/* -maxdepth 0 -type d -exec cp -r {} dvdisaster.app/Contents/Resources/locale/ \;
# Copy the application icon to the resources directory
cp macinst/dvdisaster.icns dvdisaster.app/Contents/Resources/
# Make the main executable executable
chmod +x dvdisaster.app/Contents/MacOS/dvdisaster
# Move the application bundle to the 'dist' directory
mv dvdisaster.app dist
create-dmg "$archive" dist
echo "dist done ($archive)"

View File

@@ -1,210 +1,199 @@
name: autobuild
on:
release:
types: [published]
push:
tags:
- "v*"
jobs:
mac:
runs-on: macos-11
strategy:
matrix:
ui: [cli, gui]
include:
- ui: cli
clionly: --with-gui=no
steps:
- uses: actions/checkout@v4
with:
persist-credentials: false
- name: install prerequisites
env:
HOMEBREW_NO_INSTALL_CLEANUP: 1
run: brew install ghostscript glib gdk-pixbuf dylibbundler create-dmg
- name: install prerequisites (GUI)
if: matrix.ui == 'gui'
env:
HOMEBREW_NO_INSTALL_CLEANUP: 1
run: brew install gtk+
- name: configure
run: |
set +x
./configure ${{ matrix.clionly }} --with-werror
- name: make
run: make -j$(sysctl -n hw.ncpu || 2)
- name: check executability
run: ./dvdisaster --version
- name: check executable (GUI)
if: matrix.ui == 'gui'
run: |
./dvdisaster --version
if ./dvdisaster --version | grep NOGUI; then exit 1; fi
- name: check executable (CLI)
if: matrix.ui == 'cli'
run: |
./dvdisaster --version
./dvdisaster --version | grep NOGUI
- name: build dist
run: ./.github/workflows/make-mac-app.sh ${{ github.ref }}
id: dist
- name: Release
uses: softprops/action-gh-release@v1
with:
files: ${{ steps.dist.outputs.archive }}
draft: true
win64-gui:
runs-on: windows-2016
win:
runs-on: windows-latest
strategy:
matrix:
arch: [x86_64, i686]
ui: [cli, gui]
include:
- arch: x86_64
msystem: MINGW64
grep: x86-64
- arch: i686
msystem: MINGW32
grep: 386
- ui: cli
clionly: --with-gui=no
defaults:
run:
shell: msys2 {0}
steps:
- uses: msys2/setup-msys2@v2
with:
msystem: MINGW64
update: false
install: git diffutils make pkg-config mingw-w64-x86_64-gtk2 mingw-w64-x86_64-glib2 mingw-w64-x86_64-gcc mingw-w64-x86_64-ghostscript mingw-w64-x86_64-jq mingw-w64-x86_64-ntldd-git man zip
- run: git config --global core.autocrlf input
shell: bash
- uses: actions/checkout@v2
- name: configure
run: ./configure
- name: make
run: nproc && make -j$(nproc)
- name: check executable
run: |
- uses: msys2/setup-msys2@v2
with:
msystem: ${{ matrix.msystem }}
update: false
install: git diffutils make pkg-config mingw-w64-${{ matrix.arch }}-glib2 mingw-w64-${{ matrix.arch }}-gcc mingw-w64-${{ matrix.arch }}-ghostscript mingw-w64-${{ matrix.arch }}-ntldd-git man zip
- name: install GUI prereqs
if: matrix.ui == 'gui'
run: pacman -S --noconfirm mingw-w64-${{ matrix.arch }}-gtk2
- name: git config
run: git config --global core.autocrlf input
shell: bash
- uses: actions/checkout@v4
with:
persist-credentials: false
- name: configure
run: ./configure ${{ matrix.clionly }}
- name: make
run: nproc && make -j$(nproc)
- name: check executable
run: |
./dvdisaster.exe --version
file dvdisaster.exe
./dvdisaster.exe --version | grep -q -e dirty -e NOGUI && exit 1
file dvdisaster.exe | grep -q 'x86-64, for MS Windows'
- name: prepare dist
run: ./.github/workflows/make-dist.sh ${{ github.ref }}
id: dist
- name: check executability of dist from cmd.exe
shell: cmd
run: |
if ./dvdisaster.exe --version | grep dirty; then exit 1; fi
file dvdisaster.exe | grep -q '${{ matrix.grep }}, for MS Windows'
- name: check executable (GUI)
if: matrix.ui == 'gui'
run: if ./dvdisaster.exe --version | grep NOGUI; then exit 1; fi
- name: check executable (CLI)
if: matrix.ui == 'cli'
run: ./dvdisaster.exe --version | grep NOGUI
- name: prepare dist
run: ./.github/workflows/make-dist.sh ${{ github.ref }}
id: dist
- name: check executability of dist from cmd.exe
shell: cmd
run: |
cd dist
dvdisaster.exe --version
- name: Upload Release Asset
id: upload-release-asset
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.dist.outputs.upload_url }}
asset_path: ./${{ steps.dist.outputs.archive }}
asset_name: ${{ steps.dist.outputs.archive }}
asset_content_type: application/zip
win32-gui:
runs-on: windows-2016
defaults:
run:
shell: msys2 {0}
steps:
- uses: msys2/setup-msys2@v2
with:
msystem: MINGW32
update: false
install: git diffutils make pkg-config mingw-w64-i686-gtk2 mingw-w64-i686-glib2 mingw-w64-i686-gcc mingw-w64-i686-ghostscript mingw-w64-i686-jq mingw-w64-i686-ntldd-git man zip
- run: git config --global core.autocrlf input
shell: bash
- uses: actions/checkout@v2
- name: configure
run: ./configure
- name: make
run: nproc && make -j$(nproc)
- name: check executable
run: |
./dvdisaster.exe --version
file dvdisaster.exe
./dvdisaster.exe --version | grep -q -e dirty -e NOGUI && exit 1
file dvdisaster.exe | grep -q '386, for MS Windows'
- name: prepare dist
run: ./.github/workflows/make-dist.sh ${{ github.ref }}
id: dist
- name: check executability of dist from cmd.exe
shell: cmd
run: |
cd dist
dvdisaster.exe --version
- name: Upload Release Asset
id: upload-release-asset
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.dist.outputs.upload_url }}
asset_path: ./${{ steps.dist.outputs.archive }}
asset_name: ${{ steps.dist.outputs.archive }}
asset_content_type: application/zip
win64-cli:
runs-on: windows-2016
defaults:
run:
shell: msys2 {0}
steps:
- uses: msys2/setup-msys2@v2
with:
msystem: MINGW64
update: false
install: git diffutils make pkg-config mingw-w64-x86_64-glib2 mingw-w64-x86_64-gcc mingw-w64-x86_64-ghostscript mingw-w64-x86_64-jq mingw-w64-x86_64-ntldd-git man zip
- run: git config --global core.autocrlf input
shell: bash
- uses: actions/checkout@v2
- name: configure
run: env CLI_ONLY=1 ./configure
- name: make
run: nproc && make -j$(nproc)
- name: check executable
run: |
./dvdisaster.exe --version
file dvdisaster.exe
./dvdisaster.exe --version | grep -q -e dirty && exit 1
./dvdisaster.exe --version | grep -q NOGUI
file dvdisaster.exe | grep -q 'x86-64, for MS Windows'
- name: prepare dist
run: ./.github/workflows/make-dist.sh ${{ github.ref }}
id: dist
- name: check executability of dist from cmd.exe
shell: cmd
run: |
cd dist
dvdisaster.exe --version
- name: Upload Release Asset
id: upload-release-asset
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.dist.outputs.upload_url }}
asset_path: ./${{ steps.dist.outputs.archive }}
asset_name: ${{ steps.dist.outputs.archive }}
asset_content_type: application/zip
win32-cli:
runs-on: windows-2016
defaults:
run:
shell: msys2 {0}
steps:
- uses: msys2/setup-msys2@v2
with:
msystem: MINGW32
update: false
install: git diffutils make pkg-config mingw-w64-i686-glib2 mingw-w64-i686-gcc mingw-w64-i686-ghostscript mingw-w64-i686-jq mingw-w64-i686-ntldd-git man zip
- run: git config --global core.autocrlf input
shell: bash
- uses: actions/checkout@v2
- name: configure
run: env CLI_ONLY=1 ./configure
- name: make
run: nproc && make -j$(nproc)
- name: check executable
run: |
./dvdisaster.exe --version
file dvdisaster.exe
./dvdisaster.exe --version | grep -q -e dirty && exit 1
./dvdisaster.exe --version | grep -q NOGUI
file dvdisaster.exe | grep -q '386, for MS Windows'
- name: prepare dist
run: ./.github/workflows/make-dist.sh ${{ github.ref }}
id: dist
- name: check executability of dist from cmd.exe
shell: cmd
run: |
cd dist
dvdisaster.exe --version
- name: Upload Release Asset
id: upload-release-asset
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.dist.outputs.upload_url }}
asset_path: ./${{ steps.dist.outputs.archive }}
asset_name: ${{ steps.dist.outputs.archive }}
asset_content_type: application/zip
- name: Release
uses: softprops/action-gh-release@v1
with:
files: ${{ steps.dist.outputs.archive }}
draft: true
linux64-cli:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: install prerequisites
run: sudo apt update && sudo apt install -y libglib2.0-dev ghostscript man jq
- name: configure
run: env CLI_ONLY=1 ./configure
- name: make
run: nproc && make -j$(nproc) && make static && mv -f dvdisaster-static dvdisaster
- name: check executable
run: |
./dvdisaster --version && ./dvdisaster --version | grep -q dirty || true
file dvdisaster && file dvdisaster | grep -q 'ELF 64' && file dvdisaster | grep -q 'statically linked'
- uses: actions/checkout@v4
with:
persist-credentials: false
- name: install prerequisites
run: sudo apt update && sudo apt install -y libglib2.0-dev ghostscript man
- name: configure
run: ./configure --with-gui=no
- name: make
run: nproc && make -j$(nproc) && make static && mv -f dvdisaster-static dvdisaster
- name: check executable
run: |
./dvdisaster --version && ./dvdisaster --version | grep -q dirty || true
file dvdisaster && file dvdisaster | grep -q 'ELF 64' && file dvdisaster | grep -q 'statically linked'
- name: build dist
run: ./.github/workflows/make-dist.sh ${{ github.ref }}
id: dist
- name: Upload Release Asset
id: upload-release-asset
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.dist.outputs.upload_url }}
asset_path: ./${{ steps.dist.outputs.archive }}
asset_name: ${{ steps.dist.outputs.archive }}
asset_content_type: application/zip
- name: build dist
run: ./.github/workflows/make-dist.sh ${{ github.ref }}
id: dist
- name: Release
uses: softprops/action-gh-release@v1
with:
files: ${{ steps.dist.outputs.archive }}
draft: true
linux64-appimage:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
persist-credentials: false
- name: install prerequisites on host
run: sudo apt-get update && sudo apt-get install -y fuse
- name: docker
run: |
mkdir -p /tmp/dist
docker run --device /dev/fuse --privileged --name uu -d -v $PWD:/code -v /tmp/dist:/dist ubuntu:14.04 sleep 1800
- name: install prerequisites in docker
run: docker exec uu sh -c 'sudo apt update && sudo apt install -y libglib2.0-dev ghostscript man libgtk2.0-dev gtk2-engines-pixbuf gtk2-engines pkg-config gnome-themes-standard fuse'
- name: configure in docker
run: docker exec uu sh -c 'cd /code && ./configure --prefix=/usr'
- name: make in docker
run: docker exec uu sh -c 'make -C /code -j$(nproc) && make -C /code'
- name: make install in docker
run: docker exec uu sh -c 'cd /code && touch documentation/user-manual/manual.pdf && make install DESTDIR=/dist'
- name: copy things to dist in docker
run: docker exec uu sh -c 'install -d /dist/usr/lib/gtk-2.0 && cp -va $(pkg-config --variable=libdir gtk+-2.0)/gtk-2.0/$(pkg-config --variable=gtk_binary_version gtk+-2.0)/* /dist/usr/lib/gtk-2.0'
- name: build appimage in docker
run: |
wget -q https://github.com/linuxdeploy/linuxdeploy/releases/download/continuous/linuxdeploy-x86_64.AppImage
chmod 755 linuxdeploy-x86_64.AppImage
docker exec -e LINUXDEPLOY_OUTPUT_VERSION=$(echo "${{ github.ref }}" | grep -Eo '[^/]+$') -e ARCH=x86_64 uu sh -c 'cd /code && ./linuxdeploy-x86_64.AppImage -d contrib/dvdisaster.desktop -i contrib/dvdisaster64.png -i contrib/dvdisaster48.png -i contrib/dvdisaster32.png -i contrib/dvdisaster16.png --icon-filename dvdisaster --custom-apprun=contrib/AppRun.sh --appdir /dist/ --output appimage'
- name: fix perms
run: docker exec uu sh -c "chown -R $UID /dist /code/*.AppImage"
- name: apply glib workaround
env:
ARCH: x86_64
run: |
wget -q https://github.com/AppImage/AppImageKit/releases/download/continuous/appimagetool-x86_64.AppImage
chmod 755 appimagetool-x86_64.AppImage
exe=$(ls -1 dvdisaster*.AppImage)
chmod 755 $exe
./$exe --appimage-extract
rm -vf $exe
env LINUXDEPLOY_OUTPUT_VERSION=$(echo "${{ github.ref }}" | grep -Eo '[^/]+$') ./appimagetool-x86_64.AppImage -v squashfs-root
mv -v dvdisaster*AppImage $exe
chmod 755 $exe
- name: test appimage
id: dist
run: |
chmod 755 dvdisaster*.AppImage && ./dvdisaster*.AppImage --version
archive=$(ls -1 dvdisaster*.AppImage)
echo "archive=$archive" >> "$GITHUB_OUTPUT"
echo "appimage is <$archive>"
- name: Release
uses: softprops/action-gh-release@v1
with:
files: ${{ steps.dist.outputs.archive }}
draft: true

View File

@@ -3,185 +3,167 @@ name: non-regression tests
on: [pull_request]
jobs:
win64-gui:
runs-on: windows-2016
defaults:
run:
shell: msys2 {0}
mac:
runs-on: macos-latest
strategy:
matrix:
ui: [cli, gui]
printf: [fmtdbg, normal]
include:
- ui: cli
clionly: --with-gui=no
- printf: fmtdbg
debugprintf: --with-debug-printf-format
steps:
- uses: msys2/setup-msys2@v2
- uses: actions/checkout@v4
with:
msystem: MINGW64
update: false
install: git diffutils make pkg-config mingw-w64-x86_64-gtk2 mingw-w64-x86_64-glib2 mingw-w64-x86_64-gcc mingw-w64-x86_64-ghostscript mingw-w64-x86_64-jq mingw-w64-x86_64-ntldd-git man zip
- run: git config --global core.autocrlf input
shell: bash
- uses: actions/checkout@v2
- name: configure
run: ./configure
- name: make
run: nproc && make -j$(nproc)
- name: check executable
run: |
./dvdisaster.exe --version
file dvdisaster.exe
./dvdisaster.exe --version | grep -q -e dirty -e NOGUI && exit 1
file dvdisaster.exe | grep -q 'x86-64, for MS Windows'
- name: prepare dist
run: ./.github/workflows/make-dist.sh ${{ github.ref }}
id: dist
- name: check executability of dist from cmd.exe
shell: cmd
run: |
cd dist
dvdisaster.exe --version
- name: regression tests
run: mkdir /var/tmp/regtest && export REGTEST_NO_UTF8=1 && ./regtest/runtests.sh
win32-gui:
runs-on: windows-2016
defaults:
run:
shell: msys2 {0}
steps:
- uses: msys2/setup-msys2@v2
with:
msystem: MINGW32
update: false
install: git diffutils make pkg-config mingw-w64-i686-gtk2 mingw-w64-i686-glib2 mingw-w64-i686-gcc mingw-w64-i686-ghostscript mingw-w64-i686-jq mingw-w64-i686-ntldd-git man zip
- run: git config --global core.autocrlf input
shell: bash
- uses: actions/checkout@v2
- name: configure
run: ./configure
- name: make
run: nproc && make -j$(nproc)
- name: check executable
run: |
./dvdisaster.exe --version
file dvdisaster.exe
./dvdisaster.exe --version | grep -q -e dirty -e NOGUI && exit 1
file dvdisaster.exe | grep -q '386, for MS Windows'
- name: prepare dist
run: ./.github/workflows/make-dist.sh ${{ github.ref }}
id: dist
- name: check executability of dist from cmd.exe
shell: cmd
run: |
cd dist
dvdisaster.exe --version
- name: regression tests
run: mkdir /var/tmp/regtest && export REGTEST_NO_UTF8=1 && ./regtest/runtests.sh
win64-cli:
runs-on: windows-2016
defaults:
run:
shell: msys2 {0}
steps:
- uses: msys2/setup-msys2@v2
with:
msystem: MINGW64
update: false
install: git diffutils make pkg-config mingw-w64-x86_64-glib2 mingw-w64-x86_64-gcc mingw-w64-x86_64-ghostscript mingw-w64-x86_64-jq mingw-w64-x86_64-ntldd-git man zip
- run: git config --global core.autocrlf input
shell: bash
- uses: actions/checkout@v2
- name: configure
run: env CLI_ONLY=1 ./configure
- name: make
run: nproc && make -j$(nproc)
- name: check executable
run: |
./dvdisaster.exe --version
file dvdisaster.exe
./dvdisaster.exe --version | grep -q -e dirty && exit 1
./dvdisaster.exe --version | grep -q NOGUI
file dvdisaster.exe | grep -q 'x86-64, for MS Windows'
- name: prepare dist
run: ./.github/workflows/make-dist.sh ${{ github.ref }}
id: dist
- name: check executability of dist from cmd.exe
shell: cmd
run: |
cd dist
dvdisaster.exe --version
- name: regression tests
run: mkdir /var/tmp/regtest && export REGTEST_NO_UTF8=1 && ./regtest/runtests.sh
win32-cli:
runs-on: windows-2016
defaults:
run:
shell: msys2 {0}
steps:
- uses: msys2/setup-msys2@v2
with:
msystem: MINGW32
update: false
install: git diffutils make pkg-config mingw-w64-i686-glib2 mingw-w64-i686-gcc mingw-w64-i686-ghostscript mingw-w64-i686-jq mingw-w64-i686-ntldd-git man zip
- run: git config --global core.autocrlf input
shell: bash
- uses: actions/checkout@v2
- name: configure
run: env CLI_ONLY=1 ./configure
- name: make
run: nproc && make -j$(nproc)
- name: check executable
run: |
./dvdisaster.exe --version
file dvdisaster.exe
./dvdisaster.exe --version | grep -q -e dirty && exit 1
./dvdisaster.exe --version | grep -q NOGUI
file dvdisaster.exe | grep -q '386, for MS Windows'
- name: prepare dist
run: ./.github/workflows/make-dist.sh ${{ github.ref }}
id: dist
- name: check executability of dist from cmd.exe
shell: cmd
run: |
cd dist
dvdisaster.exe --version
- name: regression tests
run: mkdir /var/tmp/regtest && export REGTEST_NO_UTF8=1 && ./regtest/runtests.sh
linux64-cli:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
persist-credentials: false
- name: install prerequisites
run: sudo apt update && sudo apt install -y libglib2.0-dev ghostscript man jq
env:
HOMEBREW_NO_INSTALL_CLEANUP: 1
run: brew install ghostscript
- name: install prerequisites (GUI)
if: matrix.ui == 'gui'
env:
HOMEBREW_NO_INSTALL_CLEANUP: 1
run: brew install gtk+
- name: configure
run: env CLI_ONLY=1 ./configure
run: |
set +x
./configure ${{ matrix.clionly }} ${{ matrix.debugprintf }} --with-werror
- name: make
run: make -j$(sysctl -n hw.ncpu || 2)
- name: check executability
run: ./dvdisaster --version
- name: check executable (GUI)
if: matrix.ui == 'gui'
run: |
./dvdisaster --version
if ./dvdisaster --version | grep NOGUI; then exit 1; fi
- name: check executable (CLI)
if: matrix.ui == 'cli'
run: |
./dvdisaster --version
./dvdisaster --version | grep NOGUI
- name: prepare dist
run: ./.github/workflows/make-dist.sh ${{ github.ref }}
- name: regression tests
if: matrix.printf == 'normal'
env:
REGTEST_NO_UTF8: 1
run: mkdir /var/tmp/regtest && ./regtest/runtests.sh
win:
runs-on: windows-latest
strategy:
matrix:
arch: [x86_64, i686]
ui: [cli, gui]
printf: [fmtdbg, normal]
include:
- arch: x86_64
msystem: MINGW64
grep: x86-64
- arch: i686
msystem: MINGW32
grep: 386
- ui: cli
clionly: --with-gui=no
- printf: fmtdbg
debugprintf: --with-debug-printf-format
defaults:
run:
shell: msys2 {0}
steps:
- uses: msys2/setup-msys2@v2
with:
msystem: ${{ matrix.msystem }}
update: false
install: git diffutils make pkg-config mingw-w64-${{ matrix.arch }}-glib2 mingw-w64-${{ matrix.arch }}-gcc mingw-w64-${{ matrix.arch }}-ghostscript mingw-w64-${{ matrix.arch }}-ntldd-git man zip
- name: install GUI prereqs
if: matrix.ui == 'gui'
run: pacman -S --noconfirm mingw-w64-${{ matrix.arch }}-gtk2
- name: git config
run: git config --global core.autocrlf input
shell: bash
- uses: actions/checkout@v4
with:
persist-credentials: false
- name: configure
run: |
echo running ./configure ${{ matrix.clionly }} ${{ matrix.debugprintf }} --with-werror
./configure ${{ matrix.clionly }} ${{ matrix.debugprintf }} --with-werror
- name: make
run: nproc && make -j$(nproc)
- name: check executable
run: |
./dvdisaster.exe --version
file dvdisaster.exe
if ./dvdisaster.exe --version | grep dirty; then exit 1; fi
file dvdisaster.exe | grep -q '${{ matrix.grep }}, for MS Windows'
- name: check executable (GUI)
if: matrix.ui == 'gui'
run: |
./dvdisaster.exe --version
if ./dvdisaster.exe --version | grep NOGUI; then exit 1; fi
- name: check executable (CLI)
if: matrix.ui == 'cli'
run: |
./dvdisaster.exe --version
./dvdisaster.exe --version | grep NOGUI
- name: try to prepare dist
run: ./.github/workflows/make-dist.sh ${{ github.ref }}
- name: run regression tests
if: matrix.printf == 'normal'
env:
REGTEST_NO_UTF8: 1
run: mkdir /var/tmp/regtest && ./regtest/runtests.sh
linux:
runs-on: ubuntu-latest
strategy:
matrix:
ui: [cli, gui]
printf: [fmtdbg, normal]
include:
- ui: cli
clionly: --with-gui=no
- printf: fmtdbg
debugprintf: --with-debug-printf-format
steps:
- uses: actions/checkout@v4
with:
persist-credentials: false
- name: install prerequisites
env:
DEBIAN_FRONTEND: noninteractive
run: sudo apt-get update && sudo apt-get install -y libglib2.0-dev ghostscript man jq
- name: install prerequisites (GUI)
if: matrix.ui == 'gui'
env:
DEBIAN_FRONTEND: noninteractive
run: sudo apt-get install -y libgtk2.0-dev
- name: configure
run: |
echo ./configure ${{ matrix.clionly }} ${{ matrix.debugprintf }} --with-werror
./configure ${{ matrix.clionly }} ${{ matrix.debugprintf }} --with-werror
- name: make
run: nproc && make -j$(nproc)
- name: check executability
run: ./dvdisaster --version
- name: check executable
run: file dvdisaster && file dvdisaster | grep -q 'ELF 64'
- name: check executable (GUI)
if: matrix.ui == 'gui'
run: |
./dvdisaster --version
if ./dvdisaster --version | grep NOGUI; then exit 1; fi
- name: check executable (CLI)
if: matrix.ui == 'cli'
run: |
./dvdisaster --version
./dvdisaster --version | grep NOGUI
- name: prepare dist
run: ./.github/workflows/make-dist.sh ${{ github.ref }}
- name: regression tests
run: mkdir /var/tmp/regtest && export REGTEST_NO_UTF8=1 && ./regtest/runtests.sh
linux64-gui:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: install prerequisites
run: sudo apt update && sudo apt install -y libglib2.0-dev ghostscript man jq libgtk2.0-dev
- name: configure
run: ./configure
- name: make
run: nproc && make -j$(nproc)
- name: check executability
run: ./dvdisaster --version
- name: check executable
run: file dvdisaster && file dvdisaster | grep -q 'ELF 64'
- name: prepare dist
run: ./.github/workflows/make-dist.sh ${{ github.ref }}
- name: regression tests
run: mkdir /var/tmp/regtest && export REGTEST_NO_UTF8=1 && ./regtest/runtests.sh
if: matrix.printf == 'normal'
env:
REGTEST_NO_UTF8: 1
run: mkdir /var/tmp/regtest && ./regtest/runtests.sh

147
CHANGELOG
View File

@@ -1,4 +1,145 @@
# dvdisaster changelog -*-text-*-
# dvdisaster changelog -*-text-*-
# 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 <http://www.gnu.org/licenses/>.
0.79.10.patchlevel-3 17-02-2024 *UNOFFICIAL*
- fix: corrupt data under Windows with mmap
- fix: re-enable buttons after Split is used
0.79.10.patchlevel-2 17-09-2023 *UNOFFICIAL*
- re-introduced MacOS build. No other functional change since v0.79.10-pl1.
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
resulting from gtk-2 / glib mismatches
- safeguarded install and uninstall against blanks in path names
0.79.8 11-05-2021
- Revised code for clean compile under gcc-8 and Debian 10 (Buster).
- Simplyfied display of URLS and PDF via xdg-open
- minor rework of user manual
- added skip feature to regtests: sometimes, output rows are permutated due to
a race condition between printf()s. This is rather hard to control.
0.79.7 09-04-2019
- Cleanup of documentation and files for new contact address
0.79.6.patchlevel-9 27-06-2021 *UNOFFICIAL*
- fix: using --strip in console without X server would segfault at program exit
- enh: windows: hide useless background console
- enh: linear read: log amount of correctly read sectors during a sesssion
- enh: log window: use a bigger scrollback buffer
- doc: regenerate codecs.pdf to get proper page numbers
- chore: fix codec-specs Makefile
0.79.6.patchlevel-8 22-02-2021 *UNOFFICIAL*
- enh: gui: medium-info: add an 'exhaustive search' when not enabled in options
- enh: gui: prefs: add a visual cue of tooltips
0.79.6.patchlevel-7 30-01-2021 *UNOFFICIAL*
- feat: add a new button to remove ECC data from an iso ("strip"), restoring an ISO to its previous non-augmented state (option: -z/--strip)
- enh: try harder to find RS02/RS03 sigs in non-exhaustive mode (#19)
- enh: add --examine-rs0[23] in --debug mode for CLI, to force exhaustive search with --medium-info
- enh: more logs around exhaustive RS03 search in verbose
- fix: windows: get rid of the last few warnings, build with -Werror for releases
- chore: update tests, locales & readme
0.79.6.patchlevel-6 17-01-2021 *UNOFFICIAL*
- fix: allow blank media in Preferences>Error correction>RS02>query medium (#19)
- fix: tested compilation under clang, detected a reversed order or arguments in a call to memset(), fixed
- fix: printf: added --with-debug-print-format configure option to permit compile-time detection of printf format errors:
- fixed some potentially severe ones
- replaced %ldd/%ld by PRId64 to remove warnings on all archs
- fix: appimage: adjust docdir for help menu
- chore: ensure configure works properly even if user adds -Werror to CFLAGS
- chore: added --with-werror to configure
- chore: replaced CLI_ONLY=1 by --with-cli-only in configure
- chore: update locales
- chore: debug printf format in GitHub actions tests
0.79.6.patchlevel-5 12-01-2021 *UNOFFICIAL*
- fix: don't error on blank media in medium-info (#19), bug present upstream since 0.79.5
- fix: gui: fix the 'SetLabelText() failed' error caption on the medium-info window (#19), bug present upstream since 0.72.3
- fix: add CHANGELOG, TODO, CREDITS to dist for the Help menu
- chore: appimage: add missing gtk engines and adjust docdir for help menu
- chore: enhance packaging, update locales, changelog et al.
0.79.6.patchlevel-4 04-09-2020 *UNOFFICIAL*
- feat: allow adaptive reading again*
@@ -83,8 +224,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
@@ -119,7 +258,7 @@ do not affect already created RS03 data.
0.79.4 07-10-2012 (not released)
## 0.79.4 is a technical release in order to freeze
## and archive some parts of the source code.
## Do not use for anything prodictive.
## Do not use for anything productive.
## The next useful release will be 0.79.5.
- optical drives would only be detected for /dev/pass[0-9]
on FreeBSD. Fixed to work with arbitrary /dev/pass

View File

@@ -10,6 +10,10 @@ Harald Bögeholz (hwb@heise.de)
Anregungen und Ideen zurück; er hatte zuvor schon eine ähnliche
Strategie entwickelt und in Ausgabe 16/2005 der c't veröffentlicht.
Jesus Cea <jcea@jcea.es>
hat das Projekt am Leben erhalten und ermöglicht momentan das
Datenhosting.
Julian Einwag (julian@einwag.de)
erstellt und pflegt die Mac OS X / Darwin - spezifischen Anpassungen.
@@ -30,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 <stephane@lesimple.fr>
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.

View File

@@ -10,6 +10,9 @@ Harald Bögeholz (hwb@heise.de)
suggestions and ideas; he had implemented a similar strategy
before and published in issue 16/2005 of the german periodical "c't".
Jesus Cea <jcea@jcea.es>
for keeping the project alive and providing hosting for the project
Julian Einwag (julian@einwag.de).
provides and maintains the Mac OS X / Darwin port.
@@ -29,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 <stephane@lesimple.fr>
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.

View File

@@ -1,3 +1,24 @@
# 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 <http://www.gnu.org/licenses/>.
######################################################################
# Begin of dvdisaster makefile template
######################################################################
@@ -15,6 +36,10 @@ MAN_LOCALES = de
# Where to put tar archives (arch, srcdist)
TAR_PREFIX=/dev/shm
# current project homepage
HOMEPAGE="https://dvdisaster.jcea.es/"
######################################################################
# Take over variables from configure
######################################################################
@@ -39,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)
@@ -50,19 +79,25 @@ SYS_OPTIONS = $(CFG_SYS_OPTIONS)
SYS_NAME = $(CFG_SYS_NAME)
HAVE_OPTIONS = $(CFG_HAVE_OPTIONS)
WITH_OPTIONS = $(CFG_WITH_OPTIONS)
OTHER_OPTIONS = $(CFG_OTHER_OPTIONS) -DVERSION=\"$(VERSION)\"
OTHER_OPTIONS = $(CFG_OTHER_OPTIONS) -DVERSION="\"$(VERSION)\""
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)
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) $(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)
# special case for DESTDIR, if BUILDROOT is undef and DESTDIR is,
# set BUILDROOT to DESTDIR
ifeq "" "$(BUILDROOT)"
BUILDROOT = $(DESTDIR)
endif
######################################################################
# Compilation related
######################################################################
@@ -71,7 +106,7 @@ OFILES = $(CFG_OFILES)
all: dvdisaster
src/build.h:
src/build.h: configure
@echo "Updating:" src/build.h
@$(SRCDIR)/scripts/time-stamper.bash $(SRCDIR)/src/build.h
@@ -83,8 +118,12 @@ ${BUILDTMP}/build.o : src/build.c src/build.h
@echo "Compiling:" src/build.o
@$(CC) $(COPTS) -c src/build.c -o $@
${BUILDTMP}/closure.o : src/closure.c src/inlined-icons.h
@echo "Compiling:" src/closure.c
@$(CC) $(COPTS) -c src/closure.c -o $@
${BUILDTMP}/icon-factory.o : src/icon-factory.c src/inlined-icons.h
@echo "Compiling:" src/icon-factory.o
@echo "Compiling:" src/icon-factory.c
@$(CC) $(COPTS) -c src/icon-factory.c -o $@
# Building the dvdisaster binary
@@ -102,35 +141,28 @@ dvdisaster: $(ICONS) $(OFILES)
else $(MAKE) --no-print-directory -C locale; \
fi
src/inlined-icons.h: icons/read.png icons/create.png icons/scan.png icons/fix.png icons/verify.png
@gdk-pixbuf-csource --raw --name=dvdisaster_read icons/read.png >src/inlined-icons.h
@gdk-pixbuf-csource --raw --name=dvdisaster_create icons/create.png >>src/inlined-icons.h
@gdk-pixbuf-csource --raw --name=dvdisaster_scan icons/scan.png >>src/inlined-icons.h
@gdk-pixbuf-csource --raw --name=dvdisaster_fix icons/fix.png >>src/inlined-icons.h
@gdk-pixbuf-csource --raw --name=dvdisaster_verify icons/verify.png >>src/inlined-icons.h
@gdk-pixbuf-csource --raw --name=dvdisaster_open_ecc icons/open-ecc.png >>src/inlined-icons.h
@gdk-pixbuf-csource --raw --name=dvdisaster_open_img icons/open-img.png >>src/inlined-icons.h
@gdk-pixbuf-csource --raw --name=dvdisaster_cd icons/cd.png >>src/inlined-icons.h
@gdk-pixbuf-csource --raw --name=dvdisaster_gtk_help icons/gtk-help.png >>src/inlined-icons.h
@gdk-pixbuf-csource --raw --name=dvdisaster_gtk_index icons/gtk-index.png >>src/inlined-icons.h
@gdk-pixbuf-csource --raw --name=dvdisaster_gtk_preferences icons/gtk-preferences.png >>src/inlined-icons.h
@gdk-pixbuf-csource --raw --name=dvdisaster_gtk_quit icons/gtk-quit.png >>src/inlined-icons.h
@gdk-pixbuf-csource --raw --name=dvdisaster_gtk_stop icons/gtk-stop.png >>src/inlined-icons.h
$(BUILDTMP)/help-dialogs.o: src/help-dialogs.c simple-md5sum
@if test -e fingerprints.md5; \
then if test -e src/help-dialogs.h; then rm src/help-dialogs.h; fi; \
./simple-md5sum -b src/*.h src/*.c | grep -vF -e inlined-icons.h -e build.h | sort -k2 >tmp.md5; \
sort -k2 < fingerprints.md5 >tmp2.md5; \
if ! cmp tmp2.md5 tmp.md5 >/dev/null; \
then echo "#define MODIFIED_SOURCE 1" >> src/help-dialogs.h; \
else echo "#define UNMODIFIED_SOURCE 1" >> src/help-dialogs.h; \
fi; \
rm tmp.md5 tmp2.md5; \
else echo "#define MODIFIED_SOURCE 1" >> src/help-dialogs.h; \
fi
@echo "Compiling:" src/help-dialogs.c
@$(CC) $(COPTS) -c src/help-dialogs.c -o $(BUILDTMP)/help-dialogs.o
# gdk-pixbuf-csource sometimes produces truncated output, so we have to ensure the output
# is valid before appending it to inlined-icons.h:
src/inlined-icons.h: icons/read.png icons/create.png icons/scan.png icons/fix.png icons/verify.png icons/strip.png icons/open-ecc.png icons/open-img.png icons/cd.png icons/gtk-help.png icons/gtk-index.png icons/gtk-preferences.png icons/gtk-quit.png icons/gtk-stop.png icons/tooltip.png icons/nothing.png
@echo "Building:" src/inlined-icons.h
@rm -f src/inlined-icons.h
@while gdk-pixbuf-csource --raw --name=dvdisaster_read icons/read.png >src/.icons.tmp; do grep -q '"};' src/.icons.tmp && break; done; cat src/.icons.tmp >>src/inlined-icons.h
@while gdk-pixbuf-csource --raw --name=dvdisaster_create icons/create.png >src/.icons.tmp; do grep -q '"};' src/.icons.tmp && break; done; cat src/.icons.tmp >>src/inlined-icons.h
@while gdk-pixbuf-csource --raw --name=dvdisaster_scan icons/scan.png >src/.icons.tmp; do grep -q '"};' src/.icons.tmp && break; done; cat src/.icons.tmp >>src/inlined-icons.h
@while gdk-pixbuf-csource --raw --name=dvdisaster_fix icons/fix.png >src/.icons.tmp; do grep -q '"};' src/.icons.tmp && break; done; cat src/.icons.tmp >>src/inlined-icons.h
@while gdk-pixbuf-csource --raw --name=dvdisaster_verify icons/verify.png >src/.icons.tmp; do grep -q '"};' src/.icons.tmp && break; done; cat src/.icons.tmp >>src/inlined-icons.h
@while gdk-pixbuf-csource --raw --name=dvdisaster_strip icons/strip.png >src/.icons.tmp; do grep -q '"};' src/.icons.tmp && break; done; cat src/.icons.tmp >>src/inlined-icons.h
@while gdk-pixbuf-csource --raw --name=dvdisaster_open_ecc icons/open-ecc.png >src/.icons.tmp; do grep -q '"};' src/.icons.tmp && break; done; cat src/.icons.tmp >>src/inlined-icons.h
@while gdk-pixbuf-csource --raw --name=dvdisaster_open_img icons/open-img.png >src/.icons.tmp; do grep -q '"};' src/.icons.tmp && break; done; cat src/.icons.tmp >>src/inlined-icons.h
@while gdk-pixbuf-csource --raw --name=dvdisaster_cd icons/cd.png >src/.icons.tmp; do grep -q '"};' src/.icons.tmp && break; done; cat src/.icons.tmp >>src/inlined-icons.h
@while gdk-pixbuf-csource --raw --name=dvdisaster_gtk_help icons/gtk-help.png >src/.icons.tmp; do grep -q '"};' src/.icons.tmp && break; done; cat src/.icons.tmp >>src/inlined-icons.h
@while gdk-pixbuf-csource --raw --name=dvdisaster_gtk_index icons/gtk-index.png >src/.icons.tmp; do grep -q '"};' src/.icons.tmp && break; done; cat src/.icons.tmp >>src/inlined-icons.h
@while gdk-pixbuf-csource --raw --name=dvdisaster_gtk_preferences icons/gtk-preferences.png >src/.icons.tmp; do grep -q '"};' src/.icons.tmp && break; done; cat src/.icons.tmp >>src/inlined-icons.h
@while gdk-pixbuf-csource --raw --name=dvdisaster_gtk_quit icons/gtk-quit.png >src/.icons.tmp; do grep -q '"};' src/.icons.tmp && break; done; cat src/.icons.tmp >>src/inlined-icons.h
@while gdk-pixbuf-csource --raw --name=dvdisaster_gtk_stop icons/gtk-stop.png >src/.icons.tmp; do grep -q '"};' src/.icons.tmp && break; done; cat src/.icons.tmp >>src/inlined-icons.h
@while gdk-pixbuf-csource --raw --name=dvdisaster_tooltip icons/tooltip.png >src/.icons.tmp; do grep -q '"};' src/.icons.tmp && break; done; cat src/.icons.tmp >>src/inlined-icons.h
@while gdk-pixbuf-csource --raw --name=dvdisaster_nothing icons/nothing.png >src/.icons.tmp; do grep -q '"};' src/.icons.tmp && break; done; cat src/.icons.tmp >>src/inlined-icons.h
@rm -f src/.icons.tmp
$(BUILDTMP)/rs-encoder-sse2.o: src/rs-encoder-sse2.c
@echo "Compiling:" src/rs-encoder-sse2.c
@@ -146,12 +178,10 @@ locale:
untranslated:
@$(MAKE) --no-print-directory -C locale check-untranslated
simple-md5sum: src/md5.c
@$(CC) $(COPTS) $(MUDFLAP_CFLAGS) -DSIMPLE_MD5SUM src/md5.c $(LDFLAGS) $(MUDFLAP_LFLAGS) $(MUDFLAP_LIBS) -o simple-md5sum
version.tex:
@test -d $(SRCDIR)/documentation/config || mkdir $(SRCDIR)/documentation/config
@echo "\\newcommand{\\projectversion}{$(VERSION)}" >$(SRCDIR)/documentation/config/version.tex
@echo "\\newcommand{\\homepage}{\\url{$(HOMEPAGE)}}" >>$(SRCDIR)/documentation/config/version.tex
manual: version.tex
@echo "Producing user manual... "
@@ -161,6 +191,21 @@ manualclean:
@echo "Removing temporary user manual files... "
@$(MAKE) --no-print-directory -C documentation/user-manual clean
manualarchclean:
@echo "Removing generated user manual files... "
@$(MAKE) --no-print-directory -C documentation/user-manual archclean
codecs:
@echo "Producing codecs specification documentation... "
@$(MAKE) --no-print-directory -C documentation/codec-specs
codecsclean:
@echo "Removing temporary codecs specification documentation files... "
@$(MAKE) --no-print-directory -C documentation/codec-specs clean
codecsarchclean:
@echo "Removing generated codecs specification documentation files... "
@$(MAKE) --no-print-directory -C documentation/codec-specs archclean
# Some usage info
@@ -173,6 +218,7 @@ help:
@echo
@echo "Documentation related:"
@echo "manual - create the user manual (requires LaTeX)"
@echo "codecs - create the codecs spec documentation (requires LaTeX)"
@echo
@echo "Locale related:"
@echo "locale - update locale files"
@@ -235,56 +281,67 @@ show:
install: dvdisaster manual
@echo "Installing package..."
install -d $(BUILDROOT)$(BINDIR)
install dvdisaster $(BUILDROOT)$(BINDIR)
install -d $(BUILDROOT)$(DOCSUBDIR)
install -m 644 CHANGELOG $(BUILDROOT)$(DOCSUBDIR)
install -m 644 COPYING $(BUILDROOT)$(DOCSUBDIR)
install -m 644 CREDITS* $(BUILDROOT)$(DOCSUBDIR)
install -m 644 README.MODIFYING $(BUILDROOT)$(DOCSUBDIR)
install -m 644 TODO $(BUILDROOT)$(DOCSUBDIR)
install -d $(BUILDROOT)$(DOCSUBDIR)
(cd documentation/user-manual; install -m 644 manual.pdf $(BUILDROOT)$(DOCSUBDIR))
install -d $(BUILDROOT)$(MANDIR)/man1
install -d $(BUILDROOT)$(MANDIR)/de/man1
install -d "$(BUILDROOT)$(BINDIR)"
install dvdisaster "$(BUILDROOT)$(BINDIR)"
install -d "$(BUILDROOT)$(DOCSUBDIR)"
install -m 644 CHANGELOG "$(BUILDROOT)$(DOCSUBDIR)"
install -m 644 COPYING "$(BUILDROOT)$(DOCSUBDIR)"
install -m 644 CREDITS* "$(BUILDROOT)$(DOCSUBDIR)"
install -m 644 TODO "$(BUILDROOT)$(DOCSUBDIR)"
install -d "$(BUILDROOT)$(DOCSUBDIR)"
(cd documentation/user-manual; install -m 644 manual.pdf "$(BUILDROOT)$(DOCSUBDIR)")
install -d "$(BUILDROOT)$(MANDIR)/man1"
install -d "$(BUILDROOT)$(MANDIR)/de/man1"
cd documentation; \
ESCAPED_DOCSUBDIR=`echo $(DOCSUBDIR) | sed -e 's/\//\\\\\//g'`; \
sed "s/%docdir%/$$ESCAPED_DOCSUBDIR/" <dvdisaster.en.1 >dvdisaster.updated; \
install -m 644 dvdisaster.updated $(BUILDROOT)$(MANDIR)/man1/dvdisaster.1; \
install -m 644 dvdisaster.updated "$(BUILDROOT)$(MANDIR)/man1/dvdisaster.1"; \
sed "s/%docdir%/$$ESCAPED_DOCSUBDIR/" <dvdisaster.de.1 >dvdisaster.updated; \
install -m 644 dvdisaster.updated $(BUILDROOT)$(MANDIR)/de/man1/dvdisaster.1; \
install -m 644 dvdisaster.updated "$(BUILDROOT)$(MANDIR)/de/man1/dvdisaster.1"; \
rm dvdisaster.updated
if echo $(WITH_OPTIONS) | grep "NLS_YES" >/dev/null; then \
cd locale; \
for i in ?? ??_??; do\
install -d $(BUILDROOT)$(LOCALEDIR)/$$i/LC_MESSAGES; \
install -m 644 $$i/LC_MESSAGES/dvdisaster.mo $(BUILDROOT)$(LOCALEDIR)/$$i/LC_MESSAGES; \
install -d "$(BUILDROOT)$(LOCALEDIR)/$$i/LC_MESSAGES"; \
install -m 644 $$i/LC_MESSAGES/dvdisaster.mo "$(BUILDROOT)$(LOCALEDIR)/$$i/LC_MESSAGES"; \
done \
fi
@echo "# dvdisaster uninstaller script" > $(BUILDROOT)$(BINDIR)/dvdisaster-uninstall.sh
@echo "# Usage: sh dvdisaster-uninstall.sh" >> $(BUILDROOT)$(BINDIR)/dvdisaster-uninstall.sh
@echo >> $(BUILDROOT)$(BINDIR)/dvdisaster-uninstall.sh
@echo "rm -f $(BINDIR)/dvdisaster $(BINDIR)/dvdisaster-uninstall.sh" >> $(BUILDROOT)$(BINDIR)/dvdisaster-uninstall.sh
@echo "rm -rf $(DOCSUBDIR)" >> $(BUILDROOT)$(BINDIR)/dvdisaster-uninstall.sh
@echo "# dvdisaster uninstaller script" > "$(BUILDROOT)$(BINDIR)/dvdisaster-uninstall.sh"
@echo "# Usage: sh dvdisaster-uninstall.sh" >> "$(BUILDROOT)$(BINDIR)/dvdisaster-uninstall.sh"
@echo >> "$(BUILDROOT)$(BINDIR)/dvdisaster-uninstall.sh"
@echo "rm -f $(BINDIR)/dvdisaster $(BINDIR)/dvdisaster-uninstall.sh" >> "$(BUILDROOT)$(BINDIR)/dvdisaster-uninstall.sh"
@echo "rm -f \"$(DOCSUBDIR)/CHANGELOG\"" >> "$(BUILDROOT)$(BINDIR)/dvdisaster-uninstall.sh"
@echo "rm -f \"$(DOCSUBDIR)/COPYING\"" >> "$(BUILDROOT)$(BINDIR)/dvdisaster-uninstall.sh"
@echo "rm -f \"$(DOCSUBDIR)/CREDITS.de\"" >> "$(BUILDROOT)$(BINDIR)/dvdisaster-uninstall.sh"
@echo "rm -f \"$(DOCSUBDIR)/CREDITS.en\"" >> "$(BUILDROOT)$(BINDIR)/dvdisaster-uninstall.sh"
@echo "rm -f \"$(DOCSUBDIR)/manual.pdf\"" >> "$(BUILDROOT)$(BINDIR)/dvdisaster-uninstall.sh"
@echo "rm -f \"$(DOCSUBDIR)/TODO\"" >> "$(BUILDROOT)$(BINDIR)/dvdisaster-uninstall.sh"
@echo "rmdir \"$(DOCSUBDIR)\"" >> "$(BUILDROOT)$(BINDIR)/dvdisaster-uninstall.sh"
@for i in $(PO_LOCALES); do \
echo "rm $(LOCALEDIR)/$$i/LC_MESSAGES/dvdisaster.mo" >> $(BUILDROOT)$(BINDIR)/dvdisaster-uninstall.sh ; \
echo "rm \"$(LOCALEDIR)/$$i/LC_MESSAGES/dvdisaster.mo\"" >> "$(BUILDROOT)$(BINDIR)/dvdisaster-uninstall.sh" ; \
done
@echo "rm -f $(MANDIR)/man1/dvdisaster.1" >> $(BUILDROOT)$(BINDIR)/dvdisaster-uninstall.sh
@echo "rm -f \"$(MANDIR)/man1/dvdisaster.1\"" >> "$(BUILDROOT)$(BINDIR)/dvdisaster-uninstall.sh"
@for i in $(MAN_LOCALES); do \
echo "rm $(MANDIR)/$$i/man1/dvdisaster.1" >> $(BUILDROOT)$(BINDIR)/dvdisaster-uninstall.sh ; \
echo "rm \"$(MANDIR)/$$i/man1/dvdisaster.1\"" >> "$(BUILDROOT)$(BINDIR)/dvdisaster-uninstall.sh" ; \
done
@echo "echo \"dvdisaster has been uninstalled.\"" >> $(BUILDROOT)$(BINDIR)/dvdisaster-uninstall.sh
@echo "echo \"dvdisaster has been uninstalled.\"" >> "$(BUILDROOT)$(BINDIR)/dvdisaster-uninstall.sh"
uninstall:
@echo "Uninstalling package..."
rm -f $(BINDIR)/dvdisaster $(BINDIR)/dvdisaster-uninstall.sh
rm -rf $(DOCSUBDIR)
rm -f $(MANDIR)/man1/dvdisaster.1
rm -f "$(BINDIR)/dvdisaster" "$(BINDIR)/dvdisaster-uninstall.sh"
rm -f "$(DOCSUBDIR)/CHANGELOG"
rm -f "$(DOCSUBDIR)/COPYING"
rm -f "$(DOCSUBDIR)/CREDITS.de"
rm -f "$(DOCSUBDIR)/CREDITS.en"
rm -f "$(DOCSUBDIR)/manual.pdf"
rm -f "$(DOCSUBDIR)/TODO"
rmdir "$(DOCSUBDIR)"
rm -f "$(MANDIR)/man1/dvdisaster.1"
for i in $(PO_LOCALES); do \
rm $(LOCALEDIR)/$$i/LC_MESSAGES/dvdisaster.mo; \
rm "$(LOCALEDIR)/$$i/LC_MESSAGES/dvdisaster.mo"; \
done
for i in $(MAN_LOCALES); do \
rm $(MANDIR)/$$i/man1/dvdisaster.1; \
rm "$(MANDIR)/$$i/man1/dvdisaster.1"; \
done
archclean: distclean
@@ -296,31 +353,16 @@ 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
# There might be a not executable simple-md5sum from a compiler run
# under a different architecture, so make sure we have a working binary
# in the clean target.
@rm -f dvdisaster-debug
clean:
@echo "Removing rebuildable files"
@rm -rf *.o $(BUILDTMP)/*.o medium.* abbild.* dvdisaster .dvdisaster core core.* *.core
@rm -f *.o "$(BUILDTMP)"/*.o medium.* abbild.* dvdisaster .dvdisaster core core.* *.core
@rm -f src/inlined-icons.h src/help-dialogs.h
@find . -name \*\~ -print | xargs rm -f;
@find . -name \*.mo -print | xargs rm -f;
@find . -name \#\*\# -print | xargs rm -f;
@rm -f documentation/config/version.tex
@if test -e $(PKGNAME); then rm -rf $(PKGNAME); fi
@if test -e ~/.dvdisaster-original-author; then \
mv build.h build.saved ;\
if ! test -x simple-md5sum || ! ./simple-md5sum >/dev/null 2>&1; then \
rm -f simple-md5sum; \
$(MAKE) --no-print-directory simple-md5sum; \
echo "[simple-md5sum (re-)built]"; \
fi; \
./simple-md5sum -b src/*.h src/*.c >fingerprints.md5 ;\
mv build.saved build.h; \
fi
@rm -f simple-md5sum
@$(MAKE) --no-print-directory -C $(SRCDIR)/documentation/codec-specs clean;
@$(MAKE) --no-print-directory -C $(SRCDIR)/documentation/user-manual clean;
@$(MAKE) --no-print-directory -C $(SRCDIR)/locale clean;
@@ -332,8 +374,8 @@ arch: archclean build.h
INSTALL: documentation/install.template
@sed "s/@@PKGNAME/$(PKGNAME)/" <documentation/install.template >INSTALL
srcdist: INSTALL distclean manual manualclean
@cd .. ; tar -c -j -X $(PKGNAME)/NODIST -f $(TAR_PREFIX)/$(PKGNAME).tar.bz2 $(PKGNAME)
srcdist: INSTALL distclean manual manualclean codecsclean
@cd .. ; tar -c -j --owner=dvdisaster --group=devel -X $(PKGNAME)/NODIST -f $(TAR_PREFIX)/$(PKGNAME).tar.bz2 $(PKGNAME)
@cd .. ; gpg --homedir .gnupg --default-key 758BCC23 --detach-sign --output $(TAR_PREFIX)/$(PKGNAME).tar.bz2.gpg --armor $(TAR_PREFIX)/$(PKGNAME).tar.bz2
static: dvdisaster

23
INSTALL
View File

@@ -1,3 +1,24 @@
# dvdisaster: Additional error correction for optical media.
# Copyright (C) 2004-2018 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 <http://www.gnu.org/licenses/>.
Installation of the dvdisaster source code distribution
=======================================================
[don't edit - generated from documentation/install.template]
@@ -130,7 +151,7 @@ user@host> ./configure
If you want to build a CLI-only version, which doesn't depend
on the gtk2 libraries, you can run instead:
user@host> CLI_ONLY=1 ./configure
user@host> ./configure --with-cli-only
The script will possibly print some errors about missing libraries.
Type "configure --help" to learn about pointing configure

View File

@@ -5,8 +5,9 @@
all:
@echo
@echo "Please run \`./configure' first."
@echo "To build a CLI-only version,"
@echo "run \`CLI_ONLY=1 ./configure' instead."
@echo
@echo "To build a CLI-only version, run `./configure --with-cli-only'."
@echo
@echo "Note that dvdisaster requires GNU make to build."
@echo "Under non-Linux systems, it might be known as \`gmake'."
@echo

27
README
View File

@@ -1,3 +1,24 @@
# dvdisaster: Additional error correction for optical media.
# Copyright (C) 2004-2017 Carsten Gnoerlich.
# Copyright (C) 2019-2020 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 <http://www.gnu.org/licenses/>.
This directory tree contains dvdisaster,
a tool providing additional ECC protection for optical media.
@@ -11,12 +32,6 @@ Roadmap of contained files
INSTALL
See the file INSTALL on bringing up dvdisaster.
README.CVS
If you got this archive from CVS, make sure to read README.CVS also.
README.MODIFYING
Please read these notes carefully if you plan to modify dvdisaster.
COPYING
This software is distributed under the GNU General Public License,
which is contained in the file COPYING.

View File

@@ -1,37 +0,0 @@
Please read these notes carefully if you plan to modify dvdisaster.
-------------------------------------------------------------------
When publishing a modified version of dvdisaster you are kindly
asked not to misrepresent your work as the original.
The original authors have undertaken great efforts for putting the
project into shape and earning their reputation. So if you hack and
publish your own version of dvdisaster, please RESPECT the original
authors vision of what the project should be like.
Document your changes as explained below so that users can tell
the modified version from the original.
How to document your changes.
-----------------------------
Document the changes you made in the source code, NOT in a
separate file which might get unbundled from the changed source.
New files start with your copyright notice; modified files
get an additional entry under the original copyright notice.
See the file md5.c for an example.
But this is not enough; most people will not read the source
code as they are using binary distributions. Give them a way
to find out about your modifications in the "About" dialog.
The build process will prepare a suitable message template
for you if it finds that you have modified the sources.
Feel free to further customize this message, and even
change the project name if you deem that appropriate.
Thank you for your cooperation.

103
README.md
View File

@@ -1,66 +1,109 @@
# What is dvdisaster?
# :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.
# Unofficial version
# :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:
- Most Debian patches have been applied, those specific to Debian have been omitted
- Windows build supported again, it was dropped upstream a few versions back
- A CLI-only version, not depending on gtk (`CLI_ONLY=1 ./configure && make clean && make -j4`)
- Regression tests confirmed working on Linux64, Windows32 and Windows64, for normal and CLI-only builds
- 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-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
For more information please refer to the [CHANGELOG](CHANGELOG).
Please refer to the [CHANGELOG](CHANGELOG) for all the details.
## 3 available protection modes ("codecs")
In 2021, upstream development briefly resumed [on a new website](https://dvdisaster.jcea.es/).
The new team successfully picked up some of the improvements of this unofficial version.
If/when upstream resumes development again, their changes will be merged back here when possible.
In any case, 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.
**RS01** creates error correction files which are stored separately from the image they belong to.
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.
**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.
**RS03** is a further development of RS01 and RS02. It can create both error correction files and
: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:
- RS03 can use multiple CPU cores and is therefore much faster than RS01/RS02 on modern hardware.
- RS03 can use multiple CPU cores and is therefore **much** faster than RS01/RS02 on modern hardware.
- RS03 error correction files are - contrary to RS01, and to a lesser extent RS02 - robust against damage.
- RS03 is more robust, but also more restrictive: The augmented image must completely fill the medium now while the size of augmented images can be freely chosen in RS02.
The changes for parallel computation and higher robustness make RS03 a bit less space efficient,
e.g. RS03 error correction data has slighly less error correction capacity than its RS01/RS02 counterparts on images with equal size.
e.g. RS03 error correction data has slighly less (around -3%) error correction capacity than its RS01/RS02 counterparts on images with equal size.
# Rationale
Rough comparison table:
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!).
| Codecs | RS01 | RS02 | RS03 |
|------------------|--------------------------------|--------------------------------|--------------------------------|
| Robustness\* | :star: | :star::star::star: | :star::star::star::star::star: |
| Speed | :star::star: | :star: | :star::star::star::star::star: |
| Space efficiency | :star::star::star::star::star: | :star::star::star::star::star: | :star::star::star::star: |
| Augmented images | :x: | :heavy_check_mark: | :heavy_check_mark: |
| Separate files | :heavy_check_mark: | :x: | :heavy_check_mark: |
\*Robustness against corruption of the dvdisaster-added ECC parts themselves
# :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!)~~
This is also why precompiled Windows binaries and a precompiled static CLI-only Linux version are available here.
# Compiling
# :hammer: Compiling
See the [INSTALL](INSTALL) file. The [workflow file](.github/workflows/release.yml) that is used to automatically build binaries for each release can also help.
# Screenshots
# :camera: Screenshots
### Scanning a damaged CD under Windows
### Reading a damaged CD under Windows:
![dvdisaster_damaged_cd](https://user-images.githubusercontent.com/218502/91434313-edaaf880-e864-11ea-8e41-7b58a1e97a70.PNG)
![dvdisaster_damaged_cd](https://user-images.githubusercontent.com/218502/123558682-e2cc3780-d797-11eb-8ad0-5247b2601656.PNG)
### Scanning a healthy BD-R (single layer) with Linux GUI
### Verifying the ECC correction data from the damaged image:
![dvdisaster_bdr_read](https://user-images.githubusercontent.com/218502/91436728-fbfb1380-e868-11ea-8444-04ebc60809d8.PNG)
![dvdisaster_cd_verify](https://user-images.githubusercontent.com/218502/123558696-f6779e00-d797-11eb-861b-1e6eb9d201b3.PNG)
### Creating an RS03 error correction file with Linux GUI
### Repairing the damaged image thanks to augmented data:
![dvdisaster_bdr_create](https://user-images.githubusercontent.com/218502/91436740-00273100-e869-11ea-837a-af0d0733fe87.PNG)
![dvdisaster_cd_repair](https://user-images.githubusercontent.com/218502/123558704-fe374280-d797-11eb-8f93-cd41848777d0.PNG)
### Verifying a BD-R image with Linux GUI
### Verification of the image after correction:
![dvdisaster_bdr_verify](https://user-images.githubusercontent.com/218502/91436731-fc93aa00-e868-11ea-93e6-b8c277620df7.PNG)
![dvdisaster_cd_verify_ok](https://user-images.githubusercontent.com/218502/123558712-04c5ba00-d798-11eb-884f-bfd5443f036c.PNG)
### Reading a quad-layer multi-session BDXL with Linux GUI:
![dvdisaster_bdxl_read](https://user-images.githubusercontent.com/218502/124361434-8baee280-dc2f-11eb-892e-27a9e738b41c.png)
Note that the disc still has some room for more sessions (capacity is 128 GB).

52
TODO
View File

@@ -1,37 +1,42 @@
Tentative to do/ release schedule
Version 0.79: new RS03 codec (encoding part)
- lots of speed optimizations in error correction data encoding
- multithreaded / multicore processor support
- add missing functionality, e.g. adaptive reading
0.79.5: project re-launch
0.79.6: re-introduce CRC and MD5 caching between reading
and ecc creation; cosmetical changes
0.79.7: re-introduce adaptive reading
Versions 0.79.x: development releases
* restart project, catch up wich recent compiler and OS version
* last releases with gtk-2
Version 0.80: milestone release
work in progress (this release):
- split GUI code from core source to allow for command-line only build (done)
- merge patches from Stéphane Lesimple (done) and Debian (done)
upcoming (next stable release):
- 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
- upgrade from gtk-2 to gtk-4
- remove obsolete features, especially from the GUI
- ... many more will likely be added ...
Version 0.82: milestone/stable release
- RS03 encoding considered feature complete
Version 0.81:
Version 0.83: development releases
- multithreaded decoding (error correction/repair)
for RS01/RS02/RS03
- RS01 encoding (not decoding of course) will be
removed as RS03 fully replaces it
Version 0.82: milestone release
Version 0.84: milestone/stable release
- RS03 decoding considered feature complete
Version 0.84:
- compile option to create a CLI-only binary
(without GTK+ linkage)
Version 0.86:
- maybe upgrade from GTK+ 2 to version 3
(not decided yet)
Version 0.90:
- Grand finale: add a new feature which isn't jaw dropping
- Grand finale: add a last new feature which isn't jaw dropping
but very convenient to have (sorry - has nothing to do
with ripping). Since I'm not sure whether there
is prior art to this feature, I won't get into
@@ -49,11 +54,10 @@ Version 1.00: maintenance releases
Unspecified schedule / later releases
- native Windows fork
- add pause/resume button
- optionally pause after n read errors for drives which
need to cool down
- add function for stripping RS02 data from image
- add function for stripping RS02 data from image [done in pl7]
- add quiet option for command line mode
- display estimated finishing time for encoding/decoding
- catch up with many other queued up suggestions

View File

@@ -1,3 +1,23 @@
# 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 <http://www.gnu.org/licenses/>.
This document describes the process of adding a new translation
to dvdisaster. It is work in progress and not yet complete.

95
configure vendored
View File

@@ -1,19 +1,34 @@
#!/usr/bin/env bash
# dvdisaster: Additional error correction for optical media.
# Copyright (C) 2004-2018 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 <http://www.gnu.org/licenses/>.
# Load the shell functions needed for the rest of this script.
BASH_BASED_CONFIGURE=./scripts/bash-based-configure
BASH_BASED_CONFIGURE_OPTS="--buildtmp=$(pwd)/build"
REQUIRED_CFLAGS="-DPATCHLEVEL=4 -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -I. -pipe"
RECOMMENDED_CFLAGS="-O2 -fomit-frame-pointer -Wall -Wno-deprecated-declarations -Wno-stringop-truncation"
BASH_BASED_CONFIGURE_OPTS="--buildtmp=$(pwd)/build $@"
REQUIRED_CFLAGS="-D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -I. -pipe"
RECOMMENDED_CFLAGS="-O2 -fomit-frame-pointer -Wall -Wno-unknown-warning-option -Wno-deprecated-declarations -Wno-stringop-truncation -Wno-format-zero-length"
DEBUG_CFLAGS="-ggdb -Wall"
if [ "$CLI_ONLY" = 1 ]; then
REQUIRED_CFLAGS="-DCLI $REQUIRED_CFLAGS"
fi
CFG_USE_CYGWIN="no" # do not change
if test -e $BASH_BASED_CONFIGURE; then
source $BASH_BASED_CONFIGURE $BASH_BASED_CONFIGURE_OPTS
else
@@ -24,14 +39,20 @@ fi
# Set the package name and version
PACKAGE dvdisaster 0.79.6
CFG_HAVE_OPTIONS="$CFG_HAVE_OPTIONS -DHAVE_UNSTABLE_RELEASE"
PACKAGE dvdisaster 0.79.10
DEFINE_INT PATCHLEVEL 3
DEFINE_STRING HAVE_UNSTABLE_RELEASE 1
DEFINE_STRING HOMEPAGE "https://dvdisaster.jcea.es"
# Check for some essential tools.
REQUIRE_GMAKE
REQUIRE_GCC
if [[ $(uname) =~ Darwin ]]; then
REQUIRE_CLANG
else
REQUIRE_GCC
fi
# Find out and verify the basedir of the source installation,
# and where to install the binary.
@@ -41,22 +62,32 @@ GET_PKGNAME
GET_PREFIX /usr/local
GET_BINDIR
GET_MANDIR
GET_DOCDIR /usr/share/doc
GET_DOCDIR
GET_DIR "$PKGNAME" docsub "Documentation sub"\
" put documentation into this subdirectory\n under \$DOCDIR "
GET_LOCALEDIR /usr/share/locale
GET_LOCALEDIR
GET_BUILDROOT
GET_BUILDTMP
PRINT_MESSAGE "\nDetermining build flavor:"
WITH_OPTION gui yes "[yes | no]"
# Remove the useless CLI console under windows
if [[ $(uname) =~ MINGW ]] && [ "$cfg_with_gui" == "yes" ]; then
CFG_LDFLAGS="$CFG_LDFLAGS -mwindows"
fi
# Look for required libraries
PRINT_MESSAGE "\nLooking for includes and libraries:"
REQUIRE_GLIB2 2 32 0
if [ "$CLI_ONLY" != 1 ]; 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]"
@@ -96,6 +127,11 @@ CFG_CFLAGS="$CFG_CFLAGS -D_LARGEFILE64_SOURCE"
CHECK_SYMBOL fcntl.h O_LARGEFILE
CFG_CFLAGS=$SAVE_CFLAGS
if [[ $(uname) =~ Darwin ]]; then
CFG_CFLAGS="$CFG_CFLAGS -Wno-void-pointer-to-int-cast"
CFG_LDFLAGS="$CFG_LDFLAGS -framework CoreFoundation -framework IOKit"
fi
# Machine specific
echo
@@ -117,7 +153,7 @@ if ! EXECUTE_PROGRAM "xgettext --help" xgettext \
cfg_force_with_nls=no
fi
if [ "$CLI_ONLY" != 1 ]; 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."
@@ -135,6 +171,24 @@ WITH_OPTION embedded-src-path yes "[yes | no]"
PRINT_MESSAGE "\nDebugging options (do not use in production system):"
WITH_OPTION memdebug no "[no | yes]"
WITH_OPTION debug-printf-format no "[no | yes]"
WITH_OPTION werror no "[no | yes]"
if test "$cfg_with_debug_printf_format" == "yes"; then
# don't use the binary compiled with this,
# it's only useful to properly get all the build-time
# warnings around printf-errors, that are otherwise
# not catched by the compiler because of the _() macro
DEFINE_STRING DEBUG_PRINTF_FORMAT 1
else
# warnings given by -Wformat-security are bogus because of _(),
# see above comment if you actually want to check for format errors
CFG_CFLAGS="$CFG_CFLAGS -Wno-format-security"
fi
if test "$cfg_with_werror" == "yes"; then
CFG_CFLAGS="$CFG_CFLAGS -Werror"
fi
if test "$cfg_with_efence" == "yes"; then
if ! CHECK_LIBRARY efence malloc efence; then
@@ -160,9 +214,6 @@ cfiles="src/method-link.c"
ofiles="$BUILDTMP/method-link.o"
for cfile in src/*.c; do
if [ "$CLI_ONLY" = 1 ]; 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)"
@@ -172,7 +223,7 @@ done
echo
echo -e "\nCFG_CFILES = $cfiles" >> Makefile.config
echo "CFG_OFILES = $ofiles" >> Makefile.config
if [ "$CLI_ONLY" != 1 ]; then
if test "$cfg_with_gui" == "yes"; then
echo "ICONS = src/inlined-icons.h" >> Makefile.config
fi

5
contrib/AppRun.sh Executable file
View File

@@ -0,0 +1,5 @@
#!/bin/sh
DIR="$(readlink -f "$(dirname "$0")")"
export GTK_PATH="$DIR/usr/lib/gtk-2.0"
export DVDISASTER_DOCDIR="$DIR/usr/share/doc/dvdisaster"
exec "$DIR/usr/bin/dvdisaster" "$@"

View File

@@ -1,6 +1,6 @@
.PHONY : all codecs clean
.PHONY : all clean
all: codecs
all: codecs.pdf
clean:
@rm -f *~ *.aux *.log *.bak *.out *.toc *.dvi *.ps
@@ -8,7 +8,9 @@ clean:
archclean: clean
@rm -f *.pdf
codecs:
# run latex twice to get the proper number of pages, fig numbers and index table
codecs.pdf: *.tex *.fig *.eps
latex codecs
latex codecs
dvips codecs.dvi
ps2pdf codecs.ps

Binary file not shown.

View File

@@ -35,12 +35,14 @@
\fancyfoot[LO]{created: \today}
\fancyfoot[RE]{\paperversion}
\input{../config/version.tex}
\begin{document}
\definecolor{lightblue}{RGB}{224,224,255}
\pagecolor{lightblue}
\title{The dvdisaster Reed-Solomon Codec specification}
\author{Carsten Gnörlich\\carsten@dvdisaster.org}
\author{The dvdisaster development team\\support@dvdisaster.org}
\date{}
\maketitle
\thispagestyle{empty}
@@ -59,7 +61,7 @@ Reed-Solomon codecs which are currently called RS01, RS02 and RS03.
The codecs create Reed-Solomon parity data to protect data stored on optical media.
Depending on the codec, parity data can either be stored in a separate file
or be integrated with the .iso image on the same medium.
See \url{http://dvdisaster.org} for additional resources on the dvdisaster project,
See \homepage for additional resources on the dvdisaster pro\-ject,
e.g. for the {\em orange manual} (manual.pdf) containing information for end users.
\end{abstract}
@@ -69,7 +71,7 @@ e.g. for the {\em orange manual} (manual.pdf) containing information for end use
dvdisaster developers and, when the final version has been crafted, as an implementation
guide for third party developers who wish to create and process dvdisaster error correction data.
It is {\bf neither intended nor suitable} as end-user documentation; for usage information
please refer to the online documentation at \url{http://dvdisaster.org}.
please refer to the online documentation at \homepage.
\bigskip
@@ -81,7 +83,8 @@ of programming in C is also assumed.
\vfill
\begin{center}
{\em
Copyright 2008-2015 Carsten Gnörlich.
Copyright 2008-2015 Carsten Gnörlich.\\
Copyright 2021 The dvdisaster development team.\\
Verbatim copying and distribution of this entire article is permitted in any medium,
provided this notice is preserved.}
\end{center}

1
documentation/codecs.pdf Symbolic link
View File

@@ -0,0 +1 @@
codec-specs/codecs.pdf

View File

@@ -1,4 +1,4 @@
.TH DVDISASTER 1 "2010-02-07" "0.80" "Schutz f\[:u]r optische Datentr\[:a]ger"
.TH DVDISASTER 1 "2018-05-14" "0.79.7" "Schutz f\[:u]r optische Datentr\[:a]ger"
.SH NAME
DVDISASTER \- Schutz f\[:u]r optische Datentr\[:a]ger gegen Datenverlust durch Alterung
@@ -67,6 +67,7 @@ oder Kratzer
.IR n \|]
.RB [\| \-\-spinup\-delay
.IR n \|]
.RB [\| \-\-version \|]
.SH BESCHREIBUNG
.B DVDISASTER
@@ -334,7 +335,7 @@ funktioniert am besten beim direkten Arbeiten mit Dateien im Arbeitsspeicher (z.
.RE
.TP
.B \-\-fill-unreadable n
f\[:u]lle unlesbare Sektoren mit Byte n.
f\[:u]lle unlesbare Sektoren mit Byte n. Hilfreich um Abbilder zu verarbeiten, die von anderen Werkzeugen angelegt wurden. Beispielsweise f\[:u]llt ddrescue unlesbare Sektoren mit Null auf; dementsprechend w\[:a]re \-\-fill-unreadable=0 zu verwenden. Bitte dabei beachten: Sparse files k\[:o]nnen nicht mit dvdisaster verarbeitet werden.
.TP
.B \-\-ignore-fatal-sense
Lesen nach m\[:o]glicherweise schwerwiegenden Fehlern fortsetzen.
@@ -422,6 +423,9 @@ warnt bei Geschwindigkeits\[:a]nderung um mehr als n Prozent.
.TP
.B \-\-spinup-delay n
gibt dem Laufwerk n Sekunden Zeit zum Hochlaufen.
.TP
.B \-\-version
gibt die Versionsnummer und einige Konfigurationseigenschaften aus
.PP
.SH SIEHE AUCH

View File

@@ -1,4 +1,4 @@
.TH DVDISASTER 1 "2020-08-30" "0.80" "protection for optical media"
.TH DVDISASTER 1 "2018-05-14" "0.79.7" "protection for optical media"
.SH NAME
DVDISASTER \- data loss/scratch/aging protection for optical media
@@ -67,6 +67,7 @@ DVDISASTER \- data loss/scratch/aging protection for optical media
.IR n \|]
.RB [\| \-\-spinup\-delay
.IR n \|]
.RB [\| \-\-version \|]
.SH DESCRIPTION
.B DVDISASTER
@@ -348,7 +349,7 @@ and on very fast media with low latency such as SSDs.
.RE
.TP
.B \-\-fill-unreadable n
fill unreadable sectors with byte n
fill unreadable sectors with byte n. Useful for processing images which have been created by other tools. For example, ddrescue fills unreadable sectors with zeros; therefore \-\-fill-unreadable=0 should be used. Please note: Sparse files can not be processed with dvdisaster.
.TP
.B \-\-ignore-fatal-sense
continue reading after potentially fatal error condition.
@@ -432,6 +433,9 @@ print warning if speed changes by more than n percent.
.TP
.B \-\-spinup-delay n
wait n seconds for drive to spin up.
.TP
.B \-\-version
print version number and some configuration information.
.PP
.SH SEE ALSO

View File

@@ -1,76 +0,0 @@
@charset "UTF-8";
body { font-family:Helvetica,Arial,sans-serif,Verdana }
a:link { font-weight:normal; color:#0000ff; text-decoration:none }
a:visited { font-weight:normal; color:#0000ff; text-decoration:none }
a:hover { font-weight:normal; background-color:#e0e0e0; color:#0000FF; text-decoration:none }
a:active { font-weight:normal; background-color:#e0e0e0; color:#0000FF; text-decoration:none }
a:focus { font-weight:normal; background-color:#e0e0e0; color:#0000FF; text-decoration:none }
table.navigation {width:100%; background-color:#f0f0f0}
table.download {width:100%; background-color:#f0f0f0}
table.thumbnail {border-width:1px; border-style:solid; border-color:#000000; background-color:#e0e0ff}
table.screenshot {width:100%; border-width:0px; background-color:#e0e0ff}
table.ecompat {border-width:0px}
table.ecompat td { border-width:0px; vertical-align:text-top}
table.ecompat td.file { border-width:0px; background-color:#ffa0ff}
table.ecompat td.iso { border-width:0px; background-color:#a0ffff}
table.ecompat td.augment { border-width:0px; background-color:#a0a0ff}
table.compat {width:100%; border-style:solid; border-width:0px; border-collapse:collapse}
table.compat th { border-width:1px; padding:8px; border-style:solid; background-color:#b0b0b0 }
table.compat th.file { border-width:1px; padding:8px; border-style:solid; background-color:#ffa0ff }
table.compat th.iso { border-width:1px; padding:8px; border-style:solid; background-color:#a0ffff }
table.compat th.augment { border-width:1px; padding:8px; border-style:solid; background-color:#a0a0ff }
table.compat td { border-width:1px; padding:4px; border-style:solid; text-align:center}
table.compat td.noalign { border-width:1px; padding:4px; border-style:solid }
table.compat td.fullspan { border-width:1px; padding:0px; border-style:solid; background-color:#e0e0e0 }
table.compat td.red { border-width:1px; padding:4px; border-style:solid; background-color:#ff8080; text-align:center}
table.compat td.yellow { border-width:1px; padding:4px; border-style:solid; background-color:#ffe0a0; text-align:center}
table.compat td.green { border-width:1px; padding:4px; border-style:solid; background-color:#a0ffa0; text-align:center}
table.compat td.grey { border-width:1px; padding:4px; border-style:solid; background-color:#e0e0e0; text-align:center}
table.compat td.white { border-width:1px; padding:4px; border-style:solid; text-align:center}
a.active {color:#0000ff; text-decoration:none }
a.passive {color:#808080; text-decoration:none }
img.noborder {border:0px solid transparent;}
img.nobordervalignm {border:0px solid transparent; vertical-align:middle;}
span.fl {font-size:large;}
span.fxxl {font-size:xx-large;}
span.fs {font-size:small;}
span.fxs {font-size:x-small;}
span.green {color:green;}
span.red {color:red;}
span.blue {color:blue;}
span.yellow {color:gold;}
h3.top {margin-top: 0;}
table {empty-cells:show;} /* display border and background color even for empty table cells */
td.hsep {height:1px; width:100%; background-color:black;} /* black horizontal separator */
td.vsep {height:100%; width:2px; background-color:black;} /* black vertical separator */
td.esep {height:3px;}
.w10p {width:10%;}
.w15p {width:15%;}
.w20p {width:20%;}
.w50p {width:50%;}
.w55p {width:55%;}
.w65x {width:65px;}
.w100x {width:100px;}
.w127x {width:127px;}
.w150x {width:150px;}
.w200x {width:200px;}
.valignb {vertical-align:bottom;}
.valignm {vertical-align:middle;}
.valignt {vertical-align:top;}
.valigntt {vertical-align:text-top;}
.talignr {text-align:right;}

View File

@@ -1,105 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<title></title>
<link rel="stylesheet" type="text/css" href="../css/dvdisaster.css">
</head>
<body>
<!-- Title header -->
<table width="100%" cellpadding="0" border="0">
<tr>
<td align="left">
<span class="fxxl"><b>dvdisaster</b>&nbsp;</span>
<i>Version 0.79.5 (stable) / 0.79.6 (unstable)</i>
</td>
<td align="right">
<span class="fxxl">&nbsp;</span>
Deutsch &nbsp; <a href="../en/privacy.html">English</a>
</td>
</tr>
<tr><td colspan="2" class="hsep"></td></tr>
<tr><td colspan="2">
<table class="navigation" width="100%" cellpadding="0" border="0">
<tr>
<td>Unterseiten: &nbsp;&nbsp;&nbsp;
<a href="index.html">Entwickler-Seite</a> &nbsp;&middot;&nbsp;
<a href="verschiedenes.html">Verschiedenes</a>
</td>
<td align="right">
<b>Datenschutz-Erklärung</b> &nbsp;&middot;&nbsp;
<a href="impressum.html">Impressum</a>
</td>
</tr>
</table>
</td></tr>
<tr><td colspan="2" class="hsep"></td></tr>
<tr><td style="height: 10px"></td></tr>
</table>
<!-- Main body -->
<b>Datenschutzerklärung für die Internetseiten unter</b><p>
dvdisaster.com, &nbsp;
dvdisaster.de, &nbsp;
dvdisaster.net, &nbsp;
dvdisaster.org
<p>
Das dvdisaster-Projekt (<a href="impressum.html">Anbieter siehe Impressum</a>)
ermöglicht Ihnen die Nutzung dieser Internetseiten ohne Registrierung und
ohne eine Angabe von personenbezogenen Daten.
<p>
<b>Server-Protokoll-Dateien</b><p>
Die Server dieser Internetseiten führen kein Protokoll über Ihre Seitenzugriffe.
<p>
<b>Cookies</b><p>
Diese Internetseiten verwenden keine Cookies.
<p>
<b>Verweise zu anderen Internetseiten</b><p>
Diese Internetseiten enthalten Verweise (Links) zu externen Seiten,
die von anderen Anbietern betrieben werden.
Das dvdisaster-Projekt hat keinen Einfluß darauf,
ob andere Anbieter diese Datenschutzbestimmungen einhalten.
<p>
<b>Weiterentwicklung dieser Internetseiten</b><p>
Im Zuge der Weiterentwicklung dieser Internetseiten können Änderungen
dieser Datenschutzerklärung erforderlich werden. Bitte lesen Sie sich
diese Datenschutzerklärung von Zeit zu Zeit erneut durch.
<!-- Page footer -->
<table width="100%" cellpadding="0" border="0">
<tr><td colspan="2" style="width:100%; height:10px;"></td></tr>
<tr><td colspan="2" class="hsep"></td></tr>
<tr>
<td align="center">
<span class="fs">
<i> Copyright 2004-2017 Carsten Gn&ouml;rlich.<br>
Die unveränderte Vervielfältigung und Verteilung dieses gesamten Artikels in beliebiger Form ist gestattet,
sofern dieser Hinweis erhalten bleibt.
</i>
</span>
</td>
</tr>
<tr><td colspan="2" class="hsep"></td>
</tr>
</table>
</body>
</html>

View File

@@ -1,88 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<title></title>
<link rel="stylesheet" type="text/css" href="../css/dvdisaster.css">
</head>
<body>
<!-- Title header -->
<table width="100%" cellpadding="0" border="0">
<tr>
<td align="left">
<span class="fxxl"><b>dvdisaster</b>&nbsp;</span>
<i>Version 0.79.5 (stable) / 0.79.6 (unstable)</i>
</td>
<td align="right">
<span class="fxxl">&nbsp;</span>
Deutsch &nbsp; <a href="../en/imprint.html">English</a>
</td>
</tr>
<tr><td colspan="2" class="hsep"></td></tr>
<tr><td colspan="2">
<table class="navigation" width="100%" cellpadding="0" border="0">
<tr>
<td>Unterseiten: &nbsp;&nbsp;&nbsp;
<a href="index.html">Entwickler-Seite</a> &nbsp;&middot;&nbsp;
<a href="verschiedenes.html">Verschiedenes</a>
</td>
<td align="right">
<a href="datenschutz.html">Datenschutz-Erklärung</a> &nbsp;&middot;&nbsp;
<b>Impressum</b>
</td>
</tr>
</table>
</td></tr>
<tr><td colspan="2" class="hsep"></td></tr>
<tr><td style="height: 10px"></td></tr>
</table>
<!-- Main body -->
<b>Impressum</b><p>
Carsten Gnörlich <br>
Karl-von-Hahn-Str. 125 <br>
72250 Freudenstadt / Deutschland<br>
Tel.: +49 172 566 1442 &nbsp; (kein Support, nur für Anfragen im Rahmen des Telemediengesetzes!)
<p>
E-Mail: carsten@dvdisaster.org<br>
Internet: www.dvdisaster.org
<p>
Inhaltlich Verantwortlicher: <br>
Carsten Gnörlich (Anschrift wie oben).
<p>
Das Impressum gilt für die Internetpräsenz unter den Domänen<br>
<a href="http://dvdisaster.com">dvdisaster.com</a>, &nbsp;
<a href="http://dvdisaster.de">dvdisaster.de</a>, &nbsp;
<a href="https://web.archive.org/web/20180428070843/http://dvdisaster.net">dvdisaster.net</a>, &nbsp;
<a href="http://dvdisaster.org">dvdisaster.org</a>.
<!-- Page footer -->
<table width="100%" cellpadding="0" border="0">
<tr><td colspan="2" style="width:100%; height:10px;"></td></tr>
<tr><td colspan="2" class="hsep"></td></tr>
<tr>
<td align="center">
<span class="fs">
<i> Copyright 2004-2017 Carsten Gn&ouml;rlich.<br>
Die unveränderte Vervielfältigung und Verteilung dieses gesamten Artikels in beliebiger Form ist gestattet,
sofern dieser Hinweis erhalten bleibt.
</i>
</span>
</td>
</tr>
<tr><td colspan="2" class="hsep"></td>
</tr>
</table>
</body>
</html>

View File

@@ -1,147 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<title></title>
<link rel="stylesheet" type="text/css" href="../css/dvdisaster.css">
</head>
<body>
<!-- Title header -->
<table width="100%" cellpadding="0" border="0">
<tr>
<td align="left">
<span class="fxxl"><b>dvdisaster</b>&nbsp;</span>
<i>Version 0.79.5 (stable) / 0.79.6 (unstable)</i>
</td>
<td align="right">
<span class="fxxl">&nbsp;</span>
Deutsch &nbsp; <a href="../en/index.html">English</a>
</td>
</tr>
<tr><td colspan="2" class="hsep"></td></tr>
<tr><td colspan="2">
<table class="navigation" width="100%" cellpadding="0" border="0">
<tr>
<td>Unterseiten: &nbsp;&nbsp;&nbsp;
<b>Entwickler-Seite</b> &nbsp;&middot;&nbsp;
<a href="verschiedenes.html">Verschiedenes</a>
</td>
<td align="right"><a href="datenschutz.html">Datenschutz-Erklärung</a> &nbsp;&middot;&nbsp; <a href="impressum.html">Impressum</a></td>
</tr>
</table>
</td></tr>
<tr><td colspan="2" class="hsep"></td></tr>
<tr><td style="height: 10px"></td></tr>
</table>
<!-- Main body -->
<b>Entwickler-Seite</a></b><p>
Auf dieser Seite finden Sie den neuesten Quellkode
von <i>dvdisaster</i> für die Betriebssysteme
FreeBSD, GNU/Linux und NetBSD. Der Inhalt dieser
Seite richtet sich vorwiegend an die Betreuer
von Binärpaketen für die genannten Plattformen.
Typischerweise ist es bequemer, wenn Sie sich
dvdisaster aus dem Paketsystem Ihres Betriebssystems
bzw. Ihrer Distribution installieren.
Natürlich können Sie sich
den Quellkode von dvdisaster aber auch selbst
herunterladen und übersetzen, wenn Sie dies
lieber möchten.<br>
Diese Seite enthält <i>keine</i> Informationen
über den Sinn und die Benutzung von dvdisaster.
Dies ist an anderen Stellen besser beschrieben -
zum Beispiel in zahlreichen Foren und (in englischer Sprache) im
<a href="verschiedenes.html#manual">Benutzerhandbuch</a>.
<p>
<a name="download"></a>
<b>Quellkode herunterladen</b>
<table width="100%">
<tr>
<td>dvdisaster unterstützt die Betriebssysteme <b>FreeBSD</b>, <b>GNU/Linux</b> und <b>NetBSD</b>.
Es wird Ihnen
als <a href="http://www.germany.fsfeurope.org/documents/freesoftware.de.html">freie Software</a>
unter der <a href="http://www.gnu.org/licenses/gpl-3.0.txt">GNU General Public License v3</a> zur
Verfügung gestellt.
</td>
<td class="w127x" valign="top"><img src="../images/gplv3-127x51.png" alt="GPLv3-Logo" width="127">
</td>
</tr>
</table>
<p>
<table>
<tr>
<td>Aktuelle Version:&nbsp;</td>
<td><a href="../downloads/dvdisaster-0.79.5.tar.bz2">dvdisaster-0.79.5.tar.bz2</a></td>
<td>(<a href="../downloads/dvdisaster-0.79.5.tar.bz2.gpg">digitale Unterschrift</a>,
MD5-Prüfsumme: ceef990a2239c43314bc6427c6afb181)</td>
</tr>
</table>
<p>
Die Archive können mit einer <a href="verschiedenes.html#pubkey">digitalen Unterschrift</a> auf
ihren Ursprungszustand überprüft werden. In den Archiven gibt die Datei
<tt>INSTALL</tt> weitere Informationen zum Übersetzen des Programmes.
<p>
Die Unterstützung von OS X und Windows wurde eingestellt.
Die <a href="verschiedenes.html#windows">letzte veröffentlichte Version 0.72.3 für Windows</a> ist noch verfügbar.
<p>
<b>Die Entwickler-Versionen sind zurück!</b><p>
Der ursprüngliche Plan, alle paar Monate eine stabile Version zu veröffentlichen, kann derzeit aus Zeitmangel nicht umgesetzt werden. In der Zwischenzeit werden (unstabile) Entwicklerversionen veröffentlicht, wenn sich die Notwendigkeit für eine kurzfristige Aktualisierung ergibt. Bitte beachten Sie, daß diese Versionen nicht dokumentiert sind. Sie können unvollständige oder fehlerhafte Eigenschaften aufweisen. Sie sollten diese Versionen nur nutzen, wenn Sie eine Funktionalität aus der unten aufgeführten Liste benötigen.<p>
<a href="../downloads/dvdisaster-0.79.6.tar.bz2">dvdisaster-0.79.6.tar.bz2</a></td>
<td>(<a href="../downloads/dvdisaster-0.79.6.tar.bz2.gpg">digitale Unterschrift</a>,
MD5-Prüfsumme: ceef990a2239c43314bc6427c6afb181)
<ul>
<li> Das "Datenträger-Info"-Werkzeug zeigt nun die korrekte Leerkapazität an (vorher wurde immer Null ausgegeben).</li>
<li> Unterstützung für BDXL-TL-Datenträger (dreilagig, 100GB).</li>
<li> Sektoren-Prüfsummen und Abbild-Prüfsummen werden während des Lesens von
Datenträgern zwischengespeichert und beim Erstellen von Fehlerkorrektur-Daten
wiederverwendet. Das Erstellen von Fehlerkorrektur-Daten wird dadurch beschleunigt
und RS03-Fehlerkorrektur-Daten enthalten die optionale Abbild-Prüfsumme,
wenn der Datenträger vorher einmal komplett eingelesen wurde.
</li>
</ul>
<p>
<p>
<b>Was ist mit den alten dvdisaster-Seiten passiert?</b><p>
Bitte schauen Sie in das <i>Vorwort zur Version 0.79.5</i> im
englischen <a href="verschiedenes.html#manual">Benutzerhandbuch</a>.
<!-- Page footer -->
<table width="100%" cellpadding="0" border="0">
<tr><td colspan="2" style="width:100%; height:10px;"></td></tr>
<tr><td colspan="2" class="hsep"></td></tr>
<tr>
<td align="center">
<span class="fs">
<i> Copyright 2004-2017 Carsten Gn&ouml;rlich.<br>
Die unveränderte Vervielfältigung und Verteilung dieses gesamten Artikels in beliebiger Form ist gestattet,
sofern dieser Hinweis erhalten bleibt.
</i>
</span>
</td>
</tr>
<tr><td colspan="2" class="hsep"></td>
</tr>
</table>
</body>
</html>

View File

@@ -1,140 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<title></title>
<link rel="stylesheet" type="text/css" href="../css/dvdisaster.css">
</head>
<body>
<!-- Title header -->
<table width="100%" cellpadding="0" border="0">
<tr>
<td align="left">
<span class="fxxl"><b>dvdisaster</b>&nbsp;</span>
<i>Version 0.79.5 (stable) / 0.79.6 (unstable)</i>
</td>
<td align="right">
<span class="fxxl">&nbsp;</span>
Deutsch &nbsp; <a href="../en/misc.html">English</a>
</td>
</tr>
<tr><td colspan="2" class="hsep"></td></tr>
<tr><td colspan="2">
<table class="navigation" width="100%" cellpadding="0" border="0">
<tr>
<td>Unterseiten: &nbsp;&nbsp;&nbsp;
<a href="index.html">Entwickler-Seite</a> &nbsp;&middot;&nbsp;
<b>Verschiedenes</b>
</td>
<td align="right"><a href="datenschutz.html">Datenschutz-Erklärung</a> &nbsp;&middot;&nbsp; <a href="impressum.html">Impressum</a></td>
</tr>
</table>
</td></tr>
<tr><td colspan="2" class="hsep"></td></tr>
<tr><td style="height: 10px"></td></tr>
</table>
<!-- Main body -->
<a name="pubkey"></a>
<b>Öffentlicher Schlüssel für die digitale Unterschrift</b><p>
Die herunterladbaren Pakete enthalten
eine mit <a href="http://www.gnupg.org">GnuPG</a> erstellte
digitale Unterschrift, damit Sie nachprüfen können,
ob sich die Software in ihrem ursprünglichen Zustand befindet.<p>
Ab Version 0.79.5 werden Pakete mit diesem
<a href="../downloads/pubkey2.asc">4096bit RSA-Schlüssel</a> unterschrieben:
<pre>
pub 4096R/64F770B2 2015-10-05
Schl.-Fingerabdruck = E3AF E703 96CC C0D9 E5D8 381C B0DB CA7D 64F7 70B2
uid dvdisaster (pkg signing key #2)
sub 4096R/758BCC23 2015-10-05
</pre>
Ältere Versionen (bis zu 0.79.3) wurden mit einem
<a href="../downloads/pubkey1.asc">1024bit DSA-Schlüssel</a> unterschrieben,
der noch zum Vergleich hier verfügbar ist.
Sie können den Fingerabdruck der öffentlichen Schlüssel auch direkt von
den Entwicklern erhalten, indem Sie eine E-Mail
an carsten@dvdisaster.org schreiben. Bitte verwenden Sie
den Betreff "GPG finger print".
<p>
<b>Benutzerhandbuch</b><p>
<a name="manual"></a>
Das Benutzerhandbuch zu dvdisaster gibt es - leider aus Zeitgründen nur
in englischer Sprache - als <a href="../downloads/manual.pdf">PDF-Dokument (manual.pdf)</a>.
Es erläutert die Benutzung von dvdisaster anhand einiger
grundlegender Beispiele und enthält weitere Hintergrundinformationen
zu seiner Funktionsweise.
Sie brauchen das Handbuch hier nicht herunterzuladen, wenn Sie bereits
das Quellkode-Archiv haben - dort ist ebenfalls ein Exemplar enthalten.
<p>
<b>Kodierer-Spezifikation</b><p>
Die Spezifikation der RS01-, RS02- und RS03-Kodierer
ist als <a href="../downloads/codecs.pdf">PDF-Dokument (codecs.pdf)</a>
verfügbar.
Dieses Dokument ist zur Diskussion der Kodierer-Implementierung unter
den Entwicklern vorgesehen. Er erfordert Kenntnisse in Kodierungstheorie
und ist nicht als Endbenutzer-Dokumentation gedacht.
<table>
<tr><td>
<a href="http://pdfreaders.org/"><img src="http://pdfreaders.org/graphics/pdfreaders-lang-neutral.png" alt="pdfreaders.org" /></a></td>
<td>Programme zum Lesen von PDF-Dokumenten sind bei <a href="http://pdfreaders.org">PDFreaders.org</a> verfügbar.</td>
</tr>
</table>
<p>
<b>Letzte Windows-Version</b><p>
Ein anderer Entwickler hat angefangen, eine Version von dvdisaster direkt für Windows zu
erstellen, aber es gibt dazu noch nichts anzukündigen. Verwenden Sie
bis dahin bitte weiterhin die letzte veröffentlichte Version für Windows:
<table>
<tr>
<td>Quellkode:&nbsp;</td>
<td><a href="../downloads/dvdisaster-0.72.3.tar.bz2">dvdisaster-0.72.3.tar.bz2</a></td>
<td>(<a href="../downloads/dvdisaster-0.72.3.tar.bz2.gpg">Digitale Unterschrift</a>,
MD5-Prüfsumme: 4eb09c1aa3cdbc1dafdb075148fb471d)</td>
</tr>
<tr>
<td>Installierbare Binärversion:&nbsp;</td>
<td><a href="../downloads/dvdisaster-0.72.3-setup.exe">dvdisaster-0.72.3-setup.exe</a></td>
<td>(<a href="../downloads/dvdisaster-0.72.3-setup.exe.gpg">Digitale Unterschrift</a>,
MD5-Prüfsumme: b6861ba1e8de6d91a2da5342a14870e0)</td>
</tr>
</table>
<!-- Page footer -->
<table width="100%" cellpadding="0" border="0">
<tr><td colspan="2" style="width:100%; height:10px;"></td></tr>
<tr><td colspan="2" class="hsep"></td></tr>
<tr>
<td align="center">
<span class="fs">
<i> Copyright 2004-2017 Carsten Gn&ouml;rlich.<br>
Die unveränderte Vervielfältigung und Verteilung dieses gesamten Artikels in beliebiger Form ist gestattet,
sofern dieser Hinweis erhalten bleibt.
</i>
</span>
</td>
</tr>
<tr><td colspan="2" class="hsep"></td>
</tr>
</table>
</body>
</html>

View File

@@ -1,24 +0,0 @@
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.2.4 (GNU/Linux)
mQGiBD9GYJcRBACXa6CzZ0WPqUvit1d7LvnSOqLDxYQiiphnzjQc+ssJvScNxv9+
ThELKXHxaKfDpL9/C4+5qh1pfrsEEpuQ7m+RfXFqz5UPZITgza5Ko/5WPhhVRxkh
8b8ux7DIeFlbgmd5YSFPoYIwGWCAtI5OiUC6qa149gAq7k0vtgb+hbxn2wCg0lTu
XGNjX7qMNggbnx3aBVVd9SMD/RYWIr2c66w6Kt/EYLLgYGqgZL9MkmocuUoJVgiI
Y2pi3SPbIvX3enk1OIRBCFbweEgXiVw+FWu6aK09eZrJcDv2Uns4ecTvzz1d83RH
gssV7ulB6P5mU3u6NT39CHW6fJ5Xi1HPkw380+y3dbaRxh/1htmk5Ao0DmDGRohL
vzgIA/9P/bdqh0WG0j4qY+8pcsNn0/ymiJXPZzvyr2cEc56AaHgLAVZHMUyE3Rd9
9rSZjVS+x/oGbkzVOd8IySUSRx7f2Sxve1sxoaNlwdqcE0vq16PH1iMBQ6KJAvUA
NAM4QZhAI7Lav9yB/tXblGrHHjll+fwFB/9t6G0hO9JoJDaEgbQmQ2Fyc3RlbiBH
bsO2cmxpY2ggKHBrZyBzaWduaW5nIGtleSAjMSmIXgQTEQIAHgUCQCvkqQIbAwYL
CQgHAwIDFQIDAxYCAQIeAQIXgAAKCRBaWQ7+9fbEbGfsAJ9NrkdlRobMhtWpAyeW
wPUe8XHzsACfYbMooS0D/UmRGo7wW7rBnrVqLxy5AQ0EP0ZgmBAEAKJos9WBWgw1
sGFFM/1eKEzZqGYMt8qk2r/djPyZYEIzqT47aR7P9gPIXDTplOmBgL43hU8MlE9K
Q92s4RVP/x/OvMWF04vSO3vBEmeR3HncpbIk4AP17MZGuqEGtyAe1e5hcGiho1CL
/6fSanYydC2iciKbfyyfzL9oISHedad7AAMFA/4wtrdqwTI2p05NAGxRA2r4egYI
m7x+ixyYuHGkzZzHMdos5zDg/dzNRnarib98JgAkZR+EVT6K0Ez6ykz57oteCt6f
jyGjOwI9bUyOFa+LyGJ+QRaeVozhqLLu/b4wgKCuBcKNt2ebpKFHi9JKiGE9hOJz
4nanjCbtihUJaf1DLIhJBBgRAgAJBQI/RmCYAhsMAAoJEFpZDv719sRsbk4An2JZ
q/8GBvugzgfu5AxacsuiZzfgAKCwzLAuoUTw/Sz6bYaAUfec362gFw==
=Sidz
-----END PGP PUBLIC KEY BLOCK-----

View File

@@ -1,53 +0,0 @@
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.4.12 (GNU/Linux)
mQINBFYS0XkBEACxsIQ1dI0k1TiybBztU6BC3DeQsDGC9TeaGBgYDo+62B8U5uiJ
AD9ofBXglj0/DOweAIoLdcVsvFzU0sxk4tUnb84plk09qG+UfU2227DWeKTP3YPv
E8A6uWopr6Yoc8WGG9mKl9L1CCiqQmNB4L4Um2/yDPrhtN3TxzpMLBoNUo/f271Q
yLxQZMEsUDTZq7JxbEQ9hLbBn69zIptsZHyNJwCerqXqhzQcB11BVqZyLrRC+0ZT
eUtO1o10Y/EAEi86ivi1upLsgVi5u2LcP9ICIhTVv6MQ+turhThFOIcEvbw/15Hp
4Vlb0yZlBx2j4Hr4tDSrWeQ1lmBNA1qhrLkPOIQv+scXhcyzY5nKIjRDKYS1v8OM
uMhfVakK/YS+flN5nyS4Ku0x99sae75+PArMjbLNfP738Zw4ywC4i+i958SEIcky
4Bia+kyTCPRZWZ5BJe3+GAPDdI1XntS0D1uXPiwi8u91jg1cAEChwjwe2pr0RG+h
8ft5BTezJyAeZ9haU8OyrW5GZNddhyBH4QxdRYvMTdmQIbjxNuTYGpBXl4qgTqKn
A7Gxbr24hgdUHKIe//AlDQ41VbBTdyBmgyORGCL+uaSpDerADPXh+bwE2vQsKs13
+HcVldLBJmL9tYeRZvpvR/vwFBvfkrgAN8+NdPnSzwvLI0JMrL50DOhapwARAQAB
tB9kdmRpc2FzdGVyIChwa2cgc2lnbmluZyBrZXkgIzIpiQI4BBMBAgAiBQJWEtF5
AhsDBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAAKCRCw28p9ZPdwsivVD/4wiomj
IFNUG0lb4sIvXHZR2sv0rVz1eN74B+Ngefp3viZvjvmXji2cbzPhTsoAq4ys5/nD
m9fLnm+mG2TfLKTqXBNRDeEDmknK0aXlFVbdUfgeExvU9Tj1giOORTvTiNPdJpkF
qKMrjvtB4t2sHuuL/SNwQAWlWfDUuK52yf1SAZasdFPTAvAuzo+lqfYbi5tnjIY/
GkR9e3ZjMEaWvxc0N5CJg7ibKpuX476eo+04oKkNvSbyE7Lpcho4AHy6e4UoJ9e+
UBL3o84MtChwrlP5HmMPan1hIL5iyswDUrxUfL36GqAEcAM8tIbZ6A6CfQT+FgnI
e/E1dm3FWEje8F7uD2xkCGRBYTN8BG5+UMTF9MaQGU3kxBMPt8xvHmCNZHR6QrdL
+vysa+02QmSM1jZz4J37yctM69WY1x3JDC+HGHMxCX3G+BrDntLG3yQkox1nBi2l
8JiKTdoX7LhRn1xCijIpYdbszMao0lN/XEiOgx2eygG9a3fQDOqR/yi9tTqmKQM4
H/il88tkdsaioWXspWEhrS+8MhiUdr8yz3LA9+DawddnW8ZbTee2R4ARMlKhfXBE
kvXO2L37Ub2sX97S9qbKkwaYIs2PHn7NFNRB6OP8Oz0scMuritvUZrNfNjaGba3e
YNgR36NFvroM3R2a+Yr0zjbY+rqjJSdNSfcsxIhGBBARAgAGBQJWEtXYAAoJEFpZ
Dv719sRsj6kAoL8AIsw7wF1F/LBHOZc/56GmYlAfAJ4nYQAjhx0Hh3fLpsjxtoH7
oIuwCLkCDQRWEtF5ARAA3KvEpeB7vbCxolIlzxuF/RHJ770GUYSfTVbYIKSl4Hby
wrDak7uXlDWIJ/u1lunu5+albUEHIaduYolrzaTG6A/sslXHgk8RUxZonzAw2/8C
0fQCBAPjs2nlwzt61g75/EPJlESocapdRi97EleGmGGK5L6N2CyTX8pjj1DkXwiW
X95EOcgWRoLXpf/bpThqFCsRjoJfHO7zcA0b5iIR7LQenMG/3AeGFRr1Oh2UzAL6
0MuPypu8NBv3IUXZ6mXdFTNM4bQc/RlmVDoB8B8mz4M1IL0fP98LN+b9ZfUUDz1z
k9W8H+OCvfdOVj1srDq+uhaSwDC6jDu7wTaFlaJaPBoqCXCk7xGbVxKdZot6oN5Z
rAvMMnD0Jc+QX+MKSodMk5LQRFB+WGI82IwgeS7kqQX2Bt0w7d4xL/3AKTNgQQAG
zXRi7dzXR//diKEmESSmaRccVpLZYtR4PdUuY6ZXyayEvZCosV6B7P+lV842lN9Q
/KgrZjH09SYKK8pzqRPoAIvPJNT4fP8FeTztnKu9gfS0Zs2MnkKjEK85E8OMSidp
ISqn0xgHeuldMPL7gGxJKj95BF4jFUs4fQa8nD1jnnUbKdAsGd5ujpEAjAfV+kkG
ZPUyVrJokhGlCLLt2dG4PrgZ4tNXdEQwVGNskHYjs6YU+CGYjzfopvrUPast+cUA
EQEAAYkCHwQYAQIACQUCVhLReQIbDAAKCRCw28p9ZPdwsrmqD/sFsulD6nl5DRzn
ofkqBJwwl6zdtNN9OKsEi8UKc10iuq+ZvynWFbcARqW9sgbBCoCM5KuA5zMIQ0hv
rvlb+HOt8v7DA2D0d/IPU1BPnxoEuMDq5g+a3MYzmP+4Wmp8r6NNAW0ArWhazQsN
dIhAVv4ItUCos7+S7q8srsflpEVG78/fC4Fw4sRjAaCd1NsP6D3vHwENtbuoQaT6
3kyfPK+r6EADTxmeFe7anovQo6MirRCnLoo3NdPVfQlgXkdL3wiBpwm7W/PYY+9Z
6HIfE2AIBs+C5SdxYPR+tVz3+3QC9998egxTRnJMaKkDQ+nG/ROSVpCqXwhzob6H
lrKhoe7H7GKVZyl/IVllpUQHKi5C03S8JQxpaJoB85/C5ZlcMtb0e1YUYeVhTKWI
REFsx5FlxXcJh5CLVplZKxfn0oiIgnyKHtCOeNcXP2mOYClN8RmhW+/Z198bTmzM
rB2jq7a3xbLGWKJqfgfZ6EPwCEu/jZTBSQgyssrrGahyyOIDadEcyfYV+r5pUm1+
+1YxSe0/hZ89RjGAIneWmo6sDLwPd44GLKAAb/E/yS/320bu031426gU8Zdw7bK1
dVNVQxWOpRc/RTRjmVjrO9NIN+7DSNOFnvep13/48UEDSFXkNnh+VgxGpvpOouw2
xUBVNZuhjPr589pvAEQFUyxCTI0uwQ==
=sd4U
-----END PGP PUBLIC KEY BLOCK-----

View File

@@ -1,87 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<title></title>
<link rel="stylesheet" type="text/css" href="../css/dvdisaster.css">
</head>
<body>
<!-- Title header -->
<table width="100%" cellpadding="0" border="0">
<tr>
<td align="left">
<span class="fxxl"><b>dvdisaster</b>&nbsp;</span>
<i>Version 0.79.5 (stable) / 0.79.6 (unstable)</i>
</td>
<td align="right">
<span class="fxxl">&nbsp;</span>
<a href="../de/impressum.html">Deutsch</a> &nbsp; English
</td>
</tr>
<tr><td colspan="2" class="hsep"></td></tr>
<tr><td colspan="2">
<table class="navigation" width="100%" cellpadding="0" border="0">
<tr>
<td>Navigation: &nbsp;&nbsp;&nbsp;
<a href="index.html">Developer site</a> &nbsp;&middot;&nbsp;
<a href="misc.html">Miscellaneous</a>
</td>
<td align="right">
<a href="privacy.html">Privacy policy</a> &nbsp;&middot;&nbsp;
<b>Contact information</b>
</td>
</tr>
</table>
</td></tr>
<tr><td colspan="2" class="hsep"></td></tr>
<tr><td style="height: 10px"></td></tr>
</table>
<!-- Main body -->
<b>Contact information</b><p>
Carsten Gnörlich <br>
Karl-von-Hahn-Str. 125 <br>
72250 Freudenstadt / Germany<br>
Tel.: +49 172 566 1442
<p>
E-Mail: carsten@dvdisaster.org<br>
Internet: www.dvdisaster.org
<p>
Responsible for the website content: <br>
Carsten Gnörlich (see above for address).
<p>
This notice covers the web sites under the domains<br>
<a href="http://dvdisaster.com">dvdisaster.com</a>, &nbsp;
<a href="http://dvdisaster.de">dvdisaster.de</a>, &nbsp;
<a href="https://web.archive.org/web/20180428070843/http://dvdisaster.net">dvdisaster.net</a>, &nbsp;
<a href="http://dvdisaster.org">dvdisaster.org</a>.<br>
<!-- Page footer -->
<table width="100%" cellpadding="0" border="0">
<tr><td colspan="2" style="width:100%; height:10px;"></td></tr>
<tr><td colspan="2" class="hsep"></td></tr>
<tr>
<td align="center">
<span class="fs">
<i> Copyright 2004-2017 Carsten Gn&ouml;rlich.<br>
Verbatim copying and distribution of this entire article is permitted in any medium, provided this notice is preserved.
</i>
</span>
</td>
</tr>
<tr><td colspan="2" class="hsep"></td>
</tr>
</table>
</body>
</html>

View File

@@ -1,139 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<title></title>
<link rel="stylesheet" type="text/css" href="../css/dvdisaster.css">
</head>
<body>
<!-- Title header -->
<table width="100%" cellpadding="0" border="0">
<tr>
<td align="left">
<span class="fxxl"><b>dvdisaster</b>&nbsp;</span>
<i>Version 0.79.5 (stable) / 0.79.6 (unstable)</i>
</td>
<td align="right">
<span class="fxxl">&nbsp;</span>
<a href="../de/index.html">Deutsch</a> &nbsp; English
</td>
</tr>
<tr><td colspan="2" class="hsep"></td></tr>
<tr><td colspan="2">
<table class="navigation" width="100%" cellpadding="0" border="0">
<tr>
<td>Navigation: &nbsp;&nbsp;&nbsp;
<b>Developer site</b> &nbsp;&middot;&nbsp;
<a href="misc.html">Miscellaneous</a>
</td>
<td align="right">
<a href="privacy.html">Privacy policy</a> &nbsp;&middot;&nbsp;
<a href="imprint.html">Contact information</a>
</td>
</tr>
</table>
</td></tr>
<tr><td colspan="2" class="hsep"></td></tr>
<tr><td style="height: 10px"></td></tr>
</table>
<!-- Main body -->
<b>Developer site</b><p>
This site provides the latest source code release of dvdisaster for the
FreeBSD, GNU/Linux and NetBSD operating systems. It is mostly aimed at
maintainers of binary packages for the beforementioned platforms.
End users might find it more convenient to install dvdisaster from the
package system of their operating system bundle or distribution.
But if you prefer to download and compile the source package on your own,
you're welcome, too.<br>
This site does <i>not</i> provide information on the purpose and usage
of dvdisaster. This is better described at other places, e.g.
in the <a href="misc.html#manual">user manual</a> and numerous online
forums.
<p>
<a name="download"></a>
<b>Download the source code</b>
<table width="100%">
<tr>
<td>dvdisaster is available for the <b>FreeBSD</b>, <b>GNU/Linux</b> und <b>NetBSD</b>
operating systems.
It is provided as
<a href="http://fsfe.org/about/basics/freesoftware.en.html">free software</a>
under the <a href="http://www.gnu.org/licenses/gpl-3.0.txt">GNU General Public License v3</a>. </td>
<td class="w127x" valign="top"><img src="../images/gplv3-127x51.png" alt="GPLv3-Logo" width="127">
</td>
</tr>
</table>
<p>
<table>
<tr>
<td>Current stable version:&nbsp;</td>
<td><a href="../downloads/dvdisaster-0.79.5.tar.bz2">dvdisaster-0.79.5.tar.bz2</a></td>
<td>(<a href="../downloads/dvdisaster-0.79.5.tar.bz2.gpg">digital signature</a>,
MD5 sum: ceef990a2239c43314bc6427c6afb181)</td>
</tr>
</table>
<p>
A <a href="misc.html#pubkey">digital signature</a> is provided for
verification that the packages are in their original state. The archives
contain a file <tt>INSTALL</tt> with further instructions for building dvdisaster.
<p>
OS X and Windows are no longer supported.
The <a href="misc.html#windows">last published version for Windows (0.72.3)</a> is still available.
<p>
<b>The developer versions are back!</b><p>
The original plan of publishing stable versions every few months did not work out due to continued lack of time. In the mean time, developer (unstable) versions are published whenever the need arises for a current update. Please be aware that developer versions are undocumented and may contain unfinished or otherwise defective functionality. You should only use them if you need some of the features detailed in the list below.<p>
<a href="../downloads/dvdisaster-0.79.6.tar.bz2">dvdisaster-0.79.6.tar.bz2</a></td>
<td>(<a href="../downloads/dvdisaster-0.79.6.tar.bz2.gpg">digital signature</a>,
MD5 sum: ceef990a2239c43314bc6427c6afb181)
<ul>
<li> The "medium info" tool will now correctly show the blank capacity (was previously always shown as zero)</li>
<li> added support for BDXL-TL (triple layer, 100GB) media</li>
<li> Sector CRC sums and the image MD5 sums are collected during
reading the medium and can be re-used by the ecc data creation
process. Speeds up ecc generation and enables RS03 image
checksums when generating ecc data was preceeded by a read.
</li>
</ul>
<p>
<b>What happened to the old dvdisaster site?</b><p>
Please see the <i>Preface for version 0.79.5</i> in the <a href="misc.html#manual">user manual</a>.
<!-- Page footer -->
<table width="100%" cellpadding="0" border="0">
<tr><td colspan="2" style="width:100%; height:10px;"></td></tr>
<tr><td colspan="2" class="hsep"></td></tr>
<tr>
<td align="center">
<span class="fs">
<i> Copyright 2004-2017 Carsten Gn&ouml;rlich.<br>
Verbatim copying and distribution of this entire article is permitted in any medium, provided this notice is preserved.
</i>
</span>
</td>
</tr>
<tr><td colspan="2" class="hsep"></td>
</tr>
</table>
</body>
</html>

View File

@@ -1,138 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<title></title>
<link rel="stylesheet" type="text/css" href="../css/dvdisaster.css">
</head>
<body>
<!-- Title header -->
<table width="100%" cellpadding="0" border="0">
<tr>
<td align="left">
<span class="fxxl"><b>dvdisaster</b>&nbsp;</span>
<i>Version 0.79.5 (stable) / 0.79.6 (unstable)</i>
</td>
<td align="right">
<span class="fxxl">&nbsp;</span>
<a href="../de/verschiedenes.html">Deutsch</a> &nbsp; English
</td>
</tr>
<tr><td colspan="2" class="hsep"></td></tr>
<tr><td colspan="2">
<table class="navigation" width="100%" cellpadding="0" border="0">
<tr>
<td>Navigation: &nbsp;&nbsp;&nbsp;
<a href="index.html">Developer site</a> &nbsp;&middot;&nbsp;
<b>Miscellaneous</b>
</td>
<td align="right">
<a href="privacy.html">Privacy policy</a> &nbsp;&middot;&nbsp;
<a href="imprint.html">Contact information</a>
</td>
</tr>
</table>
</td></tr>
<tr><td colspan="2" class="hsep"></td></tr>
<tr><td style="height: 10px"></td></tr>
</table>
<!-- Main body -->
<b>Public key for the digital signature</b><p>
The downloadable dvdisaster packages have been digitally signed using
<a href="http://www.gnupg.org">GnuPG</a> so that you can verify
that the software is in its original state.<p>
Starting with version 0.79.5, releases are signed with this
<a href="../downloads/pubkey2.asc">4096bit RSA key</a>:
<pre>
pub 4096R/64F770B2 2015-10-05
Key fingerprint = E3AF E703 96CC C0D9 E5D8 381C B0DB CA7D 64F7 70B2
uid dvdisaster (pkg signing key #2)
sub 4096R/758BCC23 2015-10-05
</pre>
The <a href="../downloads/pubkey1.asc">1024bit DSA key</a> used to sign releases up to version 0.79.3 is
still available for reference.
Feel free to send an email to carsten@dvdisaster.org to obtain
any of these fingerprints directly from the developers.
Please include "GPG finger print" in the subject line.
<p>
<b>User's manual</b><p>
<a name="manual"></a>
The user manual is provided as a <a href="../downloads/manual.pdf">PDF document (manual.pdf)</a>.
It contains several basic examples of using dvdisaster and some background
information on its way of working.
You do not need to download the manual if you already have the
source code archive - a copy of the manual is contained there.
<p>
<b>Codec specification</b><p>
The specification of the RS01, RS02 and RS03 codec
is available as a <a href="../downloads/codecs.pdf">PDF document (codecs.pdf)</a>.
This document is meant to discuss the codec implementation among developers.
It requires knowledge in the area of coding theory and is not meant as end
user documentation.
<table>
<tr><td>
<a href="http://pdfreaders.org/"><img src="http://pdfreaders.org/graphics/pdfreaders-lang-neutral.png" alt="pdfreaders.org" /></a></td>
<td>Software for reading the PDF document is available at <a href="http://pdfreaders.org">PDFreaders.org</a>.</td>
</tr>
</table>
<p>
<b>Last Windows release</b><p>
<a name="windows"></a>
A native Windows fork of dvdisaster will be started soon by another developer,
but there is nothing to announce yet.
In the mean time, please continue using the last published version for Windows (0.72.3):
<table>
<tr>
<td>Source code:&nbsp;</td>
<td><a href="../downloads/dvdisaster-0.72.3.tar.bz2">dvdisaster-0.72.3.tar.bz2</a></td>
<td>(<a href="../downloads/dvdisaster-0.72.3.tar.bz2.gpg">digital signature</a>,
MD5 checksum: 4eb09c1aa3cdbc1dafdb075148fb471d)</td>
</tr>
<tr>
<td>Binary installer:&nbsp;</td>
<td><a href="../downloads/dvdisaster-0.72.3-setup.exe">dvdisaster-0.72.3-setup.exe</a></td>
<td>(<a href="../downloads/dvdisaster-0.72.3-setup.exe.gpg">digital signature</a>,
MD5 checksum: b6861ba1e8de6d91a2da5342a14870e0)</td>
</tr>
</table>
<!-- Page footer -->
<table width="100%" cellpadding="0" border="0">
<tr><td colspan="2" style="width:100%; height:10px;"></td></tr>
<tr><td colspan="2" class="hsep"></td></tr>
<tr>
<td align="center">
<span class="fs">
<i> Copyright 2004-2017 Carsten Gn&ouml;rlich.<br>
Verbatim copying and distribution of this entire article is permitted in any medium, provided this notice is preserved.
</i>
</span>
</td>
</tr>
<tr><td colspan="2" class="hsep"></td>
</tr>
</table>
</body>
</html>

View File

@@ -1,102 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<title></title>
<link rel="stylesheet" type="text/css" href="../css/dvdisaster.css">
</head>
<body>
<!-- Title header -->
<table width="100%" cellpadding="0" border="0">
<tr>
<td align="left">
<span class="fxxl"><b>dvdisaster</b>&nbsp;</span>
<i>Version 0.79.5 (stable) / 0.79.6 (unstable)</i>
</td>
<td align="right">
<span class="fxxl">&nbsp;</span>
<a href="../de/datenschutz.html">Deutsch</a> &nbsp; English
</td>
</tr>
<tr><td colspan="2" class="hsep"></td></tr>
<tr><td colspan="2">
<table class="navigation" width="100%" cellpadding="0" border="0">
<tr>
<td>Navigation: &nbsp;&nbsp;&nbsp;
<a href="index.html">Developer site</a> &nbsp;&middot;&nbsp;
<a href="misc.html">Miscellaneous</a>
</td>
<td align="right">
<b>Privacy policy</b> &nbsp;&middot;&nbsp;
<a href="imprint.html">Contact information</a>
</td>
</tr>
</table>
</td></tr>
<tr><td colspan="2" class="hsep"></td></tr>
<tr><td style="height: 10px"></td></tr>
</table>
<!-- Main body -->
<b>Privacy statement for the web sites</b><p>
dvdisaster.com, &nbsp;
dvdisaster.de, &nbsp;
dvdisaster.net, &nbsp;
dvdisaster.org
<p>
The dvdisaster project (<a href="imprint.html">see the contact page for representatives</a>)
provides its internet sites to you without requiring a registration or entering personal data.
<p>
<b>Server log files</b><p>
The servers of this internet site create no logs about your visit.
<p>
<b>Cookies</b><p>
This internet site does not use cookies.
<p>
<b>Links to other internet sites</b><p>
Our internet pages contain links to other internet sites.
The dvdisaster project has no control over their publishers,
and whether they follow our privacy policy.
<p>
<b>Further development of these internet pages</b><p>
Further development of these internet pages may require our privacy policy
to be changed. Please revisit this policy statement occasionally and watch for
change notices.
<!-- Page footer -->
<table width="100%" cellpadding="0" border="0">
<tr><td colspan="2" style="width:100%; height:10px;"></td></tr>
<tr><td colspan="2" class="hsep"></td></tr>
<tr>
<td align="center">
<span class="fs">
<i> Copyright 2004-2017 Carsten Gn&ouml;rlich.<br>
Verbatim copying and distribution of this entire article is permitted in any medium, provided this notice is preserved.
</i>
</span>
</td>
</tr>
<tr><td colspan="2" class="hsep"></td>
</tr>
</table>
</body>
</html>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.4 KiB

View File

@@ -11,7 +11,7 @@ archclean: clean
single:
pdflatex manual
manual.pdf: preface.tex background.tex defect-reporting.tex howtos.tex manual.tex qa.tex burning-compatibility.tex download.tex local.tex overview.tex
manual.pdf: preface.tex background.tex defect-reporting.tex howtos.tex manual.tex qa.tex download.tex local.tex overview.tex
pdflatex manual
pdflatex manual
pdflatex manual

View File

@@ -1,196 +0,0 @@
\section{Burning software compatibility}
\label{burning-compatibility}
dvdisaster must be used in conjunction with a CD/DVD/BD writing suite (``burning program'')
in order to generate ISO images and to write augmented ISO image files. Unfortunately,
not all burning programs provide the required features to work with dvdisaster.
Some burning programs may even produce media and/or ISO images which can not be
used with dvdisaster.
\smallskip
For your convenience, the dvdisaster project has tested some free burning programs
available for GNU/Linux. Please note that this list will always be incomplete and
only be a snapshot of a certain program version. It is likely to be outdated when
you are reading this page. It is therefore recommended that you test your specific
burning program version by following the \tlnk{howto-compat-overview}{instructions} given
in the howto section.
\paragraph{Recommended software}\quad
\medskip
The dvdisaster project recommends either using the command line tools
listed below or using the K3B burning application (which is actually
a graphical wrapper around the command line tools).
\paragraph{Burning program compatibility table}\quad
\medskip
\newcommand{\tgrey}[1]{\cellcolor{dkgrey}#1}
\newcommand{\tturquoise}[1]{\cellcolor{turquoise}#1}
\newcommand{\tpink}[1]{\cellcolor{pink}#1}
\newcommand{\tblue}[1]{\cellcolor{dkblue}#1}
\newcommand{\tred}[1]{&\begin{minipage}{10mm}{\cellcolor{ltred}#1}\end{minipage}}
\newcommand{\tyellow}[1]{&\begin{minipage}{10mm}\cellcolor{ltyellow}{#1}\end{minipage}}
\newcommand{\ok}{&\cellcolor{ltgreen}OK}
\newcommand{\na}{&\cellcolor{ltgrey}n.a.}
\newcommand{\nt}{&\begin{minipage}{10mm}{not tested}\end{minipage}}
\begin{tabular}{|c|c|c|c|c|c|c|c|c|c|}
\hline
\tgrey{} & \tgrey{} & \tgrey{} & \tturquoise{Create} &
\multicolumn{3}{c|}{\tpink{Burning images}} & \multicolumn{3}{c|}{\tblue{Burning images}} \\
\tgrey{Program} & \tgrey{Version} & \tgrey{Testing} & \tturquoise{ISO/} &
\multicolumn{3}{c|}{\tpink{for error}} &
\multicolumn{3}{c|}{\tblue{with embedded}} \\
\tgrey{} & \tgrey{} & \tgrey{Date} & \tturquoise{UDF} &
\multicolumn{3}{c|}{\tpink{correction files}} &
\multicolumn{3}{c|}{\tblue{error correction}} \\
\cline{5-10}
\tgrey{} & \tgrey{} & \tgrey{} &\tturquoise{Image} &\tpink{CD} &\tpink{DVD} &\tpink{BD} &\tblue{CD} &\tblue{DVD} &\tblue{BD} \\
\hline
\multicolumn{10}{|c|}{\cellcolor{ltgrey}Command line tools} \\
\hline
genisoimage & 1.1.11 & Jul'14 \ok \na \na \na \na \na \na \\
\hline
wodim & 1.1.11 & Jul'14 \na \ok \ok \na \ok \ok \na \\
\hline
growisofs & 7.1 & Jul'14 \na \na \ok \ok \na \ok \ok \\
\hline
\multicolumn{10}{|c|}{\cellcolor{ltgrey}Tools with a graphical user interface} \\
\hline
brasero & 3.4.1 & Jul'14 \tred{no UDF$^{1)}$} \tyellow{avoid$^{2)}$} \ok \na \tyellow{avoid$^{2)}$} \ok \na \\
\hline
K3B & 2.0.2 & Jul'14 \ok \ok \ok \na \ok \ok \na \\
\hline
xfburn & 0.4.3 & Jul'14 \ok \tyellow{re-read only$^{3)}$} \tyellow{re-read only$^{3)}$} \na \tred{do not use$^{3)}$} \tred{do not use$^{3)}$} \na \\
\hline
\end{tabular}
\bigskip
\paragraph{Testing conditions and objectives}\quad
\medskip
Testing was done using Debian 7.5 (wheezy) on an amd64 machine.
Versions of the tested writing software are indicated in the table above.
\medskip
Evaluation of the burning software is done for the two major cases where
interoperability with dvdisaster is required:
\bigskip
a) Creating error correction files
\medskip
The burning program is used to assemble an ISO image from a selected set of files,
and to write a CD, DVD or BD disc from it. An \tlnk{howto-eccfile}{error correction file} will
be created to protect this medium.
\smallskip
There are two ways of obtaining the ISO image for creating the error correction file:
\begin{enumerate}
\item The burning program is used to create an ISO image which is stored on hard disk.
This image is used for burning the medium and for creating the error correction file.
If the writing software creates a medium which does not exactly match the image,
the resulting error correction file may be useless.
A respective \tlnk{howto-compat-file}{testing method} is described
in the ``Howtos'' section. An ``OK'' in the table above indicates that
this test has been passed. But you are strongly advised to
\tlnk{howto-compat-file}{do your own test} at least
once to make sure that you are working on the same versions and premises.
\smallskip
If it is not possible to use a pre-made ISO image for both writing the medium
and for creating the error correction file, the writing software is
rated ``Re-read only'' in the table. In that case, use the alternative
approach described below (topic 2).
\item The burning program is used to write a medium, either by using a
pre-made ISO image or by creating the image on-the-fly while writing
the medium. Afterwards, the pre-made ISO image is discarded. dvdisaster
is used to read back a new ISO image from the newly written medium. From
this newly created ISO image the error correction file is created. This
process should always work; if not, the respective burning software is
marked as being unusable in the table.
\end{enumerate}
\bigskip
b) Augmenting a medium with error correction data
\medskip
\tlnk{howto-augment-write-iso}{Creating a medium}
\tlnk{howto-augment}{with embedded error correction data} is comprised of
several sub tasks: First, the burning application converts a selection of files
into an ISO image stored on hard disk. dvdisaster augments the image residing
on the hard disk with error correction data. Then, the burning application
writes the augmented image to the CD, DVD or BD. The ISO image content or format
must not be altered during the writing process. Especially, the added error correction
sectors must not be removed and no padding sectors must be added to the image during
the writing process. The ``Howto'' section describes
\tlnk{howto-compat-augment}{a test for compatibility between
a writing software and dvdisaster}. An ``OK'' in the table above indicates that this
test has been passed; otherwise you can not use the respective software for writing
augmented images. You are strongly advised to \tlnk{howto-compat-augment}{do your own test} at
least once to make sure that you are working on the same versions
and premises even with software marked as compatible in the table above.
\bigskip
c) Creating ISO images
\medskip
In addition, the table indicates whether the burning application can convert
a selection of files into an ISO image and store that ISO image on hard disk
for further processing with dvdisaster.
\paragraph{Notes (why a certain software failed a test)}\quad
\medskip
$^{1)}${\bf brasero} can only create ISO images, not ISO/UDF. This is not
recommended for DVD-Video authoring and has the disadvantage that files
with sizes greater than 2GiB can not be used in a portable way (the tested
version can not use files larger than 2GiB at all even if it says otherwise).
\bigskip
$^{2)}${\bf brasero} does not support the ``disc at once'' writing strategy. This
creates two spurious unreadable sectors at the end of CD media. dvdisaster
can handle such media, but will issue a warning and requires a preferences
setting each time such media is processed.
\bigskip
$^{3)}${\bf xfburn} can not be used to write RS02/RS03 augmented images due to a
wrong implementation of padding sector handling. In a correct implementation,
a burning program would add 150 zero padding sectors to an image it has created
itself. However padding sectors must never be added to an image which was created
or manipulated by a foreign application, such as an image being augmented by dvdisaster.
This results in the image being read back with wrong checksums, and dvdisaster will
rightfully complain that the ``Image file is 150 sectors longer than expected.''.
Error correction files can - for the same reason - not be used when created from
the original image, but it is possible to re-read the image from the written
medium and create error correction files from that image.

View File

@@ -15,8 +15,8 @@ the \href{http://www.gnu.org/licenses/gpl-3.0.txt}{GNU General Public License v3
\bigskip
The dvdisaster developer site (\url{https://web.archive.org/web/20180428070843/http://dvdisaster.net}) contains
the latest source code releases for the FreeBSD, GNU/Linux and NetBSD
The dvdisaster developer site (\homepage) contains
source code releases for the FreeBSD, GNU/Linux and NetBSD
operating systems. These are mostly aimed at maintainers of binary packages for
the beforementioned platforms. As an end user you might find it more convenient
to install dvdisaster from the package system of your operating system bundle or
@@ -36,7 +36,7 @@ is optional; you can use dvdisaster directly from the build tree.
\paragraph{Hardware requirements}\quad
\begin{itemize}
\item x86, PowerPC or Sparc processor;
\item x86, ARM or PowerPC processor;
\item an up-to-date CD/DVD/BD drive with ATAPI, SATA or SCSI interface;
\item enough hard disk space for creating .iso images from processed media.
\end{itemize}
@@ -73,7 +73,7 @@ NetBSD & 6.1.5 \\
\medskip
Support for Windows and Mac OS has been ended
Support for Windows and Mac OS X has been ended
and is not planned to be resumed in the
future (see \tlnk{qa-discontinued-os}{QA item 2.4 for an explanation)}.
@@ -93,6 +93,13 @@ won't do, we have compiled the following list:
\smallskip
The dvdisaster project uses the following web site for supplying software downloads:
\begin{center}
\homepage
\end{center}
\begin{comment}
The dvdisaster project uses the following internet domains for publishing
its web sites and supplying software downloads:
@@ -106,6 +113,8 @@ dvdisaster.org
\end{center}
All domains are forwarded to the same site at dvdisaster.net.
\end{comment}
No other internet or download sites are run by the dvdisaster project.
\paragraph{No money or personal data required.}\quad

View File

@@ -2069,9 +2069,8 @@ want to re-invent medium writing in dvdisaster, as a lot of useful programs
have already been written for this task. You should however pick a writing
application which supports SAO/DAO (session at once / disc at once) writing
on CD media and does not modify ISO images supplied by third-party software
(like dvdisaster). Some common free burning programs for GNU/Linux have been
\tlnk{burning-compatibility}{evaluated in the burning software compatibility section}.
For a start try using the K3B burning program.
(like dvdisaster). Not all burning programs are \tlnk{howto-compat-overview}{compatible with dvdisaster}, so new programs should be
\tlnk{howto-compat-augment}{checked before using}. For a start we recommend the K3B burning program.
\bigskip
@@ -3625,14 +3624,6 @@ writing the error correction data to the medium. Make sure that your
writing software does \tlnk{howto-compat-augment}{correctly transfer the error correction data}
when using it with augmented images for the first time.
\end{itemize}
\smallskip
Please see also the \tlnk{burning-compatibility}{burning software compatibility list}. From time
to time the dvdisaster project evaluates some of the most popular burning
software for the GNU/Linux platform and summarizes the results there.
%\newpage
\subsubsection{Testing compatibility with CD/DVD/BD writing software for error correction files}
\label{howto-compat-file}
@@ -3646,6 +3637,8 @@ In order to save time you do the following:
\item You create the error correction file from the same image.
\end{enumerate}
\newpage
\paragraph{Possible incompatibility:} The writing software creates a medium which
does not exactly match the image. This might prevent the error correction from recovering
the medium contents when it becomes defective.

Binary file not shown.

View File

@@ -11,6 +11,7 @@
\usepackage{color}
\usepackage[table]{xcolor}
\usepackage{hyperref}
\usepackage{comment}
\marginsize{30mm}{20mm}{20mm}{20mm} % Seitenränder links, rechts, oben, unten
\parindent0em % Keine amerikanische Einrückung am Anfang von Paragraphen
@@ -40,7 +41,7 @@
\hypersetup{
pdftitle={dvdisaster User's Manual},
pdfauthor={Carsten Gnörlich},
pdfauthor={Written by the dvdisaster development team},
colorlinks=true,
linkcolor=linkblue,
citecolor=linkblue,
@@ -72,7 +73,7 @@
\definecolor{lightorange}{RGB}{255,224,150}
\pagecolor{lightorange}
\title{The dvdisaster User's Manual}
\author{Carsten Gnörlich\\carsten@dvdisaster.org}
\author{Written by the dvdisaster development team\\support@dvdisaster.org}
\date{}
\maketitle
\thispagestyle{empty}
@@ -92,7 +93,7 @@ for optical media such as CD, DVD and BD discs.
Use cases for creating ecc data, recovering defective media
using ecc data and for general maintenanance of optical
media are given.
See \url{http://dvdisaster.org} for additional resources on
See \homepage for additional resources on
the dvdisaster project, e.g. for the {\em blue} manual (codecs.pdf)
containing a formal specification of the error correction data format.
\end{abstract}
@@ -100,9 +101,10 @@ containing a formal specification of the error correction data format.
\vfill
\begin{center}
{\em
Copyright 2008-2017 Carsten Gnörlich.
Verbatim copying and distribution of this entire article is permitted in any medium,
provided this notice is preserved.}
Copyright 2008-2017 Carsten Gnörlich.\\
Copyright 2019-2021 The dvdisaster development team.\\
Verbatim copying and distribution of this entire article is permitted in
any medium, provided this notice is preserved.}
\end{center}
\newpage
@@ -131,9 +133,6 @@ provided this notice is preserved.}
\input{background}
\newpage
\input{burning-compatibility}
\newpage
\input{defect-reporting}
\label{LastPage}\label{missing}

View File

@@ -37,7 +37,7 @@ protected media, you're looking at the wrong place. Such functions are
outside the scope of dvdisaster's internal design and goals.
Contrary to some myths saying otherwise: dvdisaster contains
no hidden program fragments or switches for reading protected discs.
Check the source code for yourself if you don't trust me.
Check the source code for yourself if you don't trust us.
\subsection{How to use this manual}
@@ -79,9 +79,8 @@ and finally a few \tlnk{background-eccfile-storage}{hints for storing error corr
\smallskip
As not all optical disc burning software may be compatible with dvdisaster,
you might want to check
the \tlnk{burning-compatibility}{compatibility table} and the additional
information provided with it.
you might want to
the \tlnk{howto-compat-overview}{perform compatibility tests} before using it .
\smallskip

View File

@@ -1,6 +1,19 @@
\section*{Preface}
\markboth{Preface}{Preface}
\label{preface}
After the publishing of version 0.79.5, the project has been dormant for another half decade. As time has passed by, it is foreseeable that optical media will become extinct just like floppy discs did long ago. Still, it is important to preserve the contents of already existing optical media. Towards this end, we will maintain dvdisaster to keep it usable on current hardware and OS versions.
We do not plan for a rapid release cycle. Neither will many new features be introduduced like it was at the beginning of the project. Instead, we will strive to fill in the missing gaps left over from the still open RS03 release cycle. Afterwards, dvdisaster shall be kept sound and complete as long as optical media are still in use.
\bigskip
{\em -- -- The dvdisaster development team, Spring 2021}
\newpage
\section*{Preface for version 0.79.5}
Since the release of dvdisaster 0.79.3\footnote{Version 0.79.4 was never finished
and released.}, nearly five years have passed.
This was partly due to changed circumstances in its

View File

@@ -359,6 +359,18 @@ Usable media by type:
You are welcome, of course, to provide an unoffical translation of the
project documentation on your own webspace and at your own discretion. }
\qa{There are problems opening this manual from dvdisaster\label{qa-manual}}
{dvdisaster uses {\tt xdg-open} for bringing up the PDF viewer. {\tt xdg-open} keeps a record of file types and applications capable of displaying them. However on some systems, {\tt xdg-open} is either not configured properly for viewing PDF, or misconfigured to use inappropriate programs like {\em Gimp}.
\smallskip
\paragraph{Remedy.} Configure {\tt xdg-open} properly. Usually the configuration is found in the ``settings'' menu of your desktop. As an alternative, use the command line to configure it for {\em xpdf}:
\smallskip
{\tt xdg-mime default xpdf.desktop application/pdf}}
%\newpage
\subsection{Error messages}

View File

@@ -1,83 +0,0 @@
b064d001e5e4ed8221eb9f10d784cf45 *src/dvdisaster.h
79abb986b900ec06a73256876ba0d65c *src/galois-inlines.h
14eb94f981903fcffe2ccb33aa2cb9db *src/md5.h
f2d723717ca5f450ee8cc0b556f5506a *src/read-linear.h
100127beaecc24b28b2b80d76bbf68c8 *src/rs01-includes.h
5b39a23de01c988d562d70ed68682ab7 *src/rs02-includes.h
4407ce43eae55b19409be9980432c94f *src/rs03-includes.h
2a5980c706c67bec479e4532ab9a7093 *src/scsi-layer.h
c779a2908542c6a519ed7cdfc4e5e073 *src/udf.h
8f86a75f83a3bc9b6ce54cce037b3c75 *src/bitmap.c
5230bd572fc8ef1857063c885c00463a *src/build.c
7b59033ebffd6d8230efaf6834b2f942 *src/cacheprobe.c
bfb6d7ed2a921ce18dc0339774f72f41 *src/closure.c
e5bd212395758ae0b7e97d70c7a2df55 *src/crc32.c
7f5951182421a0366782b191a0b4ba82 *src/crcbuf.c
abb7c9decfd43935c943bc0dd1bab0d5 *src/curve.c
f96a3e006fc5d1c5d181e5056377c9ce *src/debug.c
6f8843d1cccc55506771ab02168b2df3 *src/ds-marker.c
19d0f85d035115f3bd8d4472e6379058 *src/dvdisaster.c
1c8136affed485adaf60e7904d9930a4 *src/ecc-rs01.c
7b301352a60c18c25f84c8cc7a36fd48 *src/ecc-rs02.c
91aa71f03dc9dade2e97dc59d7ec38f0 *src/ecc-rs03.c
39900d26ddcbb7c7e2a9198de14bace1 *src/endian.c
3f6e9dffb9de733dcccc916ca38292ca *src/galois.c
abc8a8d55248eab5416c45104a033171 *src/help-dialogs.c
547bf9a9d005419a0ed601317aeb4e14 *src/heuristic-lec.c
746666ade12c2db41ce9af6f55e4c13c *src/icon-factory.c
b3db603f77fd2735a6e8b1c568f7bdac *src/image.c
fe9de426f96e6d206d1482a24f589253 *src/large-io.c
abed1a50b9751387dc1e3cbc84a61fba *src/l-ec.c
6960647dc7fc5ce8a2727326946aaff1 *src/logfile.c
92e81646ef4e8618ded5d82db6a6163a *src/maintenance.c
3c3eebc43fc7aff3865022207e06153b *src/main-window.c
913554f7e994e212f6a52b769eef24bb *src/md5.c
8f0acf2f7d98a55d05a4721d97741c7c *src/medium-info.c
ce145372a25e0fb96070d460da7bdbb4 *src/memtrack.c
66cdf82b59fd973e3060d163b6887a20 *src/menubar.c
5006b2db93b210be3fb630e8d9463239 *src/method.c
17183bad35db217e2c352178844ceda3 *src/method-link.c
2af6685017c247de7458e9c4d39b6ed5 *src/misc.c
6523662e8e5aa2daf38a7e8c07ce1180 *src/preferences.c
5e7b077020e063951cc72ea57f5f046a *src/print-sense.c
cdde449dd2a8f64b560ff18a36f86234 *src/random.c
28f42d264cd18bb2e0ccdd8e15a0172e *src/raw-editor.c
1d416f611a175ba15be27f7f5686dd98 *src/raw-sector-cache.c
7f281312b3a65666f7eebaadb62e7f6e *src/read-adaptive.c
ccdc572bb24d20ae6fb53f360318b492 *src/read-adaptive-window.c
af7a757cad586d3766a3eaad382c6737 *src/read-linear.c
47dc58effd96f2b23182a4595ca36171 *src/read-linear-window.c
edc0e564573d595c1196c4dc0e70e659 *src/recover-raw.c
ea4d6894e717d4957cde686f88d7bdfd *src/rs01-common.c
aa9d409ee4eeaa7ba92d731cf32ee727 *src/rs01-create.c
ab15d7470a2fe950ebb33134018f044f *src/rs01-fix.c
cb3722894665baf9c4ff4c26ff79737b *src/rs01-verify.c
5cdecc33da1579733f0545944c4069ab *src/rs01-window.c
b33a0982df485b4e52e56fc1c61285ae *src/rs02-common.c
a1025fcc9455219937bae5bfadf0abf5 *src/rs02-create.c
f466c8296a37ea88b64aec9c870d6d75 *src/rs02-fix.c
369ec37d67674ffd2627f0373a566f0c *src/rs02-recognize.c
8cc283e60a73493ac6ba60a2f4af1754 *src/rs02-verify.c
eccac3ed74b32508b27de0e0d363c6b1 *src/rs02-window.c
9a9b966171f1b375cf3381b545a1c6d4 *src/rs03-common.c
2502514702687a2a252feace096d20f4 *src/rs03-create.c
19676ef95e635206c19dfe12b957e4b2 *src/rs03-fix.c
b012df78d2c546c87f6dd75769515409 *src/rs03-preferences.c
7d6101e6a95aeb45d6cd03ffe8891b96 *src/rs03-recognize.c
b7a6a6c64b4034380c581a5499940db4 *src/rs03-verify.c
1d2b071943c121bf0c47a2e047317262 *src/rs03-window.c
a2e1e28a609af85d9b83f01339b33a62 *src/rs-decoder.c
3882a92849cd23e64c81262be6e52650 *src/rs-encoder-altivec.c
1fc6cad3af2461e7974bf49e8f1bf5e9 *src/rs-encoder.c
f7f3e2708f0c389ed53c0f1083567a55 *src/rs-encoder-sse2.c
2e099a3d88f25f81420b96fe9bd62f44 *src/scsi-freebsd.c
cd58a45387267fe0728f439d7bb2045d *src/scsi-layer.c
b1b6bd57433eedab3a4f35389a182d14 *src/scsi-linux.c
7064327dc15a2d88e5375176d4c64132 *src/scsi-netbsd.c
3c0e100cdd499b1c23ac5e12b1fd6694 *src/scsi-simulated.c
be42d574e6340845d984c21dc902af1a *src/scsi-unknown.c
85aa8093f41c36ce791363e94f488dec *src/show-manual.c
6099911dd508701b0b8b5d09105faf95 *src/smart-lec.c
10f3e2b054fe3c1ac69c738b97f1beaa *src/spiral.c
dec5fbde631058d48866cc1d77446d37 *src/udf.c
6741fc5457e9c2026451403f2d45096c *src/welcome-window.c

BIN
icons/nothing.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 193 B

BIN
icons/strip.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.1 KiB

BIN
icons/tooltip.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 421 B

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

26
macinst/Info.plist Normal file
View File

@@ -0,0 +1,26 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key></key>
<string></string>
<key>CFBundleExecutable</key>
<string>dvdisaster</string>
<key>CFBundleIconFile</key>
<string>dvdisaster</string>
<key>CFBundleIdentifier</key>
<string>com.dvdisaster.dvdisaster</string>
<key>CFBundleName</key>
<string>dvdisaster</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
<string>0.79.10</string>
<key>CFBundleSignature</key>
<string>CGCG</string>
<key>CFBundleVersion</key>
<string>1</string>
<key>NSHumanReadableCopyright</key>
<string>© 2004-2009 Carsten Gnörlich et al</string>
</dict>
</plist>

BIN
macinst/dvdisaster.icns Normal file

Binary file not shown.

667
misc-gui.c Normal file
View File

@@ -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 <http://www.gnu.org/licenses/>.
*/
/*** 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

View File

@@ -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,12 @@ 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
TMPDIR=/var/tmp
fi
LOGDIR="/dev/shm"
if ! test -d $LOGDIR; then
LOGDIR=/tmp
@@ -23,23 +31,25 @@ DIFFLOG="$LOGDIR/difflog.txt"
NEWLOG="$LOGDIR/newlog.txt"
TMPLOG="$LOGDIR/tmplog.txt"
MD5SUM=md5sum
UNAME="$(uname -s)"
if [ "$UNAME" = Darwin ]; then
MD5SUM="md5 -r"
else
MD5SUM=md5sum
fi
if ! $MD5SUM $RNDSEQ >/dev/null 2>&1; then
MD5SUM=../simple-md5sum
fi
nbfailed=0
# Assemble sed expressions for removal of variable output contents
SED_REMOVE_ISO_DIR="([a-zA-Z]:/[a-zA-Z0-9/]+)?${ISODIR}/"
# For MSYS2
if [ -n "$ORIGINAL_TEMP" ]; then
ISODIR="$ORIGINAL_TEMP"
# /c/ => C:/
SED_REMOVE_ISO_DIR="$(echo "$ISODIR" | cut -c2 | tr a-z A-Z):$(echo "$ISODIR" | cut -c3-)/"
NON_EXISTENT_DEVICE=V:
fi
@@ -110,7 +120,7 @@ function file_exists()
function try()
{ local doit=$(grep "${CODEC_PREFIX}_$2 " $CONFIGFILE)
if echo "$OS" | grep -q Windows && test -e "$CONFIGFILE_WIN" && grep -q "${CODEC_PREFIX}_$2 " "$CONFIGFILE_WIN"; then
if [[ $OS =~ Windows ]] && test -e "$CONFIGFILE_WIN" && grep -q "${CODEC_PREFIX}_$2 " "$CONFIGFILE_WIN"; then
doit=$(grep "${CODEC_PREFIX}_$2 " "$CONFIGFILE_WIN")
fi
@@ -196,7 +206,7 @@ function run_regtest()
local testeccopt=""
local image_md5=""
local ecc_md5=""
local pass="true"
local pass="false"
local fail_on_bad=$(grep "FAIL_ON_BAD" $CONFIGFILE)
fail_on_bad=$(echo $fail_on_bad | cut -d\ -f 2)
@@ -206,74 +216,95 @@ 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}"
fi
REFLOG=${DATABASE}/${CODEC_PREFIX}_${testsymbol}
REFLOG="${DATABASE}/${CODEC_PREFIX}_${testsymbol}"
if [ "$UNAME" = "Darwin" ] && [ -f "$REFLOG.darwin" ]; then
REFLOG="$REFLOG.darwin"
elif [[ $OS =~ Windows ]] && [ -f "$REFLOG.win" ]; then
REFLOG="$REFLOG.win"
fi
if test "$gui_mode" == "false"; then
rm -f $NEWLOG
rm -f $NEWLOG
echo "LANG=en_EN.UTF-8 $NEWVER --regtest --no-progress -i${testiso} ${testeccopt} ${extra_args} ${testparms}" >>$LOGFILE
LANG=en_EN.UTF-8 $NEWVER --regtest --no-progress -i${testiso} ${testeccopt} ${extra_args} ${testparms} 2>&1 | tail -n +3 >>$NEWLOG
echo "LANG=en_EN.UTF-8 $NEWVER --regtest --no-progress -i${testiso} ${testeccopt} ${extra_args} ${testparms}" >>$LOGFILE
LANG=en_EN.UTF-8 $NEWVER --regtest --no-progress -i${testiso} ${testeccopt} ${extra_args} ${testparms} 2>&1 | tail -n +4 >>$NEWLOG
if ! test -r $REFLOG; then
echo -e "FAIL\n$REFLOG missing in log file database"
return
fi
if ! test -r $REFLOG; then
pass="false"
if [ "$REGTEST_NO_UTF8" = 1 ]; then
echo "BAD; '$REFLOG' is missing in log file database"
else
printf "%b\r%b\n" "BAD; '$REFLOG' is missing in log file database" "[\e[31m✘\e[0m]"
fi
else
# ignore the memory tracker line when no memory leaks
# have been found
# ignore the memory tracker line when no memory leaks
# have been found
grep -va "dvdisaster: No memory leaks found." $NEWLOG >$TMPLOG
mv $TMPLOG $NEWLOG
# ignore log lines specified by user
if test -n "$IGNORE_LOG_LINE"; then
grep -Eva "$IGNORE_LOG_LINE" $NEWLOG >$TMPLOG
mv $TMPLOG $NEWLOG
fi
grep -va "dvdisaster: No memory leaks found." $NEWLOG >$TMPLOG
mv $TMPLOG $NEWLOG
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
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=${SED_REMOVE_ISO_DIR}==g" $NEWLOG | $filter) >${DIFFLOG}; then
if [ "$REGTEST_NO_UTF8" = 1 ]; then
echo "BAD; diffs found (<expected; >created):"
else
printf "%b\r%b\n" "BAD; diffs found (<expected; >created):" "[\e[31m✘\e[0m]"
fi
cat ${DIFFLOG}
# ignore log lines specified by user
if test "$interactive_diff" == "yes"; then
while true; do
read -n 1 -p ">> Press 'a' to accept this diff; 'v' to vimdiff; any other key to fail this test:" -e answer
if test "$answer" == "a"; then
cp $REFLOG $LOGDIR
head -n 2 $LOGDIR/${CODEC_PREFIX}_${testsymbol} >$REFLOG
sed -e "s=${SED_REMOVE_ISO_DIR}==g" $NEWLOG >>$REFLOG
pass="skip"
elif test "$answer" == "v"; then
vimdiff $REFLOG $NEWLOG
continue
else
pass="false"
fi
break
done
else
pass="false"
fi
fi
if test -n "$IGNORE_LOG_LINE"; then
grep -Eva "$IGNORE_LOG_LINE" $NEWLOG >$TMPLOG
mv $TMPLOG $NEWLOG
fi
filter=cat
echo "$options" | grep -qw SORTED && filter=sort
# 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;s=regtest/==g" $NEWLOG
# remote tmp path of github actions
sed -i -re "s=[-A-Za-z0-9_~]+/AppData/Local/Temp/==g" $NEWLOG
if ! diff <(tail -n +3 $REFLOG | $filter) <(cat $NEWLOG | $filter) >${DIFFLOG}; then
if [ "$REGTEST_NO_UTF8" = 1 ]; then
echo "BAD; diffs found (<expected; >created):"
else
printf "%b\r%b\n" "BAD; diffs found (<expected; >created):" "[\e[31m✘\e[0m]"
fi
cat ${DIFFLOG}
if test "$interactive_diff" == "yes"; then
while true; do
read -n 1 -p ">> Press 'a' to accept this diff; 'i' to ignore; 'v' to vimdiff; any other key to fail this test:" -e answer
if test "$answer" == "a"; then
cp $REFLOG $LOGDIR
head -n 2 $LOGDIR/${CODEC_PREFIX}_${testsymbol} >$REFLOG
cat $NEWLOG >>$REFLOG
pass="skip"
elif test "$answer" == "v"; then
vimdiff $REFLOG $NEWLOG
continue
else
if test "$answer" == "i"; then
pass="skip"
else
pass="false"
fi
fi
break
done
fi
else
pass="true"
fi
fi
else # gui mode
replace_config last-image "$testiso"
if test -n "${testecc}"; then
@@ -292,10 +323,15 @@ function run_regtest()
unset extra_args
image_md5=$(head -n 1 $REFLOG)
ecc_md5=$(head -n 2 $REFLOG | tail -n 1)
if test -r "$REFLOG"; then
image_md5=$(head -n 1 $REFLOG)
ecc_md5=$(head -n 2 $REFLOG | tail -n 1)
else
image_md5=ignore
ecc_md5=ignore
fi
if test ${image_md5} != "ignore"; then
if test "${image_md5}" != "ignore"; then
md5=$($MD5SUM ${testiso} | cut -d\ -f 1)
if test "$image_md5" != "$md5"; then
if [ "$REGTEST_NO_UTF8" = 1 ]; then
@@ -309,7 +345,7 @@ function run_regtest()
fi
fi
if test ${ecc_md5} != "ignore"; then
if test "${ecc_md5}" != "ignore"; then
md5=$($MD5SUM ${testecc} | cut -d\ -f 1)
if test "$ecc_md5" != "$md5"; then
if [ "$pass" = false ] || [ "$REGTEST_NO_UTF8" = 1 ]; then
@@ -340,7 +376,7 @@ function run_regtest()
[ $nbfailed -ge 256 ] && nbfailed=255
echo "test symbol for config: $testsymbol"
if test "$fail_on_bad" == "yes"; then
next=$(grep -A 1 ${CODEC_PREFIX}_$testsymbol config.txt | tail -n 1 | cut -d\ -f 1)
next=$(grep -A 1 "${CODEC_PREFIX}_$testsymbol" config.txt | tail -n 1 | cut -d\ -f 1)
echo "FAIL_ON_BAD set to yes -- exiting"
if test "$gui_mode" == "true"; then
guiarg="gui"

View File

@@ -170,6 +170,11 @@ RS01_adaptive_medium_with_dsm yes
### RS02 tests
# Strip tests
RS02_strip_ecc yes
RS02_strip_ecc_not yes
# Verify tests
RS02_good yes
RS02_good_quick yes
@@ -227,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
@@ -335,6 +340,11 @@ RS02_adaptive_with_wrong_rs03_file yes
### RS03 augmented image tests
# Strip tests
RS03i_strip_ecc yes
RS03i_strip_ecc_not yes
# Verify tests
RS03i_good yes
@@ -368,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

View File

@@ -84,11 +84,79 @@ try_sector: trying sector 21000
try_sector: read error, trying next header
try_sector: trying sector 20850
try_sector: no cookie, skipping current modulo
RS02Recognize: skipping exhaustive RS02 search
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
Sector 16384 cached; skipping modulo
FindHeaderInMedium: Trying modulo 4096
try_sector: trying sector 20480
try_sector: no cookie, skipping current modulo
FindHeaderInMedium: Trying modulo 2048
Sector 20480 cached; skipping modulo
FindHeaderInMedium: Trying modulo 1024
Sector 20480 cached; skipping modulo
FindHeaderInMedium: Trying modulo 512
try_sector: trying sector 20992
try_sector: no cookie, skipping current modulo
...trying RS03
RS03RecognizeImage: medium sim-cd
FindRS03HeaderInImage: medium sim-cd
RS03RecognizeImage: skipping exhaustive RS03 search
RS03RecognizeImage: quick RS03 search, attempting up to 3 sector reads max
.. trying layer size 1409
Scanning layers for signatures.
- layer slice 0
** All layers tested -> no RS03 data found
...no augmented image detected.
# Calling query_size()
# *** query_size(Simulated CD drive 1.00) ***

View File

@@ -84,11 +84,79 @@ try_sector: trying sector 21000
try_sector: read error, trying next header
try_sector: trying sector 20850
try_sector: no cookie, skipping current modulo
RS02Recognize: skipping exhaustive RS02 search
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
Sector 16384 cached; skipping modulo
FindHeaderInMedium: Trying modulo 4096
try_sector: trying sector 20480
try_sector: no cookie, skipping current modulo
FindHeaderInMedium: Trying modulo 2048
Sector 20480 cached; skipping modulo
FindHeaderInMedium: Trying modulo 1024
Sector 20480 cached; skipping modulo
FindHeaderInMedium: Trying modulo 512
try_sector: trying sector 20992
try_sector: no cookie, skipping current modulo
...trying RS03
RS03RecognizeImage: medium sim-cd
FindRS03HeaderInImage: medium sim-cd
RS03RecognizeImage: skipping exhaustive RS03 search
RS03RecognizeImage: quick RS03 search, attempting up to 3 sector reads max
.. trying layer size 1409
Scanning layers for signatures.
- layer slice 0
** All layers tested -> no RS03 data found
...no augmented image detected.
# Calling query_size()
# *** query_size(Simulated CD drive 1.00) ***

View File

@@ -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

View File

@@ -0,0 +1,12 @@
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 ().

View File

@@ -0,0 +1,12 @@
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 device V:.

View File

@@ -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

View File

@@ -0,0 +1,12 @@
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 ().

View File

@@ -84,11 +84,79 @@ try_sector: trying sector 21000
try_sector: read error, trying next header
try_sector: trying sector 20850
try_sector: read error, trying next header
RS02Recognize: skipping exhaustive RS02 search
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
Sector 16384 cached; skipping modulo
FindHeaderInMedium: Trying modulo 4096
try_sector: trying sector 20480
try_sector: no cookie, skipping current modulo
FindHeaderInMedium: Trying modulo 2048
Sector 20480 cached; skipping modulo
FindHeaderInMedium: Trying modulo 1024
Sector 20480 cached; skipping modulo
FindHeaderInMedium: Trying modulo 512
try_sector: trying sector 20992
try_sector: no cookie, skipping current modulo
...trying RS03
RS03RecognizeImage: medium sim-cd
FindRS03HeaderInImage: medium sim-cd
RS03RecognizeImage: skipping exhaustive RS03 search
RS03RecognizeImage: quick RS03 search, attempting up to 3 sector reads max
.. trying layer size 1409
Scanning layers for signatures.
- layer slice 0
** All layers tested -> no RS03 data found
...no augmented image detected.
# Calling query_size()
# *** query_size(Simulated CD drive 1.00) ***

View File

@@ -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.

View File

@@ -84,11 +84,79 @@ try_sector: trying sector 21000
try_sector: read error, trying next header
try_sector: trying sector 20850
try_sector: no cookie, skipping current modulo
RS02Recognize: skipping exhaustive RS02 search
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
Sector 16384 cached; skipping modulo
FindHeaderInMedium: Trying modulo 4096
try_sector: trying sector 20480
try_sector: no cookie, skipping current modulo
FindHeaderInMedium: Trying modulo 2048
Sector 20480 cached; skipping modulo
FindHeaderInMedium: Trying modulo 1024
Sector 20480 cached; skipping modulo
FindHeaderInMedium: Trying modulo 512
try_sector: trying sector 20992
try_sector: no cookie, skipping current modulo
...trying RS03
RS03RecognizeImage: medium sim-cd
FindRS03HeaderInImage: medium sim-cd
RS03RecognizeImage: skipping exhaustive RS03 search
RS03RecognizeImage: quick RS03 search, attempting up to 3 sector reads max
.. trying layer size 1409
Scanning layers for signatures.
- layer slice 0
** All layers tested -> no RS03 data found
...no augmented image detected.
# Calling query_size()
# *** query_size(Simulated CD drive 1.00) ***
@@ -153,6 +221,7 @@ try_sector: trying sector 21000
try_sector: read error, trying next header
try_sector: trying sector 20850
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

View File

@@ -84,11 +84,79 @@ try_sector: trying sector 21000
try_sector: read error, trying next header
try_sector: trying sector 20850
try_sector: no cookie, skipping current modulo
RS02Recognize: skipping exhaustive RS02 search
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
Sector 16384 cached; skipping modulo
FindHeaderInMedium: Trying modulo 4096
try_sector: trying sector 20480
try_sector: no cookie, skipping current modulo
FindHeaderInMedium: Trying modulo 2048
Sector 20480 cached; skipping modulo
FindHeaderInMedium: Trying modulo 1024
Sector 20480 cached; skipping modulo
FindHeaderInMedium: Trying modulo 512
try_sector: trying sector 20992
try_sector: no cookie, skipping current modulo
...trying RS03
RS03RecognizeImage: medium sim-cd
FindRS03HeaderInImage: medium sim-cd
RS03RecognizeImage: skipping exhaustive RS03 search
RS03RecognizeImage: quick RS03 search, attempting up to 3 sector reads max
.. trying layer size 1409
Scanning layers for signatures.
- layer slice 0
** All layers tested -> no RS03 data found
...no augmented image detected.
# Calling query_size()
# *** query_size(Simulated CD drive 1.00) ***
@@ -154,6 +222,7 @@ try_sector: trying sector 21000
try_sector: read error, trying next header
try_sector: trying sector 20850
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
@@ -240,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

View File

@@ -84,11 +84,79 @@ try_sector: trying sector 21000
try_sector: read error, trying next header
try_sector: trying sector 20850
try_sector: no cookie, skipping current modulo
RS02Recognize: skipping exhaustive RS02 search
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
Sector 16384 cached; skipping modulo
FindHeaderInMedium: Trying modulo 4096
try_sector: trying sector 20480
try_sector: no cookie, skipping current modulo
FindHeaderInMedium: Trying modulo 2048
Sector 20480 cached; skipping modulo
FindHeaderInMedium: Trying modulo 1024
Sector 20480 cached; skipping modulo
FindHeaderInMedium: Trying modulo 512
try_sector: trying sector 20992
try_sector: no cookie, skipping current modulo
...trying RS03
RS03RecognizeImage: medium sim-cd
FindRS03HeaderInImage: medium sim-cd
RS03RecognizeImage: skipping exhaustive RS03 search
RS03RecognizeImage: quick RS03 search, attempting up to 3 sector reads max
.. trying layer size 1409
Scanning layers for signatures.
- layer slice 0
** All layers tested -> no RS03 data found
...no augmented image detected.
# Calling query_size()
# *** query_size(Simulated CD drive 1.00) ***
@@ -156,6 +224,7 @@ try_sector: trying sector 21000
try_sector: read error, trying next header
try_sector: trying sector 20850
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
@@ -242,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

View File

@@ -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

View File

@@ -84,11 +84,79 @@ try_sector: trying sector 21000
try_sector: read error, trying next header
try_sector: trying sector 20850
try_sector: no cookie, skipping current modulo
RS02Recognize: skipping exhaustive RS02 search
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
Sector 16384 cached; skipping modulo
FindHeaderInMedium: Trying modulo 4096
try_sector: trying sector 20480
try_sector: no cookie, skipping current modulo
FindHeaderInMedium: Trying modulo 2048
Sector 20480 cached; skipping modulo
FindHeaderInMedium: Trying modulo 1024
Sector 20480 cached; skipping modulo
FindHeaderInMedium: Trying modulo 512
try_sector: trying sector 20992
try_sector: no cookie, skipping current modulo
...trying RS03
RS03RecognizeImage: medium sim-cd
FindRS03HeaderInImage: medium sim-cd
RS03RecognizeImage: skipping exhaustive RS03 search
RS03RecognizeImage: quick RS03 search, attempting up to 3 sector reads max
.. trying layer size 1409
Scanning layers for signatures.
- layer slice 0
** All layers tested -> no RS03 data found
...no augmented image detected.
# Calling query_size()
# *** query_size(Simulated CD drive 1.00) ***
@@ -170,6 +238,7 @@ try_sector: trying sector 21000
try_sector: read error, trying next header
try_sector: trying sector 20850
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
@@ -256,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

View File

@@ -84,7 +84,67 @@ try_sector: trying sector 21000
try_sector: no cookie, skipping current modulo
try_sector: trying sector 20850
try_sector: no cookie, skipping current modulo
RS02Recognize: skipping exhaustive RS02 search
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
Sector 24576 cached; skipping modulo
FindHeaderInMedium: Trying modulo 2048
try_sector: trying sector 26624
try_sector: no cookie, skipping current modulo
...trying RS03
RS03RecognizeImage: medium sim-cd
FindRS03HeaderInImage: medium sim-cd
@@ -166,6 +226,7 @@ try_sector: trying sector 21000
try_sector: no cookie, skipping current modulo
try_sector: trying sector 20850
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
@@ -249,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

View File

@@ -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.

View File

@@ -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.

View File

@@ -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.

View File

@@ -84,11 +84,79 @@ try_sector: trying sector 21000
try_sector: read error, trying next header
try_sector: trying sector 20850
try_sector: no cookie, skipping current modulo
RS02Recognize: skipping exhaustive RS02 search
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
Sector 16384 cached; skipping modulo
FindHeaderInMedium: Trying modulo 4096
try_sector: trying sector 20480
try_sector: no cookie, skipping current modulo
FindHeaderInMedium: Trying modulo 2048
Sector 20480 cached; skipping modulo
FindHeaderInMedium: Trying modulo 1024
Sector 20480 cached; skipping modulo
FindHeaderInMedium: Trying modulo 512
try_sector: trying sector 20992
try_sector: no cookie, skipping current modulo
...trying RS03
RS03RecognizeImage: medium sim-cd
FindRS03HeaderInImage: medium sim-cd
RS03RecognizeImage: skipping exhaustive RS03 search
RS03RecognizeImage: quick RS03 search, attempting up to 3 sector reads max
.. trying layer size 1409
Scanning layers for signatures.
- layer slice 0
** All layers tested -> no RS03 data found
...no augmented image detected.
# Calling query_size()
# *** query_size(Simulated CD drive 1.00) ***
@@ -99,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):
@@ -208,3 +174,4 @@ CrcBuf contents, image path none (medium):
md5State: invalid
fp sector: 16; 15c0fd35a0cfa0f83b9ccbd8604c2592
missing crcs: 20997
FreeCrcBuf - buffer cleared

View File

@@ -84,11 +84,79 @@ try_sector: trying sector 21000
try_sector: read error, trying next header
try_sector: trying sector 20850
try_sector: no cookie, skipping current modulo
RS02Recognize: skipping exhaustive RS02 search
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
Sector 16384 cached; skipping modulo
FindHeaderInMedium: Trying modulo 4096
try_sector: trying sector 20480
try_sector: no cookie, skipping current modulo
FindHeaderInMedium: Trying modulo 2048
Sector 20480 cached; skipping modulo
FindHeaderInMedium: Trying modulo 1024
Sector 20480 cached; skipping modulo
FindHeaderInMedium: Trying modulo 512
try_sector: trying sector 20992
try_sector: no cookie, skipping current modulo
...trying RS03
RS03RecognizeImage: medium sim-cd
FindRS03HeaderInImage: medium sim-cd
RS03RecognizeImage: skipping exhaustive RS03 search
RS03RecognizeImage: quick RS03 search, attempting up to 3 sector reads max
.. trying layer size 1409
Scanning layers for signatures.
- layer slice 0
** All layers tested -> no RS03 data found
...no augmented image detected.
# Calling query_size()
# *** query_size(Simulated CD drive 1.00) ***
@@ -99,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):
@@ -208,3 +174,4 @@ CrcBuf contents, image path none (medium):
md5State: invalid
fp sector: 16; 15c0fd35a0cfa0f83b9ccbd8604c2592
missing crcs: 20997
FreeCrcBuf - buffer cleared

View File

@@ -84,11 +84,79 @@ try_sector: trying sector 21000
try_sector: read error, trying next header
try_sector: trying sector 20850
try_sector: no cookie, skipping current modulo
RS02Recognize: skipping exhaustive RS02 search
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
Sector 16384 cached; skipping modulo
FindHeaderInMedium: Trying modulo 4096
try_sector: trying sector 20480
try_sector: no cookie, skipping current modulo
FindHeaderInMedium: Trying modulo 2048
Sector 20480 cached; skipping modulo
FindHeaderInMedium: Trying modulo 1024
Sector 20480 cached; skipping modulo
FindHeaderInMedium: Trying modulo 512
try_sector: trying sector 20992
try_sector: no cookie, skipping current modulo
...trying RS03
RS03RecognizeImage: medium sim-cd
FindRS03HeaderInImage: medium sim-cd
RS03RecognizeImage: skipping exhaustive RS03 search
RS03RecognizeImage: quick RS03 search, attempting up to 3 sector reads max
.. trying layer size 1409
Scanning layers for signatures.
- layer slice 0
** All layers tested -> no RS03 data found
...no augmented image detected.
# Calling query_size()
# *** query_size(Simulated CD drive 1.00) ***
@@ -132,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
@@ -140,3 +208,4 @@ CrcBuf contents, image path none (medium):
full: 1c479ed0276128f79fd72f7b3d087441
fp sector: 16; 15c0fd35a0cfa0f83b9ccbd8604c2592
missing crcs: 0
FreeCrcBuf - buffer cleared

View File

@@ -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

View File

@@ -0,0 +1,12 @@
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 ().

View File

@@ -0,0 +1,12 @@
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 device V:.

View File

@@ -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

View File

@@ -0,0 +1,12 @@
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 ().

View File

@@ -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.

View File

@@ -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.
Creating new rs01-tmp.iso image.
Reading CRC information from ecc data (RS01) ... done.

View File

@@ -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.

View File

@@ -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

View File

@@ -0,0 +1,12 @@
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 ().

View File

@@ -0,0 +1,12 @@
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 device V:.

View File

@@ -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

View File

@@ -0,0 +1,12 @@
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 ().

View File

@@ -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.

View File

@@ -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.
Scanning medium for read errors.
Reading CRC information from ecc data (RS01) ... done.

View File

@@ -50,6 +50,7 @@ try_sector: trying sector 21000
try_sector: read error, trying next header
try_sector: trying sector 20850
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

View File

@@ -50,6 +50,7 @@ try_sector: trying sector 21000
try_sector: read error, trying next header
try_sector: trying sector 20850
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

View File

@@ -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.

View File

@@ -50,6 +50,7 @@ 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

Some files were not shown because too many files have changed in this diff Show More