=====================================================================
Задумал я засетапить ifmail на большом  Киевском  хабе  2:463/94,  он
собрался, но работать не захотел :-(  Вот и пришлось мне его немножко
подрехтовать. За отправную точку был взят ifmail-2.8g. Подрехтованную
версию можно взять на моем ftp-сервере. Ниже приведены внесенные мной
дополнения и изменения.

ftp://ep.energy.gov.ua/pub/unix/FTN/ifmail/ifmail-2.8gv.tgz

                                  Sergey Babitch 2:463/94@fidonet.org
=====================================================================

Условные обозначения:

  ! - Исправлена ошибка.
  + - Новые функции.
  * - Улучшение выполняемых функций.
  - - Удаление устаревших функций.
  $ - Накручивание бантиков на исходные тексты.

---------------------------------------------------------------------

25-12-96 + Добавлен параметр компиляции "-DOUTBOUND4D". Этот параметр
           запрещает  использование  доменов   в   именах   каталогов
	   OutBound-а. Т.е.  он  указывает,  что будет использоваться
	   4d-OutBound.

	   (c) Sergi Polischuk 2:467/71@fidonet

28-12-96 ! Переписал  функцию выставления *.bsy-файлов (nodelock).  В
           старой функции бзюха (*.bsy) выставлялась функцией "link",
           которая не  работает на ncpfs и FAT файловых системах. Для
           выставления  бзюхи   на  ncpfs  лучше  всего  использовать
           функцию "rename", но  она неприемлема для выставления бзюх
           на FAT (под unix) и  unix-овых  файловых системах. Ну а на
           FAT-е  вообще  ничего не приемлемо для  выставления  бзюх,
           кроме       функции       "open"        с       атрибутами
           "O_EXCL | O_CREAT | O_RDWR". Однако  функция "open" иногда
           плохо себя ведет на NFS и ncpfs файловых системах.
           Теперь, для выставления бзюхи, сначала выбирается наиболее
           оптимальный  метод  (в  порядке  снижения   оптимальности:
           "link",  "rename",  "open"),  и  только потом выставляется
           бзюха выбранным  методом.  Одним  словом,  теперь  функция
           установки  бзюхи  автоматически  настраивается на файловую
           систему.
           Заодно, добавил запись в бзюху  помимо  номера процесса ее
           выставившего еще и имя хоста ее выставившего. Теперь бзюха
           не считается потерянной и не прибивается,  если имя хоста,
           записанное в ней отсутствует или  не  совпадает  с  именем
           хоста,  на  которой  выполняется  установка   бзюхи.   Это
           предотвращает прибивание бзюх, выставленных другой машиной
           (например выделенным тоссером под DOS-ом).

28-12-96 * Добавлено ключевое слово  конфига  "dostrans".  Оно  может
           встречаться   неограниченное  число  раз  и  устанавливает
           соответствие  между  путями  в DOS-формате и unix-формате.

	   (c) Sergi Polischuk 2:467/71@fidonet

30-12-96 + Сделал  так,  что  бы  при  передаче  файла,   отпиленного
           бинкоплюсовской эхопилой (*.?#?) его имя преобразовывалось
           в нормальный  вид.

30-12-96 ! После  передачи всех файлов прописанных  в  лошке  (*.?lo)
           ifcico пытался  грохнуть  ее  не  закрывая.  На  unix-овых
           файлофых системах это работало,  и даже на FAT-е работало,
           а вот на ncpfs ifcico грохнуть открытую лошку несмогла :-(
           Fixed!  Теперь  лошка  перед  гроханием  закрывается.

03-01-97 + Добавлен  параметр  конфига  fileinbound.  Значение  этого
           параметра указывает  в  какой каталог складывать файлы, не
           являющиеся почтовыми пакетами или почтовыми архивами. Если
           этот  параметр  не  задан,  то   он   принимает   значение
           параметров *inbound,  в  зависимости от типа (парольная/не
           парольная/неизвестная)  сессии.

03-01-97 * При приеме файла с именем уже  существующего файла, имя во
           временном   каталоге   меняется    в   последнем   символе
           расширения. При переносе файла в *inbound, имя  оставалось
           то,  которое  было  уже  во временном каталоге, а от  него
           начиналась    притирка   (изменение   последнего   символа
           расширения) к  уже  существующим файлам. Я сделал так, что
           при переносе  файла  из  временного  каталога  в  *inbound
           притирка начинается  с оригинального  (того  что  было  на
           передающей  стороне)  имени  файла.

03-01-97 * Добавил  запись  в лог полного имени  (с путем)  принятого
           (уложенного    в   *inbound)    файла    (или    почтового
           архива/пакета).

03-01-97 ! Файл  FileReques-а  принимался во временный файл с именем,
           содержащим символ  "запятая"  и  имя  состояло  из  девяти
           символов. На unix-овых  файловых системах это работало, но
           на  ncpfs  и  FAT  выдавалось сообщение "cannot open local
           file" и обрывалась сессия.  Я  пока что убрал "запятую". В
           результате длина имени файла  стала  равно восьми. Но я не
           уверен  что  это  будет  работать  правитльно  везде.   По
           хорошему это нужно было бы сделать через секвенсор, но сам
           секвенсор пока не переписан, а потому  ужасно  глюкав  :-(

06-01-97 ! Этот  глюк  появился при добавлении мной параметр  конфига
           "fileinbound".   Раньше   принятый   файл  переносился  из
           временного  каталога  в  *inbound  функцией   rename.  Она
           нормально работала до тех пор, пока  временный  каталог  и
           inbound находились на одной файловой системе (раньше иначе
           и быть не могла). Тперь, если файл не удается  перенести в
           *inbound функцией "rename", то выполняется попытка сделать
           это парой "copyfile" и "unlink".

14-01-97 ! Добавлена обработка параметра компиляции  "-DOUTBOUND4D" в
           функцию "metric".  Теперь,  если задан параметр компиляции
           "-DOUTBOUND4D",    при   сравнении   адресов   домены   не
           учитываются.

14-01-97 ! При вызове удаленной системы, которая в EMSI не предъявила
           тот  AKA  по  которому  ее  вызывали,  бзюха  на  этот (не
           предъявленный)  AKA  оставалась после  завершения  сессии.
           Fixed!

14-01-97 ! При выставлении бзюх на  адреса,  принесенные  в  EMSI  не
           проверялась   успешность   их   установки,  одноко  сессия
           проводилась  с  учетом  этих  адресов.  В  результате  мог
           возникнуть конфликт одновременной обработки почты  на один
           и  тот  же  адрес  несколькими программами.  Теперь сессия
           проводится  без учета заблокированных адресов (они  просто
           игнорируются при обработке  EMSI,  и  в  дальнейшей сессии
           участия  не  принимают).

05-02-97 ! При переносе файла (не почты) из receiver-а  в fileinbound
           устанавливалось текущее время создания этого файла. Fixed!

10-02-97 ! Починил sequencer. Прежний sequencer выдавал одинаковый ID
           при отсутствии  файла  sequencer-а, или при его блокировке
           другим   процессом.  При  этом  иногда  возникали   глюки,
           связанные с передачей в одной сессии  двух  *.pkt-шников с
           одинаковыми именами (папример двух  *.pkt-шников на разнве
           AKA). Сейчас выдача  sequencer-ом  двух одинаковых ID-ов в
           одном процессе практически невозможна, а при наличии файла
           sequencer-а  выдача  одинаковых   ID-ов   практически   не
           возможна для  ВСЕХ  процессов, пользующихся одним и тем же
           файлом  sequencer-а.

10-02-97 * Убрал лочку при передаче НЕ почтовых файлов. Раньше ifcico
           при передаче  файлов  блокировало  их  на  запись  (запрет
           записи другим процессам, читать можно  всем),  однако  эта
           блокировка иногда не давала открыть  файл другому процессу
           (в  частности  у меня Bink/+ 3.1 на другой  линии  не  мог
           открыть файл на чтение для передачи  который в этот момент
           был открыт и  заблокирован  ifcico-й).  Кто  именно в этом
           виноват (Bink, ifcico, или вообще ядро Linux-а, или кто то
           еще)   мне   так  и  не  удалось  выяснить,  однако   была
           ЕДИНСТВЕННАЯ возможность исправить ситуацию  -  это убрать
           блокировку в ifcico. Что я и сделал. Однако почтовые файлы
           одновременно  по   нескольким   линиям   не  передаются  и
           несколькими процессами ОДНОВРЕМЕННО не  обрабатываются (во
           всяком   случае   так  должно  быть).  Поэтому  блокировку
           почтовых файлов (*.su?, *.mo?, *.tu?, *.we?, *.th?, *.fr?,
           *.sa?, *.pkt, *.tic, *.req) я оставил.  Вдруг тоссер какой
           взглюкнет... ;-)))

---------------------------------------------------------------------

         * Подкрутил четыре времени в EMSI. Если будет работать - расписать поподробнее...
         ! Пофиксил время в ZModem-e (двухчасовая разница).

---------------------------------------------------------------------