#! /usr/bin/python import os, sys, getopt, re # if you want to be more sensitive, increase this. If you only care # about updates in which major revision numbers are changed, decrease # this depth = 2 class BufferedReader: def __init__(self, infile): self.infile = infile self.buf = [] def readline(self): if(len(self.buf) > 0): ret = self.buf[-1] self.buf = self.buf[:-1] return ret else: for line in self.infile: return line return None def pushback(self, line): if(len(line) > 0): self.buf.append(line) def isEOF(self): if(len(self.buf) > 0): return False else: line = self.readline() if(line == None): return True else: self.pushback(line) return False def close(self): self.infile.close() def minus(x,y): if(y == None): y=0 if(x == None): x=0 return x - y def pget(alist, indx, defval=0): try: return alist[indx] except Exception, ex: return defval def doit(): reader = BufferedReader(sys.stdin) while(not reader.isEOF()): line = reader.readline() upgradeline = re.match("\[ebuild[ ]*U[ ]*\][ ]*[a-zA-Z/0-9-]+-([0-9.]+)(-r[0-9]+ | )\[([0-9.]+)(-r[0-9]+|)\].*", line) if(upgradeline): new = upgradeline.groups()[0] old = upgradeline.groups()[2] newnums = map(int, re.split("[.]", new)) oldnums = map(int, re.split("[.]", old)) diffnums = map(minus, newnums, oldnums) for i in range(min(diffnums, depth)): if(pget(diffnums, i) != 0): print line[:-1] break #print "%15s -> %15s -> %15s" % (old, new, diffnums) doit()