chiark / gitweb /
unit-name: fix detection of unit templates/instances
authorLennart Poettering <lennart@poettering.net>
Mon, 16 Jun 2014 15:01:26 +0000 (17:01 +0200)
committerLennart Poettering <lennart@poettering.net>
Mon, 16 Jun 2014 23:24:03 +0000 (01:24 +0200)
We need to check for the last dot, not the first one in a unit name, for
the suffix. Correct that.

src/shared/unit-name.c

index 6c167b4..d0e71f2 100644 (file)
@@ -332,7 +332,7 @@ char *unit_name_path_unescape(const char *f) {
 }
 
 bool unit_name_is_template(const char *n) {
-        const char *p;
+        const char *p, *e;
 
         assert(n);
 
@@ -340,11 +340,15 @@ bool unit_name_is_template(const char *n) {
         if (!p)
                 return false;
 
-        return p[1] == '.';
+        e = strrchr(p+1, '.');
+        if (!e)
+                return false;
+
+        return e == p + 1;
 }
 
 bool unit_name_is_instance(const char *n) {
-        const char *p;
+        const char *p, *e;
 
         assert(n);
 
@@ -352,7 +356,11 @@ bool unit_name_is_instance(const char *n) {
         if (!p)
                 return false;
 
-        return p[1] != '.';
+        e = strrchr(p+1, '.');
+        if (!e)
+                return false;
+
+        return e > p + 1;
 }
 
 char *unit_name_replace_instance(const char *f, const char *i) {