[Pkg-gnupg-commit] [gnupg2] 57/112: gpg: Extend the PROGRESS line to give the used unit.

Daniel Kahn Gillmor dkg at fifthhorseman.net
Tue Aug 30 17:48:20 UTC 2016


This is an automated email from the git hooks/post-receive script.

dkg pushed a commit to branch master
in repository gnupg2.

commit 16feb1e0ea9b5d3966f22f4ae047335b9d1b60e1
Author: Werner Koch <wk at gnupg.org>
Date:   Tue Aug 9 16:22:24 2016 +0200

    gpg: Extend the PROGRESS line to give the used unit.
    
    * g10/progress.c (write_status_progress): Print the units parameter.
    
    Signed-off-by: Werner Koch <wk at gnupg.org>
---
 doc/DETAILS    |  5 ++++-
 g10/progress.c | 15 ++++++++++++---
 2 files changed, 16 insertions(+), 4 deletions(-)

diff --git a/doc/DETAILS b/doc/DETAILS
index 02f9bad..0139fdb 100644
--- a/doc/DETAILS
+++ b/doc/DETAILS
@@ -929,7 +929,7 @@ pkd:0:1024:B665B1435F4C2 .... FF26ABB:
     - 3 :: Ambigious specification
     - 4 :: Key is stored on a smartcard.
 
-*** PROGRESS <what> <char> <cur> <total>
+*** PROGRESS <what> <char> <cur> <total> [<units>]
     Used by the primegen and Public key functions to indicate
     progress.  <char> is the character displayed with no --status-fd
     enabled, with the linefeed replaced by an 'X'.  <cur> is the
@@ -953,6 +953,9 @@ pkd:0:1024:B665B1435F4C2 .... FF26ABB:
                           the data of a smartcard.
            - card_busy :: A smartcard is still working
 
+    <units> is sometines used to describe the units for <current> and
+    <total>.  For example "B", "KiB", or "MiB".
+
 *** BACKUP_KEY_CREATED <fingerprint> <fname>
     A backup of a key identified by <fingerprint> has been writte to
     the file <fname>; <fname> is percent-escaped.
diff --git a/g10/progress.c b/g10/progress.c
index a1027b8..efc3b3a 100644
--- a/g10/progress.c
+++ b/g10/progress.c
@@ -75,7 +75,9 @@ static void
 write_status_progress (const char *what,
                        unsigned long current, unsigned long total)
 {
-  char buffer[50];
+  char buffer[60];
+  char units[] = "BKMGTPEZY?";
+  int unitidx = 0;
 
   /* Although we use an unsigned long for the values, 32 bit
    * applications using GPGME will use an "int" and thus are limited
@@ -98,6 +100,7 @@ write_status_progress (const char *what,
         {
           total /= 1024;
           current /= 1024;
+          unitidx++;
         }
     }
   else
@@ -105,11 +108,17 @@ write_status_progress (const char *what,
       while (current > 1024*1024)
         {
           current /= 1024;
+          unitidx++;
         }
     }
 
-  snprintf (buffer, sizeof buffer, "%.20s ? %lu %lu",
-            what? what : "?", current, total);
+  if (unitidx > 9)
+    unitidx = 9;
+
+  snprintf (buffer, sizeof buffer, "%.20s ? %lu %lu %c%s",
+            what? what : "?", current, total,
+            units[unitidx],
+            unitidx? "iB" : "");
   write_status_text (STATUS_PROGRESS, buffer);
 }
 

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-gnupg/gnupg2.git



More information about the Pkg-gnupg-commit mailing list