2009-04-03 5 views
2

Я хочу сделать, чтобы смонтировать через sshfs некоторые файлы на мейнфрейме через USS на моем локальном ПК. Я могу это сделать, но sshfs не делает прямое преобразование из EBCDIC в ascii/unicode. Есть ли какие-либо флаги, которые я могу установить.sshfs EBCDIC to ASCII

Альтернативно, знает ли кто-нибудь об библиотеке, которая делает преобразования EBCDIC в ASCII, поэтому я могу добавить в SSHFS?

Приветствие

Марк

+2

o_O EBCDIC по-прежнему используется? Над предохранителем/sshfs? Wow ... –

+0

@Brian, EBCDIC по-прежнему используется на System z (большой мэйнфрейм «honkin» IBM), и они все еще используются * lot *. И USS является UNIX для z, который использует EBCDIC (многие пакеты не будут компилироваться с тех пор, как они предполагают ASCII). ZLinux - это путь, RHEL/SLES работает на мэйнфрейме (10 000 экземпляров в наших тестах). – paxdiablo

ответ

4

Помните, что это прозрачное кодирование кодировки - очень опасная игра. Вы абсолютно уверены, что будете никогда ничего не читали, кроме файлов EBCDIC через SSHFS? Что делать, если есть двоичные данные?

Некоторые системы используются прозрачные преобразования в прошлом:

  • позорный режим «ASCII» из FTP, которые перепутались много бинарных загрузок
  • VFAT файловой системы в Linux, который отмечает: «Программы, которые делают вычисленным lseeks не понравится преобразование текста в ядре. У некоторых людей их данные были разрушены этим переводом.

Поэтому я настоятельно рекомендую осознавать последствия.

Почему бы не использовать редактор, который может работать с EBCDIC? Vim, например. может сделать это (если он скомпилирован).

1

Есть несколько библиотек для преобразования набора символов - Iconv (обычно часть вашей библиотеки C, смотрите, например, iconv_open) и GNU recode приходят на ум.

1

Я знаю, что прошло много времени с оригинального вопроса, но я оставлю информацию здесь:
Я написал патч для sshfs, который добавляет автоматическое преобразование между ASCII и EBCDIC. Его можно найти здесь: https://github.com/vadimshchukin/sshfs-ebcdic

Патч добавляет опцию командной строки «-t», которая определяет регулярное выражение для файлов, которые необходимо преобразовать. Например, sshfs -t".*" определяет преобразование для всех файлов.

Мне пришлось «жестко закодировать» таблицу преобразования, поскольку существуют различные «ароматы» EBCDIC, а iconv не переводил текст между ASCII как EBCDIC в моей системе по мере необходимости. Преимущество здесь в том, что кто-то может легко изменить эту таблицу переводов по мере необходимости.

Кстати, я написал тот же патч для win-sshfs.