https://gitlab.synchro.net/main/sbbs/-/commit/e2d3cd89bba7f5556c6245e2
Modified Files:
src/sbbs3/filedat.c
Log Message:
Fixup extract_diz() - fallback to external archivers
The fallback to external extractors/archivers didn't really work unless a libarchive function (called from extract_files_from_archive) actually failed and the return value was < 0. A return value of 0 would mean the external
file extractor would never be used.
This was discovered when trying to import DIZ from old ZIP files (from 1992) that used "Implode" compression method for the FILE_ID.DIZ, which is a compression method *not* supported by libarchive. This is a reason why sysops might want to leave Info-zip's 'unzip' as a configured Extractable File Type handler (in SCFG) for 'zip' files.
Don't call the external archiver 3 times for the 3 DIZ filenames supported. Just call the external archiver once, and pass all 3 filesnames. This also means that the call to system() can return non-zero (e.g. Info-zip 'unzip'
will return 2 if any of the files aren't present in the archive, even if
one is) - so ignore this return value from system(). This speeds up bulk
import (e.g. using addfiles.js).
Unfortunately, I couldn't really find a nice cross-platform way to suppress
the unzip "caution: filename not matched" message sent to stderr. That's
a bummer and a little annoying.
Ignore 0-length DIZ files.
---
þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net