# # # patch "fdo/sharedmimeinfo.py" # from [8b641fe2ffdb7f33397cf474b13d216bad3263aa] # to [fd8b931942384ac8627bebe9d05226f9db27611a] # ============================================================ --- fdo/sharedmimeinfo.py 8b641fe2ffdb7f33397cf474b13d216bad3263aa +++ fdo/sharedmimeinfo.py fd8b931942384ac8627bebe9d05226f9db27611a @@ -111,7 +111,6 @@ class MagicLookup(object): def read_header(): m = header_re.match(self.__buf) if not m: - print "no match:", repr(header) skip_line() else: self.__buf = self.__buf[m.end()+1:] @@ -191,7 +190,7 @@ class MagicLookup(object): if self.__buf[0] == '[': priority, mime_type = read_header() current_header = [] - self.headers.setdefault(priority, {}).setdefault(mime_type, []).append(current_header) + self.headers.setdefault(priority, []).append((mime_type, current_header)) line_stack = [] else: if current_header == None: @@ -215,7 +214,7 @@ class MagicLookup(object): for i in range(line['range_length']): from_offset = line['start_offset'] + i to_offset = from_offset + value_size - if to_offset > value_size: + if to_offset > data_size: continue if match_with(data[from_offset:to_offset]): return True @@ -245,18 +244,16 @@ class MagicLookup(object): for priority in priorities: if priority < min_priority: break - for mime_type in self.headers[priority]: - for lines in self.headers[priority][mime_type]: - if match_lines(lines): - return mime_type + for mime_type, lines in self.headers[priority]: + if match_lines(lines): + return mime_type return None if __name__ == '__main__': a = GlobLookup() b = MagicLookup() - print b.lookup(open('/Users/grahame/mtn/viewmtn/mimetypes/x-office-calendar.png').read()) + print b.lookup(open('/Users/grahame/Desktop/Network Servers V1_00.xls').read()) sys.exit(0) for line in sys.stdin: line = line.strip() print line, a.lookup(line), b.lookup(line) -