Собрал новую версию.
Опять, блин, вылез баг с puff (deflate/zlib) - обновил с 2.2 до 2.3 (последняя - за апрель 2013), теперь всё ок.
Архив обновлён (версию не менял), лежит там же.
Приношу всем извинения.
Собрал новую версию v0.3.
Описание на английском (спасибо Grom PE за пруфрид!) и ссылку в первом сообщении обновил.
Русским языком:
- поправлена ошибка переполнения буфера (вернее отсутствие проверки на его конец) для PKWare - программа больше не падает
- для PKWare и Deflate если выходной буфер кончился раньше входного, то, как и у других алгоритмов, такой буфер передаётся дальше, а не возвращается ошибка (см. следующий пункт)
- собственно, самое главное изменение: если на запись в файл (декомпрессор отработал успешно) приходит размер равный всему блоку памяти выделенному под выходной буфер (256 Мб по умолчанию), то такой файл не сохраняется, а пишет ошибку типа:
> PKWare: Failed! Output buffer 256 Mb exhausted at: 0 (0x0)
потому как полностью заполненный выходной буфер (если, конечно, его не уменьшили до 1 Мб), как правило, свидетельствует о неверном входном потоке, если же его всё равно нужно сохранить, то рекомендуется увеличить размер выходного буфера или вовсе отключить упомянутую в сообщении бибилиотеку (если она не нужна - см. справку по командной строке программы), чтобы увеличить скорость работы (256 Мб заполняются очень не быстро)
- поправлена опечатка - долго глаза мозолила, но собирать новую версию ради неё одной не особо хотелось
Собрал новую версию v0.4.
Описание на английском (спасибо Grom PE за его пруфрид, а также справки по командной строке!) и ссылку в первом сообщении обновил.
Пришлось правда в справке по ключам командной строки кое-чего тут и там подсократить, чтобы в стандартный экран 80x25 влезало. Вообще, хотел всё это ещё в октябре прошлого года выложить, но забыл.
Русским языком:
- появилась возможность задать смещение (только в hex) откуда сканировать, что помогает пропустить лишние данные в начале файла (по умолчанию 0 - с начала файла)
- появилась возможность задать максимальное количество файлов (например, 25) после распаковки которых программа завершает работу (по умолчанию 0 - неограниченно)
- наконец, появилась та штука, которую, видимо, планировал сделать ещё сам автор оригинальной программы - если вы помните, то ключи с именами алгоритма указываются просто и с "-" на конце если алгоритм нужно отключить; при этом т.к. по умолчанию все алгоритмы включены, то простое использование любого алгоритма без "-" на конце ничего не меняло; т.е. если в сканируемом файле использовался только один, скажем, deflate, то все остальные приходилось отключать:
stuns -pkware- -lzo- -ucl2b- -ucl2d- ...
что раздувало командную строку, да и раздражало набирать; теперь же достаточно написать:
stuns -deflate ...
и все остальные алгоритмы сами отключатся; если нужно два каких-то, то пишем:
stuns -deflate -pkware ...
будут использованы только deflate и pkware, а остальные отключатся - по-моему очень удобно.
Собрал новую версию v0.5.
Русским языком:
Натолкнулся на падение STUNS из-за minilzo, причём на потоке, где был, как оказалось, только deflate. Блин, давно надо было обновить все библиотеки распаковщиков. Также, на всякий случай, обновил UCL. Там, кстати, есть новые алгоритмы сжатия, типа NRV2E и NRV2E-99, но их тогда надо отдельными ключами командной строки добавлять - сейчас нет времени и желания с этим копаться, так что лишние файлы просто выкинул для уменьшения размера дистрибутива. Главное, что не падает больше. Все библиотеки в STUNS сейчас должны быть последних версий.
Собрал новую версию v1.0.
Русским языком:
- нафиг дропнут старый код и всё переписано начисто;
- GCC 3.2 с хаками вместо MSVC 6.0 - меньше занимает;
- обновлены puff и blast из последних исходных кодов zlib;
- алгоритмы UCL/NRV (ucl2b and ucl2d) выброшены как малоиспользуемые;
- изменён текст вывода сообщений: смещение (в hex), размер (десятичный), алгоритм, информация;
- новая опция, чтобы всё распакованное сохранялось в один файл (Corak просил);
- новая опция, позволяющая ничего не сохранять - давно надо было такое сделать: сначала всё настраиваешь, а когда видишь, что будет распаковываеться только то что нужно, то уже распаковываешь.
Т.к. переписывал начисто и заново, то возможны появления ошибок в самых неожиданных местах.
Если заметили - сообщайте.
Старую версию v0.5 оставил кому нужна в первом сообщении.
Собрал новую версию v1.1.
Русским языком:
- по просьбе (в поддержку писали) возвращены назад алгоритмы UCL/NRV (ucl2b and ucl2d);
- имя файла для сохранения, когда всё пишется в один файл, задаётся через опцию -out как и префикс для каталогов (Corak просил);
- поправлена опечатка и несколько изменён вывод справки, чтобы умещалась в стандартный экран 80x25.
В общем, старую версию v0.5 теперь точно можно с чистой совестью выкинуть.
P.S. Пробелов между ключами командной строки и их параметрами быть не должно! Даже оригинальный STUNS, ещё без моих правок, так работал.
Наверное, стоило сделать более понятный вид у параметров.
http://www.vgmpf.com/Wiki/index.php?title=STUNS.
Ага, спасибо! Я им писал ещё несколько лет назад, чтобы они обновили версию до 1.0 (когда ещё 1.1 не было), но мне никто так и не ответил, хотя до этого отвечали и обновляли без проблем. И ещё видео на https://www.youtube.com/watch?v=HYd3uWBOxVw есть за 2017 год, кто-то делал.
Кстати, я там тему по работе с отладчиком обновил - добавил про DOSBox. Если тоже что-то отлаживаешь, то спрашивай - буду дополнять.
Собрал новую версию v1.2.
Русским языком:
- обновил по мелочи исходные коды распаковщиков (ничего существенного, кроме miniLZO);
- с этой версии поменялся формат командной строки!
Изменения в формате командной строки:
- имя входного файла всегда должно быть первым аргументом;
- все опции указываются без символа '-' в начале (-deflate => deflate);
- требуется добавлять '=' между именем опции и значением (-skip100 => skip=100);
- чтобы отключить сжатие добавляйте '-' перед именем сжатия (-lzo- => -lzo).
До версии v1.2 было так:
stuns -skip100 -view -pkware- -lzo- "-outMy Prefix" filename.ext
Начиная с версии v1.2 стало так:
stuns filename.ext skip=100 view -pkware -lzo out="My Prefix"
Заодно в первом сообщении заменил имя архива актуальной версии просто на "stuns.zip" (без версии в имени файла, как например, было до этого - "stuns11.zip"), чтобы прямая ссылка при обновлении программы всегда оставалась рабочей (хотя лучше давать ссылку на эту тему).