Merging upstream version 2.5.
Signed-off-by: Daniel Baumann <daniel@debian.org>
This commit is contained in:
parent
3d70d3c76b
commit
ee6621a5b2
507 changed files with 19440 additions and 17258 deletions
57
util/types.c
57
util/types.c
|
@ -4,6 +4,7 @@
|
|||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <locale.h>
|
||||
#include <time.h>
|
||||
|
||||
#include <ccan/endian/endian.h>
|
||||
|
||||
|
@ -14,6 +15,7 @@ nvme_uint128_t le128_to_cpu(__u8 *data)
|
|||
{
|
||||
nvme_uint128_t u;
|
||||
nvme_uint128_t tmp;
|
||||
|
||||
memcpy(tmp.bytes, data, 16);
|
||||
u.words[0] = le32_to_cpu(tmp.words[3]);
|
||||
u.words[1] = le32_to_cpu(tmp.words[2]);
|
||||
|
@ -24,8 +26,8 @@ nvme_uint128_t le128_to_cpu(__u8 *data)
|
|||
|
||||
long double int128_to_double(__u8 *data)
|
||||
{
|
||||
int i;
|
||||
long double result = 0;
|
||||
int i;
|
||||
|
||||
for (i = 0; i < 16; i++) {
|
||||
result *= 256;
|
||||
|
@ -48,8 +50,8 @@ uint64_t int48_to_long(__u8 *data)
|
|||
|
||||
static long double uint128_t_to_double(nvme_uint128_t data)
|
||||
{
|
||||
int i;
|
||||
long double result = 0;
|
||||
int i;
|
||||
|
||||
for (i = 0; i < sizeof(data.words) / sizeof(*data.words); i++) {
|
||||
result *= 4294967296;
|
||||
|
@ -117,8 +119,8 @@ char *uint128_t_to_l10n_string(nvme_uint128_t val)
|
|||
|
||||
char *uint128_t_to_si_string(nvme_uint128_t val, __u32 bytes_per_unit)
|
||||
{
|
||||
static char str[40];
|
||||
long double bytes = uint128_t_to_double(val) * bytes_per_unit;
|
||||
static char str[40];
|
||||
const char *suffix = suffix_si_get_ld(&bytes);
|
||||
int n = snprintf(str, sizeof(str), "%.2Lf %sB", bytes, suffix);
|
||||
|
||||
|
@ -150,3 +152,52 @@ const char *util_fw_to_string(char *c)
|
|||
ret[i] = '\0';
|
||||
return ret;
|
||||
}
|
||||
|
||||
int convert_ts(time_t time, char *ts_buf)
|
||||
{
|
||||
struct tm time_info;
|
||||
time_t time_human, time_ms;
|
||||
char buf[80];
|
||||
|
||||
time_human = time / 1000;
|
||||
time_ms = time % 1000;
|
||||
|
||||
gmtime_r((const time_t *)&time_human, &time_info);
|
||||
|
||||
strftime(buf, sizeof(buf), "%Y-%m-%dD|%H:%M:%S", &time_info);
|
||||
sprintf(ts_buf, "%s:%03ld", buf, time_ms);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
void util_spinner(const char *disp_name, float percent)
|
||||
{
|
||||
static const char dash[51] = {[0 ... 49] = '=', '\0'};
|
||||
static const char space[51] = {[0 ... 49] = ' ', '\0'};
|
||||
static const char spin[] = {'-', '\\', '|', '/' };
|
||||
static int progress;
|
||||
static int i;
|
||||
const char *dn = disp_name ? disp_name : "";
|
||||
|
||||
if (percent < 0)
|
||||
percent = 0;
|
||||
else if (percent > 1)
|
||||
percent = 1;
|
||||
|
||||
progress = (int)(percent * 100.0);
|
||||
if (progress < 2)
|
||||
printf("\r%s [%c%.*s] %3d%%", dn,
|
||||
spin[i % 4], 49,
|
||||
space, progress);
|
||||
else if (progress < 100)
|
||||
printf("\r%s [%.*s%c%.*s] %3d%%", dn,
|
||||
progress / 2 - 1, dash,
|
||||
spin[i % 4], 50 - progress / 2,
|
||||
space, progress);
|
||||
else
|
||||
printf("\r%s [%.*s] %3d%%\n", dn,
|
||||
50, dash, 100);
|
||||
i++;
|
||||
|
||||
fflush(stdout);
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue