ref: eea1eebb1304de23bca3b3e9759702c3d391bdd1
dir: /sys/src/cmd/jam/plan9.acid/
sizeof_1_ = 8; aggr _1_ { 'U' 0 lo; 'U' 4 hi; }; defn _1_(addr) { complex _1_ addr; print(" lo ", addr.lo, "\n"); print(" hi ", addr.hi, "\n"); }; sizeofFPdbleword = 8; aggr FPdbleword { 'F' 0 x; { 'U' 0 lo; 'U' 4 hi; }; }; defn FPdbleword(addr) { complex FPdbleword addr; print(" x ", addr.x, "\n"); print("_1_ {\n"); _1_(addr+0); print("}\n"); }; UTFmax = 4; Runesync = 128; Runeself = 128; Runeerror = 65533; Runemax = 1114111; Runemask = 2097151; sizeofFmt = 80; aggr Fmt { 'b' 0 runes; 'Y' 8 start; 'Y' 16 to; 'Y' 24 stop; 'Y' 32 flush; 'Y' 40 farg; 'D' 48 nfmt; 'Y' 56 args; 'D' 64 r; 'D' 68 width; 'D' 72 prec; 'U' 76 flags; }; defn Fmt(addr) { complex Fmt addr; print(" runes ", addr.runes, "\n"); print(" start ", addr.start\Y, "\n"); print(" to ", addr.to\Y, "\n"); print(" stop ", addr.stop\Y, "\n"); print(" flush ", addr.flush\Y, "\n"); print(" farg ", addr.farg\Y, "\n"); print(" nfmt ", addr.nfmt, "\n"); print(" args ", addr.args\Y, "\n"); print(" r ", addr.r, "\n"); print(" width ", addr.width, "\n"); print(" prec ", addr.prec, "\n"); print(" flags ", addr.flags, "\n"); }; FmtWidth = 1; FmtLeft = 2; FmtPrec = 4; FmtSharp = 8; FmtSpace = 16; FmtSign = 32; FmtZero = 64; FmtUnsigned = 128; FmtShort = 256; FmtLong = 512; FmtVLong = 1024; FmtComma = 2048; FmtByte = 4096; FmtFlag = 8192; sizeofTm = 64; aggr Tm { 'D' 0 nsec; 'D' 4 sec; 'D' 8 min; 'D' 12 hour; 'D' 16 mday; 'D' 20 mon; 'D' 24 year; 'D' 28 wday; 'D' 32 yday; 'a' 36 zone; 'D' 52 tzoff; 'Y' 56 tz; }; defn Tm(addr) { complex Tm addr; print(" nsec ", addr.nsec, "\n"); print(" sec ", addr.sec, "\n"); print(" min ", addr.min, "\n"); print(" hour ", addr.hour, "\n"); print(" mday ", addr.mday, "\n"); print(" mon ", addr.mon, "\n"); print(" year ", addr.year, "\n"); print(" wday ", addr.wday, "\n"); print(" yday ", addr.yday, "\n"); print(" zone ", addr.zone, "\n"); print(" tzoff ", addr.tzoff, "\n"); print(" tz ", addr.tz\Y, "\n"); }; sizeofTmfmt = 16; aggr Tmfmt { 'Y' 0 fmt; 'A' Tm 8 tm; }; defn Tmfmt(addr) { complex Tmfmt addr; print(" fmt ", addr.fmt\Y, "\n"); print(" tm ", addr.tm\Y, "\n"); }; PNPROC = 1; PNGROUP = 2; Profoff = 0; Profuser = 1; Profkernel = 2; Proftime = 3; Profsample = 4; sizeofLock = 8; aggr Lock { 'D' 0 val; }; defn Lock(addr) { complex Lock addr; print(" val ", addr.val, "\n"); }; sizeofQLp = 16; aggr QLp { 'D' 0 inuse; 'D' 4 state; 'A' QLp 8 next; }; defn QLp(addr) { complex QLp addr; print(" inuse ", addr.inuse, "\n"); print(" state ", addr.state, "\n"); print(" next ", addr.next\Y, "\n"); }; sizeofQLock = 32; aggr QLock { Lock 0 lock; 'D' 8 locked; 'A' QLp 16 $head; 'A' QLp 24 $tail; }; defn QLock(addr) { complex QLock addr; print("Lock lock {\n"); Lock(addr.lock); print("}\n"); print(" locked ", addr.locked, "\n"); print(" $head ", addr.$head\Y, "\n"); print(" $tail ", addr.$tail\Y, "\n"); }; sizeofRWLock = 32; aggr RWLock { Lock 0 lock; 'D' 8 readers; 'D' 12 writer; 'A' QLp 16 $head; 'A' QLp 24 $tail; }; defn RWLock(addr) { complex RWLock addr; print("Lock lock {\n"); Lock(addr.lock); print("}\n"); print(" readers ", addr.readers, "\n"); print(" writer ", addr.writer, "\n"); print(" $head ", addr.$head\Y, "\n"); print(" $tail ", addr.$tail\Y, "\n"); }; sizeofRendez = 24; aggr Rendez { 'A' QLock 0 l; 'A' QLp 8 $head; 'A' QLp 16 $tail; }; defn Rendez(addr) { complex Rendez addr; print(" l ", addr.l\Y, "\n"); print(" $head ", addr.$head\Y, "\n"); print(" $tail ", addr.$tail\Y, "\n"); }; sizeofNetConnInfo = 72; aggr NetConnInfo { 'Y' 0 dir; 'Y' 8 root; 'Y' 16 spec; 'Y' 24 lsys; 'Y' 32 lserv; 'Y' 40 rsys; 'Y' 48 rserv; 'Y' 56 laddr; 'Y' 64 raddr; }; defn NetConnInfo(addr) { complex NetConnInfo addr; print(" dir ", addr.dir\Y, "\n"); print(" root ", addr.root\Y, "\n"); print(" spec ", addr.spec\Y, "\n"); print(" lsys ", addr.lsys\Y, "\n"); print(" lserv ", addr.lserv\Y, "\n"); print(" rsys ", addr.rsys\Y, "\n"); print(" rserv ", addr.rserv\Y, "\n"); print(" laddr ", addr.laddr\Y, "\n"); print(" raddr ", addr.raddr\Y, "\n"); }; RFNAMEG = 1; RFENVG = 2; RFFDG = 4; RFNOTEG = 8; RFPROC = 16; RFMEM = 32; RFNOWAIT = 64; RFCNAMEG = 1024; RFCENVG = 2048; RFCFDG = 4096; RFREND = 8192; RFNOMNT = 16384; sizeofQid = 16; aggr Qid { 'W' 0 path; 'U' 8 vers; 'b' 12 type; }; defn Qid(addr) { complex Qid addr; print(" path ", addr.path, "\n"); print(" vers ", addr.vers, "\n"); print(" type ", addr.type, "\n"); }; sizeofDir = 80; aggr Dir { 'u' 0 type; 'U' 4 dev; Qid 8 qid; 'U' 24 mode; 'U' 28 atime; 'U' 32 mtime; 'V' 40 length; 'Y' 48 name; 'Y' 56 uid; 'Y' 64 gid; 'Y' 72 muid; }; defn Dir(addr) { complex Dir addr; print(" type ", addr.type, "\n"); print(" dev ", addr.dev, "\n"); print("Qid qid {\n"); Qid(addr.qid); print("}\n"); print(" mode ", addr.mode, "\n"); print(" atime ", addr.atime, "\n"); print(" mtime ", addr.mtime, "\n"); print(" length ", addr.length, "\n"); print(" name ", addr.name\Y, "\n"); print(" uid ", addr.uid\Y, "\n"); print(" gid ", addr.gid\Y, "\n"); print(" muid ", addr.muid\Y, "\n"); }; sizeofWaitmsg = 24; aggr Waitmsg { 'D' 0 pid; 'a' 4 time; 'Y' 16 msg; }; defn Waitmsg(addr) { complex Waitmsg addr; print(" pid ", addr.pid, "\n"); print(" time ", addr.time, "\n"); print(" msg ", addr.msg\Y, "\n"); }; sizeofIOchunk = 16; aggr IOchunk { 'Y' 0 addr; 'U' 8 len; }; defn IOchunk(addr) { complex IOchunk addr; print(" addr ", addr.addr\Y, "\n"); print(" len ", addr.len, "\n"); }; sizeofPlumbmsg = 56; aggr Plumbmsg { 'Y' 0 src; 'Y' 8 dst; 'Y' 16 wdir; 'Y' 24 type; 'Y' 32 attr; 'D' 40 ndata; 'Y' 48 data; }; defn Plumbmsg(addr) { complex Plumbmsg addr; print(" src ", addr.src\Y, "\n"); print(" dst ", addr.dst\Y, "\n"); print(" wdir ", addr.wdir\Y, "\n"); print(" type ", addr.type\Y, "\n"); print(" attr ", addr.attr\Y, "\n"); print(" ndata ", addr.ndata, "\n"); print(" data ", addr.data\Y, "\n"); }; sizeofPlumbattr = 24; aggr Plumbattr { 'Y' 0 name; 'Y' 8 value; 'A' Plumbattr 16 next; }; defn Plumbattr(addr) { complex Plumbattr addr; print(" name ", addr.name\Y, "\n"); print(" value ", addr.value\Y, "\n"); print(" next ", addr.next\Y, "\n"); }; Eopen = 0; Ecreate = 1; Emenu = 2; Emodified = 3; Eio = 4; Ewseq = 5; Eunk = 6; Emissop = 7; Edelim = 8; Efork = 9; Eintr = 10; Eaddress = 11; Esearch = 12; Epattern = 13; Enewline = 14; Eblank = 15; Enopattern = 16; EnestXY = 17; Enolbrace = 18; Enoaddr = 19; Eoverlap = 20; Enosub = 21; Elongrhs = 22; Ebadrhs = 23; Erange = 24; Esequence = 25; Eorder = 26; Enoname = 27; Eleftpar = 28; Erightpar = 29; Ebadclass = 30; Ebadregexp = 31; Eoverflow = 32; Enocmd = 33; Epipe = 34; Enofile = 35; Etoolong = 36; Echanges = 37; Eempty = 38; Efsearch = 39; Emanyfiles = 40; Elongtag = 41; Esubexp = 42; Etmpovfl = 43; Eappend = 44; Ecantplumb = 45; Ebufload = 46; Wdupname = 0; Wfile = 1; Wdate = 2; Wdupfile = 3; Wnulls = 4; Wpwd = 5; Wnotnewline = 6; Wbadstatus = 7; Clean = 32; Dirty = 39; Unread = 45; sizeofRange = 8; aggr Range { 'D' 0 p1; 'D' 4 p2; }; defn Range(addr) { complex Range addr; print(" p1 ", addr.p1, "\n"); print(" p2 ", addr.p2, "\n"); }; sizeofRangeset = 80; aggr Rangeset { 'a' 0 p; }; defn Rangeset(addr) { complex Rangeset addr; print(" p ", addr.p, "\n"); }; sizeofAddress = 16; aggr Address { Range 0 r; 'Y' 8 f; }; defn Address(addr) { complex Address addr; print("Range r {\n"); Range(addr.r); print("}\n"); print(" f ", addr.f\Y, "\n"); }; sizeofString = 16; aggr String { 'd' 0 n; 'd' 2 size; 'Y' 8 s; }; defn String(addr) { complex String addr; print(" n ", addr.n, "\n"); print(" size ", addr.size, "\n"); print(" s ", addr.s\Y, "\n"); }; sizeof_2_ = 8; aggr _2_ { 'Y' 0 listp; 'Y' 0 voidp; 'Y' 0 posnp; 'A' String 0 stringp; 'Y' 0 filep; }; defn _2_(addr) { complex _2_ addr; print(" listp ", addr.listp\Y, "\n"); print(" voidp ", addr.voidp\Y, "\n"); print(" posnp ", addr.posnp\Y, "\n"); print(" stringp ", addr.stringp\Y, "\n"); print(" filep ", addr.filep\Y, "\n"); }; sizeofList = 24; aggr List { 'D' 0 type; 'D' 4 nalloc; 'D' 8 nused; _2_ 16 g; }; defn List(addr) { complex List addr; print(" type ", addr.type, "\n"); print(" nalloc ", addr.nalloc, "\n"); print(" nused ", addr.nused, "\n"); print("_2_ g {\n"); _2_(addr.g); print("}\n"); }; Blockincr = 256; Maxblock = 8192; BUFSIZE = 8192; RBUFSIZE = 2048; Null = 45; Delete = 100; Insert = 105; Filename = 102; Dot = 68; Mark = 109; sizeof_3_ = 8; aggr _3_ { 'U' 0 n; 'Y' 0 next; }; defn _3_(addr) { complex _3_ addr; print(" n ", addr.n, "\n"); print(" next ", addr.next\Y, "\n"); }; sizeofBlock = 16; aggr Block { 'U' 0 addr; { 'U' 8 n; 'A' Block 8 next; }; }; defn Block(addr) { complex Block addr; print(" addr ", addr.addr, "\n"); print("_3_ {\n"); _3_(addr+8); print("}\n"); }; sizeofDisk = 280; aggr Disk { 'D' 0 fd; 'V' 8 addr; 'a' 16 free; }; defn Disk(addr) { complex Disk addr; print(" fd ", addr.fd, "\n"); print(" addr ", addr.addr, "\n"); print(" free ", addr.free, "\n"); }; sizeofBuffer = 56; aggr Buffer { 'U' 0 nc; 'Y' 8 c; 'U' 16 cnc; 'U' 20 cmax; 'U' 24 cq; 'D' 28 cdirty; 'U' 32 cbi; 'A' Block 40 bl; 'U' 48 nbl; }; defn Buffer(addr) { complex Buffer addr; print(" nc ", addr.nc, "\n"); print(" c ", addr.c\Y, "\n"); print(" cnc ", addr.cnc, "\n"); print(" cmax ", addr.cmax, "\n"); print(" cq ", addr.cq, "\n"); print(" cdirty ", addr.cdirty, "\n"); print(" cbi ", addr.cbi, "\n"); print(" bl ", addr.bl\Y, "\n"); print(" nbl ", addr.nbl, "\n"); }; sizeofFile = 312; aggr File { { 'U' 0 nc; 'Y' 8 c; 'U' 16 cnc; 'U' 20 cmax; 'U' 24 cq; 'D' 28 cdirty; 'U' 32 cbi; 'A' Block 40 bl; 'U' 48 nbl; }; Buffer 56 delta; Buffer 112 epsilon; String 168 name; 'W' 184 qidpath; 'U' 192 mtime; 'D' 196 dev; 'D' 200 unread; 'D' 204 seq; 'D' 208 cleanseq; 'D' 212 mod; 'C' 216 rescuing; 'D' 220 hiposn; Address 224 dot; Address 240 ndot; Range 256 tdot; Range 264 mark; 'A' List 272 rasp; 'd' 280 tag; 'C' 282 closeok; 'C' 283 deleted; Range 288 prevdot; Range 296 prevmark; 'D' 304 prevseq; 'D' 308 prevmod; }; defn File(addr) { complex File addr; print("Buffer {\n"); Buffer(addr+0); print("}\n"); print("Buffer delta {\n"); Buffer(addr.delta); print("}\n"); print("Buffer epsilon {\n"); Buffer(addr.epsilon); print("}\n"); print("String name {\n"); String(addr.name); print("}\n"); print(" qidpath ", addr.qidpath, "\n"); print(" mtime ", addr.mtime, "\n"); print(" dev ", addr.dev, "\n"); print(" unread ", addr.unread, "\n"); print(" seq ", addr.seq, "\n"); print(" cleanseq ", addr.cleanseq, "\n"); print(" mod ", addr.mod, "\n"); print(" rescuing ", addr.rescuing, "\n"); print(" hiposn ", addr.hiposn, "\n"); print("Address dot {\n"); Address(addr.dot); print("}\n"); print("Address ndot {\n"); Address(addr.ndot); print("}\n"); print("Range tdot {\n"); Range(addr.tdot); print("}\n"); print("Range mark {\n"); Range(addr.mark); print("}\n"); print(" rasp ", addr.rasp\Y, "\n"); print(" tag ", addr.tag, "\n"); print(" closeok ", addr.closeok, "\n"); print(" deleted ", addr.deleted, "\n"); print("Range prevdot {\n"); Range(addr.prevdot); print("}\n"); print("Range prevmark {\n"); Range(addr.prevmark); print("}\n"); print(" prevseq ", addr.prevseq, "\n"); print(" prevmod ", addr.prevmod, "\n"); }; complex Disk disk; complex Address addr; complex Buffer snarfbuf; complex Buffer plan9buf; complex Buffer cmdbuf; complex List file; complex List tempfile; complex File cmd; complex File curfile; complex File lastfile; complex Rangeset sel; complex String curwd; complex String cmdstr; complex String genstr; complex String lastpat; complex String lastregexp; complex String plan9cmd; Tversion = 0; Tstartcmdfile = 1; Tcheck = 2; Trequest = 3; Torigin = 4; Tstartfile = 5; Tworkfile = 6; Ttype = 7; Tcut = 8; Tpaste = 9; Tsnarf = 10; Tstartnewfile = 11; Twrite = 12; Tclose = 13; Tlook = 14; Tsearch = 15; Tsend = 16; Tdclick = 17; Tstartsnarf = 18; Tsetsnarf = 19; Tack = 20; Texit = 21; Tplumb = 22; Ttclick = 23; Tmenucmd = 24; Tmenucmdsend = 25; TMAX = 26; Hversion = 0; Hbindname = 1; Hcurrent = 2; Hnewname = 3; Hmovname = 4; Hgrow = 5; Hcheck0 = 6; Hcheck = 7; Hunlock = 8; Hdata = 9; Horigin = 10; Hunlockfile = 11; Hsetdot = 12; Hgrowdata = 13; Hmoveto = 14; Hclean = 15; Hdirty = 16; Hcut = 17; Hsetpat = 18; Hdelname = 19; Hclose = 20; Hsetsnarf = 21; Hsnarflen = 22; Hack = 23; Hexit = 24; Hplumb = 25; Hmenucmd = 26; HMAX = 27; sizeofHeader = 8; aggr Header { 'b' 0 type; 'b' 1 count0; 'b' 2 count1; 'a' 3 data; }; defn Header(addr) { complex Header addr; print(" type ", addr.type, "\n"); print(" count0 ", addr.count0, "\n"); print(" count1 ", addr.count1, "\n"); print(" data ", addr.data, "\n"); }; complex String print_ss:a; complex String print_ss:b; complex String print_s:a; complex Dir statfile:dirb; complex Dir statfd:dirb; complex Waitmsg waitfor:w;