Compare commits

...

20 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
146 changed files with 7898 additions and 7153 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

View File

@@ -1,16 +1,177 @@
name: C/C++ CI
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 libgtk2.0-dev libglib2.0-dev
run: sudo apt update && sudo apt install -y libglib2.0-dev ghostscript man jq libgtk2.0-dev
- name: configure
run: ./configure
- name: make
@@ -19,127 +180,8 @@ jobs:
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 && ./regtest/runtests.sh
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
- 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: regression tests
run: mkdir /var/tmp/regtest && ./regtest/runtests.sh
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
- 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 executability
run: ./dvdisaster.exe --version
- name: check executable
run: file dvdisaster.exe && file dvdisaster.exe | grep -q 'x86-64, for MS Windows'
- name: regression tests
run: mkdir /var/tmp/regtest && ./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
- 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 executability
run: ./dvdisaster.exe --version
- name: check executable
run: file dvdisaster.exe && file dvdisaster.exe | grep -q '386, for MS Windows'
- name: regression tests
run: mkdir /var/tmp/regtest && ./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
- 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 executability
run: ./dvdisaster.exe --version
- name: check executable
run: file dvdisaster.exe && file dvdisaster.exe | grep -q 'x86-64, for MS Windows'
- name: regression tests
run: mkdir /var/tmp/regtest && ./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
- 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 executability
run: ./dvdisaster.exe --version
- name: check executable
run: file dvdisaster.exe && file dvdisaster.exe | grep -q '386, for MS Windows'
- name: regression tests
run: mkdir /var/tmp/regtest && ./regtest/runtests.sh

View File

@@ -1,5 +1,32 @@
# 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

View File

@@ -67,29 +67,33 @@ OFILES = $(CFG_OFILES)
# Compilation related
######################################################################
.PHONY : all help show locale build.h
${BUILDTMP}/%.o : %.c
@echo "Compiling:" $?
@$(CC) $(COPTS) -c $? -o $@
.PHONY : all help show locale
all: dvdisaster
${BUILDTMP}/build.o : build.c build.h
@echo "Compiling:" build.o
@$(CC) $(COPTS) -c build.c -o $@
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 $@
${BUILDTMP}/build.o : src/build.c src/build.h
@echo "Compiling:" src/build.o
@$(CC) $(COPTS) -c src/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
build.h:
@echo "Updating:" build.h
@$(SRCDIR)/scripts/time-stamper.bash $(SRCDIR)/build.h
dvdisaster: $(ICONS) $(OFILES) build.h
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 \
@@ -98,47 +102,43 @@ dvdisaster: $(ICONS) $(OFILES) build.h
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
@@ -146,8 +146,8 @@ 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
@@ -294,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
@@ -304,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;
@@ -317,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
@@ -325,7 +325,7 @@ 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`
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)
@@ -336,26 +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
windistcli:
rm -rf dist
mkdir -p dist/locale
for i in libglib-2.0-*.dll libiconv-*.dll libintl-*.dll libpcre-*.dll libwinpthread-*.dll; \
do cp -v $(MINGWROOT)/bin/$$i dist/ ; done
cp -v dvdisaster.exe dist/
cp -vr locale/*/ dist/locale/
find dist -type f -name "*.a" -delete
static: dvdisaster
$(CC) $(LOPTS) $(OFILES) $(LIBS) -pthread -static -o dvdisaster-static

View File

@@ -1,54 +1,42 @@
# 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 disadvantages
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 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 has been left untouched in this repository.
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 is now supported, without depending on gtk (`CLI_ONLY=1 ./configure && make clean && make -j4`)
- 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).
@@ -57,7 +45,7 @@ This is also why precompiled Windows binaries and a precompiled static CLI-only
# Compiling
See the INSTALL file
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

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=2 -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,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

@@ -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>]"
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
@@ -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
@@ -222,7 +239,9 @@ 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
@@ -236,17 +255,21 @@ function run_regtest()
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
@@ -313,6 +336,8 @@ function run_regtest()
;;
*)
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

@@ -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 $nbfailed
# 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 $nbfailed
# Read complete / optimal image
if try "reading good image" adaptive_good; then

View File

@@ -2,8 +2,9 @@
cd "$(dirname "$0")"
allfailed=0
for i in rs*.bash; do
( DVDISASTER_SCSI_SIMULATED_NODELAY=1 REGTEST_NO_UTF8=1 ./$i ); ret=$?
( DVDISASTER_SCSI_SIMULATED_NODELAY=1 ./$i ); ret=$?
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 \"$flavor-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));

View File

@@ -68,7 +68,9 @@ typedef enum
MODE_TRUNCATE,
MODE_ZERO_UNREADABLE,
MODIFIER_ADAPTIVE_READ,
/* don't use the ascii range 32-127 so that we
avoid collision with the single-char options */
MODIFIER_ADAPTIVE_READ = 128,
MODIFIER_AUTO_SUFFIX,
MODIFIER_CACHE_SIZE,
MODIFIER_CLV_SPEED, /* unused */
@@ -90,6 +92,7 @@ typedef enum
MODIFIER_NO_BDR_DEFECT_MANAGEMENT,
MODIFIER_NO_PROGRESS,
MODIFIER_OLD_DS_MARKER,
MODIFIER_PERMISSIVE_MEDIUM_TYPE,
MODIFIER_PREFETCH_SECTORS,
MODIFIER_RANDOM_SEED,
MODIFIER_RAW_MODE,
@@ -195,11 +198,6 @@ int main(int argc, char *argv[])
if(sizeof(EccHeader) != 4096)
Stop("sizeof(EccHeader) is %d, but must be 4096.\n", sizeof(EccHeader));
/*** If we have too much command line options fail here */
if(MODIFIER_VERSION >= 'a')
Stop("Too many command line options\n");
/*** CPU type detection. Must be done before parsing the options
as some may be CPU-related. */
@@ -252,6 +250,7 @@ int main(int argc, char *argv[])
{"no-bdr-defect-management", 0, 0, MODIFIER_NO_BDR_DEFECT_MANAGEMENT },
{"no-progress", 0, 0, MODIFIER_NO_PROGRESS },
{"old-ds-marker", 0, 0, MODIFIER_OLD_DS_MARKER },
{"permissive-medium-type", 0, 0, MODIFIER_PERMISSIVE_MEDIUM_TYPE },
{"prefetch-sectors", 1, 0, MODIFIER_PREFETCH_SECTORS },
{"prefix", 1, 0, 'p'},
{"random-errors", 1, 0, MODE_RANDOM_ERR },
@@ -527,6 +526,10 @@ int main(int argc, char *argv[])
case MODIFIER_OLD_DS_MARKER:
Closure->dsmVersion = 0;
break;
case MODIFIER_PERMISSIVE_MEDIUM_TYPE:
Closure->permissiveMediumType = TRUE;
debug_mode_required = TRUE;
break;
case MODIFIER_PREFETCH_SECTORS:
Closure->prefetchSectors = atoi(optarg);
if( Closure->prefetchSectors < 32
@@ -985,6 +988,7 @@ int main(int argc, char *argv[])
{ PrintCLI("\n");
PrintCLI(_("Debugging options (purposefully undocumented and possibly harmful)\n"));
PrintCLI(_(" --debug - enables the following options\n"));
PrintCLI(_(" --permissive-medium-type - allow more media types, even theoretically unsupported ones\n"));
PrintCLI(_(" --byteset s,i,b - set byte i in sector s to b\n"));
PrintCLI(_(" --cdump - creates C #include file dumps instead of hexdumps\n"));
PrintCLI(_(" --compare-images a,b - compare sectors in images a and b\n"));

View File

@@ -265,6 +265,7 @@ typedef struct _GlobalClosure
int fixedSpeedValues;/* output fixed speed reading to make comparing debugging output easier */
int noBdrDefectManagement;/* if true, enable use of the BD*_NODM sizes, default: false */
int ignoreRS03header; /* if true, ignore the RS03 header when repairing, forcing a full search (debug only) */
int permissiveMediumType; /* if true, don't bail out on some UNSUPPORTED medium types (debug only) */
char *homeDir; /* path to users home dir */
char *dotFile; /* path to .dvdisaster file */
char *logFile; /* path to logfile */

View File

View File

@@ -29,7 +29,11 @@
void DefaultLogFile()
{
#ifndef SYS_MINGW
Closure->logFile = g_strdup_printf("%s/.dvdisaster.log", g_getenv("HOME"));
#else
Closure->logFile = g_strdup_printf("%s/dvdisaster.log", Closure->homeDir); /* portable mode */
#endif
}
/*

View File

View File

View File

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