1 1.1.2.2 yamt #!/bin/sh 2 1.1.2.2 yamt # 3 1.1.2.2 yamt # $NetBSD: 02-wedgenames,v 1.1.2.2 2013/01/23 00:05:28 yamt Exp $ 4 1.1.2.2 yamt # 5 1.1.2.2 yamt # Try to maintain symlinks to wedge devices 6 1.1.2.2 yamt # 7 1.1.2.2 yamt 8 1.1.2.2 yamt event="$1" 9 1.1.2.2 yamt device="$2" 10 1.1.2.2 yamt 11 1.1.2.2 yamt wedgedir=/dev/wedges 12 1.1.2.2 yamt 13 1.1.2.2 yamt remove_wedge() { 14 1.1.2.2 yamt find $wedgedir -print \ 15 1.1.2.2 yamt | sed -e 's# #\\ #g' \ 16 1.1.2.2 yamt | while read w; do 17 1.1.2.2 yamt t=$(readlink "$w") 18 1.1.2.2 yamt if [ x"$t" = x"/dev/$device" ]; then 19 1.1.2.2 yamt rm -f "$w" 20 1.1.2.2 yamt basedir=$(dirname "$w") 21 1.1.2.2 yamt rmdir -p "$basedir" 2>/dev/null 22 1.1.2.2 yamt fi 23 1.1.2.2 yamt done 24 1.1.2.2 yamt } 25 1.1.2.2 yamt 26 1.1.2.2 yamt add_wedge() { 27 1.1.2.2 yamt n=$(dkctl "$device" getwedgeinfo \ 28 1.1.2.2 yamt | sed -ne '1s#^[^:]*: ##p' \ 29 1.1.2.2 yamt | awk -v GOOD='._:;!^$&~()[]{}=,+-/' ' 30 1.1.2.2 yamt BEGIN { 31 1.1.2.2 yamt for (i=0; i<256; ++i) 32 1.1.2.2 yamt ord[sprintf("%c",i)] = i 33 1.1.2.2 yamt } 34 1.1.2.2 yamt { 35 1.1.2.2 yamt n = length($0) 36 1.1.2.2 yamt o = "" 37 1.1.2.2 yamt for (i=1; i<=n; ++i) { 38 1.1.2.2 yamt c = substr($0,i,1) 39 1.1.2.2 yamt if (c ~ /^[[:alnum:]]$/ || index(GOOD,c) > 0) { 40 1.1.2.2 yamt o = o c 41 1.1.2.2 yamt } else { 42 1.1.2.2 yamt o = o sprintf("%%%02x",ord[c]) 43 1.1.2.2 yamt } 44 1.1.2.2 yamt } 45 1.1.2.2 yamt printf "%s",o 46 1.1.2.2 yamt }' 47 1.1.2.2 yamt ) 48 1.1.2.2 yamt case $n in 49 1.1.2.2 yamt "") ;; 50 1.1.2.2 yamt *) 51 1.1.2.2 yamt test -d $wedgedir || mkdir -m 755 $wedgedir 52 1.1.2.2 yamt basedir=$(dirname "$wedgedir/$n") 53 1.1.2.2 yamt test -d "$basedir" || mkdir -p -m 755 "$basedir" 54 1.1.2.2 yamt ln -s "/dev/$device" "$wedgedir/$n" 55 1.1.2.2 yamt ;; 56 1.1.2.2 yamt esac 57 1.1.2.2 yamt } 58 1.1.2.2 yamt 59 1.1.2.2 yamt case $device in 60 1.1.2.2 yamt dk*) 61 1.1.2.2 yamt case $event in 62 1.1.2.2 yamt device-attach) 63 1.1.2.2 yamt remove_wedge 64 1.1.2.2 yamt add_wedge 65 1.1.2.2 yamt ;; 66 1.1.2.2 yamt device-detach) 67 1.1.2.2 yamt remove_wedge 68 1.1.2.2 yamt ;; 69 1.1.2.2 yamt esac 70 1.1.2.2 yamt ;; 71 1.1.2.2 yamt esac 72