print.c (2998B)
1 #include "dat.h" 2 #include <fmt.h> 3 #include "fns.h" 4 5 static char* fcnames[] = { 6 "TVersion", 7 "RVersion", 8 "TAuth", 9 "RAuth", 10 "TAttach", 11 "RAttach", 12 "TError", 13 "RError", 14 "TFlush", 15 "RFlush", 16 "TWalk", 17 "RWalk", 18 "TOpen", 19 "ROpen", 20 "TCreate", 21 "RCreate", 22 "TRead", 23 "RRead", 24 "TWrite", 25 "RWrite", 26 "TClunk", 27 "RClunk", 28 "TRemove", 29 "RRemove", 30 "TStat", 31 "RStat", 32 "TWStat", 33 "RWStat", 34 }; 35 36 static int 37 qid(Fmt *f, IxpQid *q) { 38 return fmtprint(f, "(%uhd,%uld,%ullx)", q->type, q->version, q->path); 39 } 40 41 int 42 Ffmt(Fmt *f) { 43 IxpFcall *fcall; 44 45 fcall = va_arg(f->args, IxpFcall*); 46 fmtprint(f, "% 2d %s\t", fcall->hdr.tag, fcnames[fcall->hdr.type - TVersion]); 47 switch(fcall->hdr.type) { 48 case TVersion: 49 case RVersion: 50 fmtprint(f, " msize: %uld version: \"%s\"", (ulong)fcall->version.msize, fcall->version.version); 51 break; 52 case TAuth: 53 fmtprint(f, " afid: %uld uname: \"%s\" aname: \"%s\"", (ulong)fcall->tauth.afid, fcall->tauth.uname, fcall->tauth.aname); 54 break; 55 case RAuth: 56 fmtprint(f, " aqid: "); 57 qid(f, &fcall->rauth.aqid); 58 break; 59 case RAttach: 60 fmtprint(f, " qid: "); 61 qid(f, &fcall->rattach.qid); 62 break; 63 case TAttach: 64 fmtprint(f, " fid: %uld afid: %uld uname: \"%s\" aname: \"%s\"", (ulong)fcall->hdr.fid, (ulong)fcall->tattach.afid, fcall->tattach.uname, fcall->tattach.aname); 65 break; 66 case RError: 67 fmtprint(f, " \"%s\"", fcall->error.ename); 68 break; 69 case TFlush: 70 fmtprint(f, " oldtag: %uld", (ulong)fcall->tflush.oldtag); 71 break; 72 case TWalk: 73 fmtprint(f, " newfid: %uld wname: {", (ulong)fcall->twalk.newfid); 74 for(int i=0; i<fcall->twalk.nwname; i++) { 75 if(i > 0) fmtprint(f, ", "); 76 fmtprint(f, "\"%s\"", fcall->twalk.wname[i]); 77 } 78 fmtprint(f, "}"); 79 break; 80 case RWalk: 81 fmtprint(f, " wqid: {"); 82 for(int i=0; i<fcall->rwalk.nwqid; i++) { 83 if(i > 0) fmtprint(f, ", "); 84 qid(f, &fcall->rwalk.wqid[i]); 85 } 86 fmtprint(f, "}"); 87 break; 88 case TOpen: 89 fmtprint(f, " fid: %uld mode: %ulo", (ulong)fcall->hdr.fid, (ulong)fcall->topen.mode); 90 break; 91 case ROpen: 92 case RCreate: 93 fmtprint(f, " qid: "); 94 qid(f, &fcall->ropen.qid); 95 fmtprint(f, " %uld", (ulong)fcall->ropen.iounit); 96 break; 97 case TCreate: 98 fmtprint(f, " fid: %uld name: \"%s\" perm: %ulo mode: %ulo", (ulong)fcall->hdr.fid, fcall->tcreate.name, (ulong)fcall->tcreate.perm, (ulong)fcall->tcreate.mode); 99 break; 100 case TRead: 101 fmtprint(f, " fid: %uld offset: %ulld count: %uld", (ulong)fcall->hdr.fid, fcall->tread.offset, (ulong)fcall->tread.count); 102 break; 103 case RRead: 104 fmtprint(f, " data: {data: %uld}", fcall->rread.count); 105 break; 106 case TWrite: 107 fmtprint(f, " fid: %uld offset: %ulld data: {data: %uld}", (ulong)fcall->hdr.fid, fcall->twrite.offset, fcall->twrite.count); 108 break; 109 case RWrite: 110 fmtprint(f, " count: %uld", (ulong)fcall->rwrite.count); 111 break; 112 case TClunk: 113 case TRemove: 114 case TStat: 115 fmtprint(f, " fid: %uld", (ulong)fcall->hdr.fid); 116 break; 117 case RStat: 118 fmtprint(f, " stat: {data: %uld}", fcall->rstat.nstat); 119 break; 120 } 121 122 return 0; 123 } 124