X-Git-Url: https://git.tld-linux.org/?a=blobdiff_plain;f=TLD_Builder%2Fbqueue.py;h=e349c0ec0313a33872c19fa4e4519ade2f3eba84;hb=HEAD;hp=f95f0f394816a4a4a1749333544af9ff10b4c9c7;hpb=b999f53d4bf5d44586ecf028876e8bc20b5fd2ce;p=tld-builder.git diff --git a/TLD_Builder/bqueue.py b/TLD_Builder/bqueue.py index f95f0f3..e349c0e 100644 --- a/TLD_Builder/bqueue.py +++ b/TLD_Builder/bqueue.py @@ -3,11 +3,13 @@ import re import gzip import time -import StringIO +import sys +from io import StringIO import os import fcntl import string import tempfile +import shutil # TLD_Builder: import gpg @@ -31,7 +33,7 @@ class B_Queue: f.flush() os.fsync(f.fileno()) f.close() - os.chmod(tmpfname, 0644) + os.chmod(tmpfname, 0o0644) os.rename(tmpfname, fname) def dump_html(self, fname): @@ -43,14 +45,8 @@ class B_Queue: TLD builder queue - - - -
""" ) @@ -62,7 +58,7 @@ class B_Queue: f.flush() os.fsync(f.fileno()) f.close() - os.chmod(tmpfname, 0644) + os.chmod(tmpfname, 0o0644) os.rename(tmpfname, fname) # read possibly compressed, signed queue @@ -86,13 +82,13 @@ class B_Queue: self._open() self.signers = [] body = self.fd.read() - if string.strip(body) == "": + if body.strip() == "": # empty file, don't choke self.requests = [] return try: self.requests = request.parse_requests(body) - except Exception, e: + except Exception as e: log.panic("error parsing %s: %s" % (self.name, e)) pass @@ -124,24 +120,29 @@ class B_Queue: fcntl.flock(self.fd, fcntl.LOCK_UN) def write_signed(self, name): - sio = StringIO.StringIO() + sio = StringIO() self._write_to(sio) sio.seek(0) - sio.write(gpg.sign(sio.read())) + sio.write(util.to_str(gpg.sign(sio.read()))) sio.seek(0) (fdno, tmpname) = tempfile.mkstemp(dir=os.path.dirname(name)) f = os.fdopen(fdno, "w") - if re.search(r"\.gz$", name): - fgz = gzip.GzipFile(filename=name, mode="w", compresslevel=6, fileobj=f) - util.sendfile(sio, fgz) - fgz.close() - else: - util.sendfile(sio, f) + shutil.copyfileobj(sio, f) f.flush() os.fsync(f.fileno()) f.close() - os.chmod(tmpname, 0644) - os.rename(tmpname, name) + if re.search(r"\.gz$", name): + f_in = open(tmpname, 'rb') + f_out = gzip.open(name, 'wb') + shutil.copyfileobj(f_in, f_out) + f_in.close(); + f_out.flush(); + os.fsync(f_out.fileno()) + f_out.close(); + os.remove(tmpname) + else: + os.rename(tmpname, name) + os.chmod(name, 0o0644) def add(self, req): self.requests.append(req)