[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#273407: [PATCH] patch for update-alternatives error handling



I looked closer at the source and all test of the error value are made
against $! instead of $|.
This patch fix all occurences i found in update-alternatives and restore
file openings error messages. 
That had nothing in termn of functionality. I hope users won't be
disturbed by those new errors .

One last note . This patch may cause some postinstall script getting
broken , as before all those test on file returned 0 in case of failure.
That s an ABI change whihc may have to be discussed a bit on devel
before commit.

I don t want to have something to do with a new flood of RC bugs for a
known issue ...



I mistakenly sended those two paragraphs to 246906 (god knows why) and
cannot find how to moved them back to this bug.
If someone can please help.


I also found another perl scripts in dpkg which have the same error
"dpkg-divert". I ll retag this bug as normal and retitle it.

I guess i will have time to patch the other scripts tomorrow.

Regards
Alban

--- update-alternatives.orig	2005-01-20 02:28:44.610908162 +0100
+++ update-alternatives	2005-01-20 02:32:45.976432321 +0100
@@ -167,7 +167,7 @@
     }
     close(AF);
     $dataread=1;
-} elsif ($! != &ENOENT) {
+} elsif ($| != &ENOENT) {
     &quit("failed to open $admindir/$name: $!");
 }
 
@@ -179,7 +179,7 @@
         &pr("$name - status is $manual.");
         if (defined($linkname= readlink("$altdir/$name"))) {
             &pr(" link currently points to $linkname");
-        } elsif ($! == &ENOENT) {
+        } elsif ($| == &ENOENT) {
             &pr(" link currently absent");
         } else {
             &pr(" link unreadable - $!");
@@ -244,7 +244,7 @@
     } else {
         $state= 'unexpected';
     }
-} elsif ($! == &ENOENT) {
+} elsif ($| == &ENOENT) {
     $state= 'nonexistent';
 } else {
     $state= 'unexpected';
@@ -259,9 +259,9 @@
 if ($mode eq 'auto') {
     &pr("Setting up automatic selection of $name.")
       if $verbosemode > 0;
-    unlink("$altdir/$name.dpkg-tmp") || $! == &ENOENT ||
+    unlink("$altdir/$name.dpkg-tmp") || $| == &ENOENT ||
         &quit("unable to remove $altdir/$name.dpkg-tmp: $!");
-    unlink("$altdir/$name") || $! == &ENOENT ||
+    unlink("$altdir/$name") || $| == &ENOENT ||
         &quit("unable to remove $altdir/$name.dpkg-tmp: $!");
     $state= 'nonexistent';
     $manual= 'auto';
@@ -293,7 +293,7 @@
     if ($link ne $alink && $link ne '') {
         &pr("Renaming $name link from $link to $alink.")
           if $verbosemode > 0;
-        rename_mv($link,$alink) || $! == &ENOENT ||
+        rename_mv($link,$alink) || $| == &ENOENT ||
             &quit("unable to rename $link to $alink: $!");
     }
     $link= $alink;
@@ -315,7 +315,7 @@
         if ($newslavelink ne $oldslavelink && $oldslavelink ne '') {
             &pr("Renaming $sname slave link from $oldslavelink to $newslavelink.")
               if $verbosemode > 0;
-            rename_mv($oldslavelink,$newslavelink) || $! == &ENOENT ||
+            rename_mv($oldslavelink,$newslavelink) || $| == &ENOENT ||
                 &quit("unable to rename $oldslavelink to $newslavelink: $!");
         }
         $slavelinks[$j]= $newslavelink;
@@ -369,9 +369,9 @@
     if ($i > $#versions) {
         &pr("Discarding obsolete slave link $slavenames[$j] ($slavelinks[$j]).")
           if $verbosemode > 0;
-        unlink("$altdir/$slavenames[$j]") || $! == &ENOENT ||
+        unlink("$altdir/$slavenames[$j]") || $| == &ENOENT ||
             &quit("unable to remove $slavenames[$j]: $!");
-        unlink($slavelinks[$j]) || $! == &ENOENT ||
+        unlink($slavelinks[$j]) || $| == &ENOENT ||
             &quit("unable to remove $slavelinks[$j]: $!");
         $k= $#slavenames;
         $slavenum{$slavenames[$k]}= $j;
@@ -435,22 +435,22 @@
     if ($best eq '') {
         &pr("Last package providing $name ($link) removed, deleting it.")
           if $verbosemode > 0;
-        unlink("$altdir/$name") || $! == &ENOENT ||
+        unlink("$altdir/$name") || $| == &ENOENT ||
             &quit("unable to remove $altdir/$name: $!");
-        unlink("$link") || $! == &ENOENT ||
+        unlink("$link") || $| == &ENOENT ||
             &quit("unable to remove $altdir/$name: $!");
         unlink("$admindir/$name.dpkg-new") ||
             &quit("unable to remove $admindir/$name.dpkg-new: $!");
-        unlink("$admindir/$name") || $! == &ENOENT ||
+        unlink("$admindir/$name") || $| == &ENOENT ||
             &quit("unable to remove $admindir/$name: $!");
         exit(0);
     } else {
-        if (!defined($linkname= readlink($link)) && $! != &ENOENT) {
+        if (!defined($linkname= readlink($link)) && $| != &ENOENT) {
             &pr("warning: $link is supposed to be a symlink to $altdir/$name\n".
                 " (or nonexistent); however, readlink failed: $!")
               if $verbosemode > 0;
         } elsif ($linkname ne "$altdir/$name") {
-            unlink("$link.dpkg-tmp") || $! == &ENOENT ||
+            unlink("$link.dpkg-tmp") || $| == &ENOENT ||
                 &quit("unable to ensure $link.dpkg-tmp nonexistent: $!");
             symlink("$altdir/$name","$link.dpkg-tmp") ||
                 &quit("unable to make $link.dpkg-tmp a symlink to $altdir/$name: $!");
@@ -464,7 +464,7 @@
             &pr("Updating $name ($link) to point to $best.")
               if $verbosemode > 0;
         }
-        unlink("$altdir/$name.dpkg-tmp") || $! == &ENOENT ||
+        unlink("$altdir/$name.dpkg-tmp") || $| == &ENOENT ||
             &quit("unable to ensure $altdir/$name.dpkg-tmp nonexistent: $!");
         symlink($best,"$altdir/$name.dpkg-tmp");
     }
@@ -479,12 +479,12 @@
     for ($j=0; $j<=$#slavenames; $j++) {
         $sname= $slavenames[$j];
         $slink= $slavelinks[$j];
-        if (!defined($linkname= readlink($slink)) && $! != &ENOENT) {
+        if (!defined($linkname= readlink($slink)) && $| != &ENOENT) {
             &pr("warning: $slink is supposed to be a slave symlink to\n".
                 " $altdir/$sname, or nonexistent; however, readlink failed: $!")
               if $verbosemode > 0;
         } elsif ($linkname ne "$altdir/$sname") {
-            unlink("$slink.dpkg-tmp") || $! == &ENOENT ||
+            unlink("$slink.dpkg-tmp") || $| == &ENOENT ||
                 &quit("unable to ensure $slink.dpkg-tmp nonexistent: $!");
             symlink("$altdir/$sname","$slink.dpkg-tmp") ||
                 &quit("unable to make $slink.dpkg-tmp a symlink to $altdir/$sname: $!");
@@ -492,14 +492,14 @@
                 &quit("unable to install $slink.dpkg-tmp as $slink: $!");
         }
         $spath= $slavepath{$bestnum,$j};
-        unlink("$altdir/$sname.dpkg-tmp") || $! == &ENOENT ||
+        unlink("$altdir/$sname.dpkg-tmp") || $| == &ENOENT ||
             &quit("unable to ensure $altdir/$sname.dpkg-tmp nonexistent: $!");
         if ($spath eq '') {
             &pr("Removing $sname ($slink), not appropriate with $best.")
               if $verbosemode > 0;
-            unlink("$altdir/$sname") || $! == &ENOENT ||
+            unlink("$altdir/$sname") || $| == &ENOENT ||
                 &quit("unable to remove $altdir/$sname: $!");
-	    unlink("$slink") || $! == &ENOENT ||
+	    unlink("$slink") || $| == &ENOENT ||
 	        &quit("unable to remove $slink: $!");
         } else {
             if (defined($linkname= readlink("$altdir/$sname")) && $linkname eq $spath) {
@@ -562,7 +562,7 @@
 	    } else {
 		&pr("Removing $slave ($slavelinks[$slnum]), not appropriate with $versions[$preferred].")
 		    if $verbosemode > 0;
-		unlink("$altdir/$slave") || $! == &ENOENT ||
+		unlink("$altdir/$slave") || $| == &ENOENT ||
 		    &quit("unable to remove $altdir/$slave: $!");
 	    }
 	}
@@ -598,7 +598,7 @@
      } else {
        &pr("Removing $slave ($slavelinks[$slnum]), not appropriate with $versions[$preferred].")
 	 if $verbosemode > 0;
-       unlink("$altdir/$slave") || $! == &ENOENT ||
+       unlink("$altdir/$slave") || $| == &ENOENT ||
 	 &quit("unable to remove $altdir/$slave: $!");
      }
    }
@@ -610,7 +610,7 @@
     print(AF "$_[0]\n") || &quit("error writing stdout: $!");
 }
 sub gl {
-    $!=0; $_= <AF>;
+    $|=0; $_= <AF>;
     length($_) || &quit("error or eof reading $admindir/$name for $_[0] ($!)");
     s/\n$// || &badfmt("missing newline after $_[0]");
     $_;

Reply to: