diff -Nru /n/sources/plan9/sys/src/cmd/fossil/9p.c /sys/src/cmd/fossil/9p.c --- /n/sources/plan9/sys/src/cmd/fossil/9p.c Thu Jul 29 16:04:16 2010 +++ /sys/src/cmd/fossil/9p.c Sat Dec 3 00:00:00 2011 @@ -172,18 +172,22 @@ } tsync = 0; } + op = 0; if(dir.muid != nil && *dir.muid != '\0'){ if((uid = uidByUname(dir.muid)) == nil){ werrstr("wstat -- unknown muid"); goto error; } if(strcmp(uid, de.mid) != 0){ - werrstr("wstat -- attempt to change muid"); - goto error; + vtfree(de.mid); + de.mid = uid; + uid = nil; + op = 1; + }else{ + vtfree(uid); + uid = nil; + tsync = 0; } - vtfree(uid); - uid = nil; - tsync = 0; } /* @@ -196,8 +200,6 @@ } } - op = 0; - oldmode = de.mode; if(dir.qid.type != (uchar)~0 || dir.mode != ~0){ /* diff -Nru /n/sources/plan9/sys/src/cmd/fossil/file.c /sys/src/cmd/fossil/file.c --- /n/sources/plan9/sys/src/cmd/fossil/file.c Thu Jun 16 19:35:54 2011 +++ /sys/src/cmd/fossil/file.c Sat Dec 3 00:00:00 2011 @@ -881,6 +881,11 @@ f->dir.gid = vtStrDup(dir->gid); } + if(strcmp(f->dir.mid, dir->mid) != 0){ + vtfree(f->dir.mid); + f->dir.mid = vtstrdup(dir->mid); + } + f->dir.mtime = dir->mtime; f->dir.atime = dir->atime;