From owner-svn-src-user@FreeBSD.ORG Thu Aug 12 22:20:20 2010 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 6D3B91065675; Thu, 12 Aug 2010 22:20:20 +0000 (UTC) (envelope-from des@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 5D2E88FC14; Thu, 12 Aug 2010 22:20:20 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o7CMKKha011434; Thu, 12 Aug 2010 22:20:20 GMT (envelope-from des@svn.freebsd.org) Received: (from des@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o7CMKKOs011432; Thu, 12 Aug 2010 22:20:20 GMT (envelope-from des@svn.freebsd.org) Message-Id: <201008122220.o7CMKKOs011432@svn.freebsd.org> From: Dag-Erling Smorgrav Date: Thu, 12 Aug 2010 22:20:20 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r211246 - user/des/phybs X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 12 Aug 2010 22:20:20 -0000 Author: des Date: Thu Aug 12 22:20:20 2010 New Revision: 211246 URL: http://svn.freebsd.org/changeset/base/211246 Log: Show a progress bar when stdout is a tty. Modified: user/des/phybs/phybs.c Modified: user/des/phybs/phybs.c ============================================================================== --- user/des/phybs/phybs.c Thu Aug 12 22:16:37 2010 (r211245) +++ user/des/phybs/phybs.c Thu Aug 12 22:20:20 2010 (r211246) @@ -47,6 +47,10 @@ static unsigned int total = (128 * 1024 static int opt_r = 0; static int opt_w = 1; +static int tty = 0; +static char progress[] = " [----------------]" + "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b"; + static void scan(int fd, size_t size, off_t offset, off_t step, unsigned int count) { @@ -55,7 +59,7 @@ scan(int fd, size_t size, off_t offset, ssize_t rlen, wlen; char *buf; - printf("%8u%8lu%8lu%8lu", count, (unsigned long)size, + printf("%8u%8lu%8lu%8lu ", count, (unsigned long)size, (unsigned long)offset, (unsigned long)step); fflush(stdout); if ((buf = malloc(size)) == NULL) @@ -82,12 +86,18 @@ scan(int fd, size_t size, off_t offset, errx(1, "short write: %ld < %lu", (long)wlen, (unsigned long)size); } + if (tty && i % 256 == 0) { + progress[2 + (i * 16) / count] = '|'; + fputs(progress, stdout); + progress[2 + (i * 16) / count] = '-'; + fflush(stdout); + } } if (gettimeofday(&t1, NULL) == -1) err(1, "gettimeofday()"); usec = t1.tv_sec * 1000000 + t1.tv_usec; usec -= t0.tv_sec * 1000000 + t0.tv_usec; - printf("%12lu%8lu%8lu\n", usec / 1000, + printf("%10lu%8lu%8lu\n", usec / 1000, count * 1000000 / usec, count * size * 1000000 / 1024 / usec); free(buf); @@ -147,6 +157,8 @@ main(int argc, char *argv[]) maxsize = tmp; } + tty = isatty(STDIN_FILENO); + if ((fd = open(device, opt_w ? O_RDWR : O_RDONLY)) == -1) err(1, "open(%s)", device); printf("%8s%8s%8s%8s%12s%8s%8s\n",