#!/bin/false for path in $(find /sys/devices -name "$MDEV" 2>/dev/null); do DEVPATH=${path#/sys} done MODALIAS=$(cat /sys${DEVPATH}/modalias 2>/dev/null) parse_interface () { printf '%d/%d/%d' $(sed 's/.*dp[0-F]\{2\}//;s/[iscp]\+/ 0x/g') } parse_type () { printf '%d/%d/%d' $(sed 's/.*d[0-9]\{4\}//;s/ic.*//;s/[dscp]\+/ 0x/g') } parse_product () { sed 's!^usb:\(.*\)dc.*!\1!;s![vpd]!/!g;s!/0\{1,3\}!/!g;s!^/!!;y!ABCDEF!abcdef!' } TYPE=$(echo $MODALIAS | parse_type) PRODUCT=$(echo $MODALIAS | parse_product) INTERFACE=$(echo $MODALIAS | parse_interface) for var in DEVPATH MODALIAS TYPE PRODUCT INTERFACE; do if [ -z "$(eval "echo \$${var}")" ]; then LOGERROR "Could not set uevent environment variable $var" exit 1 fi done unset path var unset -f parse_type parse_interface parse_product