#
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.
|
#
1cb5cfb2 |
|
18-Nov-2021 |
Augustin Cavalier <waddlesplash@gmail.com> |
libroot_build: Use a union for dirent structures. Same fixe as applied to the rest of the Storage Kit a few commits ago.
|
#
03544bf0 |
|
30-Dec-2017 |
Augustin Cavalier <waddlesplash@gmail.com> |
libroot_build: Full passthrough to system attributes. As it turns out, using the xattr emulation layer plus "libgnu" causes some strange mixups at package build time, and so packages built with it were winding up with no attributes at all. So I've just bitten the bullet and written a full passthrough layer to the system attributes. Verified using a full build of haiku.hpkg this time ... after a lot of painful debugging of symlink mixups. Hopefully I am finally rid of this plague...
|
#
699b4bba |
|
29-Dec-2017 |
Augustin Cavalier <waddlesplash@gmail.com> |
libroot_build: *Actually* fix attribute usage on Haiku. To quote jscipione (from 95e8362c52af35a4012ca4d0facd62fb9856b619), "Let me tell you a story about a bug" -- though this tale spans a much lesser time than that one did. In 5e19679ea35a79a26477c6215c7abba9bb7c4d00, I enabled libroot_build for Haiku, instead of using the system libroot as we had before. There were a number of bugs introduced along with this that I hadn't fixed (and there may be more after this), but most of the obvious ones (crashes on x86_64...) were fixed shortly enough. Attribute usage, though, was a different story. Unlike most of the POSIX calls in libroot, which were aliasing system functions no matter what the platform, the attribute calls were not, as they are specific to Haiku. Initially I had completely forgot about them, and it wasn't until a few days later when I noticed that I had an "attributes" directory in my generated that I realized that the "generic" attribute layer was being used on Haiku. I attempted a fix for this in 5e19679ea35a79a26477c6215c7abba9bb7c4d00, thinking that would clear the problem up, but I didn't actually run a test beyond seeing that my BuildConfig had been updated properly. In fact, BuildSetup was hard-wired to not even pass that definition through on Haiku, and so that commit had in effect caused nothing. My initial "fix" of just changing BuildSetup then caused a build failure, as while libroot_build itself compiled, it ran into errors whenever attributes were used, because in letting the real libroot's attribute calls shine through, I had bypassed libroot_build's FD emulation/shim layer. Then I tried and failed at three separate attempts to solve this with code: - a version of the "fs_attr_...h" interface for Haiku. This proved possible in theory, but in practice I would need to reimplement a lot of attribute handling code in it, because all I had access to from there was syscalls. - a version of "fs_attr_untyped" that bypassed its reimplementations of the "fs*attr" functions for the libroot ones, only using the FD shim layer. This proved possibly not even theoretically possible because it would have caused preprocessor hell in some of the build headers, and also assumptions about how attributes are read were totally different. - a completely new "fs_attr_haiku" that was a completely new interface to the fs*attr functions. This proved practically impossible because of the need to include structures from the system libroot to call out to readdir, etc. that attempts to solve would also have caused preprocessor hell. Then I realized that the Linux xattr emulation library, which I'd used as a reference when attempting the first solution, was shipped by default as a system library in all builds of Haiku ... and so I could just tell fs_attr_untyped to use the Linux xattr handler, and then link against libgnu. So that is how I arrived at this strange and decidedly unorthodox solution to a problem of my own creation.
|
#
5d3de03b |
|
19-May-2013 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
libroot_build: Fix fs_read_attr() in fs_attr_untyped.cpp * With a specified buffer size smaller than the attribute size the function would fail with ERANGE on Linux although it should just read as much as possible. Now we always read into our temporary data buffer with the full buffer size. * Fix return value in case pos is > 0. pos must be subtracted from the bytes actually read.
|
#
2cce5a0a |
|
19-Jun-2011 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
fs_write_attr(): Allow 0-length NULL buffer
|
#
d9516a06 |
|
16-Jun-2011 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Open/close attribute support for xattrs backend For the xattr/BSD (untyped) attribute backend implement fs_fopen_attr() and fs_close_attr(). A new AttributeDescriptor is created. It is currently used in write_pos() only.
|
#
55a34b69 |
|
19-Jun-2011 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
fs_write_attr(): Allow 0-length NULL buffer
|
#
e781b1b5 |
|
16-Jun-2011 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Open/close attribute support for xattrs backend For the xattr/BSD (untyped) attribute backend implement fs_fopen_attr() and fs_close_attr(). A new AttributeDescriptor is created. It is currently used in write_pos() only.
|
#
452edf50 |
|
23-Nov-2009 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Fixed warning when building with 64 bit compiler. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34200 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
b1c06fc6 |
|
30-Aug-2009 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Patch by Vincent Duvert: Added support for BSDish xattrs. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@32841 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
b360cc7f |
|
06-Sep-2008 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Refactored the BeOS attribute emulation using xattr a bit: * Renamed fs_attr_xattr.cpp to libroot/fs_attr_untyped.cpp. * Pulled the xattr specifics into a separate fs_attr_xattr.h. * Added fs_attr_extattr.h, interfacing with FreeBSD's extattr support. Totally untested yet. Might not even compile. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27350 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
5d3de03be532ae60e82fa3d059683c2e082c7af0 |
|
19-May-2013 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
libroot_build: Fix fs_read_attr() in fs_attr_untyped.cpp * With a specified buffer size smaller than the attribute size the function would fail with ERANGE on Linux although it should just read as much as possible. Now we always read into our temporary data buffer with the full buffer size. * Fix return value in case pos is > 0. pos must be subtracted from the bytes actually read.
|
#
2cce5a0a05a49512bce9ffa82c2e88f42faa1311 |
|
19-Jun-2011 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
fs_write_attr(): Allow 0-length NULL buffer
|
#
d9516a06cccdc8a5d0d88ccb658b98080b2af5f0 |
|
16-Jun-2011 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Open/close attribute support for xattrs backend For the xattr/BSD (untyped) attribute backend implement fs_fopen_attr() and fs_close_attr(). A new AttributeDescriptor is created. It is currently used in write_pos() only.
|
#
55a34b69f3a3c438254657da49205158793e21e3 |
|
19-Jun-2011 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
fs_write_attr(): Allow 0-length NULL buffer
|
#
e781b1b5a801e6fe2f364a302e3201458b07e58f |
|
16-Jun-2011 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Open/close attribute support for xattrs backend For the xattr/BSD (untyped) attribute backend implement fs_fopen_attr() and fs_close_attr(). A new AttributeDescriptor is created. It is currently used in write_pos() only.
|
#
452edf50c33f06a9c1fde809cda1123be2ff2e86 |
|
23-Nov-2009 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Fixed warning when building with 64 bit compiler. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34200 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
b1c06fc64af1d3e520b339ab817cf3e820446dc2 |
|
30-Aug-2009 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Patch by Vincent Duvert: Added support for BSDish xattrs. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@32841 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
b360cc7f0003ab716c974ee4bca3113d08054ed5 |
|
06-Sep-2008 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Refactored the BeOS attribute emulation using xattr a bit: * Renamed fs_attr_xattr.cpp to libroot/fs_attr_untyped.cpp. * Pulled the xattr specifics into a separate fs_attr_xattr.h. * Added fs_attr_extattr.h, interfacing with FreeBSD's extattr support. Totally untested yet. Might not even compile. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27350 a95241bf-73f2-0310-859d-f6bbb57e9c96
|