bc: convert to "G trick" - this returns bc to zero bss increase
[oweals/busybox.git] / coreutils / tee.c
index 2e1e367f2ac1045aad025831b4e4dc31105d2710..f0ec791bb926c92ab73659becbe9d60c096ca964 100644 (file)
@@ -6,11 +6,41 @@
  *
  * Licensed under GPLv2 or later, see file LICENSE in this source tree.
  */
+//config:config TEE
+//config:      bool "tee (4.3 kb)"
+//config:      default y
+//config:      help
+//config:      tee is used to read from standard input and write
+//config:      to standard output and files.
+//config:
+//config:config FEATURE_TEE_USE_BLOCK_IO
+//config:      bool "Enable block I/O (larger/faster) instead of byte I/O"
+//config:      default y
+//config:      depends on TEE
+//config:      help
+//config:      Enable this option for a faster tee, at expense of size.
+
+//applet:IF_TEE(APPLET(tee, BB_DIR_USR_BIN, BB_SUID_DROP))
+
+//kbuild:lib-$(CONFIG_TEE) += tee.o
 
 /* 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 "common_bufsiz.h"
 
 int tee_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
 int tee_main(int argc, char **argv)
@@ -25,6 +55,7 @@ int tee_main(int argc, char **argv)
 #if ENABLE_FEATURE_TEE_USE_BLOCK_IO
        ssize_t c;
 # define buf bb_common_bufsiz1
+       setup_common_bufsiz();
 #else
        int c;
 #endif
@@ -42,7 +73,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;
 
@@ -67,7 +98,7 @@ int tee_main(int argc, char **argv)
        /* names[0] will be filled later */
 
 #if ENABLE_FEATURE_TEE_USE_BLOCK_IO
-       while ((c = safe_read(STDIN_FILENO, buf, sizeof(buf))) > 0) {
+       while ((c = safe_read(STDIN_FILENO, buf, COMMON_BUFSIZE)) > 0) {
                fp = files;
                do
                        fwrite(buf, 1, c, *fp);