aboutsummaryrefslogtreecommitdiff
path: root/functions
diff options
context:
space:
mode:
authorDave Reisner <dreisner@archlinux.org>2012-04-06 12:15:53 -0400
committerDave Reisner <dreisner@archlinux.org>2012-04-17 08:39:22 -0400
commitfa168b92773d44cb97cff05a47c53ed899315120 (patch)
treeac2d47b381724eaa7e8326a3f50679c8104a0467 /functions
parent0fa2a47e78d318673039f08b6dc77e6abcf7b8ad (diff)
downloadinitscripts-fa168b92773d44cb97cff05a47c53ed899315120.tar.xz
functions: use a pipe for umount_all instead of a PE
We don't care about the side effects of the subshell created by the pipe since everything is localized within this function. Use the more "canonical" syntax. This should stop the recurring bug reports that we seem to get from people who think they understand Bash syntax, e.g. FS#27203 FS#28331 FS#29145 FS#28582 FS#27098 FS#29496 Signed-off-by: Dave Reisner <dreisner@archlinux.org>
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
+ }
}