# # # patch "common.py" # from [6b2e20c94f126e5c42ff25f9c953c96883d5d87f] # to [4fa89aedc63a6f49d4a9a5eebe210b4db78c4974] # # patch "fdo/sharedmimeinfo.py" # from [23bde53d09fa8f1f0ffba0a0655f8f29de99a61a] # to [8aca6c73abedbeb59751ba139242d594fc23dcd5] # ============================================================ --- common.py 6b2e20c94f126e5c42ff25f9c953c96883d5d87f +++ common.py 4fa89aedc63a6f49d4a9a5eebe210b4db78c4974 @@ -1,8 +1,9 @@ import os import datetime import time import fcntl import os +import signal from web import debug import traceback ============================================================ --- fdo/sharedmimeinfo.py 23bde53d09fa8f1f0ffba0a0655f8f29de99a61a +++ fdo/sharedmimeinfo.py 8aca6c73abedbeb59751ba139242d594fc23dcd5 @@ -23,7 +23,6 @@ class GlobLookup(object): self.complex_by_size.sort(lambda b, a: cmp(len(a), len(b))) def update(self, precedence, filename): - print "** loading mime file", filename literal = re.compile(r'^[^\[\*\?]+$') simple_glob = re.compile(r'^\*\.([^\[\*\?]+)$') for line in (t.rstrip('\n') for t in open(filename)): @@ -79,9 +78,39 @@ class GlobLookup(object): filename = filename.lower() return self.__lookup(filename) +class MagicLookup(object): + def __init__(self): + mime_dirs = mime() + for dir in mime_dirs: + magic_file = os.path.join(dir, 'magic') + if os.access(magic_file, os.R_OK): + self.update(magic_file) + + def update(self, fname): + fd = open(fname, 'rb') + if fd.readline() != 'MIME-Magic\0\n': + raise Exception("Not a Mime Magic file: %s" % fname) + header_re = re.compile(r'^\[([0-9]+):([^\]]+)\]$') + while True: + # read the first line (priority and mimetype) + header = fd.readline() + if not header: + break + m = header_re.match(header) + if not m: + continue + priority, mime_type = m.groups() + print priority, mime_type + # now read the data, pattern, etc + + + def lookup(self, data): + return None + if __name__ == '__main__': a = GlobLookup() + b = MagicLookup() for line in sys.stdin: line = line.strip() - print line, a.lookup(line) + print line, a.lookup(line), b.lookup(line)