Introduction
Introduction Statistics Contact Development Disclaimer Help
tConvert config variable strings from UTF-8 to the locale's codeset when writin…
git clone git://src.adamsgaard.dk/vaccinewars
Log
Files
Refs
README
LICENSE
---
commit 5df905e8ef3931c4f1c3e66b6c1d5ce333617f2b
parent aae2d4fec33b36d3dd3cee90a40092ed5685bd32
Author: Ben Webb <[email protected]>
Date: Wed, 31 Jul 2002 16:31:01 +0000
Convert config variable strings from UTF-8 to the locale's codeset when
writing the configuration file, so that the GTK+2.0 client works consistently
in non-UTF8 locales.
Diffstat:
M src/configfile.c | 30 +++++++++++++++++++++++++++++-
1 file changed, 29 insertions(+), 1 deletion(-)
---
diff --git a/src/configfile.c b/src/configfile.c
t@@ -77,6 +77,30 @@ static void PrintEscaped(FILE *fp, gchar *str)
}
/*
+ * Converts the given string from UTF-8 to the locale's codeset. If the
+ * locale codeset already is UTF-8, returns a copy of the original
+ * string. The returned string is dynamically allocated, and should be
+ * later g_free'd by the caller.
+ */
+static gchar *ToLocaleCodeset(const gchar *origstr)
+{
+#ifdef HAVE_GLIB2
+ if (!g_get_charset(NULL)) {
+ gchar *convstr = g_locale_from_utf8(origstr, -1, NULL, NULL, NULL);
+ if (convstr) {
+ return convstr;
+ } else {
+ return g_strdup("[Could not convert string from UTF8]");
+ }
+ } else {
+ return g_strdup(origstr);
+ }
+#else
+ return g_strdup(origstr);
+#endif
+}
+
+/*
* Writes a single configuration file variable (identified by GlobalIndex
* and StructIndex) to the specified file, in a format suitable for reading
* back in (via. ParseNextConfig and friends).
t@@ -106,8 +130,12 @@ static void WriteConfigValue(FILE *fp, int GlobalIndex, i…
fprintf(fp, "%s = %s\n", GlobalName, prstr);
g_free(prstr);
} else if (Globals[GlobalIndex].StringVal) {
+ gchar *convstr;
+
fprintf(fp, "%s = \"", GlobalName);
- PrintEscaped(fp, *GetGlobalString(GlobalIndex, StructIndex));
+ convstr = ToLocaleCodeset(*GetGlobalString(GlobalIndex, StructIndex));
+ PrintEscaped(fp, convstr);
+ g_free(convstr);
fprintf(fp, "\"\n");
} else if (Globals[GlobalIndex].StringList) {
int i;
You are viewing proxied material from mx1.adamsgaard.dk. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.