From ef74ceb67eb5a52c4bc380967ba7a9e6ed49eb16 Mon Sep 17 00:00:00 2001 From: Zac Medico Date: Sun, 16 Jan 2011 04:32:23 -0800 Subject: CONTENTS: handle malformed sym entries This will fix bug #351814. --- pym/portage/dbapi/vartree.py | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/pym/portage/dbapi/vartree.py b/pym/portage/dbapi/vartree.py index 9955cde1d..7f76c4c28 100644 --- a/pym/portage/dbapi/vartree.py +++ b/pym/portage/dbapi/vartree.py @@ -1195,7 +1195,8 @@ class dblink(object): _contents_re = re.compile(r'^(' + \ r'(?P(dev|dir|fif) (.+))|' + \ r'(?P(obj) (.+) (\S+) (\d+))|' + \ - r'(?P(sym) (.+) -> (.+) (\d+))' + \ + r'(?P(sym) (.+) -> (.+) ((\d+)|(?P(' + \ + '\(\d+, \d+L, \d+L, \d+, \d+, \d+, \d+L, \d+, (\d+), \d+\)))))' + \ r')$' ) @@ -1378,6 +1379,9 @@ class dblink(object): obj_index = contents_re.groupindex['obj'] dir_index = contents_re.groupindex['dir'] sym_index = contents_re.groupindex['sym'] + # The old symlink format may exist on systems that have packages + # which were installed many years ago (see bug #351814). + oldsym_index = contents_re.groupindex['oldsym'] # CONTENTS files already contain EPREFIX myroot = self.settings['ROOT'] if myroot == os.path.sep: @@ -1405,8 +1409,12 @@ class dblink(object): data = (m.group(base+1),) elif m.group(sym_index) is not None: base = sym_index + if m.group(oldsym_index) is None: + mtime = m.group(base+5) + else: + mtime = m.group(base+8) #format: type, mtime, dest - data = (m.group(base+1), m.group(base+4), m.group(base+3)) + data = (m.group(base+1), mtime, m.group(base+3)) else: # This won't happen as long the regular expression # is written to only match valid entries. -- cgit v1.2.3-65-gdbad