]> git.cameronkatri.com Git - bsd-progress.git/commitdiff
Allow custom text printed before (left of) the progress bar from progress(1):
authorhubertf <hubertf@NetBSD.org>
Tue, 9 Mar 2004 17:04:24 +0000 (17:04 +0000)
committerhubertf <hubertf@NetBSD.org>
Tue, 9 Mar 2004 17:04:24 +0000 (17:04 +0000)
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
progress.1
progress.c
progressbar.c

index b7ca63f41a6d700de9cec9f7379cf9ed06fcfcab..b8e416e80c36ef7fbc2f51426110491a6253b72a 100644 (file)
@@ -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
index 239e557e557f0f7f38bb28164595ffa5da81b4e8..59a87c05caa854a2b24a477c80846489f41c2a4e 100644 (file)
@@ -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 .
index d47e46e65feaba1d6d5470c2974b934b5734b81e..eaa331477b627e1fd1faeb900e2886a61436d2b6 100644 (file)
@@ -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 <sys/cdefs.h>
 #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 <sys/types.h>
@@ -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;
index f096ffc139ca1cc40bf598a8e1756d5b64c506f5..9c09147cd6f293d07005f3a0eaad59ea337b88ea 100644 (file)
@@ -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 <sys/cdefs.h>
 #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 <signal.h>
 #include <stdio.h>
 #include <stdlib.h>
+#include <string.h>
 #include <time.h>
 #include <tzfile.h>
 #include <unistd.h>
@@ -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,