chiark / gitweb /
Prep v226: Apply missing fixes and changes to src/basic
[elogind.git] / src / basic / unit-name.c
index bf52463d81855fb36fc0848c260e0b96d4a39099..0f5b7163e40ac6329f87e061c39a5575b868b02a 100644 (file)
@@ -142,6 +142,8 @@ int unit_name_to_prefix(const char *n, char **ret) {
         return 0;
 }
 
+/// UNNEEDED by elogind
+#if 0
 int unit_name_to_instance(const char *n, char **instance) {
         const char *p, *d;
         char *i;
@@ -194,6 +196,7 @@ int unit_name_to_prefix_and_instance(const char *n, char **ret) {
         *ret = s;
         return 0;
 }
+#endif // 0
 
 UnitType unit_name_to_type(const char *n) {
         const char *e;
@@ -208,6 +211,8 @@ UnitType unit_name_to_type(const char *n) {
         return unit_type_from_string(e + 1);
 }
 
+/// UNNEEDED by elogind
+#if 0
 int unit_name_change_suffix(const char *n, const char *suffix, char **ret) {
         char *e, *s;
         size_t a, b;
@@ -236,6 +241,7 @@ int unit_name_change_suffix(const char *n, const char *suffix, char **ret) {
 
         return 0;
 }
+#endif // 0
 
 int unit_name_build(const char *prefix, const char *instance, const char *suffix, char **ret) {
         char *s;
@@ -437,6 +443,8 @@ int unit_name_path_unescape(const char *f, char **ret) {
         return 0;
 }
 
+/// UNNEEDED by elogind
+#if 0
 int unit_name_replace_instance(const char *f, const char *i, char **ret) {
         const char *p, *e;
         char *s;
@@ -492,6 +500,7 @@ int unit_name_template(const char *f, char **ret) {
         *ret = s;
         return 0;
 }
+#endif // 0
 
 int unit_name_from_path(const char *path, const char *suffix, char **ret) {
         _cleanup_free_ char *p = NULL;
@@ -517,6 +526,8 @@ int unit_name_from_path(const char *path, const char *suffix, char **ret) {
         return 0;
 }
 
+/// UNNEEDED by elogind
+#if 0
 int unit_name_from_path_instance(const char *prefix, const char *path, const char *suffix, char **ret) {
         _cleanup_free_ char *p = NULL;
         char *s;
@@ -557,6 +568,7 @@ int unit_name_to_path(const char *name, char **ret) {
 
         return unit_name_path_unescape(prefix, ret);
 }
+#endif // 0
 
 char *unit_dbus_path_from_name(const char *name) {
         _cleanup_free_ char *e = NULL;
@@ -586,6 +598,42 @@ int unit_name_from_dbus_path(const char *path, char **name) {
         return 0;
 }
 
+const char* unit_dbus_interface_from_type(UnitType t) {
+
+        static const char *const table[_UNIT_TYPE_MAX] = {
+                [UNIT_SERVICE] = "org.freedesktop.systemd1.Service",
+                [UNIT_SOCKET] = "org.freedesktop.systemd1.Socket",
+                [UNIT_BUSNAME] = "org.freedesktop.systemd1.BusName",
+                [UNIT_TARGET] = "org.freedesktop.systemd1.Target",
+                [UNIT_SNAPSHOT] = "org.freedesktop.systemd1.Snapshot",
+                [UNIT_DEVICE] = "org.freedesktop.systemd1.Device",
+                [UNIT_MOUNT] = "org.freedesktop.systemd1.Mount",
+                [UNIT_AUTOMOUNT] = "org.freedesktop.systemd1.Automount",
+                [UNIT_SWAP] = "org.freedesktop.systemd1.Swap",
+                [UNIT_TIMER] = "org.freedesktop.systemd1.Timer",
+                [UNIT_PATH] = "org.freedesktop.systemd1.Path",
+                [UNIT_SLICE] = "org.freedesktop.systemd1.Slice",
+                [UNIT_SCOPE] = "org.freedesktop.systemd1.Scope",
+        };
+
+        if (t < 0)
+                return NULL;
+        if (t >= _UNIT_TYPE_MAX)
+                return NULL;
+
+        return table[t];
+}
+
+const char *unit_dbus_interface_from_name(const char *name) {
+        UnitType t;
+
+        t = unit_name_to_type(name);
+        if (t < 0)
+                return NULL;
+
+        return unit_dbus_interface_from_type(t);
+}
+
 static char *do_escape_mangle(const char *f, UnitNameMangle allow_globs, char *t) {
         const char *valid_chars;
 
@@ -671,8 +719,11 @@ int unit_name_mangle_with_suffix(const char *name, UnitNameMangle allow_globs, c
         return 1;
 }
 
+/// UNNEEDED by elogind
+#if 0
 int slice_build_parent_slice(const char *slice, char **ret) {
         char *s, *dash;
+        int r;
 
         assert(slice);
         assert(ret);
@@ -693,16 +744,17 @@ int slice_build_parent_slice(const char *slice, char **ret) {
         if (dash)
                 strcpy(dash, ".slice");
         else {
+                r = free_and_strdup(&s, "-.slice");
+                if (r < 0) {
                 free(s);
-
-                s = strdup("-.slice");
-                if (!s)
-                        return -ENOMEM;
+                        return r;
+                }
         }
 
         *ret = s;
         return 1;
 }
+#endif // 0
 
 int slice_build_subslice(const char *slice, const char*name, char **ret) {
         char *subslice;
@@ -786,7 +838,7 @@ static const char* const unit_type_table[_UNIT_TYPE_MAX] = {
         [UNIT_TIMER] = "timer",
         [UNIT_PATH] = "path",
         [UNIT_SLICE] = "slice",
-        [UNIT_SCOPE] = "scope"
+        [UNIT_SCOPE] = "scope",
 };
 
 DEFINE_STRING_TABLE_LOOKUP(unit_type, UnitType);