Автомонтирование CD в KDE (CD c русскими метками монтируются через HAL криво)

Модератор: Модераторы разделов

reinhard
Сообщения: 86
ОС: Fedora Core, FreeBSD

Автомонтирование CD в KDE

Сообщение reinhard »

Всем привет!

Есть FC6 KDE и HAL оттуда же штатные.
Есть потребность монтировать CD записанные на винде Nero и т.п. пользователям.
Если метка дисков английская - все более-менее нормально.
Если метка русская (А Nero любит ставить метки "Мой диск"), HAL пытается смонтировать в каталог "/media/Мой диск" и получается ошибка (см. скриншот)
При этом диск успешно монтируется в "/media/Мой диск", но через значек диска получить к нему доступ невозможно,
невозможно и отмонтировать и извлечь его средствами KDE, что справедливо раздражает пользователей.
Под FreeBSD из портов я собирал HAL с патчем который делал точку монтирования совпадающей с именем устройства, а не с меткой диска, что,
в некоторой степени снимало проблему. Как бы то же сделать под FC6?
В FreeBSD патч к другой версии HAL - не подходит.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Спасибо сказали:
reinhard
Сообщения: 86
ОС: Fedora Core, FreeBSD

Re: Автомонтирование CD в KDE

Сообщение reinhard »

Вот патч для hal-0.5.8 (из FC6) который обходит проблему

Код: Выделить всё

--- a/tools/hal-storage-mount.c 2007-10-09 16:01:11.000000000 +0700
+++ b/tools/hal-storage-mount.c 2007-10-09 16:03:43.000000000 +0700
@@ -586,24 +586,12 @@
                explicit_mount_point_given = FALSE;
                if (strlen (mount_point) == 0) {
                        char *p;
-                       const char *label;
-
-                       if (volume != NULL)
-                               label = libhal_volume_get_label (volume);
-                       else
-                               label = NULL;
-
-                       if (label != NULL) {
-                               /* best - use label */
-                               g_strlcpy (mount_point, label, sizeof (mount_point));
-
-                               /* TODO: use drive type */
-
-                       } else {
-                               /* fallback - use "disk" */
-                               g_snprintf (mount_point, sizeof (mount_point), "disk");
-                       }
+                       const char *basename;

+                       basename = g_path_get_basename (device);
+                       g_strlcpy (mount_point, basename, sizeof (mount_point));
+                       g_free (basename);
+
                        /* sanitize computed mount point name, e.g. replace invalid chars with '-' */
                        p = mount_point;
                        while (TRUE) {
Спасибо сказали: