view libpurple/dbus-analyze-types.py @ 27555:bff61dad9a6b

Add purple_ssl_connect_with_ssl_cn, which takes a host to connect to in addition to a string with which to validate the SSL certificate. Useful for OSCAR (and XMPP BOSH soon), where we have an IP to connect to, but need to validate the SSL cert.
author Paul Aurich <paul@darkrain42.org>
date Wed, 15 Jul 2009 16:57:33 +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