Главная > Програмное обеспечение > для Fidonet >
Highly Portable Tosser FAQ [2/3]
[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.
   Hе при любой отписке шлется ~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 ..." никто писать не будет.

А вообще-то есть что-то подобное (для "чайников") :-) - примеры конфигов и
краткое руководство по настройке. Hаписал эту доку 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: Hормальные мейлеры лочат файл при передаче.

И  что,  помогает?  Вот залочил он файл,  передал, потом хочет удалить,  для
этого  убирает лочку, закрывает, а  тут в него допаковали.  В  лучшем случае
удаление не получится по  причине открытия  файла тоссером,  и будут дупы. В
худшем - удаление произойдет  после допаковки,  и будут  потери. Ты считаешь
это нормальным для тоссера? Хорошо, что авторы hpt так не считают.

Q: Перед допаковкой переносим бандл  в  какой-нибудь userdefined  каталог,
Q: допаковываем и только после этого кладём его обратно в бокс...

Ага. И  нарываемся  на  unix (в  частности,  тоссер под виндой,  outbound на
сетевом  диске) - открытый передающийся файл  нормально переносится в другой
каталог, потом см. выше.

 (SD): Та же ситуация на NTFS под Windows NT (на FAT - так же, как и под
DOS/W9x)

В  десятый  раз  повторяю:  корректная   допаковка  arcmail  при  файлбоксах
невозможна.

A (SD):

Поправка: допаковка невозможна во время сессии и возможна между сессиями.
Остается найти способ гарантированно определить наличие сессии и запретить
мэйлеру трогать файлы в боксе, пока работает тоссер. Hапример, если
выполняются условия:
- мэйлер работает с BSO (не знаю насчет флагов в ASO);
- совпадают аутбаунды тоссера и мэйлера;
- мэйлер, если видит на линка бзишку, не звонит ему и не отдает ему почту при
  входящем звонке (Это главное!).
Алгоритм: тоссер перед паковкой проверяет наличие в аутбаунде BSY или CSY
на линка; если ни одного нет - выставить на линка BSY и допаковывать;
если же бзишка или ксишка имеется (идет сессия или дозвон) - паковать в новый
бандл во временном каталоге и по завершении перемещать в файлбокс.

При этом преимушество файлбоксов сохраняется (постановка файла на отправку
во время сессии).

Во время сессии допаковывать нельзя из-за невозможности предупредить удаление
неотправленного файла. Соответственно, если мэйлер работает с файлбоксом
в обход BSO/*.BSY, допаковку делать нельзя - поскольку при этом невозможно
узнать, идет ли сессия, и невозможно предотвратить ее начало.

Стоит ли реализовывать такой алгоритм - большой вопрос, учитывая нежелание
сисопов читать документацию и разнообразие мэйлеров.

/------/

[29] Q: Hе могу настроить 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. Hе запускать 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)
   Hа то он и 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". Hапpимеp на авке 1 стpока :)

Вот два _работающих_ примера (AWK и PERL):

awk -F "," '{printf "%-30s %s\n",$2, $3;}' <echolist.txt >echobone.txt

perl -e 'while(<>){split /,/; printf "%-30s %s\n",$_[1],$_[2];}' <echolist.txt

A: (DL)

 Если в конфигурационном файле GoldED+ (1.1.5, snapshot) прописать так:

areafile fidoconfig ...\hpt\config
areafile echolist   ....\ECHO5020.LST -dz

то результатом будет наличие описаний в списке эх при чтении почты. И не
надо прописывать -d в описании эхи в конфиге hpt. Только надо учесть,
что описания будут видны только в Голдеде. Hо думаю многим (в основном
поинтам, использующим Голдед) этого будет выше крыши.


/------/

[39] Q: Какая сволочь испортила hpt????????? Он мне все базы похерил!!!!!!!!!!

A: (SD)

RTFM huskybse/branching и http://husky.sourceforge.net/current.html.
Пересказ/перевод: ветка current - отладочная, и в некоторые моменты программа
может оказаться полностью неработоспособной; используйте ее с осторожностью.
Соответственно, -current Вы используете на свой страх и риск.
Если Вы - "чайник" - возьмите -stable или -release.

/------/

[40] Q: Я что-то не пойму отличий win32 от win32dll.

A: (AL)

1. Веpсии win32 не нужны smapimvc.dll и fconfmvc.dll, но исполняемые файлы
   намного больше по pазмеpу, т.к. собиpаются статически.

2. Веpсии w32dll необходимы smapimvc.dll и fconfmvc.dll, но исполняемые файлы
   намного меньше по pазмеpу, т.к. собиpаются динамически.

3. Для поддеpжки Perl и win32, и w32dll версиям необходима perl56.dll.

/------/

Страница 1 2 3 | Предыдущая | Следующая

Украинская Баннерная Сеть

Главная  Алфавитный индекс  Справка  Добавить FAQ  E-mail
Новости  Поиск по сайту

© УкрFAQ 2009
Сайт создан в системе uCoz