__private_extern__ int wstat_9p(mount_9p *nmp, fid_9p fid, dir_9p *dp) { Fcall tx, rx; void *p; uint32_t n; int e, dotu; TRACE(); dotu = ISSET(nmp->flags, F_DOTU); n = sizeD2M(dp, dotu); p = malloc_9p(n); if (p == NULL) return ENOMEM; if(convD2M(dp, p, n, dotu) != n){ free_9p(p); return EINVAL; } tx.type = Twstat; tx.fid = fid; tx.stat = p; tx.nstat = n; e = rpc_9p(nmp, &tx, &rx, NULL); free_9p(p); return e; }
int dirfwstat(int fd, Dir *d) { uint8_t *buf; int r; r = sizeD2M(d); buf = malloc(r); if(buf == nil) return -1; convD2M(d, buf, r); r = fwstat(fd, buf, r); free(buf); return r; }
int dirwstat(char *name, Dir *d) { uchar *buf; int r; r = sizeD2M(d); buf = malloc(r); if(buf == nil) return -1; convD2M(d, buf, r); r = wstat(name, buf, r); free(buf); return r; }