diff -urN mountapp-3.0/ChangeLog mountapp-3.1/ChangeLog
--- mountapp-3.0/ChangeLog	2002-12-06 16:37:43.000000000 +0100
+++ mountapp-3.1/ChangeLog	2006-11-19 17:08:28.000000000 +0100
@@ -1,6 +1,13 @@
 Changelog:
 ==========
 
+Version 3.1
+
+ o Alexey Spiridonov sent a patch to add a new -s flag
+ o Michael Bker sent a patch to change preferences dir to ~/.mount.app
+ o Eric Enright sent a patch making the middle (third) mouse button eject
+   removeable media.
+
 Version 3.0
 
  o Changes required to work with WindowMaker 0.70 and higher, which does not
diff -urN mountapp-3.0/THANKS mountapp-3.1/THANKS
--- mountapp-3.0/THANKS	2002-12-09 06:36:45.000000000 +0100
+++ mountapp-3.1/THANKS	2006-11-19 16:08:48.000000000 +0100
@@ -28,6 +28,13 @@
               - Patch for handling very large partitions
 Jose Paulo B Silva <paulo@magnumsa.com.br>
               - External Zip drive icon
+Alexey Spiridonov <lesha@mit.edu>
+              - new flag -s
+Michael Bker
+              - Changed preferences dir to ~/.mount.app
+Eric Enright
+              - Made middle mouse button eject media
+
 
 Feedback from:
 
diff -urN mountapp-3.0/TODO mountapp-3.1/TODO
--- mountapp-3.0/TODO	2002-12-06 16:13:55.000000000 +0100
+++ mountapp-3.1/TODO	2006-11-19 15:28:16.000000000 +0100
@@ -5,8 +5,6 @@
   machine again, I'd like to resurrect the "Fonts & Colors" page. (waiting
   for GTK+ 1.2)
 
-o Eject button for CD and ZIP devices
-
 o GNOME and KDE panel compliance.
 
 o tiff support
diff -urN mountapp-3.0/configure.in mountapp-3.1/configure.in
--- mountapp-3.0/configure.in	2002-12-06 16:14:01.000000000 +0100
+++ mountapp-3.1/configure.in	2006-11-19 17:06:25.000000000 +0100
@@ -5,7 +5,7 @@
 
 AM_CONFIG_HEADER(config.h)
 
-AM_INIT_AUTOMAKE(mountapp, 3.0)
+AM_INIT_AUTOMAKE(mountapp, 3.1)
 
 dnl Checks for host/os name
 dnl =======================
diff -urN mountapp-3.0/mountapp.spec mountapp-3.1/mountapp.spec
--- mountapp-3.0/mountapp.spec	2002-12-09 06:58:54.000000000 +0100
+++ mountapp-3.1/mountapp.spec	2006-11-19 15:28:16.000000000 +0100
@@ -15,8 +15,8 @@
 Copyright: GPL
 Group:  X11/Utilities
 BuildRoot: /tmp/mountapp-%ver
-Source: http://mountapp.netpedia.net/mountapp-%ver.tar.gz
-URL: http://mountapp.netpedia.net
+Source: http://osdn.dl.sourceforge.net/sourceforge/mountapp/mountapp-%ver.tar.gz
+URL: http://mountapp.sourceforge.net
 Packager: Steve Borho <steve@borho.org>
 
 %description
diff -urN mountapp-3.0/src/mount.c mountapp-3.1/src/mount.c
--- mountapp-3.0/src/mount.c	2002-12-06 16:14:02.000000000 +0100
+++ mountapp-3.1/src/mount.c	2006-11-19 16:03:24.000000000 +0100
@@ -56,6 +56,7 @@
 int             txtx1, txty1, txtx2 = 8, txty2 = 40, txty3 = 0;
 
 bool            withdrawn = TRUE;
+bool            force_shaped = FALSE;
 bool            sigHUP = FALSE;
 struct allInfo  *aiPtr = 0;
 
@@ -403,7 +403,7 @@
     disp = XCreatePixmap(dpy, Root, 64, 64, DefaultDepth(dpy, DefaultScreen(dpy)));
 
     /* Install mask or copy background tile */
-    if (withdrawn)
+    if (withdrawn || force_shaped)
         XShapeCombineMask(dpy, Win[activeWin], ShapeBounding, 0, 0, mask,
                 ShapeSet);
     else
@@ -525,6 +526,8 @@
     fprintf(stderr, "   -h | -help             display this help screen\n");
     fprintf(stderr, "   -i                     ignore NFS mounts\n");
     fprintf(stderr, "   -n                     wm other than Window Maker\n");
+    fprintf(stderr, "   -s                     shaped window even if -n is"
+        " enabled.\n");
     fprintf(stderr, "   -display display       select target display"
         " (see X manual pages)\n\n");
     exit(0);
@@ -535,7 +538,7 @@
     int             optchar;
     int             disp_set = 0;
 
-    while ((optchar = getopt(argc, argv, "hind:")) != EOF)
+    while ((optchar = getopt(argc, argv, "hinsd:")) != EOF)
     {
         disp_set = 0;
         switch (optchar)
@@ -546,6 +549,9 @@
         case 'i':
             ignoreNFS = TRUE;
             break;
+        case 's':
+            force_shaped = TRUE;
+            break;
         case 'd':
             if (!strcmp(optarg, "isplay"))
                 disp_set++;
@@ -714,10 +720,33 @@
             if (mp->isMounted)
             {
                 mp->performEject = mp->ejectFlag && (xev->button == Button1);
+
+                if (xev->button == Button3)
+                {
+                    mp->performEject = 1;
+                }
                 internalUmount(mp);
             }
             else
-                internalMount(mp);
+            {
+                if (xev->button == Button3)
+                {
+                    /* eject! */
+                    if (ejectcmd[0] == 0)
+                        internalEject(mp);
+                    else
+                    {
+                        char    cmd[256];
+                        int        n = (sizeof(cmd) / sizeof(cmd[0]));
+
+                        snprintf(cmd, n, ejectcmd, mp->mountStr);
+                        cmd[n - 1] = '\0';
+                        newSystem(cmd, mp);
+                    }
+                }
+                else
+                    internalMount(mp);
+            }
         }
         else
         {
diff -urN mountapp-3.0/src/properties.c mountapp-3.1/src/properties.c
--- mountapp-3.0/src/properties.c	2002-12-06 16:14:02.000000000 +0100
+++ mountapp-3.1/src/properties.c	2006-11-19 15:59:12.000000000 +0100
@@ -479,10 +479,9 @@
     if (*buf)
         return buf;
 
-    /* File name should default to $HOME/GNUstep/Defaults/mount.app
-     * but should allow $GNUSTEP_USER_PATH/Defaults/mount.app and
-     * even expand ~ into $HOME if it's used in GNUSTEP_USER_PATH.  All
-     * without allowing any buffer overflows.
+    /* Hacked by Michael Bueker: The config file simply gets
+     * written to $HOME/.mount.app/ instead of a dir related
+     * to GNUstep.
      */
     if (((home = getenv("HOME")) == 0) || strlen(home) > 100)
     {
@@ -490,17 +489,7 @@
         exit(1);
     }
 
-    if ((str = getenv("GNUSTEP_USER_PATH")) == 0)
-        sprintf(buf, "%s/GNUstep", home);
-    else
-    {
-        if (*str == '~')
-            sprintf(buf, "%s/%.*s", home, 50, str + 2);
-        else
-            safeCopy(buf, str, 50);
-    }
-
-    strcat(buf, "/Defaults/mount.app");
+    sprintf(buf, "%s/.mount.app/mount.app", home);
 
     return buf;
 }
