[PATCH 2/4] update-rc.d: modify internal functions to accept local arguments
Kel Modderman
kel at otaku42.de
Thu Sep 18 08:50:41 UTC 2008
Modify defaults and startstop functions to operate on local args rather than
global script args.
This allows the functions to be reused internally with specific arguments.
---
--- a/debian/sysv-rc/sbin/update-rc.d
+++ b/debian/sysv-rc/sbin/update-rc.d
@@ -75,8 +75,8 @@
$_ = $ARGV[0];
if (/^remove$/) { &checklinks ("remove"); }
-elsif (/^defaults$/) { &defaults; &makelinks }
-elsif (/^(start|stop)$/) { &startstop; &makelinks; }
+elsif (/^defaults$/) { &defaults (@ARGV); &makelinks; }
+elsif (/^(start|stop)$/) { &startstop (@ARGV); &makelinks; }
else { &usage; }
exit (0);
@@ -171,11 +171,12 @@
# Process the arguments after the "defaults" keyword.
sub defaults {
+ my @argv = @_;
my ($start, $stop) = (20, 20);
- &usage ("defaults takes only one or two codenumbers") if ($#ARGV > 2);
- $start = $stop = $ARGV[1] if ($#ARGV >= 1);
- $stop = $ARGV[2] if ($#ARGV >= 2);
+ &usage ("defaults takes only one or two codenumbers") if ($#argv > 2);
+ $start = $stop = $argv[1] if ($#argv >= 1);
+ $stop = $argv[2] if ($#argv >= 2);
&usage ("codenumber must be a number between 0 and 99")
if ($start !~ /^\d\d?$/ || $stop !~ /^\d\d?$/);
@@ -191,23 +192,23 @@
# Process the arguments after the start or stop keyword.
sub startstop {
-
+ my @argv = @_;
my($letter, $NN, $level);
- while ($#ARGV >= 0) {
- if ($ARGV[0] eq 'start') { $letter = 'S'; }
- elsif ($ARGV[0] eq 'stop') { $letter = 'K' }
+ while ($#argv >= 0) {
+ if ($argv[0] eq 'start') { $letter = 'S'; }
+ elsif ($argv[0] eq 'stop') { $letter = 'K'; }
else {
&usage("expected start|stop");
}
- if ($ARGV[1] !~ /^\d\d?$/) {
- &usage("expected NN after $ARGV[0]");
+ if ($argv[1] !~ /^\d\d?$/) {
+ &usage("expected NN after $argv[0]");
}
- $NN = sprintf("%02d", $ARGV[1]);
+ $NN = sprintf("%02d", $argv[1]);
- shift @ARGV; shift @ARGV;
- $level = shift @ARGV;
+ shift @argv; shift @argv;
+ $level = shift @argv;
do {
if ($level !~ m/^[0-9S]$/) {
&usage(
@@ -221,7 +222,7 @@
$level = 99 if ($level eq 'S');
$startlinks[$level] = "$letter$NN" if ($letter eq 'S');
$stoplinks[$level] = "$letter$NN" if ($letter eq 'K');
- } while (($level = shift @ARGV) ne '.');
+ } while (($level = shift @argv) ne '.');
&usage("action with list of runlevels not terminated by \`.'")
if ($level ne '.');
}
---
More information about the initscripts-ng-devel
mailing list