Releases: DarkMatterCore/libusbhsfs
v0.2.10
Huge refactor/code cleanup.
- lib:
- Add
usbHsFsGetDeviceByPath(), which fills its outputUsbHsFsDeviceelement with information about the mounted volume pointed to by the input path (e.g.ums0:/switch/). - Ditch
FS_MAX_PATHmacro in favor ofLIBUSBHSFS_MAX_PATH(set to 4096 bytes), providing better support for longer filesystem paths. - Add support for retrieving and setting FAT/NTFS specific file attribute bitmasks via
stat(),chmod(),readdir(),fstat()(NTFS only) andfchmod()(NTFS only). Please keep in mind that in order to preserve regular POSIX file attributes, thest_spare4[0]field from thestatstruct is used to store this information. - Add
UsbHsFsDosNtFileAttributesenum to easily handle FAT/NTFS attribute bitmasks. - Allow listing of dotfiles in directories whenever possible across all supported filesystems.
- Reduce the size of the dedicated transfer buffer for each UMS device from 8 MiB to 1 MiB.
- Add
_GNU_SOURCEdefinition toCFLAGSin Makefile.
- Add
- devoptab:
- Add a new header file with generic versions of the macros previously used in all devoptab interfaces.
- examples:
- Use dynamically allocated buffers for the tested filesystem paths (using the LIBUSBHSFS_MAX_PATH macro).
- Reduce file copy block size to 1 MiB to match the rest of the changes.
- Print FAT/NTFS specific file attribute bitmasks during the file tests, depending on the mounted filesystem type.
- Unconditionally print full POSIX attributes bitmask during the file tests.
- Print last access and creation timestamps during the file tests.
- fat:
- Update FatFs to R0.16 p2 (September 13th, 2025).
- Cherrypick specific FatFs improvements from the fork maintained by Extrems, while still retaining support for our runtime read-only flag. These include:
- Remove internal volume management system in favor of explicitly passing FATFS objects.
- Modify
ff_stat()to allow its use on the origin directory. - Modify
FILINFOstruct to expose the cluster number and the last access timestamp. - Prevent automatic hiding of dotfiles in directory listings.
- Integrate contiguous clusters patch from Wonderful Toolchain.
- Fix file growth error on exFAT.
- Add a small optimization to
FAT_TIMESTAMPmacro. - Update
get_fattime()to use plain oldtime()instead. - Fix timestamp generation in
get_fattime()by adding previously missing time offsets totimeinfo.tm_year(+1900) andtimeinfo.tm_mon(+1). Thanks to ITotalJustice. - Refactor
ffdev_fixpath()intoffdev_get_fixed_path(). - Update
ffdev_fill_stat()to store the last access and creation timestamps into the output stat struct, as well as the FAT-specific file attributes bitmask. - Delegate timestamp conversion to the new
ffdev_time_posix2fat()andffdev_time_fat2posix()helpers. - Implement
ffdev_chmod().
- ext:
- Add
mountedflag toext_vd, in order to prevent unmounting an EXT volume that hasn't really been successfully mounted. - Remove
extdev_fixpath()in favor ofextdev_get_fixed_path(). - Only use full second precision in
extdev_utimes().
- Add
- ntfs:
- Add
NTFS_MAX_NAME_LEN_BYTESmacro. - Make
ntfs_pathstruct public, remove its internal buffer and turn all strings into dynamically allocated pointers. - Update
ntfs_inode_create(),ntfs_inode_link()andntfs_inode_unlink()to take inntfs_pathobjects instead of character strings. - Add
ntfs_path_destroy(). - Remove
ntfs_split_path(). - Refactor
ntfsdev_fixpath()intontfsdev_get_fixed_path(). - Move path split logic from
ntfs_split_path()intontfsdev_get_fixed_path(). - Update
ntfsdev_dirnext()andntfsdev_dirnext_filldir()to allow listing of dotfiles in directories. - Update
ntfsdev_statvfs()to useNTFS_MAX_NAME_LEN_BYTESas the value forf_namemax. - Implement
ntfsdev_chmod()andntfsdev_fchmod(). - Update
ntfsdev_fill_stat()to store the NTFS-specific file attributes bitmask.
- Add
- usbfs:
- Add
UsbFsMountStatusenum. - Update
UsbFsServiceCmdenum to follow the same codestyle as the rest of the codebase.
- Add
- Other internal changes:
- Use C23 strongly typed enums.
- Use forward declarations for structs whenever needed.
- usbhsfs_drive:
- Move struct definitions into their own header file.
- Update
UsbHsFsDriveLogicalUnitFileSystemContextto use a singlevoid*pointer to represent the underlying filesystem object. - Update
UsbHsFsDriveContextto use a recursive mutex instead of a regular one. - Update
usbHsFsDriveInitializeContext()to return a pointer to a dynamically allocatedUsbHsFsDriveContextobject. - Update
usbHsFsDriveDestroyContext()to lock the drive recursive mutex + let it take care of freeingusbHsFsDriveDestroyContextpointers as well. - Heavily simplify
usbHsFsDriveIsValidLogicalUnitFileSystemContext(). - Move LUN initialization logic into
usbHsFsDriveInitializeLogicalUnitContext(). - Update
usbHsFsDriveClearStallStatus()to add small 10 ms delays after each call tousbHsFsRequestClearEndpointHaltFeature(). - Fix required conditions for an interface change in
usbHsFsDriveChangeInterfaceDescriptor(). - Add
usbHsFsDriveDestroyLogicalUnitContext().
- usbhsfs_log:
- Define stubbed macros for public
usbHsFsLog*()calls when the library is not built in debug mode.
- Define stubbed macros for public
- usbhsfs_manager:
- Remove
usbHsFsManagerGetLogicalUnitContextForFatFsDriveNumber(). - Move Atmosphère-specific (de)initialization logic into
usbHsFsManagerInitializeAtmosphereDriverResources()andusbHsFsManagerCloseAtmosphereDriverResources(). - Move SX OS-specific (de)initialization logic into
usbHsFsManagerInitializeSXOSDriverResources()andusbHsFsManagerCloseSXOSDriverResources(). - Move NTFS/EXT debug logging configuration logic into
usbHsFsManagerSetupFileSystemDriverLogging(). - Rename
usbHsFsCreateDriveManagerThread()tousbHsFsManagerCreateBackgroundThread(). - Rename
usbHsFsCloseDriveManagerThread()tousbHsFsManagerDestroyBackgroundThread(). - Rename
usbHsFsDriveManagerThreadFuncAtmosphere()tousbHsFsManagerAtmosphereThreadFunc(). - Rename
usbHsFsDriveManagerThreadFuncSXOS()tousbHsFsManagerSXOSThreadFunc(). - Rename
usbHsFsResetDrives()tousbHsFsManagerResetMassStorageDevices(). - Refactor
usbHsFsUpdateDriveContexts()intousbHsFsManagerAddConnectedDriveContexts(). - Rename
usbHsFsAddDriveContextToList()tousbHsFsManagerInitializeAndAddDriveContextToList(). - Move drive initialization logic from
usbHsFsUpdateDriveContexts()intousbHsFsManagerInitializeAndAddDriveContextToList(). - Add
usbHsFsManagerRemoveDisconnectedDriveContexts(). - Rename
usbHsFsRemoveDriveContextFromListByIndex()tousbHsFsManagerRemoveDriveContextFromListByIndex(). - Rename
usbHsFsPopulateDeviceList()tousbHsFsManagerPopulateDeviceList(). - Rename
usbHsFsExecutePopulateCallback()tousbHsFsManagerExecutePopulateCallback(). - Rename
usbHsFsFillDeviceElement()tousbHsFsManagerFillDeviceElement().
- Remove
- usbhsfs_mount:
- Define new macros for all the constants used throughout the compilation unit.
- Remove padding from the
GuidPartitionTableHeaderstruct to bring the size down to0x5C, which actually matches the contents of itsheader_sizefield. - Move MBR partition entry parsing logic into
usbHsFsMountParseMasterBootRecordPartitionEntry(). - Move GPT header parsing logic into
usbHsFsMountGetGuidPartitionTableHeader(). - Move GPT entry parsing logic into
usbHsFsMountParseGuidPartitionTableEntry(). - Refactor
usbHsFsMountRegisterVolume()intousbHsFsMountInitializeLogicalUnitFileSystemContext(). - Move LUN FS deinitialization logic into
usbHsFsMountDestroyLogicalUnitFileSystemContext(). - Update
usbHsFsMountRegisterDevoptabDevice()to take in a pointer to a devoptab interface. - Move devoptab device unregistration logic into
usbHsFsMountUnregisterDevoptabDevice().
- usbhsfs_request:
- Use
usbHsFsUtilsAlignedAlloc()instead ofmemalign().
- Use
- usbhsfs_scsi:
- Update to reflect the changes in the rest of the codebase.
- usbhsfs_utils:
- Add
ALIGN_UP,IS_ALIGNED,IS_POWER_OF_TWO,MAX_ELEMENTS,SCOPED_LOCK_BASE,SCOPED_RLOCKandUTF8_MAX_CODEPOINT_SIZEmacros. - Update
SCOPED_LOCKmacro to rely on the newSCOPED_LOCK_BASEmacro. - Add
UsbHsFsUtilsScopedRecursiveLockstruct. - Add
usbHsFsUtilsAlignedAlloc(). - Rename
usbHsFsUtilsLockScope()tousbHsFsUtilsAcquireScopedLock(). - Rename
usbHsFsUtilsUnlockScope()tousbHsFsUtilsReleaseScopedLock(). - Add
usbHsFsUtilsAcquireScopedRecursiveLock(). - Add
usbHsFsUtilsReleaseScopedRecursiveLock().
- Add
Resources from this release:
libusbhsfs_0.2.10-main-3b897ed-src.tar.bz2: full libusbhsfs source code.libusbhsfs_0.2.10-main-3b897ed_ISC.tar.bz2: ISC licensed build of libusbhsfs. Only offers support for FAT filesystems (FAT12, FAT16, FAT32, exFAT).libusbhsfs_0.2.10-main-3b897ed_GPLv2+.tar.bz2: GPLv2+ licensed build of libusbhsfs. Offers support for FAT filesystems (FAT12, FAT16, FAT32, exFAT), NTFS and EXT filesystems (EXT2, EXT3, EXT4). Applications using this build must also be linked against...
v0.2.9
- lib:
- Implement a callback-based population system, which can be used as an alternative to the event-based system that has been available up until now. For more information, please read the
How to usesection from the README. - Add a reimplementation of libnx's
usbHsEpPostBuffer(), calledusbHsFsRequestEndpointDataXfer(), which callsusbHsEpPostBufferAsync()with a hardcoded timeout value of 10 seconds (using theUSB_POSTBUFFER_TIMEOUTdefine). - Port log handler QoL improvements from nxdumptool.
- Log result codes in unpadded hexadecimal notation.
- Reorganize
UsbHsFsMountFlagsenum. - SCSI INQUIRY strings now have prevalence over USB device descriptor strings, which affects the
manufacturer,product_nameandserial_numberstrings fromUsbHsFsDeviceelements. - Add
LIB_ASSERTmacro and update all static assertions throughout the codebase to use it. - Use
NX_IGNORE_ARGmacro where needed throughout the codebase. - SCSI driver:
- Reorganize structs and enums.
- Add missing comments/references.
- Add
ScsiInquiryVitalProductDataPageCodeenum and reworkusbHsFsScsiSendInquiryCommand()to make it possible to request Vital Product Data pages from attached LUNs. - Update
ScsiInquiryStandardDatastruct to also retrieve serial number data from attached LUNs. - Add
ScsiInquiryUnitSerialNumberPageHeaderstruct. - Update
usbHsFsScsiStartDriveLogicalUnit()to make it read serial number information from the Unit Serial Number VPD page. Fallbacks to the serial number returned by the standard SCSI Inquiry command if not available. - Overhaul
usbHsFsScsiTransferCommand()to make it handle both unexpected CSWs and CSW data residue values in a better way.
- Implement a callback-based population system, which can be used as an alternative to the event-based system that has been available up until now. For more information, please read the
- fs-libs: remove all build scripts for both NTFS-3G and lwext4, as well as the
fs-libsMakefile target. Please use the now available devkitPro pacman packagesswitch-ntfs-3gandswitch-lwext4. TheHow to installsection of the README has been updated to reflect this change. - fat: calls to
ftruncate()on FAT filesystems now restore the current file position after truncation.
P.S.: remember to remove previous installations of NTFS-3G and lwext4 *before* installing the official devkitPro pacman packages by running:
sudo (dkp-)pacman -R switch-libntfs-3g switch-lwext4
Resources from this release:
libusbhsfs_0.2.9-main-b1ff881-src.tar.bz2: full libusbhsfs source code.libusbhsfs_0.2.9-main-b1ff881_ISC.tar.bz2: ISC licensed build of libusbhsfs. Only offers support for FAT filesystems (FAT12, FAT16, FAT32, exFAT).libusbhsfs_0.2.9-main-b1ff881_GPLv2+.tar.bz2: GPLv2+ licensed build of libusbhsfs. Offers support for FAT filesystems (FAT12, FAT16, FAT32, exFAT), NTFS and EXT filesystems (EXT2, EXT3, EXT4). Applications using this build must also be linked against NTFS-3G and lwext4 - please check the README for further information.
Both ISC and GPLv2+ archives also hold the example test application NRO linked against that version of the library with debugging enabled.
v0.2.8
- lib: add
usbHsFsGetPhysicalDeviceCount(), which returns the number of physical UMS devices currently connected to the console with at least one underlying filesystem mounted as a virtual device. - fs-libs:
- Update FatFs to
R0.15 w/patch2.- Furthermore, FatFs is now modified to check a runtime read-only flag for any mounted filesystems, making it possible to use the
UsbHsFsMountFlags_ReadOnlymount flag on FAT volumes for write-free access.
- Furthermore, FatFs is now modified to check a runtime read-only flag for any mounted filesystems, making it possible to use the
- Update NTFS-3G to
2022.10.3. - Update lwext4 to
58bcf89a121b72d4fb66334f1693d3b30e4cb9c5with cherrypicked patches. - Improve Makefile scripts for both NTFS-3G and lwext4 by checking if
makepkgand(dkp-)pacmanbinaries are actually available, as well as automatically removingpkg-configif its available and installingdkp-toolchain-varsas part of the required dependencies.
- Update FatFs to
A note to all developers using the GPL-licensed version of the library: update the NTFS-3G and lwext4 portlibs by running make fs-libs in your libusbhsfs clone before building your project.
Resources from this release:
libusbhsfs_0.2.8-main-014c925-src.tar.bz2: full libusbhsfs source code.libusbhsfs_0.2.8-main-014c925_ISC.tar.bz2: ISC licensed build of libusbhsfs. Only offers support for FAT filesystems (FAT12, FAT16, FAT32, exFAT).libusbhsfs_0.2.8-main-014c925_GPLv2+.tar.bz2: GPLv2+ licensed build of libusbhsfs. Offers support for FAT filesystems (FAT12, FAT16, FAT32, exFAT), NTFS and EXT filesystems (EXT2, EXT3, EXT4). Applications using this build must also be linked against NTFS-3G and lwext4 - please check the README for further information.
Both ISC and GPLv2+ archives also hold the example test application NRO linked against that version of the library with debugging enabled.
v0.2.7
- log: use UTC timestamp generated at build time instead of
__DATE__and__TIME__macros. - fs-libs: add missing Windows-specific dependencies to the Makefiles.
- fat: update FatFs to latest patch from
2022-04-04. - ntfs:
- Update NTFS-3G to
2022.5.17. - Create LRU caches while mounting new NTFS volumes.
- Use
ntfs_volume_get_free_space()while mounting new NTFS volumes to speed up subsequent calls tostatvfs()made by the user. - Let NTFS-3G take care of filtering system files and hidden files using
ntfs_set_shown_files(), instead of filtering them in the library'sdirnext()implementation. - Use
NVolFreeSpaceKnown()in the library'sstatvfs()implementation to check if the number of free NTFS clusters has already been retrieved.
- Update NTFS-3G to
- ext: apply cherrypicked bugfixes to lwext4 (cyyynthia/lwext4@bf68d17, RussellWang9/lwext4@06b64aa and mudita/lwext4@2869807).
Resources from this release:
libusbhsfs_0.2.7-main-4d109af-src.tar.bz2: full libusbhsfs source code.libusbhsfs_0.2.7-main-4d109af_ISC.tar.bz2: ISC licensed build of libusbhsfs. Only offers support for FAT filesystems (FAT12, FAT16, FAT32, exFAT).libusbhsfs_0.2.7-main-4d109af_GPLv2.tar.bz2: GPLv2+ licensed build of libusbhsfs. Offers support for FAT filesystems (FAT12, FAT16, FAT32, exFAT), NTFS and EXT filesystems (EXT2, EXT3, EXT4). Applications using this build must also be linked against NTFS-3G and lwext4 - please check the README for further information.
Both ISC and GPLv2+ archives also hold the example test application NRO linked against that version of the library.
v0.2.6
- Updated codebase to use
localtime_r()instead oflocaltime()to avoid possible race conditions with other threads. - Fixed
fs-libsbuilding under Linux distros with pacman. Thanks to ITotalJustice for reporting this issue! - Implemented support for UMS devices that don't byteswap the Command Status Wrapper signature before sending back SCSI command responses.Thanks to rdmrocha for reporting this issue!
Resources from this release:
libusbhsfs_0.2.6-main-de50aeb-src.tar.bz2: full libusbhsfs source code.libusbhsfs_0.2.6-main-de50aeb_ISC.tar.bz2: ISC licensed build of libusbhsfs. Only offers support for FAT filesystems (FAT12, FAT16, FAT32, exFAT).libusbhsfs_0.2.6-main-de50aeb_GPLv2.tar.bz2: GPLv2+ licensed build of libusbhsfs. Offers support for FAT filesystems (FAT12, FAT16, FAT32, exFAT), NTFS and EXT filesystems (EXT2, EXT3, EXT4). Applications using this build must also be linked against NTFS-3G and lwext4 - please check the README for further information.
Both ISC and GPLv2+ archives also hold the example test application NRO linked against that version of the library.
v0.2.5
- Updated lwext4 patch to fix mountpoint corruption issues if a mountpoint name is reused after a previous call to
ext4_mountfailed.- This fixes a data abort discovered by phisch. Thanks for the report!
- The fix is based on HenriChataing's pull request in lwext4's repository, but also adds an additional
memsetcall toext4_umountto fully clear every unmounted mountpoint. - A note to all developers using the GPL-licensed version of the library: update the
switch-lwext4package by runningmake fs-libsin your libusbhsfs clone before building your project.
Resources from this release:
libusbhsfs_0.2.5-main-782aa51-src.tar.bz2: full libusbhsfs source code.libusbhsfs_0.2.5-main-782aa51_ISC.tar.bz2: ISC licensed build of libusbhsfs. Only offers support for FAT filesystems (FAT12, FAT16, FAT32, exFAT).libusbhsfs_0.2.5-main-782aa51_GPLv2.tar.bz2: GPLv2+ licensed build of libusbhsfs. Offers support for FAT filesystems (FAT12, FAT16, FAT32, exFAT), NTFS and EXT filesystems (EXT2, EXT3, EXT4). Applications using this build must also be linked against NTFS-3G and lwext4 - please check the README for further information.
Both ISC and GPLv2+ archives also hold the example test application NRO linked against that version of the library.
v0.2.4
- Updated FatFs to R0.14b.
- The backup GPT header from a drive is now retrieved and used if the main GPT header is corrupted, as long as it's available.
- Slightly improved debug logging code.
- Rewrote mutex handling throughout the code to use a small, macro-based scoped lock implementation whenever possible.
- Removed superfluous memory operations by using dynamic pointer arrays to manage logical unit / filesystem contexts.
- Added missing
splInitialize/splExitcalls while checking if a service is running.- Furthermore, the Exosphère API version, which is used to determine if TIPC serialization is needed instead of CMIF, is now saved during the first service check.
Resources from this release:
libusbhsfs_0.2.4-main-ead3651-src.tar.bz2: full libusbhsfs source code.libusbhsfs_0.2.4-main-ead3651_ISC.tar.bz2: ISC licensed build of libusbhsfs. Only offers support for FAT filesystems (FAT12, FAT16, FAT32, exFAT).libusbhsfs_0.2.4-main-ead3651_GPLv2.tar.bz2: GPLv2+ licensed build of libusbhsfs. Offers support for FAT filesystems (FAT12, FAT16, FAT32, exFAT), NTFS and EXT filesystems (EXT2, EXT3, EXT4). Applications using this build must also be linked against NTFS-3G and lwext4 - please check the README for further information.
Both ISC and GPLv2+ archives also hold the example test application NRO linked against that version of the library.
v0.2.3
- Improvements to the USB manager:
- Refactored USB control request functions to work with libnx USB datatypes instead of drive / logical unit contexts.
- Implemented
GET_DESCRIPTORcontrol requests for configuration and string descriptors.
- Improvements to the BOT driver:
- If
usbHsEpPostBuffer()fails, only the endpoint the library is currently working with will be cleared. Furthermore, the result from this operation no longer affects the return code. - If
usbHsFsRequestPostBuffer()fails, the library now tries to retrieve a CSW right away - if it succeeds, a Request Sense command will be issued immediately to the block device. - Mode Sense (6) / Mode Sense (10) command success is no longer mandatory in
usbHsFsScsiStartDriveLogicalUnit(). - SPC standard version is now validated.
- If
- Improvements to the PKGBUILD scripts for NTFS-3G and lwext4:
- Made it possible to build and install all three libraries using the Makefile - for more information, please refer to the How to install section from the README.
- Proper library path is now forced while building NTFS-3G. Fixes issues in some Linux systems. Thanks to sigmaboy for the correction.
- Other minor improvements.
- Library API changes:
- Added
vidandpidfields toUsbHsFsDevice. Useful if the application needs to implement a device filter on its own. vendor_id,product_idandproduct_revisionfields inUsbHsFsDevicehave been replaced withmanufacturer,product_nameandserial_numberfields, which represent UTF-8 conversions of string descriptors referenced by the USB device descriptor.- Strings from SCP INQUIRY data are still used as a fallback method for
manufacturerandproduct_namefields if the USB device descriptor holds no references to string descriptors.
- Strings from SCP INQUIRY data are still used as a fallback method for
- Added
- Miscellaneous changes:
- Renamed
ff_rename()from FatFs to avoid issues fix conflicts in applications linked against FFmpeg. Thanks to Cpasjuste for letting us know. - The
has_journalflag from the superblock in EXT filesystems is now verified before calling journal-related functions. - EXT filesystem version is now retrieved only once, while mounting the volume.
- The
AtmosphereHasServicesm API extension available in Atmosphère and Atmosphère-based CFWs is now being used to check if a specific service is running.- HOS 12.0.x / AMS 0.19.x support is provided by using TIPC serialization to dispatch the IPC request, if needed.
- Improved logfile code and simplified binary data logging throughout the codebase.
- Renamed
- Changes under the hood (currently unused, but may change in the future):
- Implemented SYNCHRONIZE CACHE (10) and SYNCHRONIZE CACHE (16) SCP commands.
- Modified drive and logical unit contexts to prepare for UASP support.
- Added extra code to handle USB Attached SCSI Protocol (UASP) interface descriptors under both USB 2.0 and 3.0 modes.
Resources from this release:
libusbhsfs_0.2.3-main-c5d8e12-src.tar.bz2: full libusbhsfs source code.libusbhsfs_0.2.3-main-c5d8e12_ISC.tar.bz2: ISC licensed build of libusbhsfs. Only offers support for FAT filesystems (FAT12, FAT16, FAT32, exFAT).libusbhsfs_0.2.3-main-c5d8e12_GPLv2.tar.bz2: GPLv2+ licensed build of libusbhsfs. Offers support for FAT filesystems (FAT12, FAT16, FAT32, exFAT), NTFS and EXT filesystems (EXT2, EXT3, EXT4). Applications using this build must also be linked against NTFS-3G and lwext4 - please check the README for further information.
Both ISC and GPLv2+ archives also hold the example test application NRO linked against that version of the library.
v0.2.2
- By popular demand, the NTFS journal is now rebuilt by default for NTFS volumes that have not been properly unmounted, which lets the library mount them right away without having to use a Windows PC. Please bear in mind this process may cause inconsistencies - always try to safely remove your storage devices.
- Nonetheless, this should be a relatively safe operation - default behaviour in NTFS-3G changed some years ago.
- This change also affects EXT volume mounting. The EXT journal will now always try be recovered - if the process fails, the EXT volume won't be mounted.
Resources from this release:
libusbhsfs_0.2.2-main-e600835-src.tar.bz2: full libusbhsfs source code.libusbhsfs_0.2.2-main-e600835_ISC.tar.bz2: ISC licensed build of libusbhsfs. Only offers support for FAT filesystems (FAT12, FAT16, FAT32, exFAT).libusbhsfs_0.2.2-main-e600835_GPLv2.tar.bz2: GPLv2+ licensed build of libusbhsfs. Offers support for FAT filesystems (FAT12, FAT16, FAT32, exFAT), NTFS and EXT filesystems (EXT2, EXT3, EXT4). Applications using this build must also be linked against NTFS-3G and lwext4 - please check the README for further information.
Both ISC and GPLv2+ archives also hold the example test application NRO linked against that version of the library.
v0.2.1 - Bugfix release
- Bugfix: mount name IDs are now properly freed while destroying filesystem contexts.
- Library API: added a helper preprocessor macro to generate strings based on the supported filesystem type values.
- Makefile: branch name is now retrieved using
rev-parseinstead ofsymbolic-ref. Fixesref HEAD is not a symbolic referrors while building the library when the repository is used as a git submodule.
Resources from this release:
libusbhsfs_0.2.1-main-fd75dbc-src.tar.bz2: full libusbhsfs source code.libusbhsfs_0.2.1-main-fd75dbc_ISC.tar.bz2: ISC licensed build of libusbhsfs. Only offers support for FAT filesystems (FAT12, FAT16, FAT32, exFAT).libusbhsfs_0.2.1-main-fd75dbc_GPLv2.tar.bz2: GPLv2+ licensed build of libusbhsfs. Offers support for FAT filesystems (FAT12, FAT16, FAT32, exFAT), NTFS and EXT filesystems (EXT2, EXT3, EXT4). Applications using this build must also be linked against NTFS-3G and lwext4 - please check the README for further information.
Both ISC and GPLv2+ archives also hold the example test application NRO linked against that version of the library.