X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fui%2Fgui%2Fhelper.c;h=6d90cfc4ea5e7a4b6e5b2a33b6ad3210744c802c;hb=90f346cc015bb89d28c93e35ba2e23d6671e14f2;hp=83319c453eebb41a0bb219b565bca7bc58bd3b19;hpb=0f70b0dd47b62dbefe87fb08ba8a8984aa5a50c4;p=pspp diff --git a/src/ui/gui/helper.c b/src/ui/gui/helper.c index 83319c453e..6d90cfc4ea 100644 --- a/src/ui/gui/helper.c +++ b/src/ui/gui/helper.c @@ -152,21 +152,32 @@ get_widget_assert (GtkBuilder *builder, const gchar *name) return GTK_WIDGET (get_object_assert (builder, name, GTK_TYPE_WIDGET)); } -/* Converts a string in the pspp locale to utf-8. - The return value must be freed when no longer required*/ +/* This function must be used whenever a filename generated by glib, + (eg, from gtk_file_chooser_get_filename) and passed to the C library, + (eg through a pspp syntax string). +*/ gchar * -pspp_locale_to_utf8 (const gchar *text, gssize len, GError **err) +convert_glib_filename_to_system_filename (const gchar *fname, GError **err) { - return recode_string (CONV_PSPP_TO_UTF8, text, len); -} + gchar *output_name; -gchar * -utf8_to_pspp_locale (const gchar *text, gssize len, GError **err) -{ - return recode_string (CONV_UTF8_TO_PSPP, text, len); +#ifdef G_OS_WIN32 + const gchar *target_encoding; + gchar *utf8_name = NULL; + + g_get_charset (&target_encoding); + + output_name = g_convert (fname, -1, target_encoding, + "UTF-8", NULL, NULL, err); +#else + output_name = strdup (fname); +#endif + + return output_name; } + #define _(msgid) gettext (msgid) #define N_(msgid) msgid