All notable changes to this project will be documented in this file.
This project adheres to Semantic Versioning.
This release fixes extraction of entries with unicode filenames inside RAR archives
Issues: #44
-
(extract) unicode files on Linux (5e6b83d, #44)
Unicode files being extracted to directories still caused issues on Linux.
For example, if a file❤️.txt
was part of a RAR archive, extracting it to
CWD or by providing a parent dir would fail. This commit adds extensive tests
and fixes all those issues definitively.
- (sys) function-based cfg for better readability (1d9e413)
This release fixes a reported Windows build error for different locales
Issues: #56
-
(dll) remove invalid unicode in code comment (7db15f7, #56)
msvc compliler (under some windows system) complains about "undefined identifier Flags" due to invalid chars,
for example, compile may fail under Windows 11 system which has locale for non-unicode app configured as Japanese or Korean or Chinese
- (dll) add patch for unicode removal (be073b4)
- (release) link to issues and commits in changelog (e9c3101)
Re-release because 0.5.4 had a dependency mistake
- correctly update unrar_sys version (a97112a)
This release fixes the long standing unicode filename bug on Linux, as well as as the recent tempdir bug on macOS.
-
unicode filenames on Linux (f3fb23d, #44)
This bug caused CJK chars in filename to be stripped out on Linux. For example,
/media/mydisk/fooにほん.rar
would result in/media/mydisk/foo
so the open will faildue to
if (r->ArcNameW!=nullptr && *r->ArcNameW!=0) ArcName=r->ArcNameW; else CharToWide(AnsiArcName,ArcName); Data->Arc.Open(ArcName,FMF_OPENSHARED)
in
Data->Arc.Open
, ArcName is converted withWideToChar
causing the CJK bytes to get lost. So we pass it as AnsiArcName, soCharToWide
is called first, causing to conversion to work.
-
(dll) upgrade unrar source code version to 7.0.9 (8992d51)
-
(dll) fix build by avoiding call to __builtin_cpu_supports (c3b414e)
This fixes the ___cpu_model undefined error on macOS 12 and macOS 13
confirmed macOS 14 does not have this issue -
(dll) update patches (801318a)
-
(release) fancy release notes (53ba119)
-
remove macos-11 due to it does not supported by github anymore, add macOS 13 and macOS 14 support (3c37105)
-
add workflow_dispatch event (254025c)
- add RAR 5.0 archive format doc (1df450f)
Minor release that adds opening archives in test mode
- add test mode (c0c1243)
- (unrar_sys) add Apache2 license to Cargo.toml (e002f23)
- (vendor) htm -> md (for viewing in browser) (c30e6d0)
- (docs) fix markdown (3e1fa1a)
Minor bug fix release that fixes builds on Windows targets adds minor performance improvements
-
(archive) dont strip parents in path methods (5ebac5e)
-
(unrar_sys) remove indirect dependency to MSVC comsupp library for windows-gnu target (f2adc58)
-
(unrar_sys) use winapi crate for all windows targets (fe6838a)
chore(unrar_sys): link against static libstdc++ on windows-gnu targets
chore(unrar_sys): fall back to C++14 (minimal version supported by MSVC)
- (archive) use as_str instead of to_string_lossy where sensible (7c61362)
- (license) add Apache2 license #1 (fe9d57f)
- (unrar_sys) upgrade DLL version to 6.24.0 (5d196bf)
- (unrar_sys) add upgrade instructions and script (327b1c1)
- use PathBuf to not fail on windows (5169021)
- (archive) add docs examples for Archive::break_open (015ffb1)
- (unrar_sys) add vendor documentation (c087b73)
This release fixes a critical UB bug
- (open_archive) fix NULL deref, pass valid pointer (db0d379)
- add test step for unrar_sys library (986de02)
- (unrar_sys) format lister example (da5f1a4)
- (unrar_sys) fix windows build for lister example (9164631)
This is a milestone release that, among others, allows one to extract files directly into memory -- something people have been asking forever how to do.
I've also completely rewritten major parts of the library and am very proud of the way things are looking right now. Utilizing the typestate pattern, the library enforces correct usage at compile time, only exposing methods when they make sense (depending on a combination of open mode and current cursor position).
Before this release, the library was hard to use and it was not possible to skip some files in the archive while, for instance, extracting others. One operation had to be chosen for all files. That has changed now. However, the drawback is that iterating archives is now a bit harder since the Iterator trait is not implemented for archives that are opened in Process mode (since it's hard to enforce an operation at call-site).
Another major focus of this release was documentation: all API items are documented now except for very few exceptions. The crate docs also features a very extensible introduction as well.
- (unrar_sys) fix broken code in example and test (ddbf0fe)
- avoid endlessly returning errors in Iterator (46dd054)
- implement typestate pattern, completely rewrite major parts (b3ef161)
- upgrade dependencies (4539125)
- Archive::as_first_part returns self (0c25662)
- (dll) upgrade DLL version to 6.2.8 (598e273)
- update author e-mail (3e40b8d)
- update authors (edeb4bc)
- add Github Actions workflow (b8f2139)
- edition=2021, remove superfluous extern crates (901a28a)
- edition=2021, remove superfluous extern crates (dcbad8e)
- return Result<Option,E> instead of Option<Result<T,E>> (6bca25c)
- further improve crate-level docs (c5bb2bf)
- (read_named) rename example and print content (9b13543)