summaryrefslogtreecommitdiff
path: root/sys/src/cmd/ndb/cs.c
diff options
context:
space:
mode:
authorethan <ethan@vx32vardo>2013-07-05 21:51:35 +0100
committerethan <ethan@vx32vardo>2013-07-05 21:51:35 +0100
commit0e9a80d129306202e31e9ed253b75b9b06703a86 (patch)
tree0141d8ed52f9c78e33f8ebbf281d0d2125c55108 /sys/src/cmd/ndb/cs.c
parent6fd3e90d85b43e4d7d97d11d282946d11d22183a (diff)
parent252b0ff3c9b17628e641f2e9eb84468fb8975a6e (diff)
merge
Diffstat (limited to 'sys/src/cmd/ndb/cs.c')
-rw-r--r--sys/src/cmd/ndb/cs.c10
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;