Fix FAT32 mount. Add extended options for EXFAT mounts.

This commit is contained in:
vermaden 2017-11-17 15:01:05 +01:00
parent dc41984861
commit e23a731687
1 changed files with 40 additions and 6 deletions

46
automount Executable file → Normal file
View File

@ -180,6 +180,8 @@ __create_mount_point() { # 1=DEV
if [ "${USER}" != 0 ] if [ "${USER}" != 0 ]
then then
chown ${USER}:$( id -g -n ${USER} ) ${MNT} chown ${USER}:$( id -g -n ${USER} ) ${MNT}
UID=$( id -u ${USER} )
GID=$( id -g ${USER} )
fi fi
} }
@ -423,12 +425,36 @@ case ${2} in
__log "${DEV}: fsck_msdosfs ${LINE}" __log "${DEV}: fsck_msdosfs ${LINE}"
done done
__wait_for_device ${DEV} __wait_for_device ${DEV}
if mount_msdosfs ${OPTS} -o large -o longnames -m 644 -M 755 \ if [ "${USER}" != 0 ]
-D ${CODEPAGE} -L ${ENCODING} ${DEV} ${MNT} then
USEROPTS="-u ${UID} -g ${GID}"
else
USEROPTS=""
fi
FATCMD=$( mount_msdosfs ${OPTS} -o large -o longnames -m 644 -M 755 -D ${CODEPAGE} -L ${ENCODING} ${USEROPTS} ${DEV} ${MNT} )
if ${FATCMD}
then then
ADD=1 ADD=1
else else
__log "${DEV}: mount failed (fat) 'mount_msdosfs ${OPTS} -o large -o longnames -D ${CODEPAGE} -L ${ENCODING} -m 644 -M 755 ${DEV} ${MNT}'" FATOUT=16
FATCUR=0
while sleep 1
do
FATCUR=$(( FATCUR + 1 ))
if [ ${FATCUR} -gt ${FATOUT} ]
then
__log "${DEV}: mount failed (fat) 'mount_msdosfs ${OPTS} -o large -o longnames -D ${CODEPAGE} -L ${ENCODING} -m 644 -M 755 ${USEROPTS} ${DEV} ${MNT}'"
break
fi
FATCMD
if [ ${?} -eq 0 ]
then
ADD=1
break
else
continue
fi
done
exit 1 exit 1
fi fi
__log "${DEV}: mount (fat)" __log "${DEV}: mount (fat)"
@ -524,11 +550,19 @@ case ${2} in
(EXFAT) (EXFAT)
__create_mount_point ${DEV} __create_mount_point ${DEV}
__wait_for_device ${DEV} __wait_for_device ${DEV}
if mount.exfat ${OPTS} ${DEV} ${MNT} # sysutils/fusefs-exfat if [ "${USER}" != 0 ]
then
USEROPTS="-o uid=${UID} -o gid=${GID}"
else
USEROPTS=""
fi
# sysutils/fusefs-exfat
if mount.exfat ${OPTS} ${USEROPTS} -o dmask=022 -o fmask=133 \
-o noatime ${DEV} ${MNT}
then then
ADD=1 ADD=1
else else
__log "${DEV}: mount failed (exfat) 'mount.exfat ${OPTS} ${DEV} ${MNT}'" __log "${DEV}: mount failed (exfat) 'mount.exfat ${OPTS} ${USEROPTS} ${DEV} ${MNT}'"
exit 1 exit 1
fi fi
__log "${DEV}: mount (exfat)" __log "${DEV}: mount (exfat)"
@ -557,7 +591,7 @@ case ${2} in
grep -E "${MNTPREFIX}/${1}$" ${STATE} \ grep -E "${MNTPREFIX}/${1}$" ${STATE} \
| while read DEV PROVIDER MNT | while read DEV PROVIDER MNT
do do
TARGET=$( mount | grep -E "^${PROVIDER} " | awk '{print $3}' ) TARGET=$( mount | grep -v \.gvfs | grep -m 1 -E "^${PROVIDER} " | awk '{print $3}' )
__state_remove ${MNT} __state_remove ${MNT}
if [ -z ${TARGET} ] if [ -z ${TARGET} ]
then then