6 # Print newline-separated list of devices available for mounting.
7 # If there is a filesystem label - use it, otherwise use device name.
9 local _fstype _fstype_and_label _label _p
11 for _p
in ${DEVICES}; do
12 # XXX: Ingore /dev/md*
13 if [ "`echo ${_p} | sed -n '/^md/p'`" != "" ]; then
17 _fstype_and_label
="$(fstyp -l "/dev
/${_p}" 2> /dev/null)"
19 # Ignore devices for which we were unable
20 # to determine filesystem type.
24 _fstype
="${_fstype_and_label%% *}"
25 if [ "${_fstype}" != "${_fstype_and_label}" ]; then
26 _label
="${_fstype_and_label#* }"
27 # Replace plus signs and slashes with minuses;
28 # leading plus signs have special meaning in maps,
29 # and multi-component keys are just not supported.
30 _label
="$(echo ${_label} | sed 's,[+/],-,g')"
39 # Print a single map entry.
48 if [ -f "/usr/local/sbin/mount.exfat" ]; then
49 echo "-mountprog=/usr/local/sbin/mount.exfat,fstype=${_fstype},nosuid :/dev/${_p}"
51 /usr
/bin
/logger
-p info
-t "special_media[$$]" \
52 "Cannot mount ${_fstype} formatted device /dev/${_p}: Install sysutils/fusefs-exfat first"
57 if [ -f "/usr/local/bin/ntfs-3g" ]; then
58 echo "-mountprog=/usr/local/bin/ntfs-3g,fstype=${_fstype},nosuid :/dev/${_p}"
60 /usr
/bin
/logger
-p info
-t "special_media[$$]" \
61 "Cannot mount ${_fstype} formatted device /dev/${_p}: Install sysutils/fusefs-ntfs first"
66 echo "-fstype=${_fstype},nosuid,async :/dev/${_p}"
69 echo "-fstype=${_fstype},nosuid :/dev/${_p}"
74 # Determine map entry contents for the given key and print out the entry.
76 local _fstype _fstype_and_label _label _key _p
80 _fstype
="$(fstyp "/dev
/${_key}" 2> /dev/null)"
82 print_map_entry
"${_fstype}" "${_key}"
86 for _p
in ${DEVICES}; do
87 # XXX: Ingore /dev/md*
88 if [ "`echo ${_p} | sed -n '/^md/p'`" != "" ]; then
92 _fstype_and_label
="$(fstyp -l "/dev
/${_p}" 2> /dev/null)"
94 # Ignore devices for which we were unable
95 # to determine filesystem type.
99 _fstype
="${_fstype_and_label%% *}"
100 if [ "${_fstype}" = "${_fstype_and_label}" ]; then
101 # No label, try another device.
105 _label
="${_fstype_and_label#* }"
106 # Replace plus signs and slashes with minuses;
107 # leading plus signs have special meaning in maps,
108 # and multi-component keys are just not supported.
109 _label
="$(echo ${_label} | sed 's,[+/],-,g')"
110 if [ "${_label}" != "${_key}" ]; then
111 # Labels don't match, try another device.
115 print_map_entry
"${_fstype}" "${_p}"
118 # No matching device - don't print anything, autofs will handle it.
121 # XXX: Find a better way to get a list of media devices
122 KERN_DISKS
=`sysctl kern.disks`
123 if [ $?
-ne 0 ]; then
126 DEVICES
=`echo ${KERN_DISKS} | awk '{$1=""; print substr($0,2)}' | awk '{gsub(" ", "\n"); print}' | sort`
128 if [ $# -eq 0 ]; then