A while back, Andrew and I talked about making the debug parsing code a
[Samba.git] / source3 / script / mkproto.awk
blob3309e89a0f83bda33cc85f8a944e6637ba062ecf
1 BEGIN {
2 inheader=0;
3 # use_ldap_define = 0;
4 current_file="";
5 print "#ifndef _PROTO_H_"
6 print "#define _PROTO_H_"
7 print "/* This file is automatically generated with \"make proto\". DO NOT EDIT */"
8 print ""
11 END {
12 print "#endif /* _PROTO_H_ */"
16 if (FILENAME!=current_file) {
17 # if (use_ldap_define)
18 # {
19 # print "#endif /* USE_LDAP */"
20 # use_ldap_define = 0;
21 # }
22 print ""
23 print "/*The following definitions come from ",FILENAME," */"
24 print ""
25 current_file=FILENAME
26 # if (current_file=="ldap.c") {
27 # print "#ifdef USE_LDAP"
28 # use_ldap_define = 1;
29 # }
31 if (inheader) {
32 if (match($0,"[)][ \t]*$")) {
33 inheader = 0;
34 printf "%s;\n",$0;
35 } else {
36 printf "%s\n",$0;
38 next;
42 # we handle the loadparm.c fns separately
44 /^FN_LOCAL_BOOL/ {
45 split($0,a,"[,()]")
46 printf "BOOL %s(int );\n", a[2]
49 /^FN_LOCAL_STRING/ {
50 split($0,a,"[,()]")
51 printf "char *%s(int );\n", a[2]
54 /^FN_LOCAL_INT/ {
55 split($0,a,"[,()]")
56 printf "int %s(int );\n", a[2]
59 /^FN_LOCAL_CHAR/ {
60 split($0,a,"[,()]")
61 printf "char %s(int );\n", a[2]
64 /^FN_GLOBAL_BOOL/ {
65 split($0,a,"[,()]")
66 printf "BOOL %s(void);\n", a[2]
69 /^FN_GLOBAL_STRING/ {
70 split($0,a,"[,()]")
71 printf "char *%s(void);\n", a[2]
74 /^FN_GLOBAL_INT/ {
75 split($0,a,"[,()]")
76 printf "int %s(void);\n", a[2]
79 /^static|^extern/ || !/^[a-zA-Z]/ || /[;]/ {
80 next;
84 # We have to split up the start
85 # matching as we now have so many start
86 # types that it can cause some versions
87 # of nawk/awk to choke and fail on
88 # the full match. JRA.
92 gotstart = 0;
93 if( $0 ~ /^connection_struct|^LOCAL_GRP|^DOMAIN_GRP|^pipes_struct|^file_fd_struct|^files_struct|^connection_struct|^uid_t|^gid_t|^unsigned|^mode_t|^DIR|^user|^int|^pid_t|^ino_t|^off_t/ ) {
94 gotstart = 1;
97 if( $0 ~ /^LOCAL_GRP|^DOMAIN_GRP/ ) {
98 gotstart = 1;
101 if( $0 ~ /^long|^char|^uint|^struct|^BOOL|^void|^time|^smb_shm_offset_t|^shm_offset_t|^enum remote_arch_types|^FILE|^SMB_OFF_T|^size_t|^ssize_t|^SMB_BIG_UINT|dbg_Token/ ) {
102 gotstart = 1;
104 if(!gotstart) {
105 next;
110 /[(].*[)][ \t]*$/ {
111 printf "%s;\n",$0;
112 next;
115 /[(]/ {
116 inheader=1;
117 printf "%s\n",$0;
118 next;