rendered paste bodyclass myVendor(object):
def __init__(self):
self.name = ""
self.num = ""
self.devices = {}
class myDevice(object):
def __init__(self):
self.name = ""
self.num = ""
self.subvendors = {}
self.vendor = ""
def deviceMap(bus='pci'):
fn = "/usr/share/hwdata/%s.ids" % bus
fo = open(fn, 'r')
vendors = {}
for i in range(32000):
vendors[i] = ''
curvendor = None
curdevice = None
for line in fo.readlines():
if line.startswith('#') or not line.strip():
continue
elif not line.startswith('\t'):
curvendor = myVendor()
curvendor.num = line[0:4]
curvendor.name = line[6:-1]
curvendor.num = '0x%s' % curvendor.num
print curvendor.num
vendors[curvendor.num] = curvendor
continue
elif line.startswith('\t\t'):
line = line.replace('\t', '')
thisdev = myDevice()
thisdev.vendor = line[0:4]
thisdev.num = int(line[5:9])
thisdev.name = line[11:-1]
subvend = myVendor()
subvend.num = thisdev.vendor
subvend.name = ""
if not curdevice.subvendors.has_key(subvend.num):
curdevice.subvendors[subvend.num] = subvend
subvend.devices[thisdev.num] = thisdev
else:
subvend = curdevice.subvendors[subvend.num]
subvend.devices[thisdev.num] = thisdev
continue
elif line.startswith('\t'):
line = line.replace('\t', '')
curdevice = myDevice()
curdevice.num = line[0:4]
curdevice.name = line[6:-1]
curdevice.vendor = curvendor.num
curvendor.devices[curdevice.num] = curdevice
continue
else:
print line
continue
fo.close()
# This introduces a bug, will fix later.
vendors['0000'] = myVendor()
vendors['0000'].name = None
return vendors