diff options
Diffstat (limited to '')
-rw-r--r-- | doc/DETAILS | 5 | ||||
-rw-r--r-- | g10/progress.c | 15 |
2 files changed, 16 insertions, 4 deletions
diff --git a/doc/DETAILS b/doc/DETAILS index 02f9badff..0139fdbc2 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 a1027b8d3..efc3b3a91 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); } |