symbian-qemu-0.9.1-12/python-2.6.1/Demo/pdist/makechangelog.py
author johnathan.white@2718R8BGH51.accenture.com
Mon, 08 Mar 2010 18:45:03 +0000
changeset 46 b6935a90ca64
parent 1 2fb8b9db1c86
permissions -rw-r--r--
Modify framebuffer and NGA framebuffer to read screen size from board model dtb file. Optimise memory usuage of frame buffer Add example minigui application with hooks to profiler (which writes results to S:\). Modified NGA framebuffer to run its own dfc queue at high priority

#! /usr/bin/env python

"""Turn a pile of RCS log output into ChangeLog file entries.

"""

import sys
import string
import re
import getopt
import time

def main():
    args = sys.argv[1:]
    opts, args = getopt.getopt(args, 'p:')
    prefix = ''
    for o, a in opts:
        if p == '-p': prefix = a

    f = sys.stdin
    allrevs = []
    while 1:
        file = getnextfile(f)
        if not file: break
        revs = []
        while 1:
            rev = getnextrev(f, file)
            if not rev:
                break
            revs.append(rev)
        if revs:
            allrevs[len(allrevs):] = revs
    allrevs.sort()
    allrevs.reverse()
    for rev in allrevs:
        formatrev(rev, prefix)

parsedateprog = re.compile(
    '^date: ([0-9]+)/([0-9]+)/([0-9]+) ' +
    '([0-9]+):([0-9]+):([0-9]+);  author: ([^ ;]+)')

authormap = {
    'guido': 'Guido van Rossum  <guido@cnri.reston.va.us>',
    'jack': 'Jack Jansen  <jack@cwi.nl>',
    'sjoerd': 'Sjoerd Mullender  <sjoerd@cwi.nl>',
    }

def formatrev(rev, prefix):
    dateline, file, revline, log = rev
    if parsedateprog.match(dateline) >= 0:
        fields = parsedateprog.group(1, 2, 3, 4, 5, 6)
        author = parsedateprog.group(7)
        if authormap.has_key(author): author = authormap[author]
        tfields = map(string.atoi, fields) + [0, 0, 0]
        tfields[5] = tfields[5] - time.timezone
        t = time.mktime(tuple(tfields))
        print time.ctime(t), '', author
        words = string.split(log)
        words[:0] = ['*', prefix + file + ':']
        maxcol = 72-8
        col = maxcol
        for word in words:
            if col > 0 and col + len(word) >= maxcol:
                print
                print '\t' + word,
                col = -1
            else:
                print word,
            col = col + 1 + len(word)
        print
        print

startprog = re.compile("^Working file: (.*)$")

def getnextfile(f):
    while 1:
        line = f.readline()
        if not line: return None
        if startprog.match(line) >= 0:
            file = startprog.group(1)
            # Skip until first revision
            while 1:
                line = f.readline()
                if not line: return None
                if line[:10] == '='*10: return None
                if line[:10] == '-'*10: break
##              print "Skipped", line,
            return file
##      else:
##          print "Ignored", line,

def getnextrev(f, file):
    # This is called when we are positioned just after a '---' separator
    revline = f.readline()
    dateline = f.readline()
    log = ''
    while 1:
        line = f.readline()
        if not line: break
        if line[:10] == '='*10:
            # Ignore the *last* log entry for each file since it
            # is the revision since which we are logging.
            return None
        if line[:10] == '-'*10: break
        log = log + line
    return dateline, file, revline, log

if __name__ == '__main__':
    main()