X-Git-Url: https://git.ozlabs.org/?p=ccan;a=blobdiff_plain;f=tools%2Fconfigurator%2Fconfigurator.c;h=73fdc952b7730be219d85cdcf530957ccf9f60a3;hp=a7cbfa53e724ad7119ba89025f0c58c3b22b5aca;hb=fcdcba92fe85ced9594cabb9c1f960dc98e33077;hpb=888660c3c11f15331e8a06a0e492d48650b2680f diff --git a/tools/configurator/configurator.c b/tools/configurator/configurator.c index a7cbfa53..73fdc952 100644 --- a/tools/configurator/configurator.c +++ b/tools/configurator/configurator.c @@ -407,6 +407,22 @@ static void c12r_errx(int eval, const char *fmt, ...) exit(eval); } +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; @@ -530,7 +546,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) c12r_err(1, "creating %s", INPUT_FILE); @@ -561,11 +577,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);