+static int
+pipewstat(Chan* c, uchar* db, int n)
+{
+ int m;
+ Dir *dir;
+ Pipe *p;
+
+ p = c->aux;
+ if(strcmp(up->user, eve) != 0)
+ error(Eperm);
+ if(NETTYPE(c->qid.path) == Qdir)
+ error(Eisdir);
+
+ dir = smalloc(sizeof(Dir)+n);
+ if(waserror()){
+ free(dir);
+ nexterror();
+ }
+ m = convM2D(db, n, &dir[0], (char*)&dir[1]);
+ if(m == 0)
+ error(Eshortstat);
+ if(!emptystr(dir[0].uid))
+ error("can't change owner");
+ if(dir[0].mode != ~0UL)
+ p->perm = dir[0].mode;
+ poperror();
+ free(dir);
+ return m;
+}
+