40 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			40 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
#!/bin/ksh
 | 
						|
 | 
						|
# set the video device via argument (if you put something stupid her, so be it...)
 | 
						|
[ ! -z $1 ] && doas ln -sf /dev/video$1 /dev/video
 | 
						|
 | 
						|
# we need it a few times, and caching is faster
 | 
						|
DUMP=$(dmesg)
 | 
						|
 | 
						|
# save the current active video device
 | 
						|
_cur=$(ls -l /dev/video | sed  's/.*\(.$\)/\1/')
 | 
						|
 | 
						|
# starting from dev 4, you need to cd /dev && sh MAKEDEV videoX
 | 
						|
for i in 0 1 2 3 4 5 6
 | 
						|
do
 | 
						|
    # find video attach and detach lines
 | 
						|
    _input="$(echo "$DUMP" | grep -E "^video$i\ at.*|^video$i detached" | tail -n 1)"
 | 
						|
 | 
						|
    # if the last match is a detached line, stop here
 | 
						|
    echo "$_input" | grep -q "detached" && continue
 | 
						|
 | 
						|
    # take the number from videoX, then grep for what's attached to find
 | 
						|
    # the last description for this device (usb devices may change order
 | 
						|
    # during runtime)
 | 
						|
 | 
						|
    _type=$(echo "$_input" | cut -d" " -f3)
 | 
						|
    _number=$(echo "$_input" | cut -d" " -f1 | sed 's/[a-z]//g')
 | 
						|
    _desc=$(echo "$DUMP" | grep -E "^$_type at.*" | tail -1 | cut -d'"' -f2)
 | 
						|
 | 
						|
    # Once we walked to the first non-existing device, we stop.
 | 
						|
    [ -z $_number ] && exit 0
 | 
						|
 | 
						|
    # Show the device list and mark the current one
 | 
						|
    if [ $_cur -eq $_number ]
 | 
						|
    then
 | 
						|
        echo "> $_number: $_desc"
 | 
						|
    else
 | 
						|
        echo "  $_number: $_desc"
 | 
						|
    fi
 | 
						|
done
 |