v0.2.10 #31
DarkMatterCore
started this conversation in
General
v0.2.10
#31
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
-
Huge refactor/code cleanup.
usbHsFsGetDeviceByPath(), which fills its outputUsbHsFsDeviceelement with information about the mounted volume pointed to by the input path (e.g.ums0:/switch/).FS_MAX_PATHmacro in favor ofLIBUSBHSFS_MAX_PATH(set to 4096 bytes), providing better support for longer filesystem paths.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.UsbHsFsDosNtFileAttributesenum to easily handle FAT/NTFS attribute bitmasks._GNU_SOURCEdefinition toCFLAGSin Makefile.ff_stat()to allow its use on the origin directory.FILINFOstruct to expose the cluster number and the last access timestamp.FAT_TIMESTAMPmacro.get_fattime()to use plain oldtime()instead.get_fattime()by adding previously missing time offsets totimeinfo.tm_year(+1900) andtimeinfo.tm_mon(+1). Thanks to ITotalJustice.ffdev_fixpath()intoffdev_get_fixed_path().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.ffdev_time_posix2fat()andffdev_time_fat2posix()helpers.ffdev_chmod().mountedflag toext_vd, in order to prevent unmounting an EXT volume that hasn't really been successfully mounted.extdev_fixpath()in favor ofextdev_get_fixed_path().extdev_utimes().NTFS_MAX_NAME_LEN_BYTESmacro.ntfs_pathstruct public, remove its internal buffer and turn all strings into dynamically allocated pointers.ntfs_inode_create(),ntfs_inode_link()andntfs_inode_unlink()to take inntfs_pathobjects instead of character strings.ntfs_path_destroy().ntfs_split_path().ntfsdev_fixpath()intontfsdev_get_fixed_path().ntfs_split_path()intontfsdev_get_fixed_path().ntfsdev_dirnext()andntfsdev_dirnext_filldir()to allow listing of dotfiles in directories.ntfsdev_statvfs()to useNTFS_MAX_NAME_LEN_BYTESas the value forf_namemax.ntfsdev_chmod()andntfsdev_fchmod().ntfsdev_fill_stat()to store the NTFS-specific file attributes bitmask.UsbFsMountStatusenum.UsbFsServiceCmdenum to follow the same codestyle as the rest of the codebase.UsbHsFsDriveLogicalUnitFileSystemContextto use a singlevoid*pointer to represent the underlying filesystem object.UsbHsFsDriveContextto use a recursive mutex instead of a regular one.usbHsFsDriveInitializeContext()to return a pointer to a dynamically allocatedUsbHsFsDriveContextobject.usbHsFsDriveDestroyContext()to lock the drive recursive mutex + let it take care of freeingusbHsFsDriveDestroyContextpointers as well.usbHsFsDriveIsValidLogicalUnitFileSystemContext().usbHsFsDriveInitializeLogicalUnitContext().usbHsFsDriveClearStallStatus()to add small 10 ms delays after each call tousbHsFsRequestClearEndpointHaltFeature().usbHsFsDriveChangeInterfaceDescriptor().usbHsFsDriveDestroyLogicalUnitContext().usbHsFsLog*()calls when the library is not built in debug mode.usbHsFsManagerGetLogicalUnitContextForFatFsDriveNumber().usbHsFsManagerInitializeAtmosphereDriverResources()andusbHsFsManagerCloseAtmosphereDriverResources().usbHsFsManagerInitializeSXOSDriverResources()andusbHsFsManagerCloseSXOSDriverResources().usbHsFsManagerSetupFileSystemDriverLogging().usbHsFsCreateDriveManagerThread()tousbHsFsManagerCreateBackgroundThread().usbHsFsCloseDriveManagerThread()tousbHsFsManagerDestroyBackgroundThread().usbHsFsDriveManagerThreadFuncAtmosphere()tousbHsFsManagerAtmosphereThreadFunc().usbHsFsDriveManagerThreadFuncSXOS()tousbHsFsManagerSXOSThreadFunc().usbHsFsResetDrives()tousbHsFsManagerResetMassStorageDevices().usbHsFsUpdateDriveContexts()intousbHsFsManagerAddConnectedDriveContexts().usbHsFsAddDriveContextToList()tousbHsFsManagerInitializeAndAddDriveContextToList().usbHsFsUpdateDriveContexts()intousbHsFsManagerInitializeAndAddDriveContextToList().usbHsFsManagerRemoveDisconnectedDriveContexts().usbHsFsRemoveDriveContextFromListByIndex()tousbHsFsManagerRemoveDriveContextFromListByIndex().usbHsFsPopulateDeviceList()tousbHsFsManagerPopulateDeviceList().usbHsFsExecutePopulateCallback()tousbHsFsManagerExecutePopulateCallback().usbHsFsFillDeviceElement()tousbHsFsManagerFillDeviceElement().GuidPartitionTableHeaderstruct to bring the size down to0x5C, which actually matches the contents of itsheader_sizefield.usbHsFsMountParseMasterBootRecordPartitionEntry().usbHsFsMountGetGuidPartitionTableHeader().usbHsFsMountParseGuidPartitionTableEntry().usbHsFsMountRegisterVolume()intousbHsFsMountInitializeLogicalUnitFileSystemContext().usbHsFsMountDestroyLogicalUnitFileSystemContext().usbHsFsMountRegisterDevoptabDevice()to take in a pointer to a devoptab interface.usbHsFsMountUnregisterDevoptabDevice().usbHsFsUtilsAlignedAlloc()instead ofmemalign().ALIGN_UP,IS_ALIGNED,IS_POWER_OF_TWO,MAX_ELEMENTS,SCOPED_LOCK_BASE,SCOPED_RLOCKandUTF8_MAX_CODEPOINT_SIZEmacros.SCOPED_LOCKmacro to rely on the newSCOPED_LOCK_BASEmacro.UsbHsFsUtilsScopedRecursiveLockstruct.usbHsFsUtilsAlignedAlloc().usbHsFsUtilsLockScope()tousbHsFsUtilsAcquireScopedLock().usbHsFsUtilsUnlockScope()tousbHsFsUtilsReleaseScopedLock().usbHsFsUtilsAcquireScopedRecursiveLock().usbHsFsUtilsReleaseScopedRecursiveLock().Resources from this release:
libusbhsfs_0.2.10-main-0d137a6-src.tar.bz2: full libusbhsfs source code.libusbhsfs_0.2.10-main-0d137a6_ISC.tar.bz2: ISC licensed build of libusbhsfs. Only offers support for FAT filesystems (FAT12, FAT16, FAT32, exFAT).libusbhsfs_0.2.10-main-0d137a6_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.
This discussion was created from the release v0.2.10.
Beta Was this translation helpful? Give feedback.
All reactions