123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181 |
- #include "all.h"
- #include "9p1.h"
- static void dumpsome(char*, char*, long);
- static void fdirconv(char*, Dentry*);
- int
- ofcallfmt(Fmt *f1)
- {
- char buf[512];
- Oldfcall *f;
- int fid, type, tag, n;
- Dentry d;
- f = va_arg(f1->args, Oldfcall*);
- type = f->type;
- fid = f->fid;
- tag = f->tag;
- switch(type){
- case Tnop9p1: /* 50 */
- sprint(buf, "Tnop9p1 tag %ud", tag);
- break;
- case Rnop9p1:
- sprint(buf, "Rnop9p1 tag %ud", tag);
- break;
- case Tsession9p1: /* 52 */
- sprint(buf, "Tsession9p1 tag %ud", tag);
- break;
- case Rsession9p1:
- sprint(buf, "Rsession9p1 tag %ud", tag);
- break;
- case Rerror9p1: /* 55 */
- sprint(buf, "Rerror9p1 tag %ud error %.64s", tag, f->ename);
- break;
- case Tflush9p1: /* 56 */
- sprint(buf, "Tflush9p1 tag %ud oldtag %d", tag, f->oldtag);
- break;
- case Rflush9p1:
- sprint(buf, "Rflush9p1 tag %ud", tag);
- break;
- case Tattach9p1: /* 58 */
- sprint(buf, "Tattach9p1 tag %ud fid %d uname %.28s aname %.28s auth %.28s",
- tag, f->fid, f->uname, f->aname, f->auth);
- break;
- case Rattach9p1:
- sprint(buf, "Rattach9p1 tag %ud fid %d qid 0x%lux|0x%lux",
- tag, fid, f->qid.path, f->qid.version);
- break;
- case Tclone9p1: /* 60 */
- sprint(buf, "Tclone9p1 tag %ud fid %d newfid %d", tag, fid, f->newfid);
- break;
- case Rclone9p1:
- sprint(buf, "Rclone9p1 tag %ud fid %d", tag, fid);
- break;
- case Twalk9p1: /* 62 */
- sprint(buf, "Twalk9p1 tag %ud fid %d name %.28s", tag, fid, f->name);
- break;
- case Rwalk9p1:
- sprint(buf, "Rwalk9p1 tag %ud fid %d qid 0x%lux|0x%lux",
- tag, fid, f->qid.path, f->qid.version);
- break;
- case Topen9p1: /* 64 */
- sprint(buf, "Topen9p1 tag %ud fid %d mode %d", tag, fid, f->mode);
- break;
- case Ropen9p1:
- sprint(buf, "Ropen9p1 tag %ud fid %d qid 0x%lux|0x%lux",
- tag, fid, f->qid.path, f->qid.version);
- break;
- case Tcreate9p1: /* 66 */
- sprint(buf, "Tcreate9p1 tag %ud fid %d name %.28s perm 0x%lux mode %d",
- tag, fid, f->name, f->perm, f->mode);
- break;
- case Rcreate9p1:
- sprint(buf, "Rcreate9p1 tag %ud fid %d qid 0x%lux|0x%lux",
- tag, fid, f->qid.path, f->qid.version);
- break;
- case Tread9p1: /* 68 */
- sprint(buf, "Tread9p1 tag %ud fid %d offset %ld count %ld",
- tag, fid, f->offset, f->count);
- break;
- case Rread9p1:
- n = sprint(buf, "Rread9p1 tag %ud fid %d count %ld ", tag, fid, f->count);
- dumpsome(buf+n, f->data, f->count);
- break;
- case Twrite9p1: /* 70 */
- n = sprint(buf, "Twrite9p1 tag %ud fid %d offset %ld count %ld ",
- tag, fid, f->offset, f->count);
- dumpsome(buf+n, f->data, f->count);
- break;
- case Rwrite9p1:
- sprint(buf, "Rwrite9p1 tag %ud fid %d count %ld", tag, fid, f->count);
- break;
- case Tclunk9p1: /* 72 */
- sprint(buf, "Tclunk9p1 tag %ud fid %d", tag, fid);
- break;
- case Rclunk9p1:
- sprint(buf, "Rclunk9p1 tag %ud fid %d", tag, fid);
- break;
- case Tremove9p1: /* 74 */
- sprint(buf, "Tremove9p1 tag %ud fid %d", tag, fid);
- break;
- case Rremove9p1:
- sprint(buf, "Rremove9p1 tag %ud fid %d", tag, fid);
- break;
- case Tstat9p1: /* 76 */
- sprint(buf, "Tstat9p1 tag %ud fid %d", tag, fid);
- break;
- case Rstat9p1:
- n = sprint(buf, "Rstat9p1 tag %ud fid %d", tag, fid);
- convM2D9p1(f->stat, &d);
- sprint(buf+n, " stat ");
- fdirconv(buf+n+6, &d);
- break;
- case Twstat9p1: /* 78 */
- convM2D9p1(f->stat, &d);
- n = sprint(buf, "Twstat9p1 tag %ud fid %d stat ", tag, fid);
- fdirconv(buf+n, &d);
- break;
- case Rwstat9p1:
- sprint(buf, "Rwstat9p1 tag %ud fid %d", tag, fid);
- break;
- case Tclwalk9p1: /* 81 */
- sprint(buf, "Tclwalk9p1 tag %ud fid %d newfid %d name %.28s",
- tag, fid, f->newfid, f->name);
- break;
- case Rclwalk9p1:
- sprint(buf, "Rclwalk9p1 tag %ud fid %d qid 0x%lux|0x%lux",
- tag, fid, f->qid.path, f->qid.version);
- break;
- default:
- sprint(buf, "unknown type %d", type);
- }
- return fmtstrcpy(f1, buf);
- }
- static void
- fdirconv(char *buf, Dentry *d)
- {
- sprint(buf, "'%s' uid=%d gid=%d "
- "q %lux|%lux m %uo "
- "at %ld mt %ld l %ld ",
- d->name, d->uid, d->gid,
- d->qid.path, d->qid.version, d->mode,
- d->atime, d->mtime, d->size);
- }
- /*
- * dump out count (or DUMPL, if count is bigger) bytes from
- * buf to ans, as a string if they are all printable,
- * else as a series of hex bytes
- */
- #define DUMPL 24
- static void
- dumpsome(char *ans, char *buf, long count)
- {
- int i, printable;
- char *p;
- printable = 1;
- if(count > DUMPL)
- count = DUMPL;
- for(i=0; i<count && printable; i++)
- if((buf[i]<32 && buf[i] !='\n' && buf[i] !='\t') || (uchar)buf[i]>127)
- printable = 0;
- p = ans;
- *p++ = '\'';
- if(printable){
- memmove(p, buf, count);
- p += count;
- }else{
- for(i=0; i<count; i++){
- if(i>0 && i%4==0)
- *p++ = ' ';
- sprint(p, "%2.2ux", buf[i]);
- p += 2;
- }
- }
- *p++ = '\'';
- *p = 0;
- }
|