Sophie

Sophie

distrib > Fedora > 17 > i386 > media > updates-src > by-pkgid > ab4b662b9827b6375ffd451bf4abd615 > files > 514

systemd-44-24.fc17.src.rpm

From 253a02e5f3f88aad7382cd5d460419082753b75d Mon Sep 17 00:00:00 2001
From: Lennart Poettering <lennart@poettering.net>
Date: Sat, 28 Jul 2012 13:20:35 +0200
Subject: [PATCH] systemctl: append .service to unit names lacking suffix

https://bugs.freedesktop.org/show_bug.cgi?id=39386
(cherry picked from commit 56d4fbf92eb6d8eb31c910e137224308c40dd909)

Conflicts:
	TODO
---
 src/shared/unit-name.c | 11 +++++++++--
 1 file changed, 9 insertions(+), 2 deletions(-)

diff --git a/src/shared/unit-name.c b/src/shared/unit-name.c
index fb31d19..28e3e76 100644
--- a/src/shared/unit-name.c
+++ b/src/shared/unit-name.c
@@ -476,6 +476,7 @@ char *unit_dbus_path_from_name(const char *name) {
 char *unit_name_mangle(const char *name) {
         char *r, *t;
         const char *f;
+        bool dot = false;
 
         assert(name);
 
@@ -492,12 +493,15 @@ char *unit_name_mangle(const char *name) {
         /* We'll only escape the obvious characters here, to play
          * safe. */
 
-        r = new(char, strlen(name) * 4 + 1);
+        r = new(char, strlen(name) * 4 + 1 + sizeof(".service")-1);
         if (!r)
                 return NULL;
 
         for (f = name, t = r; *f; f++) {
 
+                if (*f == '.')
+                        dot = true;
+
                 if (*f == '/')
                         *(t++) = '-';
                 else if (!strchr("@" VALID_CHARS, *f))
@@ -506,7 +510,10 @@ char *unit_name_mangle(const char *name) {
                         *(t++) = *f;
         }
 
-        *t = 0;
+        if (!dot)
+                strcpy(t, ".service");
+        else
+                *t = 0;
 
         return r;
 }