diff -Naur exo-0.3.2/exo-mount/exo-mount-hal.c exo-0.3.2.tpg/exo-mount/exo-mount-hal.c --- exo-0.3.2/exo-mount/exo-mount-hal.c 2007-01-20 13:58:22.000000000 +0000 +++ exo-0.3.2.tpg/exo-mount/exo-mount-hal.c 2007-09-04 19:27:12.000000000 +0000 @@ -34,6 +34,8 @@ #include <unistd.h> #endif +#include <langinfo.h> + #include <libhal-storage.h> #include <exo-hal/exo-hal.h> @@ -616,6 +618,30 @@ /** + * exo_mount_hal_iocharset: + * + * Determines the preferred iocharset for filesystems + * that support it. + * + * Return value: iocharset string or %NULL if none. + **/ +static const gchar* +exo_mount_hal_iocharset () +{ + const gchar* cs = g_getenv("EXO_MOUNT_IOCHARSET"); + if (cs != NULL) + return cs; + + const char* codeset = nl_langinfo (CODESET); + if (codeset && !strcmp (codeset, "UTF-8")) + return "utf8"; + + return NULL; +} + + + +/** * exo_mount_hal_device_mount: * @device : an #ExoMountHalDevice. * @error : return location for errors or %NULL. @@ -676,6 +702,12 @@ /* however this one is FreeBSD specific */ options[n++] = g_strdup ("longnames"); } + else if (strcmp (device->fsoptions[m], "iocharset=") == 0) + { + const gchar* iocharset = exo_mount_hal_iocharset(); + if (iocharset != NULL) + options[n++] = g_strdup_printf ("iocharset=%s", iocharset); + } } } diff -Naur exo-0.3.2/exo-mount/main.c exo-0.3.2.tpg/exo-mount/main.c --- exo-0.3.2/exo-mount/main.c 2007-01-20 13:58:22.000000000 +0000 +++ exo-0.3.2.tpg/exo-mount/main.c 2007-09-04 19:27:12.000000000 +0000 @@ -39,6 +39,8 @@ #include <string.h> #endif +#include <locale.h> + #include <glib/gstdio.h> #include <exo-hal/exo-hal.h> @@ -97,6 +99,8 @@ /* initialize the i18n support */ xfce_textdomain (GETTEXT_PACKAGE, PACKAGE_LOCALE_DIR, "UTF-8"); + setlocale(LC_CTYPE, ""); + /* initialize GTK+ */ if (!gtk_init_with_args (&argc, &argv, "Xfce mount", entries, GETTEXT_PACKAGE, &err)) {