
   @PRODUCT_LONG  @{r74}@{d}@{_}


   ВВЕДЕНИЕ

      Учитывая существующие потребности в  средствах архивации данных, ARJ
      Software Russia  выпускает собственную серию архиваторов, основанных
      на    коде ARJ. С самого   начала  мы ставили  своей целью сохранить
      функциональные  возможности и совместимость  с ARJ для DOS, но кроме
      этого,  выпускаемые версии   ориентированы  на  применение в   таких
      приложениях  и  на  таких платформах,   где   ARJ ранее никогда   не
      существовал. 


   НОВЫЕ ФУНКЦИОНАЛЬНЫЕ ВОЗМОЖНОСТИ И ОТЛИЧИЯ ОТ ИСХОДНОГО ARJ

      (обозначения: "-" - отсутствующие  средства,  "*"  -  функциональные
       различия, "+" - возможности, имеющиеся только в @PRODUCT)

      -  Может  наблюдаться  существенное  падение производительности  при
         работе с архивами на устройствах без кеша с отложенной записью.

      *  Используется способ хранения списка  файлов, аналогичный ARJ/DOS,
         и для экономии  памяти  списки, насчитывающие более  3000 файлов,
         выносятся  на  диск.  Чтобы   хранить  весь   список   в  памяти,
         используйте  ключ -hm65000. Это  может  оказаться  полезным, если
         используется версия не для DOS, и свободной памяти достаточно для
         ведения списков - в таком случае объем занимаемой списками памяти
         не будет отрицательно влиять на производительность.

      *  Программа-индикатор, ARJ$DISP, была переименована в ARJDISP. Если
         используются   собственные   модули,  то   их  также   необходимо
         переименовать.

      *  Ключ "-t1g" эквивалентен сочетанию "-t1gf", которое требовалось в
         в исходной версии ARJ, но противоречило документации.

      +  "ARJ a -d1" удаляет добавленные файлы без  запроса подтверждения,
         аналогично "ARJ m". "ARJ a -d2" обнуляет файлы, не удаляя их, что
         часто имеет смысл для сохранения твердых ссылок.

      +  Ключ  "-_"  позволяет  преобразовывать  имена  файлов  к  нижнему
         регистру. При  добавлении  файлов  в  архив имена  внутри  архива
         приводятся к нижнему регистру, при распаковке преобразуются имена
         извлекаемых файлов. Проверка наличия  дублирующих файлов  в обеих
         случаях не производится. На  файловых  системах, чувствительных к
         регистру  символов,  ключ "-_"  приведет  к   неработоспособности
         режима "-jt1".

      +  С ключом "-h#" можно указывать собственный формат даты. Допустимы
         следующие спецификаторы:

          Y = год,        M = месяц,      D = день
          h = час,        m = минута,     s = секунда
          N = порядковый номер дня с 1 января текущего года

          (обратите внимание: учитывается регистр символов)

         Остальные символы считаются разделителями и не заменяются цифрами
         из даты. Также не изменяются символы, которые  стоят на позициях,
         не  предусмотренных форматом  даты (4 знака для года, 2 знака для
         остальных чисел). Примеры:

         ARJ a project- -h#YYYYMMDD              (project-19991022.arj)
         ARJ a backup- -h#MM-DD_hh-mm-ss    (backup-10-22_23-57-16.arj)
         ARJ a specs -h#YY                                (specs99.arj)
         ARJ a test -h#YYYYYYYY                      (testYYYY1999.arj)
         ARJ a logs_ -h#NNN                              (logs_295.arj)

      +  Ключ "-ha" можно также использовать  при архивации файлов. В этом
         случае для  архивируемых файлов с  атрибутом "только  для чтения"
         этот  атрибут  не  будет  проставляться  в  архиве, что  полезно,
         например, при архивации содержимого компакт-диска.

      +  По просьбам системных  операторов  сети  FidoNet, в ARJ  добавлен
         ключ "-2a", по  своему действию похожий на "-jo", за  исключением
         того,  что  вместо  нумерации  расширений изменяется  имя  файла.
         Рассмотрим это на примере файла "FILE995N.TXT". При извлечении из
         архива  файла  с   таким  же  именем,  новый  файл  будет  назван
         "FILE9950.TXT",  при  последующем  извлечении - "FILE9951.TXT", и
         так далее  до "FILE9959.TXT", после  чего  следующий  файл  будет
         называться  "FILE9960.TXT". После  "FILE9999.TXT" ARJ  перейдет к
         "FIL00000.TXT". Это  позволяет  иметь  до 100000000 файлов, имена
         которых изначально совпадали. Данный ключ необходим для системных
         операторов FidoNet, где могут иметь  место случаи  с одноименными
         пакетами с почтой (ARCmail), прибывающими от разных систем.

         ПРИМЕЧАНИЯ:
           1. Имеет смысл прописывать этот ключ в скрипт распаковки почты,
              а не в переменную окружения ARJ_SW.
           2. В  случае  с файлом,  названным  9999.XXX,  все  последующие
              операции будут производиться над файлом 0000.XXX, т.е. файлы
              с "9" в начале  имеют  меньше возможностей для дублирования.
              К счастью, такая ситуация маловероятна для FidoNet.
           3. Существует аналогичный ключ, "-jo1", нумерующий имена файлов
              при  распаковке, однако   его  действие отличается  тем, что
              файловая система  должна поддерживать длинные имена и, более
              того, он не подходит для ARCmail.

      +  Ключ "-2d" обеспечивает режим совместимости с ARJ для DOS. В этом
         режиме формат заголовка  соответствует исходной спецификации ARJ,
         кроме   того,  при   распаковке  в   DOS  не   будет   выдаваться
         предупреждение  "двоичный  файл  из  другой OС". Если указан ключ
         "-2d1", то  используется  модифицированный  формат  заголовка,  а
         "MS-DOS" проставляется только в основной  заголовок архива, таким
         образом, комментарий будет выводиться без искажений при просмотре
         архива в DOS.

      +  Ключ "-2f" позволяет  назначать комментарий  только  для  первого
         тома  в  многотомных  архивах, и  удалять  комментарий  для  всех
         последующих томов.

      +  Ключ "-2k"  задает  двухзначный  формат  года  при выводе  дат  в
         списках. Трехзначный формат, используемый  для дат после 2100 г.,
         не  будет  использоваться,  таким  образом,  список  будет  проще
         просматривать.

         "-2k1" устанавливает более удобочитаемый  и информативный формат,
         в этом случае для дат с 1970 по 2069 гг. используется двухзначное
         представление, а для 2070 г. и последующих лет - трехзначное.

      +  Клюс  "-2r" изменяет  порядок   архивации директорий, сохраняя  в
         первую очередь атрибуты директории,  а  затем - хранящиеся в  ней
         файлы.  Этот порядок использовался  по умолчанию в версиях ARJ до
         2.76. Архивация с  ключом "-2r" полезна в  том случае, если архив
         планируется  распаковывать более старой  версией ARJ и необходимо
         избежать запросов на перезапись  атрибутов директории.  Если ключ
         "-2r"  указан  при  распаковке, то  ARJ  будет всегда запрашивать
         разрешение на изменение атрибутов  директории (по умолчанию этого
         не происходит).

      +  Если  отсутствует  переменная  окружения  ARJ_SW, ARJ  ищет  файл
         ARJ.CFG в каталоге с программой. Данный файл имеет тот же формат,
         что и конфигурационные файлы, описанные в документации. Если файл
         ARJ.CFG не найден, используются  установки по умолчанию. В случае
         с операционными системами  класса UNIX поиск в каталоге программы
	 не производится, вместо этого действует принятая в UNIX процедура
         поиска. Она детально описана в документации по ARJ в UNIX.

      +  Начиная  с  версии  2.42.05, REARJ  понимает  модификатор  "T"  в
	 REARJ.CFG.  Этот  модификатор  указывает, что  REARJ  должен  сам
	 удалить выходной архив, если в процессе преобразования были сбои.


   ПОДДЕРЖКА РАСШИРЕННЫХ АТРИБУТОВ

      Начиная с  версии 2.62.10,  сохранять и восстанавливать  расширенные
      атрибуты   (EA)  стало  возможным  без  помощи  внешних  утилит.  EA
      сжимаются   и хранятся    как  часть   заголовка. ARJ   поддерживает
      расширенные атрибуты стандарта IBM SAA в системах OS/2 и Windows NT. 

      Ограничения на поддержку EA: 

      *  Возможность продолжения прерванной многотомной архивации (-jn) не
         будет работать при включенных  EA. Вам необходимо либо отказаться
         от поддержки EA посредством -2e, либо создать  архив с нуля, если
         EA представляют ценность.

      *  В режиме "-j#" EA не поддерживаются.

      * В    системе    Windows   NT   перезапись   расширенных  атрибутов
        невозможна. При  добавлении  в  ходе распаковки  новых расширенных
        атрибутов  к  файлу,  уже   имеющему расширенные   атрибуты,  файл
        сохраняет свой исходный набор атрибутов.

      Были добавлены следующие ключи для управления архивацией EA:

      *  "-2c" ограничивает список обрабатываемых EA только  критическими.
         Заархивированные  некритические EA не  будет восстановлены, а при
         создании архивов будут сохранены только критические EA.

      *  "-2e" задает маску включения. Если не  указывать маску атрибутов,
         то поддержка EA вообще выключается. Выражение, которое следует за
         "-2e" интерпретируется по аналогии с маской имен файлов, при этом
         будут  сохранены/распакованы  только  EA, попадающие  под  маску.
         Ключ можно  использовать  многократно  для выбора  по  нескольким
         маскам. Нельзя использовать внешние списки файлов. Примеры:

         ARJ a test

         В этом примере, все EA будут сохранены.

         ARJ a no_eas -2e
         ARJ x no_eas -2e

         EA не будут ни сохраняться, ни распаковываться.

         ARJ a documents -2e.LONGNAME

         В  этом  случае,  сохраняются  только  атрибуты,  задающие  имена
         объектов (.LONGNAME).

         ARJ a test -2e.CLASSINFO -2e.ICON*

         .CLASSINFO и .ICON* (.ICON, .ICON1, .ICONPOS) будут сохранены.

         При архивации рабочего стола  OS/2 имеет смысл использовать маску
         "-2e.*". В таком случае сохраняются только системные атрибуты, их
         имена  начинаются на ".", в  то время, как  атрибуты, создаваемые
         прикладными программами, именуются по названиям программ.

      *  "-2l" включает   режим   преобразования   расширенных   атрибутов
         .LONGNAME  (используемых  в   основном  для  хранения  заголовков
         объектов WPS) к именам файлов, что  упрощает перенос документов с
         системы, где OS/2 установлена на FAT.

         Если  заголовок объекта  (и, следовательно,  расширенный атрибут)
         содержит символы перевода строки или другие недопустимые для имен
         файлов  символы, в  архиве будет  сохранено обычное  имя файла, и
         расширенный атрибут .LONGNAME будет также записан в архив.

         Данный ключ игнорируется во время распаковки. Ключи "-2e" и "-2x"
         не влияют на  данный ключ (но  расширенные атрибуты  .LONGNAME не
         будут  сохраняться, если явным или  неявным образом  отключена их
         архивация).

      * "-2x" задает маску  исключения. Далее должно  следовать выражение,
         определяющие исключение EA. Правила те же  самые, что  и с "-2e".
         Можно  указывать  одновременно   и  маску  включения,   и   маску
         исключения, например:

         ARJ a backup_ -r -p1 -h#2 -2e.* -2x.FED* c:\projects

         Пример показывает способ  регулярной архивации  рабочего каталога
         с сохранением всех  системных расширенных атрибутов, но  исключая
         те из  них, которые  созданы  редактором  FED (Fast Editor  Lite,
         автор - Сергей Евтушенко, evsi@naverex.kiev.ua ) - эта  программа
         не  следует  традиционным  рекомендациям и  обозначает  с помощью
         системных расширенных атрибутов позиции в текстовых файлах.

      Расширенные  атрибуты также  поддерживаются в ARJSFXV, их хранение в
      самораспаковывающихся архивах  реализовано по той же технологии, что
      и в обычных архивах ARJ.

      Присутствие  EA при  архивации обозначается  сообщением "(EAs: ...)"
      после  статистики  по  размеру файла. Обратите  внимание,  что  этот
      размер  может  отличаться  от  того,  который   будет  сообщен   при
      распаковке - это  связано с  тем, что в  первом случае  показывается
      размер  внутренней  структуры, используемой для  хранения  EA, а  во
      втором  случае -  пространство,  необходимое  операционной  системе.
      Количество   расширенных   атрибутов   и   занимаемый   ими   размер
      отображается в статистике по команде "ARJ v".


   ЧАСТО ЗАДАВАЕМЫЕ ВОПРОСЫ

      Q: Приложения третьих фирм не распознают архивы ARJ для @PLATFORM!
      A: Попробуйте  отключить  обработку  расширенных  атрибутов  (-2e),
         хранение  DTA/DTC  (-j$), твердые ссылки (-2h), и включите режим
         совместимости с DOS (-2d). Большая часть проблем связана с новым
         форматом заголовка в текущих версиях ARJ, который,  несмотря  на
         100%  совместимость  и  открытое  описание,  не   поддерживается
         программным  обеспечением. Известные  примеры  таких  приложений
         включают File Commander v 2.11, Norton Commander v 5.00 и WinRAR
         v 2.60.

      Q: ARJ/2 и InfoZIP сообщают различные размеры расширенных атрибутов.
         В чем причина?
      A: Как было сказано ранее, ARJ/2 сообщает размер собственной области
         данных,  в  которой  хранятся  EA. Этот  размер, как  правило, не
         совпадает с тем,  который   выделяет  ОС (в   системах   OS/2-16,
         OS/2-32, NT     под EA резервируются    различные структуры). При
         распаковке архива будет показан объем, выделенный системой. 

      Q: Как сохранить папки рабочего стола  OS/2 Workplace Shell вместе с
         их пиктограммами?
      A: Папки  представлены  директориями, следовательно, нужно  включить
         архивацию директорий по -a1 или -hbfd.

      Q: EA пропали после того, как я добавил файлы в архив под DOS.
      A: Текущие  версии  ARJ/DOS  и  ARJ32, а  также  ARJ/2  до  2.62.10,
         выбрасывают расширенные  атрибуты  из  заголовков  при  изменении
         архива.

      Q: Я хочу  создать однотомный  самораспаковывающийся  архив, который
         поддерживает EA, но ARJ/2 использует ARJSFX вместо ARJSFXV.
      A: Вы должны указать ARJ/2 подключить  ARJSFXV/2. Самый лучший  путь
         для этого состoит в том, чтобы задать заведомо большой объем тома
         (например, -va).

      Q: Как создать простейший инсталлятор средствами ARJ/2?
      A: ARJSFX/2 может выполнять команды OS/2 после распаковки архива.
         Пример:  создайте  пакетный  файл,  который   должен  запуститься
         по завершению инсталляции.

         Например, INSTALL2.CMD:
         =======
          /* REXX */

          if RxFuncQuery('SysLoadFuncs') then do
           call RxFuncAdd 'SysLoadFuncs', 'RexxUtil', 'SysLoadFuncs'
           call SysLoadFuncs
          end

          say "Инсталляция завершена, создаются объекты WPS..."
          call SysCreateObject ....
         ========
         и т.п.

         Теперь создайте комментарий к архиву, где первой строкой будет:
         )) \InstallDir\ -b -x -y -! INSTALL2.CMD

         Назовите его, например, CMT.ANS. Теперь создайте архив ARJSFX:

         ARJ PACKAGE.EXE -je -r -a -jm -zCMT.ANS -xCMT.ANS

         В результате будет создан самораспаковывающийся  архив с запуском
         програмы-инсталлятора.

      Q: Как отличить архивы ARJ/ARJZ/ARJ32?
      A: Просмотреть  архив командой ARJ V. В  поле "Host OS" будет указан
         тип ОС, а информация из поля "Revision" может  использоваться для
         идентификации версии архиватора:

                 1 = ARJ до версии 0.14,
                     ARJZ в режиме совместимости (-md меньше 26624)
                 2 = ARJ v 0.14...0.20
                 3 = ARJ v 1.00...2.22
                 4 = ARJ v 2.30, X1
                 5 = ARJ v 2.39a, 2.39b
                 6 = ARJ v 2.39c...2.41
                 7 = ARJ v 2.42a...2.50a
                 8 = ARJ v 2.55...2.61, ARJ/2 v 2.61
                 9 = ARJ v 2.62, ARJ/2 v 2.62, ARJ32 v 3.00
                10 = ARJ v 2.70 и выше, ARJ/2 v 2.62.10 и выше
                11 = ARJ с поддержкой UNIX (2.77/3.10 и выше)
                50 = ARJZ с максимальным расстоянием 32 КБ
                51 = ARJZ с максимальным расстоянием 64 КБ
               100 = ARJ32 v 3.00b...3.01
               101 = ARJ32 v 3.02 и выше

         Примечания:

         1. Версии ARJ с  форматом  заголовка 1  применяли  другой  метод
            сжатия по -m4. Поддержка этого метода была упразднена в ARJ v
            1.xx. Могут возникнуть проблемы  с обработкой таких архивов в
            @PRODUCT.

         2. ARJ v 2.76.07 и выше способен читать  новый формат даты UNIX,
            создаваемый версиями 3.10/2.77. Это сделано в целях поддержки
            этого формата релизными версиями ARJ.


   ИНФОРМАЦИЯ ДЛЯ РАЗРАБОТЧИКОВ

      Формат  времени UNIX  распознается  по значениям "UNIX" или "NeXT" в
      поле "Host OS", и по значению "arj_nbr" (номер версии) 11 или более.
      В этом случае все поля даты в заголовке представлены в формате UNIX,
      т.е. 4-байтовых значений, содержащих число секунд, которое  прошло с
      01/01/1970, 00:00:00 всемирного времени.

      В прочих аспектах сохраняется  полная совместимость  со  стандартным
      форматом  ARJ,  но  задействованы  расширенные   заголовки.  Краткое
      описание технологии  их хранения (все величины - little-endian, т.е.
      старшие байтовые разряды хранятся последними):

      Разм.  Описание
      -----  --------
          1  Идентификатор заголовка.
          1  Флаг продолжения. Если  установлен в  0, означает конец  цепи
             блоков, так  что  заголовок  может  быть собран и  обработан.
             Также он обеспечивает проверку целостности блоков.
          ?  Данные заголовка.

      Идентификатор 0x45 ('E') == расширенные атрибуты
      ------------------------------------------------

      Имеет силу только если номер версии ARJ (arj_nbr) - 10 или выше.

      Блок упакованных EA - сложная структура, которая может  быть разбита
      на  несколько томов, находясь  в  разных  заголовках одного файла. В
      таком случае, все отдельные части должны быть  соединены после того,
      как  прочитан  последний блок (это  проверяется по  отсутствию флага
      EXTFILE_FLAG. Формат блока:

      Разм.  Описание
      -----  --------
          1  метод  сжатия  (0...4, может  отличаться  от  примененного  к
             файлу)
          2  Размер распакованных данных в байтах
          4  CRC32 распакованных данных
          ?  Упакованные данные

      EA  могут  быть  распакованы  обычными  алгоритмами  ARJ. Если  файл
      зашифрован,  упакованные  данные  также  зашифрованы (но  шифрование
      реинициализируется перед обработкой EA). Модификатор пароля в случае
      с многотомными файлами берется из  того тома, где лежит первая часть
      файла.  После   распаковки,  данные  представляют   собой  следующую
      структуру:

      Разм.  Описание
      -----  --------
          2  Общее количество записей
          ?  Записи, хранящие расширенные атрибуты

      Записи собраны в один  блок, и таким  образом, должны обрабатываться
      последовательно. Каждая запись хранит  в себе данные одного EA, и ни
      один из EA  не может  быть представлен  двумя записями. Запись имеет
      следующий формат:

      Разм.  Описание
      -----  --------
          1  флаг fEA (указывает на критические EA)
          1  Размер названия атрибута
          2  Размер значения атрибута
          ?  Название атрибута (не заканчивается нулем)
          ?  Значение атрибута

      Если файл текстовый, его расширенные атрибуты  должны обрабатываться
      как двоичные  данные. При разбиении на  несколько томов, разбивается
      уже готовая структура, т.е. не происходит ни реинициализации сжатия,
      ни повтора заголовка (блок создается в памяти целиком и впоследствии
      дробится по томам).

      Идентификатор 0x4F ('O') == данные о владельце
      ----------------------------------------------

      Содержит имя пользователя-владельца  в символьном представлении.  За
      именем  владельца может  следовать наименование группы.   Имеет силу
      при arj_nbr >= 11.

      Разм.  Описание
      -----  --------
          1  Длина имени пользователя.
          ?  Имя пользователя (не заканчивается нулем),
             ИЛИ
             Имя пользователя (заканчивается нулем), за которым следует
          ?  Наименование группы (не заканчивается нулем).
      
      Идентификатор 0x55 ('U') == специальные файлы UNIX
      --------------------------------------------------

      Формат данной структуры не  является  фиксированным. Имеет силу  при
      arj_nbr >= 11.

      Разм.  Описание
      -----  --------
          1  Дескриптор специального файла:
             Биты 0...4 = размер поля  данных  (допускается  0;  31  имеет
                          специальное назначение)
             Биты 5...7 = тип:
                          000 = канал (pipe)
                          001 = твердая ссылка
                          002 = символьная ссылка
                          003 = блочное устройство
                          004 = символьное устройство
          ?  Если размер  поля данных в  дескрипторе  был  указан  как 31,
             то за  дескриптором  следуют два байта, содержащие  настоящий
             размер.  В  прочих  случаях  эта   область  за   дескриптором
             отсутствует.
          ?  Исходные данные. Размер сооветствует  значению из дескриптора
             или специального поля размера. Формат:

		Канал:	Пусто (нулевой размер)
	       Ссылка:  Целевой файл (не заканчивается нулем).
           Устройство:	Структура  dev_t с  форматом и порядком следования
                        байт, принятом на платформе, где создавался файл.

      ID 0x6F ('o') == данные о владельце (в числовом виде)
      -----------------------------------------------------

      Содержит идентификаторы (UID и GID). Имеет силу при arj_nbr >= 11.

      Разм.  Описание
      -----  --------
          1  Длина поля данных (8 в текущей реализации).
          4  UID владельца (старший байт идет последним).
          4  GID владельца (старший байт идет последним).


   СВЕДЕНИЯ О СОВМЕСТИМОСТИ

      ARJ тестировался на следующих ОС и файловых системах:

      DOS (FAT)

        MS-DOS v 2.11, 3.20, 3.21, 4.01, 5.00, 6.00, 6.20, 6.22
        PC DOS v 6.30, 7.00
        Windows 95, 98
        Windows NT Workstation v 3.51, 4.00

      OS/2 (FAT, HPFS, Ext2FS, JFS, NTFS)

        Microsoft OS/2 v 1.21
        IBM OS/2 v 1.30, 2.00, 2.10, 3.00, 4.00, 4.50
        Подсистема OS/2 в Windows NT v 3.51, 4.00, Windows 2000

      Win32 (FAT, HPFS, NTFS)

        Windows 95, 98, ME
        Windows NT v 3.51, 4.00, Windows 2000, Windows XP

      Linux (UMSDOS, HPFS, Ext2FS, Ext3FS, JFS)

        Linux v 2.2.13/19-20, 2.4.5/18-21
        glibc v 2.1.2, 2.1.3, 2.2.3
  
      FreeBSD (FAT, UFS, HPFS)

        FreeBSD v 3.4/STABLE

      QNX (QNX4FS, FAT)

        QNX v 6.2.1/PE Patch B


      Конец файла
