- if (base + len <= CHAN_BUFSZ)
- r = read(fd, c->buf + base, len);
- else {
+ D( printf("readchan %d: base = %u, len = %u; ", fd, base, len); )
+ if (base == 0) {
+ D( printf("%u:%u", len, CHAN_BUFSZ - len); )
+ r = read(fd, c->buf + len, CHAN_BUFSZ - len);
+ } else if (base + len >= CHAN_BUFSZ) {
+ D( printf("%u:%u", base + len - CHAN_BUFSZ, CHAN_BUFSZ - len); )
+ r = read(fd, c->buf + base + len - CHAN_BUFSZ, CHAN_BUFSZ - len);
+ } else {