1 /* Licensed under LGPLv2+ - see LICENSE file for details */
3 #include <ccan/talloc/talloc.h>
4 #include <ccan/noerr/noerr.h>
10 void *grab_fd(const void *ctx, int fd, size_t *size)
21 if (fstat(fd, &st) == 0 && S_ISREG(st.st_mode))
26 buffer = talloc_array(ctx, char, max+1);
27 while ((ret = read(fd, buffer + *size, max - *size)) > 0) {
30 buffer = talloc_realloc(ctx, buffer, char, max*2+1);
32 buffer = talloc_realloc(ctx, buffer, char,
50 void *grab_file(const void *ctx, const char *filename, size_t *size)
56 fd = dup(STDIN_FILENO);
58 fd = open(filename, O_RDONLY, 0);
63 buffer = grab_fd(ctx, fd, size);