Fix swap partitions missing from fstab
[grml-udev-config.git] / scripts / grml-udev-rebuildfstab
index 123f8f7..71e7f36 100755 (executable)
@@ -1,9 +1,9 @@
 #!/bin/bash
-# Filename:      rebuildfstab
-# Purpose:       calls scanpartitions as root and adds entries to /etc/fstab
-# Authors:       grml-team (grml.org),  (c) Klaus Knopper Nov 2002, (c) Michael Prokop <mika@grml.org>
+# Filename:      scripts/grml-udev-rebuildfstab
+# Purpose:       udev script to update /etc/fstab
+# Authors:       grml-team (grml.org)
 # Bug-Reports:   see http://grml.org/bugs/
-# License:       This file is licensed under the GPL v2.
+# License:       This file is licensed under the GPL v2+.
 ################################################################################
 
 PATH="/bin:/sbin:/usr/bin:/usr/sbin"
@@ -97,9 +97,9 @@ devpts         /dev/pts       devpts noauto,mode=0622                       0
 # none           /proc/bus/usb usbfs   defaults,nodev,noexec,nosuid,noauto,devgid=1001,devmode=664 0 0
 # 192.168.1.101:/backups /mnt/nfs nfs  defaults,user,wsize=8192,rsize=8192 0 0
 #
-# Warning! Please do *not* change any lines below because they are auto-generated by rebuildfstab!
+# Warning! Please do *not* change any lines below because they are auto-generated.
 # If you want to disable rebuildfstab set CONFIG_FSTAB='no' in /etc/grml/autoconfig!
-# See 'man grml-rebuildfstab' for more details about the following entries.
+# See 'man grml-udev-rebuildfstab' for more details about the following entries.
 EOF
 fi
 ) 200>/var/run/rebuildfstab.lock
@@ -141,16 +141,14 @@ break;
 if [ -n "$LABEL" ]  && [ -n "$ID_FS_LABEL_ENC" ] ; then
   # see check_for_label() in scanpartitions for details
   case $ID_FS_LABEL_ENC in
-    *\ *|*\x20*)
-      addinfo=" # space char inside label ($ID_FS_LABEL_ENC) not supported"
-      break ;;
-    /)
-      addinfo=" # label '/' not supported"
+    *\x*)
+      addinfo=" # special char in label ($ID_FS_LABEL_ENC) not supported"
       break ;;
+    *)
+      echo "LABEL=$ID_FS_LABEL_ENC"
+      return
+      break;
   esac
-
-  echo "LABEL=$ID_FS_LABEL_ENC"
-  return
 fi
 ;;
 esac
@@ -159,7 +157,7 @@ esac
 NAME="$DEVNAME"
 for name in $DEVLINKS ; do
     case $name in
-        *usb*|*cdrom*|*dvd*)
+        *usb-sd*|*cdrom*|*dvd*)
             NAME="$name"
            break;
         ;;
@@ -228,6 +226,11 @@ done
 # if entry is already present ignore it
 stringinfile $device $TMPFILE && bailout 0
 
+if [ "$ID_FS_USAGE" != "filesystem" -a "$ID_FS_TYPE" != "swap" ]; then
+    # blockdevice in question won't be mountable in this case
+    bailout 0
+fi
+
 options=noauto,user,dev,suid,exec
 case $ID_FS_TYPE in
 ntfs)
@@ -254,8 +257,8 @@ case $ACTION in
 add|change)
 (
     flock -x 200
-    echo $ADDEDBYGRML $DEVNAME >> /etc/fstab
-    echo $device $mountpoint $ID_FS_TYPE $options 0 0 $addinfo >> /etc/fstab
+    echo "$ADDEDBYGRML $DEVNAME" >> /etc/fstab
+    echo "$device $mountpoint $ID_FS_TYPE $options 0 0 $addinfo # $DEVNAME" >> /etc/fstab
 ) 200>/var/run/rebuildfstab.lock