chiark / gitweb /
sysv-generator: Re-fix .sh suffix handling
authorMartin Pitt <martin.pitt@ubuntu.com>
Wed, 28 Jan 2015 07:00:28 +0000 (08:00 +0100)
committerMartin Pitt <martin.pitt@ubuntu.com>
Wed, 28 Jan 2015 07:00:28 +0000 (08:00 +0100)
Commit 4e48855534 caused the .sh suffix to be stripped from the original
"filename", which caused the generated units to call the wrong init.d script.
Only use the .sh stripped file name for comparing with Provides:, not for
generating the Exec*= lines.

Spotted by sysv-generator-test.

src/sysv-generator/sysv-generator.c

index 09ade0dc3a308c4557f484e03a8cb7f2087f30d7..662d08cccb2542b455dfe7902395cfd28eaad78d 100644 (file)
@@ -299,11 +299,9 @@ static int sysv_translate_facility(const char *name, const char *filename, char
 
         /* strip ".sh" suffix from file name for comparison */
         filename_no_sh = strdupa(filename);
-        e = endswith(filename, ".sh");
-        if (e) {
+        e = endswith(filename_no_sh, ".sh");
+        if (e)
                 *e = '\0';
-                filename = filename_no_sh;
-        }
 
         /* If we don't know this name, fallback heuristics to figure
          * out whether something is a target or a service alias. */
@@ -314,7 +312,7 @@ static int sysv_translate_facility(const char *name, const char *filename, char
 
                 /* Facilities starting with $ are most likely targets */
                 r = unit_name_build(n, NULL, ".target");
-        } else if (filename && streq(name, filename))
+        } else if (filename && streq(name, filename_no_sh))
                 /* Names equaling the file name of the services are redundant */
                 return 0;
         else