OSDN Git Service
relan [Sat, 15 Sep 2018 05:03:24 +0000 (08:03 +0300)]
Bump version to 1.3.0 and update changelog.
relan [Thu, 23 Mar 2017 05:34:21 +0000 (08:34 +0300)]
Repairing: implement unknown entry type fix.
relan [Tue, 14 Mar 2017 05:15:57 +0000 (08:15 +0300)]
Repairing: implement invalid node checksum fix.
relan [Tue, 14 Mar 2017 05:08:33 +0000 (08:08 +0300)]
Repairing: add nodes flushing to fsck.
Nodes can now be modified during fsck run, so they should be flushed.
relan [Sat, 11 Mar 2017 06:52:30 +0000 (09:52 +0300)]
Repairing: implement invalid VBR checksum fix.
relan [Sat, 11 Mar 2017 06:48:36 +0000 (09:48 +0300)]
Repairing: pass struct exfat to verify_vbr_checksum().
Repair hooks need struct exfat.
relan [Sat, 11 Mar 2017 06:46:16 +0000 (09:46 +0300)]
Repairing: document new fsck options.
relan [Sat, 11 Mar 2017 06:43:36 +0000 (09:43 +0300)]
Repairing: add new fsck options.
relan [Sat, 11 Mar 2017 06:40:51 +0000 (09:40 +0300)]
Repairing: prepare fsck.
relan [Sat, 11 Mar 2017 06:33:46 +0000 (09:33 +0300)]
Repairing: add repair hooks file.
relan [Sat, 11 Mar 2017 06:20:01 +0000 (09:20 +0300)]
Repairing: add "repair=n" option.
Values:
0 = do not repair
1 = ask
2 = repair automatically
relan [Sat, 15 Sep 2018 04:17:37 +0000 (07:17 +0300)]
Fix last updated dates in man pages.
relan [Sat, 15 Sep 2018 04:14:01 +0000 (07:14 +0300)]
Update copyright years in man pages.
Mark Browning [Thu, 28 Jun 2018 15:30:59 +0000 (15:30 +0000)]
Pass stat to filler in readdir for dirent->d_type.
We have SD card reading code that iterates over the file system using
opendir() and readdir() recursively by checking the struct
dirent::d_type field, which is technically non-portable but works in
ext2, ext3, ext4, and vfat. However, it wasn't working with exfat.
Allows fuse to fill in the d_type field.
Pierre-Hugues Husson [Thu, 16 Aug 2018 14:56:29 +0000 (16:56 +0200)]
Android: rename binaries to mkfs.exfat and fsck.exfat.
Android Pie now supports exFAT, see
https://android.googlesource.com/platform/system/vold/+/android-9.0.0_r3/fs/Exfat.cpp#33
LongPingWEI [Thu, 28 Dec 2017 15:05:09 +0000 (23:05 +0800)]
Android: convert Android.mk to Android.bp.
Pablo Mendez Hernandez [Wed, 24 May 2017 11:23:39 +0000 (11:23 +0000)]
Android: fix logcat support building in AOSP.
Building failed this way:
log.c:51:51: error: use of undeclared identifier fmt
__android_log_vprint(ANDROID_LOG_FATAL, PACKAGE, fmt, aq);
^
log.c:79:51: error: use of undeclared identifier fmt
__android_log_vprint(ANDROID_LOG_ERROR, PACKAGE, fmt, aq);
^
log.c:105:50: error: use of undeclared identifier fmt
__android_log_vprint(ANDROID_LOG_WARN, PACKAGE, fmt, aq);
^
relan [Thu, 16 Mar 2017 08:01:54 +0000 (11:01 +0300)]
Android: print log messages to logcat.
Android does not have syslog.
liminghao [Fri, 3 Mar 2017 06:23:53 +0000 (14:23 +0800)]
Android: support building exfat-utils.
Build mkexfatfs, exfatfsck, dumpexfat and exfatlabel for Android.
Signed-off-by: liminghao <liminghao@xiaomi.com>
Tomohiro Kusumi [Sun, 1 Apr 2018 05:50:58 +0000 (14:50 +0900)]
Fix predefined macro for DragonFlyBSD.
__DragonFlyBSD__ is not defined in DragonFlyBSD. It's __DragonFly__
without "BSD".
Oleksii Samorukov [Sun, 18 Mar 2018 15:38:44 +0000 (16:38 +0100)]
Fix FreeBSD support, add UBLIO support.
relan [Sat, 31 Mar 2018 17:53:12 +0000 (20:53 +0300)]
Exclude OpenBSD from the list of supported operating systems.
OpenBSD's fuse_main() fails with "unknown option ..." when options string
is non-empty. We could live with this if it accepted at least "ro", but it
doesn't.
relan [Mon, 4 Dec 2017 06:46:58 +0000 (09:46 +0300)]
Pass "ro" option to FUSE when FS is read-only.
No matter the reason why FS is read-only (requested by user or device is
write-protected), we should inform FUSE about this.
relan [Thu, 4 May 2017 06:25:39 +0000 (09:25 +0300)]
Wrap platform-specific FUSE options.
fuse_main() fails on unrecognized options.
relan [Wed, 3 May 2017 15:10:40 +0000 (18:10 +0300)]
Split mount options into FUSE- and exFAT-specific.
fuse_main() fails on unrecognized options.
relan [Thu, 2 Apr 2015 09:11:53 +0000 (12:11 +0300)]
Use fuse_main() instead of lower level functions.
This significantly simplifies FUSE-related code.
relan [Thu, 2 Apr 2015 09:13:01 +0000 (12:13 +0300)]
Unite code that forms options for FUSE.
relan [Sat, 3 Feb 2018 07:59:38 +0000 (10:59 +0300)]
Bump version to 1.2.8 and update changelog.
relan [Sat, 3 Feb 2018 07:29:39 +0000 (10:29 +0300)]
Update copyright years.
m4rkusxxl [Fri, 19 Jan 2018 06:44:43 +0000 (09:44 +0300)]
Fix searching for free slots in the root directory.
When we need to place n entries and slot at position x is occupied, we
should check x+1 instead of jumping to x+n. Otherwise we may end up
putting new entries beyond a 0x00 entry, which Windows 10 interprets as
an end-of-directory mark and does not look farther.
relan [Sat, 16 Dec 2017 12:46:13 +0000 (15:46 +0300)]
Fix compilation on GNU/HURD.
relan [Tue, 5 Sep 2017 14:39:15 +0000 (17:39 +0300)]
Update exfatlabel man page.
Add sentence about how to remove volume name.
Edward Betts [Wed, 30 Aug 2017 10:13:31 +0000 (11:13 +0100)]
Correct spelling mistake in a comment.
relan [Mon, 5 Jun 2017 07:05:16 +0000 (10:05 +0300)]
Bump version to 1.2.7 and update changelog.
relan [Tue, 2 May 2017 17:19:57 +0000 (20:19 +0300)]
Fix clusters bitmap size.
The last two clusters were erroneously considered invalid. Note that
clusters numbering starts with 2.
relan [Sat, 1 Apr 2017 06:39:47 +0000 (09:39 +0300)]
Clean up unused parameters in libexfat.
relan [Sat, 25 Mar 2017 06:24:09 +0000 (09:24 +0300)]
Fix crash when started with stdin, stdout or stderr closed.
relan [Tue, 21 Mar 2017 06:56:25 +0000 (09:56 +0300)]
Check clusters count validity.
Other checks heavily depend on clusters count value.
relan [Mon, 20 Mar 2017 06:04:57 +0000 (09:04 +0300)]
Check that file or directory size does not exceed clusters heap.
relan [Sun, 19 Mar 2017 18:22:50 +0000 (21:22 +0300)]
Refactor error handling in exfat_mount().
Free struct exfat members in a separate function that can be called both
from exfat_unmount() and exfat_mount().
relan [Fri, 17 Mar 2017 06:41:47 +0000 (09:41 +0300)]
Remove excessive check in free_cluster().
Cluster validity has already been checked.
relan [Fri, 17 Mar 2017 05:31:43 +0000 (08:31 +0300)]
Improve upper bound check in CLUSTER_INVALID() macro.
Check that cluster value does not exceed actual number of clusters. Note
that clusters numbering starts with 2.
relan [Fri, 17 Mar 2017 05:17:45 +0000 (08:17 +0300)]
Pass struct exfat to check_node().
Future version of CLUSTER_INVALID() macro will need it.
relan [Sat, 28 Jan 2017 18:57:08 +0000 (21:57 +0300)]
Bump version to 1.2.6 and update changelog.
relan [Sat, 28 Jan 2017 18:30:31 +0000 (21:30 +0300)]
Update copyright years.
relan [Tue, 10 Jan 2017 07:02:14 +0000 (10:02 +0300)]
Add tail entries support.
Tail entries are optional continuations that can appear after the name
entries. Their type is in 0xe0-0xff range. Sony uses them to save some
metadata along with video clips files.
Those entries can be safely ignored but must be included into checksum
calculations.
relan [Thu, 29 Dec 2016 07:47:49 +0000 (10:47 +0300)]
Generic I/O for directories: switch readdir().
relan [Thu, 29 Dec 2016 07:24:04 +0000 (10:24 +0300)]
Generic I/O for directories: switch find_slot().
relan [Sat, 24 Dec 2016 08:38:31 +0000 (11:38 +0300)]
Generic I/O for directories: switch exfat_flush_node().
relan [Sat, 24 Dec 2016 07:05:09 +0000 (10:05 +0300)]
Generic I/O for directories: switch rename_entry().
relan [Fri, 23 Dec 2016 18:34:09 +0000 (21:34 +0300)]
Generic I/O for directories: switch erase_entry().
relan [Fri, 23 Dec 2016 17:59:43 +0000 (20:59 +0300)]
Generic I/O for directories: switch commit_entry().
relan [Thu, 22 Dec 2016 05:52:59 +0000 (08:52 +0300)]
Generic I/O for directories: switch find_label().
relan [Thu, 22 Dec 2016 05:50:42 +0000 (08:50 +0300)]
Generic I/O for directories: switch exfat_set_label().
relan [Sat, 24 Dec 2016 08:10:10 +0000 (11:10 +0300)]
Generic I/O for directories: do not update times.
relan [Thu, 22 Dec 2016 05:46:34 +0000 (08:46 +0300)]
Generic I/O for directories: add [read|write]_entries().
Begin conversion to exfat_generic_pread()/exfat_generic_pwrite()
functions for manipulations with directories contents. This simplifies
code a lot.
relan [Tue, 27 Dec 2016 06:18:58 +0000 (09:18 +0300)]
Rename node field flags to attrib.
Now it contains only exFAT attributes (from meta2).
relan [Tue, 27 Dec 2016 05:53:38 +0000 (08:53 +0300)]
Replace node flags with bit fields.
Bit fields are safer and more readable.
relan [Fri, 23 Dec 2016 17:34:59 +0000 (20:34 +0300)]
Rename write_entry() to commit_entry().
This function doesn't just write an entry, it also constructs a new node
and adds it into the tree.
relan [Sun, 15 Jan 2017 17:52:39 +0000 (20:52 +0300)]
Use ROUND_UP() macro instead of DIV_ROUND_UP().
relan [Tue, 27 Dec 2016 14:22:12 +0000 (17:22 +0300)]
Propagate ENOSPC on write.
Return -errno from exfat_generic_pread()/exfat_generic_pwrite()
functions to distinguish between I/O error and out-of-space error.
relan [Mon, 26 Dec 2016 06:41:57 +0000 (09:41 +0300)]
Reduce the sizes of name buffers.
EXFAT_NAME_MAX is the number of 16-bit code units, not Unicode
characters. When converting to UTF-8, 3 bytes are enough to keep any
Unicode character encoded by a 16-bit code unit.
relan [Tue, 20 Dec 2016 08:26:52 +0000 (11:26 +0300)]
Change output buffer size semantics for UTF functions.
Make them consistent with other string functions: now output buffer size
includes potential null terminator, i.e. this is total size. This change
also means that if output buffer isn't large enough it can be left
unterminated (indicated by the -ENAMETOOLONG return value).
relan [Tue, 20 Dec 2016 08:22:32 +0000 (11:22 +0300)]
Remove buffer size argument for exfat_get_name().
The output buffer is always UTF8_BYTES(EXFAT_NAME_MAX)+1 characters. No
need to repeat this every time.
relan [Fri, 16 Dec 2016 05:52:32 +0000 (08:52 +0300)]
Avoid name length calculation in exfat_calc_name_hash().
We always know it when exfat_calc_name_hash() is called, so pass file
name length as an argument.
relan [Thu, 15 Dec 2016 05:19:52 +0000 (08:19 +0300)]
Refactor file entry checksum calculation.
Move actual algorithm implementation into add_checksum_byte() function.
Avoid utf16_length() call: we already have valid file name length.
Avoid extra data copying: take it from the name buffer instead of making
a temporary file name entry.
relan [Thu, 15 Dec 2016 05:14:30 +0000 (08:14 +0300)]
Fix max file name length.
In exFAT file name limit is 255 16-bit code units, not 256. That's
because name length field size is 1 byte.
relan [Mon, 5 Dec 2016 10:53:19 +0000 (13:53 +0300)]
Bump version to 1.2.5 and update changelog.
relan [Tue, 19 Jul 2016 15:47:28 +0000 (18:47 +0300)]
Move meta2 fields checking into check_node().
There we know node name and print it if an error is detected.
relan [Tue, 19 Jul 2016 15:29:25 +0000 (18:29 +0300)]
Add node start cluster checks.
relan [Tue, 19 Jul 2016 10:34:46 +0000 (13:34 +0300)]
Run all checks in check_node().
Do not stop node validation on the first error.
relan [Sat, 12 Nov 2016 07:22:51 +0000 (10:22 +0300)]
Improve error messages in opendir().
Daniel Drake [Wed, 20 Jul 2016 18:13:56 +0000 (12:13 -0600)]
dumpexfat: print version number only when requested.
If the version number is printed only when the -V arg is given,
it's easier to use the output of this tool in external scripts.
Daniel Drake [Wed, 20 Jul 2016 18:06:17 +0000 (12:06 -0600)]
dumpexfat: add option to show file fragments.
Add an option to show a list of fragments that a given file is composed
of. This is useful for if you want to have low-level access to a file
without going through the file system layers.
relan [Mon, 5 Dec 2016 10:30:47 +0000 (13:30 +0300)]
Remove unused field of struct iterator.
relan [Sat, 12 Nov 2016 06:48:06 +0000 (09:48 +0300)]
Fix memory leak on error path when directory read fails.
relan [Mon, 4 Jul 2016 08:57:02 +0000 (11:57 +0300)]
Respect daylight saving time.
relan [Sat, 6 Aug 2016 12:24:59 +0000 (15:24 +0300)]
Use DIV_ROUND_UP macro.
relan [Fri, 3 Jun 2016 05:28:46 +0000 (08:28 +0300)]
Bump version to 1.2.4 and update changelog.
relan [Fri, 3 Jun 2016 05:20:53 +0000 (08:20 +0300)]
Update copyright years.
relan [Fri, 25 Mar 2016 10:06:25 +0000 (13:06 +0300)]
Support upcase table compression.
Upcase table can use RLE for identity-mapped characters.
relan [Tue, 29 Dec 2015 11:16:05 +0000 (14:16 +0300)]
Remove ublio support.
It was required for FreeBSD. Nowadays nobody is interested in FreeBSD
support. Also, ublio has not been updated since 2007 and looks dead.
relan [Fri, 3 Jun 2016 04:34:01 +0000 (07:34 +0300)]
Install man pages by default.
Users will probably be happier with documentation than without.
relan [Wed, 27 Jan 2016 10:15:24 +0000 (13:15 +0300)]
Add platform-specific instructions to README.md.
relan [Tue, 5 Jan 2016 14:10:54 +0000 (17:10 +0300)]
Escape commas (and backslashes) in device names.
Otherwise device names containing commas will be truncated.
relan [Sat, 19 Dec 2015 09:12:50 +0000 (12:12 +0300)]
Bump version to 1.2.3 and update changelog.
relan [Sat, 19 Dec 2015 08:16:21 +0000 (11:16 +0300)]
Fix clusters loss when file renaming replaces target.
Add missing exfat_cleanup_node() call after exfat_unlink().
relan [Mon, 9 Nov 2015 06:14:15 +0000 (09:14 +0300)]
Bump version to 1.2.2 and update changelog.
relan [Mon, 9 Nov 2015 05:55:27 +0000 (08:55 +0300)]
Add case-insensitivity note to the mount.exfat-fuse man page.
relan [Sat, 7 Nov 2015 08:36:44 +0000 (11:36 +0300)]
Add uninstall command to the README.md.
relan [Sat, 7 Nov 2015 08:10:29 +0000 (11:10 +0300)]
Flush clusters bitmap on each file close.
Put FS into a clean state when all files are closed. Flush to the
non-volatile storage is not enforced though, so there can (and most
probably will) be some dirty data in various OS- and hardware-controlled
caches.
relan [Sat, 7 Nov 2015 08:06:34 +0000 (11:06 +0300)]
Move nodes flush from exfat_flush() into a separate function.
Make exfat_flush() execution time more predictable.
relan [Wed, 7 Oct 2015 19:18:26 +0000 (22:18 +0300)]
Support platform macros for GNU/kFreeBSD and GNU/HURD.
While GNU/kFreeBSD uses glibc it's obviously not Linux, so it requires
explicit __GLIBC__ check. Strangely, but GNU/HURD does not define
__GLIBC__, so check for __GNU__.
relan [Thu, 24 Sep 2015 05:45:32 +0000 (08:45 +0300)]
Bump version to 1.2.1 and update changelog.
relan [Thu, 10 Sep 2015 14:47:16 +0000 (17:47 +0300)]
Detect infinite loop in rootdir_size().
Otherwise malformed FS can cause hang on mount.
relan [Wed, 9 Sep 2015 13:58:44 +0000 (16:58 +0300)]
Check sector and cluster size before use.
Otherwise malformed FS can cause heap corruption.
relan [Thu, 10 Sep 2015 09:24:59 +0000 (12:24 +0300)]
Do not set archive bit on directory creation.
Windows Exporer does not set archive bit for new directories either.
This fixes compatibility with Zalman VE-200 which is unable to read
images from the _ISO directory if it has archive bit set.
relan [Thu, 24 Sep 2015 05:06:06 +0000 (08:06 +0300)]
Make README.md more text-friendly.
relan [Wed, 26 Aug 2015 09:34:01 +0000 (12:34 +0300)]
Update changelog.
relan [Fri, 21 Aug 2015 19:04:10 +0000 (22:04 +0300)]
Include man pages into distribution.
They are not installed.