I thought I'd post a patch to Michael Hamilton's very nice usb-mount script. The patch does the following:

- Tries to determine the offset to the USB scsi devices if a machine already has some SCSI disks. It does this by grabbing all /dev/sd* entries from mount and seeing if they are in /etc/fstab, incrementing the scsi offset if they are.

- Allows for a relocated KDE Desktop directory by reading the kdeglobals file. It assumes kdeglobals is in $HOME/.kde/share/config/kdeglobals. Perhaps this should be made configurable.

- Creates the desktop file as the user. This was needed in our NFS /home directory environment where root did not have write permission in the home directory.

Orion
--- /opt/src/usb-mount-v0.3/image/usr/local/bin/usb-mount       2003-09-04 
02:10:36.000000000 -0600
+++ usb-mount-0.4/usb-mount     2003-09-17 12:10:12.000000000 -0600
@@ -62,7 +62,17 @@
 }
 
 function scsiDevFromScsiUsb {
-    echo $1 | awk -F"[-/]" '{ n=$(NF-1);  print "/dev/sd" 
substr("abcdefghijklmnopqrstuvwxyz", n+1, 1) "1" }'
+    #Determine offset to scsi device file from mount and /etc/fstab
+    scsibase=0
+    for dir in `mount | sort | awk '$1 ~ "^/dev/sd" { print $3}'`
+    do
+       if grep -q $dir /etc/fstab
+       then
+          let scsibase++
+       fi
+    done
+
+    echo $1 | awk -F"[-/]" -v offset=$scsibase '{ n=$(NF);  print "/dev/sd" 
substr("abcdefghijklmnopqrstuvwxyz", n+offset, 1) "1" }'
 }
 
 function allAttachedScsiUsb {
@@ -135,7 +145,15 @@
     local user="$1"
     local name="$(basename $2)"
     local home="$(eval echo ~$user)"
-    echo "$home/Desktop/usb-storage-$name.desktop"
+    local kdeglobals="$home/.kde/share/config/kdeglobals"
+    local desktop="$home/Desktop"
+    local kdedesktop
+    if [ -f $kdeglobals ]
+    then
+       kdedesktop=`awk -F= '$1 == "Desktop" { print $2 }' $kdeglobals`
+       desktop=${kdedesktop:-$desktop}
+    fi
+    echo "$desktop/usb-storage-$name.desktop"
 }
 
 function makeDesktopFile {
@@ -151,7 +169,7 @@
         feedback "Creating desktop file $desktopFile"
         home=$(eval echo ~$user)
         
-        cat > "$desktopFile" <<-EOF
+        su -s /bin/sh $user -c "cat > $desktopFile" <<-EOF
 [Desktop Action Unmount]
 Exec=/usr/local/bin/usb-umount $mountPoint
 Name=Unmount
@@ -191,11 +209,9 @@
     esac
     feedback "Altering $desktopFile icon to $icon"
     tmpfile=$(dirname $desktopFile)/.$(basename $desktopFile).old
-    mv $desktopFile $tmpfile
-    awk -vicon=$icon '
-            { sub("^Icon=.*$", "Icon=" icon, $0); 
-              print $0; } ' $tmpfile > $desktopFile
-    rm $tmpfile
+    su -s /bin/sh $user -c "mv $desktopFile $tmpfile"
+    su -s /bin/sh $user -c "awk -vicon=$icon '{ sub(\"^Icon=.*$\", \"Icon=\" icon, 
\$0); print \$0; }' $tmpfile > $desktopFile"
+    su -s /bin/sh $user -c "rm $tmpfile"
 }
 
 

Reply via email to