summaryrefslogtreecommitdiff
path: root/sys/src/cmd/xd.c
diff options
context:
space:
mode:
authoraiju <devnull@localhost>2017-06-12 19:56:57 +0000
committeraiju <devnull@localhost>2017-06-12 19:56:57 +0000
commitfff474d8639fd387aac437e0a84a06604000c3ba (patch)
tree85d557ff95f7bacd595380840ef5b6e30e47572e /sys/src/cmd/xd.c
parent1a40bdeb843042a66d913e8fbf15fad4bf3a5875 (diff)
xd: use new bio magic to make -u more efficient
Diffstat (limited to 'sys/src/cmd/xd.c')
-rw-r--r--sys/src/cmd/xd.c12
1 files changed, 8 insertions, 4 deletions
diff --git a/sys/src/cmd/xd.c b/sys/src/cmd/xd.c
index 71726569b..76d08df44 100644
--- a/sys/src/cmd/xd.c
+++ b/sys/src/cmd/xd.c
@@ -58,6 +58,13 @@ char *afmt[2][3] = {
Biobuf bin;
Biobuf bout;
+int
+flushout(Biobufhdr *bp, void *v, long n)
+{
+ Bflush(&bout);
+ return read(bp->fid, v, n);
+}
+
void
main(int argc, char *argv[])
{
@@ -206,6 +213,7 @@ xd(char *name, int title)
bp = &bin;
Binit(bp, fd, OREAD);
}
+ if(flush) Biofn(bp, flushout);
Blethal(bp, nil);
if(title)
xprint("%s\n", name);
@@ -237,15 +245,11 @@ xd(char *name, int title)
xprint(ap->afmt, addr);
(*ap->fn)(ap->fmt);
xprint("\n", 0);
- if(flush)
- Bflush(&bout);
}
addr += ndata;
if(ndata<16){
xprint(afmt[0][abase], addr);
xprint("\n", 0);
- if(flush)
- Bflush(&bout);
break;
}
}