File update-alternatives-suse.patch of Package update-alternatives
--- update-alternatives.pl
+++ update-alternatives.pl
@@ -4,10 +4,36 @@
use warnings;
use POSIX qw(:errno_h);
-use Dpkg;
-use Dpkg::Gettext;
+# use Dpkg;
+our ($progname) = $0 =~ m#(?:.*/)?([^/]*)#;
+our $version = "1.14";
+our $admindir = "/var/lib/rpm";
+#use Dpkg::Gettext;
+eval 'use Locale::gettext';
+if ($@) {
+ eval q{
+ sub _g {
+ return shift;
+ }
+ sub textdomain {
+ }
+ sub ngettext {
+ if ($_[2] == 1) {
+ return $_[0];
+ } else {
+ return $_[1];
+ }
+ }
+ };
+} else {
+ eval q{
+ sub _g {
+ return gettext(shift);
+ }
+ };
+}
-textdomain("dpkg");
+textdomain("rpm");
# Global variables:
@@ -54,7 +80,7 @@
my %slavelinkcount;
sub version {
- printf _g("Debian %s version %s.\n"), $progname, $version;
+ printf _g("SUSE %s version %s.\n"), $progname, $version;
printf _g("
Copyright (C) 1995 Ian Jackson.
@@ -133,7 +159,7 @@
}
while (($version = gl("version")) ne '') {
defined($versionnum{$version}) && badfmt(sprintf(_g("duplicate path %s"), $version));
- if (-r $version) {
+ if (-r $version || $mode eq 'remove' && $apath eq $version) {
push(@versions, $version);
my $i;
$versionnum{$version} = $i = $#versions;
@@ -231,9 +257,9 @@
if $verbosemode > 0;
} elsif (!defined($linkname) ||
(defined($linkname) && $linkname ne "$altdir/$name")) {
- checked_rm("$link.dpkg-tmp");
- checked_symlink("$altdir/$name", "$link.dpkg-tmp");
- checked_mv("$link.dpkg-tmp", $link);
+ checked_rm("$link.rpm-tmp");
+ checked_symlink("$altdir/$name", "$link.rpm-tmp");
+ checked_mv("$link.rpm-tmp", $link);
}
$linkname = readlink("$altdir/$name");
if (defined($linkname) && $linkname eq $path) {
@@ -250,8 +276,8 @@
my ($spath, $preferred) = (@_);
printf STDOUT _g("Using '%s' to provide '%s'.") . "\n", $spath, $name;
- checked_symlink("$spath","$altdir/$name.dpkg-tmp");
- checked_mv("$altdir/$name.dpkg-tmp", "$altdir/$name");
+ checked_symlink("$spath","$altdir/$name.rpm-tmp");
+ checked_mv("$altdir/$name.rpm-tmp", "$altdir/$name");
# Link slaves...
for (my $slnum = 0; $slnum < @slavenames; $slnum++) {
@@ -260,8 +286,8 @@
checked_alternative($slave, $slavelinks[$slnum],
$slavepath{$preferred, $slnum});
checked_symlink($slavepath{$preferred, $slnum},
- "$altdir/$slave.dpkg-tmp");
- checked_mv("$altdir/$slave.dpkg-tmp", "$altdir/$slave");
+ "$altdir/$slave.rpm-tmp");
+ checked_mv("$altdir/$slave.rpm-tmp", "$altdir/$slave");
} else {
pr(sprintf(_g("Removing %s (%s), not appropriate with %s."), $slave,
$slavelinks[$slnum], $versions[$preferred]))
@@ -389,7 +415,7 @@
if (defined($linkname= readlink("$altdir/$name"))) {
if ($linkname eq $best) {
$state= 'expected';
- } elsif (defined(readlink("$altdir/$name.dpkg-tmp"))) {
+ } elsif (defined(readlink("$altdir/$name.rpm-tmp"))) {
$state= 'expected-inprogress';
} else {
$state= 'unexpected';
@@ -409,7 +435,7 @@
if ($action eq 'auto') {
&pr(sprintf(_g("Setting up automatic selection of %s."), $name))
if $verbosemode > 0;
- checked_rm("$altdir/$name.dpkg-tmp");
+ checked_rm("$altdir/$name.rpm-tmp");
checked_rm("$altdir/$name");
$state= 'nonexistent';
$mode = 'auto';
@@ -547,7 +573,7 @@
} else {
if ($state eq 'expected-inprogress') {
&pr(sprintf(_g("Recovering from previous failed update of %s ..."), $name));
- checked_mv("$altdir/$name.dpkg-tmp", "$altdir/$name");
+ checked_mv("$altdir/$name.rpm-tmp", "$altdir/$name");
$state= 'expected';
}
}
@@ -559,8 +585,8 @@
# state=unexpected => mode=manual
# mode=auto => state!=expected-inprogress && state!=unexpected
-open(AF,">$admindir/$name.dpkg-new") ||
- &quit(sprintf(_g("unable to open %s for write: %s"), "$admindir/$name.dpkg-new", $!));
+open(AF,">$admindir/$name.rpm-new") ||
+ &quit(sprintf(_g("unable to open %s for write: %s"), "$admindir/$name.rpm-new", $!));
paf($mode);
&paf($link);
for (my $j = 0; $j <= $#slavenames; $j++) {
@@ -579,7 +605,7 @@
}
}
&paf('');
-close(AF) || &quit(sprintf(_g("unable to close %s: %s"), "$admindir/$name.dpkg-new", $!));
+close(AF) || &quit(sprintf(_g("unable to close %s: %s"), "$admindir/$name.rpm-new", $!));
if ($mode eq 'auto') {
if ($best eq '') {
@@ -587,25 +613,25 @@
if $verbosemode > 0;
checked_rm("$altdir/$name");
checked_rm("$link");
- checked_rm("$admindir/$name.dpkg-new");
+ checked_rm("$admindir/$name.rpm-new");
checked_rm("$admindir/$name");
exit(0);
} else {
checked_alternative($name, $link, $best);
- checked_rm("$altdir/$name.dpkg-tmp");
- symlink($best,"$altdir/$name.dpkg-tmp");
+ checked_rm("$altdir/$name.rpm-tmp");
+ symlink($best,"$altdir/$name.rpm-tmp");
}
}
-checked_mv("$admindir/$name.dpkg-new", "$admindir/$name");
+checked_mv("$admindir/$name.rpm-new", "$admindir/$name");
if ($mode eq 'auto') {
- checked_mv("$altdir/$name.dpkg-tmp", "$altdir/$name");
+ checked_mv("$altdir/$name.rpm-tmp", "$altdir/$name");
for (my $j = 0; $j <= $#slavenames; $j++) {
$sname= $slavenames[$j];
$slink= $slavelinks[$j];
$spath= $slavepath{$bestnum,$j};
- checked_rm("$altdir/$sname.dpkg-tmp");
+ checked_rm("$altdir/$sname.rpm-tmp");
if ($spath eq '') {
&pr(sprintf(_g("Removing %s (%s), not appropriate with %s."), $sname, $slink, $best))
if $verbosemode > 0;
@@ -613,8 +639,8 @@
checked_rm("$slink");
} else {
checked_alternative($sname, $slink, $spath);
- checked_symlink("$spath", "$altdir/$sname.dpkg-tmp");
- checked_mv("$altdir/$sname.dpkg-tmp", "$altdir/$sname");
+ checked_symlink("$spath", "$altdir/$sname.rpm-tmp");
+ checked_mv("$altdir/$sname.rpm-tmp", "$altdir/$sname");
}
}
}