1/* vi: set sw=4 ts=4: */ 2/* 3 * Monitor a pipe with a simple progress display. 4 * 5 * Copyright (C) 2003 by Rob Landley <rob@landley.net>, Joey Hess 6 * 7 * Licensed under GPLv2 or later, see file LICENSE in this tarball for details. 8 */ 9#include "libbb.h" 10 11#define PIPE_PROGRESS_SIZE 4096 12 13/* Read a block of data from stdin, write it to stdout. 14 * Activity is indicated by a '.' to stderr 15 */ 16int pipe_progress_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE; 17int pipe_progress_main(int argc UNUSED_PARAM, char **argv UNUSED_PARAM) 18{ 19 char buf[PIPE_PROGRESS_SIZE]; 20 time_t t = time(NULL); 21 int len; 22 23 while ((len = safe_read(STDIN_FILENO, buf, PIPE_PROGRESS_SIZE)) > 0) { 24 time_t new_time = time(NULL); 25 if (new_time != t) { 26 t = new_time; 27 bb_putchar_stderr('.'); 28 } 29 full_write(STDOUT_FILENO, buf, len); 30 } 31 32 bb_putchar_stderr('\n'); 33 34 return 0; 35} 36