diff options
-rw-r--r-- | ChangeLog | 3 | ||||
-rw-r--r-- | Completion/Linux/Command/_lsusb | 31 |
2 files changed, 34 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog index dc34e0a78..992a7735d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,8 @@ 2007-09-30 Clint Adams <clint@zsh.org> + * 23863: Completion/Linux/Command/_lsusb: completion + for lsusb. + * 23863: Completion/Unix/Command/_git: remove all global variables. diff --git a/Completion/Linux/Command/_lsusb b/Completion/Linux/Command/_lsusb new file mode 100644 index 000000000..37701acd5 --- /dev/null +++ b/Completion/Linux/Command/_lsusb @@ -0,0 +1,31 @@ +#compdef lsusb + +local context state line usbidsline vendorid pair +typeset -A opt_args + +_arguments \ + '(-v --verbose)'{-v,--verbose}'[be verbose]' \ + '-s:bus and/or devnum to show:' \ + '-d:vendor and product to show:->vendorproduct' \ + '-D:device to show:_files' \ + '-t[dump the physical USB device hierarchy as a tree]' \ + '(-V --version)'{-V,--version}'[print version info and exit]' && return 0 + + if [[ ${+_lsusb_vendors} -eq 0 ]]; then + typeset -A _lsusb_vendors _lsusb_devices + while IFS="" read usbidsline + do + case "$usbidsline" in + ((#b)([0-9a-f]##) ##(*)) + vendorid="$match[1]" + _lsusb_vendors[$vendorid]="$match[2]" + ;; + ( (#b)([0-9a-f]##) ##(*))) + pair="$vendorid:$match[1]" + _lsusb_devices[${pair}]="$match[2]" + ;; + esac + done < <(zcat /var/lib/usbutils/usb.ids) +fi + +compadd -k _lsusb_devices |