[Initscripts-ng-commits] r550 - in /trunk/src/insserv/debian/patches: 51_fakeloop_thinko-debian.dpatch 51_fakeloop_thinko.dpatch

pere at users.alioth.debian.org pere at users.alioth.debian.org
Wed Jan 23 09:30:52 UTC 2008


Author: pere
Date: Wed Jan 23 09:30:52 2008
New Revision: 550

URL: http://svn.debian.org/wsvn/initscripts-ng/?sc=1&rev=550
Log:
Next try from Werner.

Added:
    trunk/src/insserv/debian/patches/51_fakeloop_thinko-debian.dpatch
Modified:
    trunk/src/insserv/debian/patches/51_fakeloop_thinko.dpatch

Added: trunk/src/insserv/debian/patches/51_fakeloop_thinko-debian.dpatch
URL: http://svn.debian.org/wsvn/initscripts-ng/trunk/src/insserv/debian/patches/51_fakeloop_thinko-debian.dpatch?rev=550&op=file
==============================================================================
--- trunk/src/insserv/debian/patches/51_fakeloop_thinko-debian.dpatch (added)
+++ trunk/src/insserv/debian/patches/51_fakeloop_thinko-debian.dpatch Wed Jan 23 09:30:52 2008
@@ -1,0 +1,178 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## 51_fakeloop_thinko.dpatch by Petter Reinholdtsen
+
+Patch from Werner Fink to try to fix the problem with fake loops,
+adjusted by Petter Reinholdtsen to apply in the Debian patched source.
+
+ at DPATCH@
+--- insserv-1.10.0.orig/insserv.c
++++ insserv-1.10.0/insserv.c
+@@ -360,31 +360,39 @@
+     }
+ }
+ 
+-static void reversereq(const serv_t * serv, const char * token, const char * list)
++static void reversereq(const serv_t * serv, unsigned int bit, const char * list)
+ {
+     const char * dep;
+     char * rev = strdupa(list);
++    unsigned int old = bit;
+ 
+     while ((dep = strsep(&rev, delimeter)) && *dep) {
+ 	serv_t * tmp;
+ 	list_t * ptr;
+ 
++	if (!*dep)
++	    continue;
++
++	bit = old;
++
+ 	switch (*dep) {
+ 	case '+':
+ 	    dep++;
++	    bit = REQ_SHLD;
+ 	default:
+-	    if ((tmp = findserv(dep))) {
++	    if (!(tmp = findserv(dep)))
++		tmp = addserv(dep);
++	    if (tmp) {
+ 		const char * name;
+ 		if ((name = getscript(serv->name)) == (char*)0)
+-			name = serv->name;
+-		rememberreq(tmp, REQ_SHLD, name);
++		    name = serv->name;
++		rememberreq(tmp, bit, name);
+ 	    }
+-	    requiresv(dep, token);
+ 	    break;
+ 	case '$':
+ 	    list_for_each(ptr, sysfaci_start) {
+ 		if (!strcmp(dep, getfaci(ptr)->name)) {
+-		    reversereq(serv, token, getfaci(ptr)->repl);
++		    reversereq(serv, bit, getfaci(ptr)->repl);
+ 		    break;
+ 		}
+ 	    }
+@@ -1335,7 +1343,7 @@
+ 		script_inf.provides = xstrdup(ptr);
+ 
+ 	    begin = script_inf.provides;
+-	    while ((token = strsep(&script_inf.provides, delimeter)) && *token) {
++	    while ((token = strsep(&begin, delimeter)) && *token) {
+ 		serv_t * service = (serv_t*)0;
+ 		if (*token == '$') {
+ 		    warn("script %s provides system facility %s, skipped!\n", d->d_name, token);
+@@ -1351,14 +1359,12 @@
+ 		    service->opts |= SERV_NOTLSB;
+ 		if (script_inf.required_start && script_inf.required_start != empty) {
+ 		    rememberreq(service, REQ_MUST, script_inf.required_start);
+-		    requiresv(token, script_inf.required_start);
+ 		}
+ 		if (script_inf.should_start && script_inf.should_start != empty) {
+ 		    rememberreq(service, REQ_SHLD, script_inf.should_start);
+-		    requiresv(token, script_inf.should_start);
+ 		}
+ 		if (script_inf.start_before && script_inf.start_before != empty) {
+-		    reversereq(service, token, script_inf.start_before);
++		    reversereq(service, REQ_SHLD, script_inf.start_before);
+ 		}
+ #ifndef SUSE
+ 		/*
+@@ -1367,19 +1373,16 @@
+ 		 * The stop_order is given by max_order + 1 - start_order.
+ 		 */
+ 		if (script_inf.required_stop && script_inf.required_stop != empty) {
+-		    rememberreq(service, REQ_MUST, script_inf.required_stop);
+-		    requiresv(token, script_inf.required_stop);
++		    reversereq(service, REQ_MUST, script_inf.required_stop);
+ 		}
+ 		if (script_inf.should_stop && script_inf.should_stop != empty) {
+-		    rememberreq(service, REQ_SHLD, script_inf.should_stop);
+-		    requiresv(token, script_inf.should_stop);
++		    reversereq(service, REQ_SHLD, script_inf.should_stop);
+ 		}
+ 		if (script_inf.stop_after && script_inf.stop_after != empty) {
+-		    reversereq(service, token, script_inf.stop_after);
++		    rememberreq(service, REQ_SHLD, script_inf.stop_after);
+ 		}
+ #endif /* not SUSE */
+ 	    }
+-	    script_inf.provides = begin;
+ 
+ 	    xreset(script_inf.provides);
+ 	    xreset(script_inf.required_start);
+@@ -1905,7 +1908,6 @@
+ 	    serv_t *serv = addserv("single");
+ 	    makeprov("single", d->d_name);
+ 	    runlevels("single", "1 S");
+-	    requiresv("single", "kbd");
+ 	    serv->opts |= SERV_ALL;
+ 	    rememberreq(serv, REQ_SHLD, "kbd");
+ 	    continue;
+@@ -1981,7 +1983,7 @@
+ 	    char * provides = xstrdup(script_inf.provides);
+ 
+ 	    begin = provides;
+-	    while ((token = strsep(&provides, delimeter)) && *token) {
++	    while ((token = strsep(&begin, delimeter)) && *token) {
+ 
+ 		if (*token == '$') {
+ 		    warn("script %s provides system facility %s, skipped!\n", d->d_name, token);
+@@ -2016,7 +2018,7 @@
+ 		    boolean known = (service->opts & SERV_KNOWN);
+ 		    service->opts |= SERV_KNOWN;
+ 
+-		    if ((!provides || !*provides) && (count > 1)) { /* Last token */ 
++		    if ((!begin || !*begin) && (count > 1)) { /* Last token */ 
+ 			const char * script = getscript(service->name);
+ 
+ 			if (script) {
+@@ -2040,11 +2042,9 @@
+ 		    if (!known) {
+ 			if (script_inf.required_start && script_inf.required_start != empty) {
+ 			    rememberreq(service, REQ_MUST, script_inf.required_start);
+-			    requiresv(token, script_inf.required_start);
+ 			}
+ 			if (script_inf.should_start && script_inf.should_start != empty) {
+ 			    rememberreq(service, REQ_SHLD, script_inf.should_start);
+-			    requiresv(token, script_inf.should_start);
+ 			}
+ #ifndef SUSE
+ 			/*
+@@ -2053,21 +2053,21 @@
+ 			 * The stop order is given by max order - start order.
+ 			 */
+ 			if (script_inf.required_stop && script_inf.required_stop != empty) {
+-			    rememberreq(service, REQ_MUST, script_inf.required_stop);
+-			    requiresv(token, script_inf.required_stop);
++			    reversereq(service, REQ_MUST, script_inf.required_stop);
+ 			}
+ 			if (script_inf.should_stop && script_inf.should_stop != empty) {
+-			    rememberreq(service, REQ_SHLD, script_inf.should_stop);
+-			    requiresv(token, script_inf.should_stop);
++			    reversereq(service, REQ_SHLD, script_inf.should_stop);
+ 			}
+ #endif /* not SUSE */
++
+ 		    }
++
+ 		    if (script_inf.start_before && script_inf.start_before != empty) {
+-			reversereq(service, token, script_inf.start_before);
++			reversereq(service, REQ_SHLD, script_inf.start_before);
+ 		    }
+ #ifndef SUSE
+ 		    if (script_inf.stop_after && script_inf.stop_after != empty) {
+-			reversereq(service, token, script_inf.stop_after);
++			rememberreq(service, REQ_SHLD, script_inf.stop_after);
+ 		    }
+ #endif /* not SUSE */
+ 		    /*
+@@ -2161,7 +2161,7 @@
+ #endif /* not SUSE */
+ 		}
+ 	    }
+-	    free(begin);
++	    free(provides);
+ 	}
+ 
+ #ifdef SUSE

Modified: trunk/src/insserv/debian/patches/51_fakeloop_thinko.dpatch
URL: http://svn.debian.org/wsvn/initscripts-ng/trunk/src/insserv/debian/patches/51_fakeloop_thinko.dpatch?rev=550&op=diff
==============================================================================
--- trunk/src/insserv/debian/patches/51_fakeloop_thinko.dpatch (original)
+++ trunk/src/insserv/debian/patches/51_fakeloop_thinko.dpatch Wed Jan 23 09:30:52 2008
@@ -4,9 +4,55 @@
 Patch from Werner Fink to try to fix the problem with fake loops.
 
 @DPATCH@
---- insserv-1.10.0/insserv.c
-+++ insserv-1.10.0/insserv.c	2008-01-07 17:13:27.696866603 +0100
-@@ -1335,7 +1335,7 @@ static void scan_script_locations(const 
+--- insserv.c
++++ insserv.c	2008-01-21 17:48:25.413323708 +0100
+@@ -360,31 +360,39 @@ static void rememberreq(serv_t *serv, un
+     }
+ }
+ 
+-static void reversereq(const serv_t * serv, const char * token, const char * list)
++static void reversereq(const serv_t * serv, unsigned int bit, const char * list)
+ {
+     const char * dep;
+     char * rev = strdupa(list);
++    unsigned int old = bit;
+ 
+     while ((dep = strsep(&rev, delimeter)) && *dep) {
+ 	serv_t * tmp;
+ 	list_t * ptr;
+ 
++	if (!*dep)
++	    continue;
++
++	bit = old;
++
+ 	switch (*dep) {
+ 	case '+':
+ 	    dep++;
++	    bit = REQ_SHLD;
+ 	default:
+-	    if ((tmp = findserv(dep))) {
++	    if (!(tmp = findserv(dep)))
++		tmp = addserv(dep);
++	    if (tmp) {
+ 		const char * name;
+ 		if ((name = getscript(serv->name)) == (char*)0)
+-			name = serv->name;
+-		rememberreq(tmp, REQ_SHLD, name);
++		    name = serv->name;
++		rememberreq(tmp, bit, name);
+ 	    }
+-	    requiresv(dep, token);
+ 	    break;
+ 	case '$':
+ 	    list_for_each(ptr, sysfaci_start) {
+ 		if (!strcmp(dep, getfaci(ptr)->name)) {
+-		    reversereq(serv, token, getfaci(ptr)->repl);
++		    reversereq(serv, bit, getfaci(ptr)->repl);
+ 		    break;
+ 		}
+ 	    }
+@@ -1335,7 +1343,7 @@ static void scan_script_locations(const 
  		script_inf.provides = xstrdup(ptr);
  
  	    begin = script_inf.provides;
@@ -15,90 +61,60 @@
  		serv_t * service = (serv_t*)0;
  		if (*token == '$') {
  		    warn("script %s provides system facility %s, skipped!\n", d->d_name, token);
-@@ -1360,26 +1360,66 @@ static void scan_script_locations(const 
+@@ -1346,19 +1354,17 @@ static void scan_script_locations(const 
+ 		if (service->opts & SERV_KNOWN)
+ 		    continue;
+ 		service->opts |= (SERV_KNOWN|SERV_ENABLED);
+-
+ 		if (!lsb)
+ 		    service->opts |= SERV_NOTLSB;
++
+ 		if (script_inf.required_start && script_inf.required_start != empty) {
+ 		    rememberreq(service, REQ_MUST, script_inf.required_start);
+-		    requiresv(token, script_inf.required_start);
+ 		}
+ 		if (script_inf.should_start && script_inf.should_start != empty) {
+ 		    rememberreq(service, REQ_SHLD, script_inf.should_start);
+-		    requiresv(token, script_inf.should_start);
+ 		}
  		if (script_inf.start_before && script_inf.start_before != empty) {
- 		    reversereq(service, token, script_inf.start_before);
+-		    reversereq(service, token, script_inf.start_before);
++		    reversereq(service, REQ_SHLD, script_inf.start_before);
  		}
-+	    }
  #ifndef SUSE
--		/*
--		 * required_stop and should_stop arn't used in SuSE Linux.
--		 * Note: Sorting is done symetrical in stop and start!
--		 * The stop_order is given by max_order + 1 - start_order.
--		 */
--		if (script_inf.required_stop && script_inf.required_stop != empty) {
+ 		/*
+@@ -1367,19 +1373,16 @@ static void scan_script_locations(const 
+ 		 * The stop_order is given by max_order + 1 - start_order.
+ 		 */
+ 		if (script_inf.required_stop && script_inf.required_stop != empty) {
 -		    rememberreq(service, REQ_MUST, script_inf.required_stop);
 -		    requiresv(token, script_inf.required_stop);
--		}
--		if (script_inf.should_stop && script_inf.should_stop != empty) {
++		    reversereq(service, REQ_MUST, script_inf.required_stop);
+ 		}
+ 		if (script_inf.should_stop && script_inf.should_stop != empty) {
 -		    rememberreq(service, REQ_SHLD, script_inf.should_stop);
 -		    requiresv(token, script_inf.should_stop);
-+	    /*
-+	     * required_stop and should_stop arn't used in SuSE Linux.
-+	     * Note: Sorting is done symetrical in stop and start!
-+	     * The stop_order is given by max_order + 1 - start_order.
-+	     */
-+	    begin = script_inf.required_stop;
-+	    while ((token = strsep(&begin, delimeter)) && *token) {
-+		serv_t * service = (serv_t*)0;
-+		if (*token == '$') {
-+		    warn("script %s provides system facility %s, skipped!\n", d->d_name, token);
-+		    continue;
++		    reversereq(service, REQ_SHLD, script_inf.should_stop);
  		}
--		if (script_inf.stop_after && script_inf.stop_after != empty) {
+ 		if (script_inf.stop_after && script_inf.stop_after != empty) {
 -		    reversereq(service, token, script_inf.stop_after);
-+		if (!(service = findserv(token)))
-+		    service = addserv(token);
-+		if (!service)
-+		    continue;
-+
-+		if (script_inf.provides && script_inf.provides != empty) {
-+		    rememberreq(service, REQ_MUST, script_inf.provides);
-+		    requiresv(token, script_inf.provides);
++		    rememberreq(service, REQ_SHLD, script_inf.stop_after);
  		}
--#endif /* not SUSE */
+ #endif /* not SUSE */
  	    }
 -	    script_inf.provides = begin;
-+
-+	    begin = script_inf.required_stop;
-+	    while ((token = strsep(&begin, delimeter)) && *token) {
-+		serv_t * service = (serv_t*)0;
-+		if (*token == '$') {
-+		    warn("script %s provides system facility %s, skipped!\n", d->d_name, token);
-+		    continue;
-+		}
-+		if (!(service = findserv(token)))
-+		    service = addserv(token);
-+		if (!service)
-+		    continue;
-+
-+		if (script_inf.provides && script_inf.provides != empty) {
-+		    rememberreq(service, REQ_SHLD, script_inf.provides);
-+		    requiresv(token, script_inf.provides);
-+		}
-+	    }
-+
-+	    begin = script_inf.stop_after;
-+	    while ((token = strsep(&begin, delimeter)) && *token) {
-+		serv_t * service = (serv_t*)0;
-+		if (*token == '$') {
-+		    warn("script %s provides system facility %s, skipped!\n", d->d_name, token);
-+		    continue;
-+		}
-+		if (!(service = findserv(token)))
-+		    service = addserv(token);
-+		if (!service)
-+		    continue;
-+
-+		if (script_inf.provides && script_inf.provides != empty) {
-+		    reversereq(service, token, script_inf.provides);
-+		}
-+	    }
-+#endif /* not SUSE */
  
  	    xreset(script_inf.provides);
  	    xreset(script_inf.required_start);
-@@ -1981,7 +2021,7 @@ int main (int argc, char *argv[])
+@@ -1905,7 +1908,6 @@ int main (int argc, char *argv[])
+ 	    serv_t *serv = addserv("single");
+ 	    makeprov("single", d->d_name);
+ 	    runlevels("single", "1 S");
+-	    requiresv("single", "kbd");
+ 	    serv->opts |= SERV_ALL;
+ 	    rememberreq(serv, REQ_SHLD, "kbd");
+ 	    continue;
+@@ -1981,7 +1983,7 @@ int main (int argc, char *argv[])
  	    char * provides = xstrdup(script_inf.provides);
  
  	    begin = provides;
@@ -107,7 +123,7 @@
  
  		if (*token == '$') {
  		    warn("script %s provides system facility %s, skipped!\n", d->d_name, token);
-@@ -2016,7 +2056,7 @@ int main (int argc, char *argv[])
+@@ -2016,7 +2018,7 @@ int main (int argc, char *argv[])
  		    boolean known = (service->opts & SERV_KNOWN);
  		    service->opts |= SERV_KNOWN;
  
@@ -116,103 +132,51 @@
  			const char * script = getscript(service->name);
  
  			if (script) {
-@@ -2046,30 +2086,12 @@ int main (int argc, char *argv[])
+@@ -2040,11 +2042,9 @@ int main (int argc, char *argv[])
+ 		    if (!known) {
+ 			if (script_inf.required_start && script_inf.required_start != empty) {
+ 			    rememberreq(service, REQ_MUST, script_inf.required_start);
+-			    requiresv(token, script_inf.required_start);
+ 			}
+ 			if (script_inf.should_start && script_inf.should_start != empty) {
  			    rememberreq(service, REQ_SHLD, script_inf.should_start);
- 			    requiresv(token, script_inf.should_start);
+-			    requiresv(token, script_inf.should_start);
  			}
--#ifndef SUSE
--			/*
--			 * required_stop and should_stop arn't used in SuSE Linux.
--			 * Note: Sorting is done symetrical in stop and start!
--			 * The stop order is given by max order - start order.
--			 */
--			if (script_inf.required_stop && script_inf.required_stop != empty) {
+ #ifndef SUSE
+ 			/*
+@@ -2053,21 +2053,21 @@ int main (int argc, char *argv[])
+ 			 * The stop order is given by max order - start order.
+ 			 */
+ 			if (script_inf.required_stop && script_inf.required_stop != empty) {
 -			    rememberreq(service, REQ_MUST, script_inf.required_stop);
 -			    requiresv(token, script_inf.required_stop);
--			}
--			if (script_inf.should_stop && script_inf.should_stop != empty) {
++			    reversereq(service, REQ_MUST, script_inf.required_stop);
+ 			}
+ 			if (script_inf.should_stop && script_inf.should_stop != empty) {
 -			    rememberreq(service, REQ_SHLD, script_inf.should_stop);
 -			    requiresv(token, script_inf.should_stop);
--			}
--#endif /* not SUSE */
++			    reversereq(service, REQ_SHLD, script_inf.should_stop);
+ 			}
+ #endif /* not SUSE */
++
  		    }
 +
  		    if (script_inf.start_before && script_inf.start_before != empty) {
- 			reversereq(service, token, script_inf.start_before);
+-			reversereq(service, token, script_inf.start_before);
++			reversereq(service, REQ_SHLD, script_inf.start_before);
  		    }
--#ifndef SUSE
--		    if (script_inf.stop_after && script_inf.stop_after != empty) {
+ #ifndef SUSE
+ 		    if (script_inf.stop_after && script_inf.stop_after != empty) {
 -			reversereq(service, token, script_inf.stop_after);
--		    }
--#endif /* not SUSE */
-+
++			rememberreq(service, REQ_SHLD, script_inf.stop_after);
+ 		    }
+ #endif /* not SUSE */
  		    /*
- 		     * Use information from symbolic link structure to
- 		     * check if all services are around for this script.
-@@ -2161,7 +2183,66 @@ int main (int argc, char *argv[])
+@@ -2161,7 +2161,7 @@ int main (int argc, char *argv[])
  #endif /* not SUSE */
  		}
  	    }
 -	    free(begin);
-+#ifndef SUSE
-+	    /*
-+	     * required_stop and should_stop arn't used in SuSE Linux.
-+	     * Note: Sorting is done symetrical in stop and start!
-+	     * The stop order is given by max order - start order.
-+	     */
-+	    begin = script_inf.required_stop;
-+	    while ((token = strsep(&begin, delimeter)) && *token) {
-+		serv_t * this = (serv_t*)0;
-+		if (*token == '$') {
-+		    warn("script %s provides system facility %s, skipped!\n", d->d_name, token);
-+		    continue;
-+		}
-+		if (!(this = findserv(token)))
-+		    this = addserv(token);
-+		if (!this)
-+		    continue;
-+
-+		if (provides && provides != empty) {
-+		    rememberreq(this, REQ_MUST, provides);
-+		    requiresv(token, provides);
-+		}
-+	    }
-+
-+	    begin = script_inf.should_stop;
-+	    while ((token = strsep(&begin, delimeter)) && *token) {
-+		serv_t * this = (serv_t*)0;
-+		if (*token == '$') {
-+		    warn("script %s provides system facility %s, skipped!\n", d->d_name, token);
-+		    continue;
-+		}
-+		if (!(this = findserv(token)))
-+		    this = addserv(token);
-+		if (!this)
-+		    continue;
-+
-+		if (provides && provides != empty) {
-+		    rememberreq(this, REQ_SHLD, provides);
-+		    requiresv(token, provides);
-+		}
-+	    }
-+
-+	    begin = script_inf.stop_after;
-+	    while ((token = strsep(&begin, delimeter)) && *token) {
-+		serv_t * this = (serv_t*)0;
-+		if (*token == '$') {
-+		    warn("script %s provides system facility %s, skipped!\n", d->d_name, token);
-+		    continue;
-+		}
-+		if (!(this = findserv(token)))
-+		    this = addserv(token);
-+		if (!this)
-+		    continue;
-+
-+		if (provides && provides != empty) {
-+		    reversereq(this, token, provides);
-+		}
-+	    }
-+#endif /* not SUSE */
 +	    free(provides);
  	}
  




More information about the Initscripts-ng-commits mailing list