#!/usr/bin/perl -w

use strict;
use warnings;

my $vendor;
my $vendor_id;
my $device;
my $device_id;

use encoding 'utf8', STDIN => 'iso88591';

print "<libosinfo version='1.0'>\n";
while (<>) {

    next if /^#/;
    next if /^\s*$/;

    if (/^([0-9a-f]{4})\s+(.*?)\s*$/) {
	$vendor = $2;
	$vendor_id = $1;
    } elsif (/^\t([0-9a-f]{4})\s+(.*?)\s*$/) {
	$device = $2;
	$device_id = $1;

	&one_device($vendor, $vendor_id, $device, $device_id);
    } else {
	#warn $_;
    }
}
print "</libosinfo>\n";

sub escape {
    my $data = shift;

    $data =~ s/&/&amp;/g;
    $data =~ s/</&lt;/g;
    $data =~ s/>/&gt;/g;

    return $data;
}

sub one_device {
    my $vendor = shift;
    my $vendor_id = shift;
    my $device = shift;
    my $device_id = shift;

    $vendor = &escape($vendor);
    $device = &escape($device);

    my $id = "http://www.linux-usb.org/usb.ids";
    $id .= "/$vendor_id/$device_id";

    print <<EOF;
  <device id="$id">
    <bus-type>usb</bus-type>
    <vendor>$vendor</vendor>
    <vendor-id>$vendor_id</vendor-id>
    <device>$device</device>
    <device-id>$device_id</device-id>
  </device>
EOF
}
