view src/dbus-analyze-types.py @ 12184:5cd2294127e8

[gaim-migrate @ 14486] SF Patch #1363103, Casey Harkins 'From the wiki: "Crash when Message Notification plugin is set to use the Urgent hint, when a message is queued by the new queuing code." XGetWMHints() is returning NULL on the hidden conversation window which holds the "queued" conversations. The man page says: "The XGetWMHints function reads the window manager hints and returns NULL if no WM_HINTS property was set on the window or returns a pointer to a XWMHints structure if it succeeds." This patch allocates it if its NULL. This might not be necessary, as setting the URGENT hint on an unmapped window is not really going to do anything. Probably too much explanation for a 2 line patch. :-)' committer: Tailor Script <tailor@pidgin.im>
author Richard Laager <rlaager@wiktel.com>
date Tue, 22 Nov 2005 00:18:28 +0000
parents 64fadbf3810f
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