shortcut.awk
来自「一个C源代码分析器」· AWK 代码 · 共 45 行
AWK
45 行
# 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 }# 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; }/^}$/ \ { print "{"; print " kern_return_t err;"; print " extern kern_return_t " syscall " (" proto ");"; print " err = " syscall " (" arglist ");"; print " if (err == MACH_SEND_INTERRUPTED)"; print " err = " rpc " (" arglist ");"; print " return err;" print "}"; echo = 1; }
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?