1BEGIN { 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 16END { 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 175