chiark / gitweb /
rules: simplify mmc RPMB handling
[elogind.git] / src / sysv-generator / sysv-generator.c
index 662d08cccb2542b455dfe7902395cfd28eaad78d..6e39b449eb7902e7de97da8d94beec2ef9f06f89 100644 (file)
@@ -119,11 +119,6 @@ static int add_alias(const char *service, const char *alias) {
         assert(service);
         assert(alias);
 
-        if (streq(service, alias)) {
-                log_error("Ignoring creation of an alias %s for itself", service);
-                return 0;
-        }
-
         link = strjoin(arg_dest, "/", alias, NULL);
         if (!link)
                 return log_oom();
@@ -300,8 +295,10 @@ 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_no_sh, ".sh");
-        if (e)
+        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. */
@@ -312,13 +309,12 @@ 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_no_sh))
+        } else if (streq_ptr(n, filename))
                 /* Names equaling the file name of the services are redundant */
                 return 0;
         else
                 /* Everything else we assume to be normal service names */
                 r = sysv_translate_name(n);
-
         if (!r)
                 return -ENOMEM;
 
@@ -772,6 +768,11 @@ static int enumerate_sysv(LookupPaths lp, Hashmap *all_services) {
                         if (!fpath)
                                 return log_oom();
 
+                        if (unit_file_get_state(UNIT_FILE_SYSTEM, NULL, name) >= 0) {
+                                log_debug("Native unit for %s already exists, skipping", name);
+                                continue;
+                        }
+
                         service = new0(SysvStub, 1);
                         if (!service)
                                 return log_oom();
@@ -856,7 +857,8 @@ static int set_dependencies_from_rcnd(LookupPaths lp, Hashmap *all_services) {
 
                                 service = hashmap_get(all_services, name);
                                 if (!service){
-                                        log_warning("Could not find init script for %s", name);
+                                        log_debug("Ignoring %s symlink in %s, not generating %s.",
+                                                  de->d_name, rcnd_table[i].path, name);
                                         continue;
                                 }