History log of /haiku/src/add-ons/kernel/file_systems/exfat/DirectoryIterator.cpp
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.


# 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


# 3f5d1e78 06-May-2013 Jérôme Duval <jerome.duval@gmail.com>

exfat: fixes 64 bit warnings


# ee668d24 04-May-2013 Jerome Duval <jerome.duval@gmail.com>

exfat: Return more than a single dirent at a time in exfat_read_dir().

* similar to what mmlr did in hrev45575 for bfs.
* DirectoryIterator could try to read past the end of the directory.
* replaced a dprintf with a TRACE() statement.


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

* takes into account volume label
* clean up
* directories don't seem to have a valid contiguous flag, fixes directories with many files.


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


# 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


# 3f5d1e78252bb593cf5b430f37c3d18d779afab1 06-May-2013 Jérôme Duval <jerome.duval@gmail.com>

exfat: fixes 64 bit warnings


# ee668d24e34a6da029d2f188118c023929f97391 04-May-2013 Jerome Duval <jerome.duval@gmail.com>

exfat: Return more than a single dirent at a time in exfat_read_dir().

* similar to what mmlr did in hrev45575 for bfs.
* DirectoryIterator could try to read past the end of the directory.
* replaced a dprintf with a TRACE() statement.


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

* takes into account volume label
* clean up
* directories don't seem to have a valid contiguous flag, fixes directories with many files.


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


# 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