# Hack in support for an "exclude" config option for the init module, so
# we can hide certain system services that shouldn't really be configurable
# via the web interface
#
# Upstream-status: Pending
#
# Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
# Signed-off-by: Jackie Huang <jackie.huang@windriver.com>
---
 init/index.cgi   | 27 ++++++++++++++-------------
 init/init-lib.pl |  5 +++--
 2 files changed, 17 insertions(+), 15 deletions(-)

Index: webmin-1.850/init/index.cgi
===================================================================
--- webmin-1.850.orig/init/index.cgi
+++ webmin-1.850/init/index.cgi
@@ -45,19 +45,20 @@ elsif ($init_mode eq "init" && $access{'
 					     : "$config{'init_dir'}/$ac[0]");
 		}
 	@runlevels = &list_runlevels();
-	foreach $r (@runlevels) {
-		foreach $w ("S", "K") {
-			foreach $a (&runlevel_actions($r, $w)) {
-				@ac = split(/\s+/, $a);
-				if (!$nodemap{$ac[2]}) {
-					push(@acts, $ac[1]);
-					push(@actsl,
-					     "1+$r+$ac[0]+$ac[1]+$ac[2]+$w");
-					push(@actsf, "$config{'init_base'}/rc$r.d/$w$ac[0]$ac[1]");
-					}
-				}
-			}
-		}
+	# Assume there won't be any of these broken actions
+	#foreach $r (@runlevels) {
+	#	foreach $w ("S", "K") {
+	#		foreach $a (&runlevel_actions($r, $w)) {
+	#			@ac = split(/\s+/, $a);
+	#			if (!$nodemap{$ac[2]}) {
+	#				push(@acts, $ac[1]);
+	#				push(@actsl,
+	#				     "1+$r+$ac[0]+$ac[1]+$ac[2]+$w");
+	#				push(@actsf, "$config{'init_base'}/rc$r.d/$w$ac[0]$ac[1]");
+	#				}
+	#			}
+	#		}
+	#	}
 
 	# For each action, look at /etc/rc*.d/* files to see if it is 
 	# started at boot
Index: webmin-1.850/init/init-lib.pl
===================================================================
--- webmin-1.850.orig/init/init-lib.pl
+++ webmin-1.850/init/init-lib.pl
@@ -124,8 +124,9 @@ List boot time action names from init.d,
 =cut
 sub list_actions
 {
-local($dir, $f, @stbuf, @rv);
+local($dir, $f, @stbuf, @rv, @exclude);
 $dir = $config{init_dir};
+@exclude = split(/,/, $config{exclude});
 opendir(DIR, $dir);
 foreach $f (sort { lc($a) cmp lc($b) } readdir(DIR)) {
 	if ($f eq "." || $f eq ".." || $f =~ /\.bak$/ || $f eq "functions" ||
@@ -133,7 +134,7 @@ foreach $f (sort { lc($a) cmp lc($b) } r
 	    -d "$dir/$f" || $f =~ /\.swp$/ || $f eq "skeleton" ||
 	    $f =~ /\.lock$/ || $f =~ /\.dpkg-(old|dist)$/ ||
 	    $f =~ /^\.depend\./ || $f eq '.legacy-bootordering' ||
-	    $f =~ /^mandrake/) { next; }
+	    $f =~ /^mandrake/ || grep {$_ eq $f} @exclude ) { next; }
 	if (@stbuf = stat("$dir/$f")) {
 		push(@rv, "$f $stbuf[1]");
 		}
