Browse Source Download (without any required ccan dependencies)
rbuf
buffered I/O input primitive.
Rusty Russell <rusty@rustcorp.com.au>
This code is like stdio, only simpler and more transparent to the user.
#include <ccan/rbuf/rbuf.h>
#include <ccan/err/err.h>
#include <stdlib.h>
#include <unistd.h>
// Dumb demo program to replace ' ' with '*'.
int main(int argc, char *argv[])
{
struct rbuf in;
char *word;
if (argv[1]) {
if (!rbuf_open(&in, argv[1], NULL, 0))
err(1, "Failed opening %s", argv[1]);
} else
rbuf_init(&in, STDIN_FILENO, NULL, 0);
while ((word = rbuf_read_str(&in, ' ', realloc)) != NULL)
printf("%s*", word);
if (errno)
err(1, "Reading %s", argv[1] ? argv[1] : "<stdin>");
// Free the buffer, just because we can.
free(in.buf);
return 0;
}
BSD-MIT