some cleanups from the conversion of Pipes[] to a linked list. I also
[samba.git] / source3 / script / mkproto.awk
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 ""
9 }
10
11 END {
12   print "#endif /* _PROTO_H_ */"
13 }
14
15 {
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 #    }
30   }
31   if (inheader) {
32     if (match($0,"[)][ \t]*$")) {
33       inheader = 0;
34       printf "%s;\n",$0;
35     } else {
36       printf "%s\n",$0;
37     }
38     next;
39   }
40 }
41
42 # we handle the loadparm.c fns separately
43
44 /^FN_LOCAL_BOOL/ {
45   split($0,a,"[,()]")
46   printf "BOOL %s(int );\n", a[2]
47 }
48
49 /^FN_LOCAL_STRING/ {
50   split($0,a,"[,()]")
51   printf "char *%s(int );\n", a[2]
52 }
53
54 /^FN_LOCAL_INT/ {
55   split($0,a,"[,()]")
56   printf "int %s(int );\n", a[2]
57 }
58
59 /^FN_LOCAL_CHAR/ {
60   split($0,a,"[,()]")
61   printf "char %s(int );\n", a[2]
62 }
63
64 /^FN_GLOBAL_BOOL/ {
65   split($0,a,"[,()]")
66   printf "BOOL %s(void);\n", a[2]
67 }
68
69 /^FN_GLOBAL_STRING/ {
70   split($0,a,"[,()]")
71   printf "char *%s(void);\n", a[2]
72 }
73
74 /^FN_GLOBAL_INT/ {
75   split($0,a,"[,()]")
76   printf "int %s(void);\n", a[2]
77 }
78
79 /^static|^extern/ || !/^[a-zA-Z]/ || /[;]/ {
80   next;
81 }
82
83 !/^pipes_struct|^file_fd_struct|^files_struct|^connection_struct|^uid_t|^gid_t|^unsigned|^mode_t|^DIR|^user|^int|^char|^uint|^struct|^BOOL|^void|^time|^smb_shm_offset_t|^shm_offset_t|^enum remote_arch_types|^FILE/ {
84   next;
85 }
86
87
88 /[(].*[)][ \t]*$/ {
89     printf "%s;\n",$0;
90     next;
91 }
92
93 /[(]/ {
94   inheader=1;
95   printf "%s\n",$0;
96   next;
97 }
98