X-Git-Url: http://git.ozlabs.org/?p=ccan;a=blobdiff_plain;f=tools%2Fdepends.c;fp=tools%2Fdepends.c;h=1a62286572bf6344c005a9c1a870659016498262;hp=a7c353c27d04571473808b67692219cc46cf2b12;hb=aabf300e324f7da5134d7ad45afba11225045c24;hpb=44b37ee8aeb185f6837378fef17d887bda6ff89b diff --git a/tools/depends.c b/tools/depends.c index a7c353c2..1a622865 100644 --- a/tools/depends.c +++ b/tools/depends.c @@ -1,8 +1,8 @@ #include #include -#include #include #include +#include #include #include #include "tools.h" @@ -17,8 +17,9 @@ static char ** PRINTF_FMT(2, 3) lines_from_cmd(const void *ctx, const char *format, ...) { va_list ap; - char *cmd, *buffer; + char *cmd; FILE *p; + struct rbuf in; va_start(ap, format); cmd = talloc_vasprintf(ctx, format, ap); @@ -28,12 +29,13 @@ lines_from_cmd(const void *ctx, const char *format, ...) if (!p) err(1, "Executing '%s'", cmd); - buffer = grab_fd(ctx, fileno(p), NULL); - if (!buffer) + /* FIXME: Use rbuf_read_str(&in, '\n') rather than strsplit! */ + rbuf_init(&in, fileno(p), talloc_array(ctx, char, 4096), 4096); + if (!rbuf_read_str(&in, 0, do_talloc_realloc) && errno) err(1, "Reading from '%s'", cmd); pclose(p); - return strsplit(ctx, buffer, "\n"); + return strsplit(ctx, in.buf, "\n"); } /* Be careful about trying to compile over running programs (parallel make). @@ -45,7 +47,8 @@ char *compile_info(const void *ctx, const char *dir) int fd; /* Copy it to a file with proper .c suffix. */ - info = grab_file(ctx, talloc_asprintf(ctx, "%s/_info", dir), &len); + info = talloc_grab_file(ctx, talloc_asprintf(ctx, "%s/_info", dir), + &len); if (!info) return NULL; @@ -126,7 +129,7 @@ static char **get_one_safe_deps(const void *ctx, bool correct_style = false; fname = talloc_asprintf(ctx, "%s/_info", dir); - raw = grab_file(fname, fname, NULL); + raw = talloc_grab_file(fname, fname, NULL); if (!raw) errx(1, "Could not open %s", fname);