chiark / gitweb /
service: ifdef (more) distro-specific compat logic
authorMichael Biebl <biebl@debian.org>
Mon, 27 Dec 2010 17:41:54 +0000 (18:41 +0100)
committerMichael Biebl <biebl@debian.org>
Mon, 27 Dec 2010 17:44:42 +0000 (18:44 +0100)
This should make it easier to get rid of that compat code later and
avoids problems like stripping of rc. from /etc/init.d/rc.local on
Debian.

src/service.c

index ca0db8e7f181e06b5a8bdf65656d67e0c3a46b4b..9f2ee4192fff506d099539a8b450ca4e1fa9351d 100644 (file)
@@ -237,19 +237,23 @@ static char *sysv_translate_name(const char *name) {
         if (!(r = new(char, strlen(name) + sizeof(".service"))))
                 return NULL;
 
+#if defined(TARGET_DEBIAN) || defined(TARGET_UBUNTU)
+        if (endswith(name, ".sh"))
+                /* Drop Debian-style .sh suffix */
+                strcpy(stpcpy(r, name) - 3, ".service");
+#endif
+#ifdef TARGET_SUSE
         if (startswith(name, "boot."))
                 /* Drop SuSE-style boot. prefix */
                 strcpy(stpcpy(r, name + 5), ".service");
-        else if (endswith(name, ".sh"))
-                /* Drop Debian-style .sh suffix */
-                strcpy(stpcpy(r, name) - 3, ".service");
+#endif
 #ifdef TARGET_ARCH
-        else if (startswith(name, "@"))
+        if (startswith(name, "@"))
                 /* Drop Arch-style background prefix */
                 strcpy(stpcpy(r, name + 1), ".service");
 #endif
 #ifdef TARGET_FRUGALWARE
-        else if (startswith(name, "rc."))
+        if (startswith(name, "rc."))
                 /* Drop Frugalware-style rc. prefix */
                 strcpy(stpcpy(r, name + 3), ".service");
 #endif
@@ -857,10 +861,20 @@ static int service_load_sysv_name(Service *s, const char *name) {
 
         /* For SysV services we strip the boot.*, rc.* and *.sh
          * prefixes/suffixes. */
-        if (startswith(name, "boot.") ||
-            startswith(name, "rc.") ||
-            endswith(name, ".sh.service"))
+#if defined(TARGET_DEBIAN) || defined(TARGET_UBUNTU)
+        if (endswith(name, ".sh.service"))
                 return -ENOENT;
+#endif
+
+#ifdef TARGET_SUSE
+        if (startswith(name, "boot."))
+                return -ENOENT;
+#endif
+
+#ifdef TARGET_FRUGALWARE
+        if (startswith(name, "rc."))
+                return -ENOENT;
+#endif
 
         STRV_FOREACH(p, s->meta.manager->lookup_paths.sysvinit_path) {
                 char *path;