From 2e1580ed2dd9dd81e1c63ff52d906fdeafbb1fe6 Mon Sep 17 00:00:00 2001 From: Jakob Kramer Date: Tue, 3 Jun 2014 00:15:52 +0200 Subject: [PATCH] remove unnecessary calls to realloc from tee --- tee.c | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/tee.c b/tee.c index d78602b..d88e49c 100644 --- a/tee.c +++ b/tee.c @@ -16,7 +16,7 @@ main(int argc, char *argv[]) { bool aflag = false; char buf[BUFSIZ]; - int i, nfps = 1; + int i, nfps; size_t n; FILE **fps = NULL; @@ -28,16 +28,15 @@ main(int argc, char *argv[]) usage(); } ARGEND; - if(!(fps = malloc(sizeof *fps))) - eprintf("malloc:"); - fps[nfps-1] = stdout; + nfps = argc + 1; + if(!(fps = calloc(nfps, sizeof *fps))) + eprintf("calloc:"); + + for(i = 0; argc > 0; argc--, argv++, i++) + if(!(fps[i] = fopen(*argv, aflag ? "a" : "w"))) + eprintf("fopen %s:", *argv); + fps[i] = stdout; - for(; argc > 0; argc--, argv++) { - if(!(fps = realloc(fps, ++nfps * sizeof *fps))) - eprintf("realloc:"); - if(!(fps[nfps-1] = fopen(argv[0], aflag ? "a" : "w"))) - eprintf("fopen %s:", argv[0]); - } while((n = fread(buf, 1, sizeof buf, stdin)) > 0) { for(i = 0; i < nfps; i++) { if(fwrite(buf, 1, n, fps[i]) != n)