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.
46 if [ "${_fstype}" = "ntfs" ]; then
47 if [ -f "/usr/local/bin/ntfs-3g" ]; then
48 echo "-mountprog=/usr/local/bin/ntfs-3g,fstype=${_fstype},nosuid :/dev/${_p}"
50 /usr
/bin
/logger
-p info
-t "special_media[$$]" \
51 "Cannot mount ${_fstype} formatted device /dev/${_p}: Install sysutils/fusefs-ntfs first"
55 echo "-fstype=${_fstype},nosuid :/dev/${_p}"
59 # Determine map entry contents for the given key and print out the entry.
61 local _fstype _fstype_and_label _label _key _p
65 _fstype
="$(fstyp "/dev
/${_key}" 2> /dev/null)"
67 print_map_entry
"${_fstype}" "${_key}"
71 for _p
in ${DEVICES}; do
72 # XXX: Ingore /dev/md*
73 if [ "`echo ${_p} | sed -n '/^md/p'`" != "" ]; then
77 _fstype_and_label
="$(fstyp -l "/dev
/${_p}" 2> /dev/null)"
79 # Ignore devices for which we were unable
80 # to determine filesystem type.
84 _fstype
="${_fstype_and_label%% *}"
85 if [ "${_fstype}" = "${_fstype_and_label}" ]; then
86 # No label, try another device.
90 _label
="${_fstype_and_label#* }"
91 # Replace plus signs and slashes with minuses;
92 # leading plus signs have special meaning in maps,
93 # and multi-component keys are just not supported.
94 _label
="$(echo ${_label} | sed 's,[+/],-,g')"
95 if [ "${_label}" != "${_key}" ]; then
96 # Labels don't match, try another device.
100 print_map_entry
"${_fstype}" "${_p}"
103 # No matching device - don't print anything, autofs will handle it.
106 # XXX: Find a better way to get a list of media devices
107 KERN_DISKS
=`sysctl kern.disks`
108 if [ $?
-ne 0 ]; then
111 DEVICES
=`echo ${KERN_DISKS} | awk '{$1=""; print substr($0,2)}' | awk '{gsub(" ", "\n"); print}' | sort`
113 if [ $# -eq 0 ]; then