diff options
author | Lennart Poettering <lennart@poettering.net> | 2014-06-16 17:01:26 +0200 |
---|---|---|
committer | Lennart Poettering <lennart@poettering.net> | 2014-06-17 01:24:03 +0200 |
commit | 6ef9eeed61a291cc42b7d911f5cf5a4deca742a3 (patch) | |
tree | d80f32968fc7ea4477442e73b45d245fcc51edc3 /src/shared/unit-name.c | |
parent | e94b5a7bc201fe73c4a291169c5c1d21cceee128 (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.
Diffstat (limited to 'src/shared/unit-name.c')
-rw-r--r-- | src/shared/unit-name.c | 16 |
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) { |