cleanup
[cmdllinux.git] / scripts / mountall
blob43a7e1cf8c4a80d2d49e0a0cc03889986e58a65b
1 #! /bin/bash
3 [ "$1" = "-r" ] && opts="-o ro" && udisk_opts="--mount-options $(echo "$opts" | sed 's/^-o //')"
5 validfs()
7 cat /lib/modules/`uname -r`/modules.builtin /lib/modules/`uname -r`/modules.order 2> /dev/null | \
8 grep -q "kernel/fs/.*/$1.ko"
9 [ $? = 0 ] && rv1=0 || rv1=1
10 test -e /sbin/mount.$1
11 [ $? = 0 ] && rv2=0 || rv2=1
12 grep -v "^nodev" /proc/filesystems | grep -qw "$1"
13 [ $? = 0 ] && rv3=0 || rv3=1
14 cat /lib/modules/`uname -r`/modules.alias 2> /dev/null | \
15 grep -q "^alias fs-$1 "
16 [ $? = 0 ] && rv4=0 || rv4=1
18 [ "$rv1$rv2$rv3$rv4" = "1111" ] && return 1 || return 0
21 pidof udisks-daemon > /dev/null 2>&1 && udisk=1
22 pidof udisksd > /dev/null 2>&1 && udisk2=1
23 if [ -z "$udisk" -a -z "$udisk2" ]; then
24 [ ! -d /media ] && mkdir /media
25 ! mountpoint /media > /dev/null && mount -t tmpfs tmpfs /media
29 DEVS=`find /sys/devices -path "*/block/*" \( -name "sd*" -o -name "ub*" -o -name "hd*" -o -name "mmcblk*" \) | sed "s%.*/%%"`
30 kpartx=`ls /dev/mapper/loop?p?* 2> /dev/null | sed "s%^/dev/%%"`
33 lsdevs()
35 for i in $DEVS; do
36 echo "$i"
37 done
38 for i in $kpartx; do
39 echo "$i"
40 done
44 lsdevs | \
45 while read dev; do
46 type=`blkid -o udev -s TYPE -p /dev/$dev`
47 if [ ! -z "$type" ]; then
48 eval $type
49 validfs $ID_FS_TYPE || continue
51 [ "$ID_FS_TYPE" = "ufs" ] && continue
53 if [ "$ID_FS_TYPE" = "iso9660" ]; then
54 grep -q "^/dev/$(echo "$dev" | sed 's%[0-9]\+$%%') " /proc/mounts && continue
55 else
56 grep -q "^/dev/$dev " /proc/mounts && continue
58 UUID=`blkid -p -s UUID -o value /dev/$dev`
59 [ -z "$UUID" ] && UUID=$dev
60 case "$ID_FS_TYPE" in
61 vfat|ntfs)
62 if [ -z "$udisk" -a -z "$udisk2" ]; then
63 mkdir -p /media/$UUID > /dev/null 2>&1 && \
64 mount $opts /dev/$dev /media/$UUID
65 else
66 if [ ! -z "$udisk" ]; then
67 if which udiskctl > /dev/null 2>&1; then
68 udiskctl mount $opts -b /dev/$dev
69 else
70 udisks $udisk_opts --mount /dev/$dev
72 else
73 udisksctl mount $opts -b /dev/$dev
78 if [ -z "$udisk" -a -z "$udisk2" ]; then
79 mkdir -p /media/$UUID > /dev/null 2>&1 && \
80 mount $opts /dev/$dev /media/$UUID
81 else
82 if [ ! -z "$udisk" ]; then
83 if which udiskctl > /dev/null 2>&1; then
84 udiskctl mount $opts -b /dev/$dev
85 else
86 udisks $udisk_opts --mount /dev/$dev
88 else
89 udisksctl mount $opts -b /dev/$dev
93 esac
95 done