Make winelauncher work better for source tree builds.
Make winelauncher detect the lack of a ~/.winerc file and prompt the
user about it.
Pass command line parameters a bit more graciously; improves
interaction with gmc and kfm.

diff --git a/tools/winelauncher.in b/tools/winelauncher.in
index 94ffba4..c73e0d2 100755
--- a/tools/winelauncher.in
+++ b/tools/winelauncher.in
@@ -70,12 +70,24 @@
 #   to relocate this installation.  If so, that stuff above
 #   is all broken and we should rejigger it.
 #------------------------------------------------------------------------------
-if [ ! -x $WINEBIN/wine ] ; then
-    WINEBIN=`find $argv0_dir -maxdepth 1 -perm +0111 -type f -name 'wine' -printf "%h\n" | head -1`
+WINE_BIN_NAME=wine.bin
+if [ ! -x $WINEBIN/$WINE_BIN_NAME ] ; then
+    WINEBIN=`find $argv0_dir -maxdepth 1 -perm +0111 -type f -name "$WINE_BIN_NAME" -printf "%h\n" | head -1`
 fi
 
-if [ ! -x $WINEBIN/wine ] ; then
-    WINEBIN=`find $argv0_dir/../ -maxdepth 1 -perm +0111 -type f -name 'wine' -printf "%h\n" | head -1`
+if [ ! -x $WINEBIN/$WINE_BIN_NAME ] ; then
+    WINEBIN=`find $argv0_dir/../ -maxdepth 1 -perm +0111 -type f -name "$WINE_BIN_NAME" -printf "%h\n" | head -1`
+fi
+
+if [ ! -x $WINEBIN/$WINE_BIN_NAME ] ; then
+    WINE_BIN_NAME=wine
+    if [ ! -x $WINEBIN/$WINE_BIN_NAME ] ; then
+        WINEBIN=`find $argv0_dir -maxdepth 1 -perm +0111 -type f -name "$WINE_BIN_NAME" -printf "%h\n" | head -1`
+    fi
+
+    if [ ! -x $WINEBIN/$WINE_BIN_NAME ] ; then
+        WINEBIN=`find $argv0_dir/../ -maxdepth 1 -perm +0111 -type f -name "$WINE_BIN_NAME" -printf "%h\n" | head -1`
+    fi
 fi
 
 if [ ! -r $WINELIB/libwine.so ] ; then
@@ -86,12 +98,16 @@
     WINELIB=`find $argv0_dir/../ -maxdepth 2 -name 'libwine.so' -printf "%h\n" | head -1`
 fi
 
+if [ -x $WINEBIN/wineserver ] ; then
+    WINESERVER=$WINEBIN/wineserver
+fi
+
 #------------------------------------------------------------------------------
 #  Hey, if we built Wine from source, let's add a little extra fun to
 #   mix it up a bit
 #------------------------------------------------------------------------------
 if [ -x $WINEBIN/server/wineserver ] ; then
-    WINESERVERBIN=$WINEBIN/server
+    WINESERVER=$WINEBIN/server/wineserver
 fi
 
 if [ -r $WINELIB/dlls/libuser.so ] ; then
@@ -103,8 +119,9 @@
 #  Okay, set the paths and move on.
 #------------------------------------------------------------------------------
 export LD_LIBRARY_PATH=$WINELIB:$WINELIBDLLS:$LD_LIBRARY_PATH
-export PATH=$WINEBIN:$WINESERVERBIN:$PATH
-
+export PATH=$WINEBIN:$PATH
+export WINEDLLPATH=$WINELIBDLLS
+export WINELOADER=$WINEBIN/$WINE_BIN_NAME
 
 info_flag=~/.wine/.no_prelaunch_window_flag
 debug_flag=~/.wine/.no_debug_window_flag
@@ -138,7 +155,7 @@
 
 if [ $no_args -eq 1 ] ; then
     echo "Wine called with no arguments."
-    echo "Invoking $WINEBIN/wine $@ ..."
+    echo "Invoking $WINEBIN/$WINE_BIN_NAME $@ ..."
     $XMESSAGE -buttons "    Okay    ":0," See the Wine Usage Statement ":1,"  Configure Wine  ":2 \
         -title "Welcome to Wine" \
         "
@@ -184,13 +201,71 @@
 fi
 
 #------------------------------------------------------------------------------
+#  No config file?  Offer to help 'em out...
+#------------------------------------------------------------------------------
+conf=0
+
+while [ $conf -eq 0 ] ; do
+
+    if [ -f ~/.winerc ] ; then
+        conf=1
+    fi
+    if [ -f ~/.wine/config ] ; then
+        conf=2
+    fi
+    if [ -f /etc/wine.conf ] ; then
+        conf=3
+    fi
+
+    if [ $conf -ne 0 ] ; then
+        break;
+    fi
+
+    echo "No configuration file detected."
+    $XMESSAGE -buttons "    Cancel    ":0,"  Proceed   ":1,"  Configure Wine  ":2 \
+        -title "Welcome to Wine" \
+        "
+
+        You have started Wine but we cannot find a Wine
+        configuration file.
+
+        This is normal if you have never run Wine before.
+        If this is the case, select the 'Configure Wine'
+        option, below, to create a configuration file.
+
+        " 
+    init_rc=$?
+    if [ $init_rc -eq 0 ] ; then
+        exit
+    fi
+
+    if [ $init_rc -eq 1 ] ; then
+        break
+    fi
+
+    if [ $init_rc -eq 2 ] ; then
+        which winesetup
+        if [ $? -eq 0 ] ; then
+            winesetup
+        else
+            if [ -x /opt/wine/bin/winesetup ] ; then
+                /opt/wine/bin/winesetup
+            else
+                $XMESSAGE -title "Error" "Error:  Unable to find winesetup in your PATH or in /opt/wine/bin"
+            fi
+        fi
+    fi
+
+done
+
+#------------------------------------------------------------------------------
 #  Optionally Warn the user we're going to be launching Wine...
 #------------------------------------------------------------------------------
 if [ $use_info_message -ne 0 ] ; then
-    echo "Invoking $WINEBIN/wine $@ ..."
+    echo "Invoking $WINEBIN/$WINE_BIN_NAME $@ ..."
     $XMESSAGE -timeout 30 -buttons "    Dismiss    ":0," Never display this message again ":3 \
         -title "Wine Launch Window" \
-        "Invoking $WINEBIN/wine $@ ...
+        "Invoking $WINEBIN/$WINE_BIN_NAME $@ ...
 
         This dialog box is a temporary status dialog to let you know
         that Wine is attempting to launch your application.
@@ -267,7 +342,7 @@
     #   but then I can't find a way to get the return code of wine;
     #   I only get the return code of tee.
     #------------------------------------------------------------------------------
-    $WINEBIN/wine "$@" >$log_name 2>&1 &
+    $WINEBIN/$WINE_BIN_NAME "$@" >$log_name 2>&1 &
     wine_pid=$!
 
     tail -f $log_name &
@@ -278,7 +353,7 @@
 
     kill $tail_pid
 else
-    $WINEBIN/wine "$@"
+    $WINEBIN/$WINE_BIN_NAME "$@"
     wine_return=$?
 fi