02-wedgenames revision 1.2
11.1Smlelstv#!/bin/sh 21.1Smlelstv# 31.2Sjmcneill# $NetBSD: 02-wedgenames,v 1.2 2015/02/15 15:56:30 jmcneill Exp $ 41.1Smlelstv# 51.1Smlelstv# Try to maintain symlinks to wedge devices 61.1Smlelstv# 71.1Smlelstv 81.1Smlelstvevent="$1" 91.2Sjmcneillshift 101.2Sjmcneilldevices=$@ 111.1Smlelstv 121.1Smlelstvwedgedir=/dev/wedges 131.1Smlelstv 141.1Smlelstvremove_wedge() { 151.1Smlelstv find $wedgedir -print \ 161.1Smlelstv | sed -e 's# #\\ #g' \ 171.1Smlelstv | while read w; do 181.1Smlelstv t=$(readlink "$w") 191.2Sjmcneill if [ x"$t" = x"/dev/$1" ]; then 201.1Smlelstv rm -f "$w" 211.1Smlelstv basedir=$(dirname "$w") 221.1Smlelstv rmdir -p "$basedir" 2>/dev/null 231.1Smlelstv fi 241.1Smlelstv done 251.1Smlelstv} 261.1Smlelstv 271.1Smlelstvadd_wedge() { 281.2Sjmcneill n=$(dkctl "$1" getwedgeinfo \ 291.1Smlelstv | sed -ne '1s#^[^:]*: ##p' \ 301.1Smlelstv | awk -v GOOD='._:;!^$&~()[]{}=,+-/' ' 311.1Smlelstv BEGIN { 321.1Smlelstv for (i=0; i<256; ++i) 331.1Smlelstv ord[sprintf("%c",i)] = i 341.1Smlelstv } 351.1Smlelstv { 361.1Smlelstv n = length($0) 371.1Smlelstv o = "" 381.1Smlelstv for (i=1; i<=n; ++i) { 391.1Smlelstv c = substr($0,i,1) 401.1Smlelstv if (c ~ /^[[:alnum:]]$/ || index(GOOD,c) > 0) { 411.1Smlelstv o = o c 421.1Smlelstv } else { 431.1Smlelstv o = o sprintf("%%%02x",ord[c]) 441.1Smlelstv } 451.1Smlelstv } 461.1Smlelstv printf "%s",o 471.1Smlelstv }' 481.1Smlelstv ) 491.1Smlelstv case $n in 501.1Smlelstv "") ;; 511.1Smlelstv *) 521.1Smlelstv test -d $wedgedir || mkdir -m 755 $wedgedir 531.1Smlelstv basedir=$(dirname "$wedgedir/$n") 541.1Smlelstv test -d "$basedir" || mkdir -p -m 755 "$basedir" 551.2Sjmcneill ln -s "/dev/$1" "$wedgedir/$n" 561.1Smlelstv ;; 571.1Smlelstv esac 581.1Smlelstv} 591.1Smlelstv 601.2Sjmcneillfor device in $devices; do 611.2Sjmcneill case $device in 621.2Sjmcneill dk*) 631.2Sjmcneill case $event in 641.2Sjmcneill device-attach) 651.2Sjmcneill remove_wedge $device 661.2Sjmcneill add_wedge $device 671.2Sjmcneill ;; 681.2Sjmcneill device-detach) 691.2Sjmcneill remove_wedge $device 701.2Sjmcneill ;; 711.2Sjmcneill esac 721.1Smlelstv ;; 731.1Smlelstv esac 741.2Sjmcneilldone 75