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 '.');
     }
---

_______________________________________________
initscripts-ng-devel mailing list
[email protected]
http://lists.alioth.debian.org/mailman/listinfo/initscripts-ng-devel

Reply via email to