r4805: Last planned change to the privileges infrastructure:
[samba.git] / source3 / script / mkproto.awk
index b1c7f79c18dfb8f4537f3bd01ff939ffe5bec101..45cc0821aa8c083f275eb2e30be151b027e02644 100644 (file)
@@ -1,26 +1,34 @@
 BEGIN {
   inheader=0;
-  use_ldap_define = 0;
+#  use_ldap_define = 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) {
-    if (use_ldap_define)
-    {
-      print "#endif /* USE_LDAP */"
-      use_ldap_define = 0;
-    }
+#    if (use_ldap_define)
+#    {
+#      print "#endif /* USE_LDAP */"
+#      use_ldap_define = 0;
+#    }
     print ""
-    print "/*The following definitions come from ",FILENAME," */"
+    print "/* The following definitions come from",FILENAME," */"
     print ""
     current_file=FILENAME
-    if (current_file=="ldap.c") {
-      print "#ifdef USE_LDAP"
-      use_ldap_define = 1;
-    }
   }
   if (inheader) {
     if (match($0,"[)][ \t]*$")) {
@@ -40,11 +48,21 @@ BEGIN {
   printf "BOOL %s(int );\n", a[2]
 }
 
+/^FN_LOCAL_LIST/ {
+  split($0,a,"[,()]")
+  printf "const char **%s(int );\n", a[2]
+}
+
 /^FN_LOCAL_STRING/ {
   split($0,a,"[,()]")
   printf "char *%s(int );\n", a[2]
 }
 
+/^FN_LOCAL_CONST_STRING/ {
+  split($0,a,"[,()]")
+  printf "const char *%s(int );\n", a[2]
+}
+
 /^FN_LOCAL_INT/ {
   split($0,a,"[,()]")
   printf "int %s(int );\n", a[2]
@@ -60,11 +78,21 @@ BEGIN {
   printf "BOOL %s(void);\n", a[2]
 }
 
+/^FN_GLOBAL_LIST/ {
+  split($0,a,"[,()]")
+  printf "const char **%s(void);\n", a[2]
+}
+
 /^FN_GLOBAL_STRING/ {
   split($0,a,"[,()]")
   printf "char *%s(void);\n", a[2]
 }
 
+/^FN_GLOBAL_CONST_STRING/ {
+  split($0,a,"[,()]")
+  printf "const char *%s(void);\n", a[2]
+}
+
 /^FN_GLOBAL_INT/ {
   split($0,a,"[,()]")
   printf "int %s(void);\n", a[2]
@@ -74,8 +102,43 @@ BEGIN {
   next;
 }
 
-!/^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/ {
-  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|^NTTIME/ ) {
+    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|^SMB_BIG_INT/ ) {
+    gotstart = 1;
+  }
+
+  if( $0 ~ /^SAM_ACCT_INFO_NODE|^SMB_ACL_T|^ADS_MODLIST|^PyObject|^SORTED_TREE|^REGISTRY_HOOK|^REGISTRY_VALUE|^DEVICEMODE|^PAC_DATA|^NET_USER_INFO_3|^smb_event_id_t/ ) {
+    gotstart = 1;
+  }
+
+  if( $0 ~ /^WINBINDD_PW|^WINBINDD_GR|^NT_PRINTER_INFO_LEVEL_2|^LOGIN_CACHE|^krb5_error_code|^LDAP|^u32|^LUID_ATTR/ ) {
+    gotstart = 1;
+  }
+
+  if(!gotstart) {
+    next;
+  }
 }