Highly Portable Tosser FAQ
(версия от 17.10.2002 для hpt-stable)
Постарайтесь прочесть ВЕСЬ FAQ перед тем, как задавать вопросы в конференции,
особенно, если Вы подозреваете, что Ваш вопрос - один из регулярно задаваемых.
Если y вас есть желание пополнить FAQ вопросами и/или новыми ответами -
пожалуйста, присылайте netmail'ом вопрос и ваш вариант ответа на него ведущемy.
Ведущий оставляет за собой право редактировать и подправлять присланные вопросы
и ответы, не согласовывая изменения с автоpами.
Ведущий FAQ - Max Levenkov, 2:5000/362.117, ml(you_know)woland.iae.nsk.su
(в его отсутствие: Stas Degteff, 2:5080/102)
Новые или измененные вопросы помечены знаком ">".
>Q1. Где взять свежие версии?
>Q2. А где можно стянуть исходники?
Q3. Что означают буквы в скобках в начале ответа?
Q4. Кому присылать патчи?
>Q5. Кому прислать и как правильно оформить багрепорт?
Q6. В чем заключается поддержка перла и как его использовать?
Q7. Как пpописать флаги для совместной pаботы golded & hpt?
Q8. Как линковать только те арии, в которые пришли свежие сообщения?
Q9. Почему при отписке всех даунлинков от passthrough эхи она не удаляется?
Q10. Как удалять passthrough эхи без трафика?
Q11. Куда пропадает почта???
Q12. Так как насчет фичи "X"?
Q13. Что такое HighWater?
Q14. Почему JAM временами сканируется только через "hpt scan -w"?
Q15. Почему на одну и ту же эху к аплинку сфорвардилось много запросов?
>Q16. Как постить через pipe под win32?
Q17. А как собирать latest версии под win32?
>Q18. Чем отличаются линковщики?
Q19. Как работает удаление эх через areafix?
Q20. Кaк поинтам ставить на некоторые эхи Read Only?
Q21. В чем разница между версиями cygwin и mingw32?
>Q22. А чем фиксить базы если с ними действительно траблы?
Q23. Отсутствие доки сильно мешает! (Где взять документацию на русском?)
>Q24. Как разделить отчеты от areafix и filefix?
Q25. Почему нельзя допаковывать почту в FileBox?
Q26. Не могу настроить winzip!
Q27. А как паковать netmail?
Q28. Как у hpt отрубить внутренний трекер нетмэйла?
Q29. Как ускорить работу тоссера?
Q30. Зачем переменную окружения [module] нужно брать в кавычки?
>Q31. А как собрать версию с поддержкой Perl под Win32?
>Q32. А можно как-нибудь получать диффы на e-mail/netmail?
Q33. Как победить ошибки компиляции под Red Hat и ASP Linux?
>Q34. Компилятор под FreeBSD ругается: warning: mktemp() possibly used unsafely
>Q35. Как связаться с разработчиками?
/---------------------------------------------------------------------/
>[1] Q: Где взять свежие версии?
A: (ML, SR, SD)
1. http://sourceforge.net/projects/husky, страничка "Файлы" (самые свежие
выставлены на главной)
Исходники: http://husky.sourceforge.net/cvs2/stable
или на CVS, инструкция тут: http://husky.sourceforge.net/cvs.html
Debian packages: http://husky.sourceforge.net/debian
2. husky пакет под BeOS - BeFTN - живет на http://walther.sourceforge.net/,
http://www.qube.ru (Собирает Иван Матвеев) и
http://www.bebits.com (Paul Galashin),
3. Бинарники для win32 - в файлэхе NFTN, архив на Демосе:
ftp://ddt.demos.su/pub/fileecho/NFTN/
4. Бинаpники DPMI, OS/2, Win32, Win32-dll-Perl:
http://hpt-bin.boom.ru/ (собирает Andy U. Luk'yanov 2:5001/7)
5. Для Perl версии может понадобиться файл MSVCRT.DLL
Взять его можно тут: ftp://ftp.microsoft.com/softlib/mslfiles/msvcrt.exe
/------/
>[2] Q: А где можно взять исходники?
A: (ML,SD)
1. current за несколько дней: http://husky.sourceforge.net/cvs2/current
2. stable за несколько дней: http://husky.sourceforge.net/cvs2/stable
3. На любой момент - с CVS, инструкция: http://husky.sourceforge.net/cvs.html
и https://sourceforge.net/cvs/?group_id=1332
4. ftp://ddt.demos.su/pub/fileecho/HUSKY/ - файлэха HUSKY. Сорцы раз в два
месяца, diff'ы постоянно.
/------/
[3] Q: Что означают буквы в скобках в начале ответа?
A: (ML)
Это сокращения от имен людей, написавших ответы:
ML - Max Levenkov, 2:5000/117
PG - Pavel Gulchouck, 2:463/68
VS - Victor Sergienko. 2:464/118
SR - Serguei Revtov, 2:5021/11.10
FL - Fedor Lizunkov, 2:5020/960
VL - Vitaliy Lovky, 2:463/1113
TE - Tobias Ernst, 2:2476/418
DK - Dmitriy Kazimirow, 2:5004/73
mk - mihail kapitanov, 2:465/239
sv - sergei volodchenkov, 2:5030/1197.10
aim - andrey i mavlyanov, 2:5030/1159
SD - Stas Degteff, 2:5080/102
/------/
[4] Q: Кому присылать патчи?
A: (ML,SD)
Любому разработчику, лучше ведущему модуля, для hpt - Max Levelkov (адреса
см. в ответах 3 и 33).
Требования к патчам:
1. Если добавлен новый token(**), нужно:
а) добавить его в fidoconf/doc/keywords.hpt
б) задокументировать в hpt/doc/hpt.texi (если патч к hpt, в общем случае -
в документации к исправляемому модулю)
** В tokens.h в массиве parseline_tokens соблюдайте сортировку токенов!
2. Формат такой: $ diff -r -c -N hpt.orig hpt > hpt.diff
где hpt.orig и hpt - каталоги с исходным и переделанным hpt.
3. Обязательно запаковать архиватором (tar+gzip, zip, rar - в порядке
предпочтения)
4. Сделать описание вида (в одну строку, пусть даже она будет больше экрана
в несколько раз):
new feature added [patch by Vasya Pupkin]
и эту строку вставить в текст письма (не в файл!).
5. Каждому модулю (fidoconf, hpt, smapi, ...) - свой патч.
Перед тем, как что-то делать, лучше посоветоваться с ведущим модуля: обсудить
варианты решения проблемы, названия новых ключевых слов конфига и т.д.
/------/
[5] 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)
- суть ошибки
- приложить информативное место в логе при включенных ВСЕХ уровнях
протоколирования - т.е. Loglevels 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabc...
(например с десяток строк перед прерыванием работы программы)
начиная с hpt 1.3 можно указывать диапазон уровней: Loglevels 0-z
- если непонятно поведение - приложить информативную часть конфига.
Багрепорты предпочтительно публиковать в bugtrack - там есть возможность
оперативно передавать их разработчикам.
Кроме багрепортов, на sf.net имеется такой же сервис для поддержки
пользователей и предложений по развитию.
/------/
[6] Q: В чем заключается поддержка перла?
A: (PG)
Возможность сборки с libperl и выполнение перловых функций (хуков) из hpt в
разных случаях. Например, при обработке письма во время тоссинга, при
сканировании, принятии решения о роутинге, 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), str - строка. Например 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-полное совпадение), может быть использована для реализации
нечеткой карбонки.Например: 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 - лучше смотреть их описание в документации.
/------/
[7] Q: Как пpописать флаги для совместной pаботы golded & hpt?
A (SR):
echoTossLog - файл, содеpжащий список эх, в котоpые (годедом) написал новые
мессаги, по команде 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
/------/
[8] Q: Как линковать только те арии, в которые пришли свежие сообщения?
A: (SR)
Нужно прописать в конфиг следующее:
ImportLog \fido\flags\import.log
LinkWithImportLog kill
Причем это работает как для hpt link, так и для hptlink.
/------/
[9] Q: Почему при отписке всех даунлинков от passthrough эхи она не удаляется?
A: (FL)
Условие - эха в пастру, на нее подписаны два линка, с одного из которых эта эха
и тянется. Предпоследний линк отписывается от эхи, последнему линку посылается
письмо об отписке от данной эхи.
Теперь представь, что от эхи мы уже отписались, и тут она сваливается с аплинка
(ведь он мог успеть натоссить еще до нашей отписки). Так вот, если эха осталась
прописанной в конфиге, то она прописана как пастру и никуда не пошла. Если же
эху уже вынесли из конфига, то она создастся вновь (ведь это аплинк, скорее
всего с него разрешен автокрейт, иначе это все бы не работало), и не факт, что
в пастру...
A: (SD)
Удалится со временем - если периодически запускать hpt qupd (hpt >=1.2)
/------/
[10] Q: Как удалять passthrough эхи без трафика?
A: (SR)
В hptkill 1.04 появится ключик:
-p - find & kill passthrough echoareas with <=1 links
Навеpное наиболее логично будет использовать стpоку вида:
hptkill -p -d -n
хотя можно и маску аpий указать - из них выбеpет пастpушные с 1 линком...
Т.е. ключ -p заставляет выбиpать только пастpушные аpии с одним линком и, в
случае пустого списка аpий, подставляет "*".
A: (SD)
hpt начиная с версии 1.2 корректно удаляет эхи без линков - поэтому можно
просто отписать от такой эхи всех (выполнить hpt afix <адрес> -ДОХЛАЯ.ЭХА
для каждого подписанного линка).
/------/
[11] Q: Куда пропадает почта???
A: (ML)
Есть варианты:
1. У линка нет прав на запись в эху. Почта валится в бэды. Посмотри на REASON.
Вероятно, что эха просто не доступна по группе. Поставь линку AccessGrp или
PublicGroup для всех. Запусти tparser, найди эху, нужного линка и убедись,
что есть права на запись.
2. Нет места на диске. Для squish и msg арий - почта переименуется в .err
(библиотека вернет ошибку), но если база JAM, то пакеты потеряются
(протоссятся без ошибок). Будьте осторожны!
Для проверки свободного места пропишите в конфиг следующее:
MinDiskFreeSpace 10
3. Если у вас нода, а линки жалуются, что пропадает почта, можно поставить
-debug в параметрах EchoArea. Так можно отследить, что сообщение с нужным
MSGID записано в pkt файл для линка. А 19-08-01 я добавил еще имя pkt файла.
PG> В JAM при переполнении диска почта теряется только в smapi до 2001/12/17.
/------/
[12] 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
/------/
[13] Q: Что такое HighWater?
A: (ML)
HighWater - это такой счетчик; после сканирования он ставится в конец базы,
чтобы не сканировать заново всю базу, а только новые мессаги, начиная с
этого счетчика.
/------/
[14] 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".
/------/
[15] 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!"
/------/
[16] Q: Как постить через pipe под win32?
A: (SR)
В win32 пайпы делаются через файлы и программы цепочки выполняются сугубо
последовательно. В то-же время вот такая команда выполняется нормально:
type T.BAT |hpt\hpt post -nf "Daemon" -s "subject" -e "my.robot" -
Так что если будешь пускать их по отдельности (perl script.pl | hpt ...),
должно все нормально работать.
/------/
[17] Q: А как собирать latest версии под win32?
A: (DK)
1. Распаковываешь архив (если нету tar/gzip, то либо www.cygnus.com, либо
www.winzip.com).
2. Компилятор. Реально под Win32 надо взять Watcom (MSVC, BCC) либо
поставить Cygwin и запускать (n)make -f makefile.(wcw|mvc|bcw|cyg)
3. Распаковать и собрать сначала SMAPI - получишь smapi(wcw|mvc|bcw).lib
или libsmapicyg.a, затем fidoconf - получишь fidoconf(wcw|mvc|bcw).lib
или libfidoconfigcyg.a + несколько утилиток (типа tparser).
Затем компилируешь любую из остальных программ.
4. _Все_ собираемые программы/библиотеки должны быть от одной даты (если
smapi/fidoconf - latest от 9.04.2001 то совать туда, например, hpt от
1.1.2001 чревато).
5. Чтобы сгенерить html-документацию, надо
PERL (напр. www.activestate.com, www.perl.com) и
Texi2Html (http://www.mathematik.uni-kl.de/~obachman/Texi2Html/Distrib) либо
makeinfo (напрмер из Cygwin)
/------/
[18] 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/
A: (PG)
Разные алгоритмы, разные авторы, разные возможности... Выбирай то, что тебе
больше нравится.
"hpt link" умеет линковать только по msgid/reply, всегда строит дерево. Свежий
из девелоперской ветки совсем шустро линкует jam.
hptlink умеет линковать по сабжам, может делать обычную цепочку, а не дерево.
/------/
[19] 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.
/------/
[20] 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. Только там можно и напортачить с настройкой.
/------/
[21] Q: В чем разница между версиями cygwin и mingw32?
A: (PG)
mingw32 (это который используется при -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,
т.е. этот вариант удобно использовать при отладке (для отлова плавающих
глюков).
Поправьте, если я в чем-то ошибаюсь.
Страница12 | Предыдущая | Следующая