Flags definitions
Секция определения флагов (семафоров) и функций работы с ними
Flag_Dir c:\t-mail\flags\ ; Semaphores directory
Каталог, где по умолчанию создаются и ищутся файлы-флаги. Если не
определен, то для этого используется каталог, где находится сам t-mail.
Для этой переменной НЕЛЬЗЯ использовать корневой каталог диска!
Flag_Session busy.t-m ; Global busy flag
Этот файл-флаг создается T-Mail-ом при начале любого сеанса связи и
уничтожается после его окончания. По умолчанию создается в каталоге,
определенном переменной Flag_Dir. Структура этого файла подробно описана
в главе 14 документации.
Flag_NoScan noscan.t-m ; обычное использование
Flag_NoScan !scan.t-m ; инверсное использование
Flag_NoScan nosca*.t-m ; wildcard
Этот флаг запрещает сканирование нетмэйла, mailboxes, fileboxes. В
качестве флага можно использовать маску файлов (wildcard).
Busy_Flags_Create Normal Semaphore Bink
В этой переменной указывается, какие флаги занятости (busy-флаги) будет
создавать T-Mail при установлении сеанса связи, а также будет ли он
создавать их вообще. Значения совпадают со значениями переменной
Busy_Flags_Scan (см.ниже).
Busy_Flags_Scan Normal Semaphore Bink
В этой переменной указывается, какие флаги занятости (busy-флаги) будет
анализировать T-Mail перед попыткой установления сеанса связи и при
формировании/модификации очереди, а также будет ли он анализировать их
вообще.
Возможные значения (ключевые слова):
Normal - обычные флаги, совместимые с мэйлером FrontDoor;
Bink - флаги, совместимые с мэйлером BinkleyTerm (файлы *.BSY);
Semaphore - системные семафоры (для OS/2 и Windows NT);
No - флаги создаваться и анализироваться не будут.
Можно задавать несколько ключевых слов вместе, однако слово No должно
быть задано единственным. Значение переменной по умолчанию - Normal.
Не рекомендуется использовать все три типа флагов одновременно, так как
это требует дополнительных ресурсов. В большинстве случаев будет
достаточно использовать сочетания "Semaphore Bink" или "Semaphore
Normal".
Далее определены Process_Flag, то есть имена флагов и соответствующие
программы или действия, которые T-Mail выполнит при
появлении/исчезновении соответствующего флага.
Синтаксис:
Process_Flag [prefix]<flag_name> <action1>
[# <action2>]
[# <action3>]
где
<flag_name> - имя флага, на который надо реагировать. Если не
определен полный путь, то флаг ищется в каталоге для
флагов (см. Flag_Dir).
Если имя флага начинается со строки "\SEM32\", то в
версиях для OS/2 и Windows NT это означает не файл-флаг,
а системный семафор в памяти.
[prefix] - перед именем флага может быть указан [prefix] - это один
из префиксов '!' или '+'.
Если перед именем флага стоит '!', то флаг считается
инверсным, то есть действие происходит при исчезновении
файла-флага. В этом случае файл, заданный <flag_name>
создается перед выполнением действия (иначе, если флаг
неинверсный, - <flag_name> уничтожается. Исключение -
для действия Sleep. В этом случае T-Mail ожидает
исчезновения файла (или его создания, если используется
'!').
Если перед именем флага стоит '+', то флаг после
обработки НЕ БУДЕТ УДАЛЕН. Эту возможность можно
использовать только для файлов-флагов (нельзя для
системных семафоров) и только для неинверсных флагов
(т.е., нельзя задавать префиксы '+' и '!' для одного и
того же флага). T-Mail не реагирует на такой неудаленный
флаг более одного раза - до тех пор, пока не изменятся
дата и время создания этого файла.
<action> - одно из следующих действий, которое будет выполнено:
<KeyWord>
<[!]command>
<dvpname>
Далее эти действия описаны подробно.
<KeyWord> - одно из ключевых слов, определяющих действие по флагу:
Exit <EL> [<line>] - выход из T-Mail с заданным кодом
завершения (errorlevel) <EL>, EL -
число в интервале 1-255. Если задан
параметр <line>, то при выходе
будет сформирован командный файл с
именем EXITxx.BAT (EXITxx.CMD), где
"xx" - номер задачи T-Mail (по
умолчанию 01). Этот файл будет
содержать одну строку, содержимое
которой будет взято из <line>.
<line> может содержать макросы,
описанные ниже; в командный файл же
будут подставлены соответствующие
реальные значения. Если <line>
отсутствует, то командный файл
создан не будет.
Sleep - ожидание исчезновения флага (или
появления, если флаг задан с '!').
Set <var>=<value> - задать новое значение переменной из
t-mail.ctl .
Poll <addr group> - сформировать Poll по адресу или
группе адресов, заданных в <addr
group>.
Control - принудительно перечитать все
конфигурационные файлы T-Mail.
Repack <addr group>- пересканировать заново нетмэйл, а
также, если используются, то
файловые ящики, персональные
почтовые ящики и Bink-Style
Outbound и сформировать очередь
заново. Если задана группа адресов
<addr group>, то производится
перепаковка только для адресов,
входящих в эту группу. При
выполнении этого действия в
Slave-задаче происходит только
сброс счетчиков (попыток дозвона и
т.п.).
KeyMacro <macro> - имитирует ввод с клавиатуры
символов и скэн-кодов, определенных
в <macro> - см.главу 20 документации
Sound <filename> - воспроизводит звуковой файл (.wav
или .voc). Работает только в
коммерческих версиях для OS/2 и
Windows NT (см. раздел "Звуковые
эффекты" главы 20 и главу 30).
Create <filename> - создать файл <filename> или
системный семафор (для OS/2 и
Windows NT). Системный семафор
должен начинаться со следующих
символов: "\SEM32\", например:
"\SEM32\arcmail.t-m".
Kill <filename> - уничтожить файл <filename>.
Log <string> - вывести строку символов <string> в
лог-файл (определенный переменной
Log в t-mail.ctl ), на экран и
(только для OS/2) в pipe-log. В
строке <string> можно использовать
макрос *A.
Terminal [<script>]- осуществляется выход в эмулятор
терминала (встроенный). Если после
слова Terminal задано имя файла
сценария, то после входа в терминал
этот сценарий будет выполнен. После
этого T-Mail останется в режиме
эмулятора терминала, однако, если
сценарий завершился инструкцией
"Exit", то произойдет выход из
эмулятора терминала.
Script <filename> - выполнить сценарий, находящийся в
файле <filename> (см. главу 29 ).
Nothing - ничего не делать. Можно
использовать для удаления флага.
<command> - это просто имя программы, которую нужно запустить для
соответствующей обработки (.exe, .com, .bat,..), и ее
параметры. Если перед <command> стоит '!', это означает,
что команда будет запущена без swap. При работе в OS/2 и
Windows NT символ '!' имеет другое значение: перед
запуском внешней задачи необходимо закрыть
соответствующий этой задаче COM-порт. При этом
использование макроса *O теряет свой смысл.
<dvpname> - имя (с путем) DesqView programm, т.е имя .dvp-файла,
определяющего окно, которое нужно открыть в этом случае.
Примеры:
--------
Process_Flag anyarc.t-m c:\squish\squish -In -Out
Process_Flag c:\anytic.000 anytic.bat -Debug
Process_Flag doswap.t-m doswap.bat
Process_Flag sleep.t-m Sleep ; Force sleep
Process_Flag exit.t-m Exit 99 ; Exit with errorlevel 99
Process_Flag repack.t-m Repack ; Repack netmail
Process_Flag alive.t-m Kill flags\alive.t-m ; Erase file
Process_Flag !alive1.t-m Nothing ; For creating flagfile
Process_Flag key1.t-m KeyMacro <Alt-D>d:\command.comɘd>/124ɘd>
Process_Flag poll.t-m Poll /2 /100 /6 ; create polls
Process_Flag \SEM32\set1 Set Freq_Size=1000 ; set parameter
Process_Flag test.t-m test.bat *A *P *B -debug ; execute
Process_Flag ex.t-m Exit 99 bbs.exe -d -p*P -b*B -y*N
При задании <command> в Process_Flag можно использовать макросы, которые
будут заменены на соответствующие параметры:
*A - полный адрес системы, которая является текущей в очереди. Если
очередь пуста, подставляется адрес -1:-1/-1.-1;
*B - скорость соединения (DCE baudrate);
*D - файлбокс "по умолчанию" для системы, которая является текущей
в очереди;
*I - PID текущей задачи;
*L - скорость фиксации порта (locked port) (или 0);
*P - номер COM-порта;
*T - номер задачи (task number);
*O - (только для OS/2 и NT версии) - handle открытого COM порта;
Может быть определено несколько действий (<action>), соответствующих
одному флагу. При этом каждое следующее действие должно начинаться с
новой строки и предваряться символом "#". Не поддерживается выполнение
нескольких действий только для "Process_Flag ... Sleep". Действия
Control и Exit должны быть последними. Если после Control или Exit
поставить еще какие-либо действия, то такие действия выполнены не будут.
Пример:
-------
Process_Flag flag.t-m Create busy.t-m
# Sound snd1.wav
# doproc.cmd -T -D
# Sound end.wav
# Kill busy.t-m
Максимальное число переменных Process_Flag ограничено только оперативной
памятью.