[glib] Revert "utils: refactor g_format_size_full"
- From: Philip Withnall <pwithnall src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [glib] Revert "utils: refactor g_format_size_full"
- Date: Wed, 25 Oct 2017 23:02:02 +0000 (UTC)
commit f43babfea392aac1829a6ecca3813a79791dc963
Author: Philip Withnall <withnall endlessm com>
Date: Thu Oct 26 00:01:21 2017 +0100
Revert "utils: refactor g_format_size_full"
This reverts commit 51f9c95cf240b7de4c1db8e4dcb7e18d72ba0d3c.
It’s changed the set of translatable strings generated in the POT file.
Reverting until a fix can be found for that.
https://bugzilla.gnome.org/show_bug.cgi?id=789170
glib/gutils.c | 117 ++++++++++++++++++++-------------------------------------
1 files changed, 41 insertions(+), 76 deletions(-)
---
diff --git a/glib/gutils.c b/glib/gutils.c
index 39898ec..eb44f17 100644
--- a/glib/gutils.c
+++ b/glib/gutils.c
@@ -2197,98 +2197,63 @@ gchar *
g_format_size_full (guint64 size,
GFormatSizeFlags flags)
{
- struct Format
- {
- guint64 factor;
- const char string[8];
- };
-
- struct FormatPlural
- {
- const char singular[8];
- const char plural[9];
- };
+ GString *string;
- typedef enum
- {
- FORMAT_BYTES,
- FORMAT_BYTES_IEC
- } FormatIndex;
+ string = g_string_new (NULL);
- struct FormatPlural format_plurals[2] =
+ if (flags & G_FORMAT_SIZE_IEC_UNITS)
{
- { N_("%u byte"), N_("%u bytes") },
- { N_("%u byte"), N_("%u bytes") }
- };
+ if (size < KIBIBYTE_FACTOR)
+ {
+ g_string_printf (string,
+ g_dngettext(GETTEXT_PACKAGE, "%u byte", "%u bytes", (guint) size),
+ (guint) size);
+ flags &= ~G_FORMAT_SIZE_LONG_FORMAT;
+ }
- struct Format formats[2][6] = {
- {
- { KILOBYTE_FACTOR, N_("%.1f kB") },
- { MEGABYTE_FACTOR, N_("%.1f MB") },
- { GIGABYTE_FACTOR, N_("%.1f GB") },
- { TERABYTE_FACTOR, N_("%.1f TB") },
- { PETABYTE_FACTOR, N_("%.1f PB") },
- { EXABYTE_FACTOR, N_("%.1f EB") }
- },
- {
- { KIBIBYTE_FACTOR, N_("%.1f KiB") },
- { MEBIBYTE_FACTOR, N_("%.1f MiB") },
- { GIBIBYTE_FACTOR, N_("%.1f GiB") },
- { TEBIBYTE_FACTOR, N_("%.1f TiB") },
- { PEBIBYTE_FACTOR, N_("%.1f PiB") },
- { EXBIBYTE_FACTOR, N_("%.1f EiB") }
- }
- };
+ else if (size < MEBIBYTE_FACTOR)
+ g_string_printf (string, _("%.1f KiB"), (gdouble) size / (gdouble) KIBIBYTE_FACTOR);
+ else if (size < GIBIBYTE_FACTOR)
+ g_string_printf (string, _("%.1f MiB"), (gdouble) size / (gdouble) MEBIBYTE_FACTOR);
- GString *string;
- FormatIndex index;
+ else if (size < TEBIBYTE_FACTOR)
+ g_string_printf (string, _("%.1f GiB"), (gdouble) size / (gdouble) GIBIBYTE_FACTOR);
- string = g_string_new (NULL);
+ else if (size < PEBIBYTE_FACTOR)
+ g_string_printf (string, _("%.1f TiB"), (gdouble) size / (gdouble) TEBIBYTE_FACTOR);
+ else if (size < EXBIBYTE_FACTOR)
+ g_string_printf (string, _("%.1f PiB"), (gdouble) size / (gdouble) PEBIBYTE_FACTOR);
- if (flags & G_FORMAT_SIZE_IEC_UNITS)
- {
- index = FORMAT_BYTES_IEC;
+ else
+ g_string_printf (string, _("%.1f EiB"), (gdouble) size / (gdouble) EXBIBYTE_FACTOR);
}
else
{
- index = FORMAT_BYTES;
- }
+ if (size < KILOBYTE_FACTOR)
+ {
+ g_string_printf (string,
+ g_dngettext(GETTEXT_PACKAGE, "%u byte", "%u bytes", (guint) size),
+ (guint) size);
+ flags &= ~G_FORMAT_SIZE_LONG_FORMAT;
+ }
+ else if (size < MEGABYTE_FACTOR)
+ g_string_printf (string, _("%.1f kB"), (gdouble) size / (gdouble) KILOBYTE_FACTOR);
- if (size < formats[index][0].factor)
- {
- const struct FormatPlural * const f = &format_plurals[index];
- g_string_printf (string,
- g_dngettext (GETTEXT_PACKAGE,
- _(f->singular),
- _(f->plural),
- (guint) size),
- (guint) size);
- flags &= ~G_FORMAT_SIZE_LONG_FORMAT;
- }
- else
- {
- const gsize n = G_N_ELEMENTS (formats[index]);
- gsize i;
+ else if (size < GIGABYTE_FACTOR)
+ g_string_printf (string, _("%.1f MB"), (gdouble) size / (gdouble) MEGABYTE_FACTOR);
- /*
- * Point the last format (the highest unit) by default
- * and then then scan all formats, starting with the 2nd one
- * because the 1st is already managed by with the plural form
- */
- const struct Format * f = &formats[index][n - 1];
+ else if (size < TERABYTE_FACTOR)
+ g_string_printf (string, _("%.1f GB"), (gdouble) size / (gdouble) GIGABYTE_FACTOR);
+ else if (size < PETABYTE_FACTOR)
+ g_string_printf (string, _("%.1f TB"), (gdouble) size / (gdouble) TERABYTE_FACTOR);
- for (i = 1; i < n; i++)
- {
- if (size < formats[index][i].factor)
- {
- f = &formats[index][i - 1];
- break;
- }
- }
+ else if (size < EXABYTE_FACTOR)
+ g_string_printf (string, _("%.1f PB"), (gdouble) size / (gdouble) PETABYTE_FACTOR);
- g_string_printf (string, _(f->string), (gdouble) size / (gdouble) f->factor);
+ else
+ g_string_printf (string, _("%.1f EB"), (gdouble) size / (gdouble) EXABYTE_FACTOR);
}
if (flags & G_FORMAT_SIZE_LONG_FORMAT)
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]