Hello, g_format_size_for_display uses the wrong prefixes for units that are counted in power of two. The SI defines following prefixes: k = 1000 M = 1000 k G = 1000 M ... Please use the IEC standard for binary prefixes: Ki = 1024 Mi = 1024 Ki Gi = 1024 Mi ... More information can be found here: http://physics.nist.gov/cuu/Units/binary.html http://en.wikipedia.org/wiki/Binary_prefix I have appended a patch for it. Here are some reasons why you should apply this patch: * It is the correct usage of the standards. * It would avoid ambiguity and consumer confusion: http://en.wikipedia.org/wiki/Binary_prefix#Consumer_confusion * The users want it. E.g. look at brainstorm: http://brainstorm.ubuntu.com/idea/4114/ http://brainstorm.ubuntu.com/idea/17839/ * The Linux kernel uses it (man units). Cheers, Benjamin
diff -pruN glib2.0-2.21.1.orig/glib/gfileutils.c glib2.0-2.21.1/glib/gfileutils.c --- glib2.0-2.21.1.orig/glib/gfileutils.c 2009-06-03 01:04:20.000000000 +0200 +++ glib2.0-2.21.1/glib/gfileutils.c 2009-06-03 23:04:41.000000000 +0200 @@ -1714,11 +1714,11 @@ g_build_filename (const gchar *first_ele * @size: a size in bytes. * * Formats a size (for example the size of a file) into a human readable string. - * Sizes are rounded to the nearest size prefix (KB, MB, GB) and are displayed - * rounded to the nearest tenth. E.g. the file size 3292528 bytes will be - * converted into the string "3.1 MB". + * Sizes are rounded to the nearest size prefix (KiB, MiB, GiB) and are + * displayed rounded to the nearest tenth. E.g. the file size 3292528 bytes + * will be converted into the string "3.1 MiB". * - * The prefix units base is 1024 (i.e. 1 KB is 1024 bytes). + * The prefix units base is 1024 (i.e. 1 KiB is 1024 bytes). * * This string should be freed with g_free() when not needed any longer. * @@ -1739,17 +1739,17 @@ g_format_size_for_display (goffset size) if (size < (goffset) MEGABYTE_FACTOR) { displayed_size = (gdouble) size / KILOBYTE_FACTOR; - return g_strdup_printf (_("%.1f KB"), displayed_size); + return g_strdup_printf (_("%.1f KiB"), displayed_size); } else if (size < (goffset) GIGABYTE_FACTOR) { displayed_size = (gdouble) size / MEGABYTE_FACTOR; - return g_strdup_printf (_("%.1f MB"), displayed_size); + return g_strdup_printf (_("%.1f MiB"), displayed_size); } else { displayed_size = (gdouble) size / GIGABYTE_FACTOR; - return g_strdup_printf (_("%.1f GB"), displayed_size); + return g_strdup_printf (_("%.1f GiB"), displayed_size); } } }
Attachment:
signature.asc
Description: Dies ist ein digital signierter Nachrichtenteil