systemd-path: add 'system-search-configuration'

This provides functionality to replace what was provided by the preceding
revert:

  $ build/systemd-path system-search-configuration --suffix=sysctl.d
  /etc/sysctl.d:/run/sysctl.d:/usr/local/lib/sysctl.d:/usr/lib/sysctl.d

The result is identical, but more generic, since by changing suffix we can also
get the answer for sysusers.d, tmpfiles.d, and any other of the directories
which follow the same general rule.
This commit is contained in:
Zbigniew Jędrzejewski-Szmek
2025-11-13 14:02:30 +01:00
parent 14a9fb7a8e
commit dc04a884e0
5 changed files with 11 additions and 0 deletions

View File

@@ -41,6 +41,7 @@
<constant>SD_PATH_SYSTEM_STATE_FACTORY</constant>,
<constant>SD_PATH_SYSTEM_CONFIGURATION</constant>,
<constant>SD_PATH_SYSTEM_SEARCH_CONFIGURATION</constant>,
<constant>SD_PATH_SYSTEM_RUNTIME</constant>,
<constant>SD_PATH_SYSTEM_RUNTIME_LOGS</constant>,
<constant>SD_PATH_SYSTEM_STATE_PRIVATE</constant>,

View File

@@ -524,6 +524,9 @@ static int get_search(uint64_t type, char ***ret) {
switch (type) {
case SD_PATH_SYSTEM_SEARCH_CONFIGURATION:
return strv_from_nulstr(ret, CONF_PATHS_NULSTR(""));
case SD_PATH_SEARCH_BINARIES:
return search_from_environment(ret,
NULL,

View File

@@ -22,6 +22,8 @@ static const char* const path_table[_SD_PATH_MAX] = {
[SD_PATH_TEMPORARY] = "temporary",
[SD_PATH_TEMPORARY_LARGE] = "temporary-large",
[SD_PATH_SYSTEM_SEARCH_CONFIGURATION] = "system-search-configuration",
[SD_PATH_SYSTEM_BINARIES] = "system-binaries",
[SD_PATH_SYSTEM_INCLUDE] = "system-include",
[SD_PATH_SYSTEM_LIBRARY_PRIVATE] = "system-library-private",

View File

@@ -44,6 +44,9 @@ __extension__ enum {
SD_PATH_SYSTEM_STATE_CACHE,
SD_PATH_SYSTEM_STATE_SPOOL,
/* generic system configuration */
SD_PATH_SYSTEM_SEARCH_CONFIGURATION,
/* Vendor supplied data */
SD_PATH_USER_BINARIES,
SD_PATH_USER_LIBRARY_PRIVATE,

View File

@@ -51,6 +51,8 @@ assert_eq "$(systemd-path --suffix='' system-runtime)" "/run"
assert_eq "$(systemd-path --suffix='🤔' system-runtime)" "/run/🤔"
assert_eq "$(systemd-path --suffix=hello system-runtime)" "/run/hello"
assert_eq "$(systemd-path system-search-configuration --suffix=sysctl.d)" "/etc/sysctl.d:/run/sysctl.d:/usr/local/lib/sysctl.d:/usr/lib/sysctl.d"
# Note for the stuff below: everything defaults to $HOME, only the desktop
# directory defaults to $HOME/Desktop.
#