DFS (ФАЙЛОВАЯ СИСТЕМА DOS) Пpогpамма-обpаботчик файлов DOS Руководство пользователя Для QNX версий 1.2/2.0 или более поздних Фирма-разработчик: QUANTUM, Канада - 1993г.- C О Д Е Р Ж А H И Е 1. ВВЕДЕНИЕ 2 2. ТЕКСТОВЫЕ ФАЙЛЫ DOS 2 3. ИСПОЛЬЗОВАНИЕ ПРОГРАММЫ DFS 3 3.1. Описание 3 3.2. Установка 3 3.3. Сохранение (архивирование) разделов DOS с помощью DFS 4 3.4. Преобразование символов DOS-QNX и QNX-DOS 4 4. СИНТАКСИС КОМАНДЫ 4 5. ПРИМЕРЫ КОНФИГУРАЦИЙ DFS 7 5.1. Пример 1 7 5.2. Пример 2 8 1. ВВЕДЕНИЕ DFS (DOS FILE SYSTEM - ФАЙЛОВАЯ СИСТЕМА DOS) - это программа, позволяющая обрабатывать файлы на дисках DOS, как если бы они были файлами QNX. Можно создавать файлы на дисках DOS, читать, записывать и удалять их с помощью обычных программ QNX. Можно также создавать, читать и удалять каталоги на дисках DOS с помощью стандартных утилит QNX, таких как MKDIR, RM, FILES и т.д. Все стандартные утилиты QNX будут работать с файлами DOS, включая такие программы, как ED. Ваши собственные программы также смогут обрабатывать файлы DOS также, как и файлы QNX, используя стандартные для QNX Си-функции ввода/вывода, такие как FOPEN, FGET, FPUT, FSEEK и т.д. При чтении каталогов DOS они будут представлены в формате QNX. Единственное ограничение, накладываемое на Ваши программы, - это то, что Вы не сможете вести поиск в каталогах или в текстовых файлах DOS, когда доступ к ним производится как к текстовым файлам. 2. ТЕКСТОВЫЕ ФАЙЛЫ DOS Текстовые файлы определяются как строчно-ориентированные файлы, содержащие текстовые строки ASCII, разделяемые специальными разделителями строк. Структура текстовых файлов DOS отличается от используемой QNX. Следовательно, очень важно иметь возможность указывать DFS, как преобразовывать текстовые файлы DOS так, чтобы происходило правильное преобразование форматов DOS и QNX. Все файлы, которые не являются текстовыми, называются двоичными. В DOS каждая строка текстового файла заканчивается последовательностью "перевод строки"/"возврат каретки" (LF/CR), тогда как в QNX каждая строка завершается символом "разделитель строк" (RS). Кроме того, некоторые текстовые файлы, созданные ранними версиями DOS, могут содержать символ SUB как последний символ файла. DFS делает автоматическое преобразование форматов текстовых файлов, если она знает, как определить текстовый файл DOS. Имеются следующие механизмы для обнаружения текстовых файлов DOS: 1. Можно указать, чтобы все файлы рассматривались как текстовые файлы. 2. Можно указать, чтобы все файлы рассматривались как двоичные файлы. 3. Можно указать,чтобы файлы, имеющие определенные расширения имен файлов (например ".txt"), рассматривались как текстовые,а файлы с другими расширениями - как двоичные. 4. Если указывается список расширений для текстовых и/или двоичных файлов, то можно указать, чтобы файлы с непонятными расширениями рассматривались как текстовые или как двоичные файлы. 5. Можно сделать,чтобы какой-то определенный файл в принудительном порядке рассматривался как текстовый, указав суффикс "~t". В - 3 - этом случае все другие правила распознавания типа отвергаются. Например: ed a:/file.abc~t - файл будет рассматриваться как текстовый. 6. Можно указать,чтобы какой-то определенный файл в принудительном порядке рассматривался как двоичный, указав суффикс "~b". В этом случае все другие правила распознавания типа отвергаются. Например: copy a:/file.xyz~b 3:/dos - файл будет рассматриваться как двоичный 3. ИСПОЛЬЗОВАНИЕ ПРОГРАММЫ DFS 3.1. Описание Программа DFS включает в себя два компонента: интерпретатор команды, позволяющий определять и изменять окружение DFS, и администратор DFS, обеспечивающий выполнение программой ее функций во время работы. Интерпретатор команды выполняет следующие функции: - определяет начальное окружение (среду) программы при запуске; - модифицирует окружение DFS в любой момент во время выполнения; - индицирует текущее окружение DFS; - останавливает работу DFS. Окружение DFS состоит из следующих элементов, которые управляют работой DFS: Дисководы DOS Можно определить до 6 дисководов DOS (a - f) и обозначить их как дисководы QNX, монтированные стандартной командой QNX MOUNT. Можно также ассоциировать дисководы DOS с псевдодисками, которые используются с программой QDOS. Как часть указания ассоциации между дисководами DOS и QNX, можно указать права доступа DOS (Чтение, Запись, Модификация) для пользователей, не являющихся суперпользователями. Суперпользователи (из группы 255) всегда имеют полный доступ к дискам DOS. В момент печати настоящего руководства DFS не поддерживает разделы больше 32 Мегабайт по размеру. DFS поддерживает стандартные для DOS разделы жестких дисков и 360K, 1,2M, 720K и 1,44M форматированные флоппи- дискеты. Правила распознавания типа файла Правила распознавания типа файла обсуждались в предыдущем разделе. Используемые правила можно указать при запуске DFS, их можно изменить в любой момент работы, используя интерпретатор команды DFS. Списки расширений имен файлов Можно указать списки расширений имен файлов, в соответствии с которыми файлы будут рассматриваться как текстовые или двоичные. Эти списки можно указывать в командной строке, либо их можно заключать в специальные файлы. Можно указывать любое количество списков расширений как для текстовых, так и для двоичных файлов. Характеристики нестандартных дисководов Некоторые дисководы не соответствуют принятым в DOS соглашениям о файловой структуре. В этом случае программе DFS можно указать ряд характеристик диска, в результате чего DFS сможет с ними работать. 3.2. Установка На дистрибутивном диске содержатся следующие файлы: - 4 - /cmds/dfs - интерпретатор команды; /cmds/dosfsys - администратор DFS; /config/dfs - пример таблицы расширений имен файлов. Скопируйте эти файлы на Ваш жесткий диск следующими командами: cp s:/cmds/dfs t:/cmds cp s:/cmds/dosfsys t:/cmds cp s:/config/dfs t:/config "S" - это номер дисковода, куда вставлена дистрибутивная дискета, а "t" - номер Вашего жесткого дисковода, где находятся каталоги "/cmds" и "/config". 3.3. Сохранение (архивирование) разделов DOS с помощью DFS DFS можно использовать вместе с принятыми в QNX командами архивирования FBACKUP, TBACKUP и BACKUP для архивирования информации из разделов DOS. Перед выполнением такой процедуры надо изучить документацию по каждой из этих программ. Важно помнить, что DFS надо запускать с параметром "+binary", чтобы не произошло преобразования данных, иначе данные в некоторых файлах будут изменены (вследствие преобразования пары CR/LF в RS). Параметр "+binary" также необходимо указывать при восстановлении из архива раздела DOS. 3.4. Преобразование символов DOS-QNX и QNX-DOS Указание параметра "+rundos" переводит DFS в двоичный режим и вызывает преобразование символов. Это преобразование необходимо, т.к. не все символы, допустимые в именах файлов DOS, поддерживаются в QNX. Далее приводится таблица преобразования символов, производимого в этом режиме: Символ DOS Символ QNX Символ DOS Символ QNX ! A @ J # B ^ K $ C ` L % D { M & E } N \ F ~ O ( G - I ) H 4. СИНТАКСИС КОМАНДЫ Синтаксис: dfs start [узел] спецификация_дисков... [параметры] [режим] [спецификация_расширений] dfs add [узел] [спецификация_дисков...] [спецификация_расширений] dfs rem [узел] [дисковод_DOS...] [спецификация_расширений] dfs mode [узел] режим dfs query [узел] [+full_display] dfs stop [узел] Здесь: Спецификация_дисков дисковод_DOS=дисковод_QNX[(rwm)][,технические данные] дисковод_DOS=имя_файла_псевдо_диска[(rwm)] - 5 - Параметры F=число_файлов N=число_буферов C=величина_таймаута_кэш +rundos или +r +verbose или +v +Rambo или +R Режим "+text" или "+bin", или "+default", или "D=b", или "D=t" Вместо "+text", "+bin", "+default" можно указывать "+t", "+b" и "+d" соответственно. Спецификация_расширений B=расширение, расширение... или T=расширение, расширение... или E=имя_файла Технические_данные: размер_кластера, число_FAT, число_каталогов, размер_FAT, смещение_FAT Подкоманда "start" создает новую копию администратора DFS. На каждом узле может действовать только одна копия. Подкоманда "add" позволяет добавлять дисководы или файловые расширения к активной копии DFS. Подкоманда "rem" позволяет устранить дисководы или файловые расширения от действующей копии DFS. Подкоманда "mode" позволяет принять правила распознавания текстовых файлов DOS, используемые DFS. Подкоманда "query" позволяет полностью просматривать имеющееся окружение DFS. Подкоманда "stop" позволяет прервать работу действующей копии DFS. После ввода этой подкоманды новые заявки на открытие файлов будут игнорироваться, и администратор DFS автоматически прекратит работу после закрытия всех активных файлов. Параметры: узел - указывает узел, где будет работать данная копия файловой системы DOS(DFS). Если узел не указан, то подразумевается узел, на котором запущена команда DFS; спецификация_дисков - определяет характеристики каждого из дисководов, с которыми будет работать DFS (файловая система DOS); дисковод_DOS - обозначение дисковода DOS (a - f); дисковод_QNX - используемый в QNX номер дисковода для дисковода DOS (1-8). Сюда можно включать номер узла сети. Это также может быть именем файла, являющегося псевдо- диском DOS. Это поясняется в руководстве по QDOS; (rwm) - режим доступа к дисководу DOS для пользователей, не являющихся суперпользователями (из группы 255). r - разрешает доступ для чтения; w - разрешает доступ для записи; m - разрешает доступ для модификации. Эти допуски относятся ко всем файлам на дисководе DOS. Их можно указывать в любом порядке. Если допуски не указываются, FDS принимает, что к дисководу DOS будет разрешен доступ для чтения и записи для несуперпользователей; - 6 - технические_данные - указание информации, описывающей формат нестандартного дисковода DOS. Если необходимо указывать технические данные,то должны присутствовать ВСЕ пункты спецификации технических данных. Подробное описание всех пунктов спецификации технических данных приводится в руководстве по PC-DOS или MS-DOS; размер_кластера - число секторов в кластере; число_FAT - число FAT (таблиц размещения файлов) на диске; число_каталогов - возможное число каталогов в корневом каталоге; размер_FAT - число секторов для размещения FAT; смещение_FAT - номер первого сектора FAT; F=число_файлов - указывает максимальное число одновременно открытых файлов. По умолчанию это число равно 10 (это минимально допустимое значение); N=число_буферов - указывает число буферов, используемых для хранения блоков FAT, блоков каталогов и кэшированных данных. По умолчанию это число равно 20 (это минимально возможное значение); C=величина_таймаута_кэш - указывает число секунд холостого хода, допустимое при работе с флоппи-дискетами перед тем, как DFS сотрет содержимое внутренней кэш-памяти. По умолчанию это время равно 1 секунде. Данный параметр используется для решения проблем, возникающих при неправильной работе программ DOS, оставляющих открытые файлы после замены дискет; +rundos (+r)-DFS переходит в двоичный режим и начинает производить преобразование символов QNX-DOS и DOS-QNX. Смотрите раздел 1.3.4 о деталях такого преобразования; +verbose(+v)-при указании этого параметра DFS выводит на экран сообщение об ошибках при наличии ошибок ввода/вывода. Большинство прикладных программ внутренне сами обрабатывают ошибки и не нуждаются в том, чтобы DFS выводила сообщения об ошибках. Если Вам нужно, чтобы DFS выводила такие сообщения, укажите этот параметр в командной строке. +Rambo (+R) -указание этого параметра сделает возможным одновремен- ную работу QDOS и DFS на одной машине. Вследствие возможных затруднений (из-за самой природы DOS) при одновременном обращении QDOS и DFS к одному и тому же дисководу, для такого режима надо обязательно указывать параметр "+R". Общее правило для доступа к одному и тому же дисководу программистами QDOS и DFS: НЕ РАЗРЕШАЕТСЯ ДОСТУП ДЛЯ ЧТЕНИЯ/ЗАПИСИ, КОГДА DFS И QDOS ОБРАЩАЮТСЯ К ОДНОМУ И ТОМУ ЖЕ ДИСКОВОДУ; +text (+t) - указывает, что все файлы надо указывать как текстовые файлы. Указание расширений аргументами "В=", "Т=" и "Е=" игнорируется. При использовании вместе с подкомандой "mode" этот параметр позволяет временно отменить действующие по умолчанию правила; +binary(+b)- указывает, что все файлы надо рассматривать как двоичные файлы. Указание расширений аргументами "В=", "Т=" и "Е=" игнорируется. При использовании вместе с подкомандой "mode" этот параметр позволяет временно отменить действующие по умолчанию правила; +default(+d)-указывает, что для распознавания типов файлов DOS надо использовать правила по умолчанию. Расширение имени любого файла сравнивается с имеющимися в списках расширений и, если находится соответствие, то файл рассматривается соответствующим образом (т.е. как текстовый или двоичный). Если такое соответствие не найдено,то принимается тип, указываемый параметром "+D". Это установка по умолчанию, поэтому данный параметр используется для отмены действия параметров - 7 - "+text" ("+t") или "+binary" ("+b"); +full_display (+f) - этот параметр действует только вместе с подкомандой "query" команды DFS. При указании этого параметра DFS выводит детальную информацию о параметрах каждого дисковода; D=b (D=t) - указывает,что файлы расширения, которые не содержатся в списках расширений, надо рассматривать как текстовые ("t") или двоичные ("b") файлы. По умолчанию,если расширение имени файла не распознается, то файл считается двоичным; B=расширение [,расширение...] - указывает список расширений файлов DOS, файлы с указанными расширениями рассматриваются как двоичные; T=расширение [,расширение...] - указывает список расширений файлов DOS, файлы с указанными расширениями рассматриваются как текстовые; E=имя_файла- указывает файл, содержащий список расширений, соответствующий двоичным и текстовым файлам. Этот файл должен иметь следующий формат: " Строки, начинающиеся с двойных кавычек, считаются " комментариями. Ключевое слово "text" указывает, " что далее приводится список расширений, соответ- " ствующих текстовым файлам. text (tab) asm (tab) bat (tab) list (tab) txt " Ключевое слово "binary" указывает, что далее " приводится список расширений, соответствующих " двоичным файлам. binary (tab) сom (tab) exe (tab) (tab) obj Каждое расширение должно указываться на отдельной строке, и эта строка должна начинаться с одиночного символа ТАВ. Отсутствующее расширение файла указывает- ся путем указания в строке только символа ТАВ. Можно указывать неограниченное число расширений, соответствующих текстовым и двоичным файлам. В файле "config/dfs" содержится примерный список, который Вы можете модифицировать для своих нужд. 5. ПРИМЕРЫ КОНФИГУРАЦИЙ DFS 5.1. Пример 1 Предположим, что имеются 2 флоппи-диска и жесткий диск, разделенный на разделы DOS и QNX утилитой FDISK. Эти два раздела диска монтируются следующими командами: mount disk 3/drivers/disk.at pa=qnx mount disk 4 d=3 pa=dos Вам нужно запустить программу DFS ("Файловая система DOS") для того, чтобы иметь доступ к файлам DOS на двух флоппи-дисководах и на разделе DOS жесткого диска. Вы хотите использовать правила по умолчанию для определения типов файлов DOS и будете использовать список расширений файлов, содержащийся в "config/dfs" для определения текстовых файлов. В таком случае Вы должны ввести следующую команду: - 8 - dfs start a=1 b=2 c=4 E=/config/dfs Для вывода списка файлов DOS на дисководе С теперь можно использовать команду ls операционной системы QNX: ls c:/ После запуска DFS можно работать с разделами DOS также, как и с разделами QNX. Если Вы желаете, чтобы пользователи, не являющиеся суперпользователями, имели разрешение на модификацию на дисководе DOS, нужно ввести следующую команду: dfs start a=1(rwm) b=2(rwm) c=4(rwm) E=/config/dfs Разрешение на модификацию необходимо для использования команды CHATTR и для создания и удаления каталогов. 5.2. Пример 2 Предположим, что имеется 1 флоппи-дисковод и псевдодиск DOS, созданный для использования командами эмуляции DOS BIOS. Вам необходим полный доступ к флоппи-дисководу, но Вы хотите ограничить для несуперпользователей доступ к псевдодиску доступом только для чтения. Кроме того Вы хотите, чтобы все файлы рассматривались как двоичные. В этом случае надо ввести следующую команду: dfs start a=1(rwm) c=/dos/pseudo__disk(r) +b E=/config/dfs Предположим, что позже Вы решили добавить к файловой системе DOS (DFS) дисковод на удаленном узле сети. Вам нужно иметь к этому дисководу доступ по умолчанию (для чтения и записи). В этом случае надо ввести команду: dfs add d=[3]4 Предположим, что далее Вы захотели изменить значения двух расширений файлов, как указывающих не текстовые, а двоичные файлы (одно из этих расширений - это пустое расширение, которое указывается как запятая с отсутствующим перед ней текстом). Подкоманда "mode" обеспечивает работу правил, принятых по умолчанию ("+d"), а не "+b" или "+t". dfs mode +d или dfs mode +d dfs rem T=,lst dfs rem T= dfs rem T=lst dfs add B=,lst dfs add B= dfs add B=lst