# HG changeset patch # User Pascal Bellard # Date 1470304335 -7200 # Node ID 05203af2f9b4c76881146cb45062a76418b1ae21 # Parent 082ddf66f84bdb0cba602ac48cab470244d12e83 hardware.cgi: read pci.ids diff -r 082ddf66f84b -r 05203af2f9b4 hardware.cgi --- a/hardware.cgi Sun Jul 17 20:32:35 2016 -0400 +++ b/hardware.cgi Thu Aug 04 11:52:15 2016 +0200 @@ -79,7 +79,22 @@ EOT - lspci | sed 's| ||; + lspci | while read a b c id ; do + echo -n "$a " + if [ $b != "Class" ] || [ ! -s /usr/share/misc/pci.ids.gz ]; then + echo "$b $c $id" + continue + fi + zcat /usr/share/misc/pci.ids.gz | \ + awk -va=${c:0:2} -vb=${c:2:2} -vh=${id:0:4} -vl=${id:5:4} '{ + if ($1 == "C" && $2 == a) class=substr($0,5) + if (class != "" && $1 == b) { class=substr($0,5); exit } + if (substr($0,1,4) == h) m=substr($0,7) + else if (m == "") next + else if (substr($0,2,4) == l) { name=m substr($0,7); m="" } + else if ($1 == h && $2 == l) { name=m substr($0,14); m="" } +} END { print class ": " name }' + done | sed 's| ||; s|: ||; s|^\([^<]*\)|\1|; s|^.*$|\0|'