| From | Sent On | Attachments |
|---|---|---|
| vermaden | Feb 17, 2012 9:48 am | |
| matt | Feb 17, 2012 11:22 am | |
| vermaden | Feb 17, 2012 12:40 pm | |
| vermaden | Feb 17, 2012 1:58 pm | |
| vermaden | Feb 17, 2012 3:22 pm | |
| vermaden | Feb 18, 2012 1:47 am | |
| Hans Petter Selasky | Feb 18, 2012 5:08 am | |
| Gleb Kurtsou | Feb 18, 2012 8:56 am | |
| Uffe Jakobsen | Feb 18, 2012 9:06 am | |
| Lars Engels | Feb 18, 2012 12:20 pm | |
| vermaden | Feb 19, 2012 1:46 pm | |
| vermaden | Feb 20, 2012 12:43 am | |
| Ivan Klymenko | Feb 20, 2012 1:48 am | |
| vermaden | Feb 20, 2012 5:26 am | |
| Freddie Cash | Feb 20, 2012 8:38 am | |
| Fernando Apesteguía | Feb 20, 2012 10:31 am | |
| vermaden | Feb 20, 2012 11:17 am | |
| vermaden | Feb 21, 2012 1:04 am | |
| Uffe Jakobsen | Feb 22, 2012 2:57 pm |
| Subject: | Re: devd based AUTOMOUNTER | |
|---|---|---|
| From: | vermaden (verm...@interia.pl) | |
| Date: | Feb 17, 2012 3:22:27 pm | |
| List: | org.freebsd.freebsd-hackers | |
Latest version with additional checks for NTFS and FAT32, to be precise, for NTFS filesystem with label "FAT" and for FAT filesystem with label "NTFS" ;)
#! /bin/sh
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin LOG="/var/log/automount.log" STATE="/var/run/automount.state" DATEFMT="%Y-%m-%d %H:%M:%S"
__create_mount_point() { # /* 1=DEV */ MNT="/mnt/$( basename ${1} )" mkdir -p ${MNT} }
__state_lock() { while [ -f ${STATE}.lock ]; do sleep 0.5; done :> ${STATE}.lock }
__state_unlock() { rm ${STATE}.lock }
__state_add() { # /* 1=DEV 2=PROVIDER 3=MNT */ __state_lock grep -E "${3}" ${STATE} 1> /dev/null 2> /dev/null && { __log "${1}:duplicated '${STATE}'" return 1 } echo "${1} ${2} ${3}" >> ${STATE} __state_unlock }
__state_remove() { # /* 1=MNT 2=STATE 3=LINE */ BSMNT=$( echo ${1} | sed 's/\//\\\//g' ) sed -i '' "/${BSMNT}\$/d" ${2} }
__log() { # /* @=MESSAGE */ echo $( date +"${DATEFMT}" ) ${@} >> ${LOG} }
case ${2} in (attach) for I in /dev/${1}* do case $( file -L -s ${I} | sed -E 's/label:\ \".*\"//g' ) in (*NTFS*) dd < ${I} count=1 2> /dev/null \ | strings \ | head -1 \ | grep -q "NTFS" && { __create_mount_point ${I} ntfs-3g ${I} ${MNT} # /* sysutils/fusefs-ntfs */ __log "${I}:mount (ntfs)" } ;; (*FAT*) dd < ${I} count=1 2> /dev/null \ | strings \ | grep -q "FAT32" && { __create_mount_point ${I} fsck_msdosfs -y ${I} mount_msdosfs -o large -l -L pl_PL.ISO8859-2 -D cp852 ${I} ${MNT} __log "${I}:mount (fat)" } ;; (*ext2*) __create_mount_point ${I} fsck.ext2 -y ${I} mount -t ext2fs ${I} ${MNT} __log "${I}:mount (ext2)" ;; (*ext3*) __create_mount_point ${I} fsck.ext3 -y ${I} mount -t ext2fs ${I} ${MNT} __log "${I}:mount (ext3)" ;; (*ext4*) __create_mount_point ${I} fsck.ext4 -y ${I} ext4fuse ${I} ${MNT} # /* sysutils/fusefs-ext4fuse */ __log "${I}:mount (ext4)" ;; (*Unix\ Fast\ File*) __create_mount_point ${I} fsck_ufs -y ${I} mount ${I} ${MNT} __log "${I}:mount (ufs)" ;; (*) case $( dd < ${I} count=1 2> /dev/null | strings | head -1 ) in (EXFAT) __create_mount_point ${I} mount.exfat ${I} ${MNT} # /* sysutils/fusefs-exfat */ __log "${I}:mount (ufs)" ;; (*) continue ;; esac ;; esac __state_add ${I} $( mount | grep -m 1 " ${MNT} " | awk '{printf $1}' ) \ ${MNT} || continue done ;;
(detach)
MOUNT=$( mount )
__state_lock
grep ${1} ${STATE} \
| while read DEV PROVIDER MNT
do
TARGET=$( echo "${MOUNT}" | grep -E "^${PROVIDER} " | awk '{print $3}'
)
[ -z ${TARGET} ] && {
__state_remove ${MNT} ${STATE} ${LINE}
continue
}
umount -f ${TARGET} &
unset TARGET
__state_remove ${MNT} ${STATE} ${LINE}
__log "${DEV}:umount"
done
__state_unlock
__log "/dev/${1}:detach"
;;
esac
_______________________________________________ free...@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-hackers To unsubscribe, send any mail to "free...@freebsd.org"





