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");
         }
     }
 }
openSUSE Build Service is sponsored by