[PATCH 6/9] configurator: Print test source without cat
Kevin Locke <[email protected]> Sun, 18 Sep 2016 18:52:03 -0600
| Newsgroups | org.ozlabs.lists.ccan |
|---|---|
| Message-ID | <03564cb12e21c8568c5efbaa9680b02212cd24a2.1474239353.git.kevin@kevinlocke.name> |
Windows does not provide cat. Instead, copy the test source to stdout using the file stream to which it was written. Signed-off-by: Kevin Locke <[email protected]> --- tools/configurator/configurator.c | 28 +++++++++++++++++++++++----- 1 file changed, 23 insertions(+), 5 deletions(-) diff --git a/tools/configurator/configurator.c b/tools/configurator/configurator.c index 0307635..0386930 100644 --- a/tools/configurator/configurator.c +++ b/tools/configurator/configurator.c @@ -422,6 +422,22 @@ static void errx(int status, const char *fmt, ...) va_end(ap); } +static size_t fcopy(FILE *fsrc, FILE *fdst) +{ + char buffer[BUFSIZ]; + size_t rsize, wsize; + size_t copied = 0; + + while ((rsize = fread(buffer, 1, BUFSIZ, fsrc)) > 0) { + wsize = fwrite(buffer, 1, rsize, fdst); + copied += wsize; + if (wsize != rsize) + break; + } + + return copied; +} + static char *grab_stream(FILE *file) { size_t max, ret, size = 0; @@ -545,7 +561,7 @@ static bool run_test(const char *cmd, struct test *test) } } - outf = fopen(INPUT_FILE, "w"); + outf = fopen(INPUT_FILE, verbose > 1 ? "w+" : "w"); if (!outf) err(1, "creating %s", INPUT_FILE); @@ -576,11 +592,13 @@ static bool run_test(const char *cmd, struct test *test) abort(); } - fclose(outf); - if (verbose > 1) - if (system("cat " INPUT_FILE) == -1) - ; + if (verbose > 1) { + fseek(outf, 0, SEEK_SET); + fcopy(outf, stdout); + } + + fclose(outf); newcmd = strdup(cmd); -- 2.9.3 _______________________________________________ ccan mailing list [email protected] https://lists.ozlabs.org/listinfo/ccan