summaryrefslogtreecommitdiff
path: root/libopie2/tools/regen.py
blob: 2f7f41853a9379852c846dc1fdd0968c47013fe6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
#!/usr/bin/env python

#
# regenerate ioctl_table.h
#

import sys
import os
result = os.popen( 'find /usr/include -name "*.h" |xargs grep -h SIOC|grep 0x' ).readlines()

try:
    tablehfile = file( sys.argv[1]+".h", "w" )
except:
    tablehfile = sys.stdout

try:
    tablecfile = file( sys.argv[1]+".cpp", "w" )
except:
    tablecfile = sys.stdout

print >>tablehfile,"""
/*
 * ioctl table - generated by regen.py - (C) Michael 'Mickey' Lauer <mickey@vanille.de>
 */

#ifndef IOCTLMAP_H
#define IOCTLMAP_H

#include <qstring.h>
#include <qintdict.h>

typedef QIntDict<QString> IntStringMap;

IntStringMap* constructIoctlMap();

#endif
"""

print >>tablecfile,"""
/*
 * ioctl table - generated by regen.py - (C) Michael 'Mickey' Lauer <mickey@vanille.de>
 */

#include "%s"

IntStringMap* constructIoctlMap()
{
\tIntStringMap* map = new IntStringMap();

""" % (tablehfile.name)

for line in result:
    l = line.split()
    if not l[0].startswith( "#define" ) or not l[2].startswith( "0x" ):
        print >>sys.stderr, "can't parse line: %s" % l
        continue
    #print >>tablecfile, "\tqDebug( \"adding %s = %s\" );" % ( l[2], l[1] )
    print >>tablecfile, "\tmap->insert( %s, new QString(\"%s\") );" % ( l[2], l[1] )


print >>tablecfile,"""
\treturn map;
};
"""