]> TLD Linux GIT Repositories - tld-builder.git/blobdiff - TLD_Builder/util.py
- drop util.sendfile, use shutil.copyfileobj instead
[tld-builder.git] / TLD_Builder / util.py
index b4c859944cd447ff4a201336e28e7ae98717f3f3..af6b8f12bd2e8ca3022a2215f4b1cd19bac7e3e2 100644 (file)
@@ -5,16 +5,17 @@ import sys
 import os
 import log
 import string
+import codecs
 
 def uuid_python():
     return str(uuid_random())
 
 def uuid_external():
     f = os.popen("uuidgen 2>&1")
-    u = string.strip(f.read())
+    u = f.read().strip()
     f.close()
     if len(u) != 36:
-        raise Exception, "uuid: fatal, cannot generate uuid: %s" % u
+        raise Exception("uuid: fatal, cannot generate uuid: %s" % u)
     return u
 
 # uuid module available in python >= 2.5
@@ -31,15 +32,6 @@ def pkg_name(nvr):
 def msg(m):
     sys.stderr.write(m)
 
-def sendfile(src, dst):
-    cnt = 0
-    while 1:
-        s = src.read(10000)
-        if s == "": break
-        cnt += len(s)
-        dst.write(s)
-    return cnt
-
 def append_to(log, msg):
     f = open(log, "a")
     f.write("%s\n" % msg)
@@ -76,3 +68,41 @@ def find_last_section(log):
             last_section = m.group(1)
     f.close()
     return last_section
+
+def cmp_to_key(mycmp):
+    'Convert a cmp= function into a key= function'
+    class K:
+        def __init__(self, obj, *args):
+            self.obj = obj
+        def __lt__(self, other):
+            return mycmp(self.obj, other.obj) < 0
+        def __gt__(self, other):
+            return mycmp(self.obj, other.obj) > 0
+        def __eq__(self, other):
+            return mycmp(self.obj, other.obj) == 0
+        def __le__(self, other):
+            return mycmp(self.obj, other.obj) <= 0
+        def __ge__(self, other):
+            return mycmp(self.obj, other.obj) >= 0
+        def __ne__(self, other):
+            return mycmp(self.obj, other.obj) != 0
+    return K
+
+def to_bytes(s):
+    if type(s) is bytes:
+        return s
+    elif type(s) is str or (sys.version_info[0] < 3 and type(s) is unicode):
+        return codecs.encode(s, 'utf-8')
+    else:
+        raise TypeError("Expected bytes or string, but got %s." % type(s))
+
+def to_str(s):
+    if type(s) is bytes:
+        return codecs.decode(s, 'utf-8')
+    elif type(s) is str or (sys.version_info[0] < 3 and type(s) is unicode):
+        return s
+    else:
+        raise TypeError("Expected bytes or string, but got %s." % type(s))
+
+def cmp(a, b):
+    return (a > b) - (a < b)