chiark / gitweb /
Merge remote branch 'kay/master'
[elogind.git] / manager.c
index 3bbc85542c52ec37ba4c0c30d4d85053ff79164f..b574c6380dad18b6886851b1732efe7186c2eedc 100644 (file)
--- a/manager.c
+++ b/manager.c
@@ -1257,3 +1257,26 @@ int manager_get_unit_from_dbus_path(Manager *m, const char *s, Unit **_u) {
 
         return 0;
 }
+
+int manager_get_job_from_dbus_path(Manager *m, const char *s, Job **_j) {
+        Job *j;
+        unsigned id;
+        int r;
+
+        assert(m);
+        assert(s);
+        assert(_j);
+
+        if (!startswith(s, "/org/freedesktop/systemd1/job/"))
+                return -EINVAL;
+
+        if ((r = safe_atou(s + 30, &id)) < 0)
+                return r;
+
+        if (!(j = manager_get_job(m, id)))
+                return -ENOENT;
+
+        *_j = j;
+
+        return 0;
+}