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