diff options
author | ethan <ethan@vx32vardo> | 2013-07-05 21:51:35 +0100 |
---|---|---|
committer | ethan <ethan@vx32vardo> | 2013-07-05 21:51:35 +0100 |
commit | 0e9a80d129306202e31e9ed253b75b9b06703a86 (patch) | |
tree | 0141d8ed52f9c78e33f8ebbf281d0d2125c55108 /sys/src/cmd/ndb/cs.c | |
parent | 6fd3e90d85b43e4d7d97d11d282946d11d22183a (diff) | |
parent | 252b0ff3c9b17628e641f2e9eb84468fb8975a6e (diff) |
merge
Diffstat (limited to 'sys/src/cmd/ndb/cs.c')
-rw-r--r-- | sys/src/cmd/ndb/cs.c | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/sys/src/cmd/ndb/cs.c b/sys/src/cmd/ndb/cs.c index 4e0ed17d6..512f1706a 100644 --- a/sys/src/cmd/ndb/cs.c +++ b/sys/src/cmd/ndb/cs.c @@ -87,6 +87,7 @@ int *isslave; /* *isslave non-zero means this is a slave process */ long active; /* number of active slaves */ char *dbfile; Ndb *db, *netdb; +char *csuser; void rversion(Job*); void rflush(Job*); @@ -266,6 +267,7 @@ main(int argc, char *argv[]) netinit(0); if(!justsetname){ + csuser = estrdup(getuser()); mountinit(servefile, mntpt); io(); } @@ -442,8 +444,10 @@ io(void) for(;;){ n = read9pmsg(mfd[0], mdata, sizeof mdata); - if(n<=0) + if(n < 0) error("mount read"); + if(n == 0) + continue; job = newjob(); if(convM2S(mdata, n, &job->request) != n){ syslog(1, logfile, "format error %ux %ux %ux %ux %ux", @@ -779,6 +783,9 @@ rwrite(Job *job, Mfile *mf) } job->request.data[cnt] = 0; + if(strcmp(mf->user, "none") == 0 || strcmp(mf->user, csuser) != 0) + goto query; /* skip special commands if not owner */ + /* * toggle debugging */ @@ -825,6 +832,7 @@ rwrite(Job *job, Mfile *mf) goto send; } +query: if(mf->ref){ err = "query already in progress"; goto send; |