File 0001-service-Fix-dependencies-added-when-parsing-insserv..patch of Package systemd

From 6620bceb7233a830be3635a4f7a7dc75c13a9c8e Mon Sep 17 00:00:00 2001
From: Frederic Crozat <fcrozat@suse.com>
Date: Fri, 30 Sep 2011 14:12:45 +0200
Subject: [PATCH] service: Fix dependencies added when parsing insserv.conf

---
 src/service.c |   16 +++++++++-------
 1 files changed, 9 insertions(+), 7 deletions(-)

Index: systemd-41/src/service.c
===================================================================
--- systemd-41.orig/src/service.c
+++ systemd-41/src/service.c
@@ -3210,23 +3210,30 @@ static void sysv_facility_in_insserv_con
                         Unit *u;
                         if (sysv_translate_facility(parsed[0], NULL, &facility) < 0)
                                 continue;
+                        if (streq(facility, SPECIAL_REMOTE_FS_TARGET)) {
+                                /* insert also a Wants dependency from remote-fs-pre on remote-fs */
+                                u = manager_get_unit(mgr, SPECIAL_REMOTE_FS_TARGET);
+                                unit_add_dependency_by_name(u, UNIT_WANTS, SPECIAL_REMOTE_FS_PRE_TARGET, NULL, true);
+                                free (facility);
+                                facility=strdup(SPECIAL_REMOTE_FS_PRE_TARGET);
+                        }
                         if ((u = manager_get_unit(mgr, facility)) && (u->type == UNIT_TARGET)) {
-                                UnitDependency e;
                                 char *dep = NULL, *name, **j;
 
                                 STRV_FOREACH (j, parsed+1) {
-                                        if (*j[0]=='+') {
-                                                e = UNIT_WANTS;
+                                        if (*j[0]=='+')
                                                 name = *j+1;
-                                        }
-                                        else {
-                                                e = UNIT_REQUIRES;
+                                        else
                                                 name = *j;
-                                        }
+                                        if (streq(name, "boot.localfs") ||
+                                            streq(name, "boot.crypto"))
+                                                continue;
                                         if (sysv_translate_facility(name, NULL, &dep) < 0)
                                                 continue;
 
-                                        r = unit_add_two_dependencies_by_name(u, UNIT_BEFORE, e, dep, NULL, true);
+                                        r = unit_add_dependency_by_name_inverse(u, UNIT_BEFORE, dep, NULL, true);
+                                        if (*j[0]!='+')
+                                                r = unit_add_dependency_by_name(u, UNIT_REQUIRES, dep, NULL, true);
                                         free(dep);
                                 }
                         }
openSUSE Build Service is sponsored by