Решил поделиться патчем: вдруг кому пригодится :) Патч будет работать только во FreeBSD! Впрочем доработать под линукс не долго.
Автомонтирование устройств в xfce выполняется с помощью libexo (с поддержкой hal).
Однако, указать опции монтирования невозможно, из-за чего возникают разные проблемы
(в основном с кодировками). Поэтому был создан патч который читает дополнительные
опции из hal-ключа volume.policy.mount_options
1. Создаем /usr/ports/x11/libexo/files/patch-aa
Код: Выделить всё
--- exo-mount/exo-mount-hal.c.orig Sat Jan 20 23:58:22 2007
+++ exo-mount/exo-mount-hal.c Tue Nov 6 16:50:55 2007
@@ -60,6 +60,7 @@
/* file system options */
gchar **fsoptions;
+ gchar **halmountoptions;
const gchar *fstype;
LibHalVolumeUsage fsusage;
};
@@ -265,6 +266,9 @@
/* determine the valid mount options from the UDI */
device->fsoptions = libhal_device_get_property_strlist (hal_context, udi, "volume.mount.valid_options", &derror);
+ /* determine predefined mount options from the UDI */
+ device->halmountoptions = libhal_device_get_property_strlist (hal_context, udi, "volume.policy.mount_options", &derror);
+
/* sanity checking */
if (G_UNLIKELY (device->file == NULL || device->name == NULL))
{
@@ -395,6 +399,7 @@
if (G_LIKELY (device != NULL))
{
libhal_free_string_array (device->fsoptions);
+ libhal_free_string_array (device->halmountoptions);
libhal_volume_free (device->volume);
libhal_drive_free (device->drive);
g_free (device->file);
@@ -678,6 +683,16 @@
}
}
}
+
+ if (G_LIKELY (device->halmountoptions != NULL))
+ {
+ /* process user-defined mount options */
+ for (m = 0; device->halmountoptions[m] != NULL; ++m)
+ {
+ options[n++] = device->halmountoptions[m];
+ }
+ }
+
/* try to determine a usable mount point */
if (G_LIKELY (device->volume != NULL))
3. Создаем /usr/local/etc/hal/fdi/policy/30user/codepage.fdi
Код: Выделить всё
<?xml version="1.0" encoding="UTF-8"?> <!-- -*- SGML -*- -->
<deviceinfo version="0.2">
<device>
<match key="volume.fstype" string="vfat">
<append key="volume.policy.mount_options" type="strlist">-L=ru_RU.KOI8-R</append>
<append key="volume.policy.mount_options" type="strlist">-D=CP1251</append>
</match>
</device>
</deviceinfo>