Compare commits

...

31 Commits

Author SHA1 Message Date
Stéphane Lesimple
fb67ee4ab5 chore: update locales & changelog 2020-09-05 18:42:56 +02:00
Stéphane Lesimple
daec1295aa fix: ensure variables are initialized before dereferencing 2020-09-05 18:42:56 +02:00
Stéphane Lesimple
9ba1374351 chore: re-enable adaptive read tests, enhance github actions 2020-09-05 18:42:56 +02:00
Stéphane Lesimple
d90cd7fa40 release patchlevel 4 2020-09-05 18:42:56 +02:00
Stéphane Lesimple
a98c795280 feat: allow adaptive reading again
The feature was disabled by the author in this version, as it missed RS03
awareness. We enable it if we find RS01, RS02 or no ECC data, and warn the
user if we find RS03, telling him that the wise choice is to cancel and
rely on linear read
2020-09-05 00:24:23 +02:00
Stéphane Lesimple
7a3391f49d fix: lift segfault when aborting adaptive read 2020-09-05 00:24:23 +02:00
Stéphane Lesimple
1a9416f7b2 feat: add --permissive-medium-type option
This option can be useful to try to work with normally unsupported media types.
Namely the Windows 10 default iso mounter (and virtual drive) is tagged DVD-DROM,
even if it mounts bare iso images. Useful for debugging (requires --debug).
2020-09-05 00:24:23 +02:00
Stéphane Lesimple
be2f7b67b9 fix: lift the limitation on the number of arguments 2020-09-05 00:24:23 +02:00
Stéphane Lesimple
dcfb23f4ee chore: update readme 2020-09-05 00:24:23 +02:00
Stéphane Lesimple
239f76c71c chore: add missing target dependency in makefile 2020-09-05 00:24:23 +02:00
Stéphane Lesimple
dc53597e8e chore: rename CLI version to NOGUI in the version tag
As CLI is already #defined, we couldn't stringify it properly
and we ended up with 1 in the version tag
2020-09-05 00:24:23 +02:00
Stéphane Lesimple
7091b5fbbe chore: update readme 2020-09-04 09:21:32 +02:00
Stéphane Lesimple
269ea45d8d chore: locales update 2020-09-04 09:21:17 +02:00
Stéphane Lesimple
7ee35f1d0a chore: use gcc -pipe to speed up the build 2020-09-04 09:21:17 +02:00
Stéphane Lesimple
0724a34af8 chore: build: finally really fix make parallelism 2020-09-04 09:21:17 +02:00
Stéphane Lesimple
898f2fcfb6 chore: move *.c *.h to src/, build in build/ 2020-09-03 09:32:13 +02:00
Stéphane Lesimple
5b82ec64bc release patchlevel3 2020-09-01 22:16:50 +02:00
Stéphane Lesimple
9fed89dbcf chore: automatically build & upload release assets 2020-09-01 22:16:02 +02:00
Stéphane Lesimple
22b2aba490 fix: windows: flavor in build.h was always UNKNOWN 2020-09-01 12:52:35 +02:00
Stéphane Lesimple
0598fad827 fix: windows: config file couldn't be written
now cfg and log file will be in the same directory than the exe (portable mode)
2020-09-01 12:52:35 +02:00
Stéphane Lesimple
cbcac368dc chore: add auto Windows CLI tests 2020-08-30 18:40:34 +02:00
Stéphane Lesimple
bd70bcef1b chore: add auto Windows CLI tests 2020-08-30 17:58:31 +02:00
Stéphane Lesimple
71b32a30a1 feat: BD-R: add --no-defect-management
Enable bigger augmented images for BD-R (around +3%).
If you know you will use a BD-R medium and want to maximize the free space
for parity data, you can skip the defect management formatting before burning,
at the expense of potential coasters. Specify this option to tell dvdisaster
to produce bigger images that will only fit on BD-R media burnt without defect
management. Some burning softwares call it "formatting" the BD-R before burning.
Note that should you need to repair such an augmented image, you'll then need to
specify this option on the command-line too.
2020-08-30 17:54:36 +02:00
Stéphane Lesimple
2d68cfb0b1 feat: add --no-bdr-defect-management to produce bigger augmented images with RS03 2020-08-30 17:06:41 +02:00
Stéphane Lesimple
c0c6747bd9 fix: reimport some missed locales 2020-08-29 22:11:30 +02:00
Stéphane Lesimple
3eecbcbdcc chore: autotest windows & linux on PR + remove 2 warnings under Linux 2020-08-29 21:44:15 +02:00
Stéphane Lesimple
49eecc0a6f chore: add a static make target 2020-08-27 19:11:12 +02:00
Stéphane Lesimple
4d2e0ba32c chore: fix make parallelism 2020-08-27 19:11:12 +02:00
Stéphane Lesimple
495a851356 fix: adjust BDXL_QL_SIZE and rollback BD_SL_SIZE to upstream version
BD_SL_SIZE was mistakenly modified in 0.79.6-pl1, we restore the
previous upstream version to avoid having several dvdisaster versions
in the field with different values set for it.

If you created an RS03 augmented image with 0.79.6-pl1, you'll still
be able to conduct a repair of the image, should it be damaged,
by using any 0.79.6 version (with or without patchlevel), using
the following additional command-line parameters:
dvdisaster -f --debug -n 12219392

BDXL_QL_SIZE (introduced in pl1) was also adjusted in this version,
To repair a damaged BD-R quadruple layer image created by pl1:
dvdisaster -f --debug -n 62500864

The values that were present in pl1 were corresponding to a BD-R
burnt without formatting it for defect management first, which enabled
more space for parity data. You can still do it if you want (read
the comment in the code introduced by this commit), but to follow
upstream design, the default number of sectors for all BD-R implies
that defect management is enabled.
2020-08-27 19:11:12 +02:00
Stéphane Lesimple
5b95870f39 chore: update README.md 2020-08-27 18:37:06 +02:00
Stéphane Lesimple
d76551ce39 chore: automatically run regression tests on pull request 2020-08-26 09:35:35 +02:00
179 changed files with 9240 additions and 8834 deletions

62
.github/workflows/make-dist.sh vendored Executable file
View File

@@ -0,0 +1,62 @@
#!/bin/bash
set -e
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='';;
esac
./dvdisaster$exe --version
if ./dvdisaster$exe --version | grep -q NOGUI; then
GUI=0
suffix="$os-cli-only"
else
GUI=1
suffix=$os-static
fi
archive=dvdisaster-$(echo "$github_ref" | grep -Eo '[^/]+$')-$suffix.zip
echo "Archive name is $archive"
echo "::set-output name=archive::$archive"
mkdir -p dist/locale
cp -vr locale/*/ dist/locale/
if [ "$os" != "linux64" ]; then
if [ "$GUI" = 1 ]; then
mkdir -p dist/share/themes
cp -vr $MINGW_PREFIX/share/themes/MS-Windows dist/share/themes/
cp -vr $MINGW_PREFIX/lib/gtk-2.0 dist/lib/
rm -rf dist/lib/gtk-2.0/include
fi
mkdir -p dist/lib
ntldd -R dvdisaster
for i in $(ntldd -R dvdisaster | awk '/mingw/ {print $3}' | tr \\\\ / | grep -Eo '[^/]+$')
do
test -e $MINGW_PREFIX/bin/$i && cp -va $MINGW_PREFIX/bin/$i dist/
done
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/
if command -v zip >/dev/null; then
mv dist ${archive/.zip/}
zip -9r $archive ${archive/.zip/}
mv ${archive/.zip/} dist
fi
echo "dist done ($archive)"

210
.github/workflows/release.yml vendored Normal file
View File

@@ -0,0 +1,210 @@
name: autobuild
on:
release:
types: [published]
jobs:
win64-gui:
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-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: 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
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'
- 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

187
.github/workflows/tests.yml vendored Normal file
View File

@@ -0,0 +1,187 @@
name: non-regression tests
on: [pull_request]
jobs:
win64-gui:
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-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
- 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)
- 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
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

View File

@@ -1,5 +1,66 @@
# dvdisaster changelog -*-text-*-
0.79.6.patchlevel-4 04-09-2020 *UNOFFICIAL*
- feat: allow adaptive reading again*
- feat: add --permissive-medium-type option
- fix: lift the limitation on the number of cmdline args
- fix: lift segfault when aborting adaptive read
- fix: ensure variables are initialized before dereferencing
- chore: re-enable adaptive read regtests
- chore: move *.c *.h to src/, and build in build/
- chore: build: finally really fix make parallelism
- chore: use gcc -pipe to speed up the build
- chore: rename CLI version to NOGUI in the version tag
- chore: add missing target dependency in Makefile
- chore: update readme
- chore: locales update
*:The original author disabled adaptive reading
specifically in 0.79.6 (see changelog below), as it
doesn't handle RS03 correctly yet. In this patchlevel
we enable it again for media without (detected) ECC data,
and for media protected with RS01 or RS02. If we detect RS03,
we tell the user the behaviour is unpredictable/undefined,
and recommend using linear reading instead.
0.79.6.patchlevel-3 01-09-2020 *UNOFFICIAL*
- fix: windows: flavor in build version was always 'UNKNOWN'
- fix: windows: the config & log files were not written properly
0.79.6.patchlevel-2 30-08-2020 *UNOFFICIAL*
- fix: Adjust BDXL_QL_SIZE and rollback BD_SL_SIZE to upstream version*
- feat: add --no-bdr-defect-management to produce bigger augmented images with RS03
- chore: remove 2 compiler warnings under Linux
- chore: automatically run regtests under Win32, Win64, Linux64 (regular and CLI-only) on pull requests
- chore: add a Linux CLI-only static make target
- chore: fix make parallelism
- chore: use tags to describe the build
*:BD_SL_SIZE was mistakenly modified in 0.79.6-pl1, we restore the
previous upstream value to avoid having several dvdisaster versions
in the field with different values set for it.
If you created an RS03 augmented image with 0.79.6-pl1, you'll still
be able to conduct a repair of the image, should it be damaged,
by using any 0.79.6 version (with or without patchlevel), using
the following additional command-line parameters:
dvdisaster -f --debug -n 12219392
On the patchlevel versions, this is equivalent to saying:
dvdisaster -f --no-bdr-defect-management
BDXL_QL_SIZE (introduced in pl1) was also adjusted in this version,
To repair a damaged BD-R quadruple layer image created by pl1:
dvdisaster -f --debug -n 62500864
On the patchlevel versions, this is equivalent to saying:
dvdisaster -f --no-bdr-defect-management
The values that were present in pl1 were corresponding to a BD-R
burnt without formatting it for defect management first, which enabled
more space for parity data. You can still do it if you want, with
--no-bdr-defect-management (see manpage), but to follow upstream,
the default number of sectors for all BD-R implies that defect
management is enabled.
0.79.6.patchlevel-1 20-08-2020 *UNOFFICIAL*
- This is an UNOFFICIAL version, not from the original author,
based on the latest available pre-release, 0.79.6.
@@ -14,7 +75,7 @@
- Added support for BDXL-QL (quadruple layer, 128GB)
- Added support to compile a CLI-only version, without
the GTK dependency (only glib2), compile with:
$ CLI_ONLY=1 ./configure && make clean all
$ CLI_ONLY=1 ./configure && make clean && make -j4
- Added support to compile a Windows version under MingW (tested
with MSYS2)
- All regression tests are passing on Linux 64, Win 32 and Win 64.

View File

@@ -67,28 +67,33 @@ OFILES = $(CFG_OFILES)
# Compilation related
######################################################################
.PHONY : all help show locale time-stamp
.PHONY : all help show locale
${BUILDTMP}/%.o : %.c
all: dvdisaster
src/build.h:
@echo "Updating:" src/build.h
@$(SRCDIR)/scripts/time-stamper.bash $(SRCDIR)/src/build.h
${BUILDTMP}/%.o : src/%.c
@echo "Compiling:" $?
@$(CC) $(COPTS) -c $? -o $@
all: time-stamp dvdisaster
${BUILDTMP}/build.o : src/build.c src/build.h
@echo "Compiling:" src/build.o
@$(CC) $(COPTS) -c src/build.c -o $@
${BUILDTMP}/build.o : build.c build.h
@echo "Compiling:" build.o
@$(CC) $(COPTS) -c build.c -o $@
${BUILDTMP}/icon-factory.o : src/icon-factory.c src/inlined-icons.h
@echo "Compiling:" src/icon-factory.o
@$(CC) $(COPTS) -c src/icon-factory.c -o $@
# Building the dvdisaster binary
time-stamp:
@$(SRCDIR)/scripts/time-stamper.bash $(SRCDIR)/build.h
dvdisaster: $(ICONS) $(OFILES)
dvdisaster: $(ICONS) $(OFILES)
@echo "Linking : dvdisaster"
@if test $(CFG_SYS_OPTIONS) == -DSYS_MINGW; \
then windres -v winres.rc -O coff -o winres.o >/dev/null ; \
$(CC) $(LOPTS) $(OFILES) $(LIBS) winres.o -o dvdisaster ; \
then windres -v src/winres.rc -O coff -o ${BUILDTMP}/winres.o >/dev/null ; \
$(CC) $(LOPTS) $(OFILES) $(LIBS) ${BUILDTMP}/winres.o -o dvdisaster ; \
else $(CC) $(LOPTS) $(OFILES) $(LIBS) -o dvdisaster ; \
fi
@if test -e locale/de/LC_MESSAGES/dvdisaster.mo \
@@ -97,47 +102,43 @@ dvdisaster: $(ICONS) $(OFILES)
else $(MAKE) --no-print-directory -C locale; \
fi
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 >inlined-icons.h
@gdk-pixbuf-csource --raw --name=dvdisaster_create icons/create.png >>inlined-icons.h
@gdk-pixbuf-csource --raw --name=dvdisaster_scan icons/scan.png >>inlined-icons.h
@gdk-pixbuf-csource --raw --name=dvdisaster_fix icons/fix.png >>inlined-icons.h
@gdk-pixbuf-csource --raw --name=dvdisaster_verify icons/verify.png >>inlined-icons.h
@gdk-pixbuf-csource --raw --name=dvdisaster_open_ecc icons/open-ecc.png >>inlined-icons.h
@gdk-pixbuf-csource --raw --name=dvdisaster_open_img icons/open-img.png >>inlined-icons.h
@gdk-pixbuf-csource --raw --name=dvdisaster_cd icons/cd.png >>inlined-icons.h
@gdk-pixbuf-csource --raw --name=dvdisaster_gtk_help icons/gtk-help.png >>inlined-icons.h
@gdk-pixbuf-csource --raw --name=dvdisaster_gtk_index icons/gtk-index.png >>inlined-icons.h
@gdk-pixbuf-csource --raw --name=dvdisaster_gtk_preferences icons/gtk-preferences.png >>inlined-icons.h
@gdk-pixbuf-csource --raw --name=dvdisaster_gtk_quit icons/gtk-quit.png >>inlined-icons.h
@gdk-pixbuf-csource --raw --name=dvdisaster_gtk_stop icons/gtk-stop.png >>inlined-icons.h
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: help-dialogs.c simple-md5sum
$(BUILDTMP)/help-dialogs.o: src/help-dialogs.c simple-md5sum
@if test -e fingerprints.md5; \
then if test -e help-dialogs.h; then rm help-dialogs.h; fi; \
mv inlined-icons.h inlined-icons.saved; \
mv build.h build.saved; \
./simple-md5sum -b *.h *.c | sort -k2 >tmp.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; \
mv inlined-icons.saved inlined-icons.h; \
mv build.saved build.h; \
if ! cmp tmp2.md5 tmp.md5 >/dev/null; \
then echo "#define MODIFIED_SOURCE 1" >> help-dialogs.h; \
else echo "#define UNMODIFIED_SOURCE 1" >> help-dialogs.h; \
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" >> help-dialogs.h; \
else echo "#define MODIFIED_SOURCE 1" >> src/help-dialogs.h; \
fi
@echo "Compiling:" help-dialogs.c
@$(CC) $(COPTS) -c help-dialogs.c -o $(BUILDTMP)/help-dialogs.o
@echo "Compiling:" src/help-dialogs.c
@$(CC) $(COPTS) -c src/help-dialogs.c -o $(BUILDTMP)/help-dialogs.o
$(BUILDTMP)/rs-encoder-sse2.o: rs-encoder-sse2.c
@echo "Compiling:" rs-encoder-sse2.c
@$(CC) $(SSE2_OPTIONS) $(COPTS) -c rs-encoder-sse2.c -o $(BUILDTMP)/rs-encoder-sse2.o
$(BUILDTMP)/rs-encoder-sse2.o: src/rs-encoder-sse2.c
@echo "Compiling:" src/rs-encoder-sse2.c
@$(CC) $(SSE2_OPTIONS) $(COPTS) -c src/rs-encoder-sse2.c -o $(BUILDTMP)/rs-encoder-sse2.o
$(BUILDTMP)/rs-encoder-altivec.o: rs-encoder-altivec.c
@echo "Compiling:" rs-encoder-altivec.c
@$(CC) $(ALTIVEC_OPTIONS) $(COPTS) -c rs-encoder-altivec.c -o $(BUILDTMP)/rs-encoder-altivec.o
$(BUILDTMP)/rs-encoder-altivec.o: src/rs-encoder-altivec.c
@echo "Compiling:" src/rs-encoder-altivec.c
@$(CC) $(ALTIVEC_OPTIONS) $(COPTS) -c src/rs-encoder-altivec.c -o $(BUILDTMP)/rs-encoder-altivec.o
locale:
@$(MAKE) --no-print-directory -C locale
@@ -145,10 +146,11 @@ locale:
untranslated:
@$(MAKE) --no-print-directory -C locale check-untranslated
simple-md5sum: md5.c
@$(CC) $(COPTS) $(MUDFLAP_CFLAGS) -DSIMPLE_MD5SUM md5.c $(LDFLAGS) $(MUDFLAP_LFLAGS) $(MUDFLAP_LIBS) -o simple-md5sum
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
manual: version.tex
@@ -292,7 +294,7 @@ archclean: distclean
distclean: clean
@echo "Removing configuration files"
@rm -f configure.log Makefile.config GNUmakefile locale/Makefile
@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
@@ -302,7 +304,7 @@ distclean: clean
clean:
@echo "Removing rebuildable files"
@rm -rf *.o $(BUILDTMP)/*.o medium.* abbild.* dvdisaster .dvdisaster core core.* *.core
@rm -f inlined-icons.h help-dialogs.h
@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;
@@ -315,7 +317,7 @@ clean:
$(MAKE) --no-print-directory simple-md5sum; \
echo "[simple-md5sum (re-)built]"; \
fi; \
./simple-md5sum -b *.h *.c >fingerprints.md5 ;\
./simple-md5sum -b src/*.h src/*.c >fingerprints.md5 ;\
mv build.saved build.h; \
fi
@rm -f simple-md5sum
@@ -323,8 +325,8 @@ clean:
@$(MAKE) --no-print-directory -C $(SRCDIR)/documentation/user-manual clean;
@$(MAKE) --no-print-directory -C $(SRCDIR)/locale clean;
BUILD=`grep BUILD $(SRCDIR)/build.h | cut -d ' ' -f 3`
arch: archclean time-stamp
BUILD=`grep BUILD $(SRCDIR)/src/build.h | cut -d ' ' -f 3`
arch: archclean build.h
@cd .. ; tar -c -z -f $(TAR_PREFIX)/$(PKGNAME)-$(BUILD).tgz $(PKGNAME)
INSTALL: documentation/install.template
@@ -334,14 +336,5 @@ srcdist: INSTALL distclean manual manualclean
@cd .. ; tar -c -j -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
MINGWROOT = $(shell dirname $(CC))/..
windist:
rm -rf dist
mkdir -p dist/lib dist/locale dist/share/themes
for i in libatk-1.0-*.dll libbrotlicommon.dll libbrotlidec.dll libbz2-*.dll libcairo-*.dll libdatrie-*.dll libexpat-*.dll libffi-*.dll libfontconfig-*.dll libfreetype-*.dll libfribidi-*.dll libgcc_s_*.dll libgdk_pixbuf-2.0-*.dll libgdk-win32-2.0-*.dll libgio-2.0-*.dll libglib-2.0-*.dll libgmodule-2.0-*.dll libgobject-2.0-*.dll libgraphite2.dll libgtk-win32-2.0-*.dll libharfbuzz-*.dll libiconv-*.dll libintl-*.dll libpango-1.0-*.dll libpangocairo-1.0-*.dll libpangoft2-1.0-*.dll libpangowin32-1.0-*.dll libpcre-*.dll libpixman-1-*.dll libpng16-*.dll libssp-*.dll libstdc++-*.dll libthai-*.dll libwinpthread-*.dll zlib1.dll; \
do cp -v $(MINGWROOT)/bin/$$i dist/ ; done
cp -v dvdisaster.exe dist/
cp -vr locale/*/ dist/locale/
cp -vr $(MINGWROOT)/share/themes/MS-Windows dist/share/themes/
cp -vr $(MINGWROOT)/lib/gtk-2.0 dist/lib/
find dist -type f -name "*.a" -delete
static: dvdisaster
$(CC) $(LOPTS) $(OFILES) $(LIBS) -pthread -static -o dvdisaster-static

View File

@@ -127,6 +127,11 @@ Call the configuration script in the usual way:
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
The script will possibly print some errors about missing libraries.
Type "configure --help" to learn about pointing configure
to the correct path of already installed libraries.

View File

@@ -1,53 +1,66 @@
# dvdisaster provides additional ECC protection for optical media
# What is dvdisaster?
It can loosely be compared to *par2* files, but the protection works at the *iso* level instead of working at the file level. This way, even if metadata from the optical media filesystem is damaged, dvdisaster can still work flawlessly.
**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.
This version of dvdisaster supports the following platforms:
Linux, FreeBSD, NetBSD on x86, PowerPC, Sparc, and Windows.
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.
Three protection codecs are supported, they're quickly detailed below. Please see the documentation/manual.pdf for more information about these, and everything else.
# The codecs
## RS01
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
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
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 distribute work over multiple processor cores and is therefore much faster than
RS01/RS02 on modern hardware.
- RS03 error correction files are - contrary to RS01 - robust against damage. This should
not delude you into careless handling of your error correction files though - the disadvan-
tages of reading at the filesystem level are still valid.
- RS03 augmented images do not require so-called master blocks holding important in-
formation. This makes RS03 a bit 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.
Please refer to the [PDF manual](documentation/user-manual/manual.pdf) for more information.
# Unofficial version
The last upstream version is dated 2017, and the official website is down.
The original README has been left untouched in this repository.
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 (The Debian version source code can be found [here](https://sources.debian.org/src/dvdisaster/))
- Windows build added back (was dropped upstream a few versions before the last one)
- A Linux CLI-only version can now be compiled, without depending on gtk
- Regression tests confirmed working on Linux64 (normal and CLI-only), Windows32 and Windows64
- 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)
For more information please refer to the [CHANGELOG](CHANGELOG).
## 3 available protection modes ("codecs")
**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.
**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 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.
# 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
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
(todo)
### Scanning a damaged CD under Windows
![dvdisaster_damaged_cd](https://user-images.githubusercontent.com/218502/91434313-edaaf880-e864-11ea-8e41-7b58a1e97a70.PNG)
### Scanning a healthy BD-R (single layer) with Linux GUI
![dvdisaster_bdr_read](https://user-images.githubusercontent.com/218502/91436728-fbfb1380-e868-11ea-8444-04ebc60809d8.PNG)
### Creating an RS03 error correction file with Linux GUI
![dvdisaster_bdr_create](https://user-images.githubusercontent.com/218502/91436740-00273100-e869-11ea-837a-af0d0733fe87.PNG)
### Verifying a BD-R image with Linux GUI
![dvdisaster_bdr_verify](https://user-images.githubusercontent.com/218502/91436731-fc93aa00-e868-11ea-93e6-b8c277620df7.PNG)

38
configure vendored
View File

@@ -3,21 +3,19 @@
# Load the shell functions needed for the rest of this script.
BASH_BASED_CONFIGURE=./scripts/bash-based-configure
REQUIRED_CFLAGS="-D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -I."
RECOMMENDED_CFLAGS="-DPATCHLEVEL=1 -O2 -fomit-frame-pointer -Wall -Wno-deprecated-declarations -Wno-stringop-truncation"
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"
DEBUG_CFLAGS="-ggdb -Wall"
if [ "$CLI_ONLY" = 1 ]; then
REQUIRED_CFLAGS="-DCLI $REQUIRED_CFLAGS"
echo '#define FLAVOR CLI' > build.h
else
echo '#define FLAVOR GUI' > build.h
fi
CFG_USE_CYGWIN="no" # do not change
if test -e $BASH_BASED_CONFIGURE; then
source $BASH_BASED_CONFIGURE
source $BASH_BASED_CONFIGURE $BASH_BASED_CONFIGURE_OPTS
else
echo "Could not find $BASH_BASED_CONFIGURE"
echo "You're probably not in the right directory."
@@ -78,10 +76,10 @@ PRINT_MESSAGE "\nChecking for functions and symbols..."
CHECK_FUNCTION mmap
if ! CHECK_FUNCTION getopt_long ; then
if ! test -e getopt.h || ! test -e getopt.c ; then
if ! test -e src/getopt.h || ! test -e src/getopt.c ; then
echo " * getopt_long is missing. You can provide one by simply"
echo " * copying getopt.c, getopt1.c and getopt.h from the GNU"
echo " * C library into this directory."
echo " * C library into the src/ directory."
exit 1
fi
fi
@@ -157,17 +155,17 @@ fi
PRINT_MESSAGE "\nCollecting source files:"
rm -f conftest.c method-link.c
cfiles="method-link.c"
rm -f src/conftest.c src/method-link.c
cfiles="src/method-link.c"
ofiles="$BUILDTMP/method-link.o"
for cfile in *.c; do
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/$cfile_prefix.o"
ofiles="$ofiles $BUILDTMP/$(basename $cfile_prefix.o)"
echo -n " $cfile_prefix"
done
@@ -175,37 +173,37 @@ echo
echo -e "\nCFG_CFILES = $cfiles" >> Makefile.config
echo "CFG_OFILES = $ofiles" >> Makefile.config
if [ "$CLI_ONLY" != 1 ]; then
echo "ICONS = inlined-icons.h" >> Makefile.config
echo "ICONS = src/inlined-icons.h" >> Makefile.config
fi
# Create the method wrapper
PRINT_MESSAGE "\nCollecting methods:"
cat >> method-link.c <<EOF
cat >> src/method-link.c <<EOF
/* Automatically generated wrapper for registering the methods */
void BindMethods(void)
{
EOF
for method in ecc-*.c; do
method_name=`echo $method | sed -e 's/\.c//' -e 's/ecc-//'`
for method in src/ecc-*.c; do
method_name=`echo $(basename $method) | sed -e 's/\.c//' -e 's/ecc-//'`
method_prefix="$method_prefix $method_name"
echo -n " $method_name"
done
for method in $method_prefix; do
echo " void register_${method}(void);" >> method-link.c
echo " void register_${method}(void);" >> src/method-link.c
done
echo >> method-link.c
echo >> src/method-link.c
for method in $method_prefix; do
echo " register_${method}();" >> method-link.c
echo " register_${method}();" >> src/method-link.c
done
echo "}" >> method-link.c
echo "}" >> src/method-link.c
echo
# Okay, hopefully we've got everything together now.

View File

@@ -1,4 +1,4 @@
.TH DVDISASTER 1 "2010-02-06" "0.80" "protection for optical media"
.TH DVDISASTER 1 "2020-08-30" "0.80" "protection for optical media"
.SH NAME
DVDISASTER \- data loss/scratch/aging protection for optical media
@@ -50,6 +50,7 @@ DVDISASTER \- data loss/scratch/aging protection for optical media
.RB [\| \-\-medium-info \|]
.RB [\| \-\-no-progress \|]
.RB [\| \-\-old-ds-marker \|]
.RB [\| \-\-no-bdr-defect-management \|]
.RB [\| \-\-prefetch-sectors
.IR n \|]
.RB [\| \-\-raw-mode
@@ -225,6 +226,21 @@ RS02 images:
\-n BDXL3 augments image suitable for three layered BDXL media.
.RE
.RS
\-n BDXL4 augments image suitable for quadruple layered BDXL media.
.RE
.RS
\-n BDNODM\ \ \ \ augments image suitable for BD media burnt without defect management.
.RE
.RS
\-n BD2NODM\ \ augments image suitable for two layered BD media burnt without defect management.
.RE
.RS
\-n BDXL3NODM augments image suitable for three layered BDXL media burnt without defect management.
.RE
.RS
\-n BDXL4NODM augments image suitable for quadruple layered BDXL media burnt without defect management.
.RE
.RS
\-n x\ \ \ \ \ augments image using approx. x sectors in total.
.RE
.RS
@@ -240,9 +256,22 @@ RS03 images:
.RS
Setting the redundancy is not possible due to constraints in the format.
The codec will automatically choose the size of the smallest fitting medium.
However, see --no-bdr-defect-management below.
.RE
.RE
.TP
.B \-\-no-bdr-defect-management
Enable bigger augmented images for BD-R (around +3%).
If you know you will use a BD-R medium and want to maximize the free space
for parity data, you can skip the defect management formatting before burning,
at the expense of potential coasters. Specify this option to tell dvdisaster
to produce bigger images that will only fit on BD-R media burnt without defect
management. Some burning softwares call it "formatting" the BD-R before burning.
Note that should you need to repair such an augmented image, you'll then need to
specify this option on the command-line too.
.RE
.TP
.B \-m, \-\-method n
lists/selects error correction methods (default: RS01).

Binary file not shown.

View File

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

View File

@@ -7,7 +7,7 @@ cat > Makefile <<EOF
EOF
for i in ../*.c; do
for i in ../src/*.c; do
cfiles="$cfiles $i"
nopath=`echo $i | sed -e 's/..\///'`
cfiles2="$cfiles2 $nopath"
@@ -34,7 +34,7 @@ messages.pot: \$(CFILES)
@cd ..; xgettext --no-wrap -cTRANSLATORS: -o locale/messages.pot -k_ -k_utf \$(CFILES_NP)
clean:
rm -f messages.pot
@rm -f messages.pot
EOF

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

View File

@@ -11,7 +11,7 @@ ISODIR=/var/tmp/regtest
if ! test -d $ISODIR; then
echo "$ISODIR does not exist."
echo "Please create it manually, or edit common.bash"
exit 0
exit 1
fi
LOGDIR="/dev/shm"
@@ -28,6 +28,8 @@ 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}/"
@@ -44,12 +46,13 @@ fi
# Usage
if test "$1" == "--help" || test "$1" == "-h"; then
echo "Usage: $0 [gui] [all|cont <test case>]"
exit 0;
echo "Usage: $0 [gui] [all|[cont|only] <test case>]"
exit 1;
fi
doall="no"
cont_at="false"
only_this_one="false"
gui_mode="false"
param=($*)
@@ -59,6 +62,7 @@ case "${param[0]}" in
gui_mode="true"
param[0]="${param[1]}"
param[1]="${param[2]}"
param[2]="${param[3]}"
;;
esac
@@ -69,6 +73,9 @@ case "${param[0]}" in
cont)
cont_at="${param[1]}"
;;
only)
only_this_one="${param[1]}"
;;
esac
# Sanity check
@@ -78,7 +85,7 @@ if test -x $NEWVER; then
echo "OK"
else
echo "missing."
exit 0
exit 1
fi
### Helper functions
@@ -118,9 +125,19 @@ function try()
cont_at="false"
fi
if test "$only_this_one" != "false"; then
if test "$only_this_one" != "${CODEC_PREFIX}_$2"; then
return 1
elif test "$only_this_one" == "done_please_exit"; then
exit $nbfailed
else
only_this_one="done_please_exit"
fi
fi
doit=$(echo $doit | cut -d\ -f 2)
if test $doall = "yes" || test $doit = "yes"; then
if test $doall = "yes" || test $doit = "yes" || test $only_this_one != "false"; then
# Clean up temporary files
if test -n "$TMPISO" && test -f "$TMPISO"; then
rm -f $TMPISO
@@ -136,10 +153,16 @@ function try()
REGTEST_SECTION="Test"
fi
echo -n "[ ] ${CODEC_PREFIX} - ${REGTEST_SECTION} - $1 - "
if [ "$REGTEST_NO_UTF8" != 1 ]; then
echo -n "[ ] "
fi
echo -n "${CODEC_PREFIX} - ${REGTEST_SECTION} - $1 - "
return 0
else
echo "[-] ${CODEC_PREFIX} - ${REGTEST_SECTION} - $1 - SKIPPED ($doit, ${CODEC_PREFIX}_$2)"
if [ "$REGTEST_NO_UTF8" != 1 ]; then
echo -n "[-] "
fi
echo "${CODEC_PREFIX} - ${REGTEST_SECTION} - $1 - SKIPPED ($doit, ${CODEC_PREFIX}_$2)"
return 1
fi
}
@@ -216,27 +239,37 @@ function run_regtest()
filter=cat
echo "$options" | grep -qw SORTED && filter=sort
if [ "${CODEC_PREFIX}_${testsymbol}" = RS01_scan_no_device ] || [ "${CODEC_PREFIX}_${testsymbol}" = RS01_read_no_device ]; then
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
printf "%b\r%b\n" "BAD; diffs found (<expected; >created):" "[\e[31m✘\e[0m]"
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
echo
echo ">> The diff can also be seen with: vimdiff $REFLOG $NEWLOG"
read -n 1 -p ">> Press 'a' to accept this diff; 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"
else
pass="false"
fi
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
@@ -253,7 +286,7 @@ function run_regtest()
xterm_pid=$!
fi
LANG=en_EN.UTF-8 $NEWVER --regtest $extra_args --resource-file $LOGDIR/.dvdisaster-regtest >>$NEWLOG 2>&1
LANG=en_EN.UTF-8 timeout 15 $NEWVER --regtest $extra_args --resource-file $LOGDIR/.dvdisaster-regtest >>$NEWLOG 2>&1
rm -f $LOGDIR/.dvdisaster-regtest
fi
@@ -265,8 +298,11 @@ function run_regtest()
if test ${image_md5} != "ignore"; then
md5=$($MD5SUM ${testiso} | cut -d\ -f 1)
if test "$image_md5" != "$md5"; then
echo "BAD; md5 sum mismatch in image file:"
printf "%b\r%b\n" "BAD; md5 sum mismatch in image file:" "[\e[31m✘\e[0m]"
if [ "$REGTEST_NO_UTF8" = 1 ]; then
echo "BAD; md5 sum mismatch in image file:"
else
printf "%b\r%b\n" "BAD; md5 sum mismatch in image file:" "[\e[31m✘\e[0m]"
fi
echo "... expected image: $image_md5"
echo "... generated image: $md5"
pass="false"
@@ -276,7 +312,7 @@ function run_regtest()
if test ${ecc_md5} != "ignore"; then
md5=$($MD5SUM ${testecc} | cut -d\ -f 1)
if test "$ecc_md5" != "$md5"; then
if [ "$pass" = false ]; then
if [ "$pass" = false ] || [ "$REGTEST_NO_UTF8" = 1 ]; then
echo "BAD; md5 sum mismatch in ecc file:"
else
printf "%b\r%b\n" "BAD; md5 sum mismatch in ecc file:" "[\e[31m✘\e[0m]"
@@ -289,13 +325,19 @@ function run_regtest()
case "${pass}" in
true)
printf "%b\r%b\n" "GOOD" "[\e[32m✓\e[0m]"
if [ "$REGTEST_NO_UTF8" = 1 ]; then
echo GOOD
else
printf "%b\r%b\n" "GOOD" "[\e[32m✓\e[0m]"
fi
;;
skip)
;;
*)
nbfailed=$((nbfailed + 1))
[ $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)

View File

@@ -1,6 +1,6 @@
# Global toggles
FAIL_ON_BAD yes
FAIL_ON_BAD no
SPAWN_LOG_WINDOW no
INTERACTIVE_DIFF yes

View File

@@ -9,6 +9,7 @@ Device: sim-cd, Simulated CD drive 1.00
Using READ CD.
Medium "Random Image": CD-R mode 1, 21000 sectors, created 16-07-2006.
RS01-type ECC found
Adaptive reading: Trying to collect enough data for error correction.
*

View File

@@ -9,6 +9,7 @@ Device: sim-cd, Simulated CD drive 1.00
Using READ CD.
Medium "Random Image": CD-R mode 1, 21000 sectors, created 16-07-2006.
RS01-type ECC found
Adaptive reading: Trying to collect enough data for error correction.
Creating new rs01-tmp.iso image.
Repairable: 0.0% (correctable: 0; now reading [0..20999], size 21000)

View File

@@ -86,7 +86,7 @@ try_sector: trying sector 20850
try_sector: no cookie, skipping current modulo
RS02Recognize: skipping exhaustive RS02 search
...trying RS03
RS03Recognize: medium sim-cd
RS03RecognizeImage: medium sim-cd
FindRS03HeaderInImage: medium sim-cd
RS03RecognizeImage: skipping exhaustive RS03 search
...no augmented image detected.

View File

@@ -86,7 +86,7 @@ try_sector: trying sector 20850
try_sector: no cookie, skipping current modulo
RS02Recognize: skipping exhaustive RS02 search
...trying RS03
RS03Recognize: medium sim-cd
RS03RecognizeImage: medium sim-cd
FindRS03HeaderInImage: medium sim-cd
RS03RecognizeImage: skipping exhaustive RS03 search
...no augmented image detected.

File diff suppressed because one or more lines are too long

View File

@@ -9,6 +9,7 @@ Device: sim-cd, Simulated CD drive 1.00
Using READ CD.
Medium "Random Image": CD-R mode 1, 21044 sectors, created 16-07-2006.
RS01-type ECC found
Adaptive reading: Trying to collect enough data for error correction.
* Warning: Medium contains 44 sectors more as recorded in the .ecc file
* (Medium: 21044 sectors; expected from .ecc file: 21000 sectors).

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -9,6 +9,7 @@ Device: sim-cd, Simulated CD drive 1.00
Using READ CD.
Medium "Random Image": CD-R mode 1, 20956 sectors, created 16-07-2006.
RS01-type ECC found
Adaptive reading: Trying to collect enough data for error correction.
* Warning: Medium contains 44 sectors less as recorded in the .ecc file
* (Medium: 20956 sectors; expected from .ecc file: 21000 sectors).

View File

@@ -9,6 +9,7 @@ Device: sim-cd, Simulated CD drive 1.00
Using READ CD.
Medium "Random Image": CD-R mode 1, 21002 sectors, created 16-07-2006.
RS01-type ECC found
Adaptive reading: Trying to collect enough data for error correction.
* Warning: Medium contains 2 sectors more as recorded in the .ecc file
* (Medium: 21002 sectors; expected from .ecc file: 21000 sectors).

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -9,6 +9,7 @@ Device: sim-cd, Simulated CD drive 1.00
Using READ CD.
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.

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -9,6 +9,7 @@ Device: sim-cd, Simulated CD drive 1.00
Using READ CD.
Medium "Random Image": CD-R mode 1, 34932 sectors, Ecc, created 16-07-2006.
RS02-type ECC found
Adaptive reading: Trying to collect enough data for error correction.
Creating new rs02-tmp.iso image.
Repairable: 0.2% (missing: 34932; now reading [0..34931], size 34932)Repairable: 0.3% (missing: 34900; now reading [0..34931], size 34932)Repairable: 0.4% (missing: 34868; now reading [0..34931], size 34932)Repairable: 0.5% (missing: 34820; now reading [0..34931], size 34932)Repairable: 0.6% (missing: 34788; now reading [0..34931], size 34932)Repairable: 0.7% (missing: 34756; now reading [0..34931], size 34932)Repairable: 0.8% (missing: 34724; now reading [0..34931], size 34932)Repairable: 0.9% (missing: 34692; now reading [0..34931], size 34932)Repairable: 1.0% (missing: 34644; now reading [0..34931], size 34932)Repairable: 1.1% (missing: 34612; now reading [0..34931], size 34932)Repairable: 1.2% (missing: 34580; now reading [0..34931], size 34932)Repairable: 1.3% (missing: 34548; now reading [0..34931], size 34932)Repairable: 1.4% (missing: 34516; now reading [0..34931], size 34932)Repairable: 1.5% (missing: 34484; now reading [0..34931], size 34932)Repairable: 1.6% (missing: 34436; now reading [0..34931], size 34932)Repairable: 1.7% (missing: 34404; now reading [0..34931], size 34932)Repairable: 1.8% (missing: 34372; now reading [0..34931], size 34932)Repairable: 1.9% (missing: 34340; now reading [0..34931], size 34932)Repairable: 2.0% (missing: 34308; now reading [0..34931], size 34932)Repairable: 2.1% (missing: 34260; now reading [0..34931], size 34932)Repairable: 2.2% (missing: 34228; now reading [0..34931], size 34932)Repairable: 2.3% (missing: 34196; now reading [0..34931], size 34932)Repairable: 2.4% (missing: 34164; now reading [0..34931], size 34932)Repairable: 2.5% (missing: 34132; now reading [0..34931], size 34932)Repairable: 2.6% (missing: 34084; now reading [0..34931], size 34932)Repairable: 2.7% (missing: 34052; now reading [0..34931], size 34932)Repairable: 2.8% (missing: 34020; now reading [0..34931], size 34932)Repairable: 2.9% (missing: 33988; now reading [0..34931], size 34932)Repairable: 3.0% (missing: 33956; now reading [0..34931], size 34932)Sector 992, try 1: Medium Error; Unrecovered read error.

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -9,6 +9,7 @@ Device: sim-cd, Simulated CD drive 1.00
Using READ CD.
Medium "Random Image": CD-R mode 1, 34932 sectors, Ecc, created 16-07-2006.
RS01-type ECC found
Adaptive reading: Trying to collect enough data for error correction.
*

View File

@@ -8,7 +8,7 @@ See the file "COPYING" for further information.
Opening rs02-tmp.iso: 30000 medium sectors.
Augmenting image with Method RS02:
58 MiB data, 9 MiB ecc (35 roots; 15.9% redundancy).
* Warning: Using redundancies below 20%% may not give
* Warning: Using redundancies below 20% may not give
* the expected data loss protection.
Image has been augmented with error correction data.
New image size is 68 MiB (34932 sectors).

View File

@@ -16,7 +16,7 @@ Completing image rs02-tmp.iso. Only missing sectors will be read.
Opening rs02-tmp.iso: 30000 medium sectors.
Augmenting image with Method RS02:
58 MiB data, 9 MiB ecc (35 roots; 15.9% redundancy).
* Warning: Using redundancies below 20%% may not give
* Warning: Using redundancies below 20% may not give
* the expected data loss protection.
Image has been augmented with error correction data.
New image size is 68 MiB (34932 sectors).

View File

@@ -16,7 +16,7 @@ All sectors successfully read.
Opening rs02-tmp.iso: 30000 medium sectors.
Augmenting image with Method RS02:
58 MiB data, 9 MiB ecc (35 roots; 15.9% redundancy).
* Warning: Using redundancies below 20%% may not give
* Warning: Using redundancies below 20% may not give
* the expected data loss protection.
Image has been augmented with error correction data.
New image size is 68 MiB (34932 sectors).

View File

@@ -11,7 +11,7 @@ Opening rs02-tmp.iso: 39809 medium sectors.
Image size is now: 30000 medium sectors.
Augmenting image with Method RS02:
58 MiB data, 9 MiB ecc (35 roots; 15.9% redundancy).
* Warning: Using redundancies below 20%% may not give
* Warning: Using redundancies below 20% may not give
* the expected data loss protection.
Image has been augmented with error correction data.
New image size is 68 MiB (34932 sectors).

View File

@@ -11,7 +11,7 @@ Opening rs02-tmp.iso: 39810 medium sectors.
Image size is now: 30000 medium sectors and 56 bytes.
Augmenting image with Method RS02:
58 MiB data, 9 MiB ecc (35 roots; 15.9% redundancy).
* Warning: Using redundancies below 20%% may not give
* Warning: Using redundancies below 20% may not give
* the expected data loss protection.
Image has been augmented with error correction data.
New image size is 68 MiB (34933 sectors).

View File

@@ -11,7 +11,7 @@ Opening rs02-tmp.iso: 34932 medium sectors.
Image size is now: 30000 medium sectors.
Augmenting image with Method RS02:
58 MiB data, 9 MiB ecc (35 roots; 15.9% redundancy).
* Warning: Using redundancies below 20%% may not give
* Warning: Using redundancies below 20% may not give
* the expected data loss protection.
Image has been augmented with error correction data.
New image size is 68 MiB (34932 sectors).

View File

@@ -11,7 +11,7 @@ Opening rs02-tmp.iso: 34933 medium sectors.
Image size is now: 30000 medium sectors and 56 bytes.
Augmenting image with Method RS02:
58 MiB data, 9 MiB ecc (35 roots; 15.9% redundancy).
* Warning: Using redundancies below 20%% may not give
* Warning: Using redundancies below 20% may not give
* the expected data loss protection.
Image has been augmented with error correction data.
New image size is 68 MiB (34933 sectors).

View File

@@ -11,7 +11,7 @@ Opening rs02-tmp.iso: 34935 medium sectors.
Image size is now: 30000 medium sectors.
Augmenting image with Method RS02:
58 MiB data, 9 MiB ecc (35 roots; 15.9% redundancy).
* Warning: Using redundancies below 20%% may not give
* Warning: Using redundancies below 20% may not give
* the expected data loss protection.
Image has been augmented with error correction data.
New image size is 68 MiB (34932 sectors).

View File

@@ -11,7 +11,7 @@ Opening rs02-tmp.iso: 34935 medium sectors.
Image size is now: 30000 medium sectors and 137 bytes.
Augmenting image with Method RS02:
58 MiB data, 9 MiB ecc (35 roots; 15.9% redundancy).
* Warning: Using redundancies below 20%% may not give
* Warning: Using redundancies below 20% may not give
* the expected data loss protection.
Image has been augmented with error correction data.
New image size is 68 MiB (34933 sectors).

View File

@@ -8,7 +8,7 @@ See the file "COPYING" for further information.
Opening rs02-tmp.iso: 30000 medium sectors.
Augmenting image with Method RS02:
58 MiB data, 9 MiB ecc (35 roots; 15.9% redundancy).
* Warning: Using redundancies below 20%% may not give
* Warning: Using redundancies below 20% may not give
* the expected data loss protection.
*

View File

@@ -8,7 +8,7 @@ See the file "COPYING" for further information.
Opening rs02-tmp.iso: 30000 medium sectors and 137 bytes.
Augmenting image with Method RS02:
58 MiB data, 9 MiB ecc (35 roots; 15.9% redundancy).
* Warning: Using redundancies below 20%% may not give
* Warning: Using redundancies below 20% may not give
* the expected data loss protection.
Image has been augmented with error correction data.
New image size is 68 MiB (34933 sectors).

View File

@@ -17,7 +17,7 @@ All sectors successfully read. Checksums match.
Opening rs02-tmp.iso: 30000 medium sectors.
Augmenting image with Method RS02:
58 MiB data, 9 MiB ecc (35 roots; 15.9% redundancy).
* Warning: Using redundancies below 20%% may not give
* Warning: Using redundancies below 20% may not give
* the expected data loss protection.
Image has been augmented with error correction data.
New image size is 68 MiB (34932 sectors).

View File

@@ -20,7 +20,7 @@ Opening rs02-tmp.iso: 49935 medium sectors.
Image size is now: 30000 medium sectors.
Augmenting image with Method RS02:
58 MiB data, 9 MiB ecc (35 roots; 15.9% redundancy).
* Warning: Using redundancies below 20%% may not give
* Warning: Using redundancies below 20% may not give
* the expected data loss protection.
Image has been augmented with error correction data.
New image size is 68 MiB (34932 sectors).

View File

@@ -17,7 +17,7 @@ All sectors successfully read. Checksums match.
Opening rs02-tmp.iso: 30000 medium sectors.
Augmenting image with Method RS02:
58 MiB data, 9 MiB ecc (35 roots; 15.9% redundancy).
* Warning: Using redundancies below 20%% may not give
* Warning: Using redundancies below 20% may not give
* the expected data loss protection.
Image has been augmented with error correction data.
New image size is 68 MiB (34932 sectors).

View File

@@ -20,7 +20,7 @@ Opening rs02-tmp.iso: 36975 medium sectors.
Image size is now: 30000 medium sectors.
Augmenting image with Method RS02:
58 MiB data, 9 MiB ecc (35 roots; 15.9% redundancy).
* Warning: Using redundancies below 20%% may not give
* Warning: Using redundancies below 20% may not give
* the expected data loss protection.
Image has been augmented with error correction data.
New image size is 68 MiB (34932 sectors).

View File

@@ -7,7 +7,7 @@ See the file "COPYING" for further information.
Opening rs03i-tmp.iso: 21000 medium sectors.
41 MiB data, 7 MiB ecc (39 roots; 18.1% redundancy).
* Warning: Using redundancies below 20%% may not give
* Warning: Using redundancies below 20% may not give
* the expected data loss protection.
Image has been augmented with error correction data.
New image size is 48 MiB (24990 sectors).

View File

@@ -249,7 +249,7 @@ ndata = 216
nroots = 39 (18.1%)
41 MiB data, 7 MiB ecc (39 roots; 18.1% redundancy).
* Warning: Using redundancies below 20%% may not give
* Warning: Using redundancies below 20% may not give
* the expected data loss protection.
CrcBufValid: NOT complete
Cache allocation: 110592K+12288K+9984K=129M (data+parity+descrambling)

View File

@@ -250,7 +250,7 @@ ndata = 216
nroots = 39 (18.1%)
41 MiB data, 7 MiB ecc (39 roots; 18.1% redundancy).
* Warning: Using redundancies below 20%% may not give
* Warning: Using redundancies below 20% may not give
* the expected data loss protection.
CrcBufValid: buffer VALID
CrcBuf present, augmented image: using data MD5 sum

View File

@@ -10,7 +10,7 @@ Opening rs03i-tmp.iso: 29835 medium sectors.
* Truncating image to data part (21000 sectors).
Image size is now: 21000 medium sectors.
41 MiB data, 7 MiB ecc (39 roots; 18.1% redundancy).
* Warning: Using redundancies below 20%% may not give
* Warning: Using redundancies below 20% may not give
* the expected data loss protection.
Image has been augmented with error correction data.
New image size is 48 MiB (24990 sectors).

View File

@@ -10,7 +10,7 @@ Opening rs03i-tmp.iso: 29835 medium sectors.
* Truncating image to data part (21001 sectors).
Image size is now: 21000 medium sectors and 56 bytes.
41 MiB data, 7 MiB ecc (39 roots; 18.1% redundancy).
* Warning: Using redundancies below 20%% may not give
* Warning: Using redundancies below 20% may not give
* the expected data loss protection.
Image has been augmented with error correction data.
New image size is 48 MiB (24990 sectors).

View File

@@ -10,7 +10,7 @@ Opening rs03i-tmp.iso: 29887 medium sectors.
* Truncating image to data part (21000 sectors).
Image size is now: 21000 medium sectors.
41 MiB data, 7 MiB ecc (39 roots; 18.1% redundancy).
* Warning: Using redundancies below 20%% may not give
* Warning: Using redundancies below 20% may not give
* the expected data loss protection.
Image has been augmented with error correction data.
New image size is 48 MiB (24990 sectors).

View File

@@ -10,7 +10,7 @@ Opening rs03i-tmp.iso: 24927 medium sectors.
* Truncating image to data part (21001 sectors).
Image size is now: 21000 medium sectors and 56 bytes.
41 MiB data, 7 MiB ecc (39 roots; 18.1% redundancy).
* Warning: Using redundancies below 20%% may not give
* Warning: Using redundancies below 20% may not give
* the expected data loss protection.
Image has been augmented with error correction data.
New image size is 48 MiB (24990 sectors).

View File

@@ -10,7 +10,7 @@ Opening rs03i-tmp.iso: 24990 medium sectors.
* Truncating image to data part (21000 sectors).
Image size is now: 21000 medium sectors.
41 MiB data, 7 MiB ecc (39 roots; 18.1% redundancy).
* Warning: Using redundancies below 20%% may not give
* Warning: Using redundancies below 20% may not give
* the expected data loss protection.
Image has been augmented with error correction data.
New image size is 48 MiB (24990 sectors).

View File

@@ -10,7 +10,7 @@ Opening rs03i-tmp.iso: 24990 medium sectors.
* Truncating image to data part (21001 sectors).
Image size is now: 21000 medium sectors and 56 bytes.
41 MiB data, 7 MiB ecc (39 roots; 18.1% redundancy).
* Warning: Using redundancies below 20%% may not give
* Warning: Using redundancies below 20% may not give
* the expected data loss protection.
Image has been augmented with error correction data.
New image size is 48 MiB (24990 sectors).

View File

@@ -7,7 +7,7 @@ See the file "COPYING" for further information.
Opening rs03i-tmp.iso: 21000 medium sectors.
41 MiB data, 7 MiB ecc (39 roots; 18.1% redundancy).
* Warning: Using redundancies below 20%% may not give
* Warning: Using redundancies below 20% may not give
* the expected data loss protection.
*

View File

@@ -7,7 +7,7 @@ See the file "COPYING" for further information.
Opening rs03i-tmp.iso: 21000 medium sectors and 56 bytes.
41 MiB data, 7 MiB ecc (39 roots; 18.1% redundancy).
* Warning: Using redundancies below 20%% may not give
* Warning: Using redundancies below 20% may not give
* the expected data loss protection.
Image has been augmented with error correction data.
New image size is 48 MiB (24990 sectors).

View File

@@ -252,7 +252,7 @@ ndata = 216
nroots = 39 (18.1%)
41 MiB data, 7 MiB ecc (39 roots; 18.1% redundancy).
* Warning: Using redundancies below 20%% may not give
* Warning: Using redundancies below 20% may not give
* the expected data loss protection.
CrcBufValid: buffer VALID
CrcBuf present, augmented image: using data MD5 sum

View File

@@ -209,7 +209,7 @@ ndata = 216
nroots = 39 (18.1%)
41 MiB data, 7 MiB ecc (39 roots; 18.1% redundancy).
* Warning: Using redundancies below 20%% may not give
* Warning: Using redundancies below 20% may not give
* the expected data loss protection.
CrcBufValid: buffer VALID
CrcBuf present, augmented image: using data MD5 sum

View File

@@ -266,7 +266,7 @@ ndata = 216
nroots = 39 (18.1%)
41 MiB data, 7 MiB ecc (39 roots; 18.1% redundancy).
* Warning: Using redundancies below 20%% may not give
* Warning: Using redundancies below 20% may not give
* the expected data loss protection.
CrcBufValid: buffer VALID
CrcBuf present, augmented image: using data MD5 sum

View File

@@ -263,7 +263,7 @@ ndata = 216
nroots = 39 (18.1%)
41 MiB data, 7 MiB ecc (39 roots; 18.1% redundancy).
* Warning: Using redundancies below 20%% may not give
* Warning: Using redundancies below 20% may not give
* the expected data loss protection.
CrcBufValid: buffer VALID
CrcBuf present, augmented image: using data MD5 sum

View File

@@ -441,7 +441,7 @@ fi
# Tests whether CRC and ECC information is taken from the read process,
# not the wrong ecc file.
if false && try "read image with wrong ecc (RS01) and create new ecc" ecc_recreate_after_read_wrong_rs01; then
if try "read image with wrong ecc (RS01) and create new ecc" ecc_recreate_after_read_wrong_rs01; then
cp $MASTERISO $SIMISO
$NEWVER --debug -i$TMPISO --random-image $((ISOSIZE-777)) --random-seed 1337 >>$LOGFILE 2>&1
@@ -1478,9 +1478,6 @@ fi
REGTEST_SECTION="Reading tests (adaptive)"
echo "Currently not enabled!"
exit 0
# Read good image with error correction data available
if try "reading good image" adaptive_good; then

View File

@@ -730,7 +730,7 @@ fi
# Fix image containing 137 extra bytes
if false && try "trying to fix image with 137 extra bytes" fix_image_plus137; then
if try "trying to fix image with 137 extra bytes" fix_image_plus137; then
# Test possibly broken on upstream 0.79.6, forcefully ignoring
cp $ISO_PLUS137 $TMPISO
@@ -743,7 +743,7 @@ fi
# error in the zero-padded area following the 137 bytes.
# Both shall be corrected.
if false && try "trying to fix image with error in 137 extra bytes" fix_image_error_in_plus137; then
if try "trying to fix image with error in 137 extra bytes" fix_image_error_in_plus137; then
# Test possibly broken on upstream 0.79.6, forcefully ignoring
cp $ISO_PLUS137 $TMPISO
@@ -1775,9 +1775,6 @@ fi
REGTEST_SECTION="Reading tests (adaptive)"
echo "Currently not enabled!"
exit 0
# Read complete / optimal image
if try "reading good image" adaptive_good; then

View File

@@ -6,4 +6,5 @@ for i in rs*.bash; do
allfailed=$((allfailed + ret))
done
echo Failed $allfailed tests
[ $allfailed -ge 256 ] && allfailed=255
exit $allfailed

View File

@@ -1,17 +1,21 @@
#!/usr/bin/env bash
build=$(grep BUILDNUM $1 2>/dev/null | cut -d\ -f3)
build=$((build+1))
flavor=$(grep FLAVOR $1 2>/dev/null | cut -d\ -f3)
if [ -z "$flavor" ]; then
flavor=UNKNOWN
fi
echo "#define FLAVOR $flavor" >$1
cat >$1 <<EOF
#ifdef CLI
#define FLAVOR NOGUI
#else
#define FLAVOR GUI
#endif
#define STRINGIFY(x) #x
#define TOSTRING(x) STRINGIFY(x)
EOF
echo "#define BUILDNUM $build" >>$1
if git describe >/dev/null 2>/dev/null; then
gitver=$(git describe --tags --dirty)
echo "#define BUILD \"$gitver-$flavor-speed47.build$build\"" >>$1
echo "#define BUILD \"$gitver-\" TOSTRING(FLAVOR) \"-speed47.build$build\"" >>$1
else
echo "#define BUILD \"$gitver-speed47.build$build\"" >$1
echo "#define BUILD TOSTRING(FLAVOR) \"-speed47.build$build\"" >>$1
fi
date=$(date +"%d.%m.%y (%A, %H:%M)")
echo "#define BDATE \"$date\"" >>$1

View File

@@ -28,6 +28,33 @@
#define Verbose(format, ...)
#endif
#ifdef SYS_MINGW
#include <windows.h>
/* safety margin in case we're getting UTF path names */
#define WIN_MAX_PATH (4*MAX_PATH)
/*
* Find the place of our executable
* (Windows only)
*/
static char* get_exe_path()
{ char path[WIN_MAX_PATH];
int n = GetModuleFileNameA(NULL, path, WIN_MAX_PATH);
if(n>0 && n<WIN_MAX_PATH-1)
{ char *backslash = strrchr(path, '\\');
if(backslash) *backslash=0;
return g_strdup(path);
}
return g_strdup(".");
}
#endif
/***
*** Locate the binary and documentation directory
***/
@@ -36,9 +63,9 @@ static void get_base_dirs()
{
/*** Unless completely disabled through a configure option, the
source directory is supposed to hold the most recent files,
so try this first. */
so try this first (never under Windows). */
#ifdef WITH_EMBEDDED_SRC_PATH_YES
#if defined(WITH_EMBEDDED_SRC_PATH_YES) && !defined(SYS_MINGW)
if(DirStat(SRCDIR))
{ Closure->binDir = g_strdup(SRCDIR);
Closure->docDir = g_strdup_printf("%s/documentation",SRCDIR);
@@ -50,26 +77,40 @@ static void get_base_dirs()
/*** Otherwise try the installation directory.
On Unices this is a hardcoded directory. */
#if defined(SYS_LINUX) || defined(SYS_FREEBSD) || defined(SYS_KFREEBSD) || \
defined(SYS_NETBSD) || defined(SYS_HURD) || defined(SYS_UNKNOWN)
#ifndef SYS_MINGW
if(DirStat(BINDIR))
Closure->binDir = g_strdup(BINDIR);
if(DirStat(DOCDIR))
Closure->docDir = g_strdup(DOCDIR);
Verbose("Using hardcoded BINDIR = %s, DOCDIR = %s\n", BINDIR, DOCDIR);
#else
Closure->binDir = get_exe_path();
/* We'll just put the 2 PDF in the same dir, portable mode */
Closure->docDir = g_strdup(Closure->binDir);
Verbose("Using path from get_exe_path() = %s\n", Closure->binDir);
#endif
/*** The location of the dotfile depends on the operating system.
Under Unix the users home directory is used. */
#ifdef WITH_EMBEDDED_SRC_PATH_YES
#if defined(WITH_EMBEDDED_SRC_PATH_YES) && !defined(SYS_MINGW)
find_dotfile:
#endif /* WITH_EMBEDDED_SRC_PATH_YES */
#ifndef SYS_MINGW
Closure->homeDir = g_strdup(g_getenv("HOME"));
#else
Closure->homeDir = g_strdup(Closure->binDir); /* portable mode */
#endif
if(!Closure->dotFile) /* may have been set by the --resource-file option */
#ifndef SYS_MINGW
Closure->dotFile = g_strdup_printf("%s/.dvdisaster", Closure->homeDir);
#else
/* Windows doesn't really love dotfiles */
Closure->dotFile = g_strdup_printf("%s/dvdisaster.cfg", Closure->homeDir);
#endif
Verbose("\nUsing file locations:\n"
"- Homedir: %s\n"
@@ -425,7 +466,7 @@ GlobalClosure *Closure;
int exitCode = EXIT_SUCCESS;
void InitClosure()
{ int v1,v2,v3,dots=0;
{ int v1=0,v2=0,v3=0,dots=0;
char *v,version[strlen(VERSION)+1];
Closure = g_malloc0(sizeof(GlobalClosure));
@@ -506,6 +547,8 @@ void InitClosure()
Closure->welcomeMessage = 1;
Closure->useSCSIDriver = DRIVER_SG;
Closure->dsmVersion = 1;
Closure->noBdrDefectManagement = FALSE;
Closure->ignoreRS03header = FALSE;
/* default sizes for typical CD and DVD media */

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