From b38e21eac482e85de1f0b09d0ec7187844c1a19d Mon Sep 17 00:00:00 2001 From: Jakub Filak Date: Mon, 15 Sep 2014 11:44:02 +0200 Subject: [PATCH] retrace-client: humanize sizes G_FORMAT_SIZE_IEC_UNITS use IEC (base 1024) units with "KiB"-style suffixes. IEC units should only be used for reporting things with a strong "power of 2" basis, like RAM sizes or RAID stripe sizes. Network and storage sizes should be reported in the normal SI units. Fixes #844 Signed-off-by: Jakub Filak --- src/plugins/abrt-retrace-client.c | 36 +++++++++++++++++++++++------------- 1 file changed, 23 insertions(+), 13 deletions(-) diff --git a/src/plugins/abrt-retrace-client.c b/src/plugins/abrt-retrace-client.c index 60bbbc2..0b67773 100644 --- a/src/plugins/abrt-retrace-client.c +++ b/src/plugins/abrt-retrace-client.c @@ -511,10 +511,16 @@ static int create(bool delete_temp_archive, if (unpacked_size > settings->max_unpacked_size) { alert_crash_too_large(); - error_msg_and_die(_("The size of your crash is %lld bytes, " + + /* Leaking size and max_size in hope the memory will be released in + * error_msg_and_die() */ + gchar *size = g_format_size_full(unpacked_size, G_FORMAT_SIZE_IEC_UNITS); + gchar *max_size = g_format_size_full(settings->max_unpacked_size, G_FORMAT_SIZE_IEC_UNITS); + + error_msg_and_die(_("The size of your crash is %s, " "but the retrace server only accepts " - "crashes smaller or equal to %lld bytes."), - unpacked_size, settings->max_unpacked_size); + "crashes smaller or equal to %s."), + size, max_size); } if (settings->supported_formats) @@ -610,14 +616,19 @@ static int create(bool delete_temp_archive, /* Get the file size. */ fstat(tempfd, &file_stat); + gchar *human_size = g_format_size_full((long long)file_stat.st_size, G_FORMAT_SIZE_IEC_UNITS); if ((long long)file_stat.st_size > settings->max_packed_size) { alert_crash_too_large(); - error_msg_and_die(_("The size of your archive is %lld bytes, " + + /* Leaking human_size and max_size in hope the memory will be released in + * error_msg_and_die() */ + gchar *max_size = g_format_size_full(settings->max_packed_size, G_FORMAT_SIZE_IEC_UNITS); + + error_msg_and_die(_("The size of your archive is %s, " "but the retrace server only accepts " - "archives smaller or equal %lld bytes."), - (long long)file_stat.st_size, - settings->max_packed_size); + "archives smaller or equal to %s."), + human_size, max_size); } free_settings(settings); @@ -626,8 +637,8 @@ static int create(bool delete_temp_archive, if (size_mb > 8) /* 8 MB - should be configurable */ { - char *question = xasprintf(_("You are going to upload %d megabytes. " - "Continue?"), size_mb); + char *question = xasprintf(_("You are going to upload %s. " + "Continue?"), human_size); int response = ask_yes_no(question); free(question); @@ -669,13 +680,12 @@ static int create(bool delete_temp_archive, if (delay) { - if (size_mb > 1) - printf(_("Uploading %d megabytes\n"), size_mb); - else - printf(_("Uploading %lld bytes\n"), (long long)file_stat.st_size); + printf(_("Uploading %s\n"), human_size); fflush(stdout); } + g_free(human_size); + strbuf_free(http_request); int result = 0; int i; -- 1.9.3