#!/bin/sh # # $NetBSD: 03-ucomnames $ # # Try to maintain symlinks to ucom devices # event="$1" shift devices=$@ ucomdir=/dev/ucom add_unit() { local tty name local s tty="/dev/ttyU$1" name="ucom$1" drvctl -p "$name" /device-unit /device-parent /port \ | while read s; do i=$((i + 1)) case $i in 1) unit=$s ;; 2) device=$s ;; 3) port=$s if s=$(drvctl -p "$device" /serialnumber); then mkdir -p -m 755 "$ucomdir" ln -fs "$tty" "$ucomdir/ttyU.$s.$port" >&2 fi break ;; esac done } remove_unit() { local tty local p tty="/dev/ttyU$1" for p in "$ucomdir"/*; do case $(readlink "$p") in "$tty") rm -- "$p" ;; esac done } for device in $devices; do case $device in ucom[0-9]*) unit=${device#ucom} case $event in device-attach) remove_unit "$unit" add_unit "$unit" ;; device-detach) remove_unit "$unit" ;; esac ;; esac done