lock_file - это на самом деле пайпа. Если lock_file is pipe, и в него можно писать, то считаем, что сейчас gtic сейчас уже работает. Если lock_file нет, то форкаемся. Дочерний процесс обрабатывает тики. Родитель создаёт lock_file, перехватывает SIGCHLD (чтобы завершиться, когда gtic отработал), и пускает бесконечный цикл, в котором открывает пайпу, читает, закрывает - и так всё время, пока не будет SIGCHLD. Таким образом, locking работает великолепно. В том смысле, что как бы нас не прибивали, сколько бы не отрубалось питание во время работы, с lock'ом мы всё равно работаем правильно. bsy_support: если при записи xlo мы находим bsy-шку, просто вместо xxxxxxxx.xlo создаём gtic_q/xxxxxxxx.xlo. При следующем тоссинге проверяем все gtic_q в outbound и outbound/*, и пытаемся переместить всё, что можно (если не найден bsy) в .. Portal of Power (mailer такой, совмещённый с файлфиксом, досовый) умеет создавать тики без поля Pw. Это является *грубым* нарушением стандарта (FSC-0087), но нам это пофигу. ;-) Поэтому я добавляю возможность обработки нулевого tic_t->pw. Причём делаем так: 1) если в тике нет pw, ставим pw="*"; 2) если в users для ноды стоит пароль *, то считаем, что пароль вообще не задан; 3) при записи в тик, проверяем, если pw=="*", строчку pw не пишем. Последний пункт - явное нарушение стандарта. Поэтому обсуждаемо. Как ищем конфиг: 1) сперва пробуем необязательный третий параметр командной строки 2) если не найден, пробуем прочитаь argv[0]+".config" 3) если не найден, используем CONFIG (defined in Makefile), если определён Поддержка area groups: 1) В areas всегда задаётся group. Если группа не задана - ария доступна для всех. ext.create_area пишет Group $newarea_group в areas_file. newarea_group - задаётся в конфиге, по умолчанию равно "" (ничего не пишется в ext.create_area). 2) В users третьим параметром идёт список групп через запятую. Возможны wildcards. 3) Проверяем group в следующих случаях: - при приходе файла (for node tic->from) [badtic] - при полылке файла юзеру (for node tic->to) [skip] - при выдаче списка арий юзеру в area manager [unlisted] - при подключении арии к юзеру в area manager [report an error] 4) [9 mar 1998]: небольшое добавление - в списке групп для юзера можно указывать запрещённые группы. Для этого нужно указать символ '!' в начале элемента списка. Алгоритм обработки прост - сперва проверяются все запреты, затем все разрешения.