Mercurial > pidgin.yaz
view libpurple/dbus-analyze-types.py @ 18372:47ff5e98b371
Make the MSN logger set flags and ues <br> instead of \n. This fixes the
problem where these logs would show up as one line in the history plugin.
Thank Michael Shkutkov for tracking this down and providing the fixes.
author | Richard Laager <rlaager@wiktel.com> |
---|---|
date | Sat, 30 Jun 2007 22:04:32 +0000 |
parents | 5fe8042783c1 |
children |
line wrap: on
line source
# This program takes a C header/source as the input and produces # # with --keyword=enum: the list of all enums # with --keyword=struct: the list of all structs # # the output styles: # # --enum DBUS_POINTER_NAME1, # DBUS_POINTER_NAME2, # DBUS_POINTER_NAME3, # # --list NAME1 # NAME2 # NAME3 # import re import sys options = {} def toprint(match, line): if verbatim: return line else: return pattern % match for arg in sys.argv[1:]: if arg[0:2] == "--": mylist = arg[2:].split("=",1) command = mylist[0] if len(mylist) > 1: options[command] = mylist[1] else: options[command] = None keyword = options.get("keyword", "struct") pattern = options.get("pattern", "%s") verbatim = options.has_key("verbatim") structregexp1 = re.compile(r"^(typedef\s+)?%s\s+\w+\s+(\w+)\s*;" % keyword) structregexp2 = re.compile(r"^(typedef\s+)?%s" % keyword) structregexp3 = re.compile(r"^}\s+(\w+)\s*;") print "/* Generated by %s. Do not edit! */" % sys.argv[0] myinput = iter(sys.stdin) for line in myinput: match = structregexp1.match(line) if match is not None: print toprint(match.group(2), line) continue match = structregexp2.match(line) if match is not None: while True: if verbatim: print line.rstrip() line = myinput.next() match = structregexp3.match(line) if match is not None: print toprint(match.group(1), line) break if line[0] not in [" ", "\t", "{", "\n"]: if verbatim: print line break