Compare commits
20 Commits
v0.79.6-pl
...
v0.79.6-pl
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
fb67ee4ab5 | ||
|
|
daec1295aa | ||
|
|
9ba1374351 | ||
|
|
d90cd7fa40 | ||
|
|
a98c795280 | ||
|
|
7a3391f49d | ||
|
|
1a9416f7b2 | ||
|
|
be2f7b67b9 | ||
|
|
dcfb23f4ee | ||
|
|
239f76c71c | ||
|
|
dc53597e8e | ||
|
|
7091b5fbbe | ||
|
|
269ea45d8d | ||
|
|
7ee35f1d0a | ||
|
|
0724a34af8 | ||
|
|
898f2fcfb6 | ||
|
|
5b82ec64bc | ||
|
|
9fed89dbcf | ||
|
|
22b2aba490 | ||
|
|
0598fad827 |
62
.github/workflows/make-dist.sh
vendored
Executable file
62
.github/workflows/make-dist.sh
vendored
Executable 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
210
.github/workflows/release.yml
vendored
Normal 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
|
||||
290
.github/workflows/tests.yml
vendored
290
.github/workflows/tests.yml
vendored
@@ -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
|
||||
|
||||
29
CHANGELOG
29
CHANGELOG
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
64
README.md
64
README.md
@@ -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
38
configure
vendored
@@ -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.
|
||||
|
||||
166
fingerprints.md5
166
fingerprints.md5
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
2296
locale/cs.po
2296
locale/cs.po
File diff suppressed because it is too large
Load Diff
2296
locale/de.po
2296
locale/de.po
File diff suppressed because it is too large
Load Diff
2296
locale/it.po
2296
locale/it.po
File diff suppressed because it is too large
Load Diff
2296
locale/pt_BR.po
2296
locale/pt_BR.po
File diff suppressed because it is too large
Load Diff
2296
locale/ru.po
2296
locale/ru.po
File diff suppressed because it is too large
Load Diff
2296
locale/sv.po
2296
locale/sv.po
File diff suppressed because it is too large
Load Diff
@@ -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)
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# Global toggles
|
||||
|
||||
FAIL_ON_BAD yes
|
||||
FAIL_ON_BAD no
|
||||
SPAWN_LOG_WINDOW no
|
||||
INTERACTIVE_DIFF yes
|
||||
|
||||
|
||||
@@ -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.
|
||||
|
||||
*
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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
@@ -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
@@ -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).
|
||||
|
||||
@@ -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
@@ -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
@@ -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
@@ -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.
|
||||
|
||||
*
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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));
|
||||
@@ -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"));
|
||||
@@ -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 */
|
||||
@@ -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
|
||||
}
|
||||
|
||||
/*
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user