Add support for The Unarchiver command line utilities (unar/lsar) to operate on RARv3 files
Review Request #106294 - Created Aug. 31, 2012 and discarded
This patch is based on https://svn.reviewboard.kde.org/r/6730/ (Luke Shumaker <LukeShu@sbcglobal.net>) This patch will allow Ark to use The Unarchiver command line utilities (unar/lsar) to operate on RAR files, particularly RARv3. Now, Ark selects which plugin to use based on MIME type, and the X-KDE-Priority of the plugin. Unfortunately, there is currently no mechanism for a fallback, say one plugin doesn't work, to use another. So, for right now users wishing to use Ark with RAR files must either choose between clirarplugin (which either uses unrar-free or unrar-nonfree), and cliunarchiverplugin (which uses unar and lsar), with Ark not being able to just detect which is installed. To change the X-KDE-Priority, you just need to edit some .desktop files. In the source they are `ark/plugins/*plugin/kerfuffle_*.desktop', which on many systems get installed to `/usr/share/kde4/services/kerfuffle_*.desktop'. The plugin with the highest priority is used. The clirarplugin has a defualt priority of 120, I've given cliunarchiverplugin a priority of 150. This is probably best set by the package maintainer of an OS; for example, many systems will prefer unrar-nonfree, but I created this with Parabola in mind, on which unrar-nonfree does not exist, and this is the only way that RARv3 files will be opened. Honestly though, this setup sucks, because unrar-free and unar/lsar both have their own stengths (basically, unar/lsar suck, but unrar-free doesn't work on RARv3), and the ideal setup would be to use unrar-free in most cases, but to fall back to unar/lsar for RARv3 files that unrar-free can't handle. Actually, I guess the ideal setup would be to make unar/lsar suck less, or to add RARv3 to rar-free. === Known Bugs === The program should be able to look at which version of RAR the file is, but currently doesn't. (I mean just within lsar) This is simply because I don't know which field to look at. === ChangeLog (Luke Shumaker <LukeShu@sbcglobal.net>)=== 00 - Initial patch 01 - Enable clirar, but make cliunarchiver higher priority 02 - Reformat patch 03 - Reformat patch so that ReviewBoard recognizes it === Changelog (Andrius Štikonas <firstname.lastname@example.org>) === 04 - new versions of unar can extract password protected files and have the ability to extract single files from the archive. Make the patch compile with latest git versions of ark.
Thanks a lot for working on this. As we discussed on IRC, I'd like to have this committed once the limitations described in the implemention file are solved, and the plugin should be declared a read-only one. The JSON output produced by recent versions seems to be valid, so the current solution of parsing based on indentation could be changed (it would be good if we could test if a version that is too old is being run, but that is not a requirement for this to get in).
I've been working on a new version of this patch. The lsar output is now parsed using Qt5 json support.
The plugin is currently able to extract RAR archives. Extraction of encrypted RAR archives is not yet available though.
You can find it in the
feature/unarchiverupstream branch. Feel free to test it :)
Thanks to the authours of the original patch and please, discard this review request.