Yes, it's more user friendly. And back to my initiation question, xbmc does change a little comparing with the stable release . Here's the code from xbmc/linux/HALManager.cpp in stable 9.11 release(r26018).
Code:
if (connection)
{
msg = dbus_message_new_method_call("org.freedesktop.Hal", volume->UDI.c_str(), "org.freedesktop.Hal.Device.Volume", "Mount";
dbus_message_iter_init_append(msg, &args);
s = mountpath.c_str();
if (!dbus_message_iter_append_basic(&args, DBUS_TYPE_STRING, &s))
CLog:og(LOGERROR, "DBus: Failed to append arguments";
s = ""; //FileSystem
if (!dbus_message_iter_append_basic(&args, DBUS_TYPE_STRING, &s))
CLog:og(LOGERROR, "DBus: Failed to append arguments";
DBusMessageIter sub;
dbus_message_iter_open_container(&args, DBUS_TYPE_ARRAY, DBUS_TYPE_STRING_AS_STRING, ?);
CStdString temporaryString;
if (volume->FileSystem.Equals("vfat")
{
temporaryString.Format("uid=%u", getuid());
s = temporaryString.c_str();
dbus_message_iter_append_basic(?, DBUS_TYPE_STRING, &s);
}
s = "sync";
dbus_message_iter_append_basic(?, DBUS_TYPE_STRING, &s);
if (volume->FileSystem.Equals("vfat")
{
int mask = umask (0);
temporaryString.Format("umask=%#o", mask);
s = temporaryString.c_str();
dbus_message_iter_append_basic(?, DBUS_TYPE_STRING, &s);
}
dbus_message_iter_close_container(&args, ?);
if (msg == NULL)
CLog:og(LOGERROR, "DBus: Create Mount Message failed";
else
{
DBusMessage *reply;
reply = dbus_connection_send_with_reply_and_block(connection, msg, -1, &error); //The reply timout might be bad to have as -1
However, a recent checkout from svn (should be around r29xxx) has the following code:
Code:
if (volume->FileSystem.Equals("vfat"))
{
int mask = umask (0);
temporaryString.Format("umask=%#o", mask);
s = temporaryString.c_str();
dbus_message_iter_append_basic(&sub, DBUS_TYPE_STRING, &s);
temporaryString.Format("uid=%u", getuid());
s = temporaryString.c_str();
dbus_message_iter_append_basic(&sub, DBUS_TYPE_STRING, &s);
s = "shortname=mixed";
dbus_message_iter_append_basic(&sub, DBUS_TYPE_STRING, &s);
s = "utf8";
dbus_message_iter_append_basic(&sub, DBUS_TYPE_STRING, &s);
// 'sync' option will slow down transfer speed significantly for FAT filesystems. We prefer 'flush' instead.
s = "flush";
dbus_message_iter_append_basic(&sub, DBUS_TYPE_STRING, &s);
New code adds "utf8" as an mount option , so , seems I can expect the coming 10.x will fix the problem