use buffered io to speed output to slow terminals or links Reference: /n/sources/patch/applied/ndbbio Date: Wed Mar 19 22:41:14 CET 2008 Signed-off-by: quanstro@quanstro.net --- /sys/src/cmd/ndb/query.c Wed Mar 19 22:41:09 2008 +++ /sys/src/cmd/ndb/query.c Wed Mar 19 22:41:07 2008 @@ -7,6 +7,7 @@ #include static int all, multiple; +Biobuf bout; void usage(void) @@ -22,7 +23,7 @@ { for(; nt; nt = nt->entry) if (strcmp(nt->attr, rattr) == 0) - print("%s\n", nt->val); + Bprint(&bout, "%s\n", nt->val); } void @@ -38,7 +39,7 @@ if (multiple) prmatch(t, rattr); else if(p) - print("%s\n", p); + Bprint(&bout, "%s\n", p); ndbfree(t); free(p); return; @@ -57,8 +58,8 @@ /* all entries */ for(t = ndbsearch(db, &s, attr, val); t; t = ndbsnext(&s, attr, val)){ for(nt = t; nt; nt = nt->entry) - print("%s=%s ", nt->attr, nt->val); - print("\n"); + Bprint(&bout, "%s=%s ", nt->attr, nt->val); + Bprint(&bout, "\n"); ndbfree(t); } } @@ -69,7 +70,7 @@ int reps = 1; char *rattr = nil, *dbfile = nil; Ndb *db; - + ARGBEGIN{ case 'a': all++; @@ -78,7 +79,7 @@ multiple++; break; case 'f': - dbfile = ARGF(); + dbfile = EARGF(usage()); break; default: usage(); @@ -97,7 +98,9 @@ default: usage(); } - + + if(Binit(&bout, 1, OWRITE) == -1) + sysfatal("Binit: %r"); db = ndbopen(dbfile); if(db == nil){ fprint(2, "%s: no db files\n", argv0);