summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuke Shumaker <lukeshu@datawire.io>2019-05-03 13:28:30 -0400
committerLuke Shumaker <lukeshu@datawire.io>2019-05-03 13:28:30 -0400
commit9f84493fc6896f919a0679569832aec6a3898a69 (patch)
tree85ad12193a098fab1b5acd225061575a4cae836a
parentd65d07f04a66a172fdb3fa4fab2b57ccba396ec0 (diff)
wmii: rbar_wifi: Clean up down interfaces
-rwxr-xr-x.config/wmii-hg/rbar_wifi29
1 files changed, 25 insertions, 4 deletions
diff --git a/.config/wmii-hg/rbar_wifi b/.config/wmii-hg/rbar_wifi
index 1a4f71a..c77efa5 100755
--- a/.config/wmii-hg/rbar_wifi
+++ b/.config/wmii-hg/rbar_wifi
@@ -1,5 +1,17 @@
#!/usr/bin/env bash
+in_array() {
+ local needle straw haystack
+ needle=$1
+ haystack=("${@:2}")
+ for straw in "${haystack[@]}"; do
+ if [[ "$needle" = "$straw" ]]; then
+ return 0
+ fi
+ done
+ return 1
+}
+
update() {
local id
id=$1
@@ -23,10 +35,19 @@ update() {
esac
parts+=("$(ifdata -pa "$iface")")
IFS='|'
- printf '%s\n' "${iface}:${parts[*]}"
- done | cat -n | while read -r n line; do
- printf "label %s\n" "$line" | write "${id}.${n}"
- done
+ printf '%s %s\n' "$iface" "${parts[*]}"
+ done | (
+ ifaces=()
+ while read -r iface data; do
+ ifaces+=("$iface")
+ printf "label %s\n" "${iface}:${data}" | write "${id}.${iface}"
+ done
+ for file in "${XDG_RUNTIME_DIR}"/wmii*/rbar/"${id}".*; do
+ if ! in_array "${file##*/"$id".}" "${ifaces[@]}"; then
+ rm -f -- "$file"
+ fi
+ done
+ )
sleep 1
done
}