summaryrefslogtreecommitdiff
path: root/sys-apps/usbutils/files/usbutils-010-fix-py3-support.patch
blob: c95bb7321b85ff54d40686e6f40b380c3ab7f9cb (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
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] 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