X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=coreutils%2Ftee.c;h=48cc0508fced0d498a6b09fadcd54fa14adf4836;hb=66426760beef7e87c4735f433d123daf911b5b4a;hp=8a4128591c4b8af0adabad0afe2b765b78112f58;hpb=4b8171cd7ac73f9dfaf3873ee5a964e6801be9e4;p=oweals%2Fbusybox.git diff --git a/coreutils/tee.c b/coreutils/tee.c index 8a4128591..48cc0508f 100644 --- a/coreutils/tee.c +++ b/coreutils/tee.c @@ -4,14 +4,25 @@ * * Copyright (C) 2003 Manuel Novoa III * - * Licensed under GPLv2 or later, see file LICENSE in this tarball for details. + * Licensed under GPLv2 or later, see file LICENSE in this source tree. */ /* BB_AUDIT SUSv3 compliant */ /* http://www.opengroup.org/onlinepubs/007904975/utilities/tee.html */ +//usage:#define tee_trivial_usage +//usage: "[-ai] [FILE]..." +//usage:#define tee_full_usage "\n\n" +//usage: "Copy stdin to each FILE, and also to stdout\n" +//usage: "\n -a Append to the given FILEs, don't overwrite" +//usage: "\n -i Ignore interrupt signals (SIGINT)" +//usage: +//usage:#define tee_example_usage +//usage: "$ echo \"Hello\" | tee /tmp/foo\n" +//usage: "$ cat /tmp/foo\n" +//usage: "Hello\n" + #include "libbb.h" -#include int tee_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE; int tee_main(int argc, char **argv) @@ -43,7 +54,7 @@ int tee_main(int argc, char **argv) * that doesn't consume all its input. Good idea... */ signal(SIGPIPE, SIG_IGN); - /* Allocate an array of FILE *'s, with one extra for a sentinal. */ + /* Allocate an array of FILE *'s, with one extra for a sentinel. */ fp = files = xzalloc(sizeof(FILE *) * (argc + 2)); np = names = argv - 1; @@ -55,12 +66,14 @@ int tee_main(int argc, char **argv) *fp = fopen_or_warn(*argv, mode); if (*fp == NULL) { retval = EXIT_FAILURE; + argv++; continue; } } *np = *argv++; GOT_NEW_FILE: - setbuf(*fp++, NULL); /* tee must not buffer output. */ + setbuf(*fp, NULL); /* tee must not buffer output. */ + fp++; np++; } while (*argv); /* names[0] will be filled later */ @@ -69,8 +82,8 @@ int tee_main(int argc, char **argv) while ((c = safe_read(STDIN_FILENO, buf, sizeof(buf))) > 0) { fp = files; do - fwrite(buf, 1, c, *fp++); - while (*fp); + fwrite(buf, 1, c, *fp); + while (*++fp); } if (c < 0) { /* Make sure read errors are signaled. */ retval = EXIT_FAILURE; @@ -80,8 +93,8 @@ int tee_main(int argc, char **argv) while ((c = getchar()) != EOF) { fp = files; do - putc(c, *fp++); - while (*fp); + putc(c, *fp); + while (*++fp); } #endif