,s!lock(f)!lock(\&f->ref.lk)!g ,s!lock(c)!lock(\&c->ref.lk)!g ,s!Chan \*c;!Chan *c = 0;!g ,s!ref(c)!ref(\&c->ref)!g ,s!^read(!doread(! ,s!return read(!return doread(!g /use varargs/,/va_end/c // Plan 9 VX replaced dodgy varargs code v = *(vlong*)&arg[3]; . ,s!^write(!dowrite(! ,s!return write(!return dowrite(!g /use varargs/,/va_end/c // Plan 9 VX replaced dodgy varargs code v = *(vlong*)&arg[3]; . g/^sys_/ s/ulong \*)/ulong *u)/ g/va_list/d /^sysfd2path/s/ulong/uint32/ /^syspipe/s/ulong/uint32/ /^sysdup/s/ulong/uint32/ /^sysopen/s/ulong/uint32/ /^sysclose/s/ulong/uint32/ /^doread/s/ulong/uint32/ /^sys_read/s/ulong/uint32/ /^syspread/s/ulong/uint32/ /^dowrite/s/ulong/uint32/ /^sys_write/s/ulong/uint32/ /^syspwrite/s/ulong/uint32/ /^sseek/s/ulong/uint32/ /ulong/s/ulong/uint32/ /^sysseek/s/ulong/uint32/ /^sysoseek/s/ulong/uint32/ .,/^}/g/ulong/s/ulong/uint32/ /^sysfstat/s/ulong/uint32/ /^sysstat/s/ulong/uint32/ /^syschdir/s/ulong/uint32/ /^sysbind/s/ulong/uint32/ /^sysmount/s/ulong/uint32/ /^sys_mount/s/ulong/uint32/ /^sysunmount/s/ulong/uint32/ /^syscreate/s/ulong/uint32/ /^sysremove/s/ulong/uint32/ /^syswstat/s/ulong/uint32/ /^sysfwstat/s/ulong/uint32/ /^sys_stat/s/ulong/uint32/ /^sys_fstat/s/ulong/uint32/ /^sys_wstat/s/ulong/uint32/ /^sys_fwstat/s/ulong/uint32/ /^syspassfd/s/ulong/uint32/ /^syspassfd/. /^{/a char *buf; . /validaddr/s/validaddr/buf = uvalidaddr/ /(char\*)arg\[1\]/s/(char\*)arg\[1\]/buf/ /^syspipe/. /^{/a int *ufd; . /validaddr/s/validaddr/ufd = uvalidaddr/ /((long\*)arg\[0\]/s/((long\*)arg\[0\])/ufd/ /((long\*)arg\[0\]/s/((long\*)arg\[0\])/ufd/ /^sysopen/. /^{/a char *name; . /validaddr/s/validaddr/name = uvalidaddr/ /(char\*)arg\[0\]/s/(char\*)arg\[0\]/name/ /^dowrite/. /^{/a uchar *p; . /validaddr/s/validaddr/p = uvalidaddr/ /(void\*)arg\[1\]/s/(void\*)arg\[1\]/name/ /^sseek/s/(/(vlong *ret, / /^sysseek/. /validaddr/s/validaddr\(.*\);/sseek(uvalidaddr&, arg);/ /sseek/d $a // Plan 9 VX additions long kbind(char *new, char *old, int flag) { return bindmount(1, 0, -1, -1, new, old, flag, nil); } long syspassfd(ulong *u) { error("passfd unimplemented"); return -1; } .