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

Bug#217605: Reopen 217605



reopen 217605
tag 217605 = patch
thanks

Hi,

the fix is wrong:
  * In xdm.config, because of a typo when calling head, CURRENT_DEFAULT is
    empty, so at end of script $DEFAULT_DISPLAY_MANAGER_FILE is moved to
    $DEFAULT_DISPLAY_MANAGER_FILE.dpkg-tmp
  * In xdm.postinst, as $DEFAULT_DISPLAY_MANAGER_FILE does not exist,
    the debconf stuff is always run.  If $DEFAULT_DISPLAY_MANAGER/daemon_name
    does not exist, DAEMON_NAME contains
      "10 $DEFAULT_DISPLAY_MANAGER/daemon_name doesn't exist"
    or something like that.  This is because of your safe_debconf
    function, it is not safe at all ;o)
    You must instead test db_get return code, which makes safe_debconf
    pretty useless, so I removed calls to it from both scripts.

In -13 postinst no more fails, which is of course better, but display manager
is not restarted when $DEFAULT_DISPLAY_MANAGER/daemon_name does not
exist.

Patch against trunk-debian-2003.11.16 attached.

Denis
diff -ur trunk-debian-2003.11.16.orig/debian/xdm.config.in trunk-debian-2003.11.16/debian/xdm.config.in
--- trunk-debian-2003.11.16.orig/debian/xdm.config.in	2003-11-16 09:01:07.000000000 +0200
+++ trunk-debian-2003.11.16/debian/xdm.config.in	2003-11-16 09:23:14.000000000 +0200
@@ -19,15 +19,15 @@
 # set default display manager
 DEFAULT_DISPLAY_MANAGER_FILE=/etc/X11/default-display-manager
 
-safe_debconf db_metaget shared/default-x-display-manager owners
+db_metaget shared/default-x-display-manager owners || true
 OWNERS="$RET"
-safe_debconf db_metaget shared/default-x-display-manager choices
+db_metaget shared/default-x-display-manager choices || true
 CHOICES="$RET"
 
 if [ -n "$OWNERS" -a -n "$CHOICES" ]; then
   if [ "$OWNERS" != "$CHOICES" ]; then
-    safe_debconf db_subst shared/default-x-display-manager choices "$OWNERS"
-    safe_debconf db_fset shared/default-x-display-manager seen false
+    db_subst shared/default-x-display-manager choices "$OWNERS"
+    db_fset shared/default-x-display-manager seen false
   fi
 
   # debconf is not a registry; use the current contents of the default display
@@ -35,27 +35,29 @@
   if [ -e "$DEFAULT_DISPLAY_MANAGER_FILE" ]; then
     CURRENT_DEFAULT=$(basename "$(grep -v '^[[:space:]]*#' \
                                   "$DEFAULT_DISPLAY_MANAGER_FILE" |
-                                  head -n -1)")
+                                  head -n 1)")
     if [ -n "$CURRENT_DEFAULT" ]; then
       if ! which "$CURRENT_DEFAULT" > /dev/null 2>&1; then
         observe "default display manager \"$CURRENT_DEFAULT\" specified in" \
                 "$DEFAULT_DISPLAY_MANAGER_FILE does not exist or is not" \
                 "executable"
       fi
-      safe_debconf db_set shared/default-x-display-manager "$CURRENT_DEFAULT"
+      db_set shared/default-x-display-manager "$CURRENT_DEFAULT"
     fi
   else
-    safe_debconf db_get shared/default-x-display-manager
-    CURRENT_DEFAULT="$RET"
+    if db_get shared/default-x-display-manager; then
+        CURRENT_DEFAULT="$RET"
+    fi
   fi
 
-  safe_debconf db_input high shared/default-x-display-manager
-  safe_debconf db_go
+  db_input high shared/default-x-display-manager || true
+  db_go || true
 fi
 
 # using this display manager?
-safe_debconf db_get shared/default-x-display-manager
-NEW_DEFAULT="$RET"
+if db_get shared/default-x-display-manager; then
+  NEW_DEFAULT="$RET"
+fi
 
 # move the default display manager file if we're going to change it
 if [ -n "$NEW_DEFAULT" ]; then
diff -ur debian.orig/xdm.postinst.in debian/xdm.postinst.in
--- debian.orig/xdm.postinst.in	2003-11-16 09:01:19.000000000 +0200
+++ debian/xdm.postinst.in	2003-11-16 09:09:54.000000000 +0200
@@ -9,9 +9,6 @@
 
 set -e
 
-# source debconf library
-. /usr/share/debconf/confmodule
-
 THIS_PACKAGE=xdm
 THIS_SCRIPT=postinst
 
@@ -33,12 +30,16 @@
 # does not exist
 DEFAULT_DISPLAY_MANAGER_FILE=/etc/X11/default-display-manager
 if [ ! -e "$DEFAULT_DISPLAY_MANAGER_FILE" ]; then
-  safe_debconf db_get shared/default-x-display-manager
-  DEFAULT_DISPLAY_MANAGER="$RET"
+  # source debconf library
+  . /usr/share/debconf/confmodule
+
+  if db_get shared/default-x-display-manager; then
+    DEFAULT_DISPLAY_MANAGER="$RET"
+  fi
   if [ -n "$DEFAULT_DISPLAY_MANAGER" ]; then
-    safe_debconf db_get "$DEFAULT_DISPLAY_MANAGER"/daemon_name
-    DAEMON_NAME="$RET"
-    if [ ! -n "$DAEMON_NAME" ]; then
+    if db_get "$DEFAULT_DISPLAY_MANAGER"/daemon_name; then
+      DAEMON_NAME="$RET"
+    else
       # if we were unable to determine the name of the selected daemon (for
       # instance, if the selected default display manager doesn't provide a
       # daemon_name question), guess
@@ -53,6 +54,9 @@
       echo "$DAEMON_NAME" > "$DEFAULT_DISPLAY_MANAGER_FILE"
     fi
   fi
+
+  # restarting the daemon may cause output to stdout
+  db_stop
 fi
 
 # remove the displaced old default display manager file if it exists
@@ -60,9 +64,6 @@
   rm "$DEFAULT_DISPLAY_MANAGER_FILE.dpkg-tmp"
 fi
 
-# restarting the daemon may cause output to stdout
-safe_debconf db_stop
-
 # don't start xdm if we are upgrading without stopping it
 NOSTART=
 XDM_RUNNING=

Reply to: