#include <fmt.h>
#include "bio.h"

Biobuf bout;

void
bcat(Biobuf *b, char *name)
{
	char buf[1000];
	int n;

	while((n = Bread(b, buf, sizeof buf)) > 0){
		if(Bwrite(&bout, buf, n) < 0)
			fprint(2, "writing during %s: %r\n", name);
	}
	if(n < 0)
		fprint(2, "reading %s: %r\n", name);	
}

int
main(int argc, char **argv)
{
	int i;
	Biobuf b, *bp;
	Fmt fmt;

	Binit(&bout, 1, O_WRONLY);
	Bfmtinit(&fmt, &bout);
	fmtprint(&fmt, "hello, world\n");
	Bfmtflush(&fmt);

	if(argc == 1){
		Binit(&b, 0, O_RDONLY);
		bcat(&b, "<stdin>");
	}else{
		for(i=1; i<argc; i++){
			if((bp = Bopen(argv[i], O_RDONLY)) == 0){
				fprint(2, "Bopen %s: %r\n", argv[i]);
				continue;
			}
			bcat(bp, argv[i]);
			Bterm(bp);
		}
	}
	exit(0);
}
