summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sys/src/cmd/syscall/mkfile21
-rwxr-xr-xsys/src/cmd/syscall/mktab.awk14
2 files changed, 16 insertions, 19 deletions
diff --git a/sys/src/cmd/syscall/mkfile b/sys/src/cmd/syscall/mkfile
index 18985a0ec..73af87d0b 100644
--- a/sys/src/cmd/syscall/mkfile
+++ b/sys/src/cmd/syscall/mkfile
@@ -16,25 +16,8 @@ UPDATE=\
SYSCALL=/sys/src/libc/9syscall/sys.h
-tab.h: $SYSCALL
- awk '
- BEGIN{ print "enum{" }
- { printf "%s, ", $2 }
- END{
- print "READ, WRITE, NTAB"
- print "};"
- }' <$SYSCALL >$target
- awk '
- BEGIN{ print "struct Call tab[] = {" }
- { printf "[%s] \"%s\", (int(*)(...))%s,\n",
- $2, tolower($2), tolower($2)
- }
- END{
- print "[READ] \"read\", (int(*)(...))read,"
- print "[WRITE] \"write\", (int(*)(...))write,"
- print "[NTAB] nil, 0"
- print "};"
- }' <$SYSCALL >>$target
+tab.h: $SYSCALL mktab.awk
+ mktab.awk $SYSCALL >$target
clean:V:
rm -f *.[$OS] [$OS].out $TARG $HFILES
diff --git a/sys/src/cmd/syscall/mktab.awk b/sys/src/cmd/syscall/mktab.awk
new file mode 100755
index 000000000..ab8708022
--- /dev/null
+++ b/sys/src/cmd/syscall/mktab.awk
@@ -0,0 +1,14 @@
+#!/bin/awk -f
+{ e = e $2 ", "
+ s = s sprintf("[%s] \"%s\", (int(*)(...))%s,\n",
+ $2, tolower($2), tolower($2))
+}
+END{
+ e = e "READ, WRITE, NTAB"
+ s = s "[READ] \"read\", (int(*)(...))read,\n"
+ s = s "[WRITE] \"write\", (int(*)(...))write,\n"
+ s = s "[NTAB] nil, 0\n"
+
+ print "enum{", e, "};"
+ print "struct Call tab[] = {\n", s, "};"
+}