OSDN Git Service
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.
relan [Wed, 12 Aug 2015 04:47:54 +0000 (07:47 +0300)]
Create symlinks on install.
Install fsck.exfat, mount.exfat and mkfs.exfat convenience aliases.
relan [Mon, 29 Jun 2015 12:32:49 +0000 (15:32 +0300)]
Drop version.h header.
Use VERSION define from config.h.
relan [Mon, 29 Jun 2015 12:25:00 +0000 (15:25 +0300)]
Include local headers before system headers.
config.h must always be included before stdio.h because it can contain
defines that enable Large File Support (e.g. _FILE_OFFSET_BITS=64 for
glibc on 32-bit machines).
relan [Tue, 4 Aug 2015 15:17:54 +0000 (18:17 +0300)]
Add .gitignore.
It hides everything produced by autoreconf -i && ./configure && make.
relan [Sun, 12 Apr 2015 20:04:13 +0000 (23:04 +0300)]
Use GNU build system (autotools).
relan [Mon, 27 Jul 2015 18:41:20 +0000 (21:41 +0300)]
Support musl libc that does not define __GLIBC__ macro.
Looks like all libc implementations that support Linux (glibc,
uClibc(-ng), musl and even Bionic) provide the requred defines.
Consider Linux as a single platform.
Signed-off-by: Brendan Heading <brendanheading@gmail.com>
relan [Sat, 11 Jul 2015 10:04:51 +0000 (13:04 +0300)]
Turn "FS is larger than device" error into warning.
After formatting a memory card in a Panasonic Lumix DMC TZ-40 camera the
FS appears to be 512 bytes larger than underlying device size. This makes
the last cluster unaccessible. Not a big deal.
relan [Sat, 11 Jul 2015 08:07:53 +0000 (11:07 +0300)]
Recognize optional entries.
Memory cards formatted by Sony cameras have mysterious 0xe1 entries.
Looks like they can be safely ignored. So now if entry type is unknown
and has 0x20 flag set there will be a warning instead of error.
relan [Sat, 13 Jun 2015 12:59:39 +0000 (15:59 +0300)]
Fix typo in the dumpexfat man page.
relan [Sun, 12 Apr 2015 19:52:08 +0000 (22:52 +0300)]
Update copyright years.
relan [Thu, 26 Mar 2015 08:28:24 +0000 (11:28 +0300)]
Update man page to reflect the change of umask option default.
The change has been made in
0f9f49d.
relan [Thu, 26 Mar 2015 08:22:27 +0000 (11:22 +0300)]
Add /usr/local/lib to LIBPATH on OS X.
Without this SCons fails to find libosxfuse_i64.
relan [Thu, 26 Mar 2015 08:16:24 +0000 (11:16 +0300)]
Move off_t size check from build script to code.
Make this check independent from a build system.
relan [Tue, 24 Mar 2015 20:46:39 +0000 (00:46 +0400)]
Add "create" FUSE operation.
It is required by FreeBSD FUSE implementation.
relan [Sat, 7 Feb 2015 08:40:06 +0000 (11:40 +0300)]
Create README.md.
relan [Wed, 14 Jan 2015 10:04:22 +0000 (10:04 +0000)]
Add DEBUG define that enables logging of FUSE events.
Signed-off-by: Helg Bredow <xx404@msn.com>
relan [Wed, 14 Jan 2015 09:53:19 +0000 (09:53 +0000)]
Pass default_permissions to FUSE.
This makes umask, dmask and fmask options work out-of-the-box.
Signed-off-by: Helg Bredow <xx404@msn.com>
relan [Mon, 10 Nov 2014 21:17:12 +0000 (21:17 +0000)]
Fix heap corruption: bitmap_size is in bits, not bytes.
relan [Tue, 8 Jul 2014 13:31:50 +0000 (13:31 +0000)]
Bump version to 1.1.0 and update changelog.
relan [Tue, 8 Jul 2014 12:54:13 +0000 (12:54 +0000)]
Update copyright years.
relan [Tue, 8 Jul 2014 12:27:54 +0000 (12:27 +0000)]
Use bool type in fetch_next_entry().
relan [Tue, 8 Jul 2014 12:17:52 +0000 (12:17 +0000)]
Use bool type in verify_vbr_checksum().
relan [Tue, 8 Jul 2014 12:05:07 +0000 (12:05 +0000)]
Rename real_size to valid_size and add comment about this field.
relan [Sun, 1 Jun 2014 20:02:48 +0000 (20:02 +0000)]
Print errno on device open/close/fsync failure.
Signed-off-by: Helg Bredow <xx404@msn.com>
relan [Sun, 1 Jun 2014 19:53:48 +0000 (19:53 +0000)]
Use apostrophe for both opening and closing quotes in messages.
This is a recommendation from GNU Coding Standards.
relan [Sun, 1 Jun 2014 19:48:03 +0000 (19:48 +0000)]
Fix opening of a regular file (broken in r403).
relan [Sun, 1 Jun 2014 19:28:12 +0000 (19:28 +0000)]
Set errno to EROFS on failure to open the device in RW mode.
relan [Fri, 23 May 2014 19:24:13 +0000 (19:24 +0000)]
Fix memory leak on realloc() failure.
In fact reallocf() would do the thing but unfortunetly it's non-standard.
relan [Wed, 7 May 2014 19:24:54 +0000 (19:24 +0000)]
Fix memory leak on error path when clusters bitmap writing fails.
relan [Wed, 7 May 2014 19:22:56 +0000 (19:22 +0000)]
Fix potential garbage at the end of clusters bitmap.
relan [Sun, 4 May 2014 16:42:07 +0000 (16:42 +0000)]
Fix negative IUsed in "df -i" output.
relan [Tue, 22 Apr 2014 17:44:25 +0000 (17:44 +0000)]
Fix nodes flush on FUSE implementations that do not call flush().
relan [Tue, 22 Apr 2014 17:41:57 +0000 (17:41 +0000)]
Add missing node flush on utimens().
Signed-off-by: Helg Bredow <xx404@msn.com>
relan [Tue, 8 Apr 2014 04:21:21 +0000 (04:21 +0000)]
Handle I/O errors in exfat_put_node().
relan [Sun, 23 Feb 2014 11:23:55 +0000 (11:23 +0000)]
Check device size on mount.
relan [Sun, 23 Feb 2014 10:41:29 +0000 (10:41 +0000)]
Validate VBR checksum before other checks.
relan [Thu, 20 Feb 2014 17:40:28 +0000 (17:40 +0000)]
Fix missing node put on error paths.
relan [Sat, 18 Jan 2014 07:36:44 +0000 (07:36 +0000)]
Fix return value from exfat_rename().
relan [Sat, 18 Jan 2014 07:35:26 +0000 (07:35 +0000)]
Fix memory use after free on error paths.
relan [Wed, 15 Jan 2014 17:08:11 +0000 (17:08 +0000)]
Fix compilation on OpenBSD.
Signed-off-by: Helg Bredow <xx404@msn.com>
relan [Mon, 13 Jan 2014 07:17:47 +0000 (07:17 +0000)]
Add OpenBSD support.
Signed-off-by: Helg Bredow <xx404@msn.com>
relan [Mon, 13 Jan 2014 07:16:35 +0000 (07:16 +0000)]
Add note about partition type to the man page.
Signed-off-by: Helg Bredow <xx404@msn.com>
relan [Mon, 11 Nov 2013 20:09:57 +0000 (20:09 +0000)]
Relax node size check. This fixes pagefile.sys error.
relan [Mon, 11 Nov 2013 17:24:21 +0000 (17:24 +0000)]
Move node checks into a separate function check_node().
relan [Sun, 10 Nov 2013 15:15:19 +0000 (15:15 +0000)]
Simplify return code checking in shrink_directory().
relan [Sat, 26 Oct 2013 18:08:10 +0000 (18:08 +0000)]
Fix bitmaps handling on big-endian machines.
relan [Mon, 21 Oct 2013 07:11:48 +0000 (07:11 +0000)]
Handle I/O error in exfat_next_cluster().
relan [Fri, 23 Aug 2013 05:56:00 +0000 (05:56 +0000)]
Fix return codes from exfat_close() and exfat_fsync().
Return -EIO on error instead of 1. Also do fsync() after ublio_fsync():
ublio_fsync() does not flush changes to the disk, just writes them.
relan [Fri, 23 Aug 2013 05:49:35 +0000 (05:49 +0000)]
Fix crash on unmount under OSXFUSE.
OSXFUSE calls fuse_exfat_fsync() for "/" which was not opened.
relan [Tue, 6 Aug 2013 20:16:20 +0000 (20:16 +0000)]
Handle I/O error in exfat_flush().
relan [Tue, 6 Aug 2013 20:08:06 +0000 (20:08 +0000)]
Handle I/O errors in exfat_flush_node().