# Icky intimate knowledge of MiG output.

BEGIN { print "/* This file is generated by shortcut.awk.  */";
	echo=1;
	inproto=0; proto=""; arglist="";
      }

$1 == "LINTLIBRARY" { print "#include <mach.h>"; next }

$1 == "weak_alias" { next }

# Copy the first line of the definition, but
# replace the function name (RPC) with CALL.
$NF == rpc \
  {
    for (i = 1; i < NF; ++i) printf "%s ", $i;
    print call;
    next;
  }

# Collect the lines of the prototype in PROTO, and extract the parameter
# names into ARGLIST.
NF == 1 && $1 == ")" { inproto=0 }
inproto { proto = proto $0;
	  arg = $NF;
	  gsub(/[^a-zA-Z0-9_,]/, "", arg);
	  arglist = arglist arg;
	}
NF == 1 && $1 == "(" { inproto=1 }

/^{$/ { echo=0; }

echo == 1 { print $0; }

/^}$/ && proto != "" \
  {
    print "{";
    print "  kern_return_t err;";
    print "  extern kern_return_t " syscall " (" proto ");";
    print "  extern kern_return_t " rpc " (" proto ");";
    print "  err = " syscall " (" arglist ");";
    print "  if (err == MACH_SEND_INTERRUPTED)";
    print "    err = " rpc " (" arglist ");";
    print "  return err;"
    print "}";
    print "weak_alias (" call ", " alias ")";
    # Declare RPC so the weak_alias that follows will work.
    print "extern __typeof (" call ") " rpc ";";
    echo = 1;
  }
