mirror of
https://github.com/systemd/systemd.git
synced 2024-12-28 11:33:31 +08:00
path-lookup: make inclusion of user private units optional
This commit is contained in:
parent
d8eaa1144f
commit
c800e48374
@ -258,7 +258,7 @@ int manager_new(ManagerRunningAs running_as, Manager **_m) {
|
||||
if ((m->epoll_fd = epoll_create1(EPOLL_CLOEXEC)) < 0)
|
||||
goto fail;
|
||||
|
||||
if ((r = lookup_paths_init(&m->lookup_paths, m->running_as)) < 0)
|
||||
if ((r = lookup_paths_init(&m->lookup_paths, m->running_as, true)) < 0)
|
||||
goto fail;
|
||||
|
||||
if ((r = manager_setup_signals(m)) < 0)
|
||||
@ -2822,7 +2822,7 @@ int manager_reload(Manager *m) {
|
||||
|
||||
/* Find new unit paths */
|
||||
lookup_paths_free(&m->lookup_paths);
|
||||
if ((q = lookup_paths_init(&m->lookup_paths, m->running_as)) < 0)
|
||||
if ((q = lookup_paths_init(&m->lookup_paths, m->running_as, true)) < 0)
|
||||
r = q;
|
||||
|
||||
manager_run_generators(m);
|
||||
|
@ -163,7 +163,7 @@ fail:
|
||||
goto finish;
|
||||
}
|
||||
|
||||
int lookup_paths_init(LookupPaths *p, ManagerRunningAs running_as) {
|
||||
int lookup_paths_init(LookupPaths *p, ManagerRunningAs running_as, bool personal) {
|
||||
const char *e;
|
||||
char *t;
|
||||
|
||||
@ -181,8 +181,27 @@ int lookup_paths_init(LookupPaths *p, ManagerRunningAs running_as) {
|
||||
strv_free(p->unit_path);
|
||||
|
||||
if (running_as == MANAGER_USER) {
|
||||
if (!(p->unit_path = user_dirs()))
|
||||
|
||||
if (personal)
|
||||
p->unit_path = user_dirs();
|
||||
else
|
||||
p->unit_path = strv_new(
|
||||
/* If you modify this you also want to modify
|
||||
* systemduserunitpath= in systemd.pc.in, and
|
||||
* the arrays in user_dirs() above! */
|
||||
"/run/systemd/user",
|
||||
USER_CONFIG_UNIT_PATH,
|
||||
"/etc/systemd/system",
|
||||
"/usr/local/lib/systemd/user",
|
||||
"/usr/local/share/systemd/user",
|
||||
USER_DATA_UNIT_PATH,
|
||||
"/usr/lib/systemd/user",
|
||||
"/usr/share/systemd/user",
|
||||
NULL);
|
||||
|
||||
if (!p->unit_path)
|
||||
return -ENOMEM;
|
||||
|
||||
} else
|
||||
if (!(p->unit_path = strv_new(
|
||||
/* If you modify this you also want to modify
|
||||
@ -192,8 +211,8 @@ int lookup_paths_init(LookupPaths *p, ManagerRunningAs running_as) {
|
||||
"/etc/systemd/system",
|
||||
"/usr/local/lib/systemd/system",
|
||||
"/usr/lib/systemd/system",
|
||||
"/lib/systemd/system",
|
||||
SYSTEM_DATA_UNIT_PATH,
|
||||
"/lib/systemd/system",
|
||||
NULL)))
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
@ -34,7 +34,7 @@ typedef struct LookupPaths {
|
||||
|
||||
int user_config_home(char **config_home);
|
||||
|
||||
int lookup_paths_init(LookupPaths *p, ManagerRunningAs running_as);
|
||||
int lookup_paths_init(LookupPaths *p, ManagerRunningAs running_as, bool personal);
|
||||
void lookup_paths_free(LookupPaths *p);
|
||||
|
||||
#endif
|
||||
|
@ -4139,7 +4139,7 @@ static int enable_unit(DBusConnection *bus, char **args, unsigned n) {
|
||||
dbus_error_init(&error);
|
||||
|
||||
zero(paths);
|
||||
if ((r = lookup_paths_init(&paths, arg_user ? MANAGER_USER : MANAGER_SYSTEM)) < 0) {
|
||||
if ((r = lookup_paths_init(&paths, arg_user ? MANAGER_USER : MANAGER_SYSTEM, true)) < 0) {
|
||||
log_error("Failed to determine lookup paths: %s", strerror(-r));
|
||||
goto finish;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user