Zbigniew Jędrzejewski-Szmek 5509c0
From 3e59dbfced8ba0e6258ee5ed6c6a3d895b0fd2b5 Mon Sep 17 00:00:00 2001
Zbigniew Jędrzejewski-Szmek 5509c0
From: Lennart Poettering <lennart@poettering.net>
Zbigniew Jędrzejewski-Szmek 5509c0
Date: Mon, 16 Jun 2014 17:01:26 +0200
Zbigniew Jędrzejewski-Szmek 5509c0
Subject: [PATCH] unit-name: fix detection of unit templates/instances
Zbigniew Jędrzejewski-Szmek 5509c0
Zbigniew Jędrzejewski-Szmek 5509c0
We need to check for the last dot, not the first one in a unit name, for
Zbigniew Jędrzejewski-Szmek 5509c0
the suffix. Correct that.
Zbigniew Jędrzejewski-Szmek 5509c0
Zbigniew Jędrzejewski-Szmek 5509c0
(cherry picked from commit 6ef9eeed61a291cc42b7d911f5cf5a4deca742a3)
Zbigniew Jędrzejewski-Szmek 5509c0
---
Zbigniew Jędrzejewski-Szmek 5509c0
 src/shared/unit-name.c | 16 ++++++++++++----
Zbigniew Jędrzejewski-Szmek 5509c0
 1 file changed, 12 insertions(+), 4 deletions(-)
Zbigniew Jędrzejewski-Szmek 5509c0
Zbigniew Jędrzejewski-Szmek 5509c0
diff --git a/src/shared/unit-name.c b/src/shared/unit-name.c
Zbigniew Jędrzejewski-Szmek 5509c0
index 6c167b43..d0e71f24 100644
Zbigniew Jędrzejewski-Szmek 5509c0
--- a/src/shared/unit-name.c
Zbigniew Jędrzejewski-Szmek 5509c0
+++ b/src/shared/unit-name.c
Zbigniew Jędrzejewski-Szmek 5509c0
@@ -332,7 +332,7 @@ char *unit_name_path_unescape(const char *f) {
Zbigniew Jędrzejewski-Szmek 5509c0
 }
Zbigniew Jędrzejewski-Szmek 5509c0
 
Zbigniew Jędrzejewski-Szmek 5509c0
 bool unit_name_is_template(const char *n) {
Zbigniew Jędrzejewski-Szmek 5509c0
-        const char *p;
Zbigniew Jędrzejewski-Szmek 5509c0
+        const char *p, *e;
Zbigniew Jędrzejewski-Szmek 5509c0
 
Zbigniew Jędrzejewski-Szmek 5509c0
         assert(n);
Zbigniew Jędrzejewski-Szmek 5509c0
 
Zbigniew Jędrzejewski-Szmek 5509c0
@@ -340,11 +340,15 @@ bool unit_name_is_template(const char *n) {
Zbigniew Jędrzejewski-Szmek 5509c0
         if (!p)
Zbigniew Jędrzejewski-Szmek 5509c0
                 return false;
Zbigniew Jędrzejewski-Szmek 5509c0
 
Zbigniew Jędrzejewski-Szmek 5509c0
-        return p[1] == '.';
Zbigniew Jędrzejewski-Szmek 5509c0
+        e = strrchr(p+1, '.');
Zbigniew Jędrzejewski-Szmek 5509c0
+        if (!e)
Zbigniew Jędrzejewski-Szmek 5509c0
+                return false;
Zbigniew Jędrzejewski-Szmek 5509c0
+
Zbigniew Jędrzejewski-Szmek 5509c0
+        return e == p + 1;
Zbigniew Jędrzejewski-Szmek 5509c0
 }
Zbigniew Jędrzejewski-Szmek 5509c0
 
Zbigniew Jędrzejewski-Szmek 5509c0
 bool unit_name_is_instance(const char *n) {
Zbigniew Jędrzejewski-Szmek 5509c0
-        const char *p;
Zbigniew Jędrzejewski-Szmek 5509c0
+        const char *p, *e;
Zbigniew Jędrzejewski-Szmek 5509c0
 
Zbigniew Jędrzejewski-Szmek 5509c0
         assert(n);
Zbigniew Jędrzejewski-Szmek 5509c0
 
Zbigniew Jędrzejewski-Szmek 5509c0
@@ -352,7 +356,11 @@ bool unit_name_is_instance(const char *n) {
Zbigniew Jędrzejewski-Szmek 5509c0
         if (!p)
Zbigniew Jędrzejewski-Szmek 5509c0
                 return false;
Zbigniew Jędrzejewski-Szmek 5509c0
 
Zbigniew Jędrzejewski-Szmek 5509c0
-        return p[1] != '.';
Zbigniew Jędrzejewski-Szmek 5509c0
+        e = strrchr(p+1, '.');
Zbigniew Jędrzejewski-Szmek 5509c0
+        if (!e)
Zbigniew Jędrzejewski-Szmek 5509c0
+                return false;
Zbigniew Jędrzejewski-Szmek 5509c0
+
Zbigniew Jędrzejewski-Szmek 5509c0
+        return e > p + 1;
Zbigniew Jędrzejewski-Szmek 5509c0
 }
Zbigniew Jędrzejewski-Szmek 5509c0
 
Zbigniew Jędrzejewski-Szmek 5509c0
 char *unit_name_replace_instance(const char *f, const char *i) {