149 lines
4.2 KiB
Diff
149 lines
4.2 KiB
Diff
|
From a7c25eadbc998bf359e5b7dac03aaea8c30d2932 Mon Sep 17 00:00:00 2001
|
||
|
From: Georg Brandl <georg@python.org>
|
||
|
Date: Thu, 17 May 2018 08:51:27 +0200
|
||
|
Subject: [PATCH 4/9] lsusb.py: fix up Python 3 conversion
|
||
|
|
||
|
- Use open() and ignore encoding errors
|
||
|
- Replace removed __cmp__ by rich comparison methods
|
||
|
- Convert commented-out print statements, remove unused future import
|
||
|
|
||
|
Fixes #68
|
||
|
---
|
||
|
lsusb.py.in | 50 ++++++++++++++++++++++----------------------------
|
||
|
1 file changed, 22 insertions(+), 28 deletions(-)
|
||
|
|
||
|
diff --git a/lsusb.py.in b/lsusb.py.in
|
||
|
index 0f4d318..083b512 100644
|
||
|
--- a/lsusb.py.in
|
||
|
+++ b/lsusb.py.in
|
||
|
@@ -12,8 +12,6 @@
|
||
|
|
||
|
import os, sys, re, getopt
|
||
|
|
||
|
-# from __future__ import print_function
|
||
|
-
|
||
|
# Global options
|
||
|
showint = False
|
||
|
showhubint = False
|
||
|
@@ -53,15 +51,12 @@ class UsbClass:
|
||
|
self.desc = str
|
||
|
def __repr__(self):
|
||
|
return self.desc
|
||
|
- def __cmp__(self, oth):
|
||
|
- # Works only on 64bit systems:
|
||
|
- #return self.pclass*0x10000+self.subclass*0x100+self.proto \
|
||
|
- # - oth.pclass*0x10000-oth.subclass*0x100-oth.proto
|
||
|
- if self.pclass != oth.pclass:
|
||
|
- return self.pclass - oth.pclass
|
||
|
- if self.subclass != oth.subclass:
|
||
|
- return self.subclass - oth.subclass
|
||
|
- return self.proto - oth.proto
|
||
|
+ def __lt__(self, oth):
|
||
|
+ return (self.pclass, self.subclass, self.proto) < \
|
||
|
+ (oth.pclass, oth.subclass, oth.proto)
|
||
|
+ def __eq__(self, oth):
|
||
|
+ return (self.pclass, self.subclass, self.proto) == \
|
||
|
+ (oth.pclass, oth.subclass, oth.proto)
|
||
|
|
||
|
class UsbVendor:
|
||
|
"Container for USB Vendors"
|
||
|
@@ -70,8 +65,10 @@ class UsbVendor:
|
||
|
self.vname = vname
|
||
|
def __repr__(self):
|
||
|
return self.vname
|
||
|
- def __cmp__(self, oth):
|
||
|
- return self.vid - oth.vid
|
||
|
+ def __lt__(self, oth):
|
||
|
+ return self.vid < oth.vid
|
||
|
+ def __eq__(self, oth):
|
||
|
+ return self.vid == oth.vid
|
||
|
|
||
|
class UsbProduct:
|
||
|
"Container for USB VID:PID devices"
|
||
|
@@ -81,13 +78,10 @@ class UsbProduct:
|
||
|
self.pname = pname
|
||
|
def __repr__(self):
|
||
|
return self.pname
|
||
|
- def __cmp__(self, oth):
|
||
|
- # Works only on 64bit systems:
|
||
|
- # return self.vid*0x10000 + self.pid \
|
||
|
- # - oth.vid*0x10000 - oth.pid
|
||
|
- if self.vid != oth.vid:
|
||
|
- return self.vid - oth.vid
|
||
|
- return self.pid - oth.pid
|
||
|
+ def __lt__(self, oth):
|
||
|
+ return (self.vid, self.pid) < (oth.vid, oth.pid)
|
||
|
+ def __eq__(self, oth):
|
||
|
+ return (self.vid, self.pid) == (oth.vid, oth.pid)
|
||
|
|
||
|
usbvendors = []
|
||
|
usbproducts = []
|
||
|
@@ -107,7 +101,7 @@ def parse_usb_ids():
|
||
|
mode = 0
|
||
|
strg = ""
|
||
|
cstrg = ""
|
||
|
- for ln in file(usbids, "r").readlines():
|
||
|
+ for ln in open(usbids, "r", errors="ignore"):
|
||
|
if ln[0] == '#':
|
||
|
continue
|
||
|
ln = ln.rstrip('\n')
|
||
|
@@ -146,7 +140,7 @@ def parse_usb_ids():
|
||
|
|
||
|
def bin_search(first, last, item, list):
|
||
|
"binary search on list, returns -1 on fail, match idx otherwise, recursive"
|
||
|
- #print "bin_search(%i,%i)" % (first, last)
|
||
|
+ #print("bin_search(%i,%i)" % (first, last))
|
||
|
if first == last:
|
||
|
return -1
|
||
|
if first == last-1:
|
||
|
@@ -233,7 +227,7 @@ def find_dev(driver, usbname):
|
||
|
for nm in devlst:
|
||
|
dir = prefix + usbname
|
||
|
prep = ""
|
||
|
- #print nm
|
||
|
+ #print(nm)
|
||
|
idx = nm.find('/')
|
||
|
if idx != -1:
|
||
|
prep = nm[:idx+1]
|
||
|
@@ -404,8 +398,8 @@ class UsbDevice:
|
||
|
try:
|
||
|
self.nointerfaces = int(readattr(fname, "bNumInterfaces"))
|
||
|
except:
|
||
|
- #print "ERROR: %s/bNumInterfaces = %s" % (fname,
|
||
|
- # readattr(fname, "bNumInterfaces"))a
|
||
|
+ #print("ERROR: %s/bNumInterfaces = %s" % (fname,
|
||
|
+ # readattr(fname, "bNumInterfaces")))
|
||
|
self.nointerfaces = 0
|
||
|
try:
|
||
|
self.driver = readlink(fname, "driver")
|
||
|
@@ -421,7 +415,7 @@ class UsbDevice:
|
||
|
for dirent in os.listdir(prefix + self.fname):
|
||
|
if not dirent[0:1].isdigit():
|
||
|
continue
|
||
|
- #print dirent
|
||
|
+ #print(dirent)
|
||
|
if os.access(prefix + dirent + "/bInterfaceClass", os.R_OK):
|
||
|
iface = UsbInterface(self, self.level+1)
|
||
|
iface.read(dirent)
|
||
|
@@ -532,7 +526,7 @@ def usage():
|
||
|
def read_usb():
|
||
|
"Read toplevel USB entries and print"
|
||
|
for dirent in os.listdir(prefix):
|
||
|
- #print dirent,
|
||
|
+ #print(dirent)
|
||
|
if not dirent[0:3] == "usb":
|
||
|
continue
|
||
|
usbdev = UsbDevice(None, 0)
|
||
|
@@ -590,7 +584,7 @@ def main(argv):
|
||
|
fix_usbclass()
|
||
|
except:
|
||
|
print(" WARNING: Failure to read usb.ids", file=sys.stderr)
|
||
|
- #print >>sys.stderr, sys.exc_info()
|
||
|
+ #print(sys.exc_info(), file=sys.stderr)
|
||
|
read_usb()
|
||
|
|
||
|
# Entry point
|
||
|
--
|
||
|
2.14.4
|
||
|
|