History log of /haiku/src/system/libroot/os/find_directory.cpp
Revision Date Author Comments
# c237c4ce 08-Apr-2024 Alexander von Gluck <alex@terarocket.io>

finddir: Add SYSTEM_DESKBAR_DIRECTORY

* Resolves #18883

Change-Id: Ib971272319d55b37fa06d6874f257c8080bdab8f
Reviewed-on: https://review.haiku-os.org/c/haiku/+/7611
Reviewed-by: waddlesplash <waddlesplash@gmail.com>
Reviewed-by: nephele nephele <nep-git@packageloss.eu>
Reviewed-by: Alexander von Gluck <alex@terarocket.io>
Reviewed-by: Fredrik Holmqvist <fredrik.holmqvist@gmail.com>
Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>


# 1fb59be1 14-Apr-2018 Jérôme Duval <jerome.duval@gmail.com>

Fix some usages of BStackOrHeapArray.

Validates the buffer with IsValid() before actually using it. Thanks Rene!


# 48c1ae92 06-Apr-2018 Jérôme Duval <jerome.duval@gmail.com>

libroot: avoid excessive stack usage in __find_directory()

create_path() is inlined in __find_directory().


# bec80c1c 10-Feb-2018 Jérôme Duval <jerome.duval@gmail.com>

white space cleanup


# 1f374c8b 11-May-2015 Axel Dörfler <axeld@pinc-software.de>

libroot: hardcode find_directory() to /home/boot for root.

* This is a work-around to allow the registrar, and the launch_daemon
to call find_directory() without worries.


# dc2f4e9a 21-Jul-2014 Jessica Hamilton <jessica.l.hamilton@gmail.com>

find_directory.cpp: improve #ifdef macros with comments


# ea7e2601 20-Jul-2014 Jessica Hamilton <jessica.l.hamilton@gmail.com>

runtime_loader: only add ABI directories to system library paths

It only makes sense to add the ABI directories to library paths
created by Haiku itself. E.g. on a gcc2h build, appending x86.

This also fixes build issues where LIBRARY_PATH is amended, and
the target binaries and libraries are in different locations.

Note: the develop lib directories were excluded, as runtime_loader
shouldn't be looking at these in the first place.


# f21045a7 26-Apr-2014 Jessica Hamilton <jessica.l.hamilton@gmail.com>

Correct B_USER_BOOT_DIRECTORY path. Fixes #10070.


# 04c6cb37 17-Nov-2013 Ingo Weinhold <ingo_weinhold@gmx.de>

find_directory(): Add architecture support

* Move PathBuffer helper class out of find_paths.cpp into its own
header.
* find_directory():
- Make use of MemoryDeleter to simplify things.
- Make use of PathBuffer for a simpler and more correct handling.
- Make B_UTILITIES_DIRECTORY to B_APPS_DIRECTORY. /boot/utilities
doesn't exist anyway.
- Resolve the concerned constants to the architecture specific
subdirectory, when called in a secondary architecture context, just
like find_path*().


# 635d2ac4 05-Oct-2013 Ingo Weinhold <ingo_weinhold@gmx.de>

Add some missing B_USER_*_DIRECTORY constants


# de49e349 04-Oct-2013 Ingo Weinhold <ingo_weinhold@gmx.de>

Add symbol versioning for find_directory()

Should already have been done back when the semantics for the
B_COMMON_*DIRECTORY constants was changed.

Currently old and new version behave the same. So this is just a
contingency measure ATM.


# c471444a 04-Oct-2013 Ingo Weinhold <ingo_weinhold@gmx.de>

find_directory(): Fix build


# 38fa81bf 03-Oct-2013 Ingo Weinhold <ingo_weinhold@gmx.de>

Remove B_COMMON*_DIRECTORY and kCommon*Directory constants

* This does intentionally break source compatibility, so that a review
of concerned code is forced.
* Binary compatibility should be maintained in most cases. The values
of the constants for the writable directories are now used for the
writable system directories. The values for the non-writable
directories are mapped to "/boot/system/data/empty/...", an empty or
non-existent directory, so that they will simply be skipped in search
paths. Only code that explicitly expects to find something in a
B_COMMON_* directory, will fail.


# 45b3329d 03-Oct-2013 Ingo Weinhold <ingo_weinhold@gmx.de>

Fix incorrect uses of getpwuid_r()

The function's behavior was recently fixed to succeed, but return a NULL
pointer, when the entry was not found. Fixes a crash in this case.


# 4b7e2196 03-Oct-2013 Ingo Weinhold <ingo_weinhold@gmx.de>

Remove /boot/common for good

* Remove support for the "common" installation location from packagefs,
package kit, package daemon, package managers.
* Rename the B_COMMON_*_DIRECTORY constants referring to writable
directories to B_SYSTEM_*_DIRECTORY.
* Remove/adjust the use of various B_COMMON_*_DIRECTORY constants.
I'm sure some occurrence still remain. They can be adjusted when the
remaining B_COMMON_*_DIRECTORY constants are removed.


# f73f5d4c 29-Sep-2013 Ingo Weinhold <ingo_weinhold@gmx.de>

Initial changes to remove /boot/common

* find_directory() and hard-coded paths use /boot/system instead of
/boot/common.
* The build system creates the writable directories in /boot/system
instead of /boot/common.
* The build system no longer installs any packages in /boot/common.


# a6e03f41 04-Jun-2013 Ingo Weinhold <ingo_weinhold@gmx.de>

find_directory(): Fix B_{APPS,PREFERENCES}_DIRECTORY paths


# 0bfcf731 11-May-2013 Ingo Weinhold <ingo_weinhold@gmx.de>

Move deskbar menu directory to ~/config/settings/deskbar/menu

Also remove the "be" symlink in ~/config/settings.


# 3b5cb325 24-Apr-2013 Ingo Weinhold <ingo_weinhold@gmx.de>

find_directory(): Actually handle the new constants


# 3f85cfc1 24-Apr-2013 Ingo Weinhold <ingo_weinhold@gmx.de>

Add a few missing directory_which constants


# dbe2a683 16-Jul-2011 Ingo Weinhold <ingo_weinhold@gmx.de>

find_directory(): Fix package links path


# 323b6546 21-Nov-2011 Oliver Tappe <zooey@hirschkaefer.de>

Filtered flat import of Oliver's svn package management branch

Bring the changes that aren't package management related and the ones
that are but don't take effect as long as they are ignored by the build
system into the master.

Summary of changes:
* Introduce private header <directories.h> with constants for a good
deal of paths that should usually be retrieved via find_directory().
* Replace hard-coded paths by using find_directory() or the
<directories.h> constants (e.g. in drivers and the kernel).
* Add find_directory() constants needed for package management.
* Add __HAIKU_ABI_NAME and B_HAIKU_ABI_NAME macros.
* src/apps/deskbar: BeMenu.* -> DeskbarMenu.*,
DeskBarUtils.* -> DeskbarUtils.*
* Change deskbar menu settings directory from ~/config/be to
~/config/settings/deskbar.
* Other smaller cleanups, changes, and fixes.


# ae901935 24-Nov-2011 Oliver Tappe <zooey@hirschkaefer.de>

Introduce __set_errno() throughout libroot.

* add errno_private.h, which defines the __set_errno() macro with
and without tracing
* instead of setting errno manually, all libroot's code now invokes
__set_errno(), which makes it much easier to trace changes to errno
* redirect glibc's use of __set_errno() to our own version


# 99ee453f 16-Jul-2011 Ingo Weinhold <ingo_weinhold@gmx.de>

find_directory(): Fix package links path


# 3dfd9cb9 16-Jun-2011 Oliver Tappe <zooey@hirschkaefer.de>

Flat commit of all changes from package-management branch in svn


# 77a8a5cc 24-Jan-2011 Oliver Tappe <zooey@hirschkaefer.de>

* added B_COMMON_CACHE_DIRECTORY to find_directory()


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


# d31f4dd5 25-Jun-2010 Siarzhuk Zharski <zharik@gmx.li>

fix for "deprecated conversion from string constant to 'char*'" error.


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


# 85db3873 25-Jun-2010 Ingo Weinhold <ingo_weinhold@gmx.de>

find_directory.c, driver_settings.c: Converted to C++.


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


# 1f374c8b2a610f3a7483bd4047dfbfa928c50a04 11-May-2015 Axel Dörfler <axeld@pinc-software.de>

libroot: hardcode find_directory() to /home/boot for root.

* This is a work-around to allow the registrar, and the launch_daemon
to call find_directory() without worries.


# dc2f4e9a2fac1d427364ddef9eedb5f21136e0c3 21-Jul-2014 Jessica Hamilton <jessica.l.hamilton@gmail.com>

find_directory.cpp: improve #ifdef macros with comments


# ea7e2601d489bdbee0bbac8f57c934180c37f55c 20-Jul-2014 Jessica Hamilton <jessica.l.hamilton@gmail.com>

runtime_loader: only add ABI directories to system library paths

It only makes sense to add the ABI directories to library paths
created by Haiku itself. E.g. on a gcc2h build, appending x86.

This also fixes build issues where LIBRARY_PATH is amended, and
the target binaries and libraries are in different locations.

Note: the develop lib directories were excluded, as runtime_loader
shouldn't be looking at these in the first place.


# f21045a7723fd8ac45f24017af0947aa79815dc1 26-Apr-2014 Jessica Hamilton <jessica.l.hamilton@gmail.com>

Correct B_USER_BOOT_DIRECTORY path. Fixes #10070.


# 04c6cb37bb8e0115f90974e99d6d823857c6836e 17-Nov-2013 Ingo Weinhold <ingo_weinhold@gmx.de>

find_directory(): Add architecture support

* Move PathBuffer helper class out of find_paths.cpp into its own
header.
* find_directory():
- Make use of MemoryDeleter to simplify things.
- Make use of PathBuffer for a simpler and more correct handling.
- Make B_UTILITIES_DIRECTORY to B_APPS_DIRECTORY. /boot/utilities
doesn't exist anyway.
- Resolve the concerned constants to the architecture specific
subdirectory, when called in a secondary architecture context, just
like find_path*().


# 635d2ac485786b0a69bed604bbbb64a6e2123018 05-Oct-2013 Ingo Weinhold <ingo_weinhold@gmx.de>

Add some missing B_USER_*_DIRECTORY constants


# de49e34927ea27d282f6e85c866db5073df379af 04-Oct-2013 Ingo Weinhold <ingo_weinhold@gmx.de>

Add symbol versioning for find_directory()

Should already have been done back when the semantics for the
B_COMMON_*DIRECTORY constants was changed.

Currently old and new version behave the same. So this is just a
contingency measure ATM.


# c471444a3399218827a7f3f7fcf6bd9b1ca76456 04-Oct-2013 Ingo Weinhold <ingo_weinhold@gmx.de>

find_directory(): Fix build


# 38fa81bf8f0ccc37a615a9f5bd333f9b781322b3 03-Oct-2013 Ingo Weinhold <ingo_weinhold@gmx.de>

Remove B_COMMON*_DIRECTORY and kCommon*Directory constants

* This does intentionally break source compatibility, so that a review
of concerned code is forced.
* Binary compatibility should be maintained in most cases. The values
of the constants for the writable directories are now used for the
writable system directories. The values for the non-writable
directories are mapped to "/boot/system/data/empty/...", an empty or
non-existent directory, so that they will simply be skipped in search
paths. Only code that explicitly expects to find something in a
B_COMMON_* directory, will fail.


# 45b3329d9f364636fde8deb7000b81e60b60797e 03-Oct-2013 Ingo Weinhold <ingo_weinhold@gmx.de>

Fix incorrect uses of getpwuid_r()

The function's behavior was recently fixed to succeed, but return a NULL
pointer, when the entry was not found. Fixes a crash in this case.


# 4b7e219688450694efc9d1890f83f816758c16d3 03-Oct-2013 Ingo Weinhold <ingo_weinhold@gmx.de>

Remove /boot/common for good

* Remove support for the "common" installation location from packagefs,
package kit, package daemon, package managers.
* Rename the B_COMMON_*_DIRECTORY constants referring to writable
directories to B_SYSTEM_*_DIRECTORY.
* Remove/adjust the use of various B_COMMON_*_DIRECTORY constants.
I'm sure some occurrence still remain. They can be adjusted when the
remaining B_COMMON_*_DIRECTORY constants are removed.


# f73f5d4c42a01ece688cbb57b5d332cc0f68b2c6 29-Sep-2013 Ingo Weinhold <ingo_weinhold@gmx.de>

Initial changes to remove /boot/common

* find_directory() and hard-coded paths use /boot/system instead of
/boot/common.
* The build system creates the writable directories in /boot/system
instead of /boot/common.
* The build system no longer installs any packages in /boot/common.


# a6e03f41d2fecea709a4419eb002dca0a3af48db 04-Jun-2013 Ingo Weinhold <ingo_weinhold@gmx.de>

find_directory(): Fix B_{APPS,PREFERENCES}_DIRECTORY paths


# 0bfcf7312a3271700df884e10149fa16cf4ba1fe 11-May-2013 Ingo Weinhold <ingo_weinhold@gmx.de>

Move deskbar menu directory to ~/config/settings/deskbar/menu

Also remove the "be" symlink in ~/config/settings.


# 3b5cb3253307909f6bf5a6b29c3d2f081008ac62 24-Apr-2013 Ingo Weinhold <ingo_weinhold@gmx.de>

find_directory(): Actually handle the new constants


# 3f85cfc1322254c2be3b8ef4aa54ea39616e91ed 24-Apr-2013 Ingo Weinhold <ingo_weinhold@gmx.de>

Add a few missing directory_which constants


# dbe2a683f0b8880e202d9534eab76acc94916b2e 16-Jul-2011 Ingo Weinhold <ingo_weinhold@gmx.de>

find_directory(): Fix package links path


# 323b65468e5836bb27a5e373b14027d902349437 21-Nov-2011 Oliver Tappe <zooey@hirschkaefer.de>

Filtered flat import of Oliver's svn package management branch

Bring the changes that aren't package management related and the ones
that are but don't take effect as long as they are ignored by the build
system into the master.

Summary of changes:
* Introduce private header <directories.h> with constants for a good
deal of paths that should usually be retrieved via find_directory().
* Replace hard-coded paths by using find_directory() or the
<directories.h> constants (e.g. in drivers and the kernel).
* Add find_directory() constants needed for package management.
* Add __HAIKU_ABI_NAME and B_HAIKU_ABI_NAME macros.
* src/apps/deskbar: BeMenu.* -> DeskbarMenu.*,
DeskBarUtils.* -> DeskbarUtils.*
* Change deskbar menu settings directory from ~/config/be to
~/config/settings/deskbar.
* Other smaller cleanups, changes, and fixes.


# ae9019359606f1db67632ef51a77ce70001d3770 24-Nov-2011 Oliver Tappe <zooey@hirschkaefer.de>

Introduce __set_errno() throughout libroot.

* add errno_private.h, which defines the __set_errno() macro with
and without tracing
* instead of setting errno manually, all libroot's code now invokes
__set_errno(), which makes it much easier to trace changes to errno
* redirect glibc's use of __set_errno() to our own version


# 99ee453ff8ef9697a3755cee30dff7f0e01f37f1 16-Jul-2011 Ingo Weinhold <ingo_weinhold@gmx.de>

find_directory(): Fix package links path


# 3dfd9cb95ce45f59160d50975210bc55e3fc0709 16-Jun-2011 Oliver Tappe <zooey@hirschkaefer.de>

Flat commit of all changes from package-management branch in svn


# 77a8a5cce3bc6c5e3cedc949f06dd1d2ce37ca05 24-Jan-2011 Oliver Tappe <zooey@hirschkaefer.de>

* added B_COMMON_CACHE_DIRECTORY to find_directory()


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


# d31f4dd5eb75fd6d312cb91cdbc40c093188e0d6 25-Jun-2010 Siarzhuk Zharski <zharik@gmx.li>

fix for "deprecated conversion from string constant to 'char*'" error.


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


# 85db3873a90753e45b82e249fb1030768610c390 25-Jun-2010 Ingo Weinhold <ingo_weinhold@gmx.de>

find_directory.c, driver_settings.c: Converted to C++.


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