summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2014-06-16 17:01:26 +0200
committerLennart Poettering <lennart@poettering.net>2014-06-17 01:24:03 +0200
commit6ef9eeed61a291cc42b7d911f5cf5a4deca742a3 (patch)
treed80f32968fc7ea4477442e73b45d245fcc51edc3
parente94b5a7bc201fe73c4a291169c5c1d21cceee128 (diff)
unit-name: fix detection of unit templates/instances
We need to check for the last dot, not the first one in a unit name, for the suffix. Correct that.
-rw-r--r--src/shared/unit-name.c16
1 files changed, 12 insertions, 4 deletions
diff --git a/src/shared/unit-name.c b/src/shared/unit-name.c
index 6c167b4331..d0e71f2403 100644
--- a/src/shared/unit-name.c
+++ b/src/shared/unit-name.c
@@ -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) {