Repository navigation
catpaq
Not everybody loves the command line. For them (and for the lazy days) there is catpaq: "Catpaq - ZPAQ Archive Explorer". And yes, it is named after cats.
catpaq is a graphical front-end for zpaqfranz: open a .zpaq, browse the versions and the files, extract, test, add. It is written in Free Pascal with Lazarus (catpaq.lpr, catpaq.lpi, the ufrm*.pas/.lfm forms).
The project was once called "Spakka" (a word game on the Italian "spacca"); it was renamed catpaq in version 13, because in English slang "Spakka" is considered offensive.
- catpaq does not compress by itself: it runs zpaqfranz.exe, in the same folder as catpaq. If it is missing, catpaq says so (and can download it); a security check compares its hash before using it.
- The listing comes from
zpaqfranz pakka archive -catpaqmode(see pakka); extraction, test and hashing usex ... -catpaqmode,t ... -catpaqmode,hash ... -catpaqmode -terse. - The output of zpaqfranz is captured through a temporary file: slow, but it works with very large archives. (An older DLL-based method was removed, because it did not work well with very large archives.)
- Double click on an archive: the last version of the files is opened, in a "normal" way (for those not used to ZPAQ).
- Command line: the archive name, plus the passwords
catpaq.exe z:\1.zpaq
catpaq.exe z:\1.zpaq -key mypassword
catpaq.exe z:\1.zpaq.franzen -franzen mypassword
- Forms: main window (Versions, Log, Settings, Info), "Add to Archive" (archive name, AES and Franzen passwords, find/replace), extraction, password.
- Settings: file associations for
.zpaqand.zpaq.franzen, tree font, interface zoom, language, "Internet Update", "Browse Catpaq builds". - Languages: English (default), plus
languages_dutch.ini,languages_italiano.ini,languages_russian.ini. - Settings are saved in
catpaq.ini(window, fonts, columns, zoom, language, recent archives and paths,[Updates] CheckOnStartup,[Extract] ForceOverwrite,[History] SaveHistory...). The 32 bit build usescatpaq32.ini. - paq9a/paq9b archives can be listed and extracted too (
upaq9reader.pas,upaq9b_lazarus.pas).
- Entry point
catpaq.lpr:-keysets the AES password,-franzenthe Franzen password, the first other parameter is the archive (frmMain.LoadArchiveFromCommandLine). -
uzpaqbridge.pas: builds the zpaqfranz command lines and parses the output;@SPK@telemetry lines of-catpaqmodeare filtered. - Updates (
ucatpaq_update.pas):version.txt/version32.txtlist version, date, SHA-256 and size of catpaq and of zpaqfranz.exe; each one has a.p7mdigital signature, checked byucatpaq_p7m.pas(SHA-256 inucatpaq_sha256.pas). - Builds:
catpaq.exe(64 bit) andcatpaq32.exe(32 bit). - Links used by the program: http://www.francocorbelli.it/catpaq/ and https://github.com/fcorbelli/catpaq/wiki
Open an encrypted archive directly from a shortcut or a script
catpaq.exe z:\backup.zpaq -key mygoodpassword
What catpaq runs to get the listing (the same can be done by hand)
zpaqfranz pakka z:\backup.zpaq -catpaqmode
The folder contains also zpaqfuse (zpaqfuse.cpp, zpaqfuse_core.h, libzpaq.cpp, its own Makefile and README.md, MIT license by Daniel Lee Witzel): a standalone read-only FUSE filesystem (Linux, C++17, libfuse3) that mounts a zpaq archive with one folder per version. It has no encryption support. zpaqfranz has its own mount command.