From e4142e580c36230a1e5137f8a5f5a5cc01a57a1e Mon Sep 17 00:00:00 2001 From: Rusty Russell Date: Fri, 12 Oct 2018 10:55:31 +1030 Subject: [PATCH] rbuf, tools: clean up rbuf usage. We should use rbuf primitives not reach inside to membuf. Signed-off-by: Rusty Russell --- ccan/rbuf/test/run-all.c | 2 +- ccan/rbuf/test/run-partial-read.c | 2 +- ccan/rbuf/test/run-term-eof.c | 2 +- tools/depends.c | 11 ++++++----- tools/tools.c | 10 ++++------ tools/tools.h | 2 +- 6 files changed, 14 insertions(+), 15 deletions(-) diff --git a/ccan/rbuf/test/run-all.c b/ccan/rbuf/test/run-all.c index d7c1a3f1..c41ee20d 100644 --- a/ccan/rbuf/test/run-all.c +++ b/ccan/rbuf/test/run-all.c @@ -54,7 +54,7 @@ int main(void) } rbuf_consume(&in, sizeof(buf)); } - free(membuf_cleanup(&in.m)); + free(rbuf_cleanup(&in)); /* This exits depending on whether all tests passed */ return exit_status(); diff --git a/ccan/rbuf/test/run-partial-read.c b/ccan/rbuf/test/run-partial-read.c index 727fade8..7ecf79d3 100644 --- a/ccan/rbuf/test/run-partial-read.c +++ b/ccan/rbuf/test/run-partial-read.c @@ -60,7 +60,7 @@ int main(void) p = rbuf_read_str(&in, '\n'); ok1(errno == 0); ok1(p == NULL); - free(membuf_cleanup(&in.m)); + free(rbuf_cleanup(&in)); /* This exits depending on whether all tests passed */ return exit_status(); diff --git a/ccan/rbuf/test/run-term-eof.c b/ccan/rbuf/test/run-term-eof.c index 25b060f7..86d7c18d 100644 --- a/ccan/rbuf/test/run-term-eof.c +++ b/ccan/rbuf/test/run-term-eof.c @@ -59,6 +59,6 @@ int main(void) ok1(p); ok1(rbuf_start(&in) == p + strlen(p) + 1); free(rbuf_cleanup(&in)); - + return exit_status(); } diff --git a/tools/depends.c b/tools/depends.c index bf4015bf..e8e0f138 100644 --- a/tools/depends.c +++ b/tools/depends.c @@ -20,7 +20,7 @@ lines_from_cmd(const void *ctx, const char *format, ...) char *cmd; FILE *p; struct rbuf in; - char *str; + char *ret; va_start(ap, format); cmd = tal_vfmt(ctx, format, ap); @@ -31,13 +31,14 @@ lines_from_cmd(const void *ctx, const char *format, ...) err(1, "Executing '%s'", cmd); /* FIXME: Use rbuf_read_str(&in, '\n') rather than strsplit! */ - rbuf_init(&in, fileno(p), tal_arr(ctx, char, 0), 0, membuf_tal_realloc); - str = rbuf_read_str(&in, 0); - if (!str) + rbuf_init(&in, fileno(p), tal_arr(ctx, char, 0), 0, + tal_rbuf_enlarge); + ret = rbuf_read_str(&in, 0); + if (!ret && errno) err(1, "Reading from '%s'", cmd); pclose(p); - return tal_strsplit(ctx, str, "\n", STR_EMPTY_OK); + return tal_strsplit(ctx, ret, "\n", STR_EMPTY_OK); } /* Be careful about trying to compile over running programs (parallel make). diff --git a/tools/tools.c b/tools/tools.c index 2af158f8..4874fc62 100644 --- a/tools/tools.c +++ b/tools/tools.c @@ -40,7 +40,7 @@ char *run_with_timeout(const void *ctx, const char *cmd, struct rbuf in; int status, ms; struct timeabs start; - const char *ret; + char *ret; *ok = false; if (pipe(p) != 0) @@ -83,10 +83,8 @@ char *run_with_timeout(const void *ctx, const char *cmd, } close(p[1]); - rbuf_init(&in, p[0], tal_arr(ctx, char, 4096), 4096, membuf_tal_realloc); - ret = rbuf_read_str(&in, '\0'); - if (!ret) - tal_free(rbuf_cleanup(&in)); + rbuf_init(&in, p[0], tal_arr(ctx, char, 4096), 4096, tal_rbuf_enlarge); + ret = rbuf_read_str(&in, 0); /* This shouldn't fail... */ if (waitpid(pid, &status, 0) != pid) @@ -269,7 +267,7 @@ free: return ret; } -void *membuf_tal_realloc(struct membuf *mb, void *p, size_t size) +void *tal_rbuf_enlarge(struct membuf *mb, void *p, size_t size) { tal_resize((char **)&p, size); return p; diff --git a/tools/tools.h b/tools/tools.h index e4bc8998..4da49354 100644 --- a/tools/tools.h +++ b/tools/tools.h @@ -67,7 +67,7 @@ const char *temp_dir(void); void keep_temp_dir(void); bool move_file(const char *oldname, const char *newname); -void *membuf_tal_realloc(struct membuf *mb, void *p, size_t size); +void *tal_rbuf_enlarge(struct membuf *mb, void *p, size_t len); /* Freed on exit: a good parent for auto cleanup. */ tal_t *autofree(void); -- 2.39.2