wineinstall improvements, mostly for usage in package postinstall
scripts.

diff --git a/tools/wineinstall b/tools/wineinstall
index e71725d..793a9d5 100755
--- a/tools/wineinstall
+++ b/tools/wineinstall
@@ -1,5 +1,6 @@
 #!/bin/bash
 # WINE Installation script
+# Can do almost everything from compiling to configuring...
 
 # Mar 31 1999 - Ove Kåven
 #  First version
@@ -22,9 +23,13 @@
 # May 9 2000 - Ove Kåven
 #  use ttydrv when running regapi, so we don't have to run from X
 #  change debugger path in registry
+# Oct 29 2000 - Ove Kåven
+#  added --enable-opengl to default confargs
+#  added conf_question, conf_yesno_answer, and conf_string_answer functions
+#  added DEFCAT variable
 
 #--- defaults (change these if you are a packager)
-CONFARGS=                     # configure args, e.g. --prefix=/usr --sysconfdir=/etc
+CONFARGS=--enable-opengl      # configure args, e.g. --prefix=/usr --sysconfdir=/etc
 prefix=/usr/local             # installation prefix
 sysconfdir=$prefix/etc        # where wine.conf and global registry is supposed to be
 bindir=$prefix/bin            # where winelib apps will be (or is) installed
@@ -56,15 +61,48 @@
 REGAPI=programs/regapi/regapi # the path of regapi winelib application
 DEFREG=winedefault.reg        # the path of the registry file to be fed to regapi
 # CROOT=/var/wine             # the path of the fake Drive C (asks user if not set)
+DEFCAT=cat                    # program to cat $DEFREG with (some packages need zcat)
 #--- end of defaults
 
 # temporary files used by the installer
 TMPCONF=/tmp/wineinstall.conf
 TMPREG=/tmp/wineinstall.reg
 
+# functions
+
+function conf_question {
+  # parameters: $1 = importance, $2 = question-id, $3+ = message lines
+  # the first two parameters can be used by e.g. debconf in debian packages
+  # but here we just print the message
+  shift 2
+  echo
+  local LINE="$1"
+  while shift
+  do {
+    echo "$LINE"
+    LINE="$1"
+  }
+  done
+}
+
+function conf_yesno_answer {
+  unset ANSWER
+  while [ "$ANSWER" != 'yes' ] && [ "$ANSWER" != 'no' ]
+  do {
+    echo -n "$1"
+    read ANSWER
+  }
+  done
+}
+
+function conf_string_answer {
+  echo -n "$1"
+  read ANSWER
+}
+
 # startup...
 
-echo "WINE Installer v0.4"
+echo "WINE Installer v0.5"
 echo
 
 if [ "$BINDIST" = 'no' ]
@@ -79,13 +117,13 @@
 fi
 
 # check whether RPM installed, and if it is, remove any old wine rpm.
-hash rpm; RET=$? &>/dev/null
+hash rpm &>/dev/null
+RET=$?
 if [ $RET -eq 0 ]; then
   if [ -n "`rpm -qi wine 2>/dev/null|grep "^Name"`" ]; then
-    echo "Warning: Old Wine RPM install detected. We want to get rid of it first."
-    echo -n "ok (Y/n) ? "
-    read DOWINE
-    if [ "$DOWINE" != 'n' -a "$DOWINE" != 'N' ]; then
+    echo "Warning: Old Wine RPM install detected. Do you want to remove it first?"
+    conf_yesno_answer "(yes/no) "
+    if [ "$ANSWER" = 'yes' ]; then
       echo Starting wine rpm removal...
       rpm -e wine; RET=$?
       if [ $RET -eq 0 ]; then
@@ -200,7 +238,6 @@
   fi
 }
 fi
-echo
 
 }
 fi # BINDIST
@@ -228,16 +265,17 @@
     then {
       if [ "$DOCONF" != 'yes' ]
       then {
-        echo "Since you aren't root, and there's no system wine.conf, I assume"
-        echo "you want a user-specific .winerc. Am I correct? (yes/no)"
-        while [ "$DOCONF" != 'yes' ] && [ "$DOCONF" != 'no' ]
-        do read DOCONF
-        done
+        conf_question medium make_user_winerc \
+         "Since you aren't root, and there's no system wine.conf, I assume" \
+         "you want a user-specific .winerc. Am I correct?"
+        conf_yesno_answer "(yes/no) "
+        DOCONF="$ANSWER"
       }
       fi
       if [ "$DOCONF" = 'no' ]
       then {
-        echo "Aborting install. Try again as root to generate a system wine.conf."
+        conf_question high need_root \
+         "Aborting install. Try again as root to generate a system wine.conf."
         exit 1
       }
       fi
@@ -258,32 +296,34 @@
 then {
   if [ "$DOWCHK" = 'yes' ] || [ "$DOWCHK" = 'auto' ]
   then {
-    echo "Searching for an existing Windows installation..."
+    echo
+    echo -n "Searching for an existing Windows installation..."
     if ! $WINECONF > $CONF 2>/dev/null
     then {
       rm -f $CONF
-      echo
-      echo "Windows was not found on your system, so I assume you want a Wine-only installation."
-      echo "Am I correct? (yes/no)"
-      while [ "$DOWINE" != 'yes' ] && [ "$DOWINE" != 'no' ]
-      do read DOWINE
-      done
-      if [ "$DOWINE" = 'no' ]
+      echo " not found."
+      conf_question low do_without_windows \
+       "Windows was not found on your system, so I assume you want a Wine-only installation." \
+       "Am I correct?"
+      conf_yesno_answer "(yes/no) "
+      if [ "$ANSWER" = 'no' ]
       then {
-        echo "Aborting install. Make sure your Windows partition is mounted and try again,"
-        echo "or create $CONF manually by copying from $WINEINI and adapting the drive paths."
+        conf_question high windows_not_found \
+         "Aborting install. Make sure your Windows partition is mounted and try again," \
+         "or create $CONF manually by copying from $WINEINI and adapting the drive paths."
         exit 1
       }
       fi
+      DOWINE=yes
     }
     else {
-      echo
-      echo "Created $CONF using your existing Windows installation."
-      echo "You probably want to review the file, though."
+      echo " found."
+      conf_question low windows_found \
+       "Created $CONF using your existing Windows installation." \
+       "You probably want to review the file, though."
       DOWINE=no
     }
     fi
-    echo
   }
   elif [ "$DOWINE" = 'auto' ]
   then DOWINE=yes
@@ -300,19 +340,19 @@
   then DCROOT=~/c
   else DCROOT=/c
   fi
-  echo "Configuring Wine without Windows. Some fake Windows directories must be created, to"
-  echo "hold any .ini files, DLLs, and start menu entries your applications may need to install."
+  conf_question low drivec_path \
+   "Configuring Wine without Windows. Some fake Windows directories must be created, to" \
+   "hold any .ini files, DLLs, and start menu entries your applications may need to install."
   while [ -z "$CROOT" ]
   do {
-    echo "Where would you like your fake C drive to be placed? (default is $DCROOT)"
-    read CROOT
-    if [ -z "$CROOT" ]
+    conf_string_answer "Where would you like your fake C drive to be placed? (default is $DCROOT)"
+    if [ -z "$ANSWER" ]
     then CROOT="$DCROOT"
     fi
-    if ! [ -d "$CROOT" ]
+    if ! [ -d "$ANSWER" ]
     then {
-      if ! mkdir -p "$CROOT"
-      then unset CROOT
+      if mkdir -p "$ANSWER"
+      then CROOT="$ANSWER"
       fi
     }
     fi
@@ -327,8 +367,9 @@
   if [ "$DOCONF" = 'yes' ]
   then {
     sed "s|Path=/c\$|Path=${CROOT}|" $WINEINI > $CONF
-    echo "Created $CONF using default Wine configuration."
-    echo "You probably want to review the file, though."
+    conf_question low default_config \
+     "Created $CONF using default Wine configuration." \
+     "You probably want to review the file, though."
   }
   fi
   # now we really should install the registry
@@ -338,6 +379,7 @@
 }
 elif [ -z "$CROOT" ]
 then {
+  echo
   echo "Reading current Wine configuration from $CONF..."
   CROOT=`sed -n '/^\[Drive C\]$/,/^\[.*\]$/ s/^Path=\(.*\)/\1/p' $CONF`
   echo "Drive C is configured at $CROOT."
@@ -392,15 +434,15 @@
   sed "s/GraphicsDriver=.*/GraphicsDriver=ttydrv/" $CONF > $TMPCONF
 
   # create a temporary wineinstall.reg with fixed debugger path
-  sed "s|debugger/winedbg|${DEBUGGER}|" $DEFREG > $TMPREG
+  $DEFCAT $DEFREG | sed "s|debugger/winedbg|${DEBUGGER}|" > $TMPREG
 
   echo "Installing default Wine registry entries..."
   echo
   if ! $REGAPI --config $TMPCONF setValue < $TMPREG > /dev/null
   then {
     rm -f $TMPCONF $TMPREG
-    echo
     echo "Registry install failed."
+    conf_question high regapi_error
     exit 1
   }
   else echo "Registry entries successfully installed."