#include "fileio.h"
#include "special.h"
#include "unit-name.h"
-#include "machine.h"
#include "bus-util.h"
#include "bus-error.h"
+#include "machine.h"
+#include "machine-dbus.h"
Machine* machine_new(Manager *manager, const char *name) {
Machine *m;
goto finish;
}
+ free(temp_path);
+ temp_path = NULL;
+
if (m->unit) {
char *sl;
}
finish:
- if (r < 0) {
- if (temp_path)
- unlink(temp_path);
+ if (temp_path)
+ unlink(temp_path);
- log_error("Failed to save machine data %s: %s", m->state_file, strerror(-r));
- }
+ if (r < 0)
+ log_error_errno(r, "Failed to save machine data %s: %m", m->state_file);
return r;
}
if (r == -ENOENT)
return 0;
- log_error("Failed to read %s: %s", m->state_file, strerror(-r));
- return r;
+ return log_error_errno(r, "Failed to read %s: %m", m->state_file);
}
if (id)
if (netif) {
size_t l, allocated = 0, nr = 0;
- char *w, *state;
+ const char *word, *state;
int *ni = NULL;
- FOREACH_WORD(w, l, netif, state) {
+ FOREACH_WORD(word, l, netif, state) {
char buf[l+1];
int ifi;
- *(char*) (mempcpy(buf, w, l)) = 0;
+ *(char*) (mempcpy(buf, word, l)) = 0;
if (safe_atoi(buf, &ifi) < 0)
continue;
return r;
log_struct(LOG_INFO,
- MESSAGE_ID(SD_MESSAGE_MACHINE_START),
+ LOG_MESSAGE_ID(SD_MESSAGE_MACHINE_START),
"NAME=%s", m->name,
"LEADER="PID_FMT, m->leader,
- "MESSAGE=New machine %s.", m->name,
+ LOG_MESSAGE("New machine %s.", m->name),
NULL);
if (!dual_timestamp_is_set(&m->timestamp))
if (!m->unit)
return 0;
- if (!m->registered) {
- r = manager_stop_unit(m->manager, m->unit, &error, &job);
- if (r < 0) {
- log_error("Failed to stop machine scope: %s", bus_error_message(&error, r));
- return r;
- }
+ r = manager_stop_unit(m->manager, m->unit, &error, &job);
+ if (r < 0) {
+ log_error("Failed to stop machine scope: %s", bus_error_message(&error, r));
+ return r;
}
free(m->scope_job);
if (m->started)
log_struct(LOG_INFO,
- MESSAGE_ID(SD_MESSAGE_MACHINE_STOP),
+ LOG_MESSAGE_ID(SD_MESSAGE_MACHINE_STOP),
"NAME=%s", m->name,
"LEADER="PID_FMT, m->leader,
- "MESSAGE=Machine %s terminated.", m->name,
+ LOG_MESSAGE("Machine %s terminated.", m->name),
NULL);
/* Kill cgroup */
if (kill(m->leader, signo) < 0)
return -errno;
+
+ return 0;
}
/* Otherwise make PID 1 do it for us, for the entire cgroup */