fix _make_git_tar_dir.sh - don't 'append directory' to symlinks
[cmdllinux.git] / scripts / mountall
blob745b654f76b0dd9ea182cba74235086f0e509acb
1 #! /bin/sh
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
28 find /sys/devices -path "*/block/*" \( -name "sd*" -o -name "ub*" -o -name "hd*" -o -name "mmcblk*" \) | sed "s%.*/%%" | \
29 while read dev; do
30 type=`blkid -o udev -s TYPE -p /dev/$dev`
31 if [ ! -z "$type" ]; then
32 eval $type
33 validfs $ID_FS_TYPE || continue
35 [ "$ID_FS_TYPE" = "ufs" ] && continue
37 if [ "$ID_FS_TYPE" = "iso9660" ]; then
38 grep -q "^/dev/$(echo "$dev" | sed 's%[0-9]\+$%%') " /proc/mounts && continue
39 else
40 grep -q "^/dev/$dev " /proc/mounts && continue
42 UUID=`blkid -p -s UUID -o value /dev/$dev`
43 [ -z "$UUID" ] && UUID=$dev
44 case "$ID_FS_TYPE" in
45 vfat|ntfs)
46 if [ -z "$udisk" -a -z "$udisk2" ]; then
47 mkdir -p /media/$UUID > /dev/null 2>&1 && \
48 mount $opts /dev/$dev /media/$UUID
49 else
50 if [ ! -z "$udisk" ]; then
51 if which udiskctl > /dev/null 2>&1; then
52 udiskctl mount $opts -b /dev/$dev
53 else
54 udisks $udisk_opts --mount /dev/$dev
56 else
57 udisksctl mount $opts -b /dev/$dev
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
77 esac
79 done