Инструменты пользователя

Инструменты сайта


// exo: решение проблемы с кодировками при монтировании от разработчиков

Версия exo 0.3.104, репортуют о решении проблемы с установкой кодировки при монтировании сменных устройств.

Version exo 0.3.104, developers reporting us about resolving problem with code-page setup on mounting removable devices.

Russian

Анализ кода дал следующий результат:

    else if (strcmp (device->fsoptions[m], "umask=") == 0
                   && strcmp (fs, "ntfs-3g") == 0)
            {
              /* we need to pass umask=0077 to ntfs-g3 or else it gets 0777 perms */
              options[n++] = g_strdup ("umask=0077");
            }
          else if (strcmp (device->fsoptions[m], "iocharset=") == 0)
            {
              /* get the charset from a variable set by the user or glib */
              charset = g_getenv ("EXO_MOUNT_IOCHARSET");
              if (G_LIKELY (charset == NULL))
                if (g_get_charset (&charset))
                  charset = "utf8";
 
              if (G_LIKELY (charset != NULL && *charset != '\0'))
                options[n++] = g_strdup_printf ("iocharset=%s", charset);
            }

Они так и не ушли от тупого жесткого указания опций в коде. Да, кодировку теперь можно указывать через переменную окружения, но как задать те опции монтирования, что не предусмотрели разработчики??? По сути это Alt'овци пропихнули свой патч. Теперь баг закроют, потому как проблема не будет наблюдаться, но сделано-то криво. Я расстроен.

PS как чуял неладное: перешел на openbox + pcmanfm + lxpanel (вариация на тему lxde).
PPS Если кто считает, что мой патч нужен - отзовитесь.
PPPS Если кто может перевести этот пост на английский язык - помогите пожалуйста.

English

Code analysis gave me following result:

    else if (strcmp (device->fsoptions[m], "umask=") == 0
                   && strcmp (fs, "ntfs-3g") == 0)
            {
              /* we need to pass umask=0077 to ntfs-g3 or else it gets 0777 perms */
              options[n++] = g_strdup ("umask=0077");
            }
          else if (strcmp (device->fsoptions[m], "iocharset=") == 0)
            {
              /* get the charset from a variable set by the user or glib */
              charset = g_getenv ("EXO_MOUNT_IOCHARSET");
              if (G_LIKELY (charset == NULL))
                if (g_get_charset (&charset))
                  charset = "utf8";
 
              if (G_LIKELY (charset != NULL && *charset != '\0'))
                options[n++] = g_strdup_printf ("iocharset=%s", charset);
            }

Mount options are still hardcoded. Yeah, now we can choose code-page setting up environment variable. But how we can setup another mounting options? Now bug will be marked as fixed, but bugfix is horrible. I'm disappointed.

Комментарии

Старые комментарии

Уже отписался в AUR, но продублиру здесь: Ваше решение определенно более верное, так что я думаю стоит продолжать его поддерживать. Со своей стороны могу помочь с поддержкой пакета в AUR

1 |
ava1ar
| 2009-10-11 21:42 | reply

Ок, с поддержкой проблем нет, нужно только время выбирать на адоптацию, пока критически не хватает. Я думаю, что заведу проект на гугл-коде под эти цели, потому как в main-line его уже не возьмут.

2 |
Alexander Drozdov
| 2009-10-12 10:53 | reply

next result > following result, fix

3 |
sandr1x
| 2009-10-12 18:15 | reply

fixed :-)

4 |
Alexander Drozdov
| 2009-10-12 23:10 | reply

Уххххааааа! 0.3.105 сделали и чтение параметров монтирования из файла! нужно выпить :)

5 |
Alexander Drozdov
| 2009-10-23 13:15 | reply