diff options
Diffstat (limited to 'hwdb/ids-update.pl')
-rwxr-xr-x | hwdb/ids-update.pl | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/hwdb/ids-update.pl b/hwdb/ids-update.pl new file mode 100755 index 0000000000..d157040deb --- /dev/null +++ b/hwdb/ids-update.pl @@ -0,0 +1,80 @@ +#!/usr/bin/perl + +use strict; +use warnings; + +my $vendor; + +open(IN, "<", "usb.ids"); +open(OUT, ">", "20-usb-vendor-product.hwdb"); +print(OUT "# This file is part of systemd.\n" . + "#\n" . + "# Data imported and updated from: http://www.linux-usb.org/usb.ids\n"); + +while (my $line = <IN>) { + $line =~ s/\s+$//; + $line =~ m/^([0-9a-f]{4})\s*(.*)$/; + if (defined $1) { + $vendor = uc $1; + my $text = $2; + print(OUT "\n"); + print(OUT "usb:v" . $vendor . "*\n"); + print(OUT " ID_VENDOR_FROM_DATABASE=" . $text . "\n"); + next; + } + + $line =~ m/^\t([0-9a-f]{4})\s*(.*)$/; + if (defined $1) { + my $product = uc $1; + my $text = $2; + print(OUT "\n"); + print(OUT "usb:v" . $vendor . "p" . $product . "*\n"); + print(OUT " ID_PRODUCT_FROM_DATABASE=" . $text . "\n"); + } +} +close(INP); +close(OUTP); + + +my $device; + +open(IN, "<", "pci.ids"); +open(OUT, ">", "20-pci-vendor-product.hwdb"); +print(OUT "# This file is part of systemd.\n" . + "#\n" . + "# Data imported and updated from: http://pciids.sourceforge.net/v2.2/pci.ids\n"); + +while (my $line = <IN>) { + $line =~ s/\s+$//; + $line =~ m/^([0-9a-f]{4})\s*(.*)$/; + if (defined $1) { + $vendor = uc $1; + my $text = $2; + print(OUT "\n"); + print(OUT "pci:v0000" . $vendor . "*\n"); + print(OUT " ID_VENDOR_FROM_DATABASE=" . $text . "\n"); + next; + } + + $line =~ m/^\t([0-9a-f]{4})\s*(.*)$/; + if (defined $1) { + $device = uc $1; + my $text = $2; + print(OUT "\n"); + print(OUT "pci:v0000" . $vendor . "d0000" . $device . "*\n"); + print(OUT " ID_PRODUCT_FROM_DATABASE=" . $text . "\n"); + next; + } + + $line =~ m/^\t\t([0-9a-f]{4})\s*([0-9a-f]{4})\s*(.*)$/; + if (defined $1) { + my $sub_vendor = uc $1; + my $sub_device = uc $2; + my $text = $3; + print(OUT "\n"); + print(OUT "pci:v0000" . $vendor . "d0000" . $device . "sv0000" . $sub_vendor . "sd0000" . $sub_device . "*\n"); + print(OUT " ID_PRODUCT_FROM_DATABASE=" . $text . "\n"); + } +} +close(INP); +close(OUTP); |