diff options
Diffstat (limited to 'scripts/vendorid/insert_vendors.php')
-rw-r--r-- | scripts/vendorid/insert_vendors.php | 124 |
1 files changed, 124 insertions, 0 deletions
diff --git a/scripts/vendorid/insert_vendors.php b/scripts/vendorid/insert_vendors.php new file mode 100644 index 0000000..630a88d --- /dev/null +++ b/scripts/vendorid/insert_vendors.php @@ -0,0 +1,124 @@ +#! /usr/bin/php +<?php + +//created by Antonio Gallo (tonicucoz@yahoo.com) and P. J. McDermott +//Additional changes by Ian Gilfillan +// this script is in the Public Domain + + +//Accepts on argument, either -v or -s +//-v for verbose, which shows all the inserts/updates that are being made +//-s for safe, which shows all the inserts/updates to be made without actually making them +if (isset($argv[1])) { + if ($argv[1]=='-v') { + $verbose=1; + $change=1; + } + elseif ($argv[1]=='-s'){ + $change=0; + $verbose=1; + } +} +else { + $verbose=0; + $change=1; +} + +include("connect.php"); +include("functions.php"); + +//insert the PCI vendors +$ids_fp = fopen('pci.ids', 'r'); + +while (($line = fgets($ids_fp)) !== false) { + if (preg_match('/^([0-9a-f]{4})\s+(.*)\s*$/', + $line, $matches) == 1) { + $vendorid = $matches[1]; + $full_name = sanitizeDb(decode_soft($matches[2])); + $clean_name = sanitizeDb(decode($matches[2])); + + // Check if record exists, insert if not + $query = "SELECT vendorid, clean_name FROM vendors WHERE vendorid='$vendorid' AND bus='PCI'"; + if ($result = DB::$instance->query($query)) { + $found = $result->num_rows; + } + if ($found == 0) { + //insert + $query = "INSERT INTO vendors (bus,vendorid,clean_name,full_name) VALUES ('PCI','$vendorid','$clean_name','$full_name');"; + if ($verbose) { + echo "\n Adding record: PCI $vendorid $clean_name $full_name"; + } + if ($change) { + DB::$instance->query($query); + } + } + + // Check if record has changed, update if so + $query = "SELECT vendorid, clean_name, full_name FROM vendors WHERE vendorid='$vendorid' AND (BINARY clean_name!='$clean_name' OR BINARY full_name!='$full_name') AND bus='PCI'"; + if ($result = DB::$instance->query($query)) { + $found = $result->num_rows; + } + if ($found > 0) { + $row = $result->fetch_assoc(); + //update + $query = "UPDATE vendors SET clean_name='$clean_name', full_name='$full_name' WHERE vendorid='$vendorid' AND bus='PCI';"; + if ($verbose) { + echo "\n Updating record - old value: PCI " . $row['clean_name'] . " " . $row['full_name']; + echo "\n Updating record - new value: PCI $clean_name $full_name"; + } + if ($change) { + DB::$instance->query($query); + } + } + } +} + +fclose($ids_fp); + +//insert the USB vendors +$ids_fp = fopen('usb.ids', 'r'); + +while (($line = fgets($ids_fp)) !== false) { + if (preg_match('/^([0-9a-f]{4})\s+(.*)\s*$/', + $line, $matches) == 1) { + $vendorid = $matches[1]; + $full_name = sanitizeDb(decode_soft($matches[2])); + $clean_name = sanitizeDb(decode($matches[2])); + + $query = "SELECT vendorid FROM vendors WHERE vendorid='$vendorid' AND bus='USB'"; + if ($result = DB::$instance->query($query)) { + $found = $result->num_rows; + } + if ($found == 0) { + //insert + $query = "INSERT INTO vendors (bus,vendorid,clean_name,full_name) VALUES ('USB','$vendorid','$clean_name','$full_name');"; + if ($verbose) { + echo "\n Adding record: USB $vendorid $clean_name $full_name"; + } + if ($change) { + DB::$instance->query($query); + } + } + + + // Check if record has changed, update if so + $query = "SELECT vendorid, clean_name, full_name FROM vendors WHERE vendorid='$vendorid' AND (BINARY clean_name!='$clean_name' OR BINARY full_name!='$full_name') AND bus='USB'"; + if ($result = DB::$instance->query($query)) { + $found = $result->num_rows; + } + if ($found >0) { + $row = $result->fetch_assoc(); + $query = "UPDATE vendors SET clean_name='$clean_name', full_name='$full_name' WHERE vendorid='$vendorid' AND bus='USB';"; + if ($verbose) { + echo "\n Updating record - old value: USB " . $row['clean_name'] . " " . $row['full_name']; + echo "\n Updating record - new value: USB $clean_name $full_name"; + } + if ($change) { + DB::$instance->query($query); + } + } + + } +} + +fclose($ids_fp); |