From: Martin Jansa Date: Thu, 29 Mar 2012 12:44:26 +0200 Subject: [PATCH] opkg.py, arfile.py: report which file has wrong format and use the same test Signed-off-by: Martin Jansa --- arfile.py | 16 +++++++++------- opkg.py | 11 ++--------- 2 files changed, 11 insertions(+), 16 deletions(-) diff --git a/arfile.py b/arfile.py index 8291a2d..7a695c6 100644 --- a/arfile.py +++ b/arfile.py @@ -40,13 +40,13 @@ class FileSection: class ArFile: - def __init__(self, f): + def __init__(self, f, fn): self.f = f self.directory = {} self.directoryRead = False signature = self.f.readline() - assert signature == "!\n" + assert signature == "!\n" or signature == b"!\n", "Old ipk format (non-deb) is unsupported, file: %s, magic: %s, expected %s" % (fn, signature, "!") self.directoryOffset = self.f.tell() def open(self, fname): @@ -100,9 +100,10 @@ class ArFile: if __name__ == "__main__": if None: - f = open(sys.argv[1], "rb") + fn = sys.argv[1] + f = open(fn, "rb") - ar = ArFile(f) + ar = ArFile(f, fn) tarStream = ar.open("data.tar.gz") print "--------" tarStream = ar.open("data.tar.gz") @@ -120,10 +121,11 @@ if __name__ == "__main__": for f in os.listdir(dir): if not f.endswith(".opk") and not f.endswith(".ipk"): continue - print "=== %s ===" % f - f = open(dir + "/" + f, "rb") + print("=== %s ===" % f) + fn = "%s/%s" % (dir, f) + f = open(fn, "rb") - ar = ArFile(f) + ar = ArFile(f, fn) tarStream = ar.open("control.tar.gz") tarf = tarfile.open("control.tar.gz", "r", tarStream) #tarf.list() diff --git a/opkg.py b/opkg.py index 56e774d..31b847c 100644 --- a/opkg.py +++ b/opkg.py @@ -138,7 +138,6 @@ class Package: #self.size = None self.installed_size = None self.filename = None - self.isdeb = 0 self.file_ext_opk = "ipk" self.homepage = None self.oe = None @@ -150,18 +149,12 @@ class Package: if fn: # see if it is deb format f = open(fn, "rb") - magic = f.read(4) - f.seek(0, 0) - if (magic == "!