From 347796a242890470c291d1a00508e8d6e5e15921 Mon Sep 17 00:00:00 2001 From: "Slawomir Wojciech Wojtczak (vermaden)" Date: Mon, 26 Jan 2015 19:12:46 +0100 Subject: [PATCH] Introduce smarter fstype() function to better determine filesystem. New automount-1.5.2.tar.gz tarball. --- automount | 116 +++++++++++++++++++++++++++++------------ automount-1.5.2.tar.gz | Bin 0 -> 4868 bytes 2 files changed, 83 insertions(+), 33 deletions(-) create mode 100644 automount-1.5.2.tar.gz diff --git a/automount b/automount index 0400500..2e8c9bd 100755 --- a/automount +++ b/automount @@ -265,6 +265,58 @@ __random_wait() { __log "${DEV}: random wait for '${WAIT}' seconds before 'attach' action" } +__fstype() { # 1=DEV + TYPE=$( dd < ${DEV} count=1 2> /dev/null | strings | head -1 ) + if echo "${TYPE}" | grep -q 'EXFAT' + then + TYPE=EXFAT + return + fi + TYPE='' + TYPE=$( file -r -b -L -s ${DEV} | sed -E 's/label:\ \".*\"//g' ) + if echo "${TYPE}" | grep -q 'Unix Fast File' + then + TYPE=UFS + return + fi + if echo "${TYPE}" | grep -q 'ext2' + then + TYPE=EXT2 + return + fi + if echo "${TYPE}" | grep -q 'ext3' + then + TYPE=EXT3 + return + fi + if echo "${TYPE}" | grep -q 'ext4' + then + TYPE=EXT4 + return + fi + if echo "${TYPE}" | grep -q 'DOS/MBR boot sector' + then + TYPE=$( file -r -k -b -L -s ${DEV} | sed -E 's/label:\ \".*\"//g' ) + if echo "${TYPE}" | grep -q 'Unix Fast File' + then + TYPE=UFS + return + fi + if echo "${TYPE}" | grep -q 'FAT' + then + TYPE=FAT + return + fi + if echo "${TYPE}" | grep -q 'NTFS' + then + TYPE=NTFS + return + fi + fi + TYPE=-1 + return +} + DEV=/dev/${1} __wait_for_boot @@ -294,8 +346,27 @@ case ${2} in OPTS="-o noatime" fi __wait_for_device ${DEV} - case $( file -k -b -L -s ${DEV} | sed -E 's/label:\ \".*\"//g' ) in - (*FAT*) # must be before NTFS section because: newfs_msdos -O NTFS -L NTFS + __fstype ${DEV} + case ${TYPE} in + (UFS) + __create_mount_point ${DEV} + __wait_for_device ${DEV} + fsck_ufs -C -y ${DEV} \ + | while read LINE + do + __log "${DEV}: fsck_ufs ${LINE}" + done + __wait_for_device ${DEV} + if mount -t ufs ${OPTS} ${DEV} ${MNT} + then + ADD=1 + else + __log "${DEV}: mount failed (ufs) 'mount -t ufs ${OPTS} ${DEV} ${MNT}'" + exit 1 + fi + __log "${DEV}: mount (ufs)" + ;; + (FAT) # must be before NTFS section because: newfs_msdos -O NTFS -L NTFS __create_mount_point ${DEV} __wait_for_device ${DEV} fsck_msdosfs -C -y ${DEV} \ @@ -314,7 +385,7 @@ case ${2} in fi __log "${DEV}: mount (fat)" ;; - (*NTFS*) # must be after FAT section: newfs_msdos -O NTFS -L NTFS + (NTFS) # must be after FAT section: newfs_msdos -O NTFS -L NTFS __create_mount_point ${DEV} __wait_for_device ${DEV} if which ntfs-3g 1> /dev/null 2> /dev/null # sysutils/fusefs-ntfs @@ -348,7 +419,7 @@ case ${2} in fi __log "${DEV}: mount (ntfs)" ;; - (*ext2*) + (EXT2) __create_mount_point ${DEV} __wait_for_device ${DEV} e2fsck -y ${DEV} \ @@ -366,7 +437,7 @@ case ${2} in fi __log "${DEV}: mount (ext2)" ;; - (*ext3*) + (EXT3) __create_mount_point ${DEV} __wait_for_device ${DEV} e2fsck -y ${DEV} \ @@ -384,7 +455,7 @@ case ${2} in fi __log "${DEV}: mount (ext3)" ;; - (*ext4*) + (EXT4) __create_mount_point ${DEV} __wait_for_device ${DEV} e2fsck -y ${DEV} \ @@ -402,42 +473,21 @@ case ${2} in fi __log "${DEV}: mount (ext4)" ;; - (*Unix\ Fast\ File*) + (EXFAT) __create_mount_point ${DEV} __wait_for_device ${DEV} - fsck_ufs -C -y ${DEV} \ - | while read LINE - do - __log "${DEV}: fsck_ufs ${LINE}" - done - __wait_for_device ${DEV} - if mount -t ufs ${OPTS} ${DEV} ${MNT} + if mount.exfat ${OPTS} ${DEV} ${MNT} # sysutils/fusefs-exfat then ADD=1 else - __log "${DEV}: mount failed (ufs) 'mount -t ufs ${OPTS} ${DEV} ${MNT}'" + __log "${DEV}: mount failed (exfat) 'mount.exfat ${OPTS} ${DEV} ${MNT}'" exit 1 fi - __log "${DEV}: mount (ufs)" + __log "${DEV}: mount (exfat)" ;; (*) - case $( dd < ${DEV} count=1 2> /dev/null | strings | head -1 ) in - (*EXFAT*) - __create_mount_point ${DEV} - __wait_for_device ${DEV} - if mount.exfat ${OPTS} ${DEV} ${MNT} # sysutils/fusefs-exfat - then - ADD=1 - else - __log "${DEV}: mount failed (exfat) 'mount.exfat ${OPTS} ${DEV} ${MNT}'" - exit 1 - fi - __log "${DEV}: mount (exfat)" - ;; - (*) - __log "${DEV}: filesystem not supported or no filesystem" - exit 0 - esac + __log "${DEV}: filesystem not supported or no filesystem" + exit 0 ;; esac if [ ${ADD} -eq 1 ] diff --git a/automount-1.5.2.tar.gz b/automount-1.5.2.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..eab282b1e7242ff15b954ce884fc726f3e6f3417 GIT binary patch literal 4868 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