aboutsummaryrefslogtreecommitdiff
path: root/functions
diff options
context:
space:
mode:
Diffstat (limited to 'functions')
-rw-r--r--functions41
1 files changed, 20 insertions, 21 deletions
diff --git a/functions b/functions
index 3096aaa..7516345 100644
--- a/functions
+++ b/functions
@@ -549,32 +549,31 @@ mount_all() {
umount_all() {
# $1: restrict to fstype
- local mounts
+ findmnt -mrunRo TARGET,FSTYPE,OPTIONS / | {
+ while read -r target fstype options; do
+ # match only targetted fstypes
+ if [[ $1 && $1 != "$fstype" ]]; then
+ continue
+ fi
- while read -r target fstype options; do
+ # don't unmount API filesystems
+ if [[ $target = /@(proc|sys|run|dev|dev/pts) ]]; then
+ continue
+ fi
- # match only targetted fstypes
- if [[ $1 && $1 != "$fstype" ]]; then
- continue
- fi
+ # avoid networked devices
+ IFS=, read -ra opts <<< "$options"
+ if in_array _netdev "${opts[@]}"; then
+ continue
+ fi
- # don't unmount API filesystems
- if [[ $target = /@(proc|sys|run|dev|dev/pts) ]]; then
- continue
- fi
+ mounts=("$target" "${mounts[@]}")
+ done
- # avoid networked devices
- IFS=, read -ra opts <<< "$options"
- if in_array _netdev "${opts[@]}"; then
- continue
+ if (( ${#mounts[*]} )); then
+ umount -r "${mounts[@]}"
fi
-
- mounts=("$target" "${mounts[@]}")
- done < <(findmnt -mrunRo TARGET,FSTYPE,OPTIONS /)
-
- if (( ${#mounts[*]} )); then
- umount -r "${mounts[@]}"
- fi
+ }
}