-# generate prototypes for Samba C code
-# tridge, June 1996
+#!/usr/bin/awk -f
BEGIN {
- inheader=0;
- print "/* This file is automatically generated with \"make proto\". DO NOT EDIT */"
- print ""
+ while ((getline i < "proto.h") > 0) old_protos = old_protos ? old_protos "\n" i : i
+ close("proto.h")
+ protos = "/* This file is automatically generated with \"make proto\". DO NOT EDIT */\n"
}
-{
- if (inheader) {
- if (match($0,"[)][ \t]*$")) {
- inheader = 0;
- printf "%s;\n",$0;
- } else {
- printf "%s\n",$0;
- }
- next;
- }
+inheader {
+ protos = protos "\n" ((inheader = /\)[ \t]*$/ ? 0 : 1) ? $0 : $0 ";")
+ next
}
-/^static|^extern/ || !/^[a-zA-Z]/ || /[;]/ {
- next;
-}
-
-!/^OFF_T|^off_t|^pid_t|^unsigned|^mode_t|^DIR|^user|^int|^char|^uint|^struct|^BOOL|^void|^time/ {
- next;
+/^FN_(LOCAL|GLOBAL)_[^(]+\([^,()]+/ {
+ local = /^FN_LOCAL/
+ gsub(/^FN_(LOC|GLOB)AL_|,.*$/, "")
+ sub(/^BOOL\(/, "BOOL ")
+ sub(/^CHAR\(/, "char ")
+ sub(/^INTEGER\(/, "int ")
+ sub(/^STRING\(/, "char *")
+ protos = protos "\n" $0 (local ? "(int module_id);" : "(void);")
+ next
}
+/^static|^extern|;/||!/^[A-Za-z][A-Za-z0-9_]* / { next }
-/[(].*[)][ \t]*$/ {
- printf "%s;\n",$0;
- next;
+/\(.*\)[ \t]*$/ {
+ protos = protos "\n" $0 ";"
+ next
}
-/[(]/ {
- inheader=1;
- printf "%s\n",$0;
- next;
+/\(/ {
+ inheader = 1
+ protos = protos "\n" $0
}
+END {
+ if (old_protos != protos) print protos > "proto.h"
+ system("touch proto.h-tstamp")
+}