]> err.no Git - dpkg/commitdiff
* Added --config option to update-alternatives to allow easy changing
authorBen Collins <bcollins@debian.org>
Sun, 17 Oct 1999 04:23:07 +0000 (04:23 +0000)
committerBen Collins <bcollins@debian.org>
Sun, 17 Oct 1999 04:23:07 +0000 (04:23 +0000)
    of the registered alternatives for a specific name

scripts/update-alternatives.8
scripts/update-alternatives.pl

index 413b69cdfb15db0b1b71797516d8c626d4889806..946b59550308e02a9538bc7b6923a2d39d08eab6 100644 (file)
@@ -31,6 +31,10 @@ update-alternatives \- maintain symbolic links determining default commands
 .RI [ options ]
 .B --display
 .I name
+.B update-alternatives
+.RI [ options ]
+.B --config
+.I name
 .SH DESCRIPTION
 .B update-alternatives
 creates, removes, maintains and displays information about the symbolic
@@ -130,6 +134,17 @@ associated with it.
 When a link group is in automatic mode,
 the alternatives pointed to by members of the group
 will be those which have the highest priority.
+.PP
+When using the
+.I --config
+option, update-alternatives will list all of the choices for the given
+alternative. You will then be prompted for which of the choices to use
+for the alternative. Once you make a change, the alternative will no
+longer be in
+.I auto
+mode. You will need to use the
+.I --auto
+option in order to return to the automatic state.
 .SH TERMINOLOGY
 Since the activities of
 .B update-alternatives
index c23ef3fef0df9751f1a917464e59e5cbbb5c7dcc..d528f779dd7b887c2d2a5e91e9d03c3004113d58 100755 (executable)
@@ -14,6 +14,7 @@ Usage: update-alternatives --install <link> <name> <path> <priority>
        update-alternatives --remove <name> <path>
        update-alternatives --auto <name>
        update-alternatives --display <name>
+       update-alternatives --config <name>
 <name> is the name in /etc/alternatives.
 <path> is the name referred to.
 <link> is the link pointing to /etc/alternatives/<name>.
@@ -64,7 +65,7 @@ while (@ARGV) {
         @ARGV >= 2 || &badusage("--remove needs <name> <path>");
         ($name,$apath,@ARGV) = @ARGV;
         $mode= 'remove';
-    } elsif (m/^--(display|auto)$/) {
+    } elsif (m/^--(display|auto|config)$/) {
         &checkmanymodes;
         @ARGV || &badusage("--$1 needs <name>");
         $mode= $1;
@@ -164,6 +165,15 @@ if ($mode eq 'display') {
     exit 0;
 }
 
+if ($mode eq 'config') {
+    if (!$dataread) {
+       &pr("No alternatives for $name.");
+    } else {
+       &config_alternatives($name);
+       exit 0;
+    }
+}
+
 $best= '';
 for ($i=0; $i<=$#versions; $i++) {
     if ($best eq '' || $priorities[$i] > $bestpri) {
@@ -435,4 +445,37 @@ sub badfmt {
 sub rename_mv {
        return (rename($_[0], $_[1]) || (system(("mv", $_[0], $_[1])) == 0));
 }
+
+sub config_message {
+    printf(STDOUT "\nYou have %s package(s) which", $#versions+1);
+    printf(STDOUT " provide the $name command:\n");
+    printf(STDOUT "  Selection    Command-Name        Command\n");
+    printf(STDOUT "-----------------------------------------------\n");
+    for ($i=0; $i<=$#versions; $i++) {
+       if (readlink("$altdir/$name") eq $versions[$i]) {
+           printf(STDOUT "*     %s            %s           %s\n", $i+1,
+               $name, $versions[$i]);
+       } else {
+               printf(STDOUT "      %s            %s           %s\n", $i+1,
+               $name, $versions[$i]);
+       }
+    }
+    printf(STDOUT "\nWhich selection to supply `$name'?\n");
+    printf(STDOUT "Or press ENTER to keep the current (*) selection.\n");
+}
+
+sub config_alternatives {
+    do {
+       &config_message;
+       $preferred=<STDIN>;
+       chop($preferred);
+    } until $preferred eq '' || ($preferred>=1 && $preferred<=$#versions+1);
+    if ($preferred ne '') {
+       system("ln -sf $versions[$preferred-1] $altdir/$name");
+       if ($?) {
+           &quit("unable to change link for alternative");
+       }
+    }
+}
+
 exit(0);