# HG changeset patch # User Ron Minnich # Date 1319646478 25200 # Node ID 324ef81366da0fdc7f95635e578d31cc1adb11ea # Parent 18cdb351be7b97e64d1d3847c1bdc9fa74bde62a error string and a first cut at write to vacfs.c Make the error for a mismatched user a bit more explicit Function to prototype writing (does not work) R=nixiedev, nemo CC=nix-dev http://codereview.appspot.com/5321050 diff -r 18cdb351be7b -r 324ef81366da sys/src/cmd/vtvacfs/vacfs.c --- a/sys/src/cmd/vtvacfs/vacfs.c Wed Oct 26 09:27:16 2011 -0700 +++ b/sys/src/cmd/vtvacfs/vacfs.c Wed Oct 26 09:27:58 2011 -0700 @@ -215,8 +215,7 @@ VacFile *file; char err[80]; char *score = rhdr.aname; - - fs = vacfsopen(nil, score, VtOREAD, 1024); + fs = vacfsopen(nil, score, VtORDWR, 1024); if (fs == nil) { rerrstr(err, sizeof err); return vtstrdup(err); @@ -380,8 +379,9 @@ vf = fid->file; if(!vacfileisdir(vf)) return vtstrdup(Enotdir); - if(!permf(vf, fid->user, Pwrite)) - return vtstrdup(Eperm); + if(!permf(vf, fid->user, Pwrite)){ + return smprint("%s:'%s' not allowed", Eperm, fid->user); + } mode = rhdr.perm & 0777; @@ -461,8 +461,29 @@ static char* rwrite(Fid *f) { - USED(f); - return vtstrdup(Erdonly); + char *buf; + vlong off; + int cnt; + VacFile *vf; + char err[80]; + int n; + extern int debug; + + fprint(2, "rwrite busy %d\n", f->busy); + if(!f->busy) + return vtstrdup(Enotexist); + vf = f->file; + thdr.count = 0; + off = rhdr.offset; + buf = thdr.data; + cnt = rhdr.count; + n = vacfilewrite(vf, buf, cnt, off); + if(n < 0) { + rerrstr(err, sizeof err); + return vtstrdup(err); + } + thdr.count = n; + return 0; } static char *