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

X Strike Force XFree86 SVN commit: r1085 - trunk/debian



Author: branden
Date: 2004-02-20 12:17:19 -0500 (Fri, 20 Feb 2004)
New Revision: 1085

Modified:
   trunk/debian/changelog
   trunk/debian/shell-lib.sh
Log:
(deregister_x_lib_dir_with_ld_so):
  Rework the file replacement logic so that we are indifferent to whether
  or not there are any lines in /etc/ld.so.conf that do not match
  /usr/X11R6/lib, and we do not replace the file if we're not actually
  changing it.  Thanks to Filip Van Raemdonck and Andreas Metzler for
  forcing me to think about this more carefully.


Modified: trunk/debian/changelog
===================================================================
--- trunk/debian/changelog	2004-02-20 16:00:06 UTC (rev 1084)
+++ trunk/debian/changelog	2004-02-20 17:17:19 UTC (rev 1085)
@@ -27,8 +27,10 @@
   * Fix missing second argument to fgrep in deregister_x_lib_dir_with_ld_so(),
     which can cause it to block, attempting to read from standard input; also
     drop -q from fgrep's option list, since we actually want to do something
-    with its output; finally, only attempt to remove /usr/X11R6/lib directory
-    from /etc/ld.so.conf if it is in the file (thanks, Filip Van Raemdonck).
+    with its output; finally, rework the file replacement logic so that we are
+    indifferent to whether or not there are any lines in /etc/ld.so.conf that
+    do not match /usr/X11R6/lib, and we do not replace the file if we're not
+    actually changing it (thanks, Filip Van Raemdonck and Andreas Metzler).
     (Closes: #233645)
     - debian/shell-lib.sh
 
@@ -58,7 +60,7 @@
     sunffb driver.
     - debian/patches/073_sunffb_xaa_render_fb_support.diff
 
- -- Branden Robinson <branden@debian.org>  Fri, 20 Feb 2004 10:58:40 -0500
+ -- Branden Robinson <branden@debian.org>  Fri, 20 Feb 2004 12:14:42 -0500
 
 xfree86 (4.3.0-2) unstable; urgency=low
 

Modified: trunk/debian/shell-lib.sh
===================================================================
--- trunk/debian/shell-lib.sh	2004-02-20 16:00:06 UTC (rev 1084)
+++ trunk/debian/shell-lib.sh	2004-02-20 17:17:19 UTC (rev 1085)
@@ -557,7 +557,7 @@
   # library in /usr/X11R6/lib, in the event "$1" is "remove", and before
   # invoking ldconfig.
 
-  local dir ldsoconf
+  local dir ldsoconf fgrep_status cmp_status
 
   dir="/usr/X11R6/lib"
   ldsoconf="/etc/ld.so.conf"
@@ -568,10 +568,26 @@
     if [ "$(echo "$dir"/lib*.so.*.*)" = "$dir/lib*.so.*.*" ]; then
       # glob expansion produced nothing, so no shared libraries are present
       observe "removing $dir directory from $ldsoconf"
-      if fgrep -qsx "$dir" "$ldsoconf"; then
-        fgrep -svx "$dir" "$ldsoconf" > "$ldsoconf.dpkg-tmp"
-      fi
-      mv "$ldsoconf.dpkg-tmp" "$ldsoconf"
+      # rewrite the file (very carefully)
+      set +e
+      fgrep -svx "$dir" "$ldsoconf" > "$ldsoconf.dpkg-tmp"
+      fgrep_status=$?
+      set -e
+      case $fgrep_status in
+        0|1) ;; # we don't actually care if any lines matched or not
+        *) die "error reading \"$ldsoconf\"; fgrep exited with status" \
+          "$fgrep_status" ;;
+      esac
+      set +e
+      cmp -s "$ldsoconf.dpkg-tmp" "$ldsoconf"
+      cmp_status=$?
+      set -e
+      case $cmp_status in
+        0) rm "$ldsoconf.dpkg-tmp" ;; # files are identical
+        1) mv "$ldsoconf.dpkg-tmp" "$ldsoconf" ;; # files differ
+        *) die "error comparing \"$ldsoconf.dpkg-tmp\" to \"$ldsoconf\"; cmp" \
+          "exited with status $cmp_status" ;;
+      esac
     fi
   fi
 }



Reply to: