X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Fservice.c;h=f173d8a2d5e8636dbbe3c4d14faf888beaeef61f;hb=4627d39661ffcdd11e814650dfcc9ac3d0d0ec0b;hp=75439be376a5bcaf461f70eb853014ef6bd4afee;hpb=398ef8ba0266cca453d90a90b3a2aa1caa44189f;p=elogind.git diff --git a/src/service.c b/src/service.c index 75439be37..f173d8a2d 100644 --- a/src/service.c +++ b/src/service.c @@ -1323,6 +1323,7 @@ static int service_spawn( bool pass_fds, bool apply_permissions, bool apply_chroot, + bool apply_tty_stdin, bool set_notify_socket, pid_t *_pid) { @@ -1395,6 +1396,7 @@ static int service_spawn( final_env, apply_permissions, apply_chroot, + apply_tty_stdin, s->meta.manager->confirm_spawn, s->meta.cgroup_bondings, &pid); @@ -1505,6 +1507,7 @@ static void service_enter_stop_post(Service *s, bool success) { false, !s->permissions_start_only, !s->root_directory_start_only, + true, false, &s->control_pid)) < 0) goto fail; @@ -1605,6 +1608,7 @@ static void service_enter_stop(Service *s, bool success) { !s->permissions_start_only, !s->root_directory_start_only, false, + false, &s->control_pid)) < 0) goto fail; @@ -1653,6 +1657,7 @@ static void service_enter_start_post(Service *s) { !s->permissions_start_only, !s->root_directory_start_only, false, + false, &s->control_pid)) < 0) goto fail; @@ -1687,6 +1692,7 @@ static void service_enter_start(Service *s) { true, true, true, + true, s->notify_access != NOTIFY_NONE, &pid)) < 0) goto fail; @@ -1747,6 +1753,7 @@ static void service_enter_start_pre(Service *s) { false, !s->permissions_start_only, !s->root_directory_start_only, + true, false, &s->control_pid)) < 0) goto fail; @@ -1800,6 +1807,7 @@ static void service_enter_reload(Service *s) { !s->permissions_start_only, !s->root_directory_start_only, false, + false, &s->control_pid)) < 0) goto fail; @@ -1835,6 +1843,7 @@ static void service_run_next(Service *s, bool success) { !s->permissions_start_only, !s->root_directory_start_only, false, + false, &s->control_pid)) < 0) goto fail; @@ -2556,6 +2565,13 @@ static int service_enumerate(Manager *m) { manager_dispatch_load_queue(m); service = unit_follow_merge(service); + /* If this is a native service, rely + * on native ways to pull in a + * service, don't pull it in via sysv + * rcN.d links. */ + if (service->meta.fragment_path) + continue; + if (de->d_name[0] == 'S') { if ((r = unit_add_two_dependencies_by_name_inverse(service, UNIT_AFTER, UNIT_WANTS, rcnd_table[i].target, NULL, true)) < 0)