17aa651a6a4496d848f86de9b1e6b3a003256a01fRob Landley/* count.c - Progress indicator from stdin to stdout 2fece5cb6d796119eccb1ae0074e5b3aaccbb74eeRob Landley * 32896480c4918f2accccb8301bec457a7bff7377eRob Landley * Copyright 2002 Rob Landley <rob@landley.net> 42896480c4918f2accccb8301bec457a7bff7377eRob Landley 555928b1e0a08d84a5cbc50020f0a8c1024f5b6ceRob LandleyUSE_COUNT(NEWTOY(count, NULL, TOYFLAG_USR|TOYFLAG_BIN)) 655928b1e0a08d84a5cbc50020f0a8c1024f5b6ceRob Landley 72896480c4918f2accccb8301bec457a7bff7377eRob Landleyconfig COUNT 87aa651a6a4496d848f86de9b1e6b3a003256a01fRob Landley bool "count" 97aa651a6a4496d848f86de9b1e6b3a003256a01fRob Landley default y 107aa651a6a4496d848f86de9b1e6b3a003256a01fRob Landley help 117aa651a6a4496d848f86de9b1e6b3a003256a01fRob Landley usage: count 122896480c4918f2accccb8301bec457a7bff7377eRob Landley 137aa651a6a4496d848f86de9b1e6b3a003256a01fRob Landley Copy stdin to stdout, displaying simple progress indicator to stderr. 142896480c4918f2accccb8301bec457a7bff7377eRob Landley*/ 15c555a0ca46e75097596274bf5e634127015aa144Rob Landley 16c555a0ca46e75097596274bf5e634127015aa144Rob Landley#include "toys.h" 17c555a0ca46e75097596274bf5e634127015aa144Rob Landley 18efda21ca931766eed6cfc49d1b2122c53827d9fcRob Landleyvoid count_main(void) 19c555a0ca46e75097596274bf5e634127015aa144Rob Landley{ 207aa651a6a4496d848f86de9b1e6b3a003256a01fRob Landley uint64_t size = 0; 217aa651a6a4496d848f86de9b1e6b3a003256a01fRob Landley int len; 227aa651a6a4496d848f86de9b1e6b3a003256a01fRob Landley char buf[32]; 23c555a0ca46e75097596274bf5e634127015aa144Rob Landley 247aa651a6a4496d848f86de9b1e6b3a003256a01fRob Landley for (;;) { 257aa651a6a4496d848f86de9b1e6b3a003256a01fRob Landley len = xread(0, toybuf, sizeof(toybuf)); 267aa651a6a4496d848f86de9b1e6b3a003256a01fRob Landley if (!len) break; 277aa651a6a4496d848f86de9b1e6b3a003256a01fRob Landley size += len; 287aa651a6a4496d848f86de9b1e6b3a003256a01fRob Landley xwrite(1, toybuf, len); 297aa651a6a4496d848f86de9b1e6b3a003256a01fRob Landley xwrite(2, buf, sprintf(buf, "%"PRIu64" bytes\r", size)); 307aa651a6a4496d848f86de9b1e6b3a003256a01fRob Landley } 317aa651a6a4496d848f86de9b1e6b3a003256a01fRob Landley xwrite(2, "\n", 1); 32c555a0ca46e75097596274bf5e634127015aa144Rob Landley} 33