Hello community, here is the log from the commit of package insserv checked in at Sat Sep 13 02:25:01 CEST 2008. -------- --- insserv/insserv.changes 2008-08-12 13:41:02.000000000 +0200 +++ insserv/insserv.changes 2008-09-12 12:34:07.870083000 +0200 @@ -1,0 +2,12 @@ +Fri Sep 12 12:33:29 CEST 2008 - werner@suse.de + +- Don't be fooled by broken symlinks (Patch from Kel Modderman) + +------------------------------------------------------------------- +Thu Sep 11 15:28:29 CEST 2008 - werner@suse.de + +- Load first script in argument list before all other scripts. This + avoids problems with loading scripts in underterministic sequence + returned by readdir(3) (Patch from Kel Modderman) + +------------------------------------------------------------------- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ insserv.spec ++++++ --- /var/tmp/diff_new_pack.X14296/_old 2008-09-13 02:22:59.000000000 +0200 +++ /var/tmp/diff_new_pack.X14296/_new 2008-09-13 02:22:59.000000000 +0200 @@ -24,7 +24,7 @@ Provides: aaa_base:/sbin/insserv AutoReqProv: on Version: 1.12.0 -Release: 7 +Release: 18 Summary: A Program to Arrange Initialization Scripts Source0: insserv-%{version}.tar.bz2 Source1: insserv.conf @@ -67,6 +67,12 @@ %dir %{_datadir}/insserv/overrides %changelog +* Fri Sep 12 2008 werner@suse.de +- Don't be fooled by broken symlinks (Patch from Kel Modderman) +* Thu Sep 11 2008 werner@suse.de +- Load first script in argument list before all other scripts. This + avoids problems with loading scripts in underterministic sequence + returned by readdir(3) (Patch from Kel Modderman) * Tue Aug 12 2008 werner@suse.de - Mention the $null facility * Tue Jul 29 2008 werner@suse.de ++++++ insserv-1.12.0.dif ++++++ --- /var/tmp/diff_new_pack.X14296/_old 2008-09-13 02:22:59.000000000 +0200 +++ /var/tmp/diff_new_pack.X14296/_new 2008-09-13 02:22:59.000000000 +0200 @@ -1,5 +1,5 @@ --- insserv.8.in -+++ insserv.8.in 2008-08-12 15:03:04.628184977 +0200 ++++ insserv.8.in 2008-08-12 15:03:04.628184000 +0200 @@ -195,7 +195,7 @@ Here is an example for # System logger is operational $syslog syslog @@ -42,7 +42,7 @@ .SH EXIT CODES The exit codes have the following conditions: --- insserv.c -+++ insserv.c 2008-07-31 18:08:21.737684000 +0200 ++++ insserv.c 2008-09-12 12:33:05.868217615 +0200 @@ -290,6 +290,8 @@ static void rememberreq(service_t * rest requires(here, need, type); break; @@ -52,7 +52,38 @@ if (strcasecmp(token, "$all") == 0) { serv->attr.flags |= SERV_ALL; break; -@@ -2357,7 +2359,19 @@ int main (int argc, char *argv[]) +@@ -1696,6 +1698,11 @@ static void scan_script_locations(const + } + + lsb = scan_script_defaults(dfd, d->d_name, override_path, &name, true, ignore); ++ if (!name) { ++ warn("warning: script is corrupt or invalid: %s/%s%s\n", path, rcd, d->d_name); ++ continue; ++ } ++ + if (!script_inf.provides || script_inf.provides == empty) + script_inf.provides = xstrdup(ptr); + +@@ -2238,6 +2245,7 @@ int main (int argc, char *argv[]) + boolean del = false; + boolean defaults = false; + boolean ignore = false; ++ boolean loadarg = false; + + myname = basename(*argv); + +@@ -2305,7 +2313,9 @@ int main (int argc, char *argv[]) + argv += optind; + argc -= optind; + +- if (!argc && del) ++ if (argc) ++ loadarg = true; ++ else if (del) + error("usage: %s [[-r] init_script|init_directory]\n", myname); + + if (*argv) { +@@ -2357,7 +2367,19 @@ int main (int argc, char *argv[]) if (strcmp(path, INITDIR) != 0) { char * tmp; @@ -73,3 +104,51 @@ if ((tmp = strstr(root, INITDIR))) { *tmp = '\0'; } else { +@@ -2490,17 +2512,45 @@ int main (int argc, char *argv[]) + /* + * Scan now all scripts found in the init.d/ directory + */ +- while ((d = readdir(initdir)) != (struct dirent*)0) { +- const boolean isarg = chkfor(d->d_name, argv, argc); ++ for (;;) { + service_t * service = (service_t*)0; + char * token; + char * begin = (char*)0; /* hold start pointer of strings handled by strsep() */ + boolean hard = false; ++ boolean isarg = false; + uchar lsb = 0; + #if defined(DEBUG) && (DEBUG > 0) + int nobug = 0; + #endif + ++ if ((d = readdir(initdir)) == (struct dirent*)0) { ++ /* ++ * If first script in argument list was loaded in advance, then ++ * rewind the init.d/ directory stream and attempt to load all ++ * other scripts. ++ */ ++ if (loadarg) { ++ loadarg = false; ++ rewinddir(initdir); ++ continue; ++ } ++ break; ++ } ++ ++ isarg = chkfor(d->d_name, argv, argc); ++ ++ /* ++ * Load first script in argument list before all other scripts. This ++ * avoids problems with loading scripts in underterministic sequence ++ * returned by readdir(3). ++ */ ++ if (loadarg && !isarg) ++ continue; ++ if (loadarg && isarg && (curr_argc != 0)) ++ continue; ++ if (!loadarg && isarg && (curr_argc == 0)) ++ continue; ++ + if (*d->d_name == '.') + continue; + errno = 0; ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Remember to have fun... --------------------------------------------------------------------- To unsubscribe, e-mail: opensuse-commit+unsubscribe@opensuse.org For additional commands, e-mail: opensuse-commit+help@opensuse.org