hbase

heirloom base
git clone git://git.2f30.org/hbase
Log | Files | Refs | README

bcat.c (725B)


      1 #include <fmt.h>
      2 #include "bio.h"
      3 
      4 Biobuf bout;
      5 
      6 void
      7 bcat(Biobuf *b, char *name)
      8 {
      9 	char buf[1000];
     10 	int n;
     11 
     12 	while((n = Bread(b, buf, sizeof buf)) > 0){
     13 		if(Bwrite(&bout, buf, n) < 0)
     14 			fprint(2, "writing during %s: %r\n", name);
     15 	}
     16 	if(n < 0)
     17 		fprint(2, "reading %s: %r\n", name);	
     18 }
     19 
     20 int
     21 main(int argc, char **argv)
     22 {
     23 	int i;
     24 	Biobuf b, *bp;
     25 	Fmt fmt;
     26 
     27 	Binit(&bout, 1, O_WRONLY);
     28 	Bfmtinit(&fmt, &bout);
     29 	fmtprint(&fmt, "hello, world\n");
     30 	Bfmtflush(&fmt);
     31 
     32 	if(argc == 1){
     33 		Binit(&b, 0, O_RDONLY);
     34 		bcat(&b, "<stdin>");
     35 	}else{
     36 		for(i=1; i<argc; i++){
     37 			if((bp = Bopen(argv[i], O_RDONLY)) == 0){
     38 				fprint(2, "Bopen %s: %r\n", argv[i]);
     39 				continue;
     40 			}
     41 			bcat(bp, argv[i]);
     42 			Bterm(bp);
     43 		}
     44 	}
     45 	exit(0);
     46 }