summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorTingPing <tingping@tingping.se>2014-05-03 23:57:45 -0400
committerTingPing <tingping@tingping.se>2014-05-03 23:57:45 -0400
commit9599c29c465cf8b0ac64969152e645ed09fef1d0 (patch)
tree29d0f52acb17312bb64dfc3a2f75e4ef2d2ce4d6
parentfe71af15a715ca914fe6cd8ea174c2c948476a68 (diff)
Use filesize format based on OS
Adds gui_filesize_iec option on Unix

Closes #966
-rw-r--r--src/common/cfgfiles.c1
-rw-r--r--src/common/hexchat.h1
-rw-r--r--src/fe-gtk/dccgui.c15
3 files changed, 14 insertions, 3 deletions
diff --git a/src/common/cfgfiles.c b/src/common/cfgfiles.c
index 3e14d748..1207ff69 100644
--- a/src/common/cfgfiles.c
+++ b/src/common/cfgfiles.c
@@ -416,6 +416,7 @@ const struct prefs vars[] =
 	{"gui_dialog_left", P_OFFINT (hex_gui_dialog_left), TYPE_INT},
 	{"gui_dialog_top", P_OFFINT (hex_gui_dialog_top), TYPE_INT},
 	{"gui_dialog_width", P_OFFINT (hex_gui_dialog_width), TYPE_INT},
+	{"gui_filesize_iec", P_OFFINT (hex_gui_filesize_iec), TYPE_BOOL},
 	{"gui_focus_omitalerts", P_OFFINT (hex_gui_focus_omitalerts), TYPE_BOOL},
 	{"gui_hide_menu", P_OFFINT (hex_gui_hide_menu), TYPE_BOOL},
 	{"gui_input_attr", P_OFFINT (hex_gui_input_attr), TYPE_BOOL},
diff --git a/src/common/hexchat.h b/src/common/hexchat.h
index 5d96fd4b..1c48fe71 100644
--- a/src/common/hexchat.h
+++ b/src/common/hexchat.h
@@ -156,6 +156,7 @@ struct hexchatprefs
 	unsigned int hex_gui_autoopen_recv;
 	unsigned int hex_gui_autoopen_send;
 	unsigned int hex_gui_compact;
+	unsigned int hex_gui_filesize_iec;
 	unsigned int hex_gui_focus_omitalerts;
 	unsigned int hex_gui_hide_menu;
 	unsigned int hex_gui_input_attr;
diff --git a/src/fe-gtk/dccgui.c b/src/fe-gtk/dccgui.c
index 6d6a033d..10ec8388 100644
--- a/src/fe-gtk/dccgui.c
+++ b/src/fe-gtk/dccgui.c
@@ -107,11 +107,20 @@ static short view_mode;	/* 1=download 2=upload 3=both */
 static void
 proper_unit (DCC_SIZE size, char *buf, int buf_len)
 {
-	gchar *formated_str = g_format_size ((guint64)size);
+	gchar *formatted_str;
+	GFormatSizeFlags format_flags = G_FORMAT_SIZE_DEFAULT;
 
-	g_strlcpy (buf, formated_str, buf_len);
+#ifndef __APPLE__ /* OS X uses SI */
+#ifndef WIN32 /* Windows uses IEC size (with SI format) */
+	if (prefs.hex_gui_filesize_iec) /* Linux can't decide... */
+#endif
+		format_flags = G_FORMAT_SIZE_IEC_UNITS;
+#endif
+
+	formatted_str = g_format_size_full ((guint64)size, format_flags);
+	g_strlcpy (buf, formatted_str, buf_len);
 
-	g_free (formated_str);
+	g_free (formatted_str);
 }
 
 static void