diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 6af89d9..cd64e0f 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -3,8 +3,8 @@ name: C/C++ CI on: [pull_request] jobs: - build: + linux64-gui: runs-on: ubuntu-latest steps: @@ -14,8 +14,80 @@ jobs: - name: configure run: ./configure - name: make - run: 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 + + 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: + 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: + 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 diff --git a/large-io.c b/large-io.c index 01fbb02..b3aa295 100644 --- a/large-io.c +++ b/large-io.c @@ -40,8 +40,8 @@ #include -#define stat _stati64 -#define lseek _lseeki64 +#define large_stat _stati64 +#define large_lseek _lseeki64 /* The original windows ftruncate has off_size (32bit) */ @@ -62,6 +62,8 @@ int large_ftruncate(int fd, gint64 size) #else #define large_ftruncate ftruncate + #define large_stat stat + #define large_lseek lseek #endif /* SYS_MINGW */ /* @@ -90,7 +92,7 @@ int LargeStat(char *path, guint64 *length_return) if(!cp_path) return FALSE; - if(stat(cp_path, &mystat) == -1) + if(large_stat(cp_path, &mystat) == -1) { g_free(cp_path); return FALSE; } @@ -113,7 +115,7 @@ int DirStat(char *path) if(!cp_path) return FALSE; - if(stat(cp_path, &mystat) == -1) + if(large_stat(cp_path, &mystat) == -1) { g_free(cp_path); return FALSE; } @@ -148,7 +150,7 @@ LargeFile* LargeOpen(char *name, int flags, mode_t mode) /* Do not try to open directories etc. */ - if( (stat(cp_path, &mystat) == 0) + if( (large_stat(cp_path, &mystat) == 0) && !S_ISREG(mystat.st_mode)) { g_free(cp_path), g_free(lf); return NULL; } @@ -175,7 +177,7 @@ LargeFile* LargeOpen(char *name, int flags, mode_t mode) int LargeSeek(LargeFile *lf, off_t pos) { lf->offset = pos; - if(lseek(lf->fileHandle, pos, SEEK_SET) != pos) + if(large_lseek(lf->fileHandle, pos, SEEK_SET) != pos) return FALSE; return TRUE; diff --git a/memtrack.c b/memtrack.c index 451c9d4..41281b2 100644 --- a/memtrack.c +++ b/memtrack.c @@ -20,7 +20,7 @@ * along with dvdisaster. If not, see . */ -#ifndef SYS_MINGW /* completely untested under Windows, and we don't need it for releases anyway */ +#ifdef WITH_MEMDEBUG_YES #define _GNU_SOURCE