BEGIN { inheader=0; current_file=""; if (headername=="") { headername="_PROTO_H_"; } print "#ifndef",headername print "#define",headername print "" print "/* This file is automatically generated with \"make proto\". DO NOT EDIT */" print "" } END { print "" print "#endif /* ",headername," */" } { if (FILENAME!=current_file) { print "" print "/* The following definitions come from",FILENAME," */" print "" current_file=FILENAME } if (inheader) { if (match($0,"[)][ \t]*$")) { inheader = 0; printf "%s;\n",$0; } else { printf "%s\n",$0; } next; } } /^static|^extern/ || !/^[a-zA-Z]/ || /[;]/ { next; } # # We have to split up the start # matching as we now have so many start # types that it can cause some versions # of nawk/awk to choke and fail on # the full match. JRA. # { gotstart = 0; 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/ ) { gotstart = 1; } 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/ ) { gotstart = 1; } 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/ ) { gotstart = 1; } 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/ ) { gotstart = 1; } if( $0 ~ /^SAM_ACCT_INFO_NODE|^SMB_ACL_T|^ADS_MODLIST|^PyObject/ ) { gotstart = 1; } if(!gotstart) { next; } } /[(].*[)][ \t]*$/ { printf "%s;\n",$0; next; } /[(]/ { inheader=1; printf "%s\n",$0; next; }