For any developer around Any chance to found someone that can update the good old UnRAR ?
Latest version we have is the old 3.9.7 and it was ported in 2010 or so, however it's probably too old as it still unable to open lots of the recent archives compressed with this format...
Here is the current OS4 source based to the 3.9.7:
Browsing around there are other versions for Amiga at http://amiga.sf.net/ The newser there Is the 3.80 and it's compiled for all 68k flavours, including MorphOS, WarpOS and AmigaOS4 ... then still there also an ancient 3.4.3 that include localization support
I think the 5.61 version is for the full WinRAR/RAR distribution (?) and the 5.6.8 version is for the free unrar.
I did some work on porting unrar 5.6.8 and it is now compiling and almost linking apart from three undefined dependencies which I still need to fix: Quote:
ppc-amigaos-g++ -O2 -g -Wall -Wno-parentheses -Wno-switch -Wno-dangling-else -Wno-unused-variable -Wno-unused-function -Wno-sign-compare -c -o qopen.o qopen.cpp ppc-amigaos-g++ -static -o unrar.debug rar.o strlist.o strfn.o pathfn.o smallfn.o global.o file.o filefn.o filcreat.o archive.o arcread.o unicode.o system.o isnt.o crypt.o crc.o rawread.o encname.o resource.o match.o timefn.o rdwrfn.o consio.o options.o errhnd.o rarvm.o secpassword.o rijndael.o getbits.o sha1.o sha256.o blake2s.o hash.o extinfo.o extract.o volume.o list.o find.o unpack.o headers.o threadpool.o rs16.o cmddata.o ui.o swprintf.o filestr.o recvol.o rs.o scantree.o qopen.o -lunix consio.o: In function `cvt_wprintf': /home/salass00/Development/Projects/Shell/unrar/consio.cpp:104: undefined reference to `vfwprintf' consio.o: In function `getwstr(wchar_t*, unsigned int)': /home/salass00/Development/Projects/Shell/unrar/consio.cpp:262: undefined reference to `fgetws' cmddata.o: In function `CommandData::GetExclAttr(wchar_t const*)': /home/salass00/Development/Projects/Shell/unrar/cmddata.cpp:1323: undefined reference to `wcstol' collect2: error: ld returned 1 exit status makefile.amigaos4:32: recipe for target 'unrar' failed make: *** [unrar] Error 1
I also haven't yet moved all the Amiga specific changes from the 3.9.8 port to this version yet.
Small update: I just got unrar 5.6.8 compiled and linked and I was able to use it to extract a RAR archive. There is still an issue however in that the output to the console is not quite working, that I will have to look into (the help text is printed fine but for instance "unrar l archive.rar" outputs a whole lot of empty space rather than the contents of the archive).
I think the 5.61 version is for the full WinRAR/RAR distribution (?) and the 5.6.8 version is for the free unrar.
Probably ...
Quote:
I did some work on porting unrar 5.6.8 and it is now compiling ...
Wow, thanks a lot ... crossing fingers then
Aniway only now I read a comment on OS4Depot when YesCop talk about big RAR archives, for what i've understand apparently there is a problem extracting big files in the current official version we have (3.9.7 on OS4Depot)
I asked here for a new port mostly because in general i was unable to extract big archives from it, i though this was caused by the relative age of our version ... but maybe it was not ?
In the same comment Yescop suggest some modification for the code, maybe you might be interested to read:
I asked here for a new port mostly because in general i was unable to extract big archives from it, i though this was caused by the relative age of our version ... but maybe it was not ?
Adding large file support to unrar looks like it should not be very hard to do as the file i/o seems to be limited to only a couple of files.
Basically to support large files with newlib some functions need to be replaced, like fopen() => fopen64(), fseek() => fseek64(), stat() => stat64(), ... and some types like struct stat => struct stat64 and off_t => _off64_t.
After looking over my vswprintf() function about a hundred times and doing a little debugging I finally found why it wasn't working correctly.
It turns out that I had mistakenly written "if ((ch == *fmt++) == '\0')" instead of "if ((ch = *fmt++) == '\0')" in a piece of code and then reused this wrong line of code in a lot of places in the function.
Large files should be supported with this version. I haven't tested it though apart from with a couple of RAR archives that I happened to have on hand and they were not particularly big.
Ok still testing with 2 multipart archives (of 900mb each) and is going ... I'm on a poor Sam440 ... give me 10 minutes and i will confirm if everything will be extracted
Ok, tested ... i need some more time because i had a freeze during the extraction, but quite probably because i was doing something else at computer ...
The extraction worked perfecty ,, maybe only bit slower compared to the previous version in the sense that my Sam seems suffered a bit when doing other operations .. for example play music in AmigaAMP sometimes stopped for a few seconds when UnRAR switched to the next archive to extract ... nothing drammatic aniway
Now, just another request, time permitted of course, are you able to make localization to work ? I'm close to finish the italian translation ;.)
Shell cannot be closed during the work, so i trìed with ctrl-c but got a crash
----------------------------------- Crash log for task "unrar" Generated by GrimReaper 53.19 Crash occured in module newlib.library.kmod at address 0x01B5588C Type of crash: DSI (Data Storage Interrupt) exception Alert number: 0x80000003
Shell cannot be closed during the work, so i trìed with ctrl-c but got a crash
Was it prompting for a password when you pressed ctrl-c?
According to the stack trace the crash was in the GetPasswordText() function. A NULL return value from getpass() function could be the cause of the DSI and would be easy to fix.
Now, just another request, time permitted of course, are you able to make localization to work ? I'm close to finish the italian translation ;.)
In theory it should be relatively simple to add locale support using standard AmigaOS catalogs.
It is however made a little more complicated by the fact that unrar expects strings in wide char format (ucs4) so I might have to look over the conversion routines to see how they are handling non-ASCII characters.
Was it prompting for a password when you pressed ctrl-c?
Yes exactly, i was trying to close the shell in that situation, altrough the password was already given and the archive was already extracted .. that's why i didn't say to you, i though there were no relation with that
Quote:
In theory it should be relatively simple to add locale support using standard AmigaOS catalogs.
I found an old 3.20 version when some work seems already done, there is a catalog descriptor file (old of course) and some related code for the translation (loclangAmiga.h and loclangAmiga.hpp files)
I use the same names for the strings as unrar so I don't have to make too many code changes.
Writing the descriptor file took quite a bit work as there are 381 strings.
Catcomp complains a bit about trailing spaces in some of the strings but fortunately it doesn't strip them out as they are needed. It is a bit odd that formatting is included in the strings to be translated.
Ok i'm already started working on it, it's just almost done as i've already done somethings with the previous catalog ... btw what is the real name of the original author ??
Alexander or Eugene ? I understand he is russian but in some place they refer to him as Alexander but in other place as Eugene !