X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Fbasic%2Funit-name.c;h=de168353643077af9fd41324d61bacfe1fe2d5da;hb=34c7fcb14d705141c71b5b63a2f044a51ffbd92b;hp=bf52463d81855fb36fc0848c260e0b96d4a39099;hpb=1cfc78c91965df340cdde100ad6cb3ed50b28927;p=elogind.git diff --git a/src/basic/unit-name.c b/src/basic/unit-name.c index bf52463d8..de1683536 100644 --- a/src/basic/unit-name.c +++ b/src/basic/unit-name.c @@ -118,6 +118,8 @@ bool unit_suffix_is_valid(const char *s) { return true; } +/// UNNEEDED by elogind +#if 0 int unit_name_to_prefix(const char *n, char **ret) { const char *p; char *s; @@ -236,6 +238,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; @@ -264,6 +267,8 @@ int unit_name_build(const char *prefix, const char *instance, const char *suffix return 0; } +/// UNNEEDED by elogind +#if 0 static char *do_escape_char(char c, char *t) { assert(t); @@ -586,6 +591,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; @@ -673,6 +714,7 @@ int unit_name_mangle_with_suffix(const char *name, UnitNameMangle allow_globs, c int slice_build_parent_slice(const char *slice, char **ret) { char *s, *dash; + int r; assert(slice); assert(ret); @@ -693,16 +735,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,11 +829,13 @@ 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); +/// UNNEEDED by elogind +#if 0 static const char* const unit_load_state_table[_UNIT_LOAD_STATE_MAX] = { [UNIT_STUB] = "stub", [UNIT_LOADED] = "loaded", @@ -832,3 +877,4 @@ static const char* const unit_dependency_table[_UNIT_DEPENDENCY_MAX] = { }; DEFINE_STRING_TABLE_LOOKUP(unit_dependency, UnitDependency); +#endif // 0