<constant>SD_PATH_SEARCH_CONFIGURATION_FACTORY</constant>,
<constant>SD_PATH_SEARCH_STATE_FACTORY</constant>,
<constant>SD_PATH_SEARCH_CONFIGURATION</constant>,
+
+ <constant>SD_PATH_SYSTEMD_UTIL_DIR</constant>,
+ <constant>SD_PATH_SYSTEMD_SYSTEM_UNIT_DIR</constant>,
+ <constant>SD_PATH_SYSTEMD_SYSTEM_PRESET_DIR</constant>,
+ <constant>SD_PATH_SYSTEMD_USER_UNIT_DIR</constant>,
+ <constant>SD_PATH_SYSTEMD_USER_PRESET_DIR</constant>,
+ <constant>SD_PATH_SYSTEMD_SYSTEM_CONF_DIR</constant>,
+ <constant>SD_PATH_SYSTEMD_USER_CONF_DIR</constant>,
+ <constant>SD_PATH_SYSTEMD_SYSTEM_UNIT_PATH</constant>,
+ <constant>SD_PATH_SYSTEMD_USER_UNIT_PATH</constant>,
+ <constant>SD_PATH_SYSTEMD_SYSTEM_GENERATOR_DIR</constant>,
+ <constant>SD_PATH_SYSTEMD_USER_GENERATOR_DIR</constant>,
+ <constant>SD_PATH_SYSTEMD_SYSTEM_GENERATOR_PATH</constant>,
+ <constant>SD_PATH_SYSTEMD_USER_GENERATOR_PATH</constant>,
+ <constant>SD_PATH_SYSTEMD_SLEEP_DIR</constant>,
+ <constant>SD_PATH_SYSTEMD_SHUTDOWN_DIR</constant>,
+
+ <constant>SD_PATH_TMPFILES_DIR</constant>,
+ <constant>SD_PATH_SYSUSERS_DIR</constant>,
+ <constant>SD_PATH_SYSCTL_DIR</constant>,
+ <constant>SD_PATH_BINFMT_DIR</constant>,
+ <constant>SD_PATH_MODULES_LOAD_DIR</constant>,
+ <constant>SD_PATH_CATALOG_DIR</constant>,
};</funcsynopsisinfo>
<funcprototype>
#include "fd-util.h"
#include "fileio.h"
#include "fs-util.h"
+#include "path-lookup.h"
#include "path-util.h"
#include "string-util.h"
#include "strv.h"
case SD_PATH_USER_DESKTOP:
return from_user_dir("XDG_DESKTOP_DIR", buffer, ret);
+
+ case SD_PATH_SYSTEMD_UTIL_DIR:
+ *ret = ROOTPREFIX "lib/systemd";
+ return 0;
+
+ case SD_PATH_SYSTEMD_SYSTEM_UNIT_DIR:
+ *ret = SYSTEM_DATA_UNIT_PATH;
+ return 0;
+
+ case SD_PATH_SYSTEMD_SYSTEM_PRESET_DIR:
+ *ret = ROOTPREFIX "lib/systemd/system-preset";
+ return 0;
+
+ case SD_PATH_SYSTEMD_USER_UNIT_DIR:
+ *ret = USER_DATA_UNIT_PATH;
+ return 0;
+
+ case SD_PATH_SYSTEMD_USER_PRESET_DIR:
+ *ret = ROOTPREFIX "lib/systemd/user-preset";
+ return 0;
+
+ case SD_PATH_SYSTEMD_SYSTEM_CONF_DIR:
+ *ret = SYSTEM_CONFIG_UNIT_PATH; // FIXME: _DIR vs. _PATH
+ return 0;
+
+ case SD_PATH_SYSTEMD_USER_CONF_DIR:
+ *ret = USER_CONFIG_UNIT_PATH; // FIXME: _DIR vs. _PATH
+ return 0;
+
+ case SD_PATH_SYSTEMD_SYSTEM_GENERATOR_DIR:
+ *ret = SYSTEM_GENERATOR_PATH; // FIXME: _DIR vs. _PATH
+ return 0;
+
+ case SD_PATH_SYSTEMD_USER_GENERATOR_DIR:
+ *ret = USER_GENERATOR_PATH; // FIXME: _DIR vs. _PATH
+ return 0;
+
+ case SD_PATH_SYSTEMD_SLEEP_DIR:
+ *ret = ROOTPREFIX "lib/systemd/system-sleep";
+ return 0;
+
+ case SD_PATH_SYSTEMD_SHUTDOWN_DIR:
+ *ret = ROOTPREFIX "lib/systemd/system-shutdown";
+ return 0;
+
+ /* FIXME: systemd.pc uses ${prefix}, but CONF_PATHS_NULSTR doesn't.
+ * Should ${prefix} use in systemd.pc be removed? */
+ case SD_PATH_TMPFILES_DIR:
+ *ret = "/usr/lib/tmpfiles.d";
+ return 0;
+
+ case SD_PATH_SYSUSERS_DIR:
+ *ret = "/usr/lib/sysusers.d";
+ return 0;
+
+ case SD_PATH_SYSCTL_DIR:
+ *ret = "/usr/lib/sysctl.d";
+ return 0;
+
+ case SD_PATH_BINFMT_DIR:
+ *ret = "/usr/lib/binfmt.d";
+ return 0;
+
+ case SD_PATH_MODULES_LOAD_DIR:
+ *ret = "/usr/lib/modules-load.d";
+ return 0;
+
+ case SD_PATH_CATALOG_DIR:
+ *ret = "/usr/lib/systemd/catalog";
+ return 0;
}
return -EOPNOTSUPP;
#endif
static int get_search(uint64_t type, char ***list) {
+ int r;
assert(list);
case SD_PATH_SEARCH_BINARIES_DEFAULT:
return strv_from_nulstr(list, DEFAULT_PATH_NULSTR);
+ case SD_PATH_SYSTEMD_SYSTEM_UNIT_PATH:
+ case SD_PATH_SYSTEMD_USER_UNIT_PATH: {
+ _cleanup_(lookup_paths_free) LookupPaths lp = {};
+ const UnitFileScope scope = type == SD_PATH_SYSTEMD_SYSTEM_UNIT_PATH ?
+ UNIT_FILE_SYSTEM : UNIT_FILE_USER;
+
+ r = lookup_paths_init(&lp, scope, 0, NULL);
+ if (r < 0)
+ return r;
+ *list = TAKE_PTR(lp.search_path);
+ return 0;
}
+ case SD_PATH_SYSTEMD_SYSTEM_GENERATOR_PATH:
+ case SD_PATH_SYSTEMD_USER_GENERATOR_PATH: {
+ char **t;
+ const UnitFileScope scope = type == SD_PATH_SYSTEMD_SYSTEM_UNIT_PATH ?
+ UNIT_FILE_SYSTEM : UNIT_FILE_USER;
+
+ t = generator_binary_paths(scope);
+ if (!t)
+ return -ENOMEM;
+
+ *list = t;
+ return 0;
+ }}
+
return -EOPNOTSUPP;
}
[SD_PATH_SEARCH_CONFIGURATION_FACTORY] = "search-configuration-factory",
[SD_PATH_SEARCH_STATE_FACTORY] = "search-state-factory",
[SD_PATH_SEARCH_CONFIGURATION] = "search-configuration",
+
+ [SD_PATH_SYSTEMD_UTIL_DIR] = "systemd-util-dir",
+ [SD_PATH_SYSTEMD_SYSTEM_UNIT_DIR] = "systemd-system-unit-dir",
+ [SD_PATH_SYSTEMD_SYSTEM_PRESET_DIR] = "systemd-system-preset-dir",
+ [SD_PATH_SYSTEMD_USER_UNIT_DIR] = "systemd-user-unit-dir",
+ [SD_PATH_SYSTEMD_USER_PRESET_DIR] = "systemd-user-preset-dir",
+ [SD_PATH_SYSTEMD_SYSTEM_CONF_DIR] = "systemd-system-conf-dir",
+ [SD_PATH_SYSTEMD_USER_CONF_DIR] = "systemd-user-conf-dir",
+ [SD_PATH_SYSTEMD_SYSTEM_UNIT_PATH] = "systemd-system-unit-path",
+ [SD_PATH_SYSTEMD_USER_UNIT_PATH] = "systemd-user-unit-path",
+ [SD_PATH_SYSTEMD_SYSTEM_GENERATOR_DIR] = "systemd-system-generator-dir",
+ [SD_PATH_SYSTEMD_USER_GENERATOR_DIR] = "systemd-user-generator-dir",
+ [SD_PATH_SYSTEMD_SYSTEM_GENERATOR_PATH] = "systemd-system-generator-path",
+ [SD_PATH_SYSTEMD_USER_GENERATOR_PATH] = "systemd-user-generator-path",
+ [SD_PATH_SYSTEMD_SLEEP_DIR] = "systemd-sleep-dir",
+ [SD_PATH_SYSTEMD_SHUTDOWN_DIR] = "systemd-shutdown-dir",
+
+ [SD_PATH_TMPFILES_DIR] = "tmpfiles-dir",
+ [SD_PATH_SYSUSERS_DIR] = "sysusers-dir",
+ [SD_PATH_SYSCTL_DIR] = "sysctl-dir",
+ [SD_PATH_BINFMT_DIR] = "binfmt-dir",
+ [SD_PATH_MODULES_LOAD_DIR] = "modules-load-dir",
+ [SD_PATH_CATALOG_DIR] = "catalog-dir",
};
static int list_homes(void) {
SD_PATH_SEARCH_STATE_FACTORY,
SD_PATH_SEARCH_CONFIGURATION,
+ /* Various systemd paths, generally mirroring systemd.pc */
+ SD_PATH_SYSTEMD_UTIL_DIR,
+ SD_PATH_SYSTEMD_SYSTEM_UNIT_DIR,
+ SD_PATH_SYSTEMD_SYSTEM_PRESET_DIR,
+ SD_PATH_SYSTEMD_USER_UNIT_DIR,
+ SD_PATH_SYSTEMD_USER_PRESET_DIR,
+ SD_PATH_SYSTEMD_SYSTEM_CONF_DIR,
+ SD_PATH_SYSTEMD_USER_CONF_DIR,
+ SD_PATH_SYSTEMD_SYSTEM_UNIT_PATH,
+ SD_PATH_SYSTEMD_USER_UNIT_PATH,
+ SD_PATH_SYSTEMD_SYSTEM_GENERATOR_DIR,
+ SD_PATH_SYSTEMD_USER_GENERATOR_DIR,
+ SD_PATH_SYSTEMD_SYSTEM_GENERATOR_PATH,
+ SD_PATH_SYSTEMD_USER_GENERATOR_PATH,
+ SD_PATH_SYSTEMD_SLEEP_DIR,
+ SD_PATH_SYSTEMD_SHUTDOWN_DIR,
+
+ SD_PATH_TMPFILES_DIR,
+ SD_PATH_SYSUSERS_DIR,
+ SD_PATH_SYSCTL_DIR,
+ SD_PATH_BINFMT_DIR,
+ SD_PATH_MODULES_LOAD_DIR,
+ SD_PATH_CATALOG_DIR,
+
_SD_PATH_MAX,
};