History log of /haiku/src/build/libbe/storage/MergedDirectory.cpp
Revision Date Author Comments
# 62cdbd25 01-Dec-2021 Augustin Cavalier <waddlesplash@gmail.com>

libbe_build: Add header needed on some systems.


# 711e2dc0 01-Dec-2021 Augustin Cavalier <waddlesplash@gmail.com>

Adjust all struct dirent creations (again), this time to use offsetof().

The dirent struct is not packed, so offsetof(dirent, d_name) != sizeof(dirent).
Thus in order not to waste the alignment bytes (which are significant,
on x86_64 at least, sizeof(dirent)==32, but offsetof(...)=26.)

This is also the most portable way to handle things, and should
work just fine in cross-platform code that has a non-zero-sized d_name.


# 2532a287 23-Nov-2021 Augustin Cavalier <waddlesplash@gmail.com>

Avoid using unions for LongDirEntry.

GCC still assumes that the dirent has no data past the end for some
scenarios here and still mis-optimizes things. Therefore, drop the
usages of unions altogether, and instead use a casted character array.

Additionally, use B_FILE_NAME_LENGTH for the array, not B_PATH_NAME_LENGTH,
and make sure to add 1 for the NULL terminator.


# 8f03af00 18-Nov-2021 Augustin Cavalier <waddlesplash@gmail.com>

Storage: Rework LongDirEntry to be a union.

Our dirent structure is "slim": it has a flexible-length array at the
end which must be allocated to whatever size the consumer wants. However,
we use [1] there and not [0] or [], which meant GCC thought it was not
a flexible-length array, and so it optimized various string accesses
that it assumed must be always false. Among these was BDirectory's
check for "." and "..", and so that resulted in infinite loops.

When changing our dirent structure to a proper FLA instead of [1],
GCC then throws errors on LongDirEntry as it has data "after" the
FLA; which is what we want, but there is no way to tell GCC that.
So now we use a union instead, which is the proper way to statically
allocate a FLA.

This is part of #17389, but the real fix requires changing our dirent
structure, which is coming in a separate commit.


# d0815ca0 07-May-2013 Ingo Weinhold <ingo_weinhold@gmx.de>

Add private MIME DB classes to libbe_build

* This pulls in some more stuff, like libicon and agg which are also
included in libbe_build, now.
* Update a few libbe_build classes and headers needed to get things
building.
* This likely breaks the <build>mimeset build on Haiku.


# d0815ca03b474657ea161f5d3783b458c899a947 07-May-2013 Ingo Weinhold <ingo_weinhold@gmx.de>

Add private MIME DB classes to libbe_build

* This pulls in some more stuff, like libicon and agg which are also
included in libbe_build, now.
* Update a few libbe_build classes and headers needed to get things
building.
* This likely breaks the <build>mimeset build on Haiku.