From d9415b521c515095fba42397975441dfbfb487d8 Mon Sep 17 00:00:00 2001 From: hubertf Date: Tue, 9 Mar 2004 17:04:24 +0000 Subject: Allow custom text printed before (left of) the progress bar from progress(1): miyu# cat openoffice-linux-1.1.0.tgz | progress -z -p 'Bytes written: ' dd of=/dev/null bs=1m Bytes written: 193 MB 13.83 MB/s 0+195211 records in and: miyu# progress -f openoffice-linux-1.1.0.tgz -z -p 'Bytes written: ' dd of=/dev/null bs=1m Bytes written: 28% |****** | 57919 KB 14.12 MB/s 00:09 ETA OK'd by lukem. --- include/progressbar.h | 3 ++- progress.1 | 9 +++++++-- progress.c | 12 ++++++++---- progressbar.c | 9 +++++++-- 4 files changed, 24 insertions(+), 9 deletions(-) diff --git a/include/progressbar.h b/include/progressbar.h index b7ca63f..b8e416e 100644 --- a/include/progressbar.h +++ b/include/progressbar.h @@ -1,4 +1,4 @@ -/* $NetBSD: progressbar.h,v 1.3 2003/02/28 09:53:49 lukem Exp $ */ +/* $NetBSD: progressbar.h,v 1.4 2004/03/09 17:04:24 hubertf Exp $ */ /*- * Copyright (c) 1996-2003 The NetBSD Foundation, Inc. @@ -58,6 +58,7 @@ GLOBAL int ttywidth; /* width of tty */ GLOBAL off_t bytes; /* current # of bytes read */ GLOBAL off_t filesize; /* size of file being transferred */ GLOBAL off_t restart_point; /* offset to restart transfer */ +GLOBAL char *prefix; /* Text written left of progress bar */ #ifndef STANDALONE_PROGRESS diff --git a/progress.1 b/progress.1 index 239e557..59a87c0 100644 --- a/progress.1 +++ b/progress.1 @@ -1,4 +1,4 @@ -.\" $NetBSD: progress.1,v 1.5 2003/02/14 15:59:18 grant Exp $ +.\" $NetBSD: progress.1,v 1.6 2004/03/09 17:04:24 hubertf Exp $ .\" .\" Copyright (c) 2003 The NetBSD Foundation, Inc. .\" All rights reserved. @@ -30,7 +30,7 @@ .\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE .\" POSSIBILITY OF SUCH DAMAGE. .\" -.Dd January 21, 2003 +.Dd March 5, 2004 .Dt PROGRESS 1 .Os .Sh NAME @@ -41,6 +41,7 @@ .Op Fl z .Op Fl f Ar file .Op Fl l Ar length +.Op Fl p Ar prefix .Ar cmd .Op Ar args ... .Sh DESCRIPTION @@ -72,6 +73,10 @@ instead of standard input. Use the specified length for the time estimate, rather than attempting to .Xr fstat 2 the input. +.It Fl p Ar prefix +Print the given +.Dq prefix +text before (left of) the progress bar. .It Fl z Filter the input through .Xr gzip 1 . diff --git a/progress.c b/progress.c index d47e46e..eaa3314 100644 --- a/progress.c +++ b/progress.c @@ -1,4 +1,4 @@ -/* $NetBSD: progress.c,v 1.7 2003/02/12 00:58:34 ross Exp $ */ +/* $NetBSD: progress.c,v 1.8 2004/03/09 17:04:24 hubertf Exp $ */ /*- * Copyright (c) 2003 The NetBSD Foundation, Inc. @@ -34,7 +34,7 @@ #include #ifndef lint -__RCSID("$NetBSD: progress.c,v 1.7 2003/02/12 00:58:34 ross Exp $"); +__RCSID("$NetBSD: progress.c,v 1.8 2004/03/09 17:04:24 hubertf Exp $"); #endif /* not lint */ #include @@ -73,7 +73,7 @@ static void usage(void) { fprintf(stderr, - "usage: %s [-z] [-f file] [-l length] cmd [args...]\n", + "usage: %s [-z] [-f file] [-l length] [-p prefix] cmd [args...]\n", getprogname()); exit(1); } @@ -96,8 +96,9 @@ main(int argc, char *argv[]) /* defaults: Read from stdin, 0 filesize (no completion estimate) */ fd = STDIN_FILENO; filesize = 0; + prefix=NULL; - while ((ch = getopt(argc, argv, "f:l:z")) != -1) + while ((ch = getopt(argc, argv, "f:l:p:z")) != -1) switch (ch) { case 'f': infile = optarg; @@ -106,6 +107,9 @@ main(int argc, char *argv[]) lflag++; filesize = strtoull(optarg, NULL, 0); break; + case 'p': + prefix = optarg; + break; case 'z': zflag++; break; diff --git a/progressbar.c b/progressbar.c index f096ffc..9c09147 100644 --- a/progressbar.c +++ b/progressbar.c @@ -1,4 +1,4 @@ -/* $NetBSD: progressbar.c,v 1.4 2003/07/17 12:06:18 lukem Exp $ */ +/* $NetBSD: progressbar.c,v 1.5 2004/03/09 17:04:24 hubertf Exp $ */ /*- * Copyright (c) 1997-2003 The NetBSD Foundation, Inc. @@ -38,7 +38,7 @@ #include #ifndef lint -__RCSID("$NetBSD: progressbar.c,v 1.4 2003/07/17 12:06:18 lukem Exp $"); +__RCSID("$NetBSD: progressbar.c,v 1.5 2004/03/09 17:04:24 hubertf Exp $"); #endif /* not lint */ /* @@ -52,6 +52,7 @@ __RCSID("$NetBSD: progressbar.c,v 1.4 2003/07/17 12:06:18 lukem Exp $"); #include #include #include +#include #include #include #include @@ -200,6 +201,8 @@ progressmeter(int flag) return; len += snprintf(buf + len, BUFLEFT, "\r"); + if (prefix) + len += snprintf(buf + len, BUFLEFT, "%s", prefix); if (filesize > 0) { ratio = (int)((double)cursize * 100.0 / (double)filesize); ratio = MAX(ratio, 0); @@ -211,6 +214,8 @@ progressmeter(int flag) * the number of stars won't exceed the buffer size */ barlength = MIN(sizeof(buf) - 1, ttywidth) - BAROVERHEAD; + if (prefix) + barlength -= strlen(prefix); if (barlength > 0) { i = barlength * ratio / 100; len += snprintf(buf + len, BUFLEFT, -- cgit v1.2.3-56-ge451