kbdfs: fix queue bug

cinap_lenrek 2011-06-07 04:35:23 +00:00
parent b932aaeafc
commit 77481acf05
1 changed files with 19 additions and 19 deletions

View File

@ -653,29 +653,29 @@ reqproc(void *aux)
if(0){
case ASTR:
p = s;
} else if(s == nil)
continue;
if((r = q) == nil)
continue;
if((q = q->aux) == nil)
qq = &q;
}
e = s + strlen(s);
if(p == s && r->fid->qid.path == Qkbd)
e++; /* send terminating \0 if its kbd file */
while(s && q){
r = q;
if((q = q->aux) == nil)
qq = &q;
n = e - p;
if(n > r->ifcall.count)
n = r->ifcall.count;
e = s + strlen(s);
if(p == s && r->fid->qid.path == Qkbd)
e++; /* send terminating \0 if its kbd file */
n = e - p;
if(n > r->ifcall.count)
n = r->ifcall.count;
r->ofcall.count = n;
memmove(r->ofcall.data, p, n);
respond(r, nil);
r->ofcall.count = n;
memmove(r->ofcall.data, p, n);
respond(r, nil);
p += n;
if(p >= e){
free(s);
s = nil;
p += n;
if(p >= e){
free(s);
s = nil;
}
}
}
}