Index: /trunk/src/VBox/Additions/solaris/Installer/postinstall.sh
===================================================================
--- /trunk/src/VBox/Additions/solaris/Installer/postinstall.sh	(revision 25680)
+++ /trunk/src/VBox/Additions/solaris/Installer/postinstall.sh	(revision 25681)
@@ -112,10 +112,11 @@
     # create the device link
     /usr/sbin/devfsadm -i vboxguest
-    sync
-fi
-
-
-# check if X.Org exists
-if test -f "/usr/X11/bin/Xorg"; then
+fi
+
+
+# check if X.Org exists (snv_130 and higher have /usr/X11/* as /usr/*)
+if test -f "/usr/bin/Xorg"; then
+    xorgbin="/usr/bin/Xorg"
+elif test -f "/usr/X11/bin/Xorg"; then
     xorgbin="/usr/X11/bin/Xorg"
 else
@@ -140,8 +141,8 @@
 # Install Xorg components to the required places
 if test ! -z "$xorgbin"; then
-    xorgversion_long=`/usr/X11/bin/Xorg -version 2>&1 | grep "X Window System Version"`
+    xorgversion_long=`$xorgbin -version 2>&1 | grep "X Window System Version"`
     xorgversion=`/usr/bin/expr "${xorgversion_long}" : 'X Window System Version \([^ ]*\)'`
     if test -z "$xorgversion_long"; then
-        xorgversion_long=`/usr/X11/bin/Xorg -version 2>&1 | grep "X.Org X Server"`
+        xorgversion_long=`$xorgbin -version 2>&1 | grep "X.Org X Server"`
         xorgversion=`/usr/bin/expr "${xorgversion_long}" : 'X.Org X Server \([^ ]*\)'`
     fi
@@ -189,66 +190,88 @@
         retval=2
     else
-        echo "Configuring X.Org..."
-
-        # 32-bit x11 drivers
-        if test -f "$vboxadditions_path/$vboxmouse_src"; then
-            vboxmouse_dest="/usr/X11/lib/modules/input/vboxmouse_drv.so"
-            vboxvideo_dest="/usr/X11/lib/modules/drivers/vboxvideo_drv.so"
-            /usr/sbin/installf -c none $PKGINST "$vboxmouse_dest" f
-            /usr/sbin/installf -c none $PKGINST "$vboxvideo_dest" f
-            cp "$vboxadditions_path/$vboxmouse_src" "$vboxmouse_dest"
-            cp "$vboxadditions_path/$vboxvideo_src" "$vboxvideo_dest"
-
-            # Removing redundent names from pkg and files from disk
-            /usr/sbin/removef $PKGINST $vboxadditions_path/vboxmouse_drv_* 1>/dev/null
-            /usr/sbin/removef $PKGINST $vboxadditions_path/vboxvideo_drv_* 1>/dev/null
-            rm -f $vboxadditions_path/vboxmouse_drv_*
-            rm -f $vboxadditions_path/vboxvideo_drv_*
+        echo "Installing mouse and video drivers for X.Org $xorgversion..."
+
+        # Determine destination paths (snv_130 and above use "/usr/lib/xorg", older use "/usr/X11/lib"
+        vboxmouse_dest_base="/usr/lib/xorg/modules/input"
+        if test ! -d $vboxmouse_dest_base; then
+            vboxmouse_dest_base="/usr/X11/lib/modules/input"
         fi
-
-        # 64-bit x11 drivers
-        if test -f "$vboxadditions64_path/$vboxmouse_src"; then
-            vboxmouse_dest="/usr/X11/lib/modules/input/$solaris64dir/vboxmouse_drv.so"
-            vboxvideo_dest="/usr/X11/lib/modules/drivers/$solaris64dir/vboxvideo_drv.so"
-            /usr/sbin/installf -c none $PKGINST "$vboxmouse_dest" f
-            /usr/sbin/installf -c none $PKGINST "$vboxvideo_dest" f
-            cp "$vboxadditions64_path/$vboxmouse_src" "$vboxmouse_dest"
-            cp "$vboxadditions64_path/$vboxvideo_src" "$vboxvideo_dest"
-
-            # Removing redundent names from pkg and files from disk
-            /usr/sbin/removef $PKGINST $vboxadditions64_path/vboxmouse_drv_* 1>/dev/null
-            /usr/sbin/removef $PKGINST $vboxadditions64_path/vboxvideo_drv_* 1>/dev/null
-            rm -f $vboxadditions64_path/vboxmouse_drv_*
-            rm -f $vboxadditions64_path/vboxvideo_drv_*
+        vboxvideo_dest_base="/usr/lib/xorg/modules/drivers"
+        if test ! -d $vboxvideo_dest_base; then
+            vboxvideo_dest_base="/usr/X11/lib/modules/drivers"
         fi
 
-        # Some distros like Indiana have no xorg.conf, deal with this
-        if test ! -f '/etc/X11/xorg.conf' && test ! -f '/etc/X11/.xorg.conf'; then
-
-            # Xorg 1.3.x+ should use the modeline less Xorg confs while older should
-            # use ones with all the video modelines in place. Argh.
-            xorgconf_file="solaris_xorg_modeless.conf"
-            xorgconf_unfit="solaris_xorg.conf"
+        vboxmouse64_dest_base=$vboxmouse_dest_base/$solaris64dir
+        vboxvideo64_dest_base=$vboxvideo_dest_base/$solaris64dir
+
+        # Make sure destination path exists
+        if test ! -d $vboxmouse_dest_base || test ! -d $vboxvideo_dest_base || test ! -d $vboxmouse64_dest_base || test ! -d $vboxvideo64_dest_base; then
+            echo "*** Missing destination paths for mouse or video modules. Aborting."
+            echo "*** Failed to install the VirtualBox X Window System drivers."
+
+            # Exit as partially failed installation
+            retval=2
+        else
+            # 32-bit x11 drivers
+            if test -f "$vboxadditions_path/$vboxmouse_src"; then
+                vboxmouse_dest="$vboxmouse_dest_base/vboxmouse_drv.so"
+                vboxvideo_dest="$vboxvideo_dest_base/vboxvideo_drv.so"
+                /usr/sbin/installf -c none $PKGINST "$vboxmouse_dest" f
+                /usr/sbin/installf -c none $PKGINST "$vboxvideo_dest" f
+                cp "$vboxadditions_path/$vboxmouse_src" "$vboxmouse_dest"
+                cp "$vboxadditions_path/$vboxvideo_src" "$vboxvideo_dest"
+
+                # Removing redundent names from pkg and files from disk
+                /usr/sbin/removef $PKGINST $vboxadditions_path/vboxmouse_drv_* 1>/dev/null
+                /usr/sbin/removef $PKGINST $vboxadditions_path/vboxvideo_drv_* 1>/dev/null
+                rm -f $vboxadditions_path/vboxmouse_drv_*
+                rm -f $vboxadditions_path/vboxvideo_drv_*
+            fi
+
+            # 64-bit x11 drivers
+            if test -f "$vboxadditions64_path/$vboxmouse_src"; then
+                vboxmouse_dest="$vboxmouse64_dest_base/vboxmouse_drv.so"
+                vboxvideo_dest="$vboxvideo64_dest_base/vboxvideo_drv.so"
+                /usr/sbin/installf -c none $PKGINST "$vboxmouse_dest" f
+                /usr/sbin/installf -c none $PKGINST "$vboxvideo_dest" f
+                cp "$vboxadditions64_path/$vboxmouse_src" "$vboxmouse_dest"
+                cp "$vboxadditions64_path/$vboxvideo_src" "$vboxvideo_dest"
+
+                # Removing redundent names from pkg and files from disk
+                /usr/sbin/removef $PKGINST $vboxadditions64_path/vboxmouse_drv_* 1>/dev/null
+                /usr/sbin/removef $PKGINST $vboxadditions64_path/vboxvideo_drv_* 1>/dev/null
+                rm -f $vboxadditions64_path/vboxmouse_drv_*
+                rm -f $vboxadditions64_path/vboxvideo_drv_*
+            fi
+
+            # Some distros like Indiana have no xorg.conf, deal with this
+            if test ! -f '/etc/X11/xorg.conf' && test ! -f '/etc/X11/.xorg.conf'; then
+
+                # Xorg 1.3.x+ should use the modeline less Xorg confs while older should
+                # use ones with all the video modelines in place. Argh.
+                xorgconf_file="solaris_xorg_modeless.conf"
+                xorgconf_unfit="solaris_xorg.conf"
+                case "$xorgversion" in
+                    7.1.* | 7.2.* | 6.9.* | 7.0.* )
+                        xorgconf_file="solaris_xorg.conf"
+                        xorgconf_unfit="solaris_xorg_modeless.conf"
+                        ;;
+                esac
+
+                /usr/sbin/removef $PKGINST $vboxadditions_path/$xorgconf_file 1>/dev/null
+                mv -f $vboxadditions_path/$xorgconf_file /etc/X11/.xorg.conf
+
+                /usr/sbin/removef $PKGINST $vboxadditions_path/$xorgconf_unfit 1>/dev/null
+                rm -f $vboxadditions_path/$xorgconf_unfit
+            fi
             case "$xorgversion" in
-                7.1.* | 7.2.* | 6.9.* | 7.0.* )
-                    xorgconf_file="solaris_xorg.conf"
-                    xorgconf_unfit="solaris_xorg_modeless.conf"
+                7.1.* | 7.2.* | 6.9.* | 7.0.* | 1.3.* )
+                    $vboxadditions_path/x11config.pl
+                    ;;
+                1.5.* | 1.6.* | 1.7.* )
+                    $vboxadditions_path/x11config15sol.pl
                     ;;
             esac
-
-            /usr/sbin/removef $PKGINST $vboxadditions_path/$xorgconf_file 1>/dev/null
-            mv -f $vboxadditions_path/$xorgconf_file /etc/X11/.xorg.conf
-
-            /usr/sbin/removef $PKGINST $vboxadditions_path/$xorgconf_unfit 1>/dev/null
-            rm -f $vboxadditions_path/$xorgconf_unfit
         fi
-        case "$xorgversion" in
-            7.1.* | 7.2.* | 6.9.* | 7.0.* | 1.3.* )
-                $vboxadditions_path/x11config.pl
-                ;;
-            1.5.* | 1.6.* | 1.7.* )
-                $vboxadditions_path/x11config15sol.pl
-                ;;
-        esac
     fi
 
