chiark
/
gitweb
/
~ianmdlvl
/
elogind.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
manager: don't show kernel boot-up time for containers
[elogind.git]
/
src
/
dbus-job.c
diff --git
a/src/dbus-job.c
b/src/dbus-job.c
index 667eb04a69907ff2b2bfc1f004a9617b869e3eb1..908ddba5379480672f9589294a395992f800700b 100644
(file)
--- a/
src/dbus-job.c
+++ b/
src/dbus-job.c
@@
-43,11
+43,14
@@
BUS_INTROSPECTABLE_INTERFACE \
"</node>\n"
BUS_INTROSPECTABLE_INTERFACE \
"</node>\n"
-const char bus_job_interface[] = BUS_JOB_INTERFACE;
+const char bus_job_interface[] _introspect_("Job") = BUS_JOB_INTERFACE;
+
+#define INTERFACES_LIST \
+ BUS_GENERIC_INTERFACES_LIST \
+ "org.freedesktop.systemd1.Job\0"
#define INVALIDATING_PROPERTIES \
#define INVALIDATING_PROPERTIES \
- "State\0" \
- "\0" \
+ "State\0"
static DEFINE_BUS_PROPERTY_APPEND_ENUM(bus_job_append_state, job_state, JobState);
static DEFINE_BUS_PROPERTY_APPEND_ENUM(bus_job_append_type, job_type, JobType);
static DEFINE_BUS_PROPERTY_APPEND_ENUM(bus_job_append_state, job_state, JobState);
static DEFINE_BUS_PROPERTY_APPEND_ENUM(bus_job_append_type, job_type, JobType);
@@
-97,10
+100,10
@@
static DBusHandlerResult bus_job_message_dispatch(Job *j, DBusConnection *connec
if (!(reply = dbus_message_new_method_return(message)))
goto oom;
if (!(reply = dbus_message_new_method_return(message)))
goto oom;
- job_f
ree(j
);
+ job_f
inish_and_invalidate(j, JOB_CANCELED
);
} else
} else
- return bus_default_message_handler(j->manager, connection, message, INTROSPECTION, properties);
+ return bus_default_message_handler(j->manager, connection, message, INTROSPECTION,
INTERFACES_LIST,
properties);
if (reply) {
if (!dbus_connection_send(connection, reply, NULL))
if (reply) {
if (!dbus_connection_send(connection, reply, NULL))
@@
-193,8
+196,13
@@
static DBusHandlerResult bus_job_message_handler(DBusConnection *connection, DBu
if (r == -ENOMEM)
return DBUS_HANDLER_RESULT_NEED_MEMORY;
if (r == -ENOMEM)
return DBUS_HANDLER_RESULT_NEED_MEMORY;
- if (r == -ENOENT)
- return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
+ if (r == -ENOENT) {
+ DBusError e;
+
+ dbus_error_init(&e);
+ dbus_set_error_const(&e, DBUS_ERROR_UNKNOWN_OBJECT, "Unknown job");
+ return bus_send_error_reply(m, connection, message, &e, r);
+ }
return bus_send_error_reply(m, connection, message, NULL, r);
}
return bus_send_error_reply(m, connection, message, NULL, r);
}
@@
-295,10
+303,10
@@
oom:
log_error("Failed to allocate job change signal.");
}
log_error("Failed to allocate job change signal.");
}
-void bus_job_send_removed_signal(Job *j
, bool success
) {
+void bus_job_send_removed_signal(Job *j) {
char *p = NULL;
DBusMessage *m = NULL;
char *p = NULL;
DBusMessage *m = NULL;
-
dbus_bool_t b = success
;
+
const char *r
;
assert(j);
assert(j);
@@
-314,10
+322,12
@@
void bus_job_send_removed_signal(Job *j, bool success) {
if (!(m = dbus_message_new_signal("/org/freedesktop/systemd1", "org.freedesktop.systemd1.Manager", "JobRemoved")))
goto oom;
if (!(m = dbus_message_new_signal("/org/freedesktop/systemd1", "org.freedesktop.systemd1.Manager", "JobRemoved")))
goto oom;
+ r = job_result_to_string(j->result);
+
if (!dbus_message_append_args(m,
DBUS_TYPE_UINT32, &j->id,
DBUS_TYPE_OBJECT_PATH, &p,
if (!dbus_message_append_args(m,
DBUS_TYPE_UINT32, &j->id,
DBUS_TYPE_OBJECT_PATH, &p,
- DBUS_TYPE_
BOOLEAN, &b
,
+ DBUS_TYPE_
STRING, &r
,
DBUS_TYPE_INVALID))
goto oom;
DBUS_TYPE_INVALID))
goto oom;