Oxex: module { PATH: con "/dis/o/xex.dis"; Xcmd: adt { tid: int; rpid: int; pid: int; cmd: string; dir: string; in: ref FD; out: ref FD; err: ref FD; done: int; new: fn(cmd: string, dir: string, in, out: ref Sys->FD, tid: int): ref Xcmd; ftext: fn(short: int):string; }; init: fn(d: Oxdat, upc: chan of int); deledit: fn(ed: ref Oxedit->Edit); putedit: fn(ed: ref Oxedit->Edit, s: string); findedit: fn(ed: ref Oxedit->Edit, s: string): ref Oxedit->Edit; newedit: fn(tr: ref Oxedit->Tree, path: string, msg: int, force: int): ref Oxedit->Edit; msg: fn(tr: ref Oxedit->Tree, dir: string, s: string); # To provide fds for Xcmd.new when doing <>| pipein: fn(buf: string): ref Sys->FD; pipeout: fn(): (ref Sys->FD, chan of string); xcmds: list of ref Xcmd; };