Tue May 30 15:52:32 1995 Roland McGrath <roland@churchy.gnu.ai.mit.edu>
[glibc.git] / mach / shortcut.awk
blobd6090d7bf7f6ae559ce50affa317b4cee9a4e0f0
1 # Icky intimate knowledge of MiG output.
3 BEGIN { print "/* This file is generated by shortcut.awk. */";
4 echo=1;
5 inproto=0; proto=""; arglist="";
8 $1 == "LINTLIBRARY" { print "#include <mach.h>"; next }
10 # Copy the first line of the definition, but
11 # replace the function name (RPC) with CALL.
12 $NF == rpc \
14 for (i = 1; i < NF; ++i) printf "%s ", $i;
15 print call;
16 next;
19 # Collect the lines of the prototype in PROTO, and extract the parameter
20 # names into ARGLIST.
21 NF == 1 && $1 == ")" { inproto=0 }
22 inproto { proto = proto $0;
23 arg = $NF;
24 gsub(/[^a-zA-Z0-9_,]/, "", arg);
25 arglist = arglist arg;
27 NF == 1 && $1 == "(" { inproto=1 }
29 /^{$/ { echo=0; }
31 echo == 1 { print $0; }
33 /^}$/ \
35 print "{";
36 print " kern_return_t err;";
37 print " extern kern_return_t " syscall " (" proto ");";
38 print " err = " syscall " (" arglist ");";
39 print " if (err == MACH_SEND_INTERRUPTED)";
40 print " err = " rpc " (" arglist ");";
41 print " return err;"
42 print "}";
43 print "weak_alias (" call ", " alias ")"
44 echo = 1;