History log of /haiku/src/add-ons/kernel/file_systems/exfat/exfat.h
Revision Date Author Comments
# 1d3959ed 26-Feb-2019 Jérôme Duval <jerome.duval@gmail.com>

exfat: checks cluster values.

also use the size of the node for Size(), instead of the valid size.


# 984ec35f 25-Feb-2019 Jérôme Duval <jerome.duval@gmail.com>

exfat: fix block count for bigger disks.


# 14263044 22-Feb-2019 Jérôme Duval <jerome.duval@gmail.com>

exfat: avoid overflow in Volume::ClusterToBlock().


# ebd3bcdb 12-Feb-2014 John Scipione <jscipione@gmail.com>

exfat: handle 4-byte UTF-16 surrogate pairs

... in filenames. Replace the existing Unicode conversion functions
with UTF conversion functions from js that he relicensed MIT for us.

Put the UTF conversion functions in a private but shared code location
so that they can be accessed throughout the kernel.

Right now we only provide functions to convert between UTF-8 and UTF-16.
At some point we should also add functions to convert between UTF-8 and
UTF-32 and UTF-16 and UTF-32 but these aren't needed by exfat.

Remove the old Unicode conversion functions from exfat as they assumed
UCS-2 characters and don't work with UTF-16 used by exfat.

Rename most variables with the term length with code unit where code units
are intended. The term length, when used, means length in bytes while code
units represent either a full 2-byte UTF-16 character or half a 4-byte
surrogate pair.


# 5b10d763 11-Feb-2014 John Scipione <jscipione@gmail.com>

exfat: use diff structs 4 vol labels and filenames

... and rename the structs to reflect this.

* Volume labels contain up to 11 uint16s (11 2-byte UTF-16 characters).
* Filenames are packed into 1 to 17 structs of 15 uint16s each (for a total
of 255 2-byte UTF-16 characters).
* Use 2 different packed structs in the exfat_entry union (same bytes, accessed
with different structs) to access these 2 things.
* Remove a check that assumed the length returned the number of 2-byte UTF-16
characters, i.e. the number of uint16s the string uses. It doesn't, it
returns the number of characters contained in the string which might be 2 or
4-bytes wide. We're doing the conversion wrong for 4-byte UTF-16 characters
anyway, more on that later.


# 762b846c 04-Feb-2014 John Scipione <jscipione@gmail.com>

exfat: Set the mountpoint to same as volume name

Fixes #10501

* update copyright headers, attribute to Haiku, Inc. add authors
* volume_name gets filled out by a utility function in Utility.cpp
* update exfat_entry
- rename name_label to just label
- adjust volume_label to have 11 uint16 chars plus 8 uint8 reserved
- add guid partition info
* Added a couple new entry type defines
* fName is 34 bytes long which fits the 11 3-byte UTF-8 chars and a \0


# aeb03a8f 04-Feb-2014 John Scipione <jscipione@gmail.com>

exfat: style fixes only


# e74e90ae 09-Feb-2011 Jérôme Duval <korli@users.berlios.de>

* Implemented a read-only exFAT file system, tested with a 4GB image.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40409 a95241bf-73f2-0310-859d-f6bbb57e9c96


# ebd3bcdb9be2d6a57fc5b3270dcb49a9e1894d11 12-Feb-2014 John Scipione <jscipione@gmail.com>

exfat: handle 4-byte UTF-16 surrogate pairs

... in filenames. Replace the existing Unicode conversion functions
with UTF conversion functions from js that he relicensed MIT for us.

Put the UTF conversion functions in a private but shared code location
so that they can be accessed throughout the kernel.

Right now we only provide functions to convert between UTF-8 and UTF-16.
At some point we should also add functions to convert between UTF-8 and
UTF-32 and UTF-16 and UTF-32 but these aren't needed by exfat.

Remove the old Unicode conversion functions from exfat as they assumed
UCS-2 characters and don't work with UTF-16 used by exfat.

Rename most variables with the term length with code unit where code units
are intended. The term length, when used, means length in bytes while code
units represent either a full 2-byte UTF-16 character or half a 4-byte
surrogate pair.


# 5b10d763d0da84a6f0cb07c610eb25df776273b2 11-Feb-2014 John Scipione <jscipione@gmail.com>

exfat: use diff structs 4 vol labels and filenames

... and rename the structs to reflect this.

* Volume labels contain up to 11 uint16s (11 2-byte UTF-16 characters).
* Filenames are packed into 1 to 17 structs of 15 uint16s each (for a total
of 255 2-byte UTF-16 characters).
* Use 2 different packed structs in the exfat_entry union (same bytes, accessed
with different structs) to access these 2 things.
* Remove a check that assumed the length returned the number of 2-byte UTF-16
characters, i.e. the number of uint16s the string uses. It doesn't, it
returns the number of characters contained in the string which might be 2 or
4-bytes wide. We're doing the conversion wrong for 4-byte UTF-16 characters
anyway, more on that later.


# 762b846cf8ba678f31a854a85e68003d2071be8d 04-Feb-2014 John Scipione <jscipione@gmail.com>

exfat: Set the mountpoint to same as volume name

Fixes #10501

* update copyright headers, attribute to Haiku, Inc. add authors
* volume_name gets filled out by a utility function in Utility.cpp
* update exfat_entry
- rename name_label to just label
- adjust volume_label to have 11 uint16 chars plus 8 uint8 reserved
- add guid partition info
* Added a couple new entry type defines
* fName is 34 bytes long which fits the 11 3-byte UTF-8 chars and a \0


# aeb03a8f68bad446e3f1178fa9ea8cb3c9e460ab 04-Feb-2014 John Scipione <jscipione@gmail.com>

exfat: style fixes only


# e74e90aef91f844d4d3654504cd0776c26a454e5 09-Feb-2011 Jérôme Duval <korli@users.berlios.de>

* Implemented a read-only exFAT file system, tested with a 4GB image.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40409 a95241bf-73f2-0310-859d-f6bbb57e9c96