Highly Portable Tosser FAQ Версия от $Date$ для hpt-1.9-current и 1.4-stable. Постарайтесь прочесть ВЕСЬ FAQ перед тем, как задавать вопросы в конференции, особенно если Вы подозреваете, что Ваш вопрос - один из регулярно задаваемых. Если y вас есть желание пополнить FAQ вопросами и/или новыми ответами - пожалуйста, присылайте netmail'ом вопрос и ваш вариант ответа на него ведущемy. Ведущий оставляет за собой право редактировать и подправлять присланные вопросы и ответы, не согласовывая изменения с автоpами. Ведущий FAQ - Stas Degteff, 2:5080/102 Новые или измененные вопросы помечены знаком ">". Q1. Где взять свежие версии? Q2. А где можно стянуть исходники? Q3. Что означают буквы в скобках в начале ответа? Q4. Как связаться с разработчиками? Q5. Кому присылать патчи? Q6. Я скачал *-current-(дата).tar.gz, а там баг! (архив ~месячной давности) Q7. Кому прислать и как правильно оформить багрепорт? Q8. В чем заключается поддержка перла и как его использовать? Q9. А где GoldEd'у брать список доступных эхоарий? Q10. Как пpописать флаги для совместной pаботы GoldEd & HPT? Q11. Как линковать только те арии, в которые пришли свежие сообщения? Q12. Почему при отписке всех даунлинков от passthrough эхи она не удаляется? Q13. Как удалять passthrough эхи без трафика? Q14. Куда пропадает почта??? Q15. Так как насчет фичи "X"? Q16. Что такое HighWater? Q17. Почему JAM временами сканируется только через "hpt scan -w"? Q18. Почему на одну и ту же эху к аплинку сфорвардилось много запросов? Q19. Как постить через pipe под win32? Q20. А как собирать latest версии под win32? Q21. Чем отличаются линковщики? Q22. Как работает удаление эх через areafix? Q23. Кaк пойнтам ставить на некоторые эхи Read Only? Q24. В чем разница между версиями cygwin и mingw32? Q25. А чем фиксить базы, если с ними действительно траблы? Q26. Отсутствие доки сильно мешает! (Где взять документацию на русском?) Q27. Как разделить настройки hpt, htick и других программ? Q28. Почему нельзя допаковывать почту в FileBox? Q29. Не могу настроить winzip! Q30. А как паковать netmail? Q31. Как у hpt отрубить внутренний трекер нетмэйла? Q32. Как ускорить работу тоссера? Q33. Зачем переменную окружения [module] нужно брать в кавычки? Q34. А как собрать версию с поддержкой Perl под Win32? Q35. А можно как-нибудь получать диффы на e-mail/netmail? Q36. Как победить ошибки компиляции под Red Hat и ASP Linux? Q37. Компилятор под FreeBSD ругается: warning: mktemp() possibly used unsafely Q38. Почему hpt не понимает стандартный эхолист, к-рый ходит по фэхе? Q39. Какая сволочь испортила hpt????????? Он мне все базы похерил!!!!!!!!!! Q40. Я что-то не пойму pазличий win32 от win32dll. Q41. Как коppектно отписаться самому от эхи. Q42. Научите пользоваться CVS, а то на http://husky.sf.net ничего не понятно! Q43. Как CVS заставить работать через прокси? Q44. Почта не тоссится из-под крона, а при запуске вручную работает. Q45. На CVS куча каталогов ("модулей"): что в них, и кто ими занимается? Q46. Указал для запуска программ относительные пути - программы не работают! Q47. Отпускается ли lockfile пpи запуске внешних пpиложений (аpхиватоpов)? Q48. При использовании filter.pl hpt.exe (win32) не находит модули *.pm... Q49. Чем отличается работа с lockfile в режиме AdvisoryLock? Q50. Как заставить hpt письма на несуществующих поинтов отправлять назад? /---------------------------------------------------------------------/ [1] Q: Где взять свежие версии? A: (ML, SR, SD, MD) 1. Официальные дистрибутивы. Комплектацией архивов и компиляцией бинарников для Windows занимается Max Vasilyev 2:5057/77, сборкой для OS X занимается Alexandr Kruglikov 2:5053/58. 1.1. Бинарники и исходники релизов: https://sourceforge.net/projects/husky, страничка "Файлы" (самые свежие выставлены на первой). Ссылка есть на сайте проекта http://husky.sf.net == http://husky.sourceforge.net. Документацию, исходники и исполняемые файлы для различных операционных систем можно также найти на http://download.huskyproject.org 8-го января 2018 г. исходники проекта переехали с sourceforge.net на github.com. Сайт проекта теперь тут: https://huskyproject.github.io /------/ [2] Q: А где можно стянуть исходники? A: (MD) 1. На любой момент - с гитхаба: https://github.com/huskyproject Там каждый подпроект в отдельном репозитории. /------/ [3] Q: Что означают буквы в скобках в начале ответа? A: Это сокращения от имен людей, написавших ответы: aim - andrey i mavlyanov, 2:5030/1159 AL - Andrew Ladutsko, 2:450/210 AG - Anton Gorlov, 2:5059/37 AM - Alexey Matvienko, 2:6083/333 AS - Alexander N. Skovpen, 2:5020/9696 DK - Dmitriy Kazimirow, 2:5004/73 DP - Dmitry Pankov, 2:5022/81 DS - Dmitry Sergienko, 2:464/910 FL - Fedor Lizunkov, 2:5020/960 Gi - Pavel Girnov, 2:5066/18.66 IF - Ivan Fedorov, 2:5070/275 MC - Max Chernogor, 2:464/108 MD - Michael Dukelsky, 2:5020/1042 mk - mihail kapitanov, 2:465/239 ML - Max Levenkov, 2:5000/117 mtt - Matthias Tichy PA - Pavel Andreew, 2:5080/59 PG - Pavel Gulchouck, 2:463/68 PS - Pavel Scvortsov, 2:5055/80.333 SR - Serguei Revtov, 2:5021/11.10 & 2:5021/19.1 TE - Tobias Ernst, 2:2476/418 VL - Vitaliy Lovky, 2:463/1113 VS - Victor Sergienko. 2:464/118 SD - Stas Degteff, 2:5080/102 sv - sergei volodchenkov, 2:5030/1197.10 /------/ [4] Q: Как связаться с разработчиками? A: (SD) 1. Задать интересующий вопрос в эхоконференциях: русскоязычной RU.HUSKY или международной FIDOSOFT.HUSKY 2. Найти разработчика нужного модуля на страничке HUSKY TEAM: http://husky.sf.net/team.html 3. Вот нынешние участники проекта c http://sourceforge.net/projects/husky/ (данные на сентябрь 2005, актуальные данные см. на указанной вебстранице): Andrew Ladutsko andrew_ladutsko at users.sourceforge.net Andrew Sagulin Developer andrews42 at users.sourceforge.net Andy U. Luk'yanov Porter andr_lukyanov at users.sourceforge.net Dmitry Sergienko Project Manager d_sergienko at users.sourceforge.net Georgi Fofanov Developer georgi at users.sourceforge.net Gerrit Ku:hn Developer gerritkuehn at users.sourceforge.net Igor Zakharoff Translator i_zkh at users.sourceforge.net Ivan Fedorov Developer nssoft at users.sourceforge.net Joerg Stadelhoff Developer joergstadelhoff at users.sourceforge.net Max Levenkov Developer max_levenkov at users.sourceforge.net Max Chernogor Project Manager mche at users.sourceforge.net Matthias Tichy mtt at users.sourceforge.net Michael Haase Developer it-dienste at users.sourceforge.net Mike Gorchak Porter lmike at users.sourceforge.net Nestyurkin Nikolay Developer nikn at users.sourceforge.net Elfy Developer nick_voronin at users.sourceforge.net Oliver Grimm Developer atti47 at users.sourceforge.net Pavel Andreew Packager sfpavel at users.sourceforge.net Pavel Gulchouck Project Manager pgul at users.sourceforge.net Peter A Svistunov Web Designer petrucco at users.sourceforge.net Sascha Silbe sascha_silbe at users.sourceforge.net Shilov Vladimir Packager shivn at users.sourceforge.net Stas Degteff Developer stas_degteff at users.sourceforge.net Tema Zelikin Translator tema31 at users.sourceforge.net Tobias Ernst Project Manager os2tobi at users.sourceforge.net val khokhlov Developer val_khokhlov at users.sourceforge.net Volker Quetschke Developer quetschke at users.sourceforge.net Чтобы получить email-адрес, " at " нужно заменить на "@". Некоторые разработчики фактически оставили проект, но, во всяком случае, каждый из перечисленных в этом списке может внести присланной патч в репозиторий CVS. /------/ [5] Q: Кому присылать патчи? A: (ML,SD) Любому разработчику, лучше ведущему модуля (см. п.4) Требования к патчам: 1. Если добавлен новый token(**), нужно: а) добавить его в fidoconf/doc/keywords.hpt б) задокументировать в hpt/doc/hpt.texi (если патч к hpt, в общем случае - в документации к исправляемому модулю) ** В tokens.h в массиве parseline_tokens соблюдайте сортировку токенов! 2. Формат запуска diff следующий: diff -r -c -N hpt.orig hpt.modified > hpt.diff где hpt.orig и hpt - каталоги с исходным и переделанным hpt. (Будьте внимательны! Типичная ошибка - неверный порядок параметров, в результате чего получается обратный дифф.) 3. Обязательно запаковать архиватором (tar+gzip, zip, rar - в порядке предпочтения; досовские версии архиваторов крайне нежелательно использовать) 4. Сделать описание вида (в одну строку, пусть даже она будет больше ширины экрана в несколько раз): new feature added [patch by Vasya Pupkin] и эту строку вставить в текст письма (не в файл!). 5. Каждому модулю (fidoconf, hpt, smapi, ...) - свой патч. Перед тем, как что-то делать, лучше посоветоваться с ведущим модуля: обсудить варианты решения проблемы, названия новых ключевых слов конфига и т.д. /------/ [6] Q: Я скачал *-current-(дата).tar.gz, а там баг! (архив ~месячной давности) A: (PA) Стоит обновиться. Дело в том, что *current* меняется не по разу в день (с учётом пожеланий и багрепортов). Поэтому тот архив, что скачал ты, на сегодня /мягко говоря/ устарел ;-) Раздел "Файлы" на http://sf.net/projects/husky предназначен в первую очередь для размещения официальных (пре)релизов и еже-{одно-двух}-недельных бинарников. Исходники же (особенно current) лучше брать самые свежие с CVS, на худой конец - http://husky.sf.net/cvs2/current/*-latest.tar.gz. Если же баг не исправлен - пиши багрепорт (см. следующий ответ). /------/ [7] Q: Кому прислать и как правильно оформить багрепорт? A: (SD) Багрепорт можно запостить в эхоконференции RU.HUSKY или FIDOSOFT.HUSKY (международная, писать надо по-английски); в раздел bugtrack на сайте (https://sourceforge.net/tracker/?atid=101332&group_id=1332&func=browse). Можно также написать ведущему проекта - но это менее оперативно. Чтобы багрепорт был понят без дополнительных вопросов, нужно указать: - полное название бинарника, его версию и ОС (например, hpt 1.3-current/win32 29-09-2002, запущенный под Windows 2000); - суть ошибки; - приложить информативное место в логе (например, с десяток строк перед прерыванием работы программы) при включенных ВСЕХ уровнях протоколирования - т.е. (начиная с hpt-1.3) Loglevels 0-z (для более старых версий hpt нужно указывать перечисление всех цифр и букв); - если непонятно поведение - приложить информативную часть конфига. Багрепорты предпочтительно публиковать в bugtrack - там есть возможность оперативно передавать их разработчикам. Кроме багрепортов, на sf.net имеется такой же сервис для поддержки пользователей и предложений по развитию. /------/ [8] Q: В чем заключается поддержка перла? A: (PG) Возможность сборки с libperl и выполнение перловых функций (хуков) из hpt в разных случаях. Hапример, при обработке письма во время тоссинга, при сканировании, принятии решения о роутинге, after unpack, before pack... Плюс возможность менять некоторые параметры (текст письма, заголовок, роутинг и пр.) из перловых хуков и предоставление перлу некоторых функций API (writeLogEntry(), putMsgInArea(), crc32() и др.). В результате можно на перле сделать, например, реальный hub-роутинг, nodelist checker, собственную дуполовку, разных роботов типа faqserver... Пример filter.pl с этими функциями есть в поставке, также там есть готовый модуль "Advanced readonly" - hpt/misc/hpt_ro. Все это практически не сказывается на скорости тоссинга, потому что сам интерпретатор запускается и прекомпилит фильтр лишь один раз, а не при каждом вызове хука. A: (DK) Если hpt собран с поддержкой Perl, и присутствуют необходимые библиотеки (Perl56.dll в PATH на Win32), то HPT при необходимости загружает файл, указанный через HptPerlFile в конфиге. Затем из него вызываются написанные на Perl функции, в зависимости от их результата принимается определенное решение, при работе этих функций доступны все стандартные возможности языка Perl (кроме модулей - для них нужно иметь полный установленный Perl), а также несколько следующих функций hpt api (доступных только из Perl hooks): str2attr(атрибут) - преобразует атрибут письма в соответствующие числовое значение. например, str2attr("sent") writeLogEntry(level, str); - записывает строку в hpt.log, level - уровень (0-9,A-Z,a-z), str - строка. Hапример, writeLogEntry("8","Hello from Perl"); putMsgInArea( area, fromname, toname, fromaddr, toaddr, subject, date, attr, text, addkludges); (пишется одной строкой!) - поместить сообщение в заданную (как Net/Echo/Local/BadArea) эхо/нетмейл область. area - название области, если "", то первая описанная нетмейл-область fromname - что ставить в поле "Отправитель" toname - что ставить в поле "Получатель" fromaddr - что ставить в поле "Адрес отправителя", если "", то ставится наш Aka для данной области (указанный через -a или дефолтный) toaddr - что ставить в поле "Адрес получателя" subject - что ставить в поле "Тема" сообщения date - что ставить в поле "Дата отправки", если "", то текущая дата attr - какие ставить атрибуты ("pvt k/s" - PriVaTe, Kill after Sent) text - текст сообщения addkludges - если 1, то формируются необходимые кладжи (MSGID, TOPT, FMPT, INTL) (желательное ставить в 1, если создается новое сообщение для отправки по роутингу, например) пример (одной строкой): putMsgInArea("RU.HUSKY","New HPT User","All", "2:5004/73.888", \ "2:5004/73.888","Perl support","","Мне нравится hpt",1); nodelistDir() - должна возвращать указанный в конфиге каталог с нодлистом myaddr() - должна возвращать массив наших akaшек alike(word1,word2) - возвращает расстояние по Левенштейну между словами word1 и word2 (0-полное совпадение), может быть использована для реализации нечеткой карбонки. Hапример: alike("HPT","JT") доступные следующие Perl hooks: sub hpt_exit() - не имеет параметров, вызывается при завершении hpt sub after_unpack() - вызывается после распаковки бандла в TempInbound sub before_pack() - вызывается перед началом паковки бандлов в TempOutbound на линков sub process_pkt() - вызывается перед тоссингом .pkt, при вызове определены следующие переменные: $pktname - имя pkt-файла $secure - определена, если pkt получен по парольному линку (либо через LocalInbound) (проверка через if (defined($secure)) если возвращается непустая строка, то pkt переименовывается в .flt и не обрабатывается дальше. sub pkt_done() - вызывается после завершение обработки .pkt, при вызове определены следующие переменные: $pktname - имя pkt-файла (в момент вызова он еще существует) $rc - код результата (0-все OK, и $res не определена) $res - строковое представление $rc на английском( Коды результатов и их значение на Русском : 0 - OK ($res не определена) 1 - нарушение секретности (например, неверный пароль) 2 - сложности с открытием .pkt-файла 3 - неверный формат .pkt (возможно, он битый) 4 - .pkt не для нашей системы 5 - проблемы с тоссингом сообщения sub route() - вызывается при роутинге нетмейлового сообщения позволяет посмотреть и, если нужно, то изменить роутинг, при вызове определены следующие переменные: $addr - адрес назначения письма $from - адрес отправителя письма $fromname - содержание поле "Имя отправителя" $toname - содержание поля "Имя получателя" $date - дата письма (строкой) $subj - содержание поля "Тема" $text - текст письма $route - роутинг по умолчанию (см. директивы route в конфиге) (может быть пустым, если в конфиге прописана route <что-то> noroute ...) во время работы можно задать флавор, установив $flavour в "hold" | "normal" | "crash" | "direct" | "immediate", если возвращается пустая строка - используется дефолтный роутинг, иначе возвращенная строка считается адресом узла, на который необходимо отроутить сообщение sub scan() - вызывается при сканировании арий (hpt scan/hpt pack) при вызове определены следующие переменные: $area - название арии (если это нетмейл - то то, что написано сразу после NetArea) $fromname - содержание поля "Имя отправителя" $fromaddr - содержание поле "Адрес отправителя" $toname - содержание поля "Имя получателя" $toaddr - содержание поля "Адрес получателя", определена только в случае, если текущее сообщение - нетмейл $subject - содержание поля "Тема" $date - дата написания $attr - атрибуты (в двоичном формате, см.str2attr) $text - текст письма со всеми кладжами если по каким-то причинам письмо не должно быть отправлено линкам, то нужно вернуть непустую строку с этой причиной sub filter() - вызывается при тоссинге новых писем, при вызове определены следующие переменные: $fromname - содержание поля "Имя отправителя" $fromaddr - содержание поля "Адрес отправителя" $toname - содержание поля "Имя получателя" $toaddr - содержание поля "Адрес получателя", определена только в случае, если текущее сообщение - нетмейл $area - эхотаг (название эхоарии, например, RU.HUSKY, определена, если текущие сообщение - эхопочта) $secure - определена, если текущее сообщение получено через SecureInbound $subject - содержание поля "Тема" $text - текст сообщение (с кладжами) $date - дата сообщения $attr - атрибуты (см. str2attr) $pktfrom - от кого получен текущий pkt вернуть надо либо "", либо причину, по которой сообщение надо в badArea отправить; если во время работы установить $kill в 1 (или любое истинное значение) и вернуть непустую строку, то сообщение будет просто прибито если во время работы изменить одну из исходных переменных (кроме $pktfrom), то надо установить $change в истину (или просто 1), если требуется, чтобы изменения были приняты. A: (SD) поскольку разработка продолжается - появляются новые функции, доступные из perl, лучше смотреть их описание в документации. /------/ [9] Q: А где GoldEd'у брать список доступных эхоарий? A: (PS, DP) В конфиге Golded+ и Golded указывается путь к списку арий фидоконфига * начиная с 3.0.1-asa9 SR3, June 8 1999: AREAFILE Fidoconfig -lame ..\husky\areas * начиная с Golded+ 1.1.5 15-11-2001 AREAFILE Fidoconfig ..\husky\areas A: (Gi) А GoldED 1.1.5 понимает EchoAreaDefaults и -d "Desc", начиная с 2002/09/29 A: (SD) Для ранних версий Golded в комплекте fidoconfig есть конвертер. /------/ [10] Q: Как пpописать флаги для совместной pаботы GoldEd & HPT? A: (SR) echoTossLog - файл, содеpжащий список эх, в котоpые (Golded'ом) написал новые мессаги, по команде hpt scan только эти аpии отсканятся. importlog - файл, содеpжащий список эх, в котоpые тоссеp pастоссил мессаги. Может использоваться линковщиком для того, чтобы линковать не все подpяд, или голдедом для того, чтобы пpи стаpте не все подpяд пpовеpять на пpисутсвие новых мессаг (если не выставлен AREASCAN *). > config echotosslog \bink\flags\echotoss.log importlog \bink\flags\import.log > golded.cfg: SEMAPHORE EXPORTLIST \bink\flags\echotoss.log SEMAPHORE IMPORTLIST \bink\flags\import.log > ged.bat: golded if exist \bink\flags\echotoss.log hpt scan pack /------/ [11] Q: Как линковать только те арии, в которые пришли свежие сообщения? A: (SR) Нужно прописать в конфиг следующее: ImportLog \fido\flags\import.log LinkWithImportLog kill Причем это работает как для hpt link, так и для hptlink. /------/ [12] Q: Почему при отписке всех даунлинков от passthrough эхи она не удаляется? A: (FL) Условие - эха в пастру, на нее подписаны два линка, с одного из которых эта эха и тянется. Предпоследний линк отписывается от эхи, последнему линку посылается письмо об отписке от данной эхи. Теперь представь, что от эхи мы уже отписались, и тут она сваливается с аплинка (ведь он мог успеть натоссить еще до нашей отписки). Так вот, если эха осталась прописанной в конфиге, то она прописана как пастру и никуда не пошла. Если же эху уже вынесли из конфига, то она создастся вновь (ведь это аплинк, скорее всего с него разрешен автокрейт, иначе это все бы не работало), и не факт, что в пастру... A: (SD) Удалится со временем - если периодически запускать hpt qupd (hpt >=1.2) /------/ [13] Q: Как удалять passthrough эхи без трафика? A: (SR) В hptkill 1.04 появится ключик: -p - find & kill passthrough echoareas with <=1 links Hавеpное, наиболее логично будет использовать стpоку вида: hptkill -p -d -n хотя можно и маску аpий указать - из них выбеpет пастpушные с 1 линком... Т.е. ключ -p заставляет выбиpать только пастpушные аpии с одним линком и, в случае пустого списка аpий, подставляет "*". A: (SD) hpt начиная с версии 1.2 корректно удаляет эхи без линков - поэтому можно просто отписать от такой эхи всех (выполнить hpt afix <адрес> -ДОХЛАЯ.ЭХА для каждого подписанного линка). /------/ [14] Q: Куда пропадает почта??? A: (ML, PG, SD) Есть варианты: 1. У линка нет прав на запись в эху. Почта валится в бэды. Посмотри на REASON. Вероятно, что эха просто не доступна по группе. Поставь линку AccessGrp или PublicGroup для всех. Запусти tparser, найди эху, нужного линка и убедись, что есть права на запись. 2. Нет места на диске. Для squish и msg арий - почта переименуется в .err (библиотека вернет ошибку), но если база JAM, то пакеты потеряются (протоссятся без ошибок) в smapi до 2001/12/17. Будьте осторожны! Для проверки свободного места пропишите в конфиг следующее (не работает под DOS с большими дисками): MinDiskFreeSpace 10 3. Если у вас нода, а линки жалуются, что пропадает почта, можно поставить -debug в параметрах EchoArea. Так можно отследить, что сообщение с нужным MSGID записано в такой-то pkt файл для линка. 4. Может быть такая ситуация: при вызове архиватора не возвращается код ошибки, и hpt удаляет бандл или подготовленные *.pkt. В частности, в DOS и Windows 9x/Me в качестве командного процессора используется command.com, а он всегда возвращает 0 - т.е. сообщает, что команда выполнена даже в случае, если программа не была найдена. Претензии к работе command.com - в Microsoft Corp. Обходные пути: - использовать альтернативный командный процессор (NDOS, 4DOS, ...); - указать в конфиге в строках Pack и Unpack полные пути к архиваторам - это никогда не вредно (но не поможет при ошибке упаковки или распаковки: command.com все равно вернет 0). /------/ [15] Q: Так как насчет фичи "X"? A: (FL) В общем-то не помешало бы... A: (ML) Присылай патч! (c) mtt Q: хмм... я извиняюсь за то, что ввел, по всей видимости, тебя в Q: заблуждение, но я _спрашивал_, будет ли "X" в hpt. Сам я разве Q: что калькулятор напрограммить могу... Вот так всегда. The source is available, so download it and do it yourself. Please don't think that OpenSource developers are your personal slaves. (c) FreeAmp FAQ /------/ [16] Q: Что такое HighWater? A: (ML) HighWater - это такой счетчик; после сканирования он ставится в конец базы, чтобы не сканировать заново всю базу, а только новые мессаги, начиная с этого счетчика. /------/ [17] Q: Почему JAM временами сканируется только через "hpt scan -w"? A: (ML) HPT перестает нормально сканировать JAM, когда юзер руками стирает сообщения, а редактор не уменьшает HighWater. Поэтому, когда пишешь новые мессаги, они будут ниже HighWater и не просканируются. В Squish с этим делом все нормально - там номер нового сообщения будет _всегда_ больше, чем HighWater. С версии 0.9.8 16-03-01 новый алгоритм сканирования JAM. Если есть лишние фреймы, то сканируем без HighWater; если сообщение в конце базы, и есть лишние фреймы, то начинаем сканировать с этого сообщения. 100% результат не гарантирован, например: одно сообщение стер, два написал - лишних фреймов нет, HighWater как раз указывает на второе сообщение (первое вместо удаленного). Сканируется только второе сообщение. Совет такой: не удалять руками сообщения и искать нормальный редактор, который будет уменьшать HighWater при удалении. С версии 1.1.5 GoldED+ поддерживает Jam Highwater Mark в том виде, как это реализовано в SMAPI, ему нужно для этого прописать "JamSMAPIHighwater Yes". /------/ [18] Q: Почему на одну и ту же эху к аплинку сфорвардилось много запросов? A: (FL) Да очень все просто, и дело не в hpt ... В описании линка есть строка, что-то типа: AutoAreaCreateFile /path/file_areas.name Так вот этот file_areas.name не подключен к основному конфигу по include (SD): Tparser должен при этом выдать ошибку: "AutoAreaCreateFile /path/file_areas.name has never been included in config!" /------/ [19] Q: Как постить через pipe под win32? A: (SR) В win32 пайпы делаются через файлы, и программы цепочки выполняются сугубо последовательно. В то же время вот такая команда выполняется нормально: type T.BAT |hpt\hpt post -nf "Daemon" -s "subject" -e "my.robot" - Так что если будешь пускать их по отдельности (perl script.pl | hpt ...), должно все нормально работать. /------/ [20] Q: А как собирать latest версии под win32? A: (DK) 1. Распаковываешь архив (если нет tar/gzip, можно воспользоваться winzip или winrar; в комплекте cygwin имеется нормальный tar, понимающий gzipped архивы) 2. Компилятор. Реально под Win32 надо взять MSVC, Watcom C, Borland C либо поставить Cygwin и запускать соотвественно nmake -f makefile.(mvc|mvcdll), wmake -f makefile.wcw, tmake -f makefile.bcw или make -f makefile.cyg. 3. Распаковать и собрать последовательно: - SMAPI: получишь smapi(mvc|wcw|bcw).(lib|dll) (в cygwin - libsmapicyg.a), - fidoconf: получишь fidoconfmvc.dll либо fidoconf(mvc|wcw|bcw).lib (в cygwin libfidoconfigcyg.a) + несколько утилиток (tparser, linked, fc2*). - Затем компилируешь любую из остальных программ. 4. _Все_ собираемые программы/библиотеки должны быть от одной даты в случае -current версии (если smapi/fidoconf - latest от 9.10.2002, то совать туда, например, hpt от 1.1.2001 чревато). 5. Чтобы получить html-документацию, нужен makeinfo (например, из Cygwin): с октября 2002 года именно он используется в makefile либо интерпретатор PERL (напр., http://www.activestate.com, htp://www.perl.com) и скрипт Texi2Html (http://texi2html.cvshome.org/, http://www.mathematik.uni-kl.de/~obachman/Texi2html, http://wwwinfo.cern.ch/dis/texi2html/) /------/ [21] Q: Чем отличаются линковщики? A: (SR) "hpt link", "hptutil link" и "hptlink -t -s" должны давать одинаковые результаты, hptutil link несколько быстрее. После первой линковки "hptlink -t" дальше можно использовать "hptlink -t -n", что существенно ускорит работу на больших базах. Пpи этом стpоится "честное" деpево ответов по MSGID/REPLY, и обpабатываются только новые сообщения. Любители стpоить ответы в одну цепочку должны вызывать "hptlink" без паpаметpов (пpи постpоении одной цепочки ключ "-n" отpабатывает не совсем коppектно). О возможных ключах hptlink можно узнать, вызвав с параметром -h (или любой другой чушью;-) Еще есть sqlink по адресу http://www.aha.ru/~snn/fido/sqlinkw/ Кто-то предпочитает fastlink: http://fastlink.da.ru A: (PG) Разные алгоритмы, разные авторы, разные возможности... Выбирай то, что тебе больше нравится. "hpt link" умеет линковать только по msgid/reply, всегда строит дерево. Свежий из девелоперской ветки совсем шустро линкует jam. hptlink умеет линковать по сабжам, может делать обычную цепочку, а не дерево. /------/ [22] Q: Как работает удаление эх через areafix? A: (PG) Эха может удаляться, если у нас от нее отписывается основной аплинк ("-def"), либо если мы получаем команду ~area от того, кому разрешено удаление этой эхи (LinkGrp должен совпадать с -g в эхе). В этом случае мы отписываемся у всех линков и удаляем эху, причем тем, для кого указано AdvancedAreafix, мы шлем команду ~area, а остальным - просто -area. Не при любой отписке шлется ~area, а только при удалении эхи. При forward request в любом случае отправляется обычная отписка, "-area". A: (SD) Стараниями Макса Черногора в hpt-1.2 (stable) и hpt-1.3 (current) был реализованн продвинутый механизм подписки и отписки: аплинку не отсылаются повторные запросы на подписку и, если в эху ничего не пришло за указанный период, производится подписка у следующего. Отписка же от аплинка производится не сразу - чтобы не было частых подписок-отписок; кроме того, после отправки запроса на отписку эха некоторое время не удаляется из конфига - чтобы запоздалое письмо не создало ее снова. Время ожидания настраивается, см. в документации на hpt: AreaFixQueueFile, ForwardRequestTimeout, IdlePassthruTimeout, KilledRequestTimeout, `hpt qupd`. /------/ [23] Q: Кaк пойнтам ставить на некоторые эхи Read Only? A: (SR) Ваpианты: 1. Поставить -r после тех линков, котоpых ставишь в r/o. Отписка/подписка позволит им снять этот pежим. Можно запpетить подписку/отписку (-mandatory в описании эхи или mandatory в описании линка) 2. Поднять уpовень на запись (-lw 100 в описании эхи) и уpовень тем, кто должен иметь доступ на запись (Level 100 в описании линка). 3. С версии 0.9.8 26-07-01 возможна такая конструкция: ReadOnly 2:5021/19.* tver.sysop* A: (SD) Можно также использовать перловый модуль hpr_ro - если hpt собран с поддержкой perl. Только там можно и напортачить с настройкой. /------/ [24] Q: В чем разница между версиями cygwin и mingw32? A: (PG) mingw32 (он же используется в cygwin gcc с опцией -mno-cygwin) - это просто RTL, напоминающая POSIX более, чем msvc, watcom и пр. С ее помощью применение напильника обычно может привести к компиляции небольших юниксных утилит под windows. В результате получаются полноценные виндовые exe-шники. Сам по себе gcc+mingw32 является полнофункциональным компилятором, который можно использовать не только для портирования unix utils. Cygwin - это среда, эмулирующая некоторые черты unix, включая fork(). При компиляции создаются a.out-бинарники с загрузчиком. Требуют для работы cygwin1.dll. Применяются для той же цели (портирование unix utils), но требуют напильник меньшего калибра. Результат уступает по эффективности mingw32, требует cygwin1.dll, поэтому при прочих равных использование mingw32 является предпочтительным. Могут отбрасывать core, которую потом можно поднимать gdb, т.е. этот вариант удобно использовать при отладке (для отлова плавающих глюков). Поправьте, если я в чем-то ошибаюсь. A: (AS) Поправлю: cygwin1.dll используется, только если используются цигвиновые библиотеки, требующие этот файл... У меня скомпилированы: fidoconf, hpt, htick, smapi, hpucode, hptsqfix, hptkill, sqpack, emailpkt... Из них cygwin1.dll требуется только для emailpkt, так как он использует -luser32, и бинарники у mingw и cygwin примерно одного размера. /------/ [25] Q: А чем фиксить базы, если с ними действительно траблы? A: (ML,SR) hptsqfix (Squish базы), hptutil fix не стоит использовать старые досовые sqfix и sqfix32 (not y2k compatible) Q: А что за файлы .tm*? .tm* - новые (исправленные) базы, которые создает hptsqfix. Q: Почему бы не сделать наоборот? Для того, чтобы человек при запуске успел хотя бы 3 раза подумать, а не выпрямить ли лучше руки. Ведь порча базы - из ряда вон выходящее явление. А если он настолько крут, что занимается экспериментами, побочным эффектом которых является порча базы, он напишет командник, который все, что надо, переименует. /------/ [26] Q: Отсутствие доки сильно мешает! (Где взять документацию на русском?) A: (ML,VS) Есть документация отдельно по hpt и fidoconfig'у. Лучше прочесть обе (начиная с fidoconfig). Q: Я имею в виду не дохлое описание не всех комманд, а полноценную доку с Q: подробным описанием, как и что работает. Если бы ты ее прочел, вопроса бы не возникло. Книжку же с большими цветными картинками "Использование hpt for ..." никто писать не будет. А вообще-то есть что-то подобное (для "чайников") :-) - примеры конфигов и краткое руководство по настройке. Написал эту доку Pavel A. Laskin, 2:5070/138. http://www.jamnet.lgg.ru/uht/docs/uhtd.zip (в ней могут быть ошибки) По последним данным, этой доки на сайте уже нет, так что требуйте ее от автора по фидо или ICQ. Также есть здесь: ftp://ftp.grumbler.org/pub/HUSKY/uhtd.rar A: (SD) Документация на русском несколько отстает от развития тоссера, а бывает что и не развивается вовсе. К примеру, в июле 2002 года уже удален сайт http://hpt-tosser.narod.ru (редиректится на сайт некоей фирмы) Действует летом 2002 года такая ссылка: http://andrews42.mailru.com/ (Автор: Andrew Sagulin 2:6037/1.28 andrews42@mailru.com) В ближайшем будущем будем выкладывать документацию на разных языках (русский и английский - а если будут добровольцы-переводчики - то и на других) на http://sourceforge.net/projects/husky, раздел "Документация" (точный URL: http://sourceforge.net/docman/?group_id=1332) /------/ [27] Q: Как разделить настройки hpt, htick и других программ? A: if "[module]"=="hpt" RobotsArea tossermail Origin MyStation elseif "[module]"=="htick" RobotsArea tickermail Origin FREQ allowed at 00:00-04:00 else RobotsArea netmail Origin Reports generator endif /------/ [28] Q: Почему нельзя допаковывать почту в FileBox? A: (PG) Q: Нормальные мейлеры лочат файл при передаче. И что, помогает? Вот залочил он файл, передал, потом хочет удалить, для этого убирает лочку, закрывает, а тут в него допаковали. В лучшем случае удаление не получится по причине открытия файла тоссером, и будут дупы. В худшем - удаление произойдет после допаковки, и будут потери. Ты считаешь это нормальным для тоссера? Хорошо, что авторы hpt так не считают. Q: Перед допаковкой переносим бандл в какой-нибудь userdefined каталог, Q: допаковываем и только после этого кладём его обратно в бокс... Ага. И нарываемся на unix (в частности, тоссер под виндой, outbound на сетевом диске) - открытый передающийся файл нормально переносится в другой каталог, потом см. выше. (SD): Та же ситуация на NTFS под Windows NT (на FAT - так же, как и под DOS/W9x) В десятый раз повторяю: корректная допаковка arcmail при файлбоксах невозможна. A (SD): Поправка: допаковка невозможна во время сессии и возможна между сессиями. Остается найти способ гарантированно определить наличие сессии и запретить мэйлеру трогать файлы в боксе, пока работает тоссер. Например, если выполняются условия: - мэйлер работает с BSO (не знаю насчет флагов в ASO); - совпадают аутбаунды тоссера и мэйлера; - мэйлер, если видит на линка бзишку, не звонит ему и не отдает ему почту при входящем звонке (Это главное!). Алгоритм: тоссер перед паковкой проверяет наличие в аутбаунде BSY или CSY на линка; если ни одного нет - выставить на линка BSY и допаковывать; если же бзишка или ксишка имеется (идет сессия или дозвон) - паковать в новый бандл во временном каталоге и по завершении перемещать в файлбокс. При этом преимушество файлбоксов сохраняется (постановка файла на отправку во время сессии). Во время сессии допаковывать нельзя из-за невозможности предупредить удаление неотправленного файла. Соответственно, если мэйлер работает с файлбоксом в обход BSO/*.BSY, допаковку делать нельзя - поскольку при этом невозможно узнать, идет ли сессия, и невозможно предотвратить ее начало. Стоит ли реализовывать такой алгоритм - большой вопрос, учитывая нежелание сисопов читать документацию и разнообразие мэйлеров. /------/ [29] Q: Не могу настроить winzip! A: (mk,SR,ML) unpack "pkzip25 -ext -over=all -nozip -nofix $a $p" 0 504b0304 pack zip pkzip25 -add -max -dir=none -nozip $a $f И никаких кавычек после pack! /------/ [30] Q: А как паковать netmail? A: (ML) BSOpack by Dmitry Sergienko. Входит в состав husky. A: (PG) В hpt >=1.1 прописать для линка "arcNetmail", и тогда, если флейвор совпадает с EchoMailFlavour, netmail будет паковаться в бандлы вместе с echomail. /------/ [31] Q: Как у hpt отрубить внутренний трекер нетмэйла? A: (SD) Паковка нетмэйла не будет производиться при выполнении одного из следующих условий: 1. В конфиге нет ни одной стpоки route. 2. Не запускать hpt pack; И если есть базы сообщений (т.е. не passthrough) - указать при этом в конфиге packNetmailOnScan off; Первое условие проще :) /------/ [32] Q: Как ускорить работу тоссера? A: (ML) Рассмотрим пока только один случай. Если у вас NT+NTFS и много линков, имеет смысл перенести tempinbound и tempoutbound на FAT, так как hpt открывает/закрывает pkt для каждой msg, а такие операции на файловой системе FAT происходят гораздо быстрее. Для hpt >=1.2 неактуально, поскольку pkt при тоссинге открывается один раз. Q: У меня нет FAT. A: (sv) Попробуй отключить (в реестре) запись метки последнего доступа к файлам: HKEY_LOCAL_MACHINE->SYSTEM->CurrentControlSet->Control->FileSystem cоздаём ключ типа DWORD под названием NtfsDisableLastAccessUpdate, потом ставим его в 1, и всё. Может, поможет. A: (aim) Если HPT собран с поддержкой DLL, можно их запихнуть в список загружаемых при старте системы, но не у всех же XP... Кто не знает, как это сделать: regedit.exe -> HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SessionManager\KnownDLLs Создаете два строковых параметра 'smapi' со значением 'smapimvc.dll' и 'fidoconfig' со значение 'fconfmvc.dll' и перезагружаете систему. Там же можно поудалять ненужные DLL, которые не используете -- этим вы освободите памяти. Да, DLL вы должны положить именно в каталог '%SystemRoot%\system32' ! /------/ [33] Q: Зачем переменную окружения [module] нужно брать в кавычки? A: (PG) Дело в том, что иногда [module] не определен (утилит, использующих fidoconfig, много, и не все определяют [module]), и в этом случае конструкция if [module]==hpt раскроется в if ==hpt что, скорее всего, является ошибкой. А if ""=="hpt" ошибкой не является. Hу это как в батниках и в sh-скриптах. Можно вместо кавычек писать нечто вроде if x[module]==xhpt но IMHO кавычки эстетичнее. /------/ [34] Q: А как собрать версию с поддержкой Perl под Win32? A: (DK) Hам потребуются: MSVC6/MSVC7 (Watcom/BCC не подойдет), ActivePerl, (+Texi2Html для документации) и архивы с исходниками (либо с CVS) Распаковываем архивы с исходниками smapi, fidoconf и hpt (это обязательный минимум), архивы должны быть от одной даты. затем в hpt\make\make\makeperl.mvcdll правим PERL_DIR на тот каталог, где поставлен ActivePerl и собираем сначала smapi (cd smapi, nmake -f makefile.mvcdll), fidoconf (аналогично), затем hpt (cd hpt nmake -f makeperl.mvcdll), если остальные утилиты собирать, то через makefile.mvcdll. Получим dll-версии всего добра. /------/ [35] Q: А можно как-нибудь получать диффы на e-mail/netmail? A: (DK) Можно, https://lists.sourceforge.net/lists/listinfo/husky-diffs - в этой рассылке распространяются диффы, пожатые gzip. После распаковки цеплять их надо с помощью patch -p0 < file.diff (patch.exe - GNU Patch от CygWin'а или из binutils/win32) A: (SD) С полным перемещением на Sourceforge.Net создан список рассылки диффов текстом (удобно отслеживать изменения): https://lists.sourceforge.net/lists/listinfo/husky-cvs Кроме того, есть CVS и доступ к нему из браузера: http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/husky/ /------/ [36] Q: Как победить ошибки компиляции под Red Hat и ASP Linux? A: (PG) Если стянуть с gnu.org и поставить там нормальный gcc (2.95.x или 3.xx) - собирается. А рэдхэтовским или аспшным хаком 2.96 - никто и не обещал. Можно посмотреть на http://www.gnu.org/software/gcc/releases.html - нет такой версии, после 2.95.x сразу идет 3.0. A: (SD) В compiler.h на этот счет сделан вывод предупреждения: warning Latest GNU C branch 2 is 2.95.*. Your version is not GNU C and not supported. You may use it for your risk. warning Download and install GNU C release from www.gnu.org only, please. /------/ [37] Q: Компилятор под FreeBSD ругается: warning: mktemp() possibly used unsafely; consider using mkstemp() A: (SD, PG) В переводе это сообщение звучит так: "Предупреждение: функция mktemp(), возможно, используется небезопасным образом; предпочтительно использовать mkstemp()". mktemp() генерирует имя временного файла, mkstemp() к тому же создает этот файл. Смысл предупреждения состоит в том, что после завершения mktemp() сгенерированное имя файла может оказаться занятым. Вот только есть одна тонкость: mktemp() - стандартная функция, а mkstemp() - нет (в некоторых реализациях встречается еще и mkstemps() - создание файла с суффиксом). Ради сохранения переносимости кода в husky используется mktemp() с соответствующими проверками. A: (PG) На то он и warning, что предупреждает о _возможной_ (но совсем не обязательной) ошибке (_possibly_ used unsafely). Так вот, в данном случае ошибки нет, все так и задумано, и warning можно игнорировать. Отличие его от других warning-ов в том, что его не так просто обойти или отключить, как в других случаях (сделать явное преобразование типов или вместо "if (a=b)" написать "if ((a=b)!=0)"). Предложенный вариант использования mkstemp() мало того, что непереносим, но еще и попросту не подходит в нашем случае, т.к. эта функция не позволяет создавать временный файл с определенным расширением. Все написано совершенно корректно, и менять код только ради того, чтобы убрать warning, IMHO смысла нет. /------/ [38] Q: Почему hpt не понимает стандартный эхолист, к-рый ходит по фэхе? A: (SD) "Стандартный", говоришь? Покажи FTS, FSP или хотя бы FSC, FRL. Этот эхолист прекрасно конвертируется скриптом в формат *bone: "AREATAG description". Напpимеp на авке 1 стpока :) Вот два _работающих_ примера (AWK и PERL): awk -F "," '{printf "%-30s %s\n",$2, $3;}' echobone.txt perl -e 'while(<>){split /,/; printf "%-30s %s\n",$_[1],$_[2];}' Введение в cvs Точнее: http://alexm.here.ru/cvs-intro-rus/cvs-intro-rus.html /------/ [43] Q: Как CVS заставить работать через прокси? A: (SD) Можно использовать любую программу туннелирования TCP через HTTP, например, httport (http://www.htthost.com) /------/ [44] Q: Почта не тоссится из-под крона, а при запуске вручную работает. A: (SD) Дело в переменной PATH (пути поиска исполняемых файлов). Решения: * прочитать man crontab и описать в crontab переменную PATH с нужными путями; * указать в конфиге в строках Pack и Unpack полные пути к архиваторам. /------/ [45] Q: На CVS куча каталогов ("модулей"): что в них, и кто ими занимается? A: (SD,MC,DS) Вот краткие описания модулей и список разработчиков, которым стоит присылать патчи и багрепорты. Если указан ведущий модуля - лучше патчи прылать ему, но можно и остальным разработчикам, если не указан - присылайте патчи любому из списка. Если никто не указан - модуль не развивается. Списки отсортированы по имени. smapi: библиотека для работы с базами сообщений (здесь же некоторые функции общего назначения, будут перенесены в huskylib) программисты: Max Chernogor, Pavel Goulchuck, Stas Degteff, Dmitry Sergienko fidoconf: библиотека для работы с конфигом (здесь же некоторые функции общего назначения, будут перенесены в huskylib) программисты: Max Chernogor, Pavel Goulchuck, Stas Degteff, Dmitry Sergienko bsopack: утилита для упаковки pkt в arcmail; функциональность для нетмэйла реализуется в hpt (см. токен arcNetmail) ведущий модуля: Dmitry Sergienko carc: утилита для распаковки arcmail; после расширения синтаксиса токена Unpack стала не нужна не поддерживается cfroute: упаковщик-роутер нетмэйла не поддерживается diskpoll: local mailer: для "отправки" и "приема" писем внутри одной системы (например, для локального пойнта); большая часть функциональности реализуется через файлбоксы hpt и htick emailpkt: ftn-over-email мэйлер: для отправки и приема фидошных файлов и почты по email ведущий модуля: Stas Degteff fastlst: компилятор нодлиста V7+ ведущий модуля: Gerrit K╪hn ffma: FreeFidoMessageAssistant не поддерживается fidostat: Analyser for Binkd Log Files gff: Graphisches Fido Frontend fuer Linux не поддерживается homepage: зеркало http://husky.sf.net и исходники страниц hpt: тоссер ведущий модуля: Max Chernogor hptkill: программа для отписки неиспользуемых эхоконференций и удаления баз сообщений ведущий модуля: Max Chernogor hptsqfix: программа для починки базы сообщений (program to rebuild index and some info in squish message bases) hptutil: работа с базами сообщений: сортировка, отмена удаления, ... hptzip: библиотека, реализующая упаковку и распаковку arcmail ведущий модуля: Dmitriy Kazimirow (2:5004/73) будет использоваться в будущем hpucode: программа для извлечения файлов из базы сообщений ведущий модуля: Max Chernogor htick: тикер (fileechoprocessor) ведущий модуля: Max Chernogor htpl: библиотека работы с шаблонами будет использоваться в будущем huskmisc: набор утилит: nmcopy - copies netmails to homedirs poll - create a poll to some link request - create a FREQ to some link send - send a file to some link tolower - lowercase file name huskybse: базовая документация и примеры ведущий модуля: Stas Degteff huskylib: библиотека общего назначения: компиляторозависимые определения и функции общего назначения будет использоваться в будущем (после релиза 1.4) huskypnt: Комплект программ husky для пойнта с минимальными настройками (point packet that bases on software of the husky project.) kfe: Kde Fido Editor не поддерживается lxtrack: трекер нетмэйла, полный аналог netmrg не поддерживается mpost: постинг файлов в конференции или нетмэйл msged: редактор сообщений msgidd: демон для генерации уникального msgid не поддерживается (недоделан) nltools: сборщик нодлистов из диффов и обновлений pktapi: библиотека доступа к pkt не используется pntstr: автоматическая обработка пойнтлистовых строк ведущий модуля: Stas Degteff progate: internet-fidonet gate не поддерживается promknl: сборщик-чекер нодлиста из сегментов не поддерживается protick: тикер (fileechoprocessor) не поддерживается sqpack: программа для удаления старых сообщений и сжатия баз ведущий модуля: Max Chernogor test: Служебный модуль: тестирование компиляторов на предпределенные макросы, тестирование возможностей CVS и т.п. umapi: библиотека "universal message API" не используется не поддерживается /------/ [46] Q: Указал для запуска программ относительные пути - программы не работают! A: (DS) При использовании относительных путей они вычисляются относительно текущего каталога (вида '..\' или '../') и относительно корня (в DOS-based системах вида '\'). никто не может гарантировать, что в процессе работы текущий каталог не изменится, посему возможны самые непредсказуемые результаты. Для удобства предлагаются к использованию конструкции с переменными. например: set basedir="c:\fido" protInbound [basedir]\inbound inbound [basedir]\inbound\unsecure outbound [basedir]\outbound EchoArea ru.husky [basedir]\msgbase\ru.husky -b Squish ... либо basedir можно задавать не в фидоконфиге, а в шелле перед запуском программ, работающих с помощью fidoconfig'а. /--------------------------------------------------------------------------/ [47] Q: Отпускается ли lockfile пpи запуске внешних пpиложений (аpхиватоpов)? A: (DS) Пpи запуске внешних пpиложений не отпускается. Он отпускается по окончании работы. /--------------------------------------------------------------------------/ [48] Q: При использовании filter.pl hpt.exe (win32) не находит модули *.pm... A: (AL) Подробное описание. При попытке подключить filter.pl в конфиге hpt при запуске выдаёт сообщение вида: Can't locate lib.pm in @INC (@INC contains: e:\husky .) at e:\husky\filter.pl line 2. BEGIN failed--compilation aborted at e:\husky\filter.pl line 2. При этом в filter.pl в строке 2 содержится следующее: use lib "d:/scripts/perl"; Решение. Hужно либо инсталлировать весь perl (пакет ActiveState Perl), либо использовать только perl56.dll (perl58.dll). Если установлен весь perl, то и perl56.dll (perl58.dll) в системе должна быть только одна: в каталоге bin там, куда установлен пакет. Иначе будет возникать подобная ошибка. Если ActiveState Perl не установлен, а используется лишь perl56.dll (perl58.dll), то нельзя использовать большинство модулей (подключаемых директивой "use " в скрипте filter.pl), т.к. они попросту отсутствуют в системе. /--------------------------------------------------------------------------/ [49] Q: Чем отличается работа с lockfile в режиме AdvisoryLock? A: (SD) В обычном режиме hpt проверяет существование lockfile, и, если он существует, hpt завершается с диагностикой: cannot create new lock file: <имя файла> lock file probably used by another process! exit... Этот режим рекомендуется использовать в случае, когда в режиме advisorLock hpt не может сделать блокировку файла. Но этот режим опасен тем, что, при аварийном завершении hpt (например, вслучае неожиданного отключения электропитания) lockfile останется и hpt не будет работать. Поэтому в процессе загрузки операционной системы нужно предусмотреть удаление lockfile. (Также имеет смысл удалить все файлы "*.bsy" и "*.csy" из всех подкаталогов outbound и удалить прочие файлы-флаги, индицирующие работу программ.) Удаление этих файлов нужно проводить до собственно запуска любых фидо-программ чтобы исключить удаление файла, только что созданного работающей программой. Этого недостатка лишён режим AdvisoryLock. При работе в этом режиме lockfile блокируется работающей программой и вторая копия hpt обнаружит, что файл блокирован. Если же экземпляр hpt, который создал файл, был завершён аварийно, операционная система снимет блокировку (в случае перезагрузки - не поставит её заново) и новый экземпляр hpt заблокирует файл беспрепятственно. Дополнительно к этому, в режиме AdvisoryLock hpt делает указанное число попыток выполнить блокирувку файла с паузой в одну секунду между попытками. Такое поведение позволяет выполнить указанное второму экземпляру hpt действие на достаточно быстром компьютере (если первый экземпляр hpt успевает отработать за время AdvisoryLock секунд). Механизм блокировки - общий для всех программ HUSKY, поэтому те же замечания относятся и к htick. /--------------------------------------------------------------------------/ [50] Q: Как заставить hpt отправлять назад письма на несуществующих поинтов? A: (AG) ======== config route no-pack 2:5059/37.* ======== filter.pl sub route() { if ($to =~ m!^2:5059/37\.! && defined($links{$to})) { $flavour = HLD; return $to; } return ''; } ======== Это присылал мне ещё в старые, добрые времена val khokhlov /--------------------------------------------------------------------------/ Этот FAQ составлен на основе вопросов, задаваемых подписчиками эхоконференции RU.HUSKY.