RIP BOOL. Convert BOOL -> bool. I found a few interesting
[amitay/samba.git] / source3 / script / mkproto.awk
1 BEGIN {
2   inheader=0;
3 #  use_ldap_define = 0;
4   current_file="";
5   if (headername=="") {
6     headername="_PROTO_H_";
7   }
8
9   print "#ifndef",headername
10   print "#define",headername
11   print ""
12   print "/* This file is automatically generated with \"make proto\". DO NOT EDIT */"
13   print ""
14 }
15
16 END {
17   print ""
18   print "#endif /* ",headername," */"
19 }
20
21 {
22   if (FILENAME!=current_file) {
23 #    if (use_ldap_define)
24 #    {
25 #      print "#endif /* USE_LDAP */"
26 #      use_ldap_define = 0;
27 #    }
28     print ""
29     print "/* The following definitions come from",FILENAME," */"
30     print ""
31     current_file=FILENAME
32   }
33   if (inheader) {
34     if (match($0,"[)][ \t]*$")) {
35       inheader = 0;
36       printf "%s;\n",$0;
37     } else {
38       printf "%s\n",$0;
39     }
40     next;
41   }
42 }
43
44 # we handle the loadparm.c fns separately
45
46 /^FN_LOCAL_BOOL/ {
47   split($0,a,"[,()]")
48   printf "bool %s(int );\n", a[2]
49 }
50
51 /^FN_LOCAL_PARM_BOOL/ {
52   split($0,a,"[,()]")
53   printf "bool %s(const struct share_params *p );\n", a[2]
54 }
55
56 /^FN_LOCAL_PARM_INTEGER/ {
57   split($0,a,"[,()]")
58   printf "int %s(const struct share_params *p );\n", a[2]
59 }
60
61 /^FN_LOCAL_LIST/ {
62   split($0,a,"[,()]")
63   printf "const char **%s(int );\n", a[2]
64 }
65
66 /^FN_LOCAL_STRING/ {
67   split($0,a,"[,()]")
68   printf "char *%s(int );\n", a[2]
69 }
70
71 /^FN_LOCAL_PARM_STRING/ {
72   split($0,a,"[,()]")
73   printf "char *%s(const struct share_params *p );\n", a[2]
74 }
75
76 /^FN_LOCAL_CONST_STRING/ {
77   split($0,a,"[,()]")
78   printf "const char *%s(int );\n", a[2]
79 }
80
81 /^FN_LOCAL_INT/ {
82   split($0,a,"[,()]")
83   printf "int %s(int );\n", a[2]
84 }
85
86 /^FN_LOCAL_CHAR/ {
87   split($0,a,"[,()]")
88   printf "char %s(const struct share_params *p );\n", a[2]
89 }
90
91 /^FN_GLOBAL_BOOL/ {
92   split($0,a,"[,()]")
93   printf "bool %s(void);\n", a[2]
94 }
95
96 /^FN_GLOBAL_LIST/ {
97   split($0,a,"[,()]")
98   printf "const char **%s(void);\n", a[2]
99 }
100
101 /^FN_GLOBAL_STRING/ {
102   split($0,a,"[,()]")
103   printf "char *%s(void);\n", a[2]
104 }
105
106 /^FN_GLOBAL_CONST_STRING/ {
107   split($0,a,"[,()]")
108   printf "const char *%s(void);\n", a[2]
109 }
110
111 /^FN_GLOBAL_INT/ {
112   split($0,a,"[,()]")
113   printf "int %s(void);\n", a[2]
114 }
115
116 /^static|^extern/ || !/^[a-zA-Z]/ || /[;]/ {
117   next;
118 }
119
120 #
121 # We have to split up the start
122 # matching as we now have so many start
123 # types that it can cause some versions
124 # of nawk/awk to choke and fail on
125 # the full match. JRA.
126 #
127
128 {
129   gotstart = 0;
130   if( $0 ~ /^const|^connection_struct|^pipes_struct|^smb_np_struct|^file_fd_struct|^files_struct|^connection_struct|^uid_t|^gid_t|^unsigned|^mode_t|^DIR|^user|^int|^pid_t|^ino_t|^off_t|^double/ ) {
131     gotstart = 1;
132   }
133
134   if( $0 ~ /^vuser_key|^UNISTR2|^LOCAL_GRP|^DOMAIN_GRP|^SMB_STRUCT_DIRENT|^SEC_ACL|^SEC_DESC|^SEC_DESC_BUF|^DOM_SID|^RPC_HND_NODE|^BYTE/ ) {
135     gotstart = 1;
136   }
137
138   if( $0 ~ /^ADS_STRUCT|^ADS_STATUS|^DATA_BLOB|^ASN1_DATA|^TDB_CONTEXT|^TDB_DATA|^smb_ucs2_t|^TALLOC_CTX|^hash_element|^NT_DEVICEMODE|^enum.*\(|^NT_USER_TOKEN|^SAM_ACCOUNT|^NTTIME/ ) {
139     gotstart = 1;
140   }
141
142   if( $0 ~ /^smb_iconv_t|^long|^char|^uint|^NTSTATUS|^WERROR|^CLI_POLICY_HND|^struct|^bool|^void|^time|^smb_shm_offset_t|^shm_offset_t|^FILE|^XFILE|^SMB_OFF_T|^size_t|^ssize_t|^SMB_BIG_UINT|^SMB_BIG_INT/ ) {
143     gotstart = 1;
144   }
145
146   if( $0 ~ /^SAM_ACCT_INFO_NODE|^SMB_ACL_T|^ADS_MODLIST|^PyObject|^SORTED_TREE|^REGISTRY_HOOK|^REGISTRY_VALUE|^REGVAL_CTR|^DEVICEMODE|^PAC_DATA|^NET_USER_INFO_3|^smb_event_id_t/ ) {
147     gotstart = 1;
148   }
149
150   if( $0 ~ /^WINBINDD_PW|^WINBINDD_GR|^NT_PRINTER_INFO_LEVEL_2|^LOGIN_CACHE|^krb5_error_code|^LDAP|^u32|^LUID_ATTR|^NSS_STATUS/ ) {
151     gotstart = 1;
152   }
153
154   if( $0 ~ /^NODE_STATUS_STRUCT|SMB_STRUCT_DIR|ELOG_TDB|codepoint_t/ ) {
155     gotstart = 1;
156   }
157
158   if(!gotstart) {
159     next;
160   }
161 }
162
163
164 /[(].*[)][ \t]*$/ {
165     printf "%s;\n",$0;
166     next;
167 }
168
169 /[(]/ {
170   inheader=1;
171   printf "%s\n",$0;
172   next;
173 }
174