diff options
author | cinap_lenrek <cinap_lenrek@felloff.net> | 2016-11-09 19:44:38 +0100 |
---|---|---|
committer | cinap_lenrek <cinap_lenrek@felloff.net> | 2016-11-09 19:44:38 +0100 |
commit | d2ad8df9472c65931c649d312bf0ae46e1ceedd8 (patch) | |
tree | 685f4f4fb03724e3628d8c03b7096cb663c377fd | |
parent | d97eb114d5dd63f3f0d5b96d8f34a1613761793e (diff) |
kernel/qio: implement concatblock() with pullupblock()
-rw-r--r-- | sys/src/9/port/qio.c | 18 |
1 files changed, 4 insertions, 14 deletions
diff --git a/sys/src/9/port/qio.c b/sys/src/9/port/qio.c index bd026e5a9..0632af9ac 100644 --- a/sys/src/9/port/qio.c +++ b/sys/src/9/port/qio.c @@ -140,29 +140,19 @@ blockalloclen(Block *bp) } /* - * copy the string of blocks into + * copy the string of blocks into * a single block and free the string */ Block* concatblock(Block *bp) { - Block *nb, *next; int len; if(bp->next == nil) return bp; - - nb = allocb(blocklen(bp)); - for(; bp != nil; bp = next) { - next = bp->next; - len = BLEN(bp); - memmove(nb->wp, bp->rp, len); - nb->wp += len; - freeb(bp); - } - concatblockcnt += BLEN(nb); - QDEBUG checkb(nb, "concatblock 1"); - return nb; + len = blocklen(bp); + concatblockcnt += len; + return pullupblock(bp, len); } /* |