]> 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 67bd9a1be30d230f7be2c0bdf4d9a32b4a1c3ba3..af6b8f12bd2e8ca3022a2215f4b1cd19bac7e3e2 100644 (file)
@@ -5,6 +5,7 @@ import sys
 import os
 import log
 import string
+import codecs
 
 def uuid_python():
     return str(uuid_random())
@@ -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)