#include "unit-printf.h"
#include "dbus-service.h"
#include "special.h"
-#include "bus-errors.h"
+#include "dbus-common.h"
#include "exit-status.h"
#include "def.h"
#include "path-util.h"
s->watchdog_timestamp.monotonic = 0;
}
-static void service_enter_dead(Service *s, ServiceResult f, bool allow_restart);
+static void service_enter_signal(Service *s, ServiceState state, ServiceResult f);
static void service_handle_watchdog(Service *s) {
usec_t offset;
offset = now(CLOCK_MONOTONIC) - s->watchdog_timestamp.monotonic;
if (offset >= s->watchdog_usec) {
log_error_unit(UNIT(s)->id, "%s watchdog timeout!", UNIT(s)->id);
- service_enter_dead(s, SERVICE_FAILURE_WATCHDOG, true);
+ service_enter_signal(s, SERVICE_STOP_SIGKILL, SERVICE_FAILURE_WATCHDOG);
return;
}
ServiceExecCommand c;
Service *s = SERVICE(u);
const char *prefix2;
- char _cleanup_free_ *p2 = NULL;
+ _cleanup_free_ char *p2 = NULL;
assert(s);
}
static int service_load_pid_file(Service *s, bool may_warn) {
- char _cleanup_free_ *k = NULL;
+ _cleanup_free_ char *k = NULL;
int r;
pid_t pid;
r = unit_watch_pid(UNIT(s), pid);
if (r < 0)
/* FIXME: we need to do something here */
+ log_warning_unit(UNIT(s)->id,
+ "Failed to watch PID %lu from service %s",
+ (unsigned long) pid, UNIT(s)->id);
return r;
return 0;
pid_t pid;
int r;
int *fds = NULL;
- int _cleanup_free_ *fdsbuf = NULL;
+ _cleanup_free_ int *fdsbuf = NULL;
unsigned n_fds = 0, n_env = 0;
- char _cleanup_strv_free_
+ _cleanup_strv_free_ char
**argv = NULL, **final_env = NULL, **our_env = NULL;
assert(s);
return -EAGAIN;
}
-static int control_pid_good(Service *s) {
+_pure_ static int control_pid_good(Service *s) {
assert(s);
return s->control_pid > 0;
service_enter_dead(s, SERVICE_FAILURE_RESOURCES, false);
}
-static void service_enter_signal(Service *s, ServiceState state, ServiceResult f);
-
static void service_enter_stop_post(Service *s, ServiceResult f) {
int r;
assert(s);
return 0;
}
-static bool service_can_reload(Unit *u) {
+_pure_ static bool service_can_reload(Unit *u) {
Service *s = SERVICE(u);
assert(s);
return 0;
}
-static UnitActiveState service_active_state(Unit *u) {
+_pure_ static UnitActiveState service_active_state(Unit *u) {
const UnitActiveState *table;
assert(u);
return false;
}
-static bool service_check_snapshot(Unit *u) {
+_pure_ static bool service_check_snapshot(Unit *u) {
Service *s = SERVICE(u);
assert(s);
static int service_enumerate(Manager *m) {
char **p;
unsigned i;
- DIR _cleanup_closedir_ *d = NULL;
- char _cleanup_free_ *path = NULL, *fpath = NULL, *name = NULL;
- Set *runlevel_services[ELEMENTSOF(rcnd_table)];
- Set _cleanup_set_free_ *shutdown_services = NULL;
+ _cleanup_closedir_ DIR *d = NULL;
+ _cleanup_free_ char *path = NULL, *fpath = NULL, *name = NULL;
+ Set *runlevel_services[ELEMENTSOF(rcnd_table)] = {};
+ _cleanup_set_free_ Set *shutdown_services = NULL;
Unit *service;
Iterator j;
int r;
if (m->running_as != SYSTEMD_SYSTEM)
return 0;
- zero(runlevel_services);
-
STRV_FOREACH(p, m->lookup_paths.sysvrcnd_path)
for (i = 0; i < ELEMENTSOF(rcnd_table); i ++) {
struct dirent *de;