libxbps::xbps_humanize_number(): use common values and hide implementation details from API.
So now its prototype is the following: int xbps_humanize_number(char *buf, int64_t bytes) It is a wrapper around NetBSD's humanize_number(3) which uses 6 digits for max length, HN_AUTOSCALE and HN_NOSPACE|HN_DECIMAL. All users have been updated.
This commit is contained in:
parent
e2b55c90be
commit
992e8c6a14
@ -195,7 +195,7 @@ show_transaction_sizes(struct transaction *trans)
|
||||
prop_object_t obj;
|
||||
uint64_t dlsize = 0, instsize = 0;
|
||||
const char *tract;
|
||||
char size[64];
|
||||
char size[8];
|
||||
bool trans_inst, trans_up, trans_conf;
|
||||
|
||||
trans_inst = trans_up = trans_conf = false;
|
||||
@ -240,15 +240,13 @@ show_transaction_sizes(struct transaction *trans)
|
||||
prop_dictionary_get_uint64(trans->dict, "total-download-size", &dlsize);
|
||||
prop_dictionary_get_uint64(trans->dict, "total-installed-size",
|
||||
&instsize);
|
||||
if (xbps_humanize_number(size, 5, (int64_t)dlsize,
|
||||
"", HN_AUTOSCALE, HN_B|HN_DECIMAL|HN_NOSPACE) == -1) {
|
||||
if (xbps_humanize_number(size, (int64_t)dlsize) == -1) {
|
||||
fprintf(stderr, "xbps-bin: error: humanize_number returns "
|
||||
"%s\n", strerror(errno));
|
||||
return -1;
|
||||
}
|
||||
printf("Total download size: %sB\n", size);
|
||||
if (xbps_humanize_number(size, 5, (int64_t)instsize,
|
||||
"", HN_AUTOSCALE, HN_B|HN_DECIMAL|HN_NOSPACE) == -1) {
|
||||
if (xbps_humanize_number(size, (int64_t)instsize) == -1) {
|
||||
fprintf(stderr, "xbps-bin: error: humanize_number2 returns "
|
||||
"%s\n", strerror(errno));
|
||||
return -1;
|
||||
|
@ -39,17 +39,16 @@ void
|
||||
show_pkg_info_only_repo(prop_dictionary_t dict)
|
||||
{
|
||||
prop_object_t obj;
|
||||
char size[64];
|
||||
int rv = 0;
|
||||
char size[8];
|
||||
int rv;
|
||||
|
||||
obj = prop_dictionary_get(dict, "filename");
|
||||
if (prop_object_type(obj) == PROP_TYPE_STRING) {
|
||||
printf("Filename: %s", prop_string_cstring_nocopy(obj));
|
||||
obj = prop_dictionary_get(dict, "filename-size");
|
||||
if (prop_object_type(obj) == PROP_TYPE_NUMBER) {
|
||||
rv = xbps_humanize_number(size, 5,
|
||||
(int64_t)prop_number_unsigned_integer_value(obj),
|
||||
"", HN_AUTOSCALE, HN_B|HN_DECIMAL|HN_NOSPACE);
|
||||
rv = xbps_humanize_number(size,
|
||||
(int64_t)prop_number_unsigned_integer_value(obj));
|
||||
if (rv == -1)
|
||||
printf(" (size: %ju)\n",
|
||||
prop_number_unsigned_integer_value(obj));
|
||||
@ -69,8 +68,7 @@ show_pkg_info(prop_dictionary_t dict)
|
||||
{
|
||||
prop_object_t obj;
|
||||
const char *sep;
|
||||
char size[64];
|
||||
int rv = 0;
|
||||
char size[8];
|
||||
|
||||
assert(dict != NULL);
|
||||
assert(prop_dictionary_count(dict) != 0);
|
||||
@ -87,10 +85,8 @@ show_pkg_info(prop_dictionary_t dict)
|
||||
obj = prop_dictionary_get(dict, "installed_size");
|
||||
if (prop_object_type(obj) == PROP_TYPE_NUMBER) {
|
||||
printf("Installed size: ");
|
||||
rv = xbps_humanize_number(size, 5,
|
||||
(int64_t)prop_number_unsigned_integer_value(obj),
|
||||
"", HN_AUTOSCALE, HN_B|HN_DECIMAL|HN_NOSPACE);
|
||||
if (rv == -1)
|
||||
if (xbps_humanize_number(size,
|
||||
(int64_t)prop_number_unsigned_integer_value(obj)) == -1)
|
||||
printf("%ju\n",
|
||||
prop_number_unsigned_integer_value(obj));
|
||||
else
|
||||
|
@ -217,15 +217,7 @@ const char *xbps_fetch_error_string(void);
|
||||
|
||||
/*@}*/
|
||||
|
||||
/* From lib/humanize_number.c */
|
||||
#define HN_DECIMAL 0x01
|
||||
#define HN_NOSPACE 0x02
|
||||
#define HN_B 0x04
|
||||
#define HN_DIVISOR_1000 0x08
|
||||
#define HN_GETSCALE 0x10
|
||||
#define HN_AUTOSCALE 0x20
|
||||
|
||||
int xbps_humanize_number(char *, size_t, int64_t, const char *, int, int);
|
||||
int xbps_humanize_number(char *, int64_t);
|
||||
|
||||
/**
|
||||
* @ingroup dircreate
|
||||
|
@ -106,7 +106,7 @@ static const char *
|
||||
stat_bps(struct xferstat *xsp)
|
||||
{
|
||||
static char str[16];
|
||||
char size[32];
|
||||
char size[8];
|
||||
double delta, bps;
|
||||
|
||||
delta = (xsp->last.tv_sec + (xsp->last.tv_usec / 1.e6))
|
||||
@ -115,9 +115,8 @@ stat_bps(struct xferstat *xsp)
|
||||
snprintf(str, sizeof str, "-- stalled --");
|
||||
} else {
|
||||
bps = ((double)(xsp->rcvd - xsp->offset) / delta);
|
||||
(void)xbps_humanize_number(size, 6, (int64_t)bps, "",
|
||||
HN_AUTOSCALE, HN_NOSPACE|HN_DECIMAL);
|
||||
snprintf(str, sizeof str, "%sB/s", size);
|
||||
(void)xbps_humanize_number(size, (int64_t)bps);
|
||||
snprintf(str, sizeof str, "%s/s", size);
|
||||
}
|
||||
return str;
|
||||
}
|
||||
@ -129,18 +128,16 @@ static void
|
||||
stat_display(struct xferstat *xsp)
|
||||
{
|
||||
struct timeval now;
|
||||
char totsize[32], recvsize[32];
|
||||
char totsize[8], recvsize[8];
|
||||
|
||||
gettimeofday(&now, NULL);
|
||||
if (now.tv_sec <= xsp->last.tv_sec)
|
||||
return;
|
||||
xsp->last = now;
|
||||
|
||||
(void)xbps_humanize_number(totsize, 7, (int64_t)xsp->size, "",
|
||||
HN_AUTOSCALE, HN_NOSPACE|HN_DECIMAL);
|
||||
(void)xbps_humanize_number(recvsize, 7, (int64_t)xsp->rcvd, "",
|
||||
HN_AUTOSCALE, HN_NOSPACE|HN_DECIMAL);
|
||||
fprintf(stderr, "\r%s: %sB [%d%% of %sB]",
|
||||
(void)xbps_humanize_number(totsize, (int64_t)xsp->size);
|
||||
(void)xbps_humanize_number(recvsize, (int64_t)xsp->rcvd);
|
||||
fprintf(stderr, "\r%s: %s [%d%% of %s]",
|
||||
xsp->name, recvsize,
|
||||
(int)((double)(100.0 * (double)xsp->rcvd) / (double)xsp->size),
|
||||
totsize);
|
||||
@ -181,11 +178,10 @@ stat_update(struct xferstat *xsp, off_t rcvd)
|
||||
static void
|
||||
stat_end(struct xferstat *xsp)
|
||||
{
|
||||
char size[32];
|
||||
char size[8];
|
||||
|
||||
(void)xbps_humanize_number(size, 6, (int64_t)xsp->size, "",
|
||||
HN_AUTOSCALE, HN_NOSPACE|HN_DECIMAL);
|
||||
fprintf(stderr, "\rDownloaded %sB for %s [avg rate: %s]",
|
||||
(void)xbps_humanize_number(size, (int64_t)xsp->size);
|
||||
fprintf(stderr, "\rDownloaded %s for %s [avg rate: %s]",
|
||||
size, xsp->name, stat_bps(xsp));
|
||||
fprintf(stderr, "\033[K\n");
|
||||
}
|
||||
|
@ -39,9 +39,16 @@
|
||||
|
||||
#include <xbps_api.h>
|
||||
|
||||
int
|
||||
xbps_humanize_number(char *buf, size_t len, int64_t bytes,
|
||||
const char *suffix, int scale, int flags)
|
||||
#define HN_DECIMAL 0x01
|
||||
#define HN_NOSPACE 0x02
|
||||
#define HN_B 0x04
|
||||
#define HN_DIVISOR_1000 0x08
|
||||
#define HN_GETSCALE 0x10
|
||||
#define HN_AUTOSCALE 0x20
|
||||
|
||||
static int
|
||||
humanize_number(char *buf, size_t len, int64_t bytes,
|
||||
const char *suffix, int scale, int flags)
|
||||
{
|
||||
const char *prefixes, *sep;
|
||||
int b, i, r, maxscale, s1, s2, sign;
|
||||
@ -141,3 +148,14 @@ xbps_humanize_number(char *buf, size_t len, int64_t bytes,
|
||||
|
||||
return (r);
|
||||
}
|
||||
|
||||
/*
|
||||
* Small wrapper for NetBSD's humanize_number(3) with some
|
||||
* defaults set that we care about.
|
||||
*/
|
||||
int
|
||||
xbps_humanize_number(char *buf, int64_t bytes)
|
||||
{
|
||||
return humanize_number(buf, 6, bytes, "B",
|
||||
HN_AUTOSCALE, HN_DECIMAL|HN_NOSPACE);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user