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
--- /dev/null
+#!/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, "};"
+}