rar2fs Changelog

What's new in rar2fs 1.29.6

Jan 9, 2023
  • Fixed:
  • Make sure reader thread is terminated properly (#165)
  • Handle potential race condition at directory scan (#171)
  • Fix crash in collect files (#167)
  • Fix directory cache invalidation (#162)
  • New/Changed:
  • Change to a per session mutex in I/O buffer

New in rar2fs 1.27.2 (Mar 16, 2019)

  • Fix uninialized memory in calls to RAROpenArchiveEx()
  • Add some missing includes in the DLL wrapper
  • Fix -Wcatch-value from GCC 8
  • Replace AC_CHECK_FILE with 'test -f'
  • Remove an unused/dangling file

New in rar2fs 1.27.0 (Jul 16, 2018)

  • Fix parsing of password entry in config file
  • dirname() do not modify passed string on some platforms (#93)
  • Fix build issue with C++14
  • Add option to set file date according to main archive file
  • Fix scandir(3) argument detection
  • Due to a problem identified with encrypted archives it is highly recommended to uplift to unrar source v5.6.2. Using any version after v5.4.0 and before v5.6.2 can cause rar2fs to hang if wrong password is specified.

New in rar2fs 1.26.0 (Jul 16, 2018)

  • Fix some compilation problems on OSX Sierra
  • Fix an issue with file mounts and root folder lookup
  • Fix check for dokan-fuse library
  • Workaround for misbehaving pread(2) on Cygwin
  • Fix Incorrect high-precision timestamp

New in rar2fs 1.25.2 (Aug 31, 2017)

  • Fix wrong volume count logic.

New in rar2fs 1.21.0 (Sep 7, 2015)

  • Completely remove use of pthread_exit()
  • Built and tested against UnRAR source 5.30 beta 1 (5.3.1). This should resolve issue [rar2fs #40].
  • Fixed a crash when using the --exclude option.
  • [rar2fs #37]. Fixed a potential memory leak when compiling against libunrar versions prior to 4.2.0.
  • Fixed a potential memory leak in the collect_files() function. This function is only used when mounting single RAR archives which means it is rather harmless.
  • Simplified code in function dir_entry_add_hash().
  • Changed implementation of utimens
  • [rar2fs #35]. Fixed a problem with RAR5 stats that were incorrectly inherited for file reference links.

New in rar2fs 1.19.8 (Feb 21, 2014)

  • Disabled automatic switch to direct I/O mode.
  • Tweaked some of the more fine grained "hacks" to improve support for compressed archives.
  • Now supports 'flag_nullpath_ok' and 'flag_nopath' (FUSE >= 2.9) in fuse ops.
  • The race condition in the I/O buffer has been identified and the lock utilization has been redesigned accordingly to minimize lock contention.
  • Added check for __sync_synchronize()
  • Changed use of the FUSE 'keep_cache' flag
  • Removed the attempt to optimize the lock contention level in the I/O buffer. Seems to have opened up for additional race conditions. When CPU is really needed lock contention should be close to none anyway.

New in rar2fs 1.19.5 (Feb 5, 2014)

  • Fixed a problem with seek length not being handled properly when mounting a single archive split into volumes.
  • Added some mutex locks to take care of the race conditions that were discovered in the I/O buffer.
  • Added support for the 'Save identical file as references' feature in RAR5 archives.

New in rar2fs 1.19.1 (Jan 15, 2014)

  • Corrected an issue with "RAR inside RAR" in combination with libunrar5 and lack of support for fmemopen() (common for e.g. many uClibc based systems).

New in rar2fs 1.19.0 (Jan 10, 2014)

  • Corrected some issues in configure.ac since it failed to properly configure the package for static linkage.
  • Added a missing close of the handle obtained when mounting an archive instead of a directory. Besides the fact that it should not be left open, it seems to have also affected the behavior of libunrar for RAR5 archives in such a way that the extraction process stopped working completely.
  • Now using PRIu64 (C99) when printing 64-bit values
  • Fixed an error that caused failures to recognize the option '--iob-size'.
  • Redesigned handling of encrypted archives completely.
  • Now using UnRAR library callback API to set password.
  • A password can now be provided in wide-character format.
  • Password files may now be prefixed with a '.' to hide it from simple list operations in traditional UNIX style.
  • rar2fs(1) man page updated accordingly.
  • Trying to access a file that is encrypted and for which no valid password is provided will give EPERM.
  • Removed option '--no-passwd' since there is no longer a small performance penalty involved by having this support enabled for non-encrypted archives.
  • This option was removed from the rar2fs(1) man page since long time back.
  • Now taking better use of the provided methods in UnRAR library API when listing archives.
  • Minor improvements in the handling of old style (.rNN) volumes.
  • Corrected a problem with password protected archives that resulted in a crash when files were encrypted but file names were not.

New in rar2fs 1.17.2 (Jul 4, 2013)

  • Updated SVN revision check in configure.ac to work; also for later versions of svn for which; .svn/entries does not provide sufficient information.
  • Fixed a problem in configure.ac that would result in newer versions of g++ to fail some link tests. This would in turn cause incorrect switches to be passed to the compiler resulting in failure to display RAR archive/folder contents in combination with UnRAR source v5.x.x.
  • Fixed a potential bug when determining file types. Only affects RAR5 archives created on UNIX type systems.

New in rar2fs 1.16.0 (Feb 26, 2013)

  • Added option '--flat-only' that replaces the now obsoleted option '--seek-depth=n' rar2fs(1) man page updated accordingly.
  • Fixed a problem with some options not being possible to change if initially assigned a default value.
  • Changed to use a fixed file count for '--preopen-img' in combination with old style volume naming convention.
  • Added option '--no-expand-cbr' that can be used to disable support for comic book archives. rar2fs(1) man page updated accordingly.
  • Removed option '--no-idx-mmap'. rar2fs(1) man page updated accordingly.
  • Added support for comic book archives (.cbr)
  • Fixed a problem with folders inside RAR volumes not always showing up properly.
  • Added a few missing error checks after calls made to malloc()
  • Fixed a concurrency problem that theoretically could result in a crash if a file cache entry is invalidated while being accessed by e.g. read operations.
  • Fixed an issue for "rar inside rar" with folders when located in the root of the mount point.
  • Removed hard link count update. It did not work as expected in some cases.
  • Hard link count now properly updated for directories inside RAR files.
  • Fixed a bug in the cache invalidation logic that could result in memory leaks.
  • Improved cache lookup to make better use of the full 32-bit hash in order to avoid unnecessary calls to strcmp() when searching a hash collision chain.
  • Replaced 'configdb' with a more appropriate implementation
  • New file(s): optdb.h, optdb.c Deleted file(s): configdb.h, configdb.c
  • Removed workaround for zombie processes since waitpid() should now be called properly
  • Aligned DLL extension with later implementations of libunrar.
  • Removed the limititation that main archive must not be a volume when encapsulating other RAR files for proper display/extraction.
  • Replaced a call to strncmp() with an inline short byte sequence check.
  • Got rid of some more unnecessary calls to strlen() and strcmp()
  • Added proper implementation of utimes()
  • Fixed a very rare error case to prevent a lock-up
  • Removed a few more calls to strcmp()
  • Improved support for folders located in leaf RAR files contained in a master archive. This will also solve the problem reported in issue #11.
  • Fixed a crash (SEGV) when invalidating the entire file cache.
  • Went back to use the classic zombie prevention method by using SA_NOCLDWAIT when setting up the signal handler for SIGCHLD.
  • File type detection in scandir() improved to reduce the already low probability of ambigious entries even further. Still there is not a 100% guarantee, but very close.
  • Optimizations in the folder processing by removing some extranous calls to strlen()/strdup() etc.
  • Fixed an issue when the root folder entry was located in the end of the archive header. Forced stats were applied when in fact it should have been taken from the archive itself.
  • Now also umask is applied when forced directory entries are added to the cache.
  • When mounting archives the file cache is now populated in advance. Before this change it was possible to get a false "No such file or directory" error if the mounted folder was not listed first (using eg. ls).
  • When mounting an archive a missing release of some resources has been added when the file system is terminated. This was not a true memory leak but tools like valgrind could complain.
  • Now returns -EPERM instead of -EACCES in case of write operations targeting the contents of an archive.
  • Fixed a problem with function fmemopen() not being detected properly on systems supporting it. The change will not take effect until 'autoreconf' is executed before a 'configure' and/or 'make'.
  • Fixed a fuse4x detection problem in the compatible build system.
  • Added support for OSX fuse in the compatible build system.
  • When default permission is applied to a file or directory also the current effective umask of the process will be considered. If the umask can not be determined 0022 will be used. The default permission is applied only if the archive file header does not provide a Unix-style file mode.
  • Added blunt support for unicode filenames
  • Fixed some compilation warnings in the compatibility build mode
  • Fixed some compilation warnings on OS X Lion with Xcode 4 and command line tools.
  • Added support for OSX fuse
  • Added hook to install mount.rar2fs
  • Built against unrar source v4.2.4

New in rar2fs 1.15.1 (Jul 10, 2012)

  • Patch release resolving a compatibility/build issue with UnRAR source version 4.2.1