From 142f5b69433c1b88e36a39f0abf69223316449d3 Mon Sep 17 00:00:00 2001 From: Mercurial Repos Date: Fri, 15 May 2009 22:01:56 +0200 Subject: [PATCH 01/42] Converted from CVS --- .hgignore | 11 + AUTHORS | 60 + COPYING | 340 + CRON.sh | 93 + ChangeLog | 116 + ChangeLog_1998 | 1393 ++++ ChangeLog_1999 | 1602 +++++ ChangeLog_2000 | 668 ++ ChangeLog_2001 | 933 +++ ChangeLog_2002 | 973 +++ ChangeLog_2003 | 457 ++ ChangeLog_2004 | 889 +++ ChangeLog_2005 | 451 ++ ChangeLog_2006 | 184 + ChangeLog_2007 | 277 + DEBUG | 31 + Makefile | 164 + NEWS | 0 README | 28 + README.Gentoo | 19 + README.Ubuntu | 28 + README.developer | 55 + SETUP.sh | 669 ++ TODO | 138 + UPGRADE | 18 + aclocal.m4 | 149 + checkbasic | 50 + configure | 11607 +++++++++++++++++++++++++++++++++ configure.ac | 406 ++ cpuflags | 140 + examples/.cvsignore | 1 + examples/Makefile | 145 + examples/footer.txt | 9 + examples/header.txt | 28 + examples/menus-de.tar | Bin 0 -> 61440 bytes examples/menus-en.tar | Bin 0 -> 61440 bytes examples/menus-es.tar | Bin 0 -> 51200 bytes examples/templates-de.tar | Bin 0 -> 81920 bytes examples/templates-en.tar | Bin 0 -> 81920 bytes examples/templates-es.tar | Bin 0 -> 81920 bytes examples/templates-nl.tar | Bin 0 -> 81920 bytes examples/txtfiles-de.tar | Bin 0 -> 40960 bytes examples/txtfiles-en.tar | Bin 0 -> 40960 bytes examples/txtfiles-es.tar | Bin 0 -> 40960 bytes html/.cvsignore | 1 + html/Makefile | 125 + html/basic.html.in | 287 + html/dist.html | 104 + html/doors.html | 229 + html/errcodes.html | 83 + html/faq.html | 1502 +++++ html/flow.html | 180 + html/ftsc/index.htm | 97 + html/images/b_arrow.png | Bin 0 -> 1028 bytes html/images/connec.png | Bin 0 -> 1049 bytes html/images/domains.png | Bin 0 -> 5379 bytes html/images/doors.png | Bin 0 -> 12601 bytes html/images/doors2.png | Bin 0 -> 12609 bytes html/images/dream1.png | Bin 0 -> 119883 bytes html/images/dream2.png | Bin 0 -> 108143 bytes html/images/dream3.png | Bin 0 -> 115790 bytes html/images/e_menu.png | Bin 0 -> 10489 bytes html/images/emareas.png | Bin 0 -> 13897 bytes html/images/emgroup.png | Bin 0 -> 13665 bytes html/images/fdb.png | Bin 0 -> 10057 bytes html/images/fegroup.png | Bin 0 -> 13201 bytes html/images/fileecho.png | Bin 0 -> 15291 bytes html/images/filefind.png | Bin 0 -> 11080 bytes html/images/files.png | Bin 0 -> 14793 bytes html/images/go_to.png | Bin 0 -> 1064 bytes html/images/hand.up.png | Bin 0 -> 313 bytes html/images/hatch.png | Bin 0 -> 4866 bytes html/images/language.png | Bin 0 -> 8414 bytes html/images/larrow.png | Bin 0 -> 1017 bytes html/images/magic.png | Bin 0 -> 4435 bytes html/images/mbmon1-tn.png | Bin 0 -> 8866 bytes html/images/mbmon1.png | Bin 0 -> 8898 bytes html/images/mbmon2-tn.png | Bin 0 -> 9820 bytes html/images/mbmon2.png | Bin 0 -> 10011 bytes html/images/mbse.png | Bin 0 -> 73043 bytes html/images/mbsebbs-s.png | Bin 0 -> 12697 bytes html/images/mbsebbs.png | Bin 0 -> 279940 bytes html/images/mbsetup0.png | Bin 0 -> 8202 bytes html/images/mbsetup1.6.S.png | Bin 0 -> 4922 bytes html/images/mbsetup1.6.png | Bin 0 -> 6447 bytes html/images/mbsetup2.png | Bin 0 -> 5364 bytes html/images/modems0.png | Bin 0 -> 6681 bytes html/images/newfiles.png | Bin 0 -> 11359 bytes html/images/newgroups.png | Bin 0 -> 5058 bytes html/images/nodelist.png | Bin 0 -> 7982 bytes html/images/nodelist1.png | Bin 0 -> 7612 bytes html/images/nodelist2.png | Bin 0 -> 5539 bytes html/images/nodelist3.png | Bin 0 -> 6034 bytes html/images/nodelist4.png | Bin 0 -> 7644 bytes html/images/nodelist5.png | Bin 0 -> 5431 bytes html/images/nodes1.png | Bin 0 -> 15314 bytes html/images/nodes10.png | Bin 0 -> 10680 bytes html/images/nodes11.png | Bin 0 -> 10199 bytes html/images/nodes2.png | Bin 0 -> 13840 bytes html/images/nodes3.png | Bin 0 -> 14113 bytes html/images/nodes4.png | Bin 0 -> 9147 bytes html/images/nodes5.png | Bin 0 -> 6360 bytes html/images/nodes6.png | Bin 0 -> 9549 bytes html/images/nodes7.png | Bin 0 -> 11456 bytes html/images/nodes8.png | Bin 0 -> 12545 bytes html/images/nodes9.png | Bin 0 -> 9987 bytes html/images/oneliner.png | Bin 0 -> 5066 bytes html/images/protocol.png | Bin 0 -> 11815 bytes html/images/rarrow.png | Bin 0 -> 1028 bytes html/images/route1.png | Bin 0 -> 9396 bytes html/images/route2.png | Bin 0 -> 7014 bytes html/images/security.png | Bin 0 -> 5252 bytes html/images/taskmgr.png | Bin 0 -> 12710 bytes html/images/tdream1.png | Bin 0 -> 7891 bytes html/images/tdream2.png | Bin 0 -> 7642 bytes html/images/tdream3.png | Bin 0 -> 7842 bytes html/images/tty.png | Bin 0 -> 10755 bytes html/images/tty1.png | Bin 0 -> 12090 bytes html/images/tty2.png | Bin 0 -> 11771 bytes html/images/uarrow.png | Bin 0 -> 1022 bytes html/images/users.png | Bin 0 -> 13574 bytes html/images/users2.png | Bin 0 -> 13583 bytes html/index.htm.in | 140 + html/intergate.html | 106 + html/intro.html | 94 + html/invoking.html | 72 + html/known_bugs.html | 45 + html/license/copying.html | 358 + html/license/hydracom.html | 118 + html/license/index.htm | 40 + html/license/jam.html | 76 + html/manual.css | 30 + html/menus/control.html | 134 + html/menus/index.htm | 181 + html/menus/menu0.html | 181 + html/menus/menu100.html | 148 + html/menus/menu200.html | 153 + html/menus/menu300.html | 139 + html/menus/menu400.html | 61 + html/menus/menu500.html | 57 + html/mgetty.html | 188 + html/misc/dropfile.html | 114 + html/misc/filefind.html | 332 + html/misc/fileid.html | 388 ++ html/misc/ftpserver.html | 108 + html/misc/index.htm | 46 + html/misc/ipmailer.html | 174 + html/misc/jam.html | 640 ++ html/misc/outbound.html | 103 + html/misc/semafore.html | 75 + html/misc/usleep.html | 70 + html/misc/webserver.html | 121 + html/nodelist.html | 133 + html/postfix.html | 160 + html/programs/index.htm | 50 + html/programs/mbaff.html | 99 + html/programs/mball.html | 75 + html/programs/mbcico.html | 295 + html/programs/mbdiff.html | 64 + html/programs/mbfido.html | 277 + html/programs/mbfile.html | 192 + html/programs/mbindex.html | 68 + html/programs/mblang.html | 38 + html/programs/mblogin.html | 122 + html/programs/mbmon.html | 119 + html/programs/mbmsg.html | 93 + html/programs/mbnntp.html | 68 + html/programs/mbout.html | 110 + html/programs/mbpasswd.html | 55 + html/programs/mbsebbs.html | 147 + html/programs/mbseq.html | 49 + html/programs/mbsetup.html | 62 + html/programs/mbstat.html | 79 + html/programs/mbtask.html | 432 ++ html/programs/mbtoberep.html | 47 + html/programs/mbuser.html | 71 + html/programs/mbuseradd.html | 71 + html/routing.html | 211 + html/setup/archiver.html | 57 + html/setup/bbs.html | 40 + html/setup/chat.html | 46 + html/setup/domains.html | 47 + html/setup/emareas.html | 134 + html/setup/emgroup.html | 70 + html/setup/fdb.html | 54 + html/setup/fegroup.html | 81 + html/setup/fidonet.html | 41 + html/setup/fileecho.html | 96 + html/setup/filefind.html | 57 + html/setup/files.html | 78 + html/setup/global.html | 439 ++ html/setup/hatch.html | 65 + html/setup/index.htm | 79 + html/setup/language.html | 66 + html/setup/magic.html | 76 + html/setup/mail.html | 34 + html/setup/modems.html | 88 + html/setup/newfiles.html | 53 + html/setup/newgroups.html | 48 + html/setup/nodes.html | 415 ++ html/setup/oneliner.html | 36 + html/setup/protocol.html | 75 + html/setup/route.html | 71 + html/setup/security.html | 57 + html/setup/services.html | 59 + html/setup/sitedoc.html | 36 + html/setup/softinfo.html | 30 + html/setup/taskmgr.html | 68 + html/setup/tic.html | 36 + html/setup/ttyinfo.html | 68 + html/setup/users.html | 106 + html/setup/virscan.html | 105 + html/upgrade.html.in | 96 + html/ups.html | 45 + lang/.cvsignore | 1 + lang/Language.xref | 480 ++ lang/Makefile | 48 + lang/README | 43 + lang/germandu.txt | 480 ++ lang/source.de | 480 ++ lang/source.en | 480 ++ lang/source.es | 480 ++ lang/source.fr | 480 ++ lang/source.gl | 480 ++ lang/source.nl | 480 ++ lang/source.zh | 480 ++ lib/.cvsignore | 1 + lib/Diesel.doc | 294 + lib/Makefile | 181 + lib/README | 35 + lib/README.diesel | 20 + lib/README.macro | 52 + lib/attach.c | 244 + lib/batchrd.c | 88 + lib/bluewave.h | 1143 ++++ lib/charset.c | 459 ++ lib/clcomm.c | 636 ++ lib/client.c | 229 + lib/crc.c | 292 + lib/dbcfg.c | 92 + lib/dbdupe.c | 189 + lib/dbfdb.c | 557 ++ lib/dbftn.c | 113 + lib/dbmsgs.c | 364 ++ lib/dbnode.c | 219 + lib/dbtic.c | 303 + lib/dbuser.c | 99 + lib/diesel.c | 1795 +++++ lib/diesel.h | 57 + lib/dostran.c | 93 + lib/endian.c | 59 + lib/execute.c | 301 + lib/expipe.c | 187 + lib/faddr.c | 121 + lib/falists.c | 224 + lib/ftn.c | 684 ++ lib/ftnmsg.c | 181 + lib/ftscprod.010 | 296 + lib/getheader.c | 230 + lib/gmtoffset.c | 167 + lib/hdr.c | 45 + lib/jam.h | 196 + lib/jammsg.c | 1543 +++++ lib/jammsg.h | 30 + lib/jamsys.h | 102 + lib/magic.c | 101 + lib/mangle.c | 470 ++ lib/mbdiesel.c | 373 ++ lib/mbfile.c | 284 + lib/mbinet.h | 25 + lib/mbse.h | 115 + lib/mbsedb.h | 156 + lib/mbselib.h | 2723 ++++++++ lib/mkprod.awk | 17 + lib/msg.c | 546 ++ lib/msg.h | 148 + lib/msgtext.c | 335 + lib/msgtext.h | 34 + lib/nntp.c | 286 + lib/nodelist.c | 1164 ++++ lib/nodelist.conf | 187 + lib/nodelist.h | 128 + lib/nodelock.c | 179 + lib/noderecord.c | 56 + lib/packet.c | 189 + lib/parsedate.c | 1781 +++++ lib/pidinfo.c | 119 + lib/pktname.c | 291 + lib/pop3.c | 199 + lib/proglock.c | 135 + lib/rawio.c | 334 + lib/rearc.c | 200 + lib/remask.c | 84 + lib/rfcaddr.c | 285 + lib/rfcdate.c | 189 + lib/rfcmsg.c | 141 + lib/sectest.c | 72 + lib/semafore.c | 70 + lib/signame.c | 90 + lib/smtp.c | 210 + lib/strcasestr.c | 26 + lib/strutil.c | 417 ++ lib/term.c | 153 + lib/timers.c | 163 + lib/tmpwork.c | 87 + lib/unpacker.c | 115 + lib/users.h | 161 + lib/virscan.c | 385 ++ mbcico/.cvsignore | 1 + mbcico/Makefile | 137 + mbcico/README | 32 + mbcico/answer.c | 157 + mbcico/answer.h | 8 + mbcico/atoul.c | 44 + mbcico/atoul.h | 9 + mbcico/binkp.c | 3137 +++++++++ mbcico/binkp.h | 102 + mbcico/bopenfile.c | 210 + mbcico/bopenfile.h | 9 + mbcico/call.c | 278 + mbcico/call.h | 10 + mbcico/callstat.c | 94 + mbcico/callstat.h | 16 + mbcico/chat.c | 246 + mbcico/chat.h | 10 + mbcico/dial.c | 158 + mbcico/dial.h | 11 + mbcico/dietifna.c | 143 + mbcico/dietifna.h | 9 + mbcico/dirlock.c | 149 + mbcico/dirlock.h | 9 + mbcico/emsi.c | 629 ++ mbcico/emsi.h | 52 + mbcico/emsidat.c | 520 ++ mbcico/emsidat.h | 10 + mbcico/filetime.c | 121 + mbcico/filetime.h | 11 + mbcico/ftsc.c | 515 ++ mbcico/ftsc.h | 10 + mbcico/hydra.c | 1847 ++++++ mbcico/hydra.h | 248 + mbcico/inbound.c | 216 + mbcico/inbound.h | 39 + mbcico/lutil.c | 99 + mbcico/lutil.h | 11 + mbcico/m7recv.c | 179 + mbcico/m7recv.h | 8 + mbcico/m7send.c | 181 + mbcico/m7send.h | 7 + mbcico/mbcico.c | 399 ++ mbcico/mbcico.h | 11 + mbcico/mbout.c | 370 ++ mbcico/md5b.c | 522 ++ mbcico/md5b.h | 65 + mbcico/nlinfo.c | 138 + mbcico/nlinfo.h | 9 + mbcico/openfile.c | 235 + mbcico/openfile.h | 9 + mbcico/openport.c | 605 ++ mbcico/openport.h | 27 + mbcico/opentcp.c | 216 + mbcico/opentcp.h | 10 + mbcico/outstat.c | 590 ++ mbcico/outstat.h | 13 + mbcico/portsel.c | 119 + mbcico/portsel.h | 11 + mbcico/rdoptions.c | 137 + mbcico/rdoptions.h | 7 + mbcico/recvbark.c | 220 + mbcico/recvbark.h | 7 + mbcico/respfreq.c | 667 ++ mbcico/respfreq.h | 11 + mbcico/scanout.c | 245 + mbcico/scanout.h | 13 + mbcico/sendbark.c | 179 + mbcico/sendbark.h | 7 + mbcico/session.c | 733 +++ mbcico/session.h | 76 + mbcico/statetbl.h | 53 + mbcico/tcp.c | 131 + mbcico/tcp.h | 9 + mbcico/tcpproto.c | 498 ++ mbcico/tcpproto.h | 9 + mbcico/telnet.c | 176 + mbcico/telnet.h | 17 + mbcico/ttyio.c | 592 ++ mbcico/ttyio.h | 115 + mbcico/ulock.c | 140 + mbcico/ulock.h | 8 + mbcico/wazoo.c | 129 + mbcico/wazoo.h | 8 + mbcico/xmrecv.c | 594 ++ mbcico/xmrecv.h | 7 + mbcico/xmsend.c | 508 ++ mbcico/xmsend.h | 9 + mbcico/yoohoo.c | 659 ++ mbcico/yoohoo.h | 8 + mbcico/zmmisc.c | 994 +++ mbcico/zmodem.h | 201 + mbcico/zmrecv.c | 580 ++ mbcico/zmrle.c | 196 + mbcico/zmsend.c | 691 ++ mbfido/.cvsignore | 1 + mbfido/Makefile | 205 + mbfido/README | 37 + mbfido/addbbs.c | 322 + mbfido/addbbs.h | 9 + mbfido/addpkt.c | 310 + mbfido/addpkt.h | 10 + mbfido/aliasdb.c | 213 + mbfido/aliasdb.h | 12 + mbfido/announce.c | 495 ++ mbfido/announce.h | 9 + mbfido/areamgr.c | 1184 ++++ mbfido/areamgr.h | 12 + mbfido/atoul.c | 45 + mbfido/atoul.h | 9 + mbfido/backalias.c | 96 + mbfido/backalias.h | 8 + mbfido/bounce.c | 139 + mbfido/bounce.h | 9 + mbfido/bwrite.c | 114 + mbfido/bwrite.h | 12 + mbfido/createf.c | 394 ++ mbfido/createf.h | 12 + mbfido/createm.c | 503 ++ mbfido/createm.h | 14 + mbfido/dirlock.c | 150 + mbfido/dirlock.h | 7 + mbfido/dirsession.c | 220 + mbfido/dirsession.h | 12 + mbfido/fflist.c | 147 + mbfido/fflist.h | 34 + mbfido/filefind.c | 530 ++ mbfido/filefind.h | 9 + mbfido/filemgr.c | 993 +++ mbfido/filemgr.h | 11 + mbfido/flock.c | 81 + mbfido/flock.h | 10 + mbfido/forward.c | 291 + mbfido/forward.h | 9 + mbfido/fsort.c | 144 + mbfido/fsort.h | 20 + mbfido/ftn2rfc.c | 1543 +++++ mbfido/ftn2rfc.h | 8 + mbfido/grlist.c | 139 + mbfido/grlist.h | 19 + mbfido/hash.c | 52 + mbfido/hash.h | 9 + mbfido/hatch.c | 202 + mbfido/hatch.h | 9 + mbfido/lhash.c | 500 ++ mbfido/lhash.h | 147 + mbfido/magic.c | 374 ++ mbfido/magic.h | 18 + mbfido/makestat.c | 448 ++ mbfido/makestat.h | 9 + mbfido/maketags.c | 125 + mbfido/maketags.h | 9 + mbfido/mbaff.c | 197 + mbfido/mbaff.h | 9 + mbfido/mbdiff.c | 574 ++ mbfido/mbdiff.h | 12 + mbfido/mbfadopt.c | 303 + mbfido/mbfadopt.h | 8 + mbfido/mbfcheck.c | 574 ++ mbfido/mbfcheck.h | 8 + mbfido/mbfdel.c | 118 + mbfido/mbfdel.h | 8 + mbfido/mbfido.c | 912 +++ mbfido/mbfido.h | 15 + mbfido/mbfile.c | 318 + mbfido/mbfile.h | 7 + mbfido/mbfimport.c | 434 ++ mbfido/mbfimport.h | 10 + mbfido/mbfindex.c | 822 +++ mbfido/mbfindex.h | 8 + mbfido/mbfkill.c | 237 + mbfido/mbfkill.h | 8 + mbfido/mbflist.c | 201 + mbfido/mbflist.h | 8 + mbfido/mbfmove.c | 178 + mbfido/mbfmove.h | 8 + mbfido/mbfpack.c | 142 + mbfido/mbfpack.h | 8 + mbfido/mbfrearc.c | 216 + mbfido/mbfrearc.h | 8 + mbfido/mbfsort.c | 114 + mbfido/mbfsort.h | 8 + mbfido/mbftoberep.c | 83 + mbfido/mbftoberep.h | 8 + mbfido/mbfutil.c | 451 ++ mbfido/mbfutil.h | 16 + mbfido/mbindex.c | 998 +++ mbfido/mbindex.h | 35 + mbfido/mbmsg.c | 571 ++ mbfido/mbmsg.h | 15 + mbfido/mbseq.c | 65 + mbfido/mbseq.h | 6 + mbfido/mgrutil.c | 1008 +++ mbfido/mgrutil.h | 40 + mbfido/mkftnhdr.c | 583 ++ mbfido/mkftnhdr.h | 10 + mbfido/mover.c | 74 + mbfido/mover.h | 12 + mbfido/msg.c | 397 ++ mbfido/msg.h | 8 + mbfido/msgflags.c | 133 + mbfido/msgflags.h | 13 + mbfido/msgutil.c | 272 + mbfido/msgutil.h | 15 + mbfido/newspost.c | 233 + mbfido/newspost.h | 9 + mbfido/notify.c | 171 + mbfido/notify.h | 9 + mbfido/orphans.c | 65 + mbfido/orphans.h | 22 + mbfido/ping.c | 138 + mbfido/ping.h | 9 + mbfido/post.c | 289 + mbfido/post.h | 9 + mbfido/postecho.c | 575 ++ mbfido/postecho.h | 11 + mbfido/postemail.c | 152 + mbfido/postemail.h | 8 + mbfido/postnetmail.c | 469 ++ mbfido/postnetmail.h | 8 + mbfido/ptic.c | 723 ++ mbfido/ptic.h | 8 + mbfido/qualify.c | 63 + mbfido/qualify.h | 23 + mbfido/queue.c | 649 ++ mbfido/queue.h | 11 + mbfido/rfc2ftn.c | 874 +++ mbfido/rfc2ftn.h | 10 + mbfido/rnews.c | 639 ++ mbfido/rnews.h | 20 + mbfido/rollover.c | 421 ++ mbfido/rollover.h | 9 + mbfido/scan.c | 1198 ++++ mbfido/scan.h | 9 + mbfido/scannews.c | 528 ++ mbfido/scannews.h | 39 + mbfido/sendmail.c | 149 + mbfido/sendmail.h | 10 + mbfido/storeecho.c | 169 + mbfido/storeecho.h | 7 + mbfido/storenet.c | 189 + mbfido/storenet.h | 8 + mbfido/tic.c | 566 ++ mbfido/tic.h | 72 + mbfido/toberep.c | 98 + mbfido/toberep.h | 8 + mbfido/tosspkt.c | 513 ++ mbfido/tosspkt.h | 9 + mbfido/tracker.c | 723 ++ mbfido/tracker.h | 9 + mbfido/unpack.c | 120 + mbfido/unpack.h | 9 + mbfido/utic.c | 237 + mbfido/utic.h | 14 + mbmon/.cvsignore | 1 + mbmon/Makefile | 62 + mbmon/mbmon.c | 851 +++ mbmon/mbmon.h | 15 + mbmon/mutil.c | 605 ++ mbmon/mutil.h | 22 + mbmon/proglock.c | 140 + mbmon/proglock.h | 9 + mbnntp/.cvsignore | 1 + mbnntp/Makefile | 72 + mbnntp/atoul.c | 48 + mbnntp/atoul.h | 12 + mbnntp/auth.c | 172 + mbnntp/auth.h | 14 + mbnntp/commands.c | 616 ++ mbnntp/commands.h | 18 + mbnntp/hash.c | 54 + mbnntp/hash.h | 13 + mbnntp/lhash.c | 482 ++ mbnntp/lhash.h | 151 + mbnntp/mbnntp.c | 408 ++ mbnntp/mbnntp.h | 17 + mbnntp/mkftnhdr.c | 571 ++ mbnntp/mkftnhdr.h | 13 + mbnntp/msgflags.c | 134 + mbnntp/msgflags.h | 16 + mbnntp/openport.c | 78 + mbnntp/openport.h | 9 + mbnntp/rfc2ftn.c | 908 +++ mbnntp/rfc2ftn.h | 12 + mbnntp/ttyio.c | 186 + mbnntp/ttyio.h | 35 + mbsebbs/.cvsignore | 1 + mbsebbs/Makefile | 139 + mbsebbs/bye.c | 228 + mbsebbs/bye.h | 8 + mbsebbs/change.c | 1105 ++++ mbsebbs/change.h | 29 + mbsebbs/chat.c | 418 ++ mbsebbs/chat.h | 8 + mbsebbs/dispfile.c | 691 ++ mbsebbs/dispfile.h | 16 + mbsebbs/door.c | 388 ++ mbsebbs/door.h | 9 + mbsebbs/email.c | 1111 ++++ mbsebbs/email.h | 18 + mbsebbs/exitinfo.c | 140 + mbsebbs/exitinfo.h | 10 + mbsebbs/file.c | 1963 ++++++ mbsebbs/file.h | 25 + mbsebbs/filesub.c | 1091 ++++ mbsebbs/filesub.h | 27 + mbsebbs/fsedit.c | 798 +++ mbsebbs/fsedit.h | 36 + mbsebbs/funcs.c | 385 ++ mbsebbs/funcs.h | 17 + mbsebbs/input.c | 802 +++ mbsebbs/input.h | 28 + mbsebbs/language.c | 170 + mbsebbs/language.h | 13 + mbsebbs/lastcallers.c | 160 + mbsebbs/lastcallers.h | 8 + mbsebbs/logentry.c | 68 + mbsebbs/logentry.h | 9 + mbsebbs/mail.c | 2922 +++++++++ mbsebbs/mail.h | 25 + mbsebbs/mbnewusr.c | 287 + mbsebbs/mbnewusr.h | 10 + mbsebbs/mbsebbs.c | 424 ++ mbsebbs/mbsebbs.h | 10 + mbsebbs/menu.c | 765 +++ mbsebbs/menu.h | 10 + mbsebbs/mib.c | 57 + mbsebbs/mib.h | 9 + mbsebbs/misc.c | 241 + mbsebbs/misc.h | 12 + mbsebbs/morefile.c | 100 + mbsebbs/morefile.h | 8 + mbsebbs/msgutil.c | 322 + mbsebbs/msgutil.h | 15 + mbsebbs/newuser.c | 843 +++ mbsebbs/newuser.h | 10 + mbsebbs/offline.c | 2989 +++++++++ mbsebbs/offline.h | 52 + mbsebbs/oneline.c | 452 ++ mbsebbs/oneline.h | 13 + mbsebbs/openport.c | 293 + mbsebbs/openport.h | 12 + mbsebbs/page.c | 337 + mbsebbs/page.h | 13 + mbsebbs/pinfo.c | 191 + mbsebbs/pinfo.h | 9 + mbsebbs/pop3.c | 214 + mbsebbs/pop3.h | 9 + mbsebbs/signature.c | 303 + mbsebbs/signature.h | 8 + mbsebbs/term.c | 315 + mbsebbs/term.h | 29 + mbsebbs/timecheck.c | 132 + mbsebbs/timecheck.h | 8 + mbsebbs/timeout.c | 136 + mbsebbs/timeout.h | 12 + mbsebbs/timestats.c | 101 + mbsebbs/timestats.h | 9 + mbsebbs/transfer.c | 581 ++ mbsebbs/transfer.h | 43 + mbsebbs/ttyio.c | 255 + mbsebbs/ttyio.h | 88 + mbsebbs/user.c | 587 ++ mbsebbs/user.h | 19 + mbsebbs/userlist.c | 175 + mbsebbs/userlist.h | 8 + mbsebbs/whoson.c | 376 ++ mbsebbs/whoson.h | 10 + mbsebbs/ymrecv.c | 291 + mbsebbs/ymrecv.h | 14 + mbsebbs/ymsend.c | 454 ++ mbsebbs/ymsend.h | 15 + mbsebbs/zmmisc.c | 966 +++ mbsebbs/zmmisc.h | 190 + mbsebbs/zmrecv.c | 641 ++ mbsebbs/zmrecv.h | 11 + mbsebbs/zmsend.c | 759 +++ mbsebbs/zmsend.h | 10 + mbsetup/.cvsignore | 1 + mbsetup/Makefile | 112 + mbsetup/grlist.c | 209 + mbsetup/grlist.h | 18 + mbsetup/ledit.c | 2357 +++++++ mbsetup/ledit.h | 112 + mbsetup/m_archive.c | 878 +++ mbsetup/m_archive.h | 14 + mbsetup/m_bbs.c | 106 + mbsetup/m_bbs.h | 8 + mbsetup/m_domain.c | 514 ++ mbsetup/m_domain.h | 11 + mbsetup/m_farea.c | 926 +++ mbsetup/m_farea.h | 13 + mbsetup/m_fdb.c | 473 ++ mbsetup/m_fdb.h | 11 + mbsetup/m_ff.c | 545 ++ mbsetup/m_ff.h | 11 + mbsetup/m_fgroup.c | 909 +++ mbsetup/m_fgroup.h | 13 + mbsetup/m_fido.c | 618 ++ mbsetup/m_fido.h | 12 + mbsetup/m_global.c | 2380 +++++++ mbsetup/m_global.h | 16 + mbsetup/m_hatch.c | 682 ++ mbsetup/m_hatch.h | 11 + mbsetup/m_ibc.c | 447 ++ mbsetup/m_ibc.h | 13 + mbsetup/m_lang.c | 659 ++ mbsetup/m_lang.h | 13 + mbsetup/m_limits.c | 606 ++ mbsetup/m_limits.h | 13 + mbsetup/m_magic.c | 576 ++ mbsetup/m_magic.h | 12 + mbsetup/m_mail.c | 89 + mbsetup/m_mail.h | 12 + mbsetup/m_marea.c | 2081 ++++++ mbsetup/m_marea.h | 20 + mbsetup/m_menu.c | 703 ++ mbsetup/m_menu.h | 9 + mbsetup/m_mgroup.c | 856 +++ mbsetup/m_mgroup.h | 13 + mbsetup/m_modem.c | 807 +++ mbsetup/m_modem.h | 12 + mbsetup/m_new.c | 640 ++ mbsetup/m_new.h | 13 + mbsetup/m_ngroup.c | 617 ++ mbsetup/m_ngroup.h | 13 + mbsetup/m_node.c | 1858 ++++++ mbsetup/m_node.h | 15 + mbsetup/m_ol.c | 612 ++ mbsetup/m_ol.h | 14 + mbsetup/m_protocol.c | 761 +++ mbsetup/m_protocol.h | 13 + mbsetup/m_route.c | 569 ++ mbsetup/m_route.h | 13 + mbsetup/m_service.c | 461 ++ mbsetup/m_service.h | 11 + mbsetup/m_task.c | 243 + mbsetup/m_task.h | 10 + mbsetup/m_tic.c | 96 + mbsetup/m_tic.h | 4 + mbsetup/m_ticarea.c | 1500 +++++ mbsetup/m_ticarea.h | 17 + mbsetup/m_tty.c | 674 ++ mbsetup/m_tty.h | 11 + mbsetup/m_users.c | 754 +++ mbsetup/m_users.h | 11 + mbsetup/m_virus.c | 581 ++ mbsetup/m_virus.h | 13 + mbsetup/mbsetup.c | 556 ++ mbsetup/mutil.c | 273 + mbsetup/mutil.h | 19 + mbsetup/screen.c | 306 + mbsetup/screen.h | 19 + mbsetup/stlist.c | 114 + mbsetup/stlist.h | 19 + mbtask/.cvsignore | 1 + mbtask/Makefile | 89 + mbtask/calllist.c | 157 + mbtask/calllist.h | 26 + mbtask/callstat.c | 133 + mbtask/callstat.h | 16 + mbtask/crc.c | 137 + mbtask/issue | 10 + mbtask/issue.netbsd | 20 + mbtask/mbtask.c | 1734 +++++ mbtask/mbtask.h | 55 + mbtask/outstat.c | 895 +++ mbtask/outstat.h | 60 + mbtask/pidinfo.c | 119 + mbtask/ping.c | 404 ++ mbtask/ping.h | 18 + mbtask/ports.c | 262 + mbtask/ports.h | 29 + mbtask/scanout.c | 242 + mbtask/scanout.h | 17 + mbtask/signame.c | 89 + mbtask/signame.h | 11 + mbtask/taskchat.c | 868 +++ mbtask/taskchat.h | 16 + mbtask/taskcomm.c | 887 +++ mbtask/taskcomm.h | 9 + mbtask/taskdisk.c | 636 ++ mbtask/taskdisk.h | 12 + mbtask/taskibc.c | 1821 ++++++ mbtask/taskibc.h | 134 + mbtask/taskinfo.c | 144 + mbtask/taskinfo.h | 13 + mbtask/taskregs.c | 725 ++ mbtask/taskregs.h | 61 + mbtask/taskstat.c | 820 +++ mbtask/taskstat.h | 47 + mbtask/taskutil.c | 678 ++ mbtask/taskutil.h | 49 + mbutils/.cvsignore | 1 + mbutils/Makefile | 107 + mbutils/dlcount.c | 275 + mbutils/dlcount.h | 8 + mbutils/mball.c | 555 ++ mbutils/mball.h | 18 + mbutils/mbbw.c | 176 + mbutils/mblang.c | 113 + mbutils/mbsnmp.c | 212 + mbutils/mbsnmp.h | 8 + mbutils/mbstat.c | 279 + mbutils/mbstat.h | 14 + mbutils/mbtoberep.c | 92 + mbutils/mbuser.c | 396 ++ mbutils/mbuser.h | 9 + script/.cvsignore | 1 + script/Makefile | 99 + script/README | 11 + script/bbsdoor.sh | 31 + script/bbsjmacsrc | 517 ++ script/bbsjoerc | 588 ++ script/doors.bat | 22 + script/editor.in | 102 + script/hatch | 121 + script/init.Debian | 84 + script/init.FreeBSD | 70 + script/init.Gentoo | 74 + script/init.NetBSD | 109 + script/init.OpenBSD | 35 + script/init.RedHat | 78 + script/init.Slackware | 85 + script/init.SuSE | 76 + script/installinit.sh | 357 + script/maint | 28 + script/mbsedos | 22 + script/midnight | 32 + script/monthly | 23 + script/rundoor.sh | 52 + script/runvirtual.sh | 25 + script/setup.mbse | 22 + script/weekly | 22 + unix/.cvsignore | 1 + unix/Makefile | 115 + unix/basename.c | 17 + unix/basename.h | 9 + unix/chowntty.c | 123 + unix/chowntty.h | 11 + unix/commonio.c | 766 +++ unix/commonio.h | 112 + unix/encrypt.c | 160 + unix/encrypt.h | 9 + unix/env.c | 253 + unix/env.h | 12 + unix/getdef.c | 339 + unix/getdef.h | 13 + unix/limits.c | 67 + unix/limits.h | 9 + unix/log.c | 97 + unix/log.h | 8 + unix/login.defs.in | 146 + unix/loginprompt.c | 168 + unix/loginprompt.h | 9 + unix/mblogin.c | 848 +++ unix/mblogin.h | 248 + unix/mbpasswd.c | 1163 ++++ unix/mbpasswd.h | 47 + unix/mbuseradd.c | 518 ++ unix/mbuseradd.h | 10 + unix/myname.c | 72 + unix/myname.h | 7 + unix/putpwent.c | 73 + unix/putpwent.h | 14 + unix/pw_util.c | 348 + unix/pw_util.h | 52 + unix/pwauth.c | 135 + unix/pwauth.h | 31 + unix/pwdcheck.c | 98 + unix/pwdcheck.h | 8 + unix/pwio.c | 249 + unix/pwio.h | 33 + unix/rad64.c | 157 + unix/rad64.h | 15 + unix/salt.c | 101 + unix/salt.h | 9 + unix/setugid.c | 120 + unix/setugid.h | 10 + unix/setupenv.c | 111 + unix/setupenv.h | 8 + unix/sgetpwent.c | 167 + unix/sgetpwent.h | 7 + unix/shadowio.c | 226 + unix/shadowio.h | 33 + unix/shell.c | 128 + unix/shell.h | 8 + unix/sub.c | 80 + unix/sub.h | 8 + unix/utmp.c | 503 ++ unix/utmp.h | 29 + unix/xmalloc.c | 83 + unix/xmalloc.h | 11 + 900 files changed, 203942 insertions(+) create mode 100644 .hgignore create mode 100644 AUTHORS create mode 100644 COPYING create mode 100644 CRON.sh create mode 100644 ChangeLog create mode 100644 ChangeLog_1998 create mode 100644 ChangeLog_1999 create mode 100644 ChangeLog_2000 create mode 100644 ChangeLog_2001 create mode 100644 ChangeLog_2002 create mode 100644 ChangeLog_2003 create mode 100644 ChangeLog_2004 create mode 100644 ChangeLog_2005 create mode 100644 ChangeLog_2006 create mode 100644 ChangeLog_2007 create mode 100644 DEBUG create mode 100644 Makefile create mode 100644 NEWS create mode 100644 README create mode 100644 README.Gentoo create mode 100644 README.Ubuntu create mode 100644 README.developer create mode 100644 SETUP.sh create mode 100644 TODO create mode 100644 UPGRADE create mode 100644 aclocal.m4 create mode 100755 checkbasic create mode 100755 configure create mode 100644 configure.ac create mode 100755 cpuflags create mode 100644 examples/.cvsignore create mode 100644 examples/Makefile create mode 100644 examples/footer.txt create mode 100644 examples/header.txt create mode 100644 examples/menus-de.tar create mode 100644 examples/menus-en.tar create mode 100644 examples/menus-es.tar create mode 100644 examples/templates-de.tar create mode 100644 examples/templates-en.tar create mode 100644 examples/templates-es.tar create mode 100644 examples/templates-nl.tar create mode 100644 examples/txtfiles-de.tar create mode 100644 examples/txtfiles-en.tar create mode 100755 examples/txtfiles-es.tar create mode 100644 html/.cvsignore create mode 100644 html/Makefile create mode 100644 html/basic.html.in create mode 100644 html/dist.html create mode 100644 html/doors.html create mode 100644 html/errcodes.html create mode 100644 html/faq.html create mode 100644 html/flow.html create mode 100644 html/ftsc/index.htm create mode 100644 html/images/b_arrow.png create mode 100644 html/images/connec.png create mode 100644 html/images/domains.png create mode 100644 html/images/doors.png create mode 100644 html/images/doors2.png create mode 100644 html/images/dream1.png create mode 100644 html/images/dream2.png create mode 100644 html/images/dream3.png create mode 100644 html/images/e_menu.png create mode 100644 html/images/emareas.png create mode 100644 html/images/emgroup.png create mode 100644 html/images/fdb.png create mode 100644 html/images/fegroup.png create mode 100644 html/images/fileecho.png create mode 100644 html/images/filefind.png create mode 100644 html/images/files.png create mode 100644 html/images/go_to.png create mode 100644 html/images/hand.up.png create mode 100644 html/images/hatch.png create mode 100644 html/images/language.png create mode 100644 html/images/larrow.png create mode 100644 html/images/magic.png create mode 100644 html/images/mbmon1-tn.png create mode 100644 html/images/mbmon1.png create mode 100644 html/images/mbmon2-tn.png create mode 100644 html/images/mbmon2.png create mode 100644 html/images/mbse.png create mode 100644 html/images/mbsebbs-s.png create mode 100644 html/images/mbsebbs.png create mode 100644 html/images/mbsetup0.png create mode 100644 html/images/mbsetup1.6.S.png create mode 100644 html/images/mbsetup1.6.png create mode 100644 html/images/mbsetup2.png create mode 100644 html/images/modems0.png create mode 100644 html/images/newfiles.png create mode 100644 html/images/newgroups.png create mode 100644 html/images/nodelist.png create mode 100644 html/images/nodelist1.png create mode 100644 html/images/nodelist2.png create mode 100644 html/images/nodelist3.png create mode 100644 html/images/nodelist4.png create mode 100644 html/images/nodelist5.png create mode 100644 html/images/nodes1.png create mode 100644 html/images/nodes10.png create mode 100644 html/images/nodes11.png create mode 100644 html/images/nodes2.png create mode 100644 html/images/nodes3.png create mode 100644 html/images/nodes4.png create mode 100644 html/images/nodes5.png create mode 100644 html/images/nodes6.png create mode 100644 html/images/nodes7.png create mode 100644 html/images/nodes8.png create mode 100644 html/images/nodes9.png create mode 100644 html/images/oneliner.png create mode 100644 html/images/protocol.png create mode 100644 html/images/rarrow.png create mode 100644 html/images/route1.png create mode 100644 html/images/route2.png create mode 100644 html/images/security.png create mode 100644 html/images/taskmgr.png create mode 100644 html/images/tdream1.png create mode 100644 html/images/tdream2.png create mode 100644 html/images/tdream3.png create mode 100644 html/images/tty.png create mode 100644 html/images/tty1.png create mode 100644 html/images/tty2.png create mode 100644 html/images/uarrow.png create mode 100644 html/images/users.png create mode 100644 html/images/users2.png create mode 100644 html/index.htm.in create mode 100644 html/intergate.html create mode 100644 html/intro.html create mode 100644 html/invoking.html create mode 100644 html/known_bugs.html create mode 100644 html/license/copying.html create mode 100644 html/license/hydracom.html create mode 100644 html/license/index.htm create mode 100644 html/license/jam.html create mode 100644 html/manual.css create mode 100644 html/menus/control.html create mode 100644 html/menus/index.htm create mode 100644 html/menus/menu0.html create mode 100644 html/menus/menu100.html create mode 100644 html/menus/menu200.html create mode 100644 html/menus/menu300.html create mode 100644 html/menus/menu400.html create mode 100644 html/menus/menu500.html create mode 100644 html/mgetty.html create mode 100644 html/misc/dropfile.html create mode 100644 html/misc/filefind.html create mode 100644 html/misc/fileid.html create mode 100644 html/misc/ftpserver.html create mode 100644 html/misc/index.htm create mode 100644 html/misc/ipmailer.html create mode 100644 html/misc/jam.html create mode 100644 html/misc/outbound.html create mode 100644 html/misc/semafore.html create mode 100644 html/misc/usleep.html create mode 100644 html/misc/webserver.html create mode 100644 html/nodelist.html create mode 100644 html/postfix.html create mode 100644 html/programs/index.htm create mode 100644 html/programs/mbaff.html create mode 100644 html/programs/mball.html create mode 100644 html/programs/mbcico.html create mode 100644 html/programs/mbdiff.html create mode 100644 html/programs/mbfido.html create mode 100644 html/programs/mbfile.html create mode 100644 html/programs/mbindex.html create mode 100644 html/programs/mblang.html create mode 100644 html/programs/mblogin.html create mode 100644 html/programs/mbmon.html create mode 100644 html/programs/mbmsg.html create mode 100644 html/programs/mbnntp.html create mode 100644 html/programs/mbout.html create mode 100644 html/programs/mbpasswd.html create mode 100644 html/programs/mbsebbs.html create mode 100644 html/programs/mbseq.html create mode 100644 html/programs/mbsetup.html create mode 100644 html/programs/mbstat.html create mode 100644 html/programs/mbtask.html create mode 100644 html/programs/mbtoberep.html create mode 100644 html/programs/mbuser.html create mode 100644 html/programs/mbuseradd.html create mode 100644 html/routing.html create mode 100644 html/setup/archiver.html create mode 100644 html/setup/bbs.html create mode 100644 html/setup/chat.html create mode 100644 html/setup/domains.html create mode 100644 html/setup/emareas.html create mode 100644 html/setup/emgroup.html create mode 100644 html/setup/fdb.html create mode 100644 html/setup/fegroup.html create mode 100644 html/setup/fidonet.html create mode 100644 html/setup/fileecho.html create mode 100644 html/setup/filefind.html create mode 100644 html/setup/files.html create mode 100644 html/setup/global.html create mode 100644 html/setup/hatch.html create mode 100644 html/setup/index.htm create mode 100644 html/setup/language.html create mode 100644 html/setup/magic.html create mode 100644 html/setup/mail.html create mode 100644 html/setup/modems.html create mode 100644 html/setup/newfiles.html create mode 100644 html/setup/newgroups.html create mode 100644 html/setup/nodes.html create mode 100644 html/setup/oneliner.html create mode 100644 html/setup/protocol.html create mode 100644 html/setup/route.html create mode 100644 html/setup/security.html create mode 100644 html/setup/services.html create mode 100644 html/setup/sitedoc.html create mode 100644 html/setup/softinfo.html create mode 100644 html/setup/taskmgr.html create mode 100644 html/setup/tic.html create mode 100644 html/setup/ttyinfo.html create mode 100644 html/setup/users.html create mode 100644 html/setup/virscan.html create mode 100644 html/upgrade.html.in create mode 100644 html/ups.html create mode 100644 lang/.cvsignore create mode 100644 lang/Language.xref create mode 100644 lang/Makefile create mode 100644 lang/README create mode 100644 lang/germandu.txt create mode 100644 lang/source.de create mode 100644 lang/source.en create mode 100644 lang/source.es create mode 100644 lang/source.fr create mode 100644 lang/source.gl create mode 100644 lang/source.nl create mode 100644 lang/source.zh create mode 100644 lib/.cvsignore create mode 100644 lib/Diesel.doc create mode 100644 lib/Makefile create mode 100644 lib/README create mode 100644 lib/README.diesel create mode 100644 lib/README.macro create mode 100644 lib/attach.c create mode 100644 lib/batchrd.c create mode 100644 lib/bluewave.h create mode 100644 lib/charset.c create mode 100644 lib/clcomm.c create mode 100644 lib/client.c create mode 100644 lib/crc.c create mode 100644 lib/dbcfg.c create mode 100644 lib/dbdupe.c create mode 100644 lib/dbfdb.c create mode 100644 lib/dbftn.c create mode 100644 lib/dbmsgs.c create mode 100644 lib/dbnode.c create mode 100644 lib/dbtic.c create mode 100644 lib/dbuser.c create mode 100644 lib/diesel.c create mode 100644 lib/diesel.h create mode 100644 lib/dostran.c create mode 100644 lib/endian.c create mode 100644 lib/execute.c create mode 100644 lib/expipe.c create mode 100644 lib/faddr.c create mode 100644 lib/falists.c create mode 100644 lib/ftn.c create mode 100644 lib/ftnmsg.c create mode 100644 lib/ftscprod.010 create mode 100644 lib/getheader.c create mode 100644 lib/gmtoffset.c create mode 100644 lib/hdr.c create mode 100644 lib/jam.h create mode 100644 lib/jammsg.c create mode 100644 lib/jammsg.h create mode 100644 lib/jamsys.h create mode 100644 lib/magic.c create mode 100644 lib/mangle.c create mode 100644 lib/mbdiesel.c create mode 100644 lib/mbfile.c create mode 100644 lib/mbinet.h create mode 100644 lib/mbse.h create mode 100644 lib/mbsedb.h create mode 100644 lib/mbselib.h create mode 100644 lib/mkprod.awk create mode 100644 lib/msg.c create mode 100644 lib/msg.h create mode 100644 lib/msgtext.c create mode 100644 lib/msgtext.h create mode 100644 lib/nntp.c create mode 100644 lib/nodelist.c create mode 100644 lib/nodelist.conf create mode 100644 lib/nodelist.h create mode 100644 lib/nodelock.c create mode 100644 lib/noderecord.c create mode 100644 lib/packet.c create mode 100644 lib/parsedate.c create mode 100644 lib/pidinfo.c create mode 100644 lib/pktname.c create mode 100644 lib/pop3.c create mode 100644 lib/proglock.c create mode 100644 lib/rawio.c create mode 100644 lib/rearc.c create mode 100644 lib/remask.c create mode 100644 lib/rfcaddr.c create mode 100644 lib/rfcdate.c create mode 100644 lib/rfcmsg.c create mode 100644 lib/sectest.c create mode 100644 lib/semafore.c create mode 100644 lib/signame.c create mode 100644 lib/smtp.c create mode 100644 lib/strcasestr.c create mode 100644 lib/strutil.c create mode 100644 lib/term.c create mode 100644 lib/timers.c create mode 100644 lib/tmpwork.c create mode 100644 lib/unpacker.c create mode 100644 lib/users.h create mode 100644 lib/virscan.c create mode 100644 mbcico/.cvsignore create mode 100644 mbcico/Makefile create mode 100644 mbcico/README create mode 100644 mbcico/answer.c create mode 100644 mbcico/answer.h create mode 100644 mbcico/atoul.c create mode 100644 mbcico/atoul.h create mode 100644 mbcico/binkp.c create mode 100644 mbcico/binkp.h create mode 100644 mbcico/bopenfile.c create mode 100644 mbcico/bopenfile.h create mode 100644 mbcico/call.c create mode 100644 mbcico/call.h create mode 100644 mbcico/callstat.c create mode 100644 mbcico/callstat.h create mode 100644 mbcico/chat.c create mode 100644 mbcico/chat.h create mode 100644 mbcico/dial.c create mode 100644 mbcico/dial.h create mode 100644 mbcico/dietifna.c create mode 100644 mbcico/dietifna.h create mode 100644 mbcico/dirlock.c create mode 100644 mbcico/dirlock.h create mode 100644 mbcico/emsi.c create mode 100644 mbcico/emsi.h create mode 100644 mbcico/emsidat.c create mode 100644 mbcico/emsidat.h create mode 100644 mbcico/filetime.c create mode 100644 mbcico/filetime.h create mode 100644 mbcico/ftsc.c create mode 100644 mbcico/ftsc.h create mode 100644 mbcico/hydra.c create mode 100644 mbcico/hydra.h create mode 100644 mbcico/inbound.c create mode 100644 mbcico/inbound.h create mode 100644 mbcico/lutil.c create mode 100644 mbcico/lutil.h create mode 100644 mbcico/m7recv.c create mode 100644 mbcico/m7recv.h create mode 100644 mbcico/m7send.c create mode 100644 mbcico/m7send.h create mode 100644 mbcico/mbcico.c create mode 100644 mbcico/mbcico.h create mode 100644 mbcico/mbout.c create mode 100644 mbcico/md5b.c create mode 100644 mbcico/md5b.h create mode 100644 mbcico/nlinfo.c create mode 100644 mbcico/nlinfo.h create mode 100644 mbcico/openfile.c create mode 100644 mbcico/openfile.h create mode 100644 mbcico/openport.c create mode 100644 mbcico/openport.h create mode 100644 mbcico/opentcp.c create mode 100644 mbcico/opentcp.h create mode 100644 mbcico/outstat.c create mode 100644 mbcico/outstat.h create mode 100644 mbcico/portsel.c create mode 100644 mbcico/portsel.h create mode 100644 mbcico/rdoptions.c create mode 100644 mbcico/rdoptions.h create mode 100644 mbcico/recvbark.c create mode 100644 mbcico/recvbark.h create mode 100644 mbcico/respfreq.c create mode 100644 mbcico/respfreq.h create mode 100644 mbcico/scanout.c create mode 100644 mbcico/scanout.h create mode 100644 mbcico/sendbark.c create mode 100644 mbcico/sendbark.h create mode 100644 mbcico/session.c create mode 100644 mbcico/session.h create mode 100644 mbcico/statetbl.h create mode 100644 mbcico/tcp.c create mode 100644 mbcico/tcp.h create mode 100644 mbcico/tcpproto.c create mode 100644 mbcico/tcpproto.h create mode 100644 mbcico/telnet.c create mode 100644 mbcico/telnet.h create mode 100644 mbcico/ttyio.c create mode 100644 mbcico/ttyio.h create mode 100644 mbcico/ulock.c create mode 100644 mbcico/ulock.h create mode 100644 mbcico/wazoo.c create mode 100644 mbcico/wazoo.h create mode 100644 mbcico/xmrecv.c create mode 100644 mbcico/xmrecv.h create mode 100644 mbcico/xmsend.c create mode 100644 mbcico/xmsend.h create mode 100644 mbcico/yoohoo.c create mode 100644 mbcico/yoohoo.h create mode 100644 mbcico/zmmisc.c create mode 100644 mbcico/zmodem.h create mode 100644 mbcico/zmrecv.c create mode 100644 mbcico/zmrle.c create mode 100644 mbcico/zmsend.c create mode 100644 mbfido/.cvsignore create mode 100644 mbfido/Makefile create mode 100644 mbfido/README create mode 100644 mbfido/addbbs.c create mode 100644 mbfido/addbbs.h create mode 100644 mbfido/addpkt.c create mode 100644 mbfido/addpkt.h create mode 100644 mbfido/aliasdb.c create mode 100644 mbfido/aliasdb.h create mode 100644 mbfido/announce.c create mode 100644 mbfido/announce.h create mode 100644 mbfido/areamgr.c create mode 100644 mbfido/areamgr.h create mode 100644 mbfido/atoul.c create mode 100644 mbfido/atoul.h create mode 100644 mbfido/backalias.c create mode 100644 mbfido/backalias.h create mode 100644 mbfido/bounce.c create mode 100644 mbfido/bounce.h create mode 100644 mbfido/bwrite.c create mode 100644 mbfido/bwrite.h create mode 100644 mbfido/createf.c create mode 100644 mbfido/createf.h create mode 100644 mbfido/createm.c create mode 100644 mbfido/createm.h create mode 100644 mbfido/dirlock.c create mode 100644 mbfido/dirlock.h create mode 100644 mbfido/dirsession.c create mode 100644 mbfido/dirsession.h create mode 100644 mbfido/fflist.c create mode 100644 mbfido/fflist.h create mode 100644 mbfido/filefind.c create mode 100644 mbfido/filefind.h create mode 100644 mbfido/filemgr.c create mode 100644 mbfido/filemgr.h create mode 100644 mbfido/flock.c create mode 100644 mbfido/flock.h create mode 100644 mbfido/forward.c create mode 100644 mbfido/forward.h create mode 100644 mbfido/fsort.c create mode 100644 mbfido/fsort.h create mode 100644 mbfido/ftn2rfc.c create mode 100644 mbfido/ftn2rfc.h create mode 100644 mbfido/grlist.c create mode 100644 mbfido/grlist.h create mode 100644 mbfido/hash.c create mode 100644 mbfido/hash.h create mode 100644 mbfido/hatch.c create mode 100644 mbfido/hatch.h create mode 100644 mbfido/lhash.c create mode 100644 mbfido/lhash.h create mode 100644 mbfido/magic.c create mode 100644 mbfido/magic.h create mode 100644 mbfido/makestat.c create mode 100644 mbfido/makestat.h create mode 100644 mbfido/maketags.c create mode 100644 mbfido/maketags.h create mode 100644 mbfido/mbaff.c create mode 100644 mbfido/mbaff.h create mode 100644 mbfido/mbdiff.c create mode 100644 mbfido/mbdiff.h create mode 100644 mbfido/mbfadopt.c create mode 100644 mbfido/mbfadopt.h create mode 100644 mbfido/mbfcheck.c create mode 100644 mbfido/mbfcheck.h create mode 100644 mbfido/mbfdel.c create mode 100644 mbfido/mbfdel.h create mode 100644 mbfido/mbfido.c create mode 100644 mbfido/mbfido.h create mode 100644 mbfido/mbfile.c create mode 100644 mbfido/mbfile.h create mode 100644 mbfido/mbfimport.c create mode 100644 mbfido/mbfimport.h create mode 100644 mbfido/mbfindex.c create mode 100644 mbfido/mbfindex.h create mode 100644 mbfido/mbfkill.c create mode 100644 mbfido/mbfkill.h create mode 100644 mbfido/mbflist.c create mode 100644 mbfido/mbflist.h create mode 100644 mbfido/mbfmove.c create mode 100644 mbfido/mbfmove.h create mode 100644 mbfido/mbfpack.c create mode 100644 mbfido/mbfpack.h create mode 100644 mbfido/mbfrearc.c create mode 100644 mbfido/mbfrearc.h create mode 100644 mbfido/mbfsort.c create mode 100644 mbfido/mbfsort.h create mode 100644 mbfido/mbftoberep.c create mode 100644 mbfido/mbftoberep.h create mode 100644 mbfido/mbfutil.c create mode 100644 mbfido/mbfutil.h create mode 100644 mbfido/mbindex.c create mode 100644 mbfido/mbindex.h create mode 100644 mbfido/mbmsg.c create mode 100644 mbfido/mbmsg.h create mode 100644 mbfido/mbseq.c create mode 100644 mbfido/mbseq.h create mode 100644 mbfido/mgrutil.c create mode 100644 mbfido/mgrutil.h create mode 100644 mbfido/mkftnhdr.c create mode 100644 mbfido/mkftnhdr.h create mode 100644 mbfido/mover.c create mode 100644 mbfido/mover.h create mode 100644 mbfido/msg.c create mode 100644 mbfido/msg.h create mode 100644 mbfido/msgflags.c create mode 100644 mbfido/msgflags.h create mode 100644 mbfido/msgutil.c create mode 100644 mbfido/msgutil.h create mode 100644 mbfido/newspost.c create mode 100644 mbfido/newspost.h create mode 100644 mbfido/notify.c create mode 100644 mbfido/notify.h create mode 100644 mbfido/orphans.c create mode 100644 mbfido/orphans.h create mode 100644 mbfido/ping.c create mode 100644 mbfido/ping.h create mode 100644 mbfido/post.c create mode 100644 mbfido/post.h create mode 100644 mbfido/postecho.c create mode 100644 mbfido/postecho.h create mode 100644 mbfido/postemail.c create mode 100644 mbfido/postemail.h create mode 100644 mbfido/postnetmail.c create mode 100644 mbfido/postnetmail.h create mode 100644 mbfido/ptic.c create mode 100644 mbfido/ptic.h create mode 100644 mbfido/qualify.c create mode 100644 mbfido/qualify.h create mode 100644 mbfido/queue.c create mode 100644 mbfido/queue.h create mode 100644 mbfido/rfc2ftn.c create mode 100644 mbfido/rfc2ftn.h create mode 100644 mbfido/rnews.c create mode 100644 mbfido/rnews.h create mode 100644 mbfido/rollover.c create mode 100644 mbfido/rollover.h create mode 100644 mbfido/scan.c create mode 100644 mbfido/scan.h create mode 100644 mbfido/scannews.c create mode 100644 mbfido/scannews.h create mode 100644 mbfido/sendmail.c create mode 100644 mbfido/sendmail.h create mode 100644 mbfido/storeecho.c create mode 100644 mbfido/storeecho.h create mode 100644 mbfido/storenet.c create mode 100644 mbfido/storenet.h create mode 100644 mbfido/tic.c create mode 100644 mbfido/tic.h create mode 100644 mbfido/toberep.c create mode 100644 mbfido/toberep.h create mode 100644 mbfido/tosspkt.c create mode 100644 mbfido/tosspkt.h create mode 100644 mbfido/tracker.c create mode 100644 mbfido/tracker.h create mode 100644 mbfido/unpack.c create mode 100644 mbfido/unpack.h create mode 100644 mbfido/utic.c create mode 100644 mbfido/utic.h create mode 100644 mbmon/.cvsignore create mode 100644 mbmon/Makefile create mode 100644 mbmon/mbmon.c create mode 100644 mbmon/mbmon.h create mode 100644 mbmon/mutil.c create mode 100644 mbmon/mutil.h create mode 100644 mbmon/proglock.c create mode 100644 mbmon/proglock.h create mode 100644 mbnntp/.cvsignore create mode 100644 mbnntp/Makefile create mode 100644 mbnntp/atoul.c create mode 100644 mbnntp/atoul.h create mode 100644 mbnntp/auth.c create mode 100644 mbnntp/auth.h create mode 100644 mbnntp/commands.c create mode 100644 mbnntp/commands.h create mode 100644 mbnntp/hash.c create mode 100644 mbnntp/hash.h create mode 100644 mbnntp/lhash.c create mode 100644 mbnntp/lhash.h create mode 100644 mbnntp/mbnntp.c create mode 100644 mbnntp/mbnntp.h create mode 100644 mbnntp/mkftnhdr.c create mode 100644 mbnntp/mkftnhdr.h create mode 100644 mbnntp/msgflags.c create mode 100644 mbnntp/msgflags.h create mode 100644 mbnntp/openport.c create mode 100644 mbnntp/openport.h create mode 100644 mbnntp/rfc2ftn.c create mode 100644 mbnntp/rfc2ftn.h create mode 100644 mbnntp/ttyio.c create mode 100644 mbnntp/ttyio.h create mode 100644 mbsebbs/.cvsignore create mode 100644 mbsebbs/Makefile create mode 100644 mbsebbs/bye.c create mode 100644 mbsebbs/bye.h create mode 100644 mbsebbs/change.c create mode 100644 mbsebbs/change.h create mode 100644 mbsebbs/chat.c create mode 100644 mbsebbs/chat.h create mode 100644 mbsebbs/dispfile.c create mode 100644 mbsebbs/dispfile.h create mode 100644 mbsebbs/door.c create mode 100644 mbsebbs/door.h create mode 100644 mbsebbs/email.c create mode 100644 mbsebbs/email.h create mode 100644 mbsebbs/exitinfo.c create mode 100644 mbsebbs/exitinfo.h create mode 100644 mbsebbs/file.c create mode 100644 mbsebbs/file.h create mode 100644 mbsebbs/filesub.c create mode 100644 mbsebbs/filesub.h create mode 100644 mbsebbs/fsedit.c create mode 100644 mbsebbs/fsedit.h create mode 100644 mbsebbs/funcs.c create mode 100644 mbsebbs/funcs.h create mode 100644 mbsebbs/input.c create mode 100644 mbsebbs/input.h create mode 100644 mbsebbs/language.c create mode 100644 mbsebbs/language.h create mode 100644 mbsebbs/lastcallers.c create mode 100644 mbsebbs/lastcallers.h create mode 100644 mbsebbs/logentry.c create mode 100644 mbsebbs/logentry.h create mode 100644 mbsebbs/mail.c create mode 100644 mbsebbs/mail.h create mode 100644 mbsebbs/mbnewusr.c create mode 100644 mbsebbs/mbnewusr.h create mode 100644 mbsebbs/mbsebbs.c create mode 100644 mbsebbs/mbsebbs.h create mode 100644 mbsebbs/menu.c create mode 100644 mbsebbs/menu.h create mode 100644 mbsebbs/mib.c create mode 100644 mbsebbs/mib.h create mode 100644 mbsebbs/misc.c create mode 100644 mbsebbs/misc.h create mode 100644 mbsebbs/morefile.c create mode 100644 mbsebbs/morefile.h create mode 100644 mbsebbs/msgutil.c create mode 100644 mbsebbs/msgutil.h create mode 100644 mbsebbs/newuser.c create mode 100644 mbsebbs/newuser.h create mode 100644 mbsebbs/offline.c create mode 100644 mbsebbs/offline.h create mode 100644 mbsebbs/oneline.c create mode 100644 mbsebbs/oneline.h create mode 100644 mbsebbs/openport.c create mode 100644 mbsebbs/openport.h create mode 100644 mbsebbs/page.c create mode 100644 mbsebbs/page.h create mode 100644 mbsebbs/pinfo.c create mode 100644 mbsebbs/pinfo.h create mode 100644 mbsebbs/pop3.c create mode 100644 mbsebbs/pop3.h create mode 100644 mbsebbs/signature.c create mode 100644 mbsebbs/signature.h create mode 100644 mbsebbs/term.c create mode 100644 mbsebbs/term.h create mode 100644 mbsebbs/timecheck.c create mode 100644 mbsebbs/timecheck.h create mode 100644 mbsebbs/timeout.c create mode 100644 mbsebbs/timeout.h create mode 100644 mbsebbs/timestats.c create mode 100644 mbsebbs/timestats.h create mode 100644 mbsebbs/transfer.c create mode 100644 mbsebbs/transfer.h create mode 100644 mbsebbs/ttyio.c create mode 100644 mbsebbs/ttyio.h create mode 100644 mbsebbs/user.c create mode 100644 mbsebbs/user.h create mode 100644 mbsebbs/userlist.c create mode 100644 mbsebbs/userlist.h create mode 100644 mbsebbs/whoson.c create mode 100644 mbsebbs/whoson.h create mode 100644 mbsebbs/ymrecv.c create mode 100644 mbsebbs/ymrecv.h create mode 100644 mbsebbs/ymsend.c create mode 100644 mbsebbs/ymsend.h create mode 100644 mbsebbs/zmmisc.c create mode 100644 mbsebbs/zmmisc.h create mode 100644 mbsebbs/zmrecv.c create mode 100644 mbsebbs/zmrecv.h create mode 100644 mbsebbs/zmsend.c create mode 100644 mbsebbs/zmsend.h create mode 100644 mbsetup/.cvsignore create mode 100644 mbsetup/Makefile create mode 100644 mbsetup/grlist.c create mode 100644 mbsetup/grlist.h create mode 100644 mbsetup/ledit.c create mode 100644 mbsetup/ledit.h create mode 100644 mbsetup/m_archive.c create mode 100644 mbsetup/m_archive.h create mode 100644 mbsetup/m_bbs.c create mode 100644 mbsetup/m_bbs.h create mode 100644 mbsetup/m_domain.c create mode 100644 mbsetup/m_domain.h create mode 100644 mbsetup/m_farea.c create mode 100644 mbsetup/m_farea.h create mode 100644 mbsetup/m_fdb.c create mode 100644 mbsetup/m_fdb.h create mode 100644 mbsetup/m_ff.c create mode 100644 mbsetup/m_ff.h create mode 100644 mbsetup/m_fgroup.c create mode 100644 mbsetup/m_fgroup.h create mode 100644 mbsetup/m_fido.c create mode 100644 mbsetup/m_fido.h create mode 100644 mbsetup/m_global.c create mode 100644 mbsetup/m_global.h create mode 100644 mbsetup/m_hatch.c create mode 100644 mbsetup/m_hatch.h create mode 100644 mbsetup/m_ibc.c create mode 100644 mbsetup/m_ibc.h create mode 100644 mbsetup/m_lang.c create mode 100644 mbsetup/m_lang.h create mode 100644 mbsetup/m_limits.c create mode 100644 mbsetup/m_limits.h create mode 100644 mbsetup/m_magic.c create mode 100644 mbsetup/m_magic.h create mode 100644 mbsetup/m_mail.c create mode 100644 mbsetup/m_mail.h create mode 100644 mbsetup/m_marea.c create mode 100644 mbsetup/m_marea.h create mode 100644 mbsetup/m_menu.c create mode 100644 mbsetup/m_menu.h create mode 100644 mbsetup/m_mgroup.c create mode 100644 mbsetup/m_mgroup.h create mode 100644 mbsetup/m_modem.c create mode 100644 mbsetup/m_modem.h create mode 100644 mbsetup/m_new.c create mode 100644 mbsetup/m_new.h create mode 100644 mbsetup/m_ngroup.c create mode 100644 mbsetup/m_ngroup.h create mode 100644 mbsetup/m_node.c create mode 100644 mbsetup/m_node.h create mode 100644 mbsetup/m_ol.c create mode 100644 mbsetup/m_ol.h create mode 100644 mbsetup/m_protocol.c create mode 100644 mbsetup/m_protocol.h create mode 100644 mbsetup/m_route.c create mode 100644 mbsetup/m_route.h create mode 100644 mbsetup/m_service.c create mode 100644 mbsetup/m_service.h create mode 100644 mbsetup/m_task.c create mode 100644 mbsetup/m_task.h create mode 100644 mbsetup/m_tic.c create mode 100644 mbsetup/m_tic.h create mode 100644 mbsetup/m_ticarea.c create mode 100644 mbsetup/m_ticarea.h create mode 100644 mbsetup/m_tty.c create mode 100644 mbsetup/m_tty.h create mode 100644 mbsetup/m_users.c create mode 100644 mbsetup/m_users.h create mode 100644 mbsetup/m_virus.c create mode 100644 mbsetup/m_virus.h create mode 100644 mbsetup/mbsetup.c create mode 100644 mbsetup/mutil.c create mode 100644 mbsetup/mutil.h create mode 100644 mbsetup/screen.c create mode 100644 mbsetup/screen.h create mode 100644 mbsetup/stlist.c create mode 100644 mbsetup/stlist.h create mode 100644 mbtask/.cvsignore create mode 100644 mbtask/Makefile create mode 100644 mbtask/calllist.c create mode 100644 mbtask/calllist.h create mode 100644 mbtask/callstat.c create mode 100644 mbtask/callstat.h create mode 100644 mbtask/crc.c create mode 100644 mbtask/issue create mode 100644 mbtask/issue.netbsd create mode 100644 mbtask/mbtask.c create mode 100644 mbtask/mbtask.h create mode 100644 mbtask/outstat.c create mode 100644 mbtask/outstat.h create mode 100644 mbtask/pidinfo.c create mode 100644 mbtask/ping.c create mode 100644 mbtask/ping.h create mode 100644 mbtask/ports.c create mode 100644 mbtask/ports.h create mode 100644 mbtask/scanout.c create mode 100644 mbtask/scanout.h create mode 100644 mbtask/signame.c create mode 100644 mbtask/signame.h create mode 100644 mbtask/taskchat.c create mode 100644 mbtask/taskchat.h create mode 100644 mbtask/taskcomm.c create mode 100644 mbtask/taskcomm.h create mode 100644 mbtask/taskdisk.c create mode 100644 mbtask/taskdisk.h create mode 100644 mbtask/taskibc.c create mode 100644 mbtask/taskibc.h create mode 100644 mbtask/taskinfo.c create mode 100644 mbtask/taskinfo.h create mode 100644 mbtask/taskregs.c create mode 100644 mbtask/taskregs.h create mode 100644 mbtask/taskstat.c create mode 100644 mbtask/taskstat.h create mode 100644 mbtask/taskutil.c create mode 100644 mbtask/taskutil.h create mode 100644 mbutils/.cvsignore create mode 100644 mbutils/Makefile create mode 100644 mbutils/dlcount.c create mode 100644 mbutils/dlcount.h create mode 100644 mbutils/mball.c create mode 100644 mbutils/mball.h create mode 100644 mbutils/mbbw.c create mode 100644 mbutils/mblang.c create mode 100644 mbutils/mbsnmp.c create mode 100644 mbutils/mbsnmp.h create mode 100644 mbutils/mbstat.c create mode 100644 mbutils/mbstat.h create mode 100644 mbutils/mbtoberep.c create mode 100644 mbutils/mbuser.c create mode 100644 mbutils/mbuser.h create mode 100644 script/.cvsignore create mode 100644 script/Makefile create mode 100644 script/README create mode 100644 script/bbsdoor.sh create mode 100644 script/bbsjmacsrc create mode 100644 script/bbsjoerc create mode 100644 script/doors.bat create mode 100644 script/editor.in create mode 100644 script/hatch create mode 100644 script/init.Debian create mode 100644 script/init.FreeBSD create mode 100644 script/init.Gentoo create mode 100644 script/init.NetBSD create mode 100644 script/init.OpenBSD create mode 100644 script/init.RedHat create mode 100644 script/init.Slackware create mode 100644 script/init.SuSE create mode 100644 script/installinit.sh create mode 100644 script/maint create mode 100644 script/mbsedos create mode 100644 script/midnight create mode 100644 script/monthly create mode 100644 script/rundoor.sh create mode 100644 script/runvirtual.sh create mode 100644 script/setup.mbse create mode 100644 script/weekly create mode 100644 unix/.cvsignore create mode 100644 unix/Makefile create mode 100644 unix/basename.c create mode 100644 unix/basename.h create mode 100644 unix/chowntty.c create mode 100644 unix/chowntty.h create mode 100644 unix/commonio.c create mode 100644 unix/commonio.h create mode 100644 unix/encrypt.c create mode 100644 unix/encrypt.h create mode 100644 unix/env.c create mode 100644 unix/env.h create mode 100644 unix/getdef.c create mode 100644 unix/getdef.h create mode 100644 unix/limits.c create mode 100644 unix/limits.h create mode 100644 unix/log.c create mode 100644 unix/log.h create mode 100644 unix/login.defs.in create mode 100644 unix/loginprompt.c create mode 100644 unix/loginprompt.h create mode 100644 unix/mblogin.c create mode 100644 unix/mblogin.h create mode 100644 unix/mbpasswd.c create mode 100644 unix/mbpasswd.h create mode 100644 unix/mbuseradd.c create mode 100644 unix/mbuseradd.h create mode 100644 unix/myname.c create mode 100644 unix/myname.h create mode 100644 unix/putpwent.c create mode 100644 unix/putpwent.h create mode 100644 unix/pw_util.c create mode 100644 unix/pw_util.h create mode 100644 unix/pwauth.c create mode 100644 unix/pwauth.h create mode 100644 unix/pwdcheck.c create mode 100644 unix/pwdcheck.h create mode 100644 unix/pwio.c create mode 100644 unix/pwio.h create mode 100644 unix/rad64.c create mode 100644 unix/rad64.h create mode 100644 unix/salt.c create mode 100644 unix/salt.h create mode 100644 unix/setugid.c create mode 100644 unix/setugid.h create mode 100644 unix/setupenv.c create mode 100644 unix/setupenv.h create mode 100644 unix/sgetpwent.c create mode 100644 unix/sgetpwent.h create mode 100644 unix/shadowio.c create mode 100644 unix/shadowio.h create mode 100644 unix/shell.c create mode 100644 unix/shell.h create mode 100644 unix/sub.c create mode 100644 unix/sub.h create mode 100644 unix/utmp.c create mode 100644 unix/utmp.h create mode 100644 unix/xmalloc.c create mode 100644 unix/xmalloc.h diff --git a/.hgignore b/.hgignore new file mode 100644 index 00000000..f8840859 --- /dev/null +++ b/.hgignore @@ -0,0 +1,11 @@ +.filelist +FILE_ID.DIZ +INSTALL +Makefile.global +autom4te.cache +config.cache +config.h +config.log +config.status +paths.h +stamp-h diff --git a/AUTHORS b/AUTHORS new file mode 100644 index 00000000..79f7dc03 --- /dev/null +++ b/AUTHORS @@ -0,0 +1,60 @@ + MBSE BBS AUTHORS. + +$Id: AUTHORS,v 1.29 2007/08/22 21:14:38 mbse Exp $ + + +The following people are members of the MBSE BBS development team: + +Michiel Broek mbroek@mbse.eu 2:280/2802 +Ken Bowley kbowley@users.sourceforge.net, 1:114/485@fidonet +Redy Rodriguez redy@users.sourceforge.net 2:283/613.6 +Scott Street sstreet98@users.sourceforge.net, 1:266/420@fidonet + + +All following people have contributed to the MBSE BBS project. I'm sure that +people are missing from this list. The list is not in any special order. + +Joaquim Homrighausen joho@abs.lu +Andrew Milner andrew@fido.lu +Mats Wallin mw@fido.lu +Eugene G. Crosser crosser@average.org +Stanislav Voronyi stas@uanet.kharkov.ua +T. Tanaka +Martin Junius +Omen Technology Inc +Arjen G. Lentz +Cristof Meerwald +P. Saratxaga +Dima Maloff +Jan van de Werken +Sean Rima +Juergen Heisel +Jim Hansen +Johannes Lundberg 2:206/149@fidonet, +Vincent Danen +Francois Thunus francois@telematique.org +Johan Lindh +William McBrine +Harald Wuensch +NERvOus nervous@nervous.it +Bobby Cabral bobbyc@digitelone.com +Johannes Beekhuizen 2:280/1018@fidonet +Lukas De Groen 2:280/1027@fidonet +Vince Coen 2:257/609@fidonet +Joachim Kuwan 2:249/591@fidonet +Greek greek@voyager.nnov.ru +Sergey Nechaev 2:5015/53@fidonet +Serge Terekhov 2:5000/13@fidonet +Vadim Kurland vadim@gu.kiev.ua +Vadim Zaliva lord@crocodile.kiev.ua +Przemyslaw Kwiatkowski 2:480/127@fidonet +Phil Kimble kimerud@users.sourceforge.net 1:14/200@fidonet +David Gonzalez skynetbbs@007mundo.com 4:930/1@fidonet +Malte Tychsen 2:240/9350@fidonet +Dmitry Komissaroff rsprog@mail.ru +skyroam skyroam@users.sourceforge.net +val khokhlov 2:550/180@fidonet +Robert Wolfe 1:2613/4307@fidonet +Alan Ianson +Simon Voortman 2:280/1049.1@fidonet + diff --git a/COPYING b/COPYING new file mode 100644 index 00000000..5b6e7c66 --- /dev/null +++ b/COPYING @@ -0,0 +1,340 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Library General +Public License instead of this License. diff --git a/CRON.sh b/CRON.sh new file mode 100644 index 00000000..fe693ca9 --- /dev/null +++ b/CRON.sh @@ -0,0 +1,93 @@ +#!/bin/sh +# +# $Id: CRON.sh,v 1.6 2005/08/26 10:42:43 mbse Exp $ +# +# Crontab setup script for MBSE BBS + +echo "MBSE BBS for Unix crontab setup. Checking your system..." + +# Basic checks. +if [ `whoami` != "mbse" ]; then +cat << EOF +*** Run $0 as "mbse" user only! *** + + Because the crontab for mbse must be changed, you must be mbse. + +*** SETUP aborted *** +EOF + exit 2 +fi + +if [ "$MBSE_ROOT" = "" ]; then + echo "*** The MBSE_ROOT variable doesn't exist ***" + echo "*** SETUP aborted ***" + exit 2 +fi + +if [ "`grep mbse: /etc/passwd`" = "" ]; then + echo "*** User 'mbse' does not exist on this system ***" + echo "*** SETUP aborted ***" + exit 2 +fi + +if [ "`crontab -l`" != "" ]; then + echo "*** User 'mbse' already has a crontab ***" + echo "*** SETUP aborted ***" + exit 2 +fi + +MHOME=$MBSE_ROOT + +clear +cat << EOF + Everything looks allright to install the default crontab now. + If you didn't install all bbs programs yet, you better hit + Control-C now and run this script when everything is installed. + If you insist on installing the crontab without the bbs is complete + you might get a lot of mail from cron complaining about errors. + + The default crontab will have entries for regular maintenance. + You need to add entries to start and stop polling fidonet uplinks. + There is a example at the bottom of the crontab which is commented + out of course. + + On most systems you can edit the crontab by typing "crontab -e". + +EOF + +echo -n "Hit Return to continue or Control-C to abort: " +read junk + +echo "Installing MBSE BBS crontab..." + +crontab - << EOF +#------------------------------------------------------------------------- +# +# Crontab for mbse bbs. +# +#------------------------------------------------------------------------- + +# User maintenance etc. Just do it sometime when it's quiet. +00 09 * * * $MHOME/etc/maint + +# Midnight event at 00:00. +00 00 * * * $MHOME/etc/midnight + +# Weekly event at Sunday 00:15. +15 00 * * 0 $MHOME/etc/weekly + +# Monthly event at the 1st day of the month at 01:30. +30 00 1 * * $MHOME/etc/monthly + +#----------------------------------------------------------------------------- +# +# From here you should enter your outgoing mailslots, when to send mail etc. + +# Mail slot example. +#00 02 * * * export MBSE_ROOT=$MHOME; \$MBSE_ROOT/bin/mbout poll f16.n2801.z2 -quiet +#00 03 * * * export MBSE_ROOT=$MHOME; \$MBSE_ROOT/bin/mbout stop f16.n2801.z2 -quiet + +EOF + +echo "Done." + diff --git a/ChangeLog b/ChangeLog new file mode 100644 index 00000000..50ac1754 --- /dev/null +++ b/ChangeLog @@ -0,0 +1,116 @@ +$Id: ChangeLog,v 1.1225 2008/12/28 12:28:25 mbse Exp $ + +v0.95.5 29-Nov-2008 + + upgrade: + Start mbsetup, enter global setup, leave and save. + + mbselib: + Newsservers can be connected with a port number from the + setup. + + mbsetup: + In screen 1.12 a nntp port number can be set. + Added a switch to force authentication on connect with nntp + servers. + + examples: + Added German menus and textfiles, written by Niels Haedecke. + + +v0.95.4 31-Aug-2008 - 29-Nov-2008 + + upgrade: + Start mbsetup, enter global menu, leave and save. + + mbnntp: + A cosmetic change to add an extra newline before the tearline. + + mbfido: + A cosmetic change to add an extra newline before the tearline. + + mbsebbs: + Fixed a buffer overflow in lastcallers display. + + mbsetup: + Increased the size of the nntp username and password fields to + 32 characters. + + script: + installinit.sh now knows about Slamd64. + SETUP.sh now knows about Slamd64. + + +v0.95.3 12-Mar-2008 - 31-Aug-2008. + + mbfido: + Fixed another buffer overflow thanks someone who is using a + tic processor that doesn't follow specs and doesn't create + proper ticfiles. + + +v0.95.2 17-Feb-2008 - 12-Mar-2008. + + mbselib.h: + Added stream scanning for F-Prot. + + mbfido: + Fixed missing SEENBY entry of our own aka if a echomail + message came from another zone. + + mbsetup: + Fixed chapter numbering in the ascii sitedoc. + + script: + Fixed hatch script to send File line. Note: you must manually + install hatch.new to hatch in the bin directory and set the + password again, this script will not automatic install. + + mbtask: + Call setprgp is not fatal if it fails. + + +v0.95.1 07-Jan-2008 - 17-Feb-2008. + + upgrade: + Start mbsetup and exit. If you have a clamd running on some + server (or bbs machine), you can switch to use stream + scanning. See the manual for details. + + mbselib.h: + Added file virscan function. + Added stream scanning for ClamAV, scanning is 10 times faster + compared to the commandline scanner. + Don't log errors if execute unzip returned error 11. + + mbtask: + Added last changes for MIB counters. + + mbfido: + Changed error message on the news gate. + Switched to virus scanner from library. + + mbfile: + Switched to virus scanner from library. + + mbsebbs: + Added MIB counters. + Switched to virus scanner from library. + + mbsetup: + Added support for TCP stream scanners. + + script: + Added support for Zenwalk. + + +v0.95.0 25-Nov-2007 - 07-Jan-2008 + + mbcico: + The maximum speed to show to the other end is now 4294976295. + + mbsetup: + Changed the maximum linespeed to display for TCP/IP sessions to + 4294976295. Numbers above 2147483647 might display on remote + systems as negative numbers. + diff --git a/ChangeLog_1998 b/ChangeLog_1998 new file mode 100644 index 00000000..b53b9eab --- /dev/null +++ b/ChangeLog_1998 @@ -0,0 +1,1393 @@ +$Id: ChangeLog_1998,v 1.1 2002/06/01 13:55:39 mbroek Exp $ + + MBSEBBS History in 1998. + + +v0.00 Started work on the Rapidbbs sources to make new structures, + headerfiles and makefiles. + The whole thing will include Fidonet echomail and tic file processing. + +v0.01 Until v0.06 lots of sourcecode fixes, bugs removed which became + visible after writing the new header and makefiles. Included common + and jamapi libraries. The jamapi is not in use yet but will be the + final message base format. + + Rewritten the mbse deamon. This deamon monitors the bbs and all the + utilities. + + Written an import util to import textfiles from the databases exported + by a little Pascal program that exports the RA databases from the DOS + bbs. + + Started writing a new setup utility. While doing this the old config + program is being stripped down. + + Renamed the filelist program to allfiles. + +v0.06 In the internal mbsed server structure added information for user + online messages. Added ADIS:2,pid,flag; set users Do Not Disturb + flag, also changed the bbs to sent that flag. + + Added Status commands to the mbsed, test for BBS open, and Zone + Mail Hour. 2 new statements in etc/mbsed.conf. The mbsebbs now + tests at startup for ZMH and BBS open. If it is closed the user is + disconnected with the reason why. + +v0.07 The new structures are ready. The bbs can run with local mail only. + + Renamed the filepack program to mbfile, it will do a lot more later. + + Removed the whoson program, the functions are in the setup program now. + + Added in the setup program the oneliner editor, protocols editor, + language setup editor, limits editor. + The oneliner editor has an import facility to import plain textfiles + to add oneliners. + + Changed structures again, lastcaller and ttyinfo. + + Removed the usered program, the users editor is in setup now. + + Fixed the download (non batching) function DownloadB, it does work + more or less. Changed the calling program from execl() to system() + to fix the stack problems. Now need testing voor carrier loss and + timeouts. + + After testing with a DOS-PC (A real fast 286 10 MHz state of the art + of the eighties, directly connected to the tty port) the Good_Bye + function needed 5 seconds extra delay to be shure all data is + send to the user. Also the parent died too fast so the mbsed server + wasn't notified when the client was logged off. + + In the bbs chat.c added unlink the /tmp/.BusyChatting file so the + chat could be more than once in a session. + + In the internal mbsed server structure added information for user + online messages. Added ADIS:2,pid,flag; set users Do Not Disturb + flag, also changed the bbs to sent that flag. + + Added Status commands to the mbsed, test for BBS open, and Zone + Mail Hour. 2 new statements in etc/mbsed.conf. The mbsebbs now + tests at startup for ZMH and BBS open. If it is closed the user is + disconnected with the reason why. + +v0.08 Added the JAM c api. This is a modified version for Linux. + + Reading JAM messages and Quickscan JAM messages implemented. Removed + support for the old message base format. The function Msg_Post() does + not work anymore, must be rewritten to support JAM. + + In the msgpack program removed all code for the old message base + format. Inluded support for client/server. + + Removed all structures of the old message base format, the only + format left is JAM. + + +v0.09 22-Mar-1998. + In Language data compiler removed output to screen for each compiled + line. When finished compiling it reports the number of language lines. + + Changed the number of lines for the line editor in Post_Msg() and + Reply_Msg() in a #define statement. In the language source it still + allways says 60 lines. + + Bugfix in mbsetup: edit message area item 7 an 8 didn't work. + + Start writing of man pages. + + Start writing mbfido, the net- echomail tosser, scanner and packer. + Succeeded tossing echomail, no dupechecking, links checking or other + checks are done. No reply linking either. + + mbsetup: Added Fidonet aka setup. + + Moved JAM I/O functions to the common directory. + + Created the mbmon program out of mbsetup. Removed those items from + mbsetup. + + Start build of the dbase library, this library will contain functions + to access the configuration datafiles for all utilities except the + mbsetup program. + +v0.10 15-Apr-1998. + Allfiles changed to make use of the common and dbase libraries. Does + logging now of activities. Removed links to src/bbs/funcs4.c + + Added fileareas and filesdatabase import to the import program. + + Corrected file area mismatches in mbsebbs and fedit. + + Mbsetup: finished global setup. Fixed pull filegroup and messagegroup. + Added edit bbs file areas. Changed format of fareas.data. + + mbfido: Added first dupechecks, only logging. Fixed errors in dbase + search routines, caused mail to be tossed in the wrong directories. + Added tossing of bad (unknown areas) and dupe mail in the bad and + dupe boards. Checks for .PKT destination implemented. Ideas for + netmail tracking written. Dupe checking seems to work, but I can't + compare it with my other tosser yet. Note after more testing: + it's better than GEcho's 1.11+ dupechecking. + + allfiles: Opens header.txt now only before processing the areas. + Added footer.txt. Both files must be in the configfiles directory, + if they are not present, nothing will be inserted. Removed all code + that constantly opened and closed the output file. Added logging for + total processing time. Added new lines to the area headers. Areas + are only written if there are downloadable files in them. Download + counter now represents bbs downloads, ftp downloads and file requests. + The last two counters are not in use yet. + +v0.11 26-Apr-1998 + mbsebbs: In the mail reader swapped From and To language fields, the + names were in the right place. Added the nodenumber after the from + name. Must be set for messagearea type (Local/Net/Echo). + + mbfido: Corrected some loglevels. + + userpack: rewritten from scratch. Deletes unix accounts as well, uses + /usr/sbin/userdel to do this, so shadow support works just fine. + This program must be run as setuid root setgid root. + + structs.h: removed flags for Unixmode and all related flags. + + mbuseradd: written. This is a setuid root setgid root version of + adduser, this program is called by newuser to create the unix account + of a bbs user. It also creates the homedirectory, the .profile file + and expires the unix account password. When a new created unix user + logs in he will be prompted for a new password. + + newuser: lots of rewriting. Added inactivity timers. Now we have + always unix accounts and fido bbs accounts. It will also die + nicely when the user did hangup on us or waited for idle timeout. + + mbsebbs: Check for unix account, if it doesn't exist the user is + forced to create a unix account. If unix login we now have a pause() + at the same place the password prompt is so the user can see the + opening screen and read it. + Removed the code that there was a parent (guarding users logon time) + and a child process (running the user). There is only one process now. + Implemented keyboard input timers. The total onlinetime must be + guarded in another way now, ie. checking must be done at prompts. + In the mean time proper idletimeout, hangup and error conditions + will log the user off in a neat way and writing into the logs about + what happened is mostly solved. + + mbsebbs and newuser: New users can only be handled by the newuser + program. Listed users only by the mbsebbs program. You need 2 accounts + without a password for this. Maybe I'll chain these 2 programs later. + + misc: compiling is a mess again, more libraries are needed, time to + close this version. + +v0.12 07-May-1998. + mbsed: Rename the logfile from "mbsed" to "mbsed.log". The mbsed + logfile is opened and closed everytime now. Logfile cleanup utils + can now safely remove the logfile, make it smaller etc. + + mbsebbs: Splitted misc.c into bye.c, pinfo.c and misc.c + + dbase library: added userrecord search. Added netmailboard search. + + mbfido: removed segmentation fault caused by a too long kludge, added + a check for the stringlength (512 bytes). Removed bugs in netmail + destination tests. Implementation of ftn netmail import into JAM area. + Only the first netmail area is used, no need for several areas now. + + mbsebbs: Added aka display when reading netmail. Changed autowrap + to line 74. + Added test for users handle when scanning new mail. + Removed test tlcap() when comparing names. The tosser should correct + the names. + Changed the MsgSelectPrompt() to default return the lastread pointer + instead of message 1. + Changed Read_a_Message() so it will return TRUE if message read was ok, + FALSE otherwise. + CheckMail() now starts searching at the users lastread pointer. It + now also keeps track of messages to the user, and gives the option + to read them. Reply is not possible yet, but posting isn't working + also. + Added a check that the receivername must exist to prevent false new + mail. + Changed UserList() to skip the empty userbase records. + Place the users timecheck functions in a separate file, made it work + again. Inserted timecheck points at several prompts. + Changed the timebank to reflect new timecheck routine's. + Moved the exitinfo functions to a separate file, several other modules + now use new functions in this file instead of internal ones. + Changed FileArea_List() to work with options (F+ and F-) for direct + area change. + Improved the fatal menu error construction. The user now sees a message + and will logoff by SIGILL. + +v0.13 24-May-1998. + mbfido: + Added a debug line to show flagfield of the original packet. + Added code to fill the message header MsgIdCRC and ReplyCRC + fields. + Added version info in the logfile. + + mbsebbs: + Corrected unixmode login problem if there where more than one + field within the gecos field of the passwd file. + Added version info in the logfile. + Changed the setting of signal handlers, removed SIGINT, added + SIGILL. + Supress display goodby screen in case of a SIGHUP. + Display ttyinfo.comment instead if ttyname in connect info. + Added create/check for subdirectories wrk and tag in the users + homedirectory, wrk is for the users homedir fileoptions, tag + is where symlinks of tagged files area placed. + Corrected message diplayed to user when logging in during zone + mail hour. + Removed menu option GlobalDownload, see new feature below. + Implemented download file tagging in menus FileList and + NewFilesScan. + Implemented download tagged files, the old download function + is gone. + Moved Change_Protocol and Set_Protocol from file.c to change.c + where they belong. Change_Protocol is now Chg_Protocol as all + other functions in change.c use the same naming convention. + Made KeywordScan and FilenameScan working without coredumps, + implemented file tagging. + Made enum vars for WhosDoingWhat. + Changed the internal filearea record number, area 1 is now 1, + not 0. This should prevent a lot of bugs. + Now setting large timeouts on the client/server guard during + filetransfers to prevent server disconnection. Changed mbsed + and common.a for that. + Added logging info when user is kicked out if the BBS is + closed. + Split file.c into file.c and filesub.c + Added menu function 111, Copy file to home directory. + Download_Home, Delete_Home, List_Home, Upload_Home now all work + with the new directory structure. Upload and Download homedir + do not count uploaded/downloaded bytes, the user gets no ratio + bonus after upload, only the up/downloads are counted. + Quota check for users home directory. The value can be set + with the mbsetup program, value is MBytes. + Removed error message if user selected a menu option where he + has no access rights for. The user now sees nothing. If you + want to give a response, use the menu system! + Reset colors to lightgray on black after logoff. + Added menu function EditTaglist. + + mbsed: + Invented two new commands, ATIM:1,n; which set a new client/ + server timeout, and ADEF:0; which resets the client/server + timeout to 600 seconds. + + common.a: + Implemented the two new client/server commands: ATIM and ADEF. + + mbsetup: + In global BBS setup, added editing Users Quota. + + import: + In FDB import, changed the filenames to lowercase. + + allfiles: + Output list now contains CR/LF at the end of each line. + + mbuseradd: + Added the line "export TERM=pcansi" to the generated .profile + in the new users home directory. This seems to work quite well + for all kinds of clients. + + + +v0.14 02-Jun-1998. + msgpack: + Renamed to mbmsg, it will do more as just packing messages. + Implemented using the msgbase.a library: Purging (Days old + and Max msgs), Packing deleted messages and Reply linking. + During pack the messages are renumbered and lastread pointers + are adjusted. + + mbsetup: + Added edit messagebase storage type. + + msgbase.a: + New library, universal message base library, must support + JAMmb, Fido *.MSG, Passthru, Usenet news and E-Mail. + This came original from LoraBBS, written by Marco Maccaferri. + I changed the sources to normal C code without objects, that + was the fastest method to mix it with the existing sources. + I dropped support for Hudson and Squish. + Only JAM is supported for a start. + The JAM module renumbers the messages while packing. + Added support for lastread pointers. + Changed all msg handling so that the messagetext must contain + all the kludges to be compatible with several message bases. + This means that the JAM module now handles the kludges in the + text, storing and retrieving it between the *.jhr files and + text. This also means that the applications don't have to + worry about kludges. + + mbsebbs: + Changed mail.c to work with the new msgbase library, dropped + the old jamapi. Scanning new messages looks slower, maybe + the speed improvement must be made in the msbase library. + Applied all changes in the messagebase library to the bbs + program. + + mbfido: + Applied all changes in the messagbase library in the tosser + module. While doing that I saw some bugs but they don't + mather anymore. + + + +v0.15 13-Jun-1998. + msgbase.a: + Implemented msgbase locking for JAM messagebase. Dropped + future support for other messagebase formats, I stick to + JAM and only JAM, it can do all we need, including mailer + netmail directory. + Implemented all possible attributes in the interface. + + dbase.a: + Removed some bugs in dbmsgs.c + Added code to update the nodes and msgs data records if they + are changed. + During msgs record loading the group record will also be + loaded if it's defined. + Added support for .tic area lookup. + + mbmsg: + Implemented msgbase locking during msgbase updates. + Added colours. + + mbfido: + Implemented msgbase locking during msgbase updates. + Implemented simple echomail forwarding in the queue. + Splitted tosspkt.c into importmsg.c echoout.c and tosspkt.c + to make the source more readable. + Started collecting SEEN-BY and ^APATH information in memory. + Started appending SEEN-BY entries during echomail forward. + Added code which should append SEEN-BY and PATH lines in + outgoing echomail. + In the startup code changed the catching/ignoring of signals. + Activated mail send and received counters in the nodes + records. + Activated echomail received counters. + Started working on .tic file processing, using my own MBFIX + code (in Turbo Pascal) as a guide. + + mbsed: + Changed the server locking in a more portable and secure way. + Added sequencer counter for generating MSGID numbers and + message packet numbers. + Removed a bug in response strings when the BBS is closed. + The signal SIGTERM is now ignored, we wait for SIGKILL only + so we keep running as long as possible. + + mbmon: + Added support for sequence numbers display. + + mbsebbs: + Removed a bug in the syntax of BBS closed messages. + Added a toggle switch to display message kludges for the sysop. + Added hilite color for quoted message lines in message read. + + mbstat: + The BBS close command doesn't need a reason anymore. + Implemented the wait function. We only wait for users online + and utilities that we want to complete their actions. Depending + on the type of init program, if it uses shutdown scripts, you + can now wait for the system to become idle before the real + system shutdown starts. + + + common.a: + Added a flag "show_log" to the Syslog function to suppress + logging to the screen. + + mbsetup: + Added support to edit .tic areas. + Started working on the creation of a site document, this is + a complete overview of the whole setup. + + +v0.16 06-Jul-1998. + + General: + This version is the first version installed on the real BBS + server, line #2. While doing this I discovered lots of errors + in the Makefiles because I installed it from scratch. I also + found out that GEcho and or RA is screwing up some JAM bases + causing this program to dump core. Did some testing, download + and mail reading is ok. + + mbsebbs: + NewfilesScan and show files listings now work with the file + upload dates instead of the real filedates. + + mbfido: + It's possible to import .tic files into the bbs. + Unknown echomail areas now log with WriteError(). + Added functions to pack mail for downlinks and put it in + the mailer outbound. + Because of small diffrences between ifcico and DOS mailers + running 2 mailers together still doesn't work for attached + files and mail. + Fixed a bug in outbound mail packets, the packed messages + didn't start with 0x0002 so downlinks didn't process the + messages. Output of echomail works now! + When processing large amounts of .tic files, the processing + stopped after about 30 files. Added 2 forgotten fclose + statements. + Added sorting functions for filenames with date/time. All + inbound processing is now sorted by date and time, oldest + files first. + + common.a: + In mbfile.c changed file_cp() to copy file attributes as well. + + userpack: + Changed commandline syntax. + + mbmsg: + Changed commandline syntax. + + mbstat: + Changed commandline syntax. + Added colors. + Does timeout after one hour waiting for the BBS to become free. + + mbsetup: + Added setup for .tic magic records. + Improved logging reason when tossing messages not for us. + + dbase.a: + Remove a bug where reading downlinks from areas base gave + nothing. (Introduced in 0.15). + + mbmon: + Corrected the screen header. + + +v0.17 30-Jul-1998 + + mbfido: + When importing files to the BBS the destination directory + is checked and created if it doesn't exist. + Improved checks when to rearchive incoming files. + Forgot to chdir back to the inbound when rearc failed. + Switching virus check off when the inbound file isn't an + compressed archive. Should check incoming *.exe (selfextracting + archives). + Keep number of files now works. + TIC forwarding to downlinks implemented. There are 2 netmails + for each forwarded file, one for the file itself and one for + the .tic file. The subjectline is to short under Unix. The + second netmail is an empty one, lets see how this works. + Added cookies. + Packing ARCmail now checks for bundles older then 5 days and + creates new bundles if found. + Added netmail pack to ARCmail. + Improved errorlogging again when tossing bad echomail. + Scan for outgoing echomail from the bbs is working. It is a + complete messagebase scan for now. + TIC forwarding again with one netmail, I faked the subject + line, all files seem to come from C:\FILES\. This seems to + give no problems with the other end of the link. + + mbmsg: + Improved debug logging. + Processing in only one area didn't work anymore. + + mbsebbs: + Made post new message work. + Now unlocking and closeing the messagebase after a crash. + Moved the lineeditor to a seperate source module. + Reply to messages is working, also from scan for new mail. + Comment to sysop now works. + Removed the Voting door. + + +v0.18 10-Aug-1998. + + general: + New record structure for fidonet networks. This makes + it possible to use the same nodelist indexes as ifmail. + Note that de define -DHAS_NDBM_H may only be set if you + have done this also in the ifmail package! This is set + in ~/src/mbfido/Makefile + + run_inout: + A shell script run from the mbse crontab (every minute) to + see if there is something to do. It scan's the protected + inbound and scan's for the ~/sema/mailout semafore. + + mbsebbs: + Creates a ~/sema/mailout semafore if mail is entered. + Added extra debug logging during newmail scan. On the live + bbs mbsebbs keeps on dumping core probably due to RA or GEcho. + Most amusing is that after crashing mbsebbs, RA will see new + netmail again, as if only mbsebbs knows how to handle the + users lastread pointers and fixes them for RA; sigh. + + mbfido: + Start working on the netmail tracker/router. It works without + an external routing file, although hosts will need one. + It works on checking known nodes, then nodelists, and then + known nodes again. This is very experimental. + + mbsetup: + Changed to the new fidonet structures. + + import: + Changed to the new fidonet structures. + + general: + Installed at 13-Aug-1998 at the BBS for testing. + + +v0.19 14-Aug-1998 + + general: + Wrote some documentation about how to setup the ftp server + so that it works together with MBSE BBS. + + mbsebbs: + After download the message "updating download counters" now + will first send a to overwrite the zmodem init string + on the users screen. + Added structures for bluewave. + Now scans for new files at logon. + Removed global variable sUserName, gave some strange results. + Added logging which msg area was active when a segmentation + fault occurs. + + script: + A new subdirectory for /bin/sh scripts. Look out with this + one, if you modify the scripts in ~/etc or ~/bin directly + they will be overwritten with each new install. + + mbuseradd: + Add each new user to /etc/ftpusers to prevent them to login + under their own name in the ftp server. + + fbgen: + Setting umask to 002. + + fileedit: + Removed, was obsolete. + + import: + Setting umask to 007. + + common.a: + mkdirs now creates directories with permission 0775. + Added dos<->unix filenames translation. + Rewrote tu() and tl() functions. + + mbfile: + Setting umask to 002. + Now checks for files on disk, but missing in the fdb. Deletes + them when found (exept some). + Now when packing the fdb records marked for deletion, also + if the file is on disk, it is deleted. + Added some commands to the todo list. + With the check command it now reports the area number to the + mbsed server, so mbmon will display how far it is. This will + also avoid timeouts on large areas. + Now handles multiple commands in one run. Pack will run + automatic if there are files deleted. + + mbfido: + Set a semafore "msglink" when the message base is modified. + Added more debug logging for files descriptions. + Implemented dos<->unix filename translation for tic file + forward. + File attaches in .flo files now are DOS filenames and .flo + files are now DOS-compatible. + If there are no more then 2 Long Description lines we asume + that there is a better single (old style) Description line. + There are uplinks that make a mess of these lines. + Netmail forwarding should work now as long as the nodes via + we must route are in our setup. + + mbsed: + Added in wait for free the mbindex and mbuser programs. + + mbindex: + Written. Heavlily based on Eugene Crosser's ifindex. + + mbsetup: + Written the menu editor and removed the old mbconfig program. + Added some editor commands to the user editor. + + mbuser: + Now leaves the records alone with the NeverDelete flag set. + + mbmsg: + Added logging when a segmentation fault occurs which was the + last message area. + + +v0.20 24-Aug-1998 + + common.a: + Moved from mbfido the modules ftn, falists, nlindex and + nodelist to this library. More programs will need it. + + mbindex: + Changed some loglevels. Removed the -force switch, compile + is always forced now. + Removed a bug to the path of the index files. + + import: + Now using dos2unix pathname translation for fileareas and + mailareas import. + + mbfido: + Changed some logging. Removed ftn, falists, nlindex and + nodelist modules, they are now in the common library. + + +v0.21 25-Aug-1998 + + mbindex: + Trashed the index files when a new nodelist in the setup + was added. (ifindex did this also). Now it will allways + force to recreate the index files. + Now sends username who started mbindex to mbsed. + + mbfido: + Imported files into bbs areas now get filemode 0644 instead + of 0660 so the ftp/www clients will really see them. + Corrected the experimental replace test, could never work. + If after trigger the compile nodelist flag there came in + another file, the flag was reset. + Now sends username who started mbfido to mbsed. + + mbsebbs: + Created a language crossreference listing. Corrected some + language numbers. + After changing the language, it is now confirmed in the + new selected language. + When the language file is missing, the error message no longer + comes from the missing language file, now it is hardcoded. + Minimum location length is now adjustable with mbsetup, + changed language prompt 74. + Replaced hardcoded messages in chat with language prompts + 59 and 60. + Changed error logging in exitinfo.c + When reading messages the more prompt is now language prompt + 61 instead of hardcoded. + Posting messages is now blocked for Noreply boards. Language + prompt 438. + In message readpanel now language prompts 211 and 212 for + Next reply: and Reply to: threads. + In message area select now using prompt 207. + In newmailscan, added prompt 218 and the Quit option. + In message status, added prompt 226. + Readpanel, added prompt 227. + Delete specific message subfunction does work now. + In display file with more, changed prompt 72. + Changed prompts in file.c and filesub.c. + The info screen is 1 character smaller, 79 characters, some + terminal programs did extra line wrapping. + Added new language file format, the datafile now includes + the keys users can press. + Moved the loading of user's preffered language more to the + begin of the login procedure. + When the user is unknown (ordinary BBS account), the newuser + programm is started. If that runs successfull (depends on the + user on-line), mbsebbs will be run again. It's probably wise + to merge these 2 programs. + + mbsetup: + Minimum location length installed in menu 1.5 + + allfiles: + Now sends username who started allfiles to mbsed. + + mbfile: + Now sends username who started mbfile to mbsed. + + mbmsg: + Now sends username who started mbmsg to mbsed. + + mbstat: + Now sends username who started mbstat to mbsed. + + mbuser: + Now sends username who started mbuser to mbsed. + Did leave the users.data file owned by root. It is now + set to the owner and group of the "mbse" account. + Added screen output for non-quiet mode. + + lang: + Changed to compile new language datafile format, including + the keys a user can press. + + newuser: + Added new language file format, the datafile now includes + the keys users can press. + Now always asks Date of Birth, this is necessary for later + checks. + At the end now engages mbsebbs. + + mbuseradd: + Now uses the created gid and uid voor changing ownership + of files and directories. + + +v0.22 06-Sep-1998 + + mbsetup: + Changed logfile to one master logfile. + Added menus for offline reader. + + allfiles: + Changed logfile to one master logfile. + + mbsebbs: + Changed logfile to one master logfile. + Started offline reader. + + mbfile: + Changed logfile to one master logfile. + Corrected creating full path/filename in pack files. + Added creating and removing symlinks for file requests. + Now deletes files during "kill" instead of only marking. + Simplified log messages. + Added commandline switch "req", this will only check the + file request symlinks. + + mbmsg: + Changed logfile to one master logfile. + + fbgen: + Changed logfile to one master logfile. + + newuser: + Changed logfile to one master logfile. + + mbuser: + Changed logfile to one master logfile. + + mbstat: + Changed logfile to one master logfile. + + mbindex: + Changed logfile to one master logfile. + + mbfido: + Changed logfile to one master logfile. + Added creating and deleting of symlinks for file requests. + Files removed from the filedatabase when running "keep files" + are now also removed from disk. + Removed some debug logging for netmail forwarding. It seems + to work. + Replace files now works more or less. Moved the fdb packer. + + mbindex: + Only logs crash cause if errorlevel > 0. + Removed some invisible screen output in quiet mode. Cron did + notice this. + + lang: + Renamed to mblang, also the source directory is now mblang. + The directory lang will now be used for language sources. + + +v0.23 20-Sep-1998. + + global: + Added #pragma pack(1) to ~/src/include/libs.h so that all + datafiles are now compatible over several hard and software + platforms. I needed this to implement the BlueWave Offline + Reader into the bbs. Increased the QWK tagname field to 20 + characters. + + mbsebbs: + Made menu execution logging more readable. + If a user has no archiver set, set default to ZIP at logon. + Changed logging in the Download Direct command. + Implemented first raw version of BlueWave Offline Reader. + Needs some security improvements, file requesting, filters + but it works for now. + Checking for a Unix account was done before the password was + checked, so if the password was wrong the user was asked for + a new Unix account again. + + mbfido: + For netmail import now searches the netmail area on zone:net + match. + + import: + Removed bugs when converting DOS to Unix paths which resulted + in corrupted pathnames. + + mbsetup: + Corrected linefeed problem in language doc printing. + Horizontal line drawing now with low-ASCII instead of Alternate + Character Set. + + mbmon: + Horizontal line drawing now with low-ASCII instead of Alternate + Character Set. + Corrected a color problem in View BBS Information, and added + display BBS startdate. + + +v0.24 30-Sep-1998. + + structs.h: + New fields in config.data: OLR_MaxMsgs, OLR_NewFileLimit, + OLR_MaxFreq. + New fields in mareas.data: OLR_Default, OLR_Forced. + New fields in ttys.data: honor_zmh. + Added Areafilename field to group records. + + mbsebbs: + Combined some functions from offline.c and mail.c into + msgutil.c + Messages posted with a OLR are now counted in the users record. + Closeing the bbs during Zone Mail Hour can now be set for each + individual line. + Now counting and marking the date/time when posting messages + in mareas.data. + + mbsetup: + Corrected some sitedoc problems in global setup. + Added sitedoc printing for mail setup. + Added file and mailgroups setup to the nodes setup. + Added newfiles reports setup. + Added filefind areas setup. + + mbfile: + Corrected spelling error. + + mbaff: + New program. Announce new files and FileFind (Allfix). + + mbfido: + In .tic file processing if we were a pointaddress, the path + checking always gave an error. The check of our boss is + skipped now. + The correct .tic area and filedate is now set in the toberep + database. + + mbmsg: + Improved initialisation. + + +v0.25/a 12-Oct-1998. + + general: + From now on version numbering will get /a (Alpha), /b (Beta) + and /g (Gamma) release extensions. This is necessary for + live testing at my bbs. + + mbfido: + The Cost field in the toberep.data file was not set. + + msgbase.a: + Added extra screen output in certain error conditions. + Added a trick to generate a FromAddress from the Msgid + in case there is no FromAddress. This was left blank by + GEcho 1.11+ (DOS). + + mbaff: + Added some IsDoing information for the monitor. + Setting ReplyCRC to -1 instead of 0 if it's an original + message. + Minimum searchstring length is now 3 characters (hardcoded). + Added a check to see if there is a FromAddress and a Subject + before a message is added to the scanlist. + + mbsebbs: + Corrected spelling error in OLR download logging. + + mbsetup: + Changed some page layouts in the sitedocs, added some + forgotten formfeeds. + + +v0.25/b 14-Oct-1998. + + mbfido: + If the tic queue directory didn't exist, it is now created. + Netmail messages now have zone:net aka matching on the + destination and from addresses. + Started with the AreaMgr and FileMgr functions. It can respond + to %help. + Added the notify function. + + mbsetup: + When picking a mailgroup in messages setup or a filegroup + in ticsetup, the ftn aka is copied from the group setup as + a default aka for that area. + When setting the area tag and if the OLR tagname is empty, the + area tag is copied there as a default. + + +v0.26/a 17-Oct-1998. + + general: + In some databases in the header there is now a time_t field + added. This is to mark the last statistics counters rollover. + Programs that count statistics must perform an rollover when + it's run on a new day, week or month. + + warning: + To upgrade the databases, enter the setup for message areas, + tic areas, nodes, file groups and message groups and save + the databases. + + mbfido: + Implemented new statistic counters. + Implemented rollover of the statistic counters every week and + new month. + Changed program locking, now it locks the whole program in + stead of short moments. + + mbsebbs: + Implemented new statistic counters. + + mbaff: + It now counts the posted messages in the message area. + Corrected the announce message text. + + +v0.26/b 20-Oct-1998 + + mbsetup: + Wrote the hatch manager. All basic functions are present now. + All databases that can be packed after deleting records can + do this now. During update those databases area sorted. This + is not for the message areas, files areas and the userbase. + These files may not be packed. + + + +v0.27/a 29-Oct-1998 + + general: + Changed the database format for the files. Added support for + long filenames. The .tic file area is also stored in the + records to make the rescan function work later. + The files database must be rebuild for this release!!! + The BBS and the rest of the programs now use different + loglevels. + Changed the sourcefile distribution name to mbseN_NN.tgz. + + upgrade: + Delete all file databases! + mbsetup 1-5-20: set utils loglevel. + run mbfile check -debug to fix the files references. + + dbase.a: + Functions added to connect and disconnect nodes from echimail + and file areas. + Now marking the nodes record invalid after update. This should + prevent corrupting the nodes.data file from now on. + + common.a: + Added a function to convert ifcico addresses to internal fido + addresses. + Removed a pointer bug in the aka2str function. + + mbfido: + Added most AreaMgr and FileMgr functions. Needs a lot of + code cleanup but most things work for now. + Now imports the TIC area name in the filedatabase. This can + later be used for %resend requests. + The long filename field is filled with the dos filename for the + time being. + + +v0.27/b 04-Nov-1998 + + general: + Changed the top Makefile, it "forgot" the script directory. + This release adds nodelist diff processing and hatching of + new files, for example the nodelist you just created. + Switched to compiling with ndbm.h, this is now default + because the nodelist can now be opened by several programs + at the same time (for reading). Support for dbm.h will be + dropped, it gives trouble and cannot be used on a multiline + system. + Created the semafore.doc document for semafore handling. + + common.a: + Added the semafore functions. + + import: + Implemented long filenames on files database import. + + + mbfido: + Changed the way of counting FILE_ID.DIZ lines in archives. + Made macro's in tic processing case insensitive. + Implemeted automatic hatching of files. + Creates the "mbindex" semafore when new nodelists have been + put in place. + + mbuseradd: + Changed the contents of users .profile to: + . $MBSE_ROOT/etc/profile + The file $MBSE_ROOT/etc/profile contains the global startup + commands for normal bbs users. + + + mbsebbs: + Changed debug logging of DisplayFile function. + Logs the tty line comment after the username at login. + Linked with the new common/semafore functions. + + mbdiff: + New program. Nodelist diff processor. Creates the "mailin" + semafore when it created a zipped nodelist. + + mbsetup: + Added tic echo group pick in hatch and magic setup. + Removed setup of semafore path's, they are now hardcoded. + + mbcico: + A quick hack of Eugene G. Crosser's ifcico. At this time + only the logging functions using mbsed are implemented. + It needs ~/etc/mbcico.conf for configuration together with + the standard database configuration. In time, the mbcico.conf + file will not be needed anymore. For testing in this release + it does the job. + + mbaff: + Linked with the new common/semafore functions. + Creates also the msglink semafore when mail is written. + + mbindex: + Removes the "mbindex" semafore when the nodelists are + successfull compiled. During compiling it places the + "compiling" semafore. + + mbmsg: + Removes the "msglink" semafore when the messagebases are + linked. + + mbstat: + Now maintains the semafore's "bbsopen", "bbsclosed", "zmh" and + "scanout" according to semafore.doc. You must schedule + "mbstat check" in the crontan at the start op ZMH and end of + ZMH both on summer and wintertime. If you did configure the + ZMH right in UTC in $MBSE_ROOT/etc/mbsed.conf this will work + if you did setup your timezone correctly. + + + +v0.28/a 18-Nov-1998. + + general: + Modified the structs files to add a database for modems, + changed the tty database to link it with the modems, added + fields in the nodes database for the mailer, added fields + in the global config file to add setup for the mailer. + Dropped nodelist V21 flag, added V32T and VFC flags. The + U flags for modem capabilities must be implemented somehow. + + upgrade: + To upgrade, enter the global setup and leave it, say yes to + save changes. Enter the nodes setup, enter one of the nodes + record, exit and save changes. Setup the modems database. + Enter the tty ports setup, link the modems to the POTS and + ISDN lines and save it. + + common.a: + In crc added crc16ccitt functions. + In clcomm the function IsDoing(char *) now accepts formatted + parameters. + Added function SetTTY(char *). + Added debug logging of nodelist flags. + Changed the way the nodelist flags are parsed, sometimes + U flags became standard flags, and standard flags became U + flags. 'U' became a flag also. + Moved some common files from mbcico and mbfido into the + library. + + mbsetup: + Changed the lineeditor to accept the comma character. + Added modem setup, changed tty lines setup to pick a modem. + Changed nodes setup, finally added the statistics screen. + Changed fidonet setup, first zone is now called "primary zone" + + mbfido: + Added IsDoing info during date rollover. + Removed a bug causing a segmentation fault when a mail packet + had an error. + Removed check that incoming packets must come from a node in + our setup. All received mail packets are now processed. + Echomail must still come from nodes in our setup, the rest goes + to /dev/null + Moved some sources to the common library. + In forward() changed the uppercase functions for the subject + line. The original filename became uppercase also. + Corrected debug logging for packet date, the month was 0-11 in + stead of 1-12. + Added logging for ftsc product name and version. + + mbcico: + Added some EMSI extra logging. + Added more IsDoing info for mbmon. + Corrected the Makefile after testinstall on the live bbs. + Changed the order of the EMSI data to send to the remote + party to be more standard. McMail (maybe others too) didn't + recognize all options send too early. + Added EMSI logging for 'link', 'comp' and 'tranx'. + Moved some sources to the common library. + Completely rewritten the chat module. Everything received + from the modem is now logged. Because all modem responses + including echo from commands, are now logged, the aftercall + function (get modem aftercall or caller id), will go to the + logfile as well. (not tested, I have no CLIP capable modem). + Added patches from ifcico-3.0.cm.alpha-4.0 to filelist.c, + this should better handle files sent/notsent in failed + sessions. + Added counters for sent and received bytes. + Completely rewritten the scanout function. It now searches + only in the outbound directories defined in the setup. + In the fidonet networks of the setup the first defined zone + is the default zone for that domain. Other zones get a hex + extensions with zone number. + Scanning mail for the CallAll option now selects outside ZMH + only crash mail, during ZMH crash and normal mail. Logging + of selecting mail is improved. + When calling a node is failed for 30 attempts, the node will + not be called anymore. If the problem if corrected you now + must manually edit the .sts file or delete it to call that + node again. (Option for the future outbound manager). I think + that sessions errors do this after 3 attempts. + When calling a node, mbcico more ore less automatic selects + a tty with modem that matches the nodelist entries of the + node to call. ISDN is not yet supported. Also a best speed + test must set priority of ports to use. + + mbmsg: + Supressed error message if there was no semafore "msglink" + to remove. + + mbsed: + Added command SZMH, requesting Zone Mail Hour status. + Added command ATTY, setting a new tty port. + + mbdiff: + Removed some unnecessary debug log information. This program + seems to work fine now. (Wow, only needed 2 releases for + this one). + + +v0.28/b 09-Dec-1998 + + general: + Added structure for the mailer history file. + + mbaff: + Removed some debugging logmessages. + + mbsebbs: + Removed some debugging logmessages for newmail scan. + Removed some debugging logmessages from timer functions. + + mbmsg: + Added program info logline. + + mbcico: + Added monitor info during FTS-0001 sessions. + + mbout: + New program, the Outbound Manager, many ideas stolen from other + programs of the ifmail package. + + + +v0.29/a 11-Dec-1998 + + common.a: + Opening of nodelists is now logged at debug level. + Added .pol files to pktname.c + Moved attach.c from mbfido to common library. + Nodelock now tests for own locks, if so, no error is given. + + mbfido: + Worked on the uppercase bug again. It will only happen when + we must forward a file. + Moved attach.c to the common library. + + mbout: + Implemented file requests. + Implemented creating and removing of .pol files to make and + remove polls. + + mbcico: + Calls nodes when .pol file is present. + Made file requests working again, the .req files where not + added to the filelist to send. + When reading node options the NoEMSI and NoWazoo flags weren't + copied to the options. + Corrected a bug in yoohoo.c where it didn't initialize + remote->addr->name to NULL in checkhello(), this caused + a segmentation error and failing Yoohoo/2U2 sessions. Note + that this error is in ifcico as well. + Over TCP/IP with ifcico as other mailer EMSI, Yoohoo/2U2 and + FTS-0001 in- and outbound sessions are working. For other + mailers we will see if it will work in real live. + + +v0.29/b 17-Dec-1998. + + general: + Installed 0.29/alpha on the bbs. + Installed usleep() code in some utils. See usleep.doc for + details. + Changed the nodelist flag definitions to prevent conflicts + with system macro's. + + common.a: + Locking and unlocking nodes gives better error logging. It + now also checks our own pid if the lock was already made + instead of complaining. + + mbfido: + Removed some bugs in logging in magic.c + Changed FILE_ID.DIZ file checking for empty lines. + Now always marks a file announced when importing into the bbs. + Added code to prevent terminal output in quiet mode. + Added usleep() code in statistics rollover. + Added usleep() code in importmsg. (sleep each message). + Added usleep() code in LoadTic. (sleep each .tic file). + Added usleep() code in scan for mail. + Removed error message when "mailout" semafore didn't exist + in scan for mail. + + mbcico: + During outbound EMSI session we send the NRQ option flag, + requests on hold for us are not allowed when we callout. + When calling a node the first thing now is lock the node + to prevent further checking if the node is already locked. + Putstatus is logged for studying status updates. + Experimental status resetting of all nodes after successfull + session. + + mball: + Renamed from allfiles. + Now creates allfiles and newfiles reports. Honors maximum + security level to include in the lists (no flags yet). + Optional parameter -zip will create allfiles.zip and + newfiles.zip. + Installed usleep() code. + It is finished. + + mbout: + No more error message when a file attach in a .flo file is + nolonger on disk. This can happen if nodes don't poll often + enough. + + mbmsg: + Installed usleep() code. + Removed color code output when in quiet mode. + + mbaff: + Installed usleep() code. + Now marks the file announced after scanning the bbs for + uploads. + + mbfile: + Added the usleep() code. + Added some code to lower the disk i/o. + + mbstat: + Now logs status of ZMH with the "check" command. + + mbuseradd: + Added a check to see if the "shadow password suite" is + installed. It is absolutely necessary to have this. + If /etc/login.defs is present, the useradd program gets an + extra parameter "-M", to override the creating of the users + home directory. (Found on Redhat 5.1). + Added an extra check if reading the /etc/passwd file failed. + Added newline characters after some error messages. + + +v0.29/b2 24-Dec-1998 + + general: + Added modem.stripdash and ttyinfo.portspeed in structs.h + + common.a: + Changed logging functions in clcomm.c, repeated messages are + now counted and reported how many there were. A full filesystem + will hopefully not happen anymore. + Added the Nopper function, this one can be called often but + only once a minute a NOP is send to the server to prevent a + timeout disconnect. + + mbcico: + Removed some debugging logs. Added some return codes from the + tty drivers in zmodem send and receive. (removed later, it + didn't work). + Added Nopper code in file transfer protocols. + + mbout: + When creating a poll the node's status record is reset, so if + the node was undiable, it will start polling again. This will + not happen for sessions handshake errors and port errors. + + mbsetup: + In edit tty added edit portspeed. + In edit modem added edit stripdash. + + mbsed: + Corrected ZMH status response. + + mbstat: + Corrected ZMH status check. + + +v0.29/b3 28-Dec-1998. + + mbcico: + Inserted new ttyio code from the German version made by + P. Saratxaga and T. Tanaka. I hope the Zmodem problems will + now be solved. + Added Hydra filetransfer protocol. + Removed Janus, it wasn't implemented anyway. + Corrected modem init routine. + Implemented aftercall function. + + mbsetup: + Removed setup to disable Janus protocol. + + +v0.29/b4 29-Dec-1998. + + general: + Changed the Makefiles. Now only in ~/src/CONFIG you can place + extra defines. + Added compile switches -Wshadow -Wwrite-strings + -Wstrict-prototypes. This gave a lot of code cleanup, maybe some + strange errors are gone. + + common.a: + Corrected the repeative log counter. + Included in nlindex.c HAS_BSD_DB + + mbcico: + Improved ttyio logging, maybe we can better see what is going + wrong when transfering files. + EMSI compatibility protocol now gives Hydra first, then Direct + Zap. + Added file transfer counters to Hydra. Changed Hydra logging + a bit. + + mbindex: + Changed nodebld.c to inlcude HAS_BSD_DB + + mbuser: + Did some screen output when it was in quiet moded. + + diff --git a/ChangeLog_1999 b/ChangeLog_1999 new file mode 100644 index 00000000..c1f89f84 --- /dev/null +++ b/ChangeLog_1999 @@ -0,0 +1,1602 @@ +$Id: ChangeLog_1999,v 1.1 2002/06/01 13:55:40 mbroek Exp $ + + MBSEBBS History in 1999. + + +v0.30/a 01-Jan-1999. + + mbfido: + Removed a bug in the program lock that could cause a segfault. + In delete viruswork made rm now work in forced mode. + Hatch files now logs only hatched files. Added the + statistics update. + Changed completly the call module. There were some locking + problems and modem access attempts when the port was closed. + In Hydra the transfercounters are now updated after each + succesfull block. + Added more debugging log to the ttyio driver. + In answer mode we grep the environment variables CONNECT + and CALLER_ID created by mgetty and make log entries. + Swapped timer numbers in Hydra, in tty_write we now don't + test the read timer anymore, this gave unexpected timeouts + and is not according the Hydra specs. + Changed more debugging in ttyio, zmodem and zedzap are still + not working well. + Undiable nodes will not be added to the callist anymore. + + mbsed: + Added some logging in the ZMH status check to see what goes + wrong with asking ZMH status. + Changed the statusfile locking, now the lock tests are done + at 100 mSec intervals instead of 1 Second. + + mbsebbs: + Added CONNECT and CALLER_ID environment variables logging. + + newuser: + Added CONNECT and CALLER_ID environment variables logging. + + +v0.30/b1 10-Jan-1999. + + common.a: + Removed a bug in client.c that caused a segmentation fault + when the connected tty was /dev/console. It is now possible + to run clients from sysv init during system boot. + + mbsed: + Removed a bug in the ZMH status function. + Changed statusfile lock form 15 x 100 mSec to 10 x 250 mSec. + + +v0.30/b2 16-Jan-1999. + + general: + Defined bitmasks for logging. There are now maximum 26 debug + logflags. The logflags are changed from int to long. + All programs have been changed to use these flags now. + + upgrade: + In mbsetup set the new flags in menu 1.5.19 1.5.20 and 1.18.1 + + note: + This version still only compiles on Slackware 3.2 maybe + others, but not on RedHat 5.1 5.2 and RedHat 5.2 Sparc. + + +v0.31/a 23-Jan-1999. + + update: + Recompile the nodelists. Remove old index.dir and index.pag + files from the nodelist directory. + Set new value for dialdelay. + + general: + Removed mbsed from this source tree. From now on this will + be distributed as a seperate archive. + Finally found out why this package wouldn't work with glibc. + Complete rewrite of the nodelist indexes. I don't use any + dbm, ndbm anymore. I wanted username lookup included and + full support for ISDN and TCP/IP only nodes. + It now compiles on RedHat 5.2 Sparc and Intel. + + common.a: + Removed a serious memory leak causing the system to exhaust + all available memory during long filetransfer sessions. + Rewrote the nodelist lookup functions. Search is very fast + because the index file is sorted on nodenumber. + The nodelists will be closed after each lookup so that mbindex + may always compile new indexes. + + mbcico: + In call.c changed the port closing, it will now also close the + port after an unsuccessfull call so multiple calls in one + run will now hopefully work. + Removed a bug when calling a TCP/IP node it was trying to + dial with a modem. + Added random number generator to set the dialdelay before a + call is made. + + mbindex: + Total rewrite for the new nodelist indexes. In -quiet mode + it does the usleep(1) call every 80 lines (if set). Note + that in quiet mode it still runs faster then with screen + output. + The index file is sorted before it is written to disk. This + makes node lookup very fast (faster then with ndbm). + The old files stay on disk in case they are open, which can + only be for less then a second. + The semafore compile is not created anymore, instead the + mbindex program creates a lockfile to prevent that another + mbindex can run. Compiling the nodelists can now be done at + any moment. + Username indexes are not supported at this moment. + + mbstat: + Now only changes ZMH status if the status is really changed. + Will create the "scanout" semafore if ZMH status changes (I + did document it). + + mbmsg: + Changed the logging, killing messages now logs in columns, so + you can easy see how the mailflow and killing develops. + Removed some debug logging (finally). + When screen output is on, the last line is now erased after + processing. + + mbsetup: + Changed helptekst for mailer->dialdelay. + + mball: + Now creates semafore "mailin" when ready so the produced + allfiles and newfiles listings will be imported by mbfido tic. + + mbsed: + Changed the $MBSE_ROOT/sta directory to $MBSE_ROOT/var and + changed the names of the status and reginfo files. + +v0.31/b 06-Feb-1999 + + common.a: + Changed raw keyboard read to get cursor movement keys and other + gray keyboard keys. Only cursor movements is guaranteed to work + This is a limitation of PC-ANSI clients. + This change is needed to write the fullscreen editor. + Removed memory leaks from getheader.c and mbfile.c + Switched to one single .h file. + If loggin "message repeated n times" the first character is now + uppercase as in normal logmessages. + + mbsebbs: + Implemented raw keyboard read changes. + All actions in change.c are now logged. + Made change voice and data phone work. + Removed the (dangerous) gets function from funcs.c + + mbsetup: + Removed ncurses code. + In line editor the delete and insert key is finally working. + Modified help tekst for modem hangup string. + + mbmon: + Removed ncurses code. + In line editor the delete and insert key is finally working. + + mbcico: + If modem hangup string is empty only DTR-drop will be used + to hangup the modem line. + During ZMH mbcico will now only call nodes for which it has + non archived mail (netmail). + Changed ttyio debug logs, could block the session. + For magic file and execute requests now looks for both upper- + and lowercase matches. + Filerequests are searched in the internal database on both + long and short filenames, password protection is supported, + and the request counter in the FDB is updated. + + mbindex: + Doesn't complain anymore when the semafore "mbindex" didn't + exist when it tried to remove it. + Now tests for latest nodelist by filedate instead of file + extension number. + + mbfido: + Creates magic file names for magic filerequests. + + + +v0.32/a 16-Feb-1999 + + update: + Remove symlink directories. + + general: + Changed elapsed time logging, now ranges from seconds to + days with the same stringlength. + Moved signal names to common.a, also included the names + for i386 and Sparc systems. + Added PackNetmail flag to nodes record. + + msgbase.a: + Removed automatic adding of FMPT and TOPT kludges in netmail. + Applications are responsible for adding kludges. + + mbfile: + Removed code to work on symlinks for ifcico file requests. + + mbfido: + Added some code to prevent memory leaks. + The .pkt password check now always logs bad passwords, only + when mail password check is set, bad passwords are fatal. + Added code to keep dupe databases in maximum limits. + Now forcing chdir to inbound before processing each .tic file. + It will now export netmail from the message base. It also + supports packed und unpacked netmail. + Added TZUTC kludge (FSP-1001). + + mbcico: + Changed zmrecv debug logging for hanging session with one + of my links using InterMail 2.50 ML, rev B020. + If polling all lines of a multiline node and the first line + was successfull, mbcico would still poll the other lines. + The random dialdelay is now always 10 seconds or more to give + mgetty the chance to reset the modem and takeover the line + between multiple calls. + During dialdelay the IsDoing status is now sent every second + to the mbsed so you can watch it with mbmon. + + mbsetup: + Changed nodes setup so that password may be upper or lowercase + for remotes that are case sensitive (was always uppercase). + Added support for PackNetmail flags in nodes editor. + + scripts: + In run_inout added the news gateway (echomail => news). + + mbindex: + Now only tries to compile files with a numeric extension, + 2 or 3 digits length. + + mbsebbs: + Wrote a simple fullscreen message editor, more or less + Wordstar compatible. + Fixed a small problem in the line editor. + The maximum size of a message is now 500 lines. + When replying to a message, the original message is quoted + into the textbuffer including an introduction line. + When replying to a message, "Re: " is inserted in the + subject if there was none. + It is now possible to send and reply netmails. + Added TZUTC kludge (FSP-1001). + + mbout: + With poll and stop command you can enter multiple nodes. + With the request command you can enter multiple files. + The request command doesn't create a .flo file anymore, the + actual calling of the node must be done with the poll + command. + + mbaff: + Added TZUTC kludge (FSP-1001). + + mbsed: + Implemented CIPM and CSPM commands (online messages between + users). Updated the programnames list for check if the bbs + is idle. Changed the reginfo file lock to 30 x 150 mSec. + Fixed the Linux Sparc version. + + +v0.32/b 15-Mar-1999 + + upgrade: + Delete the newuser program and any accounts using it. + Move compiled language datafiles to ~/etc. + Move config.data from ~ to ~/etc. + Remove ~/lang directory + chown -R mbse.bbs ~/home/* + Upgrade mbsed to at least v0.32 Alpha. + + general: + The mbsebbs program now runs setuid "mbse" setgid "bbs". + All files are now owned by mbse.bbs, even the bbs users + private files. + All references to directories for the configuration are now + hardcoded to ~/etc, ~/fdb, ~/log, ~/tmp and ~/var. + The directory ~/lang is no longer needed. + The directory /tmp is no longer used, using ~/tmp instead. + Moved the language sources and installation into this source + tree. + + mbfido: + Forgot to append after the TZUTC kludge. + If we were a point, a route to our boss was not found. + Updated for hardcoded paths. + + mbsebbs: + Now runs setuid "mbse" and setgid "bbs". Changed the parameters + to the mbuseradd program. The newuser program is now part of + mbsebbs. + It is now possible to run mbsebbs as a shell, it is even wise + to do so! + Updated for hardcoded paths. + Sending and receiving online messages is now handled thru + mbsed. You need at least mbsed v0.32 Alpha. + Removed the last "gets" function. + + newuser: + No longer exists. + + mbuseradd: + Changed parameters to this program. + Finally worked around the problem of different passwd programs, + we will now let the user supply a new password instead of + creating an empty expired password. The shadow password suite + isn't necessary anymore but it may be wise to use it. + It will not install /bin/bash as user shell anymore, during + loading of the bbs users could get a shell prompt if they were + fast enough. The mbsebbs program is now installed as shell. + + mbsetup: + Updated for hardcoded paths. + Updated screen 1.3, global paths. There is only one screen now. + + mbmon: + Updated for hardcoded paths. + + mball: + Updated for hardcoded paths. + + fbgen: + Updated for hardcoded paths. + + mbfile: + Updated for hardcoded paths. + + mbmsg: + Updated for hardcoded paths. + + mbuser: + Updated for hardcoded paths. + + mbcico: + Updated for hardcoded paths. + If the tty port was locked by another process, mbcico tried + to close the port of that process (and luckily it failed). + Now it won't try to close that port and try to remove the + lockfile. Corrected the logmessages during this situation. + + mbaff: + Updated for hardcoded paths. + + mbsed: + Forgot to close the reginfo file after the CIPM command, + eventualy the bbs stopped logging because mbsed ran out of + file descriptors. + Added the GDST command, to get the status of all (but no + more then 10) mounted filesystems. + + +v0.33/a 25-Mar-1999 + + general: + Changed the users structure for IEMSI flags. + + update: + Open in mbsetup the users database, record 1, and close it. + This will upgrade the users database with new fields. + + mbcico: + Will dispatch mbsebbs when the EMSI string is EMSI_NAK instead + of EMSI_INQ. We then assume the client is an IEMSI client. + In the tty driver changed some error messages to debug log + messages. + + mbsebbs: + Didn't flush the screenbuffer when asking the user to read new + mail so the user couldn't see the prompt. + For OLR download the maxumimum number of file requests is now + taken from the main configuration. + Added IEMSI login support. Tested with FrontDoor 2.11/sw. + Flushed a prompt after file download. + The users filetaglist is removed from disk during logoff. + Deleted Toggle Expertmode, menu 307. + Added Toggle New Mail Check, menu 313, text code ^U1. + Added Toggle New Files Check, menu 315, text code ^U2. + Added Toggle Fullscreen Editor, menu 316, text code ^U3. + Added Toggle Bulltins Read, menu 307. + + mbfido: + Added more debugging messages for netmail processing. Netmail + between a boss and point are being bounced between each other. + At least they don't dissapear anymore. + When forwarding a netmail, all original characters were + lost and messages may have become undeliverable. + + mbsetup: + Added new menu choices that were added to mbsebbs. + + +v0.33/b1 29-Mar-1999 + + general: + Added support for "pktdate" from Tobias Ernst. This is a Y2K + .pkt analyzer and fixer. It is called before each .pkt file + is processed. Indeed, he did also made a Linux version. + Added support for ISDN and TCP/IP nodelist flags. They may + be in the Userflag field or in the authorized flags field. + + mbsetup: + Added .pkt preprocessor installation to global->mail for + the pktdate program. + + mbfido: + Inserted code to call the .pkt preprocessor. + Should insert ^aVia line in forwarded netmails and exported + netmails from the local msgbase. + Will now put netmail for direct links that are not in our + setup (by the stupidity of the Sysop, including me) still in + the outbound (normal status) instead of /dev/zero. + + mbcico: + Added support for ISDN and TCP/IP nodelist flags. + Will now call TCP/IP nodes. This is experimental! It uses the + proposal of Lothar Behet (2:2446/301) of 25 Oct 1998. The + defined flags may be in the User field or authorized fields. + At this moment only the IFC protocol is supported, the ITN + support on port 60177 is under construction. + + mbout: + Added support for ISDN and TCP/IP nodes. + + +v0.33/b2 02-Apr-1999 + + general: + 2 new configuration items, user levels to allow sending of + Crashmail and File Attaches. + + update: + Set Crashmail and File Attach levels in screen 1.4 + + common.a: + Updated nodelist flags and rendundency flags according to + errflags.zc2 dated 20 Mar 1999 (from 2:2/0). I should make + an external table for this. + If a semafore already existed (or was removed), nothing will + be done anymore. When a semafore is created, fsync is called + to make sure it is on disk. + Totally rewritten the .pkt header read function, it is now + more portable and does only one disk read to do that. + + mbfido: + Commented out some debugging logmessages in magic file test. + Corrected the ^aVia lines, in one case the Sysop name was + included, in all cases the year was only 2 digits. For + debugging the milliseconds fields are now different in all 3 + functions that create Via lines. + Now creates .pkt headers in a more portable way and only needs + one disk write to do that. + Now creates message headers in a more portable way. + When creating notify messages, the correct local time is now + entered. + Created a new fidonet date parser, removed the bison parser. + When messages are exported, the fidonet date is generated from + the internal structure, so incorrect received dates are + hopefully corrected on the fly. You should not need pktdate + anymore. + Now sets the local time when a message is imported. + + mbsetup: + When creating new message areas, the security fields will not + be preset anymore. + Removed the gid and start uid values. + Added setup for CrashMail and File Attaches. + + mbsebbs: + Remove an extra close menufile in the menu processing. The + Sparc version aborted with Segfault error on this. + When a message is created, the time is now the correct + local time. + Now sets the local time when a message is received by the user. + When a netmail address is entered, the user will now see the + nodelist bbs name and is asked to verify it. + Only above CrashMail level and if the destination node is CM, + the crash option is presented. + When creating a new user, the gid is now taken from the running + process instead of the setup. + + + +v0.33/b3 06-Apr-1999. + + general: + Due to hardware problems on my bbs, I was forced to takeover + the whole bbs on MBSE BBS, RA is now retired. This means that + lots of things must be solved in a hurry from now on, there's + no way back for me. The MOBO died, it is now replaced by an + old 386/DX33, so I have to fix the parts that slowing things + down. It must be able to run good enough on that board. This + also means that only necessary things are developed from now + on to create a stable and useable version. + + msgbase.a: + The message header read function doesn't seek the whole + messagebase anymore if it needs the next header. This will + roughly triple the speed of scan for new mail. + + mbfido: + Removed check for connected uplink if .tic file was a local + hatched file, there are no uplinks for local hatched files. + Finally found the bug where the TOPT and FMPT kludge info + dissapeared from the netmails causing mail for points to bounce + back to the boss. + Added commandline switch -full to force scan to scan the whole + messagebase for outgoing mail. + If ~/tmp/scan.mail exists the area and message numbers are used + to quick export messages. + It can now attach file attaches. File attaches are not routed. + If the imported file has a magic name, this magic is added to + the file description. + + mbcico: + Will stop calling a node after 3 attempts if there are no + matching ports, or if there is a port error. + + mbsebbs: + Abort on SIGHUP is not logged as error anymore but as normal + log message "Lost Carrier". + With netmails files can now be attached if the user has a high + enough security level. Files must be in translatable DOS range. + Fixed segfault when user tried to select an non existing + filearea. + Creates ~/tmp/scan.mail for posted messages to allow quickscan. + + mbaff: + Creates ~/tmp/scan.mail for posted messages to allow quickscan. + + mbsetup: + Finally added the pull uplink in file and mail group editors. + In the tic area and echomail area editors if the group is + selected and the uplink address is set in the group, the the + first default connection for that area is the uplink. + + +v0.33/b4 13-Apr-1999 + + upgrade: + The ticarea, hatch and magic datafiles are changed in format. + Order of update is important! + 1. Compile all sources, don't install. + 2. Make backup of all .data files in ~/etc. + 3. Announce new files. + 4. Remove *.*.*.*.bill files from the ~/tmp directory. + 5. Disconnect all modems, networks and stop the cron daemon. + 6. Run mbsetup from the source directory. ~/mbb0_33b/mbsetup + 7. Menu 10.2, leave and update the database. + 8. Menu 10.3, leave and update the database. + 9. Menu 10.4, leave and update the database. + 10. If all is well, install the binaries, check mbsetup. + 11. Start cron daemon, connect modems and networks. + + common.a: + Removed errormessage when created semafore succeeded when it + opened file descriptor 0. + + mbcico: + When searching for file requests it tried to use ~/fareas.data + instead of ~/etc/fareas.data. + + mbsetup: + Changed the tic areaname field from 12 to 20 characters. + Corrected screen numbers in hatch and magic pick areas. + Setting the magic "to area" now also uses the picklist. + Does normal logging again. + + mbfido: + Doesn't import the file area name anymore in the filesdatabase. + This needs a workaround because this field is now too small. + The check for quick scanned exported messages failed for + echomail if there was more then one downlink. This forced a + complete scan to be done while everything was really ok. + The .tic file dupecheck is moved to do a little later so that + if some checks fail, the file is not in the dupe database yet. + If the destination path is not available, the file and .ticfile + are moved to the bad directory. + Reads "Fullname" field from .tic file, logging only for now. + Will now process archived tic bundles with extension .c00 where + the numbers can be any digit. (Harald again :=). + More errorchecking in Magic file procesing. + Turned some debugging logging back on. + Corrected a bug that sometimes caused a segfault during tic + processing. + Corrected a routing problem if mail was to be sent to one of + my own points, in case there where more than one point. + + mbmon: + Does normal logging again. + + mbfile: + Calls the Nopper() function now to keep the connection with + the server alive. Good for slow systems and lots of files in + one area. + Removed a small memory leak in the check function. + + mball: + Creates "00index" files in each download directory that is in + range of anonymous ftp users. These files contain the file + names and file descriptions of that directory. A new command + "index" is added. + + mbaff: + Corrected for the .tic areaname size of 20 characters. + + mbsebbs: + Fixed segfault when user was trying to select a non existing + message area. + + +v0.33/b5 26-Apr-1999 + + general: + A new set of grouprecords is created. This is for the announce + of new files, so reports can be created by subject, ie. + Windows, Erotic pictures, Utilities etc. The groupnames are + part of the bbs file areas. + + upgrade: + Set in menu 1.15 the number of newfiles groups. + Create the several newfiles groups. + Install in all bbs file areas the right newfiles groups. + Install in all newfiles reports the right newfiles groups. + + mbsetup: + Will now ask if messagebase must be created if it doesn't + exist. + Implemented the setup of newfiles groups. + Will now show the TZUTC time instead of system generated + timezone (didn't work on RH systems). + + mbcico: + Changed some logging, removed some debug logging. + + mbfido: + Corrected a errormessage when the file import failed in a + non existing area. + If the file is imported in a bbs area, and that area has a + separate Newfiles groupname, that name will be stored in the + toberep.data file for announce. + If a fdb area doesn't exist during file import, it will be + created on the fly. + Doesn't send empty netmails anymore if node has tic messages + off. Only messages with text in it are send now. + Switched .tic description lines logging on again because there + are some strange descriptions coming in. + Fixed a problem when there was only a normal description line + in the incoming tic file, the downlinks got a shortened + description line. + Doesn't strip Hi-ASCII from FILE_ID.DIZ file anymore, only + control characters. Stripping of Hi-ASCII should only be done + by file announce programs (if the moderator wants that). + + mbdiff: + Removed a lot of debug logging. + Removed unarchive functions as they are already in the common + library. + + mbindex: + Removed some debug logging. + It now deletes old nodelists from the nodelist directory exept + the most recent two lists. + + mbsebbs: + Added logging of selected file and message areas by the users. + During mailscan and filescan inserted call to Nopper(). + Wrote a new Getstr function to create Unix accounts, this + one won't accept spaces. (Thanks to Henk de Graaf, a user + who failed to login). + The username won't be converted to lowercase anymore when + his Unix account is created. + The Unix name has to be at least 3 characters. + + mbaff: + In the announce function new uploads will get the area number + as fileecho name so they will be announced by area. + + + +v0.33/b6 30-Apr-1999 + + common.a: + Execute now only logs result messages if there was an error. + + mbaff: + Added High ANSI to Low ASCII translation for echomail areas + that need it. + + mbsetup: + Added High Ascii switch in filefind setup. + Corrected menu numbering. + + mbfido: + After tossing a .pkt the result is only logged if there was + an error. + Removed 2 debug messages during netmail import. + Made logging of "Keep files" final. + Allowed hi-ascii in .tic files for the descriptions. + Build in a check for multiple "Desc" lines in .tic file, + only one is allowed. Offenders are logged, See FSC-0087. + + mbsebbs: + Quick_Bye() is now logged (if possible). + + mbdiff: + The resulting new archived nodelist will now be a lowercase + name instead of a uppercase name. + The new nodelist will be default be archived with the same + archiver as the diff file came in, if it's not available + there is now a fallback to ZIP which is always available. + + +v0.33/b7 10-May-1999 + + upgrade: + ACRmail 0.60 file naming convention is default off for + existing nodes, check their setup. + + msgbase.a: + Added a counter which keeps track of the size of the message + being written. + + common.a: + Will now create unique arcmail names for out of zone mail if + it is turned on. This should prevent creation of duplicate + arcfile names to the same node. + Corrected logging of bestaka_s function. + Doesn't create 00000000.fr0 ARCfile names anymore if our + system is the point sending to the boss. + + mbaff: + In the announce function added logging of the size of the + written message. + Inserted a checkpoint log after each announced block. + Inserted code to split messages after 13000 bytes. + + mbfido: + Removed "Packing Mail" logmessage. + Imported netmail will now allways get the Private status. + Added code to replace the archive comment, currently this + works with .zip and .rar archivers, others don't support + this. + The ^aVia line was inserted at the begin of a forwarded + message instead of at the bottom, it also had the address + of the origin system instead of our own system. + Also moved the ^aVia line in the other 2 functions to the + bottom. + + mbfile: + If during the check for missing files in a download area there + is an extra file and it is not a regular file, it wil be + ignored. This allows the use of subdirectories. + + scripts: + Added support for binkd, if it is installed in ~/bin and the + binkd.cfg is in ~/etc it will be started and stopped as the + rest of the bbs. + + mbsetup: + Added in nodes setup ARCmail 0.60 naming convention switch. + + mbcico: + When there are session errors, the status counter is now + increased with 5, so maximum 6 calls are done. (was infinite). + + +v0.33/b8 23-May-1999 + + mbfido: + Corrected Connection time log messages. + + mbcico: + Restored the original filetime functions. + Removed 2 debugging log messages. + Made the filerequest processor 3 times faster. The remote + doesn't timeout anymore during the search for files. It + must still be made faster. + + mbsetup: + Added the (hidden) option to move echomail areas. + + mbout: + Will also clear the status record of a node with the poll + command if the reason was session errors. + + mbdiff: + Changed available archiver tests, and fallback to ZIP + archiving. It is finally working. + + mbsebbs: + Corrected the reply test for new users when they had entered + their name. + Updated language number 413. + New users won't see the "new files" when they logon the first + time. (They saw all the files on the bbs). + If IEMSI login is aborted or failed, IEMSI won't be used + anymore during login. + When the offline reader packs netmail, only personal mail is + now added to the dowload packet. + + +v0.33/b9 12-Jun-1999 + + update: + Change scripts that call mbuser. + + general: + Changed startup and finish logging of all programs to use + one style. + + mbaff: + New file reports that are splitted over several messages will + now report the right report totals. + Removed some development debugging logs for splitting messages. + + mbdiff: + Removed all extra debugging logs from version beta-8. + + mbuser: + Made command syntax and helpscreen as in all other programs. + This affects the scripts. + + mbsebbs: + For the "comment to sysop" function the .quote file in the + users homedirectory will now be truncated to 0 bytes to erase + its contents. + The "mailout" semafore is now only set at the end of the user + session. + Inserted the Nopper() call in the fullscreen editor to prevent + server timeout when writing a long message. + When writing a netmail to an unknown node, the user must verify + to send the mail anyway. New language prompt 241. + If a user is short with transfertime for a download, it will + be written to the logfile. + + mbfido: + The notify function will now only include areas that are + "Active" in the reports. + Changed the ASCII filtering of reading .tic and FILE_ID.DIZ + files, High-ASCII characters are not lost anymore. + The packet password is now only checked if the originating node + is in our setup. + Before processing AreaMgr and FileMgr messages the right + noderecord is loaded again in case it was replaced. + + +v0.33/b10 19-Jun-1999 + + general: + The man pages are removed. + + mbfido: + Removed logging of file descriptions. + Changed logging of replacing archive banner. + + mbaff: + Removed logging of splitting messages. + Removed several other debugging logmessages. + + mbsebbs: + Removed some debugging logging from download functions. + Corrected a logmessage for new users, language line 66 + is now obsolete. + + mbsetup: + Included (Spacebar = toggle) message in yes/no switches. + + mbuseradd: + Removed the creation of .profile in the users home directory, + this is not necessary because the users shell is mbsebbs. + + +v0.33/b11 29-Jun-1999 + + Most fixes in this release are from Jan van de Werken who is beta- + testing v0.33/b10. + + upgrade: + In mbsetup menu 1.14 set new fields 21 and 22. + In mbsetup, enter menu 8.5, set security levels for transfer + protocols and save the database. + + general: + Added 2 global setup integers for splitting newfiles reports. + + common.a: + Removed Getstr() function. + + mbfido: + Changed AreaMgr and FileMgr message body checks, lines with + more than 1 space or tab and empty lines are skipped. + Removed debug logging for import local netmail. + + mbsetup: + Added in menu 1.14 setup for newfiles reports message split + at a gently size (after a group of files) and a forced + message size. + In nodes setup, new records now default have Advanced tic off. + In nodes setup corrected several numbering errors. + New defaults for global configuration by Jan van de Werken. + To confuse all non-Unix users, all file attaches seem to + come from our A: drive. + Corrected a lot more wrong screen numbers. + + mbaff: + Implemented gently and hard splitting newfiles reports using + the global setup. + + mbsebbs: + Rewrote all user input functions. They should beep now if + the user does something wrong. + Changed the GetPhone functions, the format is not fixed + anymore and it accepts only 0..9 + - characters. This should + work in all countries now. Minimum length is 6 characters. + Changed the language prompts 45, 47 and 48. + Language prompt 46 is not in use anymore. + Removed the logdate2 function, it wasn't used. + Added GetstrP() function (instead of Getstr() in common.a). + Change transfer protocol now checks for the proper security + level. + + scripts: + Updated most scripts, added more comments, added tests to + see if MBSE_ROOT is already set, style fixes. + + +v0.33/b12 08-Jul-1999 + + general: + Removed creation of .VERSION file from the main Makefile. + + mbfido: + The echomail areatag is forced to uppercase. + Removes stale FILE_ID.DIZ files before processing a new one. + + mbsetup: + The new fields 1.14.21 and 1.14.22 where placed at the wrong + column on the screen. + Changed the default values for gently and forced message split + to 27 and 30 KBytes. + Corrected a missing linefeed in sitedoc protocols listing. + Corrected a menu error in menu 8. + Corrected placement of menu item 1.4.11 + Some cosmetic changes in the sources. + Corrected help message in screen 7.x.23, caused mbsetup to + crash. + + mbsebbs: + The info screen now displays compile date and time. + The Area listings for file areas and message areas now break + lines at column 79 and send cr/lf at the end of the line. + Also, area numbers increased to 5 digits (was 3). + Added cr/lf to language prompt 220 in mail.c + + lang: + Shortened prompt 220 with 1 character. + + +v0.33/b13 28-Jul-1999 + + general: + Added structure for file request index. + + update: + Run "mbfile index" once. + Include "mbfile index" in the maint script. + Modify "run_inout" script to start "mbfile index -quiet" if + the semafore "reqindex" is present. + Modify "run_inout" script to replace the fixed .pkt filenames + with stdin from the mbseq program, ie: 12345678.pkt will + become `mbseq`.pkt + Set the filerequest limits in menu 1.17.22 and 1.17.23 + You may specify portspeeds above 57600 in the tty's setup. + + common.a: + Corrected a comment in pktname.c + Changed error logging in execute.c + Moved execsh() from mbcico into common library. + + mbcico: + Removed some debugging logmessages from yoohoo.c + Changed some debugging logging from 'Session' to 'EMSI'. + File request response messages now contain MSGID, PID and TZUTC + lines and request limits. + Filerequest limits implemented. + Filerequest search now uses the index file created by mbfile, + should be fast enough now. + Moved execsh() to common library. + Magic execute request result is now send by mail instead of + an ASCII textfile. + Made some changes in zmmisc.c according to ifmail-2.13, sessions + with D'Bridge 1.58 seems to work now. + Logging of "chat: read return -1" suppressed, this is most of + the time caused by modem hangup during dial and is not a real + error. + During outbound scan missing directories will be created. + A major error in callall.c prevented crash arcmail to be sent. + Rewrote all functions that created mail, less disk I/O. Also + made the .pkt headers the same as the mbfido program did. + Will now handle serial port speeds upto 4000000 baud if your + hardware can handle that. + + mbsebbs: + Finally implemented user access flags. + Removed some debug logging. + Changed "Terminated on SIGALRM" error logging to normal log + with "User inactivity timeout" message. + + mbsetup: + In edit users toggle of flagbits is now correct, no "notflags" + anymore. + Added setting of filerequest limits in menu 1.17 + Changed fieldlength for integers to 7 digits. Now you can + enter all available portspeeds in the tty setup. + + mbfile: + New command: index. This will create ~/etc/request.index + which contains a sorted index of all requestable files on + your bbs. This index is used by the mbcico request processor + to speed up the filerequest search. The "reqindex" semafore + is removed when it is finished. + + mbfido: + Creates "reqindex" semafore if there were files imported. + The check for stale FILE_ID.DIZ files was at the wrong point. + Will pack the mailqueue if the temporary .pkt file is bigger + then the maximum size of that .pkt and creates a fresh one. + + mbseq: + New program. Write a 8 character hexadecimal unique sequence + number to stdout. This can be used in shellscripts to create + unique filenames. The sequence numbers are fetched from mbsed. + + +v0.33/b14 16-Aug-1999 + + general: + This is the first public release. + + mbcico: + Revised zmodem protocol, changed timers etc. Used latest + information (Aug 1999) found at Omen Technology's ftp site. + In the openfile function added support to skip files already + present in the inbound. + Hydra and TCP protocol transmitters now send the filetime + rounded up to even seconds just like zmodem already did, so + the filetime is always the same on DOS (Fat) as on Unix + systems. + Zmodem will now skip files already present in the inbound. + Hydra will now skip files already present in the inbound. + TCPproto will now skip files already present in the inbound. + Changed EMSI debug logging, should be more clear now. + Does finish zmodem session with D'Bridge [1a] 1.58 now. + + scripts: + Added support for UPS. The UPS software should set the + semafore "upsalarm" when it's running on battery power. Most + utilities will the not run anymore to prevent data-loss. + The semafore "upsdown" should be set just before the UPS + starts the real shutdown. This will force the mbstat program + to timout after 30 seconds. + + mbstat: + The wait command will only wait for 30 seconds instead of + one hour if the semafore "upsdown" exists. + + +v0.33/g1 01-Sep-1999 + + general: + Many brave souls have downloaded and tested the previous + version. Most changes in this release are bugs found by all + these people. + Added checks in the Makefile to test the MBSE_ROOT variable, + written by Jan van.de.Werken. + Added checks in some Makefiles for root privileges for + make install. + + upgrade: + Enter mbsetup 1.1.10 and set the name to "bbs". + Check UnSecure switch in echomail areas. Should be off unless + you need it. + Remove the line LOGDEBUG from $MBSE_ROOT/etc/client.conf + + common.a: + Added the original copyright in for the 32 bits crc code. + Checking .pkt header now checks valid system aka's. + Removed reading LOGDEBUG from ~/etc/client.conf, wasn't used. + Added SigName for Alpha CPU (not tested). + + mbfido: + Removed debug message in addpkt. + Added 2 extra DeleteVirusWork() calls in tic processing at + points where processing is aborted and left the temp directory + with unwanted files. This also happened when a virus was + detected. + Will now import echomail from points who are connected to + the normal nodenumber instead of the hub/host number. + Will now try to import bad netmail into a netmail directory + instead of losing it. + Changed the check for received echomail, the sending node + must be in the export list, unless the msg area UnSecure flag + is set. + Implemented the connected systems Excluded flag for echomail + connections in import/export echomail. + Implemented the connected systems Excluded flag in the AreaMgr. + The Notify function now also sends statistic reports to the + node. + Fixed a routing problem (I hope) for out of zone routed + netmail. + When scanning outbound netmail the domain field is zeroed in + the destination address to prevent garbage in the domain field. + Patches by Jan van.de.Werken, files import now set the name to + FileMgr instead of sysop's name. + AreaMgr and FileMgr generated messages now have AreaMgr or + FileMgr as "From" name instead of the sysop's name. + + mbcico: + Restored some zmodem code that was changed in beta-14. + Added some other code for error handling (Carrier lost). + Zmodem file transfers are streaming again. + Added a tty flush in the TCP/IP transmitter. + Solved the EMSI handshake problem with T-Mail mailers. + + mbsetup: + Added menu 1.1.10 to setup the name of the bbs startup + account. The default is "bbs". + Changed ImpSeenby switch in UnSecure switch in message areas + setup. + In message areas the Excluded flag is added to the systems, + you can now disable a node from an area if a moderator wants + that. + In edit users added a switch to toggle OLR Extended Message + Info in OLR download. + + mbsebbs: + Now reads the bbs startup name from the configuration instead + of using the hardcoded name "bbs" + Writes a door.sys dropfile in users homedir. The first line is + fixed to COM0 forcing doors to run in local mode. The second + line is 0, meaning 0 baud is local mode. Let's see how this + works. + Added some logging for the OLR upload function. + Now tests lowercase filenames also for reply packets created + by MultiMail. + Now includes the ^aMSGID string in BlueWave download messages. + Optional includes all other kludges in BluwWave download. + + +v0.33/g2 02-Oct-1999 + + general: + Moved the mbsed back into this archive. Included the new + installation procedure. + Moved the example files into this archive. + + upgrade: + Remove $MBSE_ROOT/bin/fbgen. + If you want to switch off CFG.dospath, be sure your outbound + is empty or mail and files will get lost!!! Thus: type + "mbout stat" and see if nothing is there before you do that. + + common.a: + Patches by JvdW, if CFG.dospath is empty then fileattaches + will contain Unix style filenames, otherwise the ataches + are translated to DOS style. + + dbase.a: + If SearchTic and SearchMsg function the area must be active + in order to be found. + + mbaff: + Removed a bug in scanning uploads function that created empty + lines in the toberep.data file. Also forced the long + description strings to be no longer then 48 characters. + + fbgen: + Finally fixed this one. Can now read multiple description + lines from files.bbs. Renamed to mbfbgen. + The dangerous gets function is replaced. + + mbsetup: + The edit path function now checks if the directory has read + access instead of write access, it might be on CD-rom. + + mbfile: + Skips the kill and pack functions on CD-rom areas. + Skips the check of files on disk against the database on + CD-rom areas. + + mball: + Doesn't create 00index files on CD-rom areas anymore. + + mbcico: + More bugfixes in TCP protocol. Better error handling for + disconnected sessions. + Creates inbound tmp directories when they don't exist. + Now presents the EMSI info from the tty records if + possible. + + script: + Corrected a syntax error in the maint script. + + mbfido: + The areamgr and filemgr names are not hardcoded anymore, + the names presented are the first names defined in the + setup. + Outbound processing now also works if CFG.dospath is empty, + then Unix style fileattaches will be created. + Rewrite of file import function by JvdW to fix some bugs. + FileMgr and AreaMgr global connect and disconnect now + check if the area is set to Active. + Rewrote ARCmail naming, zero length archives older then + 6 days are deleted. If a zero length archive then still + exists, the extension number is bumped. This should + prevent using the same archive name on the same day to + nodes with more then one mailsession each day. + + +v0.33/g3 18-Oct-1999 + + general: + Ideas for generating ARCmail names by Sean Rima and JvdW + implemented. + Lot's of cosmetic stuff to make commandlines, help screens, + more clear and the same for each program by JvdW. + + update: + In mbsetup 1.14.15 check that this is zero or the number of + old days you want echomail rejected. + Check in mbsetup nodes->mail that "ARCmail a..z" is off + for nodes that can't handle that. + + mbcico: + File attaches that are no longer on disk are now correctly + removed from the flo files. Changed logging for this. + The scanout function now removes truncated ARCmail files + that are not of the current day or are older then 6 days. + Corrected a bug that the inbound directory wasn't created + when it didn't exist. + + mbsebbs: + Now allows netmail crash replies. + Can now reply netmail that came in via the UUCP gateway, + when the reply is saved the message is readdressed to the + gateway. + Disabled the download transfertime check before starting a + download. It gave unpredicteble results if the users previous + download cps was bad for some reason, the user couldn't + download. + + mbsetup: + New menu item in 1.14, "Reject old", to reject incoming + echomail older then this number of days, or zero to not + check the age. + In nodes->mail setup added a switch to allow a..z + ARCmail archives extensions. + Made editing log (debug) switches more clear. + Some editing keys now beep if you do something wrong. + + mbfido: + The pack function now supports 'a..z' ARCmail extensions + if this is on for that node. + It's possible to reject too old echomail. + Short commands and options now displayed in the help. + The fileforward netmail now set's the filemgs name first + character to uppercase. + The uploader name with file import now only has one + name anymore, the first character is capitalized. This + line should not be too long, this gives ugly listings. + System aka's in the same zone other then the aka of echomail + area are added to the seen-by lines. + Added experimental zonegate support for echomail. + Removed some debug logging in tic processing. + + mbaff: + Short commands and options are now possible, like other + programs already did. + + mbout: + Short commands and options are now possible, like other + programs already did. + The scanout function now removes truncated ARCmail files + that are not of the current day or are older then 6 days. + Suppressed the help message for file attach, it is not + yet implemented. + + mbfile: + Short commands and options now displayed in the help. + + mbmsg: + Short commands and options are now possible, like other + programs already did. + + mball: + Short commands and options now displayed in the help. + + mbstat: + Short commands and options are now possible, like other + programs already did. + + mbfbgen: + Handles files.bbs lines of 255 characters instead of 80. + + +v0.33/g4 05-Nov-1999. + + mbfido: + The final seenby lines are deduped and sorted before writing + them to the in and exported echomails. + Areamgr and Filemgr messages now have a capitalized first + "From" name character. + Areamgr new function: flow reports. Can be requested by + %flow and is automatic generated with notify reports. + Areamgr, increased the area tag from 20 to 25 characters + in the notify reports and %list, %query, %unlinked response + messages. + Corrected a bug creating garbage at the end of the magic + execute commandline. + + mbsebbs: + Reply to UUCP gateway didn't work in real live, it seemed + that the official UUCP gate had no ':' character after the + REPLYADDR and REPLYTO kludges, while my testsystem running + ifmail 2.12 for the gate does. I now test both cases. + + mbcico: + Implemented remove ARCmail older then n days. + + mbout: + Implemented remove ARCmail older then n days. + + mbsetup: + Added integrity check for edit message groups. + Added integrity check for edit fileecho groups. + + +v0.33/g5 13-Nov-1999. + + upgrade: + Edit /etc/inetd.conf to add "-t ifc" for standard ifcico + protocol, "-t itn" for telnet protocol. + If you don't use the original binkp mailer, you may want to + add entries for the binkp protocol, this will show the + remote that you don't support the binkp protocol. + The installation scripts are updated. See the file SETUP.sh + on how the files /etc/services and /etc/inetd.conf should + look like. + + mbcico: + Implemented "not supported" binkp protocol. + Revised commandline parameters, in TCP/IP slave mode the + mode must be given on the commandline, -t ifc for standard + ifcico protocol, -t itn for telnet protocol, -t ibn for + binkp protocol. + Starting mbcico without arguments will show the help screen. + Now all programs do that exept the mbsebbs binary. + + mbsebbs: + Changed language prompts 214 and 215. + Added language prompt 46. + Added message export to file function. The file will be saved + in the users private homedirectory, the filename is created + as _.msg in MS-DOS format. + Corrected display header of users home directory file list. + Added import file in message function, the file must be in the + users private homedirectory. This only works in the fullscreen + editor. + + mbfido: + Inserted 2 sync() calls during mailtoss. I hope this prevents + temporary missing archives and .pkt files. + New command, "tag", writes areas tagfiles for each mail and + tic file group to the ~/doc directory. Filenames are automatic + created. + + mbsetup: + In edit tic area and edit message area editing of connected + systems now uses the existing node setup. + Made a new menu selector for areas with Global and Move + options. + Implemented new menu selector in message and tic areas select. + If you jump directly to a message or tic area with select, the + offset is recalculated to that area range. + Added global editing functions in message areas setup. Functions + are add, delete, change connected systems, aka to use and some + other settings. + Edit a nodes aka's is checked if these aka's are used in tic + and message areas. + Delete a node is checked against aka's used in tic and message + areas. + +v0.33/g6 22-Nov-1999 + + mbsetup: + Removed a bug where you could not add new aka's to nodes due to + the aka's checking. + With database intergrity checks the cause of blocked actions + is now logged in mbsetup.log + If you change the number of connected systems or maximum groups + in global setup, the databases affected will be automatic + updated. + + mbfido: + When writing a notify message to selected nodes all other nodes + received status messages. + Corrected uploader name, removed "BBS" string. + Installed patches from JvdW in file forward to correct some + segfaults with the subject variable. + The local hatched files are now moved to the inbound so that + the unarchiver programs can find these files. + + mbcico: + Added very experimental binkp protocol. Handle with care and + at your own risk. This isn't finished yet. + + SETUP.sh: + Fixed the script, there was one "fi" missing so the script + crashed and didn't do all changes. + + +v0.33/g7 05-Dec-1999 + + mbcico: + Fixed some logging in binkp protocol. It works for normal + mail and files transport. + + mbsebbs: + Export message to users work directory did not put the + message in the work directory but in the home directory. + + mbfido: + Netmail to unknown bbs users are now readdressed to the + sysop. Should be a bounce message. + Added a experimental test for empty imported netmails. + The netmail area Private flag is checked to see if we keep the + original Private flag or force imported netmail to Private. + + +v0.33/g8 12-Dec-1999 + + general: + Changed the Makefile, make zip now puts FILE_ID.DIZ in the + root of the directory tree so that file processors will + find it now. This is a version of this file. + + common.a: + Removed and changed nodelist lookup debug logging. + + mbuseradd: + Now check the existance of the users home directory, if it + is found then it is removed before the home directory is + created again. This fixes problems with RedHat 6.1. + + mbfido: + Global AreaMgr commands cannot disconnect message areas anymore + that are mandatory. + Removed some routing tracking debug messages. + Added check to see why not connected echomail is imported to + the netmail of the last user in the userbase. + Changed check to "Sysop of z:n/n@network" to readdress to + the sysop's real name. + After readdress a netmail to the sysop, the usersearch is now + done again. + If locking the message base during import fails, import is + aborted. + + +v0.33/g9 18-Dec-1999 + + upgrade: + If you ever used DOSEMU then do a rm -Rf .dosemu in each users + home directory. The ownership of these files are changed so + they are created again when the user runs a door for the + first time. + If you have created ttyinfo records with just digits in it + for the /dev/pty/0 type tty entries, you need to change them + to pty/0 type entries. The example etc files are now containing + these entries. + + general: + All sources recompiled with memwatch. I will not name all + places where I found memory leaks, it was a lot. Still busy + finding them, but most programs are allright now. + You can turn memwatch on and off in the file CONFIG. If you + change it, do a "make clean" before recompiling the sources. + Changed my Fidonet address, the testsystem is listed now and + removed my old e-mail address which was not valid anymore. + Changed the installation script. + For RedHat 6.1 and newer a different /etc/rc.d/init.d/mbsed + file is created then before because the su command behaves + different. The install script will try to detect this. + Thanks to Juergen Heisel for finding this problem. + Changed more startup and shutdown scripts. + Changed language prompts 306, 311 and 324 to reflect + GigaBytes storage instead of MegaBytes. + Changed language prompt 327, it had a space too many at the + end. + + common.a: + In the attach function implemented the global leavecase + switch to be able to turn off the forced uppercase for + file attaches when dos translation is on. + + mbfido: + Found a bug where mbfido ran out of file descriptors during + toss, only about 1012 messages were tossed and then the whole + thing started tossing everything to bad. Jim Hansen who + reported the problem, reported that tossing 37500 messages + now works fine. + Added the commandline switch -unsecure to be able to run an + unsecure toss, ie. no originating checks are performed. + Handle with care. + Forwarded netmail packets got the wrong from address in the + .pkt header. + Added fsync calls after every write to a message packet. + When writing .tic files to other nodes now the real aka of + the tic area is used in the From address instead of bestaka + match of the destination. + All system aka's in the same zone are now added to the .tic + Seenby lines. + Will now gently stop processing if the upsdown semafore is + detected. + Added a check with file import that there are no more then + 25 description lines. + + mbsebbs: + Added new controlcode, ^KM displays the users lastread pointer + in the current message area. + When reading new mail at logon, the users lastread pointers + are not updated anymore in echomail/news areas to prevent that + the users skips unread messages. + Only if a message area is Public/Private and a reply is given + the user gets the question Private y/N. On other cases the + flag is automatic set. + With netmail reply if enough security level a file may be + attached. + The door.sys dropfile date formats are now fixed. Depending + on the menu settings it can be original (pre 2000) format or + have four digit year numbers, the new style. Writing the + dropfile can also be suppressed. + Removed the setuid calls before and after running a door, + mbsebbs now always runs as user "mbse". + The $HOME environment variable is now forced to the users + real home directory, even if mbsebbs is started as user bbs. + When the user logs in, the existance of the subdirecties + .dosemu/run and .dosemu/tmp are created in the users home + directory if they don't exist. DOSEMU is happy with that. + Because of this, all files in the users directories are now + only owned by user mbse. + Moved the setup of last message and file area to a later + startup point in userlogin. + Autoexecuted menus are now also checked for user security + and user age. + Fixed the screen output of several bbs list menus. + Now handles the /dev/pty/0 device names found on newer + Linux distributions. + It will now also create the necesary subdirectories for the + /dev/pty/n devices. + + mbaff: + The written messages statistics counters always counted at + sunday in januari. + + mbmsg: + Added message post from a file function. + + mbsetup: + With the filebase editor I got segmentation faults on a Sun + Sparc machine, changed the filedate calls. They show up the + local time now also. + Added the global editor for the tic areas. + Added in menu 1.3 a switch to leave to case for .flo files + original, ie. not forcing it to uppercase. + Added menu creation in menus setup. + Added setup to suppress the creation of a door.sys dropfile, + and the ability to write the years in four digit format in + the door.sys file. Newer doors seem to understand this. + Added delete menu item in menu setup, finally. + Added menu item move. + The menu editor now shows the autoexec menus with the + lightred lowercase "a" at the selection key position. + When a new config.data is created, the default loglevels + are now set to normal values. + + mbcico: + Forgot to implement the NoTCP global and per node flag. + If you are not permanent connected to the net, use these + to prevent the use of internet protocols. + + mbmon: + Screen 5 now calls Nopper() to keep the server alive. + Corrected screen display numbers 5 and 6. + + diff --git a/ChangeLog_2000 b/ChangeLog_2000 new file mode 100644 index 00000000..18a6a520 --- /dev/null +++ b/ChangeLog_2000 @@ -0,0 +1,668 @@ +$Id: ChangeLog_2000,v 1.1 2002/06/01 13:55:40 mbroek Exp $ + + MBSEBBS History in 2000. + + +v0.33.10 24-Jan-2000 + + general: + Changed version numbering. From now on, minor odd numbers + are testversions, even are stable. Same as with the + Linux kernel. + Changed the setup script, it should now detect SuSE systems. + This is not tested. + + update: + Remove (as root) all bbs users from /etc/ftpusers. They are + not needed (and never were). + Compile and install this release. + Kill mbsed (killall -9 mbsed). + Edit $MBSE_ROOT/etc/mbsed.conf, remove the line with logdebug + and the commentlines above. + Start mbsed again (/opt/mbse/bin/mbsed). + Then start mbsetup, open the global menu 1, and exit. Answer + yes to update. + If you have any echomail passthru areas, give them a + message base path. Passthru doesn't exist anymore. + + common.a: + The file_crc function now supports the usleep(1) code + for background processing. + The logfunctions now replace and with spaces. + + msgbase.a: + Corrected a bug in the Pack function when the headerfile + was corrupt. If the header is corrupt, the index file is + used to find the right recordposition again. Errors are + logged. + + mbsed: + Removed the logdebug loglevels. Logging is fixed now. + Changed the answers for the SBBS command. + + mbsetup: + Added a global setup screen for the ftp server. + Added a switch in the menus setup for doors to set a flag + to create door.sys files for dosemu/Vmodem use. + Revised the message area setup screen. + Changed text's in global mailer setup to indicate that the + mailer flags are for TCP/IP connections. + + mbuseradd: + Doesn't add usernames anymore to /etc/ftpusers. This is not + needed for standard ftp security. + + mbcico: + Added send filerequest to the binkp protocol. In single + batch mode, you need to connect a second time to get the + request response. This is normal single batch behaviour. + Nodelist flag for Binkp mode is XX. (For POTS/ISDN XA). + Added received filerequest to the binkp protocol. In single + batch mode this will put the files on hold. Multiple batch + mode works now but is only tested against another mbcico + mailer. + Calling internet nodes could not use a forced hostname or + IP address. Fixed. Added search in nodes setup phone + fields for hostname/IP address, search in nodelist location + entry (2 nodes on the world do that, I needed one of them), + and the IP notation in the nodelist phone field (000-...). + Hostnames after the flags are not resolved, hostnames + should be in the system name field. + In the binkp protocol the flags from the global mailer + setup are sent as our flags. + + mbsebbs: + The next two pathes are from Ken Bowley. + Changed the fullscreen editor with patches from Ken Bowley. + Improved behaviour for inserting and deleting text. + Changed the door.sys creation, if the COM port option in + the menu files is on, the door.sys file writes COM1 in + it with a portspeed of 115200. This is for running doors + under dosemu and a patched Vmodem. + Made newmail scan and other checks for personal mail case + insensitive. + The fullscreen editor source now has an extra define FSEDIT + to enable heavy debugging logs. + It didn't respect the BBS closed status on lines that did + not honor ZMH status. + Removed "Re:" debug logging from mail.c + + mbfido: + Corrected the queue path for tic passthru areas, the + destination path missed a /. + Delete file from the inbound with passthru areas is now at a + later point. + Removed the message passthru switch, you needed and area + anyway. + + mbstat: + Corrected screen output when it was waiting for the bbs to + close. + + mbftpd: + New! Special ftp server for MBSE BBS. Should use BBS users + access restrictions etc. Doesn't work yet so don't use it. + It is included in the distribution, but not compiled or + installed. + + +v0.33.11 07-Mar-2000 + + upgrade: + Change the CLIENT line in ~/etc/mbsed.conf, the authcode must + now come behind the hostname. Remove the AUTHCODE line. + Kill the old mbsed, start the version from this version. + The same changes must be made to ~/etc/client.conf + Run mbsetup, goto 1.17 and 1.18 and set it up for your system. + Check the QWK area names in the message areas: if there are + areanames longer then 13 characters edit them so that they + fit in the 13 characters limit. In previous versions this field + was 20 characters. + + general: + Added global config to create www pages for downloads. + Included the mbftpd directory in the main Makefile. Don't use + the mbftpd program yet! + Updated the documentation, some parts were 2 versions behind. + + common.a: + Execute external programs now lowers process priority to 15, + and restores to 0 after execution. This should make running + (de)compressors and other utilities "nicer". + If a client fails server authorization, it will now proper + close the server connection. + + mbsed: + The syntax of the client lines in mbsed.conf is changed, + multiple lines are now allowed, hostnames and authcodes must + be on one line now. + It is now possible to close the connection when not authorized. + Minimized the number of response codes. Updated the + documentation. + + mbsetup: + Added global setup menu for the html pages creation. + The length of the QWK area names in the message areas setup + is changed from 20 to 13 characters for the QWK specifications. + Removed selection of menu number 216 from the menu editor. + + mball: + The index command now also creates index.html files for web + clients. The index files are stored in the download directories. + If a download directory contains .gif or .jpg files then + thumbnails will be created and the thumbnails will be used in + in the index.html files. + You need "convert" of the ImageMagick package to use that + future. + + mbfile: + Added 'index*' to the list of filenames that isn't checked + with the mbfile check option. + Pack and Move file functions will now also delete or move the + thumbnail files. + + mbcico: + Changed the binkp receiver timeout code to prevent a hanging + receiver. This only happens sometimes on a Sun Sparc (and + still does). + Changed the modem chat logging. It is now visible what is + really send and received from to the modem. + + mbsebbs: + Added wordwrap in the fullscreen texteditor. Patches by + Ken Bowley. + Replaced hardcoded prompts in offline.c with language prompts. + New prompts are 66, 228, 229, 256, 260, 277, 297, 338, 374, + 377, 391..397, 411, 425, 439..460. Replaced a language prompt + in the Language load function with a hardcoded message. + Removed menu option 216, download pointmail. + Added QWK download and upload. Not fully tested yet!! + Added ASCII download. + File descriptions with color info will now be displayed in + color. + + mball: + File descriptions with color info suppresses the color info + in the all/newfiles listings and 00index files. + + +v0.33.12 24-Apr-2000 + + upgrade: + After compiling and installing set the amount of free + diskspace in mbsetup menu 1.4.22 to your choice. + Kill and reload mbsed. + If you use the web interface for the file areas create + the directory css in your webserver document root and copy + files.css from the distribution archive in it. Then run + mball index. Customize files.css to your taste. + + general: + Changed the ~/tmp/scan.mail file to ~/tmp/echomail.jam and + ~/tmp/netmail.jam in the standard JAM format. + Added file README.GoldED + + common.a: + Added function to check for free diskspace on ext2, msdos and + vfat filesystems, except floppies. + + mbsetup: + New nodes now have "Notify" default off. + Renamed menu 1.4. + Added minimum diskspace setting to menu 1.4. + Added force FNC switch to the nodes setup. + + mbfido: + Exported netmail are checked until any tearline, not MBSE's + tearline alone. + If exported echomail doesn't have a ^aPID kludge, the ^aTID + kludge will be inserted anyway. + Removed some debugging info from the ARCmail pack function. + When netmail to points is written with GoldED there was no + ^aTOPT kludge. Any missing ^aTOPT, ^aFMPT and ^aINTL kludges + are now added if they were not found during mailscan. + The unarc/viruscheck directory is now completly removed after + use and created again. Sometimes files with strange names + were left behind with a normal recursive remove. + Now checks at regualar points the free diskspace. Execution + aborts if it is too low. + + mbsebbs: + Inserted ^aINTL: kludge instead of ^aINTL without colon. + Corrected the users age calculation, the users age increased + one month after his birthday. + + mbsed: + Added some fsync() calls to ensure disk writes. + Now starts logging reginfo locking after the fifth attempt. + + mbcico: + Made some small changes to the binkp batch function. + Added free diskspace check during outbound calls. + Added BSY command support for binkp during file transfer stage. + Changed binkp timer reset points during file transfer stage. + The binkp receiver now checks diskspace before accepting a + new file, it sends BSY if too low to the remote. + If in nodes setup the FNC flag is set, the binkp protocol + will now send old 8.3 uppercase filenames to the remote. + + mball: + The WWW pages now include a stylesheet so it is more easy + to create a personal look and feel for the pages. The + stylesheet goes into htdocsroot/css/files.css An example + is included in this distribution. + + mbaff: + Added free diskspace check. + + mbindex: + Added free diskspace check. + + mbdiff: + Added free diskspace check. + + mbmsg: + Added free diskspace check. + + mbuser: + Added free diskspace check. + + +v0.33.13 12-Jun-2000 + + upgrade: + Make all files and install them as root. + If you use GoldED or other mail utilities as another user + change $MBSE_ROOT/sema and $MBSE_ROOT/tmp to mode 777. + Kill mbsed with signal 9. + Now start mbsed again (/opt/mbse/bin/mbsed). + + general: + The install script now sets the $MBSE_ROOT/sema and tmp + directories to mode 777. + Updated the internet news gate documentation. + + msgbase.a: + Now creates all JAM files with mode 0666. + + mbcico: + The binkp driver skipped aka's when the node number + was zero. + Changed on hold logmessage. + + mbfido: + When forwarding a netmail, a temp file was closed twice, + this caused a segfault on glibc-2 systems. + In the logfile areamgr notify messages had the same orgin + and destination address. + + mbsed: + Changed the signal handlers. It will now allways try to + cleanup lost clients. It will also not hang anymore when a + client aborts for 10 minutes and use 100% cpu time. + + mbsebbs: + Changed logging in filearea select. + Permanent removed download checktime function, this was + already off. + Added error logging for setting filearea 0 during logoff. + Only netmail replies via an internet gate are now readressed + to a UUCP address. + + +v0.33.14 03-Jul-2000 + + upgrade: + Read this section carefully!!! This is a large update. + Backup the whole BBS configuration. + Compile and install all programs. + Kill -9 pid of mbsed. Restart mbsed. + Delete file ~/var/mailer.hist + Delete in all outbounds the *.sts files. + Start mbsetup, set item 1.5.14 if you want new users to + get an email box, you should do this. + Set 1.13.4, 1.13.5 and 1.13.6 to the node where the pop3, + smpt and nntp servers are, normally this is "localhost". + Set 1.13.10 to the Fidonet aka you will use for incoming + and outgoing email via the Fidonet UUCP gate. + Set 1.13.11 to the node address of the Fidonet UUCP gate. + Set 1.13.12: use "No ISP" if you dont't have internet + access, you will then use the default Fidonet UUCP gate. + Set it to "Dial ISP" if you connect sometimes to the internet + of have a cable modem without a DNS entry. Set it to + "Perm ISP" if you have a permanent connection to the internet + and you system has a valid DNS name. + With mbsetup open the userbase, close it and answer yes to + the save question. If you want existing users to have + private email, set 15.36 for each user to yes. You should + do this to accept email from the UUCP gate. + Open the message areas setup (9.2), exit and answer yes to + the save question, this will update this database. + Remove any existing email areas in the normal mail setup, + menu 9.2 (you should not have had any yet). + With mbsetup open menu 16, this will add the default services + database. Add entries as needed. + With mbsetup open menu 17, this will add the default domain + translate database. Insert entries as needed. Move the new + entries so that the .fidonet .ftn translation is the last + entry. + Go back to the start of this section and check! + + general: + Introduced users private email. Each user has (if set) three + email boxes: mailbox, archive and trash. + New system settings GiveEmail, POP3 host, SMTP host, Email Aka, + UUCP gate aka and Email mode. + New menus for email: 216 Read email, 217 Post email, 218 Trash + email, 219 Choose mailbox, 220 Quickscan email. + New user settings Email and plain password. + All users can now have private email boxes. + In normal mail areas you can't create email boards anymore. + Some documentation is updated for new features and some + changes are made to explain some things better. + Added a services database. These are mail accounts that can + perform certain actions. + Added domain translation database, this will translate fido + domains to internet domains and back. + Changed the message areas to contain newsgroups information. + + common.a: + The nodelist lookup function didn't recognize the internet + protocol flags followed by a colon and portnumber. + Move some functions from mbfido and mbmsg in here. + Added characterset convertor from ifmail. It uses the same + maptabs. + Moved some other functions into this library. + + mbinet.a: + New library, internet protocol interfaces. Has interfaces + to SMTP, NNTP and POP3 protocols. + + msgbase.a: + The MsgIdCRC and ReplyIdCRC values were not set in the message + headers. + Added protection for too long subfield strings. + Made some stringlengths longer, following JAM specs. + + clcomm.a: + When closing the server connection the autorisation table will + now be freed before the program ends. + + mbcico: + During binkp calls the mailer history wasn't filled with + session information. + Some system names were too long for the history info. + Will now properly initialize the mailer history file when it + doesn't exist. + With incoming calls the "Node not in setup..." debug log + message at startup is supressed. + Will send netmail with Immediate flag set allways. + Will now also poll non-CM systems outside ZMH. You should + know what you are doing! + The format of the outbound .sts files is changed to prevent + problems on Sparc systems. + Made the FTS-0001 sessions work again. + With outbound sessions the RH1 link option is set. + If a file is received and there is alread an empty file with + the same name, that one is removed to prevent filename extension + bumping. This may be a leftover from a previous failed session. + + mbout: + Won't create polls for nodes not in the nodelist, nodes that + are Down or Hold. Removing polls is always possible. + When multiple polls on the commandline are given, if one of + these nodes is down/hold, then all other polls are still + created. + When creating a poll for a non-CM node outside ZMH, a warning + is given and written in the log. + Added the fileattach command. + The format of the outbound .sts files is changed to prevent + problems on Sparc systems. + + mbfido: + In the rollover function the mailer history is truncated each + month. The current and previous month records stay. + When forwarding .tic files, the files are now attached to the + routevia address if this is set for a node. + Processes scanning of netmail with the immediate flag set. + Added more debugging info for the scan function. + Uses the services database to decide incoming netmail to handle + by AreaMgr, FileMgr or Email. + Moved some functions to common.a + Configuration errors found during mailscan are now logged. + Removed a small memory leak from the magic manager. + Added experimental email import from a FTN UUCP gateway. + The AreaMgr now refuses to disconnect a node who is cutoff from + an mail area to prevent reconnection. + If from a received tic file the accompaning file is missing in + the inbound the errormessage will now say that instead of the + wrong message "Permission denied". + + mbsetup: + In edit fido aka's when you remove a secondary nodelist the aka + is now automatic erased. + The line editor now checks if a line only contains spaces, if + so, the line is returned erased. Trailing spaces are still + possible! + Added global settings and user settings for the new options. + Added 5 new menu choices, Post Email, Read Email, Trash Email, + Choose Mailbox and Quickscan Email. + Added setup for the services database. + Added setup for the domain translation database. + Corrected some sitedocs chapters numberings. + Added setup parameters for news in the message areas editor. + For new installations there will now be a default system + location filled in. This will prevent "mbstat open" to hang + for sysops that didn't do proper system setup. + + mbmsg: + The post function created the semafore scanout instead of + mailout. + Moved some functions to common.a + Messages written with GoldED were deleted by age because some + GoldED versions don't set the Processed date. + + mbsebbs: + Added DoNop() to message read function to prevent losing the + connection with mbsed with long messages. + Added netmail Immediate option for non CM nodes. + Replaced some hardcoded prompts by language prompts. + Duplicate phonenumbers check is finally working. + Added better check for personal mail. + The messagearea overview now also counts messages written by + the user as personal messages. + Changed the newuser function to set system and bbs password + in one function so the user creates the password only once. + During normal login (via user bbs) the plain user password is + stored in the userbase. This will not work with Unix login. + New textcontrolcode: Control-K + N, current e-mail mailbox name. + Updated the change password menu command to use the new + mbpasswd wrapper. + If a user decided to Quit check for newmail, the bbs crashed + with a segfault. + Will not insert Re: in the subject of the subject contained a + Re^2: produced by GoldED. + Patched the fullscreen editor with code from Johannes Lundberg + to correct the "invalid screencoordinates" problem. + Adds the ^aCHRS kludge with CP437. + Will now free the server authorisation tables on exit. + The users plain password is now written to door.sys + + mbsed: + Removed the fsync calls in the logfile write functions, + it never did any harm and the fsync calls do really slowdown + the system. + The locking functions only waited for 2,5 second instead of 15. + + mbpasswd: + New wrapper, sets a new password for a user from the + commandline. + + mbuseradd: + Doesn't ask the user for a new Unix password anymore, mbpasswd + is used instead to set the password. + + lang: + Added 10 new language prompts, 461 upto 470. + Changed language prompts 39, 40 and 388. + + mblang: + Corrected a bug reported by Johannes Lundberg (2:206/149). + + mbuser: + Will now remove blank records at the end of the database. + + mball: + The index function now translates the characterset from CP437 + to ISO-8859-1. + + mbdiff: + Removed a small memory leak. + + mbindex: + Writes an error in the logfile when no nodelist is defined for + a network that is defined in the network setup. Processing of + all other lists will be completed. + + mbmon: + Will now free the server autorisation table at exit. + + mbmail: + New program, use this to replace ifmail from the ifmail package + for the email gateway if you had that installed. If it is then + it's probably configured in /etc/sendmail.cf or whatever other + MTA you are using. + + +v0.33.15 08-Oct-2000 + + upgrade: + After installing the new binaries kill mbsed. Start mbsed. + Start mbsetup, open global menu 1, exit and save. This will + set the default value for newsarticles dupe database size. + Set the real news areas to the type News instead of Echomail. + Copy mbsebbs-0.33.15/script/run_inout to $MBSE_ROOT/etc + Compile the nodelists again with mbindex. + + general: + All version information for the sources now comes from the + generated file config.h + Tested on Slackware 7.1 (i386) and Debian 2.2 potato (Sparc). + Changed the SS() macro to MBSE_SS() to prevent conflicts + with system libraries. + Changed the way debug logging is, see the file DEBUG for + details. + Updated the ftscprod list with version 006 of 22 jan 2000. + I dared to ask for a product code with the FTSC commitee. + Removed the McMail.bug file from the distribution because + later releases (after 1.0) don't have problems anymore with + EMSI handshake. + Added nodelist capability flag IFT for future extension. + Added forgotten nodelist capability flag Z19. + Changed the analogue modems priority. + + lib: + When there was more then 6 Gig diskspace free, several programs + complained about negative diskspace available. + The logger now registers the /dev/pts/n devices correct. + Changed the logger for the new debug way of logging. + The logger is now protected for stringlength overflow. + + mbfido: + When exporting echomail all system aka's in the same zone are + now added to the SEEN-BY lines. + Experimentail newsgroup postings from local posted echomail + and received echomail. + Now closes active SMTP and NNTP servers only once if they have + been used instead of opening and closing for each message. + The filemover now creates destination directories if they don't + exist. + Added patches from Redy Rodriguez of 2:283/613.6: + . Added %RESCAN and %MSGS to the Areamgr. + . It also fixes two bugs in %QUERY: it incorrectly listed the + linked areas (I have added the great totals at the end of + answers to %QUERY and %LIST); and it also corrects its not + recognizing the area tag if you ask for it in lower case + letters (should always be in upper case). + . The AREA: kludge in echomail is now only tested if it is the + first line of the message. + . Added the message area autocreate function. See the manual + for details how to set it up. + mbfido now creates MBSE-FIDO ^aPID and ^aTID kludges. + Crashmail to points will be sent to their boss node. + Sending email now uses the mkrfcmsg function. + Incoming .pkt files not ending with a zero word are now + processed as if they were ok. The will not end up in the bad + directory anymore. + In magic unpackfile for test there is now an calloc for the + cwd buffer to see if that removes a NULL pointer free'd error. + + SETUP.sh + Added extra check for Slackware systems. Since 7.0 there is + an extra check needed to prevent detecting a Mandrake system. + Corrected a minor typo for Debian startup script. + + mbsetup: + The PickAka function loaded the global setup again when + editing the global setup so you did loose all recent changes. + Added a menu entry in menu 1.13 to set the size of the news + articles dupes database. + In screen 9.2 changed the order of fields 19, 20, 21 and 22 + because item 8. got partly overwritten by linewrapping. + + mbsed: + Corrected the data given for disk statistics for large disks. + The log function now prints all characters to the logfile. + + mbsebbs: + New users have now default the fullscreen message editor. + Added patches from Redy Rodriguez of 2:283/613.6: + . Changed language prompts 136...141 and added 471. Changed + the timestatistics output in funcs4.c for the changed + language prompts. It is now full international. + mbsebbs now creates MBSE-BBS ^aPID kludges. + It is now possible to reply crash to points by testing the + status of the bossnode. Also crash posting to points is + now possible. + Changed some debugging code of the fullscreen editor. + Message reading on Sparc systems works again. + The offline reader functions Tag areas, Untag areas and View + tags will now display the more/y/= prompt when the listings are + longer then the screenlength. Patches by Redy. + When posting a news article the To: field is automatic filled + with "All". + Postings to email and newsgroups now add some RFC headers for + mbfido to process. The style of GoldED is used. + + mbcico: + mbcico now creates MBSE-CICO ^aPID kludges. + The binkp transmitter now sends a zero length dataframe after + the transmitted file to all mailers except mbcico. + Removed a small bug in EMSI handshake routine. + Revised modem7 timeouts. Corrected checksum error for first + time receive of filename. + Did final testing for FTS-0001 sessions, a lot of bugs are + repaired. Note that most of them may be present in ifcico. + In a FTS-0001 session wazoo filerequests are also honored. + Sometimes received wazoo requests were renamed to temp + filenames and not responded to. + Corrected the helpscreen for the TCP/IP modes. + Improved the random dial delay time generation. + + mbmon: + The logger now registers the /dev/pts/n devices correct. + + mbchat: + Patches for new device pty names by Redy Rodriguez. + + fbutil: + New utility written and maintained by Johannes Lundberg, + 2:206/149@fidonet, . + + run_inout: + Changed this script to check for the inbound/bad directory, + if it doesn't exist it is created. + Removed all old news/email gateway stuff. + The goldnode compiler is called if it is in $MBSE_ROOT/bin. + + diff --git a/ChangeLog_2001 b/ChangeLog_2001 new file mode 100644 index 00000000..83d97317 --- /dev/null +++ b/ChangeLog_2001 @@ -0,0 +1,933 @@ +$Id: ChangeLog_2001,v 1.1 2002/06/01 13:55:40 mbroek Exp $ + + MBSEBBS History in 2001. + + +v0.33.16 07-Jan-2001 + + upgrade: + Edit the crontab to comment out the lines with run_inout, + mailer and mbstat check. + Compile the sources. + Stop the bbs, kill mbsed. + Install the new binaries. + Start the bbs as root with the new init script. It will be + in some init.d subdirectory depending on your distribution. + If you can't find it, reboot. + If you want to start using the newsgate, run mbfido news -learn + the first time to learn which articles there are. + Edit menu item 1.14.3 and check that it's empty if you don't + use it. + + CRON.sh: + Removed the lines that ware replaced by the mbtask program. + + SETUP.sh + Changed binkd into binkp because binkp is the official protocol + name. + Corrected a problem installing on a system without shadow + passwords. + Removed the part where the init scripts are installed. They + are now in a new script in the script directory. + + clcomm.a: + New function Syslogp, to log unformatted strings, the normal + formatted string logfunction did hang sometimes when logging + strings containing the % character. + Improved some error messages in the NNTP and SMTP connections. + + common.a: + Protected uniq_list and sort_list against NULL pointers. + Handles the error strings now if there is a $ at the start + of an logstring. This was only in the daemon but that didn't + give the right errorstrings. Nobody noticed this error has + been here from the beginning. + Protected the chkftnmsgid function from NULL input. + + libdbase.a: + Dupe checking databases are now loaded in memory when needed + and written to disk only once when ready. + + general: + Two new global switches, don't regate and allow control + messages. + Changed the maptab cp437__iso-8859-1 to translate 8bits dos + graphics to 7bits characters to make all fancy dos like + textboxes more readable on Unix systems. + New setup parameters for UUCP newsfeeds. + Added support for the PPC cpu. + + mbtask: + New daemon. Takes over the functions of the run_inout and + mailer scripts. This program launches every program needed + to run the bbs. It will also check Zone Mail Hour. + + mbsed: + Corrected a spelling error in the program header. + Made the userlog full transparant. + Fixed a memory leak in the userlog function. + Changed file locking of mbsed status files to use fcntl() + instead of placing lockfiles. + + mbfido: + Protected the rfcmsgid function against NULL input. + Build some protection against too long lines in ftn messages + that were gated from rfc and regated to news. + Removed a lot of #ifdef statements for gating behaviour and + made a lot of code permamenent. + Original code for #ifdef ALLOW_CONTROL and DONT_REGATE is now + under control of configuration settings. + Forwarded files had an old copyright message in the tic files. + When sending messages to the SNMP or NNTP servers a line with + only a dot in it will be sent as a space and a dot to prevent + that the server thinks it's the end of the message. + When sending or forwarding messages to a destination with a + routevia address, the arcmail will be packed with the flavor + of the new destination node. + Magic execute uses the exec call now instead of the system + call, the programs to execute must now be in MBSE_ROOT/bin or + it will fail. + If a MSGID is missing the dupecheck includes the message text + in the dupecheck. (Redy). + Local posted echomail gated to news has now the right From: + address format and the right UTC time. + Imported news messages had an AREA: line in the message text. + Gating news to echomail doesn't crash anymore. Fixed several + bugs to make this finally work. + During gating news to echomail the mbmon program now displays + what is going on. + Added usleep code during news scanning. + The program is now installed setuid mbse and setgid bbs. This + allows it to be called by other users as mbse. + New commandline, uucp. This allows mbfido to process incoming + uucp newsbatches. Call it from uucp by: + cat newsbatch | /opt/mbse/bin/mbfido uucp -quiet or + cat newsbatch | /opt/mbse/bin/mbnews + It will handle compressed and uncompressed newsbatches. + If a scanned netmail should be send via your own UUCP gate, the + message will be handled further by the ExportEmail function. + All other UUCP destinations will be send via the remote UUCP + systems. + News articles that need to be send via NNTP are now first stored + in a temporary file. At the end of the mbfido run it will try + to post these articles. If it fails (newsserver down), the temp + file stays for a later try. + Added newsserver options for submitting articles via rnews and + to an UUCP remote host. + Added alias database again that was in the original ifmail. + Made a universal email post function. + Removed sourcefiles addos.*, they were not used. + If in configuration the root for the html pages is blank, then + no html pages will be created. + Netmail send to "ping" are bounced back to the sender if your + system is the final destination. If such a netmail is passing + thrue, the receiver is notified (trace). All ^aVia lines are + added to the replies. Systems running MBSE 0.33.16 and up may + now add the PING flag to the nodelist. + + mbmail: + If there is no Organization header, the BBS default origin + line will be used. + Removed a lot of #ifdef statements for gating behaviour and + made a lot of code permamenent. + Original code for #ifdef ALLOW_CONTROL and DONT_REGATE is + now under control of configuration settings. + The packet routing is now determined using the mail tracker. + The point of splitting large messages is now set at the point + from the setup instead of hardcoded at 12 Kbytes. + The program is now installed setuid mbse and setgid bbs so that + braindead MTA's can still deliver mail to the Fidonet. + Mail for users at your own bbs is now imported into the netmail + board. + Added REPLYTO: REPLYADDR: and MSGID: kludges if these where + not yet present in the message. + Added alias database again that was in the original ifmail. + + mbsetup: + In menu 1.13 added allow control and don't regate setup. + In all menus the default prompt selection is now "-" instead + of "0", so just pressing enter will leave from a menu. + When editing a new message area the area is automatic made + active when you assign a group to the area. + Most databases now create default records the first time. + The sitedoc pages for the tty lines were to big for each + printed page. + Splitted menu 1.13 in a Fidonet and Internet part, added setup + parameters for UUCP newsfeeds. + In the services setup the UUCP/Email entry is now added for + first time installations. + + mbmon: + In all menus the default prompt selection is now "-" instead + of "0", so just pressing enter will leave from a menu. + + mbout: + Fixed the helpscreen. + + mbstat: + Removed the check command, this is now done by the mbtask + daemon. + + mbcico: + Doesn't use tmpnam anymore during execute magic request. + The openfile function doesn't use tempnam anymore if a filename + is created after 62 name bumps. + When searching for a matching aka and your first aka is + disabled the first active aka is used as default. + The closefile function doesn't use the tempnam function anymore. + + mbsebbs: + When posting news articles when not permament connected to the + internet, the From address will be Fido style. + Messages for offline packets are now packed using the + following tests: + - If area is netmail then only personal messages are + included (unchanged). + - If area is not netmail, and msg-kinds are private then + only personal messages are included. + - If area is not netmail, and msg-kinds are both (pvt/pub) + then personal messages and messages without pvt flag are + included. + - Otherwhise all messages are included in the packet. + Removed debug messages for the POP3 protocol. + + mbpasswd: + Fixed a compile problem on systems without shadow passwords. + Thanks to Mario Mure. + Corrected a missing library in salt.c + Corrected a missing conditional header file in encrypt.c + + mbmsg: + Wrote wrong CHRS kludge in the post function. + + mbfile: + Warns about empty file areas during kill files. + + +v0.33.17 21-May-2001 + + upgrade: + Compile the sources. + Stop the bbs using the init script mbsed as root: + Slackware 7.0 and older: /opt/mbse/etc/rc.shutdown + Slackware 7.1 and newer: /etc/rc.d/init.d/mbsed stop + RedHat and Mandrake: /etc/rc.d/init.d/mbsed stop + SuSE: /sbin/init.d/mbsed stop + Debian: /etc/init.d/mbsebbs stop + Install the new programs. + Start the bbs using the examples above and use the word start. + Use mbsetup menu 1.18 to change the Zone Mail Hour if you are + not in Fidonet zone 2. + + general: + The daemon mbsed is now obsolete, all these functions are now + in the mbtask daemon. For client/server communications Unix + Datagram sockets are used instead of TCP stream sockets. + Italian language added, translated by nervous@nervous.it + Spanish language added, translated by Redy Rodriguez. + JAM messagebase locking is now according to the JAM specs. + + docs: + Added fsc-0088, fts-4001 and a page to describe the use of a + UPS with MBSE BBS. + Updated documentation to show all changes. + Added in file area setup and message area setup the description + of the global commands. + + SETUP.sh: + Removed installing mbse as port in /etc/services + + common.a: + The diskfree check now ignores a mounted filesystem at /boot + because that filesystem is usually small and not needed by + mbse. + The diskfree check should support reiserfs now (not tested). + Code and logging cleanup in packet.c + + dbase.a: + Removed debug logging from the dupes databases. + + mbinet.a: + When an NNRP server asked for authentication after the first + command instead of after connect, the user authentication + wasn't started. + + mbsed: + Obsolete and removed. + + mbtask: + Does all things mbsed used to do, it uses Unix Datagram sockets + to communicate with the clients. + If IP addresses to test are entered in the setup it will check + if the internet connection is available with ICMP ping. + Added Internet connection status, system running status and + system load average to the GSTA command for mbmon. + Create's the file ~/etc/config.data if it doesn't exist and + fills it with default parameters. + Note: the internet connection status is for future use. + + mbfido: + The pktdate logresult is now only displayed if there was + something wrong. + The Checkdupe fallback logmessage is removed. + Corrected a small bug in the news to echomail gate to get the + correct replyto and replyaddr kludges in the messages. + Changed the tosspkt messages read functions back to the way it + was so the namefield may be exactly 36 characters long excluding + the null terminator. + The PING function didn't work if the message came from a node + not in the setup. + The PING reply now has a Re: prepended. + The scannews function now acts better on nntp error conditions. + Local posted echomail dropped the subject when it was gated to + news. + If imported netmail doesn't have a FMPT kludge and there is + pointinfo in the MSGID line, the pointinfo is taken from the + MSGID line. + Improved the TRACE message of the PING function to make it + more clear that it is a TRACE message. + The PING reply now uses the aka from address that was original + the destination address instead of the matched aka in the + reply message. + Added a hack to try to process .tic files that are not lowercase + filenames. + Added support for a system alias file to convert fidonet + addresses to RFC addresses. + In the mbnews function the tests for the headers Newsgroups: + and Message-ID: are now case insensitive. + File attaches with the leave case option set did not get the + TFS or KFS flags set in the attachement. + + mbdiff: + Removed some debugging logmessages. + + mbfile: + Removed some unnecessary logmessages. + + mbmon: + When viewing the bbs lastcaller list the clock wasn't updated. + The commandline option doesn't work anymore because we + now use Unix Datagram sockets to communicate with the server, + so we must be on the same system. + Added Internet status, running status and system load average + to the Server Statistics screen. + Minor adjustments to the screen layout of the Filesystem Usage + screen. + + mbindex: + Sends the correct IsDoing information to mbtask during sort and + write. + + mbsetup: + Added setup screen for the task manager. + Some menus didn't have the default "-" character in the prompt. + The language setup now adds Italian and Spanish on new + installations. + In main system aka's shortened the domain names from 12 to 11 + characters length to prevent SIGSEGV in mbsetup. + Improved help messages when editing aka's. + Corrected chapter numbering in sitedoc. + Changed page layout sitedoc 8.1 + Removed initialisation of ~/etc/config.data, this is now in + mbtask. + In golded.inc AKAMATCHECHO is no YES. + In golded.inc writing the AKAMATCH aka's other then fidonet + didn't really match the aka's, the main aka was written instead. + + mball: + Removed two redundant log messages. + + mbmail: + The program wrote mbfido instead of mbmail in the logfile. + + mbsebbs: + During login with two names the second name now also checks + for empty responses from the user. + Removed some IEMSI debugging messages. + Removed the timeleft debug message. + Removed logmessage if no newfiles were found. + Removed rendunant log message abount start newfiles scan. + Removed logmessage if no newmail was found. + Removed debug email setarea message. + The list of languages to select is now divided in two columns. + The message to sysop function now doesn't quote and doesn't + write "Sysop wrote to ..." anymore. Thanks to Harald Wuensch. + The program now uses umask(007) instead of umask(000) + In the displayfile function the ^B syntax (show text above + sec. level) is now: ^B^B^B without + the < and > characters. Thanks to Harald Wuensch. + Removed (press enter to Quit) from language prompt 379 since + there is no default choice. + Adjusted a lot of strings for filenames and paths to PATH_MAX + in stead of 80 characters length. + Moved the Nopper call in the fullscreen editor to a place were + it always should work. + + mbcico: + The session debug logmessages are set to the special loglevel. + Implemented EMSI-II, FSC-0088. + When calling a TCP/IP node with hostname in nodelist system + name and a valid phonenumber, and if the hostname could not + be resolved, mbcico would dialout and try to establish a + TCP/IP session over the modem connection. Now the TCP/IP + flags are cleared and mbcico will fallback to valid old style + phone sessions. + In binkp added the M_NUL PHN and M_NUL OPM to log if they are + received from the remote. We also send these flags. + In binkp we now always send and empty dataframe after a file + is sent, most binkp implementations need this to detect EOF. + We don't log received empty frames anymore, we just drop them. + + mbpasswd: + Added check that username and password may not be longer then + 16 characters. + Fixed the error message on some systems about USERGROUPS_ENAB. + + mbuseradd: + Error messages now go to stderr. + Increased stringslength of some internal variables to PATH_MAX. + Check all arguments that they are no longer then 80 characters. + The user is now the owner of his homedir. In this homedir a + directory Maildir with subdirs cur, new and tmp are created, + also owned by the user. Some MTA's need this (Qmail). + Doesn't create the .hushlogin file anymore, not needed. + + mbmsg: + Now runs umask(007) + + mbuser: + If users at the end of the userbase are deleted and the database + should be truncated, these users were not removed from the Unix + system and their homedirectories weren't removed also. + Added a check to see if the sysop defined in the main config + also exists in the user database because these two must match. + + mbstat: + Added the semafore command to set internal mbtask semafore's. + + script/installinit: + Corrected a bug for Slackware 7.0.0 were the wrong initscripts + were installed. + + examples: + Replaced the internet menu and txtfiles with versions that work + with the current menu structure. + + +v0.33.18 27-Jul-2001 + + General: + The development team now has five members and the sources are + on sourceforge's cvs server. + Changed the name to MBSE BBS for Unix instead of Linux. + This version is ported but not well tested to FreeBSD. + + Upgrade: + In your Mail Transport Agent (if you use it) replace the line + "mbmail -r (recipients)" to mbmail "(recipients)". + In postfix this is in the master.cf file. + With mbsetup menu 1.3.8 fill in the path to the *.msg path. + + MBSE.FAQ: + New, maintained by P.E. Kimble aka King Kimerud + + lang: + Added Galego language by Redy Rodriguez. + Corrected Spanish language. + + SETUP.sh: + Doesn't create .huslogin anymore for user bbs. + Script does now work on FreeBSD but needs bash. + + common.a: + Corrected some defines in parsedate.c to include/exclude the + right code. + Changed the rawio to termios style instead of termio. + Added ufs filesystem as normal filesystem to the diskfree + function. + + msg.a: + When locking the JAM messagebase failed due to a lock error + nothing was logged and the error was not flagged. + + mbftpd: + Removed the subdirectory for this not finished program. It may + or may not return later. + + mbfido: + Filefind replies had a wrong ^aREPLY kludge. + Rewrote a lot of code so that similar functions are only once + present. This will make bughunting and maintaining much easier. + Scanned netmail from point addresses created with GoldED are + now always checked for missing FMPT, TOPT and INTL kludges and + they are inserted when missing. + The checkdupe switch also work in uucp mode (mbnews). + The code for mbmail is now merged into mbfido. A symlink from + mbmail to mbfido is created to let mbfido run in mail mode. + The syntax to call mbmail is changed. + Implemented processing ^aFLAGS for received netmail (FSC-0053). + + mbmail: + Obsolete, the functions are now in mbfido. + + mbtask: + Removed all references to the Memwatch debugger, mbtask is oke + but the debugger fills up the harddisk (very fast). + Does now respond again to external semafore's mailout, mailin + and scanout in the semafore directory. + Removes stale socket file if found. + Runs mbsetup init if config.data is created on new systems. + Fixed a SIGBUS fault for Sparc systems + + mbpasswd: + Added CLOSE_SESSIONS and ENV_ROOTPATH to getdef to prevent new + user error messages on some distributions. + Ported to work on FreeBSD. + + mbindex: + Patched by Ken Bowley to prevent a crash when the 300 baud + field is the last item on the nodelist line. + + mbmon: + Changed the rawio to termios style instead of termio. + Shows the OS name in the info screen. + + mbsetup: + Shows the OS name in the info screen. + Creates default tty records with tty names for the right + OS (I hope). + Fixed a bug in the menu editor, deleted menus were not really + deleted. + Added setup items for the menu Display colors. + Added a no suid switch to the menu for doors. + Added setup for *.msg directory in menu 1.3. + When changing the number of newfiles groups, the newfiles + reports database is converted on the fly. + All path variables now have a length of PATH_MAX. + When mbsetup is started, all databases not present are created + and when needed filled with default records. + There is now one possible commandline parameter: init. This + should be used only once (but doesn't hurt if run more then + once) on a new installation. + A check is build in that mbsetup is started by user mbse. + Fixed segfault error during exit of mbsetup when writing the + golded.inc file when the bbs is more or less unconfigured. + The file golded.inc is now only rewritten if changes are made + to the main configuration, fidonet data or message areas. + Added default archiver record for the Russian ARJ archiver. + + mbcico: + Renamed sendfile function in zmsend.c to sendzfile to prevent a + conflict with an existing library call on FreeBSD. + Removed some debug logmessages. + The filerquest response message doesn't use the tmpnam function + anymore, this was the last one of the unsafe tmpnam calls. + + mball: + Removed some compiler warnings on some systems. + + mbsebbs: + Removed some compiler warnings on some systems. + Added menu Display lines. + Added menu item 21, display text only. + When a user has no download files limit and no download Kbytes + limit he may download unlimited. + When a user has no timelimit set in the limits, he will get + a 24 hours session limit. + The written door.sys file now has EOF character at the end. + The written door.sys file now has a : after the comport. + Executing doors in nosuid mode (as real user) is now possible. + This can be switched on using mbsetup. Info will be in FAQ. + Fixed security problem in Unix username and password entry. + Now stoped nicely if started without controling tty. + Many bugs fixed in the full screen editor. + Last line of message is no longer deleted when saving message. + Segfault problem with deleting characters fixed. + Improved word wrapping. (still needs work) + Reduced amount of debug logging messages in editor. + + mbuseradd: + Ported to work on FreeBSD. + + mbpasswd: + Ported to work on FreeBSD. + + mbfile: + All path string variables are now of length PATH_MAX. + Added list file areas. + + fbutil: + Removed list file areas. + + htmldoc: + Upgraded the FTSC documents to the current state. + + +v0.33.19 26-Oct-2001 + + upgrade: + Announce any new files you might have. If you run mbtoberep + it should display no data anymore. + Change the file /opt/mbse/etc/issue like the example in the + subdirectory mbtask. + Change the shell for user "bbs" to /opt/mbse/bin/mbnewusr + The make install fixes several permissions that are wrong for + the new style (not setuid) of mbsebbs. + Remove /opt/mbse/etc/maint to let it replace with a new + version, or change it by hand. + On RedHat, Mandrake or e-smith systems remove the existing + start and stop commands with the runlevel editor, they will + be installed with other values when the system is installed. + If you forget this then mbsebbs will start and stop twice. + After compilation and installation run "mbfile check" to + update all file entries in the files database. This give a lot + of output in the logfile, don't worry about it. + In mbsetup 18 (task manager) set the fields 18, 19 and 20 to + the right values of your system. Also consider the setting + of field 13, set it to Yes if you cannot have a internet + connection at the same time when normal dial to fidonet is + needed. All other users, (more modems, cable/ADSL etc) set + this to No. + Fill in the right IP addresses in fields 11 and 12 of your + ISP's nameservers. If you don't have internet, fill these + with 192.168.1.1 and 192.168.1.2 as dummy addresses. + Change the startup program in /etc/inetd.conf for telnet if + you previously used mbsebbs to mblogin. + Change the default login program in mgetty's login.config to + * - - /opt/mbse/bin/mblogin @ + + general: + Made the Makefile system more simple. The bbs program now + doesn't run setuid anymore! This makes the system more secure. + A new program, mblogin, is written to allow logins with + Fidonet style names from mgetty and telnetd. This is a login + replacement for bbs use only. Normal shell users can't login, + not even root! + On FreeBSD the installed files are not removed anymore from + the source tree. + Added German language file made by Harald Wuensch. + The mbtask daemon now handles the calling of Fidonet nodes. + The sourcetree has now a new subdirectory called unix. Here + are all the system specific programs such as mbpasswd, + mblogin and mbuseradd. + Started NetBSD port, is in testing fase. + Added support for xinetd. + Fixed filemodes for some directories and data files. + + SETUP.sh: + Better grep to check for existing usernames like bbs, mbse. + Ported to NetBSD. + Added support for xinetd configuration. + Changed distribution test for Mandrake. + Changed to recognize the e-smith server based on RedHat. + If system runs xinetd instead of inetd, the configuration for + xinetd is updated with info for mbsebbs. + + installinit.sh: + Changed to recognize the e-smith server based on RedHat. + On RedHat, Mandrake and e-smith systems the symlinks to start + and stop the bbs are now added. + Reorganized the init scripts. + + libcommon.a: + When adding seenby entries, the zone number is copied from the + previous adress just like with the net numbers. This is for + old style tic files, they were not full 3d. + Fixes for Sparc systems. + The nodelist information now also holds the Txx flags. + The mkdirs function now needs a mode parameter for directory + creation. + The filesystem space check is now reliable on FreeBSD and + NetBSD. + + lang: + Changed language prompts 6, 71, 429. + Added language prompts 472 and 473 for FS editor. + Added language prompts 474, 475 and 476 for address entry. + Added language prompts 477 and 478 for post with user alias. + Deleted language prompts 387, 388, 389, 390 + + examples: + Changed menu setup.mnu and textfiles setup.* to show the new + setup entries for the users. + + mbsetup: + Changed usereditor, new layout, added new settings and + changed password reset function. The system password is + now also updated. + Added setup item for menus 317 and 318. + Changed the order of menu 1, global settings. The screens are + now in a more logical order for a first system setup. + Most datafiles are now saved mode 0640 exept the files that + need to be rewritten by users, they have mode 0660. + The filemodes are always checked and corrected during startup. + In the file database editor the default choice was 0 in stead + of -. + When a file area is made unavailable in menu 8.4, first the + files in that area area checked. If there are none, the area + is completly removed, including paths, indexes and database. + When an new area is made available, the database is created. + The AREADEF lines in golded.inc now contain the aka to use + instead of a dot. + Fixes for Sparc systems. + Now logs in the normal system logfile. + On new systems it will now also create one filearea, three + default mail areas, a newfilereport and the groups belonging + to these areas. Also 10 oneliners are installed. + Changed help for nodes billing flag. + Changed users password length to 14 characters instead of 12. + When you make a tty line available, some settings are + automatic set to reasonable defaults. + The color editor now has a rangecheck. + Rewrote calling of the color editor for Sparc systems. + Added setup items in global and message areas to limit the + fetching of newsgroups headers. + The edit field now shows the contents correctly if the field + contains the % character. + In several menus after leaving a edit record records were + displayed from start again, now shows last screen. + When editing a node's connected file/mail groups it can now + handle more then 40 groups without messing up the screen. + Fixed area selection in filedatabase editor. + Protected help string display for boolean edit against buffer + overflow. + Menu 5.1.14, helpstring was too long, causing a buffer + overflow without the previous protection. + + mbsebbs: + Added menu 317, change FS editor shortcut keys to (Emacs/ + Wordstar) style. This has no effect on the editor for now. + Added menu 318, change users address. + Added control-U 4, ON/OFF for FS edit Emacs shortcut keys. + Now updates the lastcaller information when a call is finished + and now also sets all the action bits what the user has been + doing. Also time online is correct now. + Added control-U 5, 6, 7, display users address lines 1, 2 + and 3. + If a user doesn't have a .signature file in his homedir, a + simple one will be created. + If a user saves a new message at the bbs, the message will be + signed using the .signature file. + Patches from Bobby Cabral: + - Fixed display file with more that stopped after every line. + - Added display file "mainlogo" before the "welcome" file. + - Added display files "welcome2..9" after "welcome1" file. + Posting message with users alias is now possible. + If in menu entries "Display prompt" the fore and background + colors are set, the prompt is displayed with these colors. + If not, the prompt defaults to white on black. + Does now run as the users uid, not suid anymore. You are not + able to login with Fidonet style name anymore, the mblogin + program does this. Removed IEMSI support, this has no use + anymore. New users need to register with the mbnewuser + program, mbsebbs is only for registered users. This should + fix all kinds of setuid and security problems with previous + versions. + In the door.sys files is now a nodenumber written. This is + actually the tty record number. + QuickScan messages in netmail areas now only shows personal + messages. + The whoson list now uses mbtask to get the information. + The users exitinfo file is now stored in his homedirectory + with mode 0600. + A lot of code rewrites to make it more modular. + The bbs datafiles that users create now have mode 0660. + The file taglists now work internally with long and short + filenames. + The file listings are displayed with the short filenames. + Download files are sent with short filenames. + File search is done on long and short filenames. + Uploaded files are accepted with long filenames, the short + name is created when the upload is processed. + The virus scan after files upload tried also to use scanners + that were not available. + The upload virus file scan now also scans files that are not + known archives. Should catch macro viri and worms. + The file CRC is now set when importing an uploaded file. + Fixed quote initials of the original user containing a space + character if there was a dot followed by a space in the users + name. + If Ask Date of Birth is not set in the configuration the user + can't change his date of birth and his age is 0 years. You + should not disable this if you restrict access to some file + areas if you want to test the users age. Also the age in the + users record is invalid. + Fixes for Sparc systems. + System calls for archivers and virus scanners are replaced + with execute. + During startup the username is tried from the environment + variables LOGNAME and USER. + Added some automatic file permission corrections. + + mbnewusr: + New program, run by user bbs. This is only to register a new + bbs user. Should be started by the bbs account. + Ask Date of Birth now only is asked if set in configuration. + Fixes for Sparc systems. + + mbpasswd: + Added more checks to see if it's legal invoked. + Password change on FreeBSD finally works. + Moved to new sourcetree. + Ported to NetBSD. + + mblogin: + New program. Replaces standard login, allows Fidonet style + usernames. Has it's own login.defs file. + + mbcico: + Undefined IEMSI support since mbsebbs doesn't support it + anymore. + Filerequest responses are now created with long filenames. + When sending files, if the remote has the FNC link flag, the + filename is mangled to DOS 8.3 format when transmitted. + File request response messages now display the long and + short filename in the reply. + Filerequest response messages now have a random quote added. + The binkp driver now sends 8.3 mangled filenames if that + option is set for the remote node in the setup. + The hydra driver now sends 8.3 mangled filenames and long + filenames as specified in the specs. + Corrected the location of the modem lockfile on FreeBSD. + Fixes for Sparc systems. + When a session fails, the node status retry time is current + time + random dial delay time. Needed for mbtask. + + mbout: + Fixes for Linux Sparc systems. + The node query now displays the system open times (Txx) flags. + The node query now also displays the CM,MO flags etc. + + mbtask: + Changed to handle the External Doors flag in the lastcaller + information. + On new systems, ~/etc/config.data and ~/etc/task.data are + created with mode 0640. + On new systems, the DOS path isn't set anymore by default, + most people don't need it. + Starting utilities is now more relaxed using a 3 seconds + pause timer. Fixed some potential Sparc problems. + On new systems, all paths for MBSE are now created in the + /opt/mbse root. + When scanning outbound, flags are set if flo or mail pkt files + are present. + When the internet connection status changes, the outbound is + rescanned. + Implemented Txx nodelist flags, FSC-0062. + Added code to see which nodes could be called depending on + outbound status, nodelist flags etc. Experimental. + Added code to do outbound calling, experimental. Calling + systems in parallel is now possible. + Creates the semafore do_inet if there is an internet node to + call even if there's no internet connection. Removes this + semafore if there are no internet nodes to call. This can be + used by ppp scripts to see if there is work and when there is + no more work to do. Not important for permament connected + systems. + Made the FreeBSD and NetBSD disk status calls reliable now + that I know how to really get the mounted filesystems. + The system load value is implemented on FreeBSD and NetBSD. + + mbmon: + Changed the lastcaller screen to display the External Door + information. + When lastcaller info is scrolling, the lines are first proper + erased. + Fixes for Sparc systems. + Added support for display do_inet semafore in menu 2. + + mbmsg: + Corrected header in logfile for pack function. + Fixes for Sparc systems. + + import: + Removed users import, could not work anymore. + + mbfido: + When running in mbmail mode, it will try to get the lock on + the program for 10 minutes before aborting and waits until + another mbfido program is ready. + Fixed the problem that the KillSent flag was set on processed + netmail. + Reset the KillSent and Hold flags when storing netmail in the + message base. + The tic file import function now sorts and tests on long file- + names, with the new mangle function an DOS 8.3 filename is + also stored in the file database. + For all files received in tic area, the crc of the tic area + name is stored in the filerecord. This is for the future + rescan option. + Implemented long filenames with hatch. Now uses ticfile key- + word Fullname for the long filename. + Fixes for Sparc systems. + File forwarding now really depends on the downlink billing + flag. + Now limits fetching of newsheaders according to area setting. + Added the Size parameter to the tic files, this appeared to + be missing since a while. + Fixes for Fido->internet gate for dropped characters during + linewrap. Experimental. + Added netmail bounce function. + Protected the postemail function from posting to local FTN + addresses, this will cause a mailloop for undeliverable mail. + These mails will be bounced back. + + mbfile: + During checks the file databases are reset to filemode 0660. + Implemented "mbfile adopt" function. + Started working on long filename support. The real name on + disk is the long filename, the database records also holds + an uppercase mangled 8.3 filename. In most cases this is just + the same name in upper and lowercase. Name mangling like Win$ + is performed on the long filenames. + Implemented "mbfile import" function, this imports complete + areas from files.bbs information. + Added "mbfile toberep" function, this gives an overview of the + toberep database. The program mbtoberep does this as well, but + that one gives a complete dump and is for developer use. + The "mbfile index" function now also writes files.bbs files, + the index.html files for http download and 00index files in + all available areas. The files.bbs files have download + counters included. + The mbfile check function now converts the short filenames + to DOS 8.3 filenames. (The first time this logs lots of + errors). + The mbfile list function now gives a listing of the contents + of a file area if the area number is given as argument. + Implemented "mbfile move" command. You can only move one file + at the same time. + Implemented "mbfile delete" and "mbfile undelete" commands. + The command mbfile check now removes obsolete file databases. + Fixes for Sparc systems. + Fixed index screens to prevent negative totals with large + filebases. + Added standard doctype header and commentline to the html + pages. + The mbfile check function deletes double filerecords in the + database. + + mball: + The index function is now obsolete, this is added to mbfile. + You may need to adjust your scripts that call "mball index". + Fixes for Sparc systems. + Fixed to prevent negative values with large filebases. + + mbaff: + Fixes for Sparc systems. + Fix for large filebases, could not run longer then 10 minutes. + + mbindex: + Fixes for Sparc systems. + + mbdiff: + Fixes for Sparc systems. + + mbfbgen: + Obsolete and removed from the distribution. The function is + now in mbfile. + + fbutil: + Removed from the distribution. Thanks to Johannes Lundberg, + 2:206/149@fidonet to let us use his program until mbfile could + take over. + diff --git a/ChangeLog_2002 b/ChangeLog_2002 new file mode 100644 index 00000000..8d42dde5 --- /dev/null +++ b/ChangeLog_2002 @@ -0,0 +1,973 @@ +$Id: ChangeLog_2002,v 1.1 2003/07/06 10:06:45 mbroek Exp $ + + MBSEBBS History in 2002. + + +v0.36.00 26-Dec-2002 - stable release + + update: + These are the total update instructions for the upgrade from + v0.33.21 until v0.36.00. Read and perform this upgrade with + great care, this one is quite complicated. + Make sure you don't have download files with case differences + in download directories like FileName.zip and FILENAME.ZIP. + With this upgrade files with such names will be deleted! + Rename them before you upgrade! + Make sure your outbound is empty, "mbout stat" should not show + anything in the outbounds. You may delete ~/bin/mbfido before + you do this so when you deliver all pending mail no new mail + will be tossed. New mail will stay in your inbound now. + Now backup your whole bbs and download areas! + Compile the new bbs programs, do not yet install them. + Shutdown the bbs with "mbstat close". Kill the mbtask daemon. + Depending on your distribution as root you can do + "/etc/rc.d/init.d/mbsed stop", the location may vary. + Delete ~/etc/lastcall.data + Delete ~/etc/archiver.data + Delete ~/etc/virscan.data + Because the macro template files are changed and you may have + personalized them, these files are not automatic upgraded. If + you want them to be upgraded delete all files in + ~/english/macro . + Now install all new binaries (su to root, make install). + Delete ~/bin/mbfido again (to prevent tossing mail). + Back as user mbse again, start mbtask by typing mbtask at the + commandline. Now you are ready to check and update the changes. + Start mbsetup, enter global configuration and exit and save. + This will set defaults for area-/filemgr logging and security. + The noderecords are updated with new security flags. + This will setup the new outbound queue path, default is + /opt/mbse/var/queue. + The filegroups, ticgroups, tic areas and message areas are + updated with default security flags. + In mbsetup enter Edit Fidonet Nodes. You might want to check + if all the session passwords are still ok. Also check all + nodes if the Pack mail flag is ok, this setting now also + affects echomail! + In nodes screen 1, enter item 2: "Outbox dir" to set a outbox + directory if you want that. This will propose a directory name, + change that if you like to for example to a system or sysop + name. Don't use spaces! + Check new settings in nodes setup, screen 6, items 9 and 10. + Item 9 does not work if the node uses BBBS and maybe others. + If the node uses Allfix or MBSE, 9 and 10 can be Yes. + Check TIC magic records (menu 10.4), all filenames tested are + now uppercase 8.3 names, adjust your filemasks. + In mbsetup enter the Edit Archiver Programs. The new values + should now be set. Do the same for Virus scanners. + This is all for mbsetup. + Run "mbfile check". This will create an error in the logfile + for each file! It will update the filenames on disk to have + both short and long filenames. Just ignore the errors but check + for real deleted files. + Now you are ready, install the binaries again so that mbfido + is present again and you can toss mail. Do this with + "mbstat set mailin", after a while all mail and files will be + tossed and you are back in bussines again. + Have fun. + + changes: + See all changes from development version 0.35.01 upto 0.33.07. + + + MBSEBBS History. + +v0.35.07 11-Dec-2002 - 26-Dec-2002 + + general: + On FreeBSD the lsz and lrz programs are found as alternate for + lz and sz. + + common.a: + For testing purposes of the ESLF (Extended St. Louis Format) + nodelist, debugging is added to show the information in the + ESLF lines. Only visible with utilities debug 's'. + + mbsebbs: + With menu 201 there is now a new optional data parameter N. + When used if a user selects a different message area, areas + with new unread mail are marked with a yellow star. + Also with menu 201 these is now options U+ and U-, which + takes the user to the next or previous Unread message area. + + mbfile: + The index command displays LFN names in the webpages again. + The real download still sends the 8.3 name. + + mbfido: + Better detection of zone information in netmails when netmail + was stored in a netmail packet of a different network and the + netmail misses a lot of kludges. Better logging of processed + netmails. + If a TIC file woth lowercase 8.3 filename is received the name + is forced to uppercase 8.3. + + mbcico: + Code cleanup in opentcp, better handling of given ports and + better logging. + + +v0.35.06 13-Nov-2002 - 11-Dec-2002 + + templates: + The html templates are changed by Joachim Kuwan and now they + are valid html files validated at http://validator.w3.org/ + This upgrade is not automatic because you might have personal + changes in the templates that I do not want to overwrite. + Another one changed is areamgr.status, that one had an error + and did display garbage for the routevia address. + They are in ~/mbsebbs-0.xx.xx/examples/templates.tar and should + go into ~/english/macro/ + Some other templates are changed because they had spelling + errors, you may want to replace all templates. + + general: + Added better support for 8.3 and long filenames by creating + symbolic links in the download directories. + + common.a: + Changed the LFN name mangle functions to prevent 8.3 name + collisions. Now the basepart is 4 characters followed by the + tilde char and then a 3 characters code calculated from the + 16 bits crc of the original filename. Original this was base 5 + followed by a tilde and 2 characters code calculated from the + checksum of the string modulo 1849. Both methods are different + then what MS does. + Added long extension to 3 char extensions for mpeg, smil, perl, + jpeg and tiff. + The unpack function doesn't complain anymore when it was + testing for the archive format on files smaller then 257 bytes. + + mbsebbs: + Several user input functions don't allow comma's anymore. + Uploaded files will now also have a symbolic link to then + long filename from the real 8.3 filename. + Filesearch on filename now uses regexp to find the files. + The caller id didn't show up when the info was available. + A user with only a limit on download files or download Kb could + not download at all. + + mbfido: + TIC file forwarding now uses a list of qualified systems to + forward to, and with this information builds more reliable + seen-by lines. + Imported tic files with a new banner file in the archive got + the wrong filetime in the files database. The mbfile check + command would detect and correct this. + TIC files added to the bbs will now also have a long filename + symbolic link. + With TIC file attaches, the filename attached is the 8.3 name. + TIC processing completly modified to make better LFN support, + internal everything works on the 8.3 filename. + When writing ticfiles for downlinks, the To line now depends + on the new nodes setting. + When writing ticfiles for downlinks, the format of the Seenby + lines now depends on the new nodes setting. + When adding unpacked mail for a directory node, the mail + packets had the wrong filename. + Changed some logging to debug with auto create areas. + Request messages sent to the uplinks are now logged in the + manager logfile. + Removed heavy debugging on some parts of RFC message + processing. + During toss the Nopper code is called to prevent timeout when + a very large packet is tossed that takes longer then 10 mins. + When more then 1024 dupes were tossed, mbfido crashed because + a temp file wasn't closed. + The echomail dupecheck doesn't check the seconds of the message + date anymore. This will catch some rescanned dupes that modify + the seconds of the original messages. + + mbcico: + With filetransfer errors, the attempts counter was not + increased. + + mbfile: + Finished complete support for 8.3 and long filenames. + The check function now creates symbolic links in the download + areas with the 8.3 filename to the long filename so that the + files seem to exist under both names. + The delete and move functions can now use 8.3 or long + filenames as argument. + The index function now creates web pages with the uppercase + 8.3 filename (including thumbnails) because webservers don't + allow downloads from symlinks and the LFN is a symlink. You + could allow your webserver to do this but this is a big + security hole. + + mbsetup: + In filedatabase editor, if a file is deleted the name is + displayed in light blue. + Added setup switches in nodes setup, files, to toggle sending + advanced seen-by lines and the To line in ticfiles. + + mbtask: + The outbound status didn't show the new error codes. + + +v0.35.05 19-Oct-2002 - 13-Nov-2002. + + general: + There is now a mberrors.h file that defines all errorcodes + returned by all programs. + + faq: + Changed the section about ftp feeds. + Added Q&A about failing internet polls. + + mbsebbs: + Email posted at the bbs was not signed with the signature. + Fixed the bug where the filearea number was lost. This was + caused when a user was logged off before the login procedure + was complete. + If user was displaying the whoson list and there was no + matching isdoing action then browsing will be displayed + instead of system error. + Sends Unix name instead of long name to mbtask. + During login the OS and CPU type is displayed. + + mbnewusr: + Sends Unix name instead of long name to mbtask. + During login the OS and CPU type is displayed. + + mbmon: + In screen 1, username field decreased ro 8 characters and the + doing field is increased to 26 characters. + + mbcico: + Fixed crash with incoming YooHoo session with bad password. + Still used the phone override fields for hostname override + with internet calls if there was something filled in. + For inbound sessions if the remote is listed in some nodelist, + mbtask is updated with the sysop name and location. + + mbout: + The stat command now also shows what is on hold for a node + with an directory outbound (ftp node). Status is always hold. + + mbmsg: + The summary counters in the logfile are increased to 6 digits. + + mbsetup: + When installing the default unarchivers (new installations) + the rar is used to unarchive instead of unrar when available, + rar is compiled static and prefered. + Added support for the nomarch unarchiver. Files are extracted + with the -U switch for nodelists. + Removed from Screen 1.13 the unused switches Res Future and + Repl ext. Fixed some help texts. + Added in screen 1.14 settings for Plus All, Notify, Passwd and + Pause. + Removed the default Virnet record from the fidonet setup. + In node setup the pack netmail switch is renamed and is now + for all mail. Default for new records is Yes. + Added length check when importing taglines. + Now writes also ~/etc/msg.txt for MsgEd after messagebase is + updated. + When a new echomail area was created with a default group + setting, then when the group was selected setup would create + the jam basepath itself instead of using the base from the + group. + New JAM areas will not have spaces anymore in the pathnames. + Spaces are replaced by underscores. + + mbfido: + With ticfile processing, the KeepDate setup setting now works. + The FileMgr requests now honor the setting of the switches + Plus All, Notify, Passwd, Message, Tic on/off and Pause. + The AreaMgr reuqests now honor the setting of the switches + Plus All, Notify, Passwd and Pause. + Echomail is now also packed or not according to the packmail + switch in mbsetup. + Statistics count for exported echomail now works. + Email posted in the email box in full domain mode was refused + by SMTP servers because of bad address formatting. + Addex extra check to prevent overflow of arcmail packets + extension. This is logged with a warning when this happens. + If filenames were exhausted and the last one (ending on z) is + truncated in the outbound (has been sent already) it is erased + before the archiver is called to reuse that filename again. + When mail/files were moved to the inbound from a directory + node, this was not processed in the same session. + Moved the ^aTID kludge to the top of the exported message + after the last kludge so people won't complain anymore. + With local hatched files, the aka of the tic area was not added + to the seenby list. + + mbtask: + Removed debug logging of "does" info. + + +v0.35.04 29-Sep-2002 - 19-Oct-2002. + + general: + Added mail and files security flags for nodes. + + clcomm.a: + Added Mgrlog function, logs default to manager.log. Does also + log to Syslog with level '+'. + + mbfido: + Area- and FileMgr requests are now also logged in manager.log + Auto created and removed areas are also logged in manager.log + Auto created area now get the link security from the group. + With message areas auto update it should now only delete + missing echomail areas. + File attaches to our own points were placed in the node's + outbound directory instead of the point outbound. + Files and echomail security flags implemented. + Echomail rescan will also work with newsgroups. + Removed some debug logging with files replace. + Fixed trashing news dupes file when mbfido was called multiple + times. Improved program locking. + Netmail received for a zone/net without netmail board will be + stored in the badmail area. + + mbsetup: + Added setup for the nodes record for security flags. + Added setup for the ticgroups default security flags. + Added setup for the mailgroups default security flags. + Added setup for the tic areas security flags. + Added setup for the message areas security flags. + Menu 14, edit files database had the wrong selection prompt. + Fixed backspace/delete key issue. + + mbmon: + Fixed backspace/delete key issue. + + mbindex: + Removed debug logging. + + +v0.35.03 06-Jul-2002 - 29-Sep-2002 + + general: + Now compiles and installs on HP-PARISC hardware, tested with + Debian 3.0 on a HP 712/80. + + common.a: + Added nodelist override to the nodelist lookup function. + Added protection against emty rfc headers with only a space. + Added test for HA archiver. + + mbinet.a: + If during a connect a newsserver refuses the connection then + don't close our side of the connection. This is a temporary + solution, we should disconnect with timeout instead. + + lang: + Corrected a spelling error in the Dutch language file. + + mbcico: + Changed IsDoing information. + Makes use of the node nodelist override settings. + Fixed a bug that mbcico refused to do internet calls when one + of the No IBN, No ITN or No IFC flags was set. + + mbout: + Makes use of the node nodelist override settings. + The file attach function now adds the file to the queue, by + setting the semafore mailin mbfido will place the file in the + real outbound. + + mbfido: + Rollover now only sets IsDoing when it really does a date + rollover. + When a new tic area was created the first file received for + that area was refused. + Fixed a few problems with local UUCP created netmails. + Added routing tables for special cases. Most systems don't + need this. + The route test command now works exactly as netmails do. + Implemented directory inbound tossing and outbound queueing. + Rewrote the outbound queue system, the queue now works for + files also. + Removed debug logline with extract of FILE_ID.DIZ. + When a file is imported with a name that is already present, + the existing filerecord is updated and not replaced. + There are people using M$ wordprocessors to create TIC files, + there is now better filtering to get that garbage out of the + received tic files. We will forward plain ascii of course. + Fixed the outbound queue to send to nodes not in the setup. + When mbfido stops with error 110 it doesn't remove any locks + because this error is only being used before that main lock is + made. + Changed the error codes during init until the main lock is + made, this must prevent destroying a another lock. + Added extra check to unlock directory function to check that + only the owned lock is removed. + + newuser: + Check for Unix accounts is now case sensitive. + Check existing usernames now also checks handles. + Check for existing Unix names now also includes the name ping + and services names. + Check for handle now also checks Unix names. + The setting for single usernames does work again. + + mbsebbs: + Check existing usernames now also checks handles. + When a user paged the sysop for a chat, after the timer was + expired, the bbs crashed. + Fixed a problem with extra spaces in UUCP replyto address. + Added test for HA archiver. + When changing a Handle, Unix names are checked as forbidden + names as well. + Improved import of FILE_ID.DIZ with file uploads. Only if + FILE_ID.DIZ is processed successfull the user will see that + this file has been used. + Corrected length for manual file description to prevent string + overflow. + Added missing space in message to user about file unpack. + + mbtask: + Changed logging of multiple logmessages that are equal. + Changed semafore debug logmessages. + Fixed log problem not always showing the Call flag. + Now forces callmode to None if the callflag was cleared. + The test to add a node to the calllist now also checks the + internal call flag. + Makes use of the node nodelist override settings. + Added default setting for outbound queue. + + mbsetup: + Enabled setting of nodelist override settings in menu 7.x.3 + After nodes setup edit the semafore scanout is set. + When a JAM messagebase path is changed in one of the message + area, filefind and newfiles records are automatic updated if + they were connected to that area. + Added setup for routing the table. + Corrected several page layouts for printing on A4 paper. + Added setup for nodes connected via directories (we are the + FTP server side). + Added setup setting for outbound queue in global setup. + Added support for default setup of the HA archiver. + Changed Rubout key to do the same as Backspace. (experimental) + + mbmon: + Changed Rubout key to do the same as Backspace. (experimental) + + script: + The bbsdoor.sh and rundoor.sh scripts are now only installed + if they were not installed before. + Added better support for different locations of the external + editor joe. + + examples: + With the aid of a little utility (endian) the right menus are + now installed on little or big endian machines. + + +v0.35.02 22-Jun-2002 - 06-Jul-2002 + + general: + Added checks for GoldED in external program checks. + Added new empty path /opt/mbse/var/boxes. + Implemented nodes private outbound boxes. + Revised the dependencies for all sourcefiles. + + common.a: + Added debug nodelist IFT flag for logging. + Added archive detection for tar, gzip and compress. + + mbsetup: + Changed node records layout into 8 screens to be able to add + more settings. New settings not in use yet are disabled. + Added settings for node contact information. This is private + for mbsetup use only. + Implemented nodes special outbound box setup. When you enter + that item for the first time, it fills this with a suggested + path. + Changed description and filetype for default tar gzipped files + in archiver setup. + Added default records for bzip2 and uncompressed tar files. + + mbcico: + Implemented nodes special outbound boxes. + Corrected a problem with getting modem aftercall info from ISDN + modems. + + mbout: + Implemented nodes special outbound boxes. + + mbfido: + In newsmode when a mesage is received with an illegal formated + date headerline, the date is replaced with the current date + and time. Possible cause: SunMail 1.0 + When reading taglists if there was no description after the + tag, mbfido would crash. + Filefind netmail replies now set the private flag. + Removed debugging messages displaying the incoming tic files. + The mbfido test command now needs a extra parameter, the final + destination to test. It doesn't use the internal fixed table + anymore. + + mbindex: + Fixed a crash when a pointlist contained Point,5,reservered, + and nothing more. + Added nopper code to prevent timeout on slow systems with + large pointlists to compile. + + mbsebbs: + The email address in new created .signature files is only + added if global Give Email is true and in the userecord the + email is also enabled. + The whoson list now supports the /H and /U optional data to + display handles or unix names. + The send online message now supports the /H and /U optional + data to use handles or unix names. + The display userlist function now supports the /H and /U + optional data to use handles or unix names. + The display lastcaller list now also supports the /U optional + data to display Unix names. + Code cleanup in offline reader. + Messages posted using BlueWave format now correct the timezone + difference. + Messages posted using BlueWave now show the tearline of the + OLR client if this is present. + When messages are uploaded with BlueWave or QWK the netmail.jam + or echomail.jam is updated. + With QWK messages upload, if a tearline is already present, it + will not be added again. + + mbmsg: + The isdoing messages now has the area number included. + + mbtask: + When first run the goldnode command is only filled in if it + exists in the mbtask configuration. + Implemented nodes special outbound boxes. + Added debug info for isdoing messages. + + +v0.35.01 05-Jun-2002 - 22-Jun-2002 + + general: + Added structures for netmail routing file. + Expanded nodes structures for FTP and Directory transfers. + Splitted nodes session/mail password in mail and session + password. + Added more external program checks to get the right paths of + archivers, virus scanners etc for default settings in the + setup. + + mbtask: + Removed some debug logging and corrected some spelling. + The ping test now also works if operations are suspended. + Rewrote the ping state machine. + + mbcico: + Now uses the new session password field for session handshake. + The binkp version string now includes the OS and CPU type. + If a transmitted file via binkp is skipped by the remote it + will stay in the queue for the next session. + The binkp protocol now supports the CRC option proposed by + Tobias Ernst. This unofficial extension is also supported by + Irex and patched BinkP versions. + Better error handling for error conditions during a binkp + session. + Fixed a problem with the calculated filetransfer speed with + large files on fast connections. + + mbout: + Removed a small memory leak. + + mbfido: + When creating uplink area requests the from aka used is now + the aka defined in the group. + Removed several memory leaks again. + Fixed a bug when a news article was received with a header + line without a key value such as created by wrong configured + newsreaders. + + mbfile: + Added -v commandline switch to suppress virus checking for the + adopt and import commands. Use with great care. + + mbsebbs: + Bluewave reply packets now also process an incoming *.olc file + so now bluewave if fully Bluewave V3 compatible. Internally it + works by converting the *.olc file to a *.pdq file. Patch made + by Redy Rodriguez. + + mbsetup: + Upgrades the nodes records, the new session password is copied + from the old combined mail/session password. + In nodes submenu 14 the session and mail passwords can now be + edited seperatly. This will change again! + Archivers, file transfer protocols and virus scanners found + during first configure of this program are automatic installed + in the setup and enabled. Others are shown there with default + paths but are disabled, they can be used as examples. + Fixed crashing mbsetup in menus 10.3.2, 10.4.5 and 10.4.6. + Menu 1.1 system aka's now has the option to move aka's to + other positions. Added some check's on the main aka's. + + mbtask: + The pinger now uses a fixed sequence number to check if this + is the problem that sometimes the internet seems down. + + +v0.33.21 04-Jun-2002 + + This is the final release of the 0.33.20 development version. + + +v0.33.20 10-Feb-2002 - 04-Jun-2002 + + upgrade: + Remove /opt/mbse/etc/safe.data + Compile sources and install binaries. Restart the BBS. + Enter mbsetup, this will upgrade the databases. + Go into global configuration, exit and save, this will update + the main configuration (add default macro path). + Edit the message groups and file groups for new settings. + Run mbfile check to fix download directory permissions. + Check the setting in menu 10.2.13 if it does what you want it + to do. + + general: + Added structures for area maintenance with area lists. + Installing the maptabs don't give any errors anymore when + installed as user mbse. The location of the source isn't + important anymore to install the maptabs. + Updated German, Spanish and Galego languages. + The location of the sourcefiles is not important anymore. + Added detection of vpopmail in default installation path. + Changed language prompts 372, 373, 387, 388, 389, 390 and 438. + Added the turbodiesel macro language so that reports can be + customized per language and reports. Thanks to Redy Rodriguez + for finding this one and implement it into mbse bbs. + Splitted the No TCP settings in No IBN, No IFC and No ITN. + Removed settings for Non-hold mail and Pickup Primary. + Removed several setting for http setup, this is now handled + by the macro templates. + The rc files for joe, the external editor are now copied to + /usr/lib/joe or /etc/joe depending on your distribution. + Several readme files are now in a new html file, the FAQ. + + common.a: + Added 2 functions to return the OS name and CPU family. + Added a function to return the right tearline. + Added support for ext3 filesystem in diskspace check. + Fixed lharc archives return code to LHA. + Changed mkprod.awk script to support Debian Woody. + The aka2str function now onmits the @ if there is no domain + information. + + clcomm.a + Added counter for mailer TCP/IP sessions. + + diesel.a + New library for parsing macro templates. + + msgbase.a: + Improved logging for opening message bases. + Added function to delete a JAM message base. + Fix for corrupting LastRead pointers on FreeBSD systems. + + mbsetup: + In message groups added default settings for auto area + creation. + Added servicename filemgr to the filemgr services. + When adding or deleting a message area, several extra checks + are done. The JAM base is also removed when deleting. + Layout for message area editor changed, more logical now. + If selecting a file/mailgroup in node edit that is outside the + visible range of groups, the view is adjusted. + If changing the path in an existing file area, the files in + that area are moved to the new path. + It is now possible to move file areas. + It is now possible to move JAM message bases. + Added edit of external message editor in menu 1.4. + Added edit of NoPrompt setting in menus for doors. + Changed edit of message editor in user editor. + Double noderecords are automatic removed with error logging. + Corrected screen layout in menu 1.4.11. + When editing analogue modem lines, the locked portspeed was + in a lot of cases set to 0. + In newfiles and filefind reports sets default template files + during init. + When adding a new newfiles or filefind record some defaults + are automatic filled in. + Splitted no TCP into no IBN, no IFC and no ITN in global and + nodes setup. + When editing a new message area, and the area was made active, + all entered data was erased. + Removed setting for http setup which are now in the macro + templates. + Changed the screen layout of menu 10.2 a bit as suggested by + Vince Coen. + Fixed a non understandable logmessage in check if nodes are + connected to file and or mail groups. + It is now possible to reset a users time left for today. + The top statusbar now displays the bbs Free/Down/Busy status. + Some dangerous menus cannot be entered anymore while some + programs are being used, ie. the bbs must be free. When these + menus are entered, the bbs will be closed for use. + Added menu 8.6, edit BBS list entries. + Fixed numbering of menu 8.7, edit oneliners. + Added menu 8.8 for safe crackers data. If the safe is cracked + it can now be reset. + Protected convert-all setting in menus 10.1 and 10.2 when no + default archiver is defined. + Changed page layout in site.doc + Changed the confusing No Touch setting in tic areas to Touch. + + mbmon: + The top statusbar now displays the bbs Free/Down/Busy status. + Removed nonsense error message when stopped on a signal. + + mbfido: + In AreaMgr and FileMgr changed aka matching for area + connections. Code cleanups. + In FileMgr when %tick=on/off command was received, mbfido + crashed. + Implemented auto area create comparing a new received echo + from a uplink which has a echomail taglist in one of the + mailgroups defined. The area is created with the defaults + from the mailgroup. + If mbfido fails to unzip a incoming mailarchive, a second + attempt is done after a sync() and one second delay. This + seems to be a kernel flush problem. + The same goes for adding .pkt files to the outbound, a second + try is done after a sync() to add the .pkt to the archive. + In the To field of a created TIC file there is now a comma + between the sysop name and fidonet aka. + When creating a filefind netmail reply there was no + destination address. + Corrected spelling errors in the Areamgr and Filemgr help + messages. + Removed some debug logging from the RFC->FTN gate. + Implemented the FileMgr and AreaMgr pause and resume commands. + Changed logging when AreaMgr/FileMgr commands did fail. + Some checks improved and fixed some potential sigsegv crashes. + Reduced aka match level for (dis)connect areas to zone, net. + This should fix problems on systems with multiple aka's when + the first aka is not the aka in the areas. + In mgr result reports, lines with connected areas do now also + display the aka to which they are connected. + The file forward function now always puts a 8.3 filename in + the outgoing ticfile. For most files nothing is changed. + AreaMgr and FileMgr netmails are now split into more netmails + when the become too large. + When a downlink requests an echomail area which is not yet + available, and there is a areas file for some uplink, the area + is automatic created and a areamgr request is sent to the + uplink to connect that area. The area is created with the + defaults from the mailgroup. + Experimental patch in mkftnhdr to create a To address in news + articles where a Reply-To: header is present. + It was not possible to disconnect file areas. + Added nopper code to full mailscan. + Fixed a problem that caused a SIGSEGV when a node was in the + ticfiles setup to forward file to and there was no noderecord. + When a ticfile was received while our aka is in the path, the + bad tic counter wasn't increased. + Made error message in AddMsgHdr function more clear. + Removed experimental patch in news->ftn gate were wrong To: + address was created. + The mbfido news functions doesn't abort anymore when a + newsgroup didn't exist. + For points in echomail no seen-by entry is added. + The AreaMgr and FileMgr responses and notify messages now use + the diesel macro language. + The tic file forward function now uses only filenames in the + subject of the netmail messages without the path. + The tic file forward netmails now uses template forward.tic + When started a second time it doesn't destroy the lockfile + anymore. + When a converted email to news listserver message is processed + that has a header line starting with X-MS-, the headerline is + suppressed because there is no key for this header. This looks + like a new kind of M$ standard. mbnews crashed on this one. + Fixed a small problem in magic filename testing. + In rfc2ftn the Approved: header now becomes a kludge instead + of being plain passed. + Auto file area create implemented, it can use plain tagfiles + or filegate.zxx formatted files. + The mbfido web command now uses macro templates. + Areamgr uplink requests the sender name is now set to the + sysop's name, so he/she will get to read the responses. + New command: areas. This will read all defined area lists for + files and mail groups that have the Auto Change set to Yes. + Missing areas are created, areas not present anymore are + removed if they are empty. Good for bulk areas create. + When missing areas are created, uplink requests are sent to + connect the areas. + Added more checks to processing of file_id.diz files. Also + when it is illegal formatted the already processed lines are + cleared to prevent later malformatted descriptions. + The hatch and magic processors now scan the filenames to test + using the regexp library, this should be more reliable. + Increased the size of the buffer for filesort. + Improved error reporting when file copy fails. + When a virus scanner is started, de mbtask connection timeout + is set to one hour. + Changed the confusing No Touch setting in tic areas to Touch. + When a file to be attached doesn't exist, a error message is + logged and the attach is treaded as an error. + + mbmsg: + When creating non-existend message bases, the path is created + first if it doesn't exist. + Removed nonsense error message when stopped on a signal. + + mbfile: + The mbfile index command now creates the html pages using the + macro templates html.main and html.areas. The files.css file + is no longer needed. + The check function now checks download directory permissions + and tries to correct errors. + Missing download directories are created mode 0775. + Moved check for empty areas to mbfile check function. + The mbfile move command now also moves the thumbnails. + Better console error reporting when files are copied. + Removed nonsense error message when stopped on a signal. + The html file indexes now have better translation from ANSI + to low ascii and html codes. + The import function didn't import files starting with the + letter 't'. + When a virus scanner is started, de mbtask connection timeout + is set to one hour. + The virus scanner was sometimes not executed in the right + directory with the adopt and import functions. + + mball: + Will not crash anymore when it needs more then 10 minutes to + create the allfiles and newfiles lists. + Removed nonsense error message when stopped on a signal. + + mbaff: + The High-ascii table to translate to lowercase has now the + right values to translate the ansi graphics. + Now uses the template newfiles and filefind to create the + reports. + Removed nonsense error message when stopped on a signal. + + mbdiff: + Removed nonsense error message when stopped on a signal. + Improved error reporting when copy fails. + + mbindex: + Removed nonsense error message when stopped on a signal. + + mbtask: + Removed some debug logging. + Creates the semafore is_inet when the internet connections is + available, and removes it when it is down. + Added test for ISDN/modem lines in use. If a line status + change lasted 5 seconds or longer, the oubound will be + rescanned. + Lots of code cleanup. + No setup setting anymore for maximum POTS and ISDN lines, this + is now automatic. + mbtask will now update internal counters how many ISDN and POTS + lines are free to use for dialout. + For ISDN and POTS calls, mbtask now decides which tty to use, + mbcico gets the tty to use as option on the commandline. + Keeps track of the number of mailers running. + Added default path for arealists. + Keeps track of total mailer TCP/IP sessions and will not start + new sessions if the limit from the setup is reached. This will + hopefully prevent that mbcico will use too much bandwidth on + TCP/IP trafic. + Splitted no TCP settings in no IBN, no IFC and no ITN. + Improved the ping tests, better errorlogging and suppresion of + icmp replies that are not for mbtask. Better protected against + flood pings. This should fixes the problem that the internet + seemed down while it was available. + + mbcico: + Fixed binkp driver to accept incoming unprotected sessions. + If a binkp session comes in and there already is a session + with that node, mbcico stopts the binkp session with an error. + Remove some obsolete code that is handled by mbtask. + Added some debug logmessages in ttyio. + Added experimental support for binkp GET command frame, under + test now, seems to work, although the offset request is not + supported. + Registers TCP/IP sessions with mbtask. + All filetransfer times and cps rates are calculated in mSecs. + Splitted no TCP settings in no IBN, no IFC and no ITN. + Removed settings for Non-hold mail and Pickup Primary. + Removed nonsense error message when stopped on a signal. + Fixed some small problems with the history data log. Added tty + information when it is available. + + mbout: + The status display has now 9 digits for the outbound size. + New command, mbout reset , unconditionally resets the + nodes "try" counter, ie. make an undiable node try to call + again. + The status command displays the call attempts. + Removed nonsense error message when stopped on a signal. + + mbsebbs: + On some systems the download taglists contained garbage after + the short filename causing wrong filenames at the users side. + Added support for external message editor written by Redy. + Doors are now passed the parameter to display a prompt after + the door or return silently. + Fixed lharc file return code to LHA. + Calling file transfer protocols now uses the execute call + instead of system. + Improved error logging for file downloads. + When a user has no Location filled in, the bbs doesn't crash + anymore. + The new files scan colored areasnames bar length is corrected. + Fixed the problems with the safecracker door. Removed the + cheat codes and added a delay for the display of the safe + opening. + Removed nonsense error message when stopped on a signal. + + mbnewusr: + New users have the default internal fullscreen editor. + Removed nonsense error message when stopped on a signal. + + mbuser: + If a new user has registered and not yet used the bbs, mbuser + would kill that user because the last login date wasn't set. + It will use the registration date instead. + + mbstat: + The timeout for the wait command was wrong due to a wrong + upsdown semafore test. + Corrected a spelling error. + + hatch: + A new shellscript to hatch files in a tic area. + + mbuseradd: + Added support for vpopmail, vadduser command. + + mbpasswd: + Added support for vpopmail, vpasswd command. + Corrected a define for temp variable. + + mbuser: + Added support for vpopmail, vdeluser command. + + examples: + The Makefile now selects the right little or big endian menu + files to install. + Rebuild the menus and txtfiles for the new external editor. + Removed the mbsetup door from the sample sysop menus. + Added templates.tar, these are the default english macro files + for the diesel library. + + rundoor.sh + Called door.bat instead of doors.bat + + installinit.sh + Modified for SuSE 7.1 and later, the location of the startup + script moved from /sbin to /etc. Patch by Joachim Kuwan. + Also modified init.SuSE for Yast2 on SuSE 8.0 + + mbse.stop: + Added path /usr/local/bin for FreeBSD. Needs the psmisc + package from the ports collection to work. + + init.Debian + Changed user from mbtask to mbse. + diff --git a/ChangeLog_2003 b/ChangeLog_2003 new file mode 100644 index 00000000..0a515a63 --- /dev/null +++ b/ChangeLog_2003 @@ -0,0 +1,457 @@ +$Id: ChangeLog_2003,v 1.1 2004/02/09 14:36:36 mbroek Exp $ + + +v0.38.0 26-Dec-2002 - 03-Oct-2003 + + upgrade: + Note: if upgrading from a 0.37.8 or 0.37.9 development version, + then no upgrade procedure is needed. All others read the next + carefully! + + A bit tricky to upgrade and start using the new debug logfile, + follow the next steps exactly!! + 1. Download and install the source + 2. Run "./configure" + 3. Run "make" (and do not install yet) + 4. Run "mbstat close" + 5. Backup /opt/mbse/bin and /opt/mbse/etc. + 6. Run "mbstat close" + 7. Kill mbtask, mostly "kill `/sbin/pidoff mbtask`" will do. + 8. Run (as root) "make install" to install the new software. + 9. Make sure you are user mbse again. + 10. Start mbtask manual, "mbtask" + 11. Run "mbsetup", enter menu 1, exit, save and close. + 12. Wait one minute. + 13. Run "mbstat open" + After this is done the first time, restarting mbtask can be + done as usual by running the mbsed init script. If something + doesn't work (you get socket errors), it is important that you + kill mbtask during software versions swap. All software must + be of the same build. + Check settings menu 1.5.21 for maximum allowed logins. + Check setting of menu 1.14.15. + Remove ~/etc/archiver.data, start mbsetup menu 3, leave and + save. This updates the archiver view contents commands. + After upgrade you may remove ~/etc/maptabs and it's contents. + After upgrade you may remove ~/etc/bank.data. + After upgrade you may remove ~/etc/safe.data. + If you want, download and install the nu-door and safe-door + packages. + In mbsetup 1.17.3 check if you have the XX,CM,IBN,IFC flags, + which indicates your TCP/IP capabilities. This is only for + systems that use TCP/IP, dialup systems should only have + the XX,CM flags. Important: only protocols that you place + in this entry are supported, so XX,CM,IBN will let your system + only call binkp nodes. + + general: + The nodelist lookup functions are now in a separate library. + This will give us easy implemtation of new nodelist formats + and flags. + Introduced a new file, ~/etc/nodelist.conf, this file will + be used for nodelist lookup behaviour. + The current looked-up nodelist strcuture has an extra field, + the URL how that node must be contacted. + Debug logging is now in a separate file, the normal logging is + now only in the normal logfiles. + Changed all Linux references into GNU/Linux. + Changed the address of the FSF in all sources. + Removed memwatch debugger. + Changed all gif and jpg images to png images. + Added a setup switch for the nodes for selecting the wrong + binkp long filenames escape method for Argus and Irex nodes. + Activated the productcode for mbse that is published in the + ftscprod.007, MBSE now has an official product code. + Changed the website address in several sources. + Added switches for binkp CRC mode in global and node records. + Added check for inconv.h in configure script for UNIX98 + character set conversion. (Not yet used). + Removed external (sysop) chat, chat paging times and other + chat stuff that is of no use anymore. The sysop shows his + presence by running mbmon. The mbchat program is obsolete. + Menu item 22 is added, this is user chat session. + For chat (and sysop/user paging chat) works now using the + mbtask daemon. + In several messages handling functions the international + charset translations are removed because of several bugs. They + will be replaced by standard library functions. Right now the + messages are 8 bit clean and there is no translation on the + gateway. The maptabs are removed. + Menu items 22 and 23 are removed, menu 319 is added. You may + want to replace the default txtfiles and menus, upgraded + versions are in the distribution but are not automatic + installed. + Documented menu 318, was present for a long time, just not in + the html docs. + The main Makefile now sets each txtfiles directory to mode 775 + to allow doors to write ansi/ascii screens. + Removed the safe cracker door, this is now external. + A new developer/translator joined the team, David Gonzalez. + The settings to suppres some IP protocols (global and nodes) + are removed, this behaviour must be set using nodelist flags + configuration. + Debug logging for mail and news now have one setting, the M. + Nodelist debug logging now uses the N character. + In some makefiles the chown user.group syntax changed to + user:group to follow the new POSIX syntax. Please let me know + if you are using an older distribution that complains about + this. This was needed for FreeBSD 4.7. + Added Dutch template macro files. Updated English and German + template macro files. Please remove old ones before installing. + + common.a: + Added a set of general purpose timers. + Node locking tests for non-stale lockfiles older then 6 hours. + Added general code for prgram locking. + The getheader function changed to support stone-age .pkt's. + If the packet year has a Y2K bug, the year is fixed. This is + only cosmetic for logging. + If the zone info is missing, the zone is guessed from 2d aka + matching against the system aka's. Then all mail in the .pkt + file is also assumed to be in that zone if there is no zone + info in the messages also. + Guess what, these packets do still exist in Fidonet, it took + 5 years to find them! If you want to check, call 5:5/0 + Fixed compiler warning in network code. + printable function now escapes all non-printable characters. + In rfcmsg function the Cc: header is now treated as any other + header to prevent a SIGSEGV when the headerline is empty. + Removed charset conversion/translation. + Added integer endian byteorder swapper, usefull for non-Intel + hardware. + The poutCR function for the bbs never did send a newline. + New function to get the real case of a filename. + + nodelist.a: + Added experimental support for IP nodes lookup using a default + domain method. This is not the final implementation yet! + Update, this works now as described in a FSP-xxxx that is in + discussion in the FTSC. This will also work for current + practice. + + msgbase.a: + Moved messages link from mbmsg program into library. + Resolved a buffer overflow problem with kludges larger then + 512 bytes. + + mbcico: + Compiled IEMSI code back in, starts mblogin which is not IEMSI + ready yet. A user with an IEMSI terminal can from there do a + manual login. + If doesn't do Multiple Batch mode anymore against binkp/1.1 + mailers. + File resync during receive finally works. + In binkp we don't send a empty dataframe after a file anymore. + Completly changed the files inbound receive, all files are now + first stored in a unique per node temporary inbound directory. + Only after a successfull session all received files are moved + to the final inbound directory. + Another goodie is that this is more safe on busy multiline + systems. + A light improvement in session handshake setup timers. + Added EMSI handshake timers, this gives a more relaxed EMSI + handshake. + Set the EMSI receive failure count to 20 instead of 6, we can + now even accept buggy maindoor sessions and still display a + banner. + For FTS-0001 sessions the mail password was used instead of the + session password. Also improved the password check. + The product code was not entered in the FTS-0001 packet headers. + Revised some state tables in the binkp session setup stage. + Fixed a possible buffer overflow in the binkp driver. + Implemented CRAM rev.4 change in binkp driver. + Binkp now sends M_BSY to the remote when the bbs is closed. + Better logging of BSY and ERR messages. + The binkp transmitter does now escape the unsafe filename + characters. Method is selectable in the setup. + The binkp receiver now does process escaped filenames. + The binkp protocol now supports MD5 crypted passwords. + Removed some heavy debug code from ttyio functions to increase + throughput. + Standarized raw ifcico protocol logging. + Some minor changes to the raw ifcico protocol, better error + checking and a check for buffer overflow. + YooHoo transmitter fixed for transmitting 16 bits product + codes. + With binkp and EMSI sessions double received remote aka's are + filtered. + When calling ITN nodes, the default port is now 23. + Call setup changed and uses now the nodelist lookup URL. + Changed raw ifcico debug logging. + + mbout: + When a poll was removed, the outbound was not rescanned. + + mbfile: + Added program locking to prevent that more than one mbfile can + run at the same time. + When a file was deleted for age or download age, the 8.3 + filename was not removed from disk. + A better check againts empty upload dates when purging files. + Also added a log when this happens. Please report if you see + any of these. + In the import function several bugfixes for reading files.bbs. + Fixed upper/lowercase filenames bug with import. + Move old files to another area failed, only the symbolic link + was moved. + Prepared for multilanguage html pages creation. + + mbfido: + The rfc to ftn gate now drops the headerlines starting with + X-Spam- because they are only filled with advertisents and are + very large (upto 1200 bytes which is somewhat larger for a + fidonet kludge). + Stone age packet support, see common.a. + Due to a configuration error in some system using some tic + processor mbfido did crash. + Now it will log this and continue processing ticfiles with the + risk of sending files back to the owner of that faulty program. + Added the same check for Seenby lines. + In a scanned netmail destined to our own local UUCP gate the + useless X-FTN-INTL and X-FTN-TOPT kludges are no longer + inserted in the message. + Finding the inbound tic file now uses the new filecase function. + Removed all code for charset translation. + In areamgr/filemgr lists the messages are forced splitted when + the force limit is reached in the middle of a group listing. + The nodes statistics are expanded with flow counters. + If echomail is accepted in a unsecure area or the unsecure + commandline option is set, a violation is logged as warning. + Removed some debugging tests and log messages. + If a tic file was received in uppercase, during import in the + bbs the LFN is converted to lowercase. + Promoted some normal debug logmessages to heavy debug messages + in the outbound queue packer. + Echomail from other zones showed the address of your own zone. + Added logging when other errors are found. + At zonegates, the seenby lines were twice stripped. + Another patch to compensate for sysops that pack pascalnet + files in fidonet packets and send these messages into the world + without zone information. + Made the incoming tic files complete case insensitive, mixed + case is now processed. If such file is received, the LFN will + be set to that name. + The magic unpack command now uses the mail unpack command + instead of file unpack command so that paths in the archive are + junked. + + mbsebbs: + When a message is saved, the messages in that area are linked. + Added check for maximum simultaneous logins. + Removed debug logging for userrecord i/o + During virusscan of file uploads, the mbtask timeout timer is + set to one hour to support very long scans. + Changed logging during user login. + Fixed bugs in QWK mail upload processing. + Allow - and _ in email names (GetstrU function). + Increased internal message buffer size to 700 lines. + Fullscreen editor code cleanup, debug messages removed. + When entering a message, the first character of the subject + line was capitalized. + Fixed recognition of tar.gz files. + Added menu function display file. + Display ascii textfiles now uses the More Y/n/= prompt. + When a new message is saved in a local area, the mailout + semafore is not set anymore. + Offline reader, the reply packets are now handled complete + case insensitive. + Dropped BlueWave v2 format completly, obsolete format. + The BlueWave and QWK download packets can have kludges, this + depends on a setting in the userbase. + In downloaded netmail, if message comes from a point, the FMPT + kludge is allways included in the message. + Added some forgotten checks for a valid QWK board name. + Lots of code cleanups in the offline code. + Added menu 320, toggle Offline Reader Extended Info. + Added new control code: control-U + 8, this displays YES or NO + for the new Extended Info setting. + The display file function now displays the ^U8 code. + Added support for door32.sys dropfile. + Fixed user idle logoff when new mailcheck took too long. + Added email reply when reading new (e)mail. + To page the sysop, the CPAG and CCAN commands to mbtask are now + used. + Removed all old chat code that worked on the tty device. + Added chat client site. If the sysop responds to the page + request, the user is dropped into chatmode in the sysop + channel as soon as the user does nothing (ie in a menu or still + in page mode). + It will now refuse to up/download OLR packets when the system + bbs id is not set in the global setup. + When a reply is made on a message in a area which allows + aliases, the user is asked to use his alias. + When a reply is made on a message in a newsgroup and your + systems has a permanent mail domain the email address is used + as from name. + Removed timebank and nextuser doors. + Added editing of user's signature file. New menu item 319. + If the sysop is exporting a echomail message he will have the + option to save to his private directory or to the rules + directory. If saved to the rules directory the message will + have the filename of the area tag. Normal users can only export + to their private directory. Sysops: now you can start + collecting area rules! + New menu 221, display arearules. This function tries to find + the arearules in the rules directory and if found displays + this to the user. + Fixed whoson list to display user real names and handles again. + Fixed send online message to send to user real names, handles + and unix names again. + The menus are machine endian independant. + Maybe removed a bug where the bbs sometimes crashed during + mail reading. + Fixed some minor things to the door.sys file. + Normal users were allowed to delete messages of other users, + now only the writer or those with sysop access to the area are + allowed to delete messages. + Finally wrote Delete Message from the menu (menu 206). + Removed the safe cracker door. + Changed to use the new nodelist lookup methods. + + mbsetup: + Made menus editor work on non-intel platforms. + Added support for debug logging in menu 1.3 and removed the + mbtask debug switch from menu 18. + Import and purge oneliners now log what is done. + In the nodes setup a switch is added to fallback to the wrong + binkp escape method. + Added menu entry 1.5.21 for setting maximum allowed logins. + Added program locking, only one mbsetup can run at the same + time. + In menu 1.14 added global switch to disable binkp CRC32 file + transfers. + In menu 7.x.3 added a switch to enable binkp CRC32 file + transfers with this node. + In menu 1.14 added a switch to turn MD5 crypted passwords off. + The edit archiver has now an edit line for the view archive + commands. + Added protection against wrong database sizes depending on + global settings. + When moving a message area to area zero mbsetup doesn't crash + anymore. + Added new menu item 319, removed menu items 22 and 23. + Added setup for rules directory. + Added setup for menu 221. Changed description of menu 103. + The menu editor is machine endian independant. + Removed setup for the safe cracker door. + In menu 8.3 showing long option data lines, the lines were too + long for a 80 characters display. + Removed global flags No-IBN, IFC and ITN from the setup. + Removed nodes flags No-IBN, IFC and ITN from the setup. + removed del/rubout/bs keys logging. + + mbtask: + Added support for debug logfile. Dropped the debug switch for + mbtask logging, this is now allways on. + On new installations sets max logins to 1. + Now uses standard locking in ~/var/run + When idle, it now reports the time to the next event to be + seen in mbmon menu 1. + With startup it now shows the tty flags in the log. + Remove some semafore debug messages. + Fixed compiler warnings in network code. + Safer logging of user log messages. + In personal message text the text after a ; character is not + ignored anymore. + With mbtask start, the ports locktimes are reset to zero. + Added CSYS command to report if sysop is available. + Added CPAG command to page the sysop. + Added CCAN command to cancel the sysop page. + Added CCKP command to check for a page. + Added CCON, CCLO, CPUT and CGET commands for chatserver. + Implemented a chatserver, this looks like a simple IRC server + to the users. + Arcmail for non-CM nodes and Txx nodes is now sent during the + node's opening hours or ZMH. + Fixed a bug where one of the nodelists was node closed with + each outbound scan and was causing mbtask to stop functioning + after a few days. + After forking the daemon, the stdin, stdout and stderr are + reopend to /dev/null. + Zero the daily status counters finally works again. + Added experimental code where tossing mail is not started as + long as there are mailers running, but not longer as 30 mins. + This should make the whole system less nervous. + Modified this code, didn't work, the toss was always started + at once. + + mbdiff: + If unpacking a diff file fails, a second attempt is done after + a sync and one second delay. + + mbmon: + Updated software info screen. + Added program locking, only one mbmon can run at the same time + to prevent troubles with chat and sysop available. + Reports sysop available or left the system when mbmon starts + or stops. + Reports a page from a user in row 3 of the screen (but doesn't + do chat right now). + Adjusts its screensize if the environment variables LINES and + COLUMNS are set. + (in ~/.profile add the line "export LINES COLUMNS"). + The show lastcallers now adjusts the number of lines available. + The show server clients screen now adjusts to the number of + lines available. + Added chatserver client, there are 2 modes, one id general chat + and the other is respond to a users page request where the + channel is automatic set. + + mbuser: + Added program locking to prevent that more than one mbuser can + run at the same time. + Added nopper code during pack. + + mbaff: + Added program locking to prevent that more than one mbaff can + run at the same time. + + mball: + Added program locking to prevent that more than one mball can + run at the same time. + + mbmsg: + Moved message linking to msgbase library. + + unix: + Fixed compiler warning. + + examples: + Updated Spaning and English chat menu to use the internal + chatserver. + Removed the last menu item from the offline menu, added new + Extended Info toggle (English only). + Updated offline textfiles to remove point download and add + new Extended Info toggle (English only) + The English and Dutch templates are updated to show the new + nodes flow counters (html.nodes). + English textfiles and menus are updated to show the new menu + functions. + Prepared for more example translations. + Added German template files made by Joachim Kuwan. + + script: + Fixed debian init script to allow it to run over the network + by using kill `pidof mbtask` to kill the daemon. + Added full path to pidof command in FreeBSD init script. + Added new init script for FreeBSD. + + lang: + Added language prompts 18 and 19. + Added germandu, a German language file in "Du" style instead of + "Sie". Written by Malte Tychsen. + Changed the last Englsh language prompts in the german.txt. + New language prompt number 17. + Erased language prompts 18..36. + Changed language prompts 15, 16 and 152. + Changed english, german and dutch language prompts 11, 12, 13, + 14 and 107. + Changed in other languages as well, but in English. + + SETUP.sh + Made the script more portable. + + CRON.sh + Removed explanation about Zone Mail Hour, this is obsolete + for a long time already. + diff --git a/ChangeLog_2004 b/ChangeLog_2004 new file mode 100644 index 00000000..24da9924 --- /dev/null +++ b/ChangeLog_2004 @@ -0,0 +1,889 @@ +$Id: ChangeLog_2004,v 1.1 2005/10/06 20:49:37 mbse Exp $ + + +v0.70.0 06-Jun-2004 - 26-Oct-2004. + + upgrade: + If you run a version older then 0.60.0, first upgrade to 0.60.0 + If you run a version older then 0.60.0, first upgrade to 0.60.0 + (That was twice). + Don't forget to backup /opt/mbse and all fle areas! + + Check if /opt/mbse/var/msgs is empty before using this version. + Make sure that /opt/mbse/queue is empty, then close the + bbs with "mbstat close wait". + Kill mbtask, "kill `/sbin/pidof mbtask` might work. + Now you may do the upgrade with "make install" as root. This + order is important because the files database moves to a new + location (~/var/fdb). Some other directories move too. + Now you may start the bbs again. + + Start "mbsetup", enter 1, global setup, leave and save". + Run "mbfile check" and then "mbfile index". This fixes the + thumbnails if supported by your system. + Update all maintenance scripts to change the semafore directory + to ~/var/sema. + + If you compiled with ./configure --enable-newsgate you may + need to erase the newsgroup names in the echomail areas you + don't want to gate to news. + + In mbsetup menu 1.14 update the TCP/IP connection details. + + In the english txtfiles and menus the doors menu and screens + are updated for the newer doors setup, you might want to + upgrade or use them as examples. + In the examples directory type "make macros" to update the + macro templates. Be carefull if you have personalized versions. + To reinstall the corrected macro templates go into the examples + directory and type "make macros". + + In mbsetup menu 1.7 check the new items 15, 16 and 17. + + If you want to switch running doors as user instead of via sudo + then read doors.html and follow the instructions. + + If you have BBBS uplinks and use automatic uplink requests then + change the setup of these nodes in screen 7.10. + + + general: + Added compile directive for full newsgate. If this switch is + used then mbfido behaves like it did upto version 0.50.0 and + mbnntp is disabled. + Added define for nodelist line length for all programs. + Added -fno-strict-aliasing switch to gcc to prevent some + warnings. + With the newer versions of dosemu running doors as user finally + works. To migrate you need to read doors.html. + Changed security of most directories and files to allow only + bbs users. + In SETUP.sh better xinetd.d system detection. + On Linux SETUP.sh adds user mbse to group wheel and uucp. + SETUP.sh adds disabled telnet service to inetd.conf or xinetd. + + libmbse.a: + In nodelist.conf changed the order of fields to search for ip + information, field 8 before field 6. + Added a new keyword 'ipprefix' in nodelist.conf to define a + table with IP prefixes to use in field 6. + When files are attached that should "leave" after sent (not + truncated or removed) they are now prepended with the @ + character instead of no character. This is compatible with + ifcico but not with other mailers, but should do no harm + because most mailers only look for the ^ and # characters. + Fixed function to return full 5d address in the outbound when + the address is in a different zone then our own zone. + The socket_connect function now sets the global nodenumber from + the reply of mbtask. + + libnodelist.a: + Implemented the ICM flag (FSP-1033). + Fixed IP port override if there is a port added to a protocol. + Removed some debug logging. + + libmsgbase.a: + If a message area becomes empty after a pack, all lastread + pointers are reset to zero. + Removed debug logmessage from jamPack. + + libdbase.a: + Removed some debug logging from files database module. + The files database is moved from ~/fdb to ~/var/fdb. + Added debug logging to dbfdb to find the problem with not + cleaned magic aliases. + Fixed a problem with the files database were the temp file used + for sorting and inserting files didn't close the temp file. + Changed method of inserting new files so that old magic names + are really cleared. + + mbcico: + Implemented the ICM flag (FSP-1033). + In the binkp driver, when files were found to transmit and + didn't exist anymore, they are not added to the list of files + to sent but are marked as already transmitted so they will + be removed from the .flo file. Also, after a successfull + session .flo files with all files marked as transmitted are + removed. With nodes that were marked crash, this will prevent + continuous calling. + Changed to use direct instead of immediate mail. + Changed binkp IsDoing info. + Removed a little debug logging. + + mbout: + Implemented the ICM flag (FSP-1033). + Code cleanup for nodelist processing. + Changed to use direct instead of immediate mail. + + mbfido: + Added compile directive for full newsgate. + Removed logmessage in addpkt function. + Added code to un_attach files during tic import that are + deleted from the system by replace, or keep # magic actions, + but also for files with the same name that are replaced. + Removed debug logging from toberep function since all problems + are solved. + In rfc2ftn added check for ".\n" to change to " .\n" instead of + only check for ".\r\n". + Added support for *.msg files. If any are found, they are + processed and put in a netmail area. From there the mbfido scan + function is automatic called so that the message is sent out or + stays in the area if it has a local destination. File attaches + are supported. Note that this is not a gate, only put *.msg + files in that directory that originate from one of your own + aka's. + Fixed logging of 0 articles in scannews. + With the command "mbfido areas" without the -q option the user + must confirm this action. + For netmails to uplinks for areamgr/filemgr changes, the wrong + password was used. + In large areamgr/filemgr responses each 2048 bytes was an extra + inserted. + No help was displayed when no valid command was given. + Echomail for non-existing areas now finally is stored in the + badmail area. + Echomail received from not connected nodes is stored in the + badmail area unless the area allowes it. + Can now send (hopefully) valid uplink requests to BBBS systems. + Removed some debug logging from un_attach, made one into a + normal logmessage. + The postemail and scanemail functions are changed so that + Outlook email addresses are parsed so that we can reply via + smtp. + During scan the Msg_Read function is now called with a width + of 79 characters instead of 78. This fixes the missing address + on Origin lines of 79 characters long. + The *.msg function now uses Fgets instead of fgets to read the + message. + + mbmsg: + With te post command, the right number of commandline options + is checked, if this is wrong the help message is displayed. + If a message is posted in a local area, no echomail.jam is + updated and the mailout semafore is not set. + Added checks in the mbmsg post command if the To parameter has + the correct syntax for netmail and all other areas. + Will now return a non-zero error if the post() function + failed. + Fixed counter in logfile that should show the number of linked + messages. + With the post command a check is done to see if the input file + has a tearline and origin line, if not mbmsg will add these + lines, else the lines of the input file are used. + + mbfile: + The filenames in the html pages are now the long filenames. + This fixes download problems with some mangled 8.3 filenames. + Fixed a bug where "mbfile k p i" didn't give the help screen. + The html index now uses html named character entities on the + area names on the main index page. + With html index creation if the convert program for the + thumbnails failed, the html pages were wrong. + The thumbnails were created from the 8.3 name but the url was + created to the LFN. Depending on the settings of your apache + server you would see the thumbnails or not. + The check for wrong thumbnails changed from LFN to 8.3 names. + Updated to use the new files database location. + + mbindex: + Code cleanup for nodelist processing. + Added a extra check to see if nodelist datalines are valid to + prevent segfaults on Skynet nodelists. + Does finally compile a username index. + Fixed compiling pointlists where on the Boss line when there + is no last comma on the line. + + mbdiff: + Added EOF character as last character in the new created list. + + mbaff: + In newfiles and filefind reports with the tty info lines, also + display TCP/IP connection details. + + mbstat: + In the wait function the semafore directory was scanned direct + instead of using the library functions. + + mbsebbs: + Added user@domain login for pop3 mailboxes. + If pop3 login fails, the bbs won't hang. + If a users homedirectory doesn't exist, a correct error message + is displayed and logged. + If a user replied to a email and the system was in Own + maildomain mode, the From address was changed to the Fidonet + style address instead of Unix address. + When a netmail reply is done to a node without a valid address + we ask the user if he wants to continue. + Changed menu logging. + The exec_nosuid function for doors now also has a extra small + delay just like all other execute functions to prevent problems + on fast machines. + Added extra fflush in quickscan mail. + When calling the external editor, the fromaddress if available + is given to joe. + In Quick_Bye reset all signal handlers to prevent that die() is + called in case something goes wrong during Quick_Bye. + The fake nodenumber is now obtained from mbtask instead of a + count of tty line records so the used nodenumbers will be a lot + lower then before. + Changed Msg_Read from 78 to 79 characters. + In menu the semafore directory was scanned direct instead of + using the library functions. + + mbnewuser: + Made questions for screenlen, newmail check and newfiles check + dependant of settings in the setup. + During program exit, it tried to remove the wrong socket to + mbtask. + + mbnntp: + If compiled in full newsmode, this program acts like a dummy. + + mbuser: + Fixed permissions. + + mbtask: + Implemented the ICM flag (FSP-1033). + Added defaults for questions for screenlen, newmail check and + newfiles check. + Changed to use direct instead of immediate mail. + When calling mbcico the address passed is now 5d. + Tried to call nodes during ZMH or during a Tyx window when mail + was on hold. + The comm protocol reply to the AINI command now contains a fake + node number. + The magic filenames directory is moved from ~/magic to + ~/var/magic. + The semafore directory is moved from ~/sema to ~/var/sema. + When shutting down on UPS semafore "upsdown", the log was + garbled. + When shutting down on an external event and there were users + online, mbtask did not wait. + + mbsetup: + In mail and files group edit screens, to make an area active + existing connections check is skipped. + If a node record is deleted, the outbox and directory paths + are removed as well if they are empty. + Added user@domain login for pop3 servers in screen 1.12. + Added compile directive for full newsgate to prevent newsgroup + name creation in default compiled mode. + When editing files, after leaving a file record the file range + displayed stays around the last area. + If a message area is deleted and a rulefile is present, this + rulefile is deleted too. + When a new golded.inc file is written, only fidonet records + that are active are written. + When a file area is deleted, the file path wasn't removed. + In menu 2, added 3 checks to see if enough info is entered to + make a valid network setup. + Changed in menu 1.14 some labels and help messages for TCP/IP + global settings. + In menu 1.7 added 3 new items to ask new users for screenlen, + newmail check and newfiles check. + Changed nodes screens to have a separate uplink managers setup + screen, and added switches for BBBS uplinks. + If the convert program is found and was not found before, the + defaults are set in menu 1.15.6. + The files database is moved from ~/fdb to ~/var/fdb. + The magic filenames directory is moved from ~/magic to + ~/var/magic. + The semafore directory is moved from ~/sema to ~/var/sema. + In user setup, if user gets a new security level, his timelimit + is updated with your permission to the new levels. + + examples: + Changed the macro templates for filefind and newfiles. + Fixed 2 spelling errors in the dutch macro templates. + Fixed another spelling error in the filemgr.help template of + all languages. + + script: + Fixed NetBSD init script reload command. + Changed bbsdoor.sh, it now hase a variable pointing to the dos + directory. + Created runvirtual.sh, this replaces rundoor.sh for old systems + that run doors using the obsoleted sudo method. + Rewrote rundoor.sh for running dosemu with user privileges. + Changed all locations for dosemu so that we run in the mbse + environment with privileges of the user running the door. + In the editor script (that calls joe) made a fix for screens + wider then 80 characters. Also fixed the joe path if it should + run in emacs mode. Added FromAddress in the header. + Changed all init and maint scripts to move the semafore + directory from ~/sema to ~/var/sema. + + lang: + Added language prompts 26 and 27. + + + +v0.60.0 09-Feb-2004 - 04-Jun-2004 + + upgrade: + Before upgrade announce all new files! + Compile all programs. + Close the system with mbstat close. + Install programs as root (as usual). + Start mbsetup, this can take a while on a system with lots of + files, during startup the files database will be converted. + After the menu appears, enter global setup, exit and save. + This will also update the message area records and the message + group permission. + Now stop and restart mbtask. + Open the system with mbstat open. + In all message groups set check/set default character set. + In all message areas set the character set to use with the + global editor (to CP437 for example). Local and netmail + areas must be done by hand because they are most likely not + in a group. + The macro templates are updated, you MUST install the newfiles + macro template at least because the format changed! + Type "make help" in the examples subdirectory to see how. + + + general: + Reorganized the library header files. This will make it easier + to switch to dynamic libraries so other apps can link to mbse. + Updated to a new files database structure that allows for + expanding the records like most other databases to allow new + features. + Removed all references to costsharing for ticfiles which wasn't + fully implemented. + Added setup items for subprocess priority and sync filesystem. + Added setup parameter for filefind keyword length. + Removed one setup entry for check for free diskspace, there + were two different values for the same purpose. The removed + one was not used. + Moved doc directory from /opt/mbse/doc to /opt/mbse/share/doc. + Added configure test for CPU optimization flags. Use with + ./configure --enable-optimize. + Added charset kludges for CP852 2 and CP895 2, Czech Latin-2 + and Kamenicky. There are no mapping tables available. + Added new location of joerc files for FreeBSD 4.9 + + SETUP.sh: + Changed to support Darwin (OS X). Note that in earlier days + mbse did compile under OS X, but things are different since + then. Work is underway to let it compile and run again. + To better support Darwin (OS X) a hardware sponsor is needed. + + libmbse.a: + Changed the execute function so it will work on 2.6.x kernels + and fast cpu's. + Added execute_str function for compatibility with the older + api. Added execute_pth function to execute programs in the + path. + Moved the initial delay in the execute functions to the child + process. This solved the "lost child messages". + Added enoughspace function to check diskspace. + + libmsgbase.a: + With JAM_Readheader the Msg.Replyid field wasn't filled. + + libdbase.a: + Added new Files DataBase functions that will handle FDB io + with locking. + + mbaff: + Patched to store long filename in the newfiles database + Writes the ^aCHRS: kludge again in new created messages. + Changed ^aPID to include OS and CPU. + Added macro "u" that holds the magic filerequest name. + When scanning for uploads, files which were hatched now have + the right tic area name instead of AREA n in the announce + record. They also contain the used magic filename if this is + known. + The scan for new uploads function is updated to the new files + database structure. + The filefind function is updated to the new files database + structure. + Updated to use new disk watcher. + Now uses new FDB functions. + + mbsebbs: + Added support for the internal editor for hi-ascii + international character sets. + The screenlength is now really set to the users screenlength. + mbsebbs: + Writes the ^aCHRS: kludge again in new created messages. + Changed ^aPID to include OS and CPU. + Added user selecting a character set, menu 321. + Added login check to see if user has a valid character set. + Added Control-U 9 to display file to show the users character + set in the menus screens. + Added experimental characterset translation to message read. + This will translate the message character set used to the users + character set. Code is used from Martin Junius Fidogate + package. (A better solution may follow in a next release). + In delete file in home directory the Y/N keys were read from + the wrong language prompt. + Replaced system() call with execute. + Updated to the new files database structure. + Fixed SIGCHLD logmessages on Fedora. + Added logging of virus scanner results. + Patches for offline reader programs that create messages with + wrong line terminaters (Sempoint). + Now uses new FDB functions. + The users tag directory wasn't properly cleaned before a new + download session. + The message group stat counters were not updated when a user + posted a message at the bbs. + + mbnewusr: + Replaced system() call with execute. + Fixed SIGCHLD logmessages on Fedora. + + mbout: + Replaced system() call with execute. + In check for T-Mail fileboxes added condition that the zone + must exist in the setup. + + mbfido: + Changed ^aTID to include OS and CPU. + For the tic area create and message area create the check is + now case insensitive, also the area tagnames are forced to + uppercase. This should solve the problems with Linuxnet. + Replaced system() call with execute. + New files who already in the toberep database will not be + added again, but may be updated with newer info. + When removing files during tic import due to replace or maximum + files, thumbnails are now also removed from disk. + Updated tic file import function to the new files database + structure. + Fixed a bug in mbfile kill that destroyed the filebase when a + file was deleted or moved. + Doesn't write Magic Request into files description anymore, + this is now handled outsite the description lines. + Updated to use new disk watcher. + The area tags are now created in /opt/mbse/share/doc/tags. + Fixed SIGCHLD logmessages on Fedora. + The last argument '*' which was hardcoded in the virusscan + function is removed, this should be done in the setup for the + virus scanners. + Added loging of virus scanner results. + When a new echomail area is auto created, the creation date and + the newsgroup name will be set. + Fixed news command, only real newsgroup areas are fetched from + the remote newsserver. + Now uses new FDB functions. + When a bbs created file attach is created, the subject line is + converted so that the path information is removed, this is to + keep programs like FD (and maybe others) happy. + + mbsetup: + In edit message groups added setup for default character set. + In edit message areas added setup for character set for the + area. Also added global edit for character set. + In several places where groups need to be tagged, there is now + a switch (*) to select/deselect all groups at once. + In the user editor the sex is now changed with the spacebar to + prevent typing errors. + In the user editor added character set edit in the second + screen. + Removed users fullscreen chat setting, not used. + Added menu setup for change character set, menu 321. + Replaced system() call with execute. + Added auto upgrade for the files database. + Changed menus 14, 7.n.6, 10.1 and 8.4. + Changed default charset for new mailgroups and message areas + to CP437. + Added setup for filefind keyword length in menu 13. + Added setup items in menu 1.5 for child priority and filesystem + sync calls. + In several menus that can change paths, a command to mbtask is + given to reread filesystem tables when something is changed. + Fixed error if a file area is deleted that has an empty files + database. + Added html sitedocs creation. The advantage of html over the + old plain doc is to easy see crossreferences using hyperlinks. + The html files are created in /opt/mbse/share/doc/html. + The ~/doc/xref.doc and ~/doc/stat.doc are not created anymore, + there was nothing in it yet. + Removed setup for the unused free diskspace parameter. + In nodes edit aka's it was not possible to delete aka's. + Added auto setup for message area creation date. Also creates + a faked newsgroup name in echomail areas. Both settings are + needed for the newsserver. + It wasn't possible anymore to change the number of systems in + menu 1.11.11 + Fixed a header include. + Now uses new FDB functions. + Message group setup now sets mode 660 for ~/etc/mgroups.data. + In menu 1.2 removed Omen Id that was not used. + In menu 18 removed settings for ISP connect and hangup. + + mbcico: + Updated file request function to new files database structure. + Fixed a compile problem on FreeBSD 5.1 + Fixed a bug when a m_get was received with file offset = file + size that would log a negative transfer time and transfer rate. + Fixed a bug when a m_get message was received with the current + file with offset = file size to properly close the file and + unlink from the outbound queue. + Fixed a bug when a m_get message was received on a file that + was already transmitted to remove that file from the outbound + queue. + Removed some debug logging from inbound handler. + Updated to use new disk watcher. + All heavy debug logmessages are now in defines and are only + enabled with ./configure --enable-newbinkp + In check for T-Mail fileboxes added condition that the zone + must exist in the setup. + Added protection against empty domain names received from + remote systems. + Now uses new FDB functions. + + mball: + Replaced system() call with execute. + Added support for files database Magic request field. + Fixed SIGCHLD logmessages on Fedora. + Now uses new FDB functions. + + mbfile: + For creating www pages of the download areas, the new mapping + tables are used to translate from ibmpc characters to + iso-8859-1. + Replaced system() call with execute. + Updated kill, index, check, pack, list, adopt, import, move, + delete and sort to the new files database structure. + The file delete function in kill didn't delete the thumbnail. + The mbfile del and undel commands accept wildcards in the + filename. + Fixed an error in check when a mangled 8.3 filename was changed + and the symbolic link was not adjusted. + Added rearc command. + The check command does now also check if the magic alias file + request names are valid and removes the invalid entries. + Updated to use new disk watcher. + Fixed SIGCHLD logmessages on Fedora. + The toberep command now logs the toberep.data in the debug + logfile. + Mbfile check will abort if a header of a files database is + corrupt. + Mbfile check will now accept an area number to just check one + single area. + Now uses new FDB functions. + + mbmsg: + Writes the ^aCHRS: kludge again in new created messages. + Changed ^aPID to include OS and CPU. + Updated to use new disk watcher. + + mbdiff: + Replaced system() call with execute. + Updated to use new disk watcher. + Fixed SIGCHLD logmessages on Fedora. + + mbuseradd: + Uses the execv instead of system to call the systems useradd + program. + Fixed removing of a OS created homedir. + Added msleep delay in execute child process. + On NetBSD fixed the errormessage when a new user is + created. + + mbpasswd: + Uses the execv instead of system to call the systems vpassswd + program if needed. + Added msleep delay in execute child process. + + mbindex: + Updated to use new disk watcher. + + mbuser: + Updated to use new disk watcher. + + mbmon: + Switched to use new filesystems command. + On screen 2 added disk status. + On screen 3, the warning colors for diskspace are now triggered + by the global config setting, red for the upper limit, and + yellow for the upper limit * 4. Added RO/RW status indicator. + + mbtask: + Added communication commands for disk watch thread. + Added disk watch thread, this will monitor filesystems usage + for only the filesystems that are used by mbse. + Signal handler for sigchld set to sig_dfl, for Fedora. + Removed setup for old diskspace parameter. + Fixed crash on NetBSD Sparc when getsysinfo was called. + Fixed SIGCHLD logmessages on Fedora. + Added mbnntp to the taskregs to count as a user program. + In check for T-Mail fileboxes added condition that the zone + must exist in the setup. + + mblogin: + Changed some defines for NetBSD 1.6.2 + + mbnntp: + New program, news server to read/write echomail with a news + client. Users must be registered bbs users. + + examples: + Added change character set in English menus and textfiles. + Updated all newfiles macro template to include the magic file- + request macro (English, German, Spanish and Dutch). + Updated English, German, Spanish and Dutch macro files: + html.nodes and filemgr.status. + + lang: + Added language prompts 23, 24 and 25. + removed obsolete prompt 240. + Updated germandu.txt (by Malte Tychsen). + + script: + In the maint script removed the check option from the mbfile + command so it will not run every day. + Updated maintenace scripts to check that they are run by user + mbse. The new scripts are not automatic installed, in the ~/etc + directory you will find these scripts with the extension .new + You may need to manually update the scripts before you install + the new scripts manually. + + + +v0.50.0 03-Oct-2003 - 09-Feb-2004 + + general: + Added menu setup switches for doors: Singe user door and + hidden from lists. + Make dist now creates bzip2 archives. + Two html pages are now under control of configure. + The configure scripts shows the use of zlib compression for + Hydra and Binkp. + Updated all documentation to validate html makeup. + Added installation support for Gentoo Linux, contributed by + Capitán X. + Since this version Posix threads are being used, please let + me know if this doesn't compile on you system. + All Makefiles do not strip the binaries anymore, the binaries + are stripped during make install only. This allows to run the + not yet installed binaries under debuggers. + The configure script has a --enable-debugging option so that + all code can be compiled to let it run under debuggers. Not + usefull for production systems. + This version had a lot of testing using valgrind. Most errors + were minor problems. + Added French language file created by Francois Thunus. This + translation is not yet complete. + Cleanup in main makefile, added help. + Revised configure and all Makefiles for better support of + linking with threads libraries. + Changed endian tests using the configure script. + Upgraded to new released ftscprod.008 + Added setup option per node to disable the binkp/1.1 protocol. + Added new binkp/1.1 driver. + In all sources replaced the usleep function with the msleep + function. The usleep function will become obsolete someday. + Incoming and outgoing telnet (ITN) sessions finally works. + + upgrade: + If you don't have any personal archivers, then remove + ~/etc/archiver.data and start mbsetup to recreate the + archivers setup. + If you didn't change anything of the language defaults then + delete /opt/mbse/etc/language.data and run mbsetup to create + a new language.data including the french setup. + Check setting 7.x.3.18 for each node. If you know the node uses + Irex between 2.24 and 2.29 then set this to Yes or you won't + have good sessions without files with this mailer. Sessions + with Irex that do transfer some file are Ok. + + libclcomm: + Fixed a small (not harmfull) buffer overlapped copy detected + by valgrind. + + libcommon: + A small fix in printable log function. + Added a safety check for the TCP registrate function to prevent + stale TCP/IP mailer counts. + Fixed a forgotten fclose in proglock. + Allows node locking with zero bytes lockfiles created by some + other OS when enabled in the setup. + The attach function now checks if a file is already attached. + In execute and execsh on Linux systems sync() is called before + and after running the external program to make sure diskbuffers + are committed. Also added a 300 ms pause. + Added a milliseconds timer. + Code cleanup. + + libmsgbase: + In JAM_Open replaced a strcpy with memmove. + Fixed invalid memory read/write in Msg_Link. + + libdbase: + Code cleanup in dbdupe. + + libnodelist: + Fixed a small memory leak. + + mbsebbs: + The whoson list displays the doorname if set in the menus. + If a door is single user and the door is in use, the second + user can't start the door but gets a message about this + situation. + Fixed a bug where the bbs goes into a loop after idle timeout + during login (and maybe in other situations). + Fixed chat debug logging to only log to the debug.log file. + Posted netmail messages now support CC: lines. The CC: lines + should be the first lines of the message in the format: + CC: Michiel Broek 2:280/28 + The Carbon Copied messages are marked with original sender. + Fixed small memory leak. + Fixed posting to local/echomail areas from bbs users. + A lot of small fixes for problems found with valgrind. + + mbsetup: + Added menu settings for single user door and hide door. Added + setting for the door name in the menus and removed the never + used password for the menu (Was only present in the setup). + In node editor, fixed error message when there was no more + room for new nodes to point to the right menus. + Added support for tar compressed archives. + Changed all fidonet domain names to maximum 8 characters so + that we now follow the FTSC specs. + Removed binkp CRC settings. + Fixed a unitialized unlink call in nodes close. + Fixed unclosed tempfile. + Fixed several small memory leaks. + Added default record for french language. + Added setting in menu 1.14 to allow zero bytes lockfiles + created by another OS. + Added setting in menu 7.x.3.18 to disable the use of binkp/1.1 + protocol per node. + Corrected a spelling error (thanks Vince). + Removed global setup screen for the ftp server. + Reorganised menu 1.4 screen 1 and 2. + Added settings for T-Mail filebox paths in the second screen + of menu 1.4. + Clearing the working message is now only done by the keyboard + read function. + In several menu items added range check for integer values. + In global main aka setup, added check if a domain name is + present. + Updates to the database is now shown to the user. + + mbcico: + Added Hydra zlib compressed data blocks using the idea of Alex + Shakhaylo. The compression will transfer some files about twice + as fast as without compression. + Changed signal handlers to better detect broken TCP links. + Changed two inbound logmessages to debug level. + All internal references to tfido port changed to telnet port + because we now default to telnet port 23 for ITN calls. + Dropped binkp CRC support because it will be incompatible with + future extensions. + Fixed a small memory leak. + New binkp/1.1 driver. Check the upgrade for your Irex links. + In case of troubles please report these. + Added support for T-Mail fileboxes, partly written and info + provided by Przemyslaw Kwiatkowski (2:480/127). + Removed the check to disable calling points. + Added a check to see if we get a URL to call other systems. + If nodelist info fails, increase error counter in steps of 10. + Fixed nodelocks during session handshake after many years. The + problem showed only when mbcico was used together with a mailer + on a different OS. When a aka is busy, the aka is now dropped. + When all akas are busy, a session is impossible and the session + is refused. Thanks to Przemyslaw Kwiatkowski for finding and + documenting this bug. + The total session avg cps is now corrected with the two seconds + session close delay time. + Added PLZ compression option to binkp. + Added telnet input and output filters so we can now call and + answer telnet (ITN) sessions. + + mbfile: + When the areanumber with the adopt command was not given, the + help is displayed instead of trying area 0 that doesn't exist. + With the file move, adopt and import command if the file + already exists in the destination area, the action is refused. + Added mbfile sort command. Files are case insensitive + sorted on the long filename. After sort the indexes are rebuild. + Fixed some logging that should have been debug logging. + Fixed a uninitialized memory pointer in the index command. + Fixed a 3 forgotten file closes in mbfile list. + Removed sync calls that are now in execute. + + mbfido: + Changed two logmessages to debug level. + Fixed a some small memory leaks. + With scannews after a GROUP command when authorisation was + asked we did not perform a login. + Removed sync calls that are now in execute. + + mbtask: + The ping function now runs in a separate thread. + Changed some ping timer logic. + Added a "secret" commandline parameter to allow mbtask to run + under control of debuggers. + The client command server runs in a separate thread. + Fixed some small memory leaks which had no effect on long term + running of mbtask, only leaks during program stop. + Moved the scheduler in a thread. + Rewrote shutdown procedure to make it more portable. + Removed default settings for the ftp server. + Added support for T-Mail fileboxes. + Will call points if a call method is available. + + mbout: + Fixed several memory leaks. + Poll, remove poll and request failed to points which had no + point directory in the outbound, now the directory is created. + Added support for T-Mail fileboxes. + + mbindex: + Fixed a forgotten file close. + + mball: + Fixed 2 forgotten fclose functions. + + mbuser: + Fixed a forgotten file close when nothing was done. + + mbmon: + Fixed a minor problem with an uninitialized array. + + mbdiff: + Removed sync calls that are now in execute. + + mbpasswd: + Fixed a small memory leak. + + mbuseradd: + Now logs to syslog instead of stderr. + + script: + Added install scripts for Gentoo. + Changed all init scripts to allow the slower stopping of mbtask + For the latest Slackware distros a setup script for pkgtool is + added. Most other distro's don't need this. + Dropped support for Slackware pre 7.0. + Changed startup scripts for NetBSD. + Fixed NetBSD init script + All init scripts now clean the ~/var/run directory and start + the bbs allways so that the bbs will try to start after a power + failure. + New scripts are installed with an extension of .new, you need + to check yourself if you can use them to replace your own + possible modified scripts. + Updated the hatch script to abort if it's not configured. + If the user skips to hatch a file, the questions for the magic + and replace command are not shown anymore. + Dropped support for RedHat and Mandrake pre 6.1. + + lang: + Added language prompts 20, 21 and 22. + + examples: + Updated English and Spanish menus with the new door settings. + Fixed some spelling errors in the Dutch templates. + Updated file menus, added View File command. + Changed Dutch newfiles template file. + + html: + Removed the outdated ftsc documents, www.ftsc.org is the place + to look for them + Added upgrade procedure. + diff --git a/ChangeLog_2005 b/ChangeLog_2005 new file mode 100644 index 00000000..08b20f39 --- /dev/null +++ b/ChangeLog_2005 @@ -0,0 +1,451 @@ +$Id: ChangeLog_2005,v 1.1 2006/07/23 09:53:53 mbse Exp $ + + +v0.82.0 06-Oct-2005 - 06-Nov-2005 + + This is a bugfix release for version 0.80.0. + + general: + Made changes to structures and sources to make everything + compatible between 32 and 64 bit systems. Special thanks to + Alan Ianson and Robert Wolfe for testing the 64 bit versions. + Added escaping in client/server comms. It is now allowed to + use comma's in user names, locations etc. + + upgrade: + The bbs menu Change Screenlength is obsolete. Remove this from + the menus (setup.mnu) and ascii/ansi screens (setup.a??). + Owners of 64 bits systems should check if all *.sts files in + the outbound are 12 bytes log. If not, stop the whole bbs and + remove all these files. Then start the bbs again. + Owners of 64 bit systems that have run version 0.80.0 or older + should really backup everything and be prepared that all data + files are not compatible anymore. Blame the GNU people for + changing the storage format for some variables. + After upgrade databases are compatible between 32 and 64 bit + systems. + + libmbse.a: + Added clencode and cldecode to safe escape messages to mbtask. + In nodelock show program name if node is already locked. + + mbcico: + Made binkp GZ and BZ2 compression final. + Fixed compile errors when both zlib and bzlib development + packages are not installed on some distro's. + + mbfido: + Fixed a segfault when tossing as a point echomail without a + seen-by line. + + mbsebbs: + Automatic dynamic detection of the users screensize. + There is no check anymore for a valid tty with network calls, + instead a fake ttyinfo record is created. Modem/ISDN and + console still need a valid configured tty. + Fixed a bug in the email menu that would let the current + mailbox disappear. + Fixed the internal fullscreen editor. + Accepts connections via ssh. + Log close message sent to the user. + Allow comma again in several input functions. + + mbnewusr: + There is no check anymore for a valid tty with network calls, + instead a fake ttyinfo record is created. Modem/ISDN and + console still need a valid configured tty. + Accepts connections via ssh. + + mbtask: + Logs program name that locks serial ports. + Added clencode and cldecode to safe escape messages with + clients. + + mbsetup: + Removed settings for users screenlength. + In tty setup the network records are automatic removed. The + setting for auth log is removed (was never used). + SuSE compile fix. + + lang: Removed prompts 64, 80 and 81. + Changed prompt 348. + Added prompt 31. + + examples: + removed Change Screenlength from the English menus and + txtfiles. + + + +v0.80.0 27-Oct-2004 - 06-Oct-2005 + + Yes, this release took too long to complete. But there were too + many problems that a stable release wasn't a good idea. + + general: + Due to lack of maintainers italian language support is dropped. + Upgraded to ftscprod.010 + Added port to OpenBSD, is under test (and doesn't work yet). + Code cleanup so that compile stops on unknown OSes and CPUs + instead of missing code parts. + Added Unix codepage KOI8-R (Russian) and patches from Dmitry + Komissaroff. + Updated Copyright notices to 2004 to 2005. + From filetranfer records removed the batch and bidirectional + switches, these are no longer needed. + Added new subdirectory mbutils. Some sources from the mbsebbs + subdirectory are moved there. + Changed the CFLAGS back from -O3 to -O2 since there seem some + stablity problems and I want to rule out the possibility that + this is caused by bad gcc optimisation. + + upgrade: + In mbsetup menu 8.2 remove the Italian language. + In /opt/mbse "rm -rf italian". + In /opt/mbse/etc "rm italian.lang". + Or keep it, but you need to take care of updating this language + yourself. + Check mbsetup 7.n.3.14 and 7.n.3.15 settings. + You may limit the mailhistory.html size by setting 1.15.8 + Check mbsetup 1.13.4 and 1.13.5, they should be empty or point + to valid and readable logfiles. If set then ftp and or www + downloads are counted as valid downloads. + Enter setup menu 8.4 once and leave to clear unused data. + Start mbsetup, in screen 1.2 item 10, add your real internet + name or IP there. This MUST be the name that is returned when + you do a nslookup on your external IP address. + Add the following line to /etc/services: + fido 60179/udp # chatserver + Make sure you remove everything related to bbslist menus from + your menus and txtfiles. + Start mbsetup and leave. + You might want to check menu 8.5, file transfer protocols since + we now have internal protocols. + + nodelist.a: + Clear node Hold or Down status if set in nodes setup. + + mbselib.a: + Removed some debug logging. + Added a function to clean subject lines from garbage, trailing + spaces etc. to improve message linking. + Added code for Internet BBS Chat. + + msgbase.a: + Fixed JAM pack function, the lastread pointers could be wrong + if the last messages of an area were deleted. + + libdiesel.a: + Changed the maximum string length from 2560 to 4096 characters. + + libmbinet.a: + Fixed error messages when the host to connect to has a DNS + error. + + charset: + Changed rfc-2045 name x-mac to mac. Changed x-ibmpc to cp437. + This allows rfc mime headers to show official names. + Added some basic things to support Chinese. + + mbcico: + Added support for binkp GZ and BZ2 compression. Can be turned + off per node. To use it configure with --enable-experiment. + Record previous session state so we can better react on failed + sessions. + Added detection of remote options NR, ND and NDA to prepare + for implementation. + Rewrote inbound handling for binkp sessions so that recovery + from failed sessions works, even with compressed transfers. + Fixed crash on received m_get command. + Increased binkp timeout from 180 to 300 seconds. + Added protection during binkp receive for zero bytes compressed + data frames, this will cause uncompress error -5 because zero + bytes can't be compressed at all. + Fixed test for valid aka's in the EMSI handshake that prevented + that host aka's (node /0) were not presented to the remote. + (thanks Przemyslaw Kwiatkowski). + Removed binkp extra debug logging and some standard debug logging. + Added auto workaround for Internet Rex 2.24 upto 2.29 binkp bug. + However, it is still wise to set the "No binkp/1.1" setting in + the node setup if you have a record for such node. + + mbout: + Code cleanup. + + mbfido: + If some newsarticles are not accepted for post, don't treat + this as fatal and clear the sendqueue. + Removed soft-cr filter during message import. + Code cleanup. + Added debug logging in rfc2ftn to track a rare problem. + Added error logmessage in case *.msg path isn't defined. + Fixed a segfault when echomail.jam or netmail.jam is corrupted + when scanning for outgoing mail. + Fixed fido style from address for posting news. + Reinstalled charset translation on the gateway. Changed the + way how FTN kludges are translated to RFC headers. + Dropped support for newsgroup distribution. + In tic processing changed pointer type for seenby lists. + Fixed running out of file descriptors when there are lots of + bad mailpackets. + Fixed commandline parser for mail recipients. + Added subject line clean in several places. + When message areas are autocreated, golded.inc and msg.txt are + recreated for the external editors. + The web stats can now limit the size of mailhistory.html + The FileMgr command connects news nodes SR if set for the tic + area. + Empty *.msg netmails for our own system are dropped with and + logged (just like received empty netmails). Empty netmails to + remote systems are still stored in the netmail base. + Added debug logging for exporting netmails from the messagebase + so that we later can decide to mark these messages auto deleted. + In rfc2ftn a debug logmessage added to check for unrecognised + message ids. + With html create the general strings are now converted to html + entinities. + + mbnntp: + Removed some debug logging. + Added leading zeros for generated msgid's. + Improved charset detection. + Does now send the right mime headers recognised by news clients. + Fixed compile problem with some compilers. + When sending the mime header with the charset used to the news + client, the original message charset is tried first, else the + area charset, else the users charset and if all failed, we send + the us-ascci charset as default. + More patches added from Dmitry Komissaroff to improve charset + support. Also improved msgid linking. + Removed dead timercode. + Code cleanup. + When a message is posted without RFC Messageid, a fidonet MSGID + is fresh created. + Changed X-JAM kludges to X-FTN kludges to make it compatible + with the rest of the gates. + Patches from Dmitry Komissaroff to make charset translation + work on message subject lines. It will now also send the right + charset for the user in the charset header line so that the + client will show the message in the users charset. + + mbfile: + Code cleanup. + With the index command only changed areas are indexed. This + removes the feature request for a switch per area from the + TODO list because this solution works better and much faster. + Dropped support for areas on CDrom. + The adopt command now first checks if the filename is 8.3 or a + long filename and the correct format for import is then set. + With mbfile import, download counters in files.bbs are skipped. + When the file description was missing in files.bbs with the + import command, mbfile would crash. Now a dummy description is + inserted. + The directory from which the import is done is first tested for + write access, if forbidden then no import is done. This also + means you cannot import directly from CD's but that you need + to copy the CD contents first to a harddisk. + Better error reporting if something is wrong. + The import command now also figures out the difference between + 8.3 and long filenames and does the right thing during import. + During file import the destination is tested for both 8.3 and + LFN for an existing file. Improved error reporting. + With mbfile import the original file isn't renamed anymore. + Fixed error reporting when files in files.bbs were not found + on disk. + In mbfile check added a check for the filemode of the real file + in the download area, if it's not 0644 it will be corrected. + With adopt, import and move allow to overwrite a file with the + same name if the -f option is used on the commandline. + + mbsebbs: + Code cleanup. + Changed syntax for calling mbpasswd. + Blocked sysop to chat and page the sysop. Sysops use mbmon. + Fixed errormessage if chatserver is not available. + Added language prompts 29 and 30. + Added logging of remote host and terminal. + Added subject line clean in several places. + Fixed headerlines for posting news. + Fixed headerlines for posting email. + When a message is posted by a user, the CHRS kludge of the user + is used in the message, not the area setting. + When a user logs in, the users locale (guessed value from his + characterset) is set. Experimental to see if libc functions will + support Chinese characters. + Allowed hi-ascii input characters in the internal fs editor, + the chat input and one general input function. This may have + effects for all users not using us-ascii keyboards. + Added more support for Chinese using the traduce function. + Changed color for chat lines with one * at the begin. + The creation of the mailout semafore is now after the hangup + so that mbfido won't start before the bbs is finished. + Removed bbslist menus, this will become a door. + Added #define NFGVMIN 1 in openport. + During hangup we set sighup to ignore. + Some small buffer protections added in addfile. + Fixed keyboad input for all bigendian machines. + Patches from Dmitry Komissaroff to make charset translation + work on message subject lines. + In change handle the first character of the name is not + capitalized. + Changed layout of raw directory listing to support longer + filenames. + Rewrote terminal i/o. + If a user pages the sysop a hint is displayed to fill in the + reason to chat, language prompt 28. + After forced chat, redisplay the last menu. + Removed support for non-batching protocols (xmodem) and for + bidirectional protocols. + Removed Ctrl-F G, this is of no use anymore. + Switched to new modular download and upload functions. + With download from file areas, the long filename is sent to + the users, we will only support protocols that allow this. + When an invalid OLR reply packet is received, it is removed + from the users upload directory. + We don't reward upload time anymore, only bytes. It's more + troubles to implement right then it's worth these days. This + is caused by telnet connections when we never know what the + real linespeed is with to/from the user. + Added the following internal file transfer protocols: Xmodem, + Ymodem, Ymodem-1K, Ymodem-G, Zmodem and Zmodem-8K (aka ZedZap). + Xmodem should not be used, but is available because Ymodem is + available, ie: don't make it available for your users. + For more information see the manual setup/protocol.html. + After upload, files are now stored correctly in the filebase. + In change protocol, changed the colors. + With user chat, the timeout timer wasn't refreshed. + Improved test for users protocol available. + Fixed download K and files setting for users on a new day. + + mbnewusr: + Changed syntax for calling mbpasswd. + If we can detect the users screenlength then we don't bother + asking the user. + Added logging during execute of mbuseradd. + Corrected wrong ANSI setting for new users. + Added logging of remote host and terminal. + If the external editor is configured a new user gets the + external editor by default instead of the internal editor. + During hangup we set sighup to ignore. + Fixed keyboad input for all bigendian machines. + Rewrote terminal i/o. + + mbsetup: + Removed Italian default record. Rewrote code to create default + language records. + Added node setup switch to override node Hold or Down status. + Changed syntax for calling mbpasswd. + Dropped support for newsgroup distribution. + Added setup switches per node to disable PLZ or GZ and BZ2 + compression protocols with binkp. + Added setup entry 1.15.8 to set a limit on the size of the + mailer history html page. + Added setup for Internet BBS Chat. + Added setup items 1.13.4 and 1.13.5. These could point to + a valid apache logfile in common format and ftp xferlog + logfile. If defined then downloads via www and or ftp can + be counted. + Dropped support for file areas on CDrom. + In menu 10 added a switch to default connect downlinks SR + instead if S. + Added language defaults for Chinese. + Removed obsolete bbslist editor. + Made some web sitedoc screens look better. + Changed helplines for areamanager filenames to indicate that + these are case sensitive. + Added support for XxxxBSD console port. + For new systems, there will now be 16 terminal ports created + instead of 10, this is the maximum number of safe created ttys. + The ttys are now sorted on the comment fields. + In file transfers edit, removed switches for batch and bidirect + protocols, added a switch for internal protocols. + New internal protocols are automatic added and the external + protocols are disabled. Some fields of the internal protocols + are protected. + In file areas, free downloads is now default for new areas. + + mbtask: + Code cleanup and memory optimisation. + Added check to some chat commands to check if the chat thread + is running so that clients can give a proper message. + Added Internet BBS Chat. + Dropped support for file areas on CDrom. + The created semafore files are now world readable so that low + privileged users like nobody can check the semafore's. + + mbmon: + Added Internet BBS Chat. + Changed color for chat lines with one * at the begin. + + mbaff: + Fixed a crash when announce a empty description line. + + mbdiff: + Code cleanup. + + mball: + Code cleanup. + If a valid WWW logfile is specified in menu 1.13.4 then http + downloads are counted and the filedatabase is updated before + the allfiles listings are created. Note that the very first + time only a mark is placed in ~/var and nothing is done. + + mbstat: + Code cleanup. + + mbuser: + Code cleanup. + + mbmsg: + Code cleanup and removed dead code. + + mbpasswd: + Added security checks to see if this program is legally called. + Changed commandline syntax. + + mbuseradd: + Added security checks to see if this program is legally called. + + mblogin: + The file ~/etc/login.defs now has default the issue file + enabled so that it also is displayed for incoming telnet users. + + script: + The installinit script now recognizes Fedora Core (but it used + to work anyway). + Added mbfile check to monthly maintenance script. + Fixed the Slackware setup script that didn't make the startup + symlinks in runlevel 4 if the directory /etc/rc.d/rc4.d didn't + exist. + Modified rundoor.sh so that it uses two different dosemu + configuration files, one for virtual modem and one without. + See the manual doors.html. + In the editor script modified the joe header so that it will + work with the new terminal i/o. + + lang: + New prompts 28, 29 and 30. + Added Chinese language. + TODO: remove bbslist entries. + Changed width of prompt 261. + Removed leading spaces of prompt 151. + Removed prompts 259 and 276. + + examples: + Removed bbs list items from the English menus and txtfiles and + the Spanish menus and txtfiles. + Fixed the menu archives so that they contain menu files again. + Fixed logo display. + Fixed Spanish txtfiles to leave out an old support bbs. + + html: + Added batch file upload written by Russell Tiedt to the faq. + + porting: + Compiles more or less on x86_64, there are issues with utmp + and struct lastlog + Compiles on NetBSD i386. + Compiles on Alpha. + Doesn't compile on Mac OS X. + + diff --git a/ChangeLog_2006 b/ChangeLog_2006 new file mode 100644 index 00000000..dc20757b --- /dev/null +++ b/ChangeLog_2006 @@ -0,0 +1,184 @@ +$Id: ChangeLog_2006,v 1.1 2008/11/29 13:55:33 mbse Exp $ + + +v0.90.0 06-Nov-2005 - 23-Jul-2006 + + upgrade: + Start mbsetup once and leave, this will update user records + with the wrong editor choice, fixes the files databases if + needed and upgrades the nodes settings. + Add extra switches to unarchiver commands entry 11, see + mbsetup for the archivers. + In menus 7.n.3.14 check if the NR flag is off, unless you need + it (which I doubt). + + mbsebbs: + Removed antique line editor. + Added check for users homedirectory permissions and attempt to + fix errors. If fatal the connection is dropped. + Fixed virus scan of uploaded archives. + There are no paths anymore in OLR download packet files. + Made OLR bluewave packets CPU independant. + Fixed a strange bug that ftell didn't work right, this caused + corrupt bluewave download packets. + Bluewave is now big/little endian correct. + Added width marker for chat input and fixed linelength. + Added screen rows detection using ANSI sequences needed for + some terminal programs like minicom. + Writes LINES and COLUMNS environment into data.msg so that the + joe editor can use that. + Changed zmodem transmitter timeout to 60 seconds and changed + the zmodem init fase so that clients that don't start automatic + have a chance to start the transfer. + The zmodem transmitter now uses buffered output. + Added Change archiver menu. + Added crontrol-U0 to display current archiver. + Changes to OLR ASCII download: + - area files are named after area tag if possible, dots are + replaced by underscores and extension is .text. + - If available each message now has a msgid in the header. + - Added a .info file with control information. + Fixed logging of wrong file after upload. + + mbtask: + Lots of changes and bugfixes in the IBC chatserver. + Added code to the chatserver thread to handle remote servers + with dynamic dns addresses. + All IBC log lines start now with IBC: to allow easier grep. + Added global reset for chatservers every 24 hours. + Added setup checks for two main configuration settings for IBC + and fail to start if they are missing. + Don't start connections with IBC servers that miss settings in + the chatserver setup. + Several commands now send the server address from the servers + setup to the neighbours. + After server connect send the correct usernames already in chat. + When the IBC server detects a IP change of a remote server it + will completly restart the connection with that remote. + Made several functions multithread aware. + On shutdown also send PART and QUIT messages to all our links + for our own users if they are still online so that the network + will keep the correct state. + Removed all thread programming so that mbtask is now a single + process again. + Fixed startup problem on new installations. + Changed chat welcome message. + Registration info for the clients was send double coded. + Delete users from channel when a server disconnects. + Delete users from a server when server disconnects. + Check for stopped tasks reverted to the old method without + signal handlers. + Fixed comma issue in user/city registration. + Fixed a crash when there is no /etc/services udp port for the + chatserver. + + mbsetup: + In users edit screen, removed append record option. + Blocked changing the users unixname. + Removed antique line editor is edit users. + In IBC setup added a switch for dynamic dns. + Added switches to default extract commands for file_id.diz + files to: + nomarch -U + rar -cu + unrar -cu + unzip -L + Other archives don't support forced upper or lowercase. + Added NR switch to the nodes session setup. + When a filearea was moved to another path the symlinks were not + moved to the new path. + Added archiver selection for nodes in node setup. + In archiver select added checks for valid archivers and allowed + escape without selecting an archiver. + Added selection of archiver select menu. + Added setup switch for tic nodes that need a 4d seen-by line. + When saving message areas, the golded.inc file now has the + groupid numbers from the groups in echomail or news areas. + The message groups now handle groupnumbers for golded groups. + In nodes setup added check for paths when directory sessions + are selected. + + mbcico: + Don't add files to send anymore when batchnr > 20 to prevent + an infinite session loop. + Implemented binkp NR option. + Assume EXTCMD is set when GZ or BZ2 is active. + Added real error message for failed outgoing IP connections. + + mbfido: + Added some experimental code for tic orphans processing. + Fixed crash when receiving bad tics. + Tic orphans and bad crc handling is using a new method. + Now using new tmp workdirectory functions. + When a hatch directory doesn't exist, it is created. + Removed gated SB debug logmessages. + Made searching file file_id.diz case insensitive. + Uses archiver from the setup to pack mail for a node. + If sending crash to a node not in the setup, a default + archiver is now set to ZIP. + Accept unpacket mail for own points. + In created ticfiles in advanced seen-by mode, setting the node + to 4d will add point numbers to the seen-by lines if needed. + When message areas are auto changed, the updated golded.inc + file now has the groupid numbers from the groups in echomail + or news areas. + Seenby addresses in the internal tables did not store the + point numbers. + Added warning log for messages >= 32768 bytes. + + mbfile: + Now using new tmp workdirectory functions. + Fixed file importing of non-archived files. + The test for files.bbs for files to import was done in the + wrong directory. + If a file is not removed from disk during pack, a error log + is created instead of a normal log. + Fixed a crash when files.bbs had empty lines. + Made searching file file_id.diz case insensitive. + Import now skips empty lines in files.bbs. + Import now handles properly missing files. + + mbaff: + Fixed announce and filefind report problem when there were " + characters in the description. + + mbmon: + Improved error message when the chatserver is not configured + in /etc/services. + In chat beeps are heard for system messages. + Added width marker for chat input and fixed linelength. + Better user input checking in chat. + Safer display in chat. + + mbstat: + Don't write in errorlog after normal termination. + Added semafore names to help display. + + mbmsg: + With the post function the right time is now used. + + mbnntp: + Removed AREA:TAG kludge from posted articles. + + libmbse.a: + Added temp workdirectory functions. + On socket send error 2, abort the client program. + Fixed another 32/64 bit issue in the files databases and added + automatic correction if detected. + Fixed comma issue in user/city registration. + + nodelist.a: + Fixed parsing the nodelist when IBN:1.2.3.4 returned the IP + address 1.2.3.4 with port 1. + + lang: + Changed language prompts 373 and 438. + New prompts 86, 87, 88 and 89. + + install: + The checkbasic script uses more tricks to see if you are mbse + su to root before install. + + examples: + Updated Engish menus and txtfiles. + diff --git a/ChangeLog_2007 b/ChangeLog_2007 new file mode 100644 index 00000000..1bfb1ff5 --- /dev/null +++ b/ChangeLog_2007 @@ -0,0 +1,277 @@ +$Id: ChangeLog_2007,v 1.1 2008/11/29 13:55:33 mbse Exp $ + + +v0.92.0 08-Oct-2006 - 16-Oct-2007 + + general: + With this version de default internal character encoding is + UTF-8. BBS users who have a UTF-8 terminal can use the bbs in + UTF-8 mode and should have no troubles at all reading and + writing messages in several language encodings. + Fixed building on FreeBSD, tested on 5.3 and 6.2. + Added support to link to the GeoIP library. If it's present on + your system, mbcico, mbsebbs, mbnewusr and mbnntp will log the + country from which the connection is made. + Added example telnet login for NetBSD. + Dropped support for NetBSD < 3.0. + Added support for Ubuntu. + Added support for the ARM processor. + + upgrade: + Because some directories will be moved, a special upgrade + procedure is needed. Take the following steps: + 1. Don't install the new source yet and make a backup! + 2. In the source topdir run "make clean". + 3. Unpack the new source. + 4. Build new source, "./configure" and "make". + 5. Run "./mbsetup-0.92.0/mbsetup", enter global setup and + leave with save. this 'should' move all your existing + language files to the new directory structure. + 6. "su", run "make install" and restart the bbs. + 7. "exit". + If you didn't do steps 1 and 2 (automatic updates) and you + installed the source over the old source, you will have some + extra files in the lang subdir of the source. No big deal. + If you didn't run step 5 then the new language paths have + the default files from source and not your own. Your own files + are then still under ~/english/*.* ~/dutch/*.* etc. Move the + contents of these subdirs into ~/share/int/menus/en/* etc. + Compile and install this new version. + In all macro files html.* change the charset to UTF-8. You will + find these in /opt/mbse/share/int/macro/*/html.* + If you still have all default macro files then in the source + directory mbsebbs/examples simply run "make macros" to install + the updated versions. + Run "mbfile index -f " once to regenerate all download html + index pages with UTF-8 encoding. Check the error.log for + errors. + In mbsetup menu 1.3.7 change logo.asc into logo.ans and make + sure you have that file. A note about the logo file, it will + be displayed before we know if a user has a utf-8 or ansi + terminal, so change your logo screen so that it has no ansi + grafic characters, just plain ascii with ansi color codes. + Start and leave mbsetup, this will upgrade the newfiles and + filefind reports to set a defaults CHRS kludge CP437 2 which + is good for reports with ANSI blockgraphics. + The next step is optional but advised to make the symbolic + links in the download areas without path information: + + mbse$ cd /opt/mbse/ftp + mbse$ find pub -type l -exec rm '{}' \; + mbse$ mbfile check + + Make sure mbtask is restarted. + + libmbse: + Fixed commandline address parsing if a 2d address was given. + Added coding and decoding to strings that are processed by the + diesel macroprocessor. + Fixed a compile warning in the diesel code. + Moved default language paths into ~/share/int + Fixed a too low memory allocation in clencode. + Added support or the ARM processor, thanks to Simon Voortman. + + libmsgbase: + Added extra debug info in pack function. + Fixed serveral problems with LastRead pointers created by + GoldED. + LastRead records that don't belong to a valid user are + purged. + + libnodelist: + Don't complain if attempt to read an extended nodelist line + fails. + + libdiesel: + Fixed linking problem on OpenBSD. + + mbcico: + If no suitable compressor found for binkp transfers then don't + complain. + Added mbtask command to update the MIB counters. + Fixed a lot of gcc4 compiler warnings. + Fixed compiling on NetBSD 3.1. + Catch SIGIOT. + Fixed outbound scanning on ARM systems. + Added GeoIP support. + + mbout: + Catch SIGIOT. + + mbfido: + Check if active marked virusscanner is really present on the + system. + Don't crash on empty ticfiles. + Fixed log message for scanned netmail. + The make web stat command produces UTF-8 webpages. + The add file function now creates links without pathnames. + In rfc2ftn if we cannot find the incoming charset from the + standard table we will fall back to the charset in the + Content-type: header and try to initialize iconv with that + value. + For debug info help to me, the headers Content-Type and + Content-Transfer-Encoding are temporary stored in the fido + message as kludges. + Added mbtask commands to update the MIB counters. + Fixed mbfile import with too many description lines in + files.bbs + Fixed a buffer overflow when processing TIC files with a lot + of garbage in it. + Fixed a lot of gcc4 compiler warnings. + Fixed compiling on NetBSD 3.1. + If the LFN in the tic file is empty, create a lowercase name. + Catch SIGIOT. + Fixed date conversion in netmail-email gate. + Fixed buffer overwrite caused by bad formatted ticfiles. + + mbsebbs: + Remove some private user files from the users home directory + during logoff. + Check if active marked virusscanner is really present on the + system. + Moved default language paths into ~/share/int + Added terminal setting UTF-8. + Removed setting ANSI/Textmode, allways graphic now. + All *.asc textfiles are now obsolete, only *.ans are valid. + Display ansi file converts to UTF-8 if the user has UTF-8. + Email and FTN mail reading now translates to the users + characterset using glibc iconv. + Changed menus lastcallers, whoson, userlist, pinfo, fsedit, + timestats, filelist to output UTF-8 code if the user has set + that terminal setting. + Uploaded files now have symlinks without pathnames. + Fixed upload crash when a FILE_ID.DIZ is found but the bbs is + not allowed to open it for reading. + The filelist now displays long filenames (finally). + Searching FILE_ID.DIZ in uploads is now case insensitive. + Improved cleaning users tmp dir after virus scan. + Fixed a lot of gcc4 compiler warnings. + Fixed compiling on NetBSD 3.1. + Catch SIGIOT. + Use both CRC and User ID to search lastread record. + Added missing check to see if a user is allowed to post or + reply a message. + Added GeoIP support. + + mbnewusr: + Fixed loading default language for new user. + Catch SIGIOT. + Added GeoIP support. + + mbfile: + The check filebase command now also removes dead symlinks from + the download directories. + The index command produces UTF-8 webpages. + The check command now repairs filenames without using absolute + pathnames. + The adopt, import and move functions now make links without + path. + Help message displays quoted description. + The adopt command works even if the description isn't quoted. + Catch SIGIOT. + + mbindex: + Check nodelist permissions and try to correct them. + When the first Zone entry is missing in the nodelist, mbindex + aborts with a fatal error and doesn't replace the nodelist + index. + Keep the latest 4 instead of 2 nodelists in the nodelist + directory to allow a few weeks for recovery. + Catch SIGIOT. + + mbdiff: + Wrote a lf instead of eof character as last character in the + new nodelist. + Fixed CRC error made by previous change. + Fixed a lot of gcc4 compiler warnings. + Catch SIGIOT. + + mbaff: + For each newfiles and filefind report there is now a CHRS + kludge setting. Reports will be converted to the selected + charset. Origin characterset is CP437 for now. + Catch SIGIOT. + Fixed filefind search filenames case insensitive. + Fixed filefind search in description. + + mball: + Now also creates allfiles.utf and newfiles.utf with UTF-8 + encoded text. These new files will also be added to the zip + archives. + Creates allfiles/newfiles listings with long filenames and + short filenames. + Removed debug logging for checking WWW/FTP downloads. + Catch SIGIOT. + File download checks from http and ftp are now case + insensitive. + + mbmsg: + Catch SIGIOT. + + mbstat: + Catch SIGIOT. + + mbnntp: + Reading news outputs UTF-8 coded articles. Posting is done + with the client side charset and translated when needed. + Suppress logging of passwords. + Catch SIGIOT. + Added GeoIP support. + Removed a lot of debug logging. + + mbsetup: + In generated html sitedocs fixed link from node to tic areas. + Moved default language paths into ~/share/int + In newfiles and filefind reports the Hi-ASCII setting is gone + and a CHRS kludge selection is added. Defaults to CP437 2. + Blocked selection of FTN and Usenet moderated message areas. + Changed the F-PROT scanner name into fpscan. + Removed a not used setting for filefind. + + mbmon: + Added support or the ARM processor. + Catch SIGIOT. + + mbtask: + Some code cleanup. + Fixed s SIGBUS on Sparc/NetBSD systems. + Moved default language paths into ~/share/int + Fixed a too low memory allocation in clencode. + Added SNMP MIB counters and added set commands to increase + these new counters. Note, there is no SNMP interface yet. + Added support or the ARM processor. + Fixed compiling on NetBSD 3.1. + Fixed a too small buffer. + Catch SIGIOT. + Fixed outbound scanning on ARM systems. + + mbuser: + Set default editor on erased records. + + mbpasswd: + Added check for FreeBSD > 6.0 and use sysctl for security check. + + mbuseradd: + Added check for FreeBSD > 6.0 and use sysctl for security check. + + mblogin: + On NetBSD accepts the -a parameter. + + script: + Fixed problems with newer joe editor versions. + script: + Adjusted editor script to use nansi.sys if ansi.sys is not + available in the terminfo database. + script: + Improved grep in init scripts. + + lang: + Renamed language files and changed installation paths. + Language prompts 44, 75 and 76 are obsolete. + + examples: + Upgraded the html macro templates to produce UTF-8 web pages. + Upgraded the txtfiles examples to only have .ans screens. The + logo.ans screen now works on ANSI and UTF-8 terminals. + + diff --git a/DEBUG b/DEBUG new file mode 100644 index 00000000..154ab8f5 --- /dev/null +++ b/DEBUG @@ -0,0 +1,31 @@ + Debugging with MBSE BBS. + +From version 0.33.15 I changed the way debug logging goes. There are no more +#ifdef .. #endif directives in the code that change the loging behaviour. +Lines that could be logged in the code for debug are now written in two +possible ways: + +Syslog('b', "This is always logged for debug"); +Syslog('B', "This is logged if most_debug flag is true"); + +The difference is the uppercase or lowercase logclass. Uppercase is only logged +if the global flag most_debug is set to true. If you want to use it in one of +the sources declare that flag like this: + +extern int most_debug; + +Then, from the moment you need the extra debugging, insert + +most_debug = TRUE; + +in the code, and set it to FALSE when you are done. + +I did this because the extra debug is good for developers but not for regualar +users that need some extra logging. The log output with the most_debug flag +set to TRUE can be huge and does affect system performance. + +For those who are developing code for MBSE BBS, use two kinds on debug logging. + + + Michiel Broek. + diff --git a/Makefile b/Makefile new file mode 100644 index 00000000..d5c63dee --- /dev/null +++ b/Makefile @@ -0,0 +1,164 @@ +# Top-level makefile for MBSE BBS package +# $Id: Makefile,v 1.73 2007/09/01 15:35:47 mbse Exp $ + +include Makefile.global + +OTHER = AUTHORS ChangeLog COPYING DEBUG CRON.sh FILE_ID.DIZ.in \ + INSTALL.in Makefile Makefile.global.in NEWS cpuflags \ + ChangeLog_1998 ChangeLog_1999 ChangeLog_2000 ChangeLog_2001 \ + ChangeLog_2002 ChangeLog_2003 ChangeLog_2004 ChangeLog_2005 \ + README SETUP.sh \ + TODO UPGRADE aclocal.m4 checkbasic config.h.in configure \ + configure.ac \ + paths.h.in README.Gentoo README.Ubuntu +TARFILE = ${PACKAGE}-${VERSION}.tar.bz2 + +############################################################################### + + +all depend: + @if [ -z ${MBSE_ROOT} ] ; then \ + echo; echo " MBSE_ROOT is not set!"; echo; exit 3; \ + else \ + for d in ${SUBDIRS}; do (cd $$d && ${MAKE} $@) || exit; done; \ + fi + +help: + @echo " Help for MBSE BBS make:" + @echo "" + @echo "make [all] Compile all sources" + @echo "make install Install everything (must be root)" + @echo "make depend Update source dependencies" + @echo "make dist Create distribution archive" + @echo "make clean Clean sourcetree and configuration" + @echo "make crontab Install default crontab for mbse" + @echo "make filelist Create filelist for make dist" + @echo "" + +install: + @./checkbasic + @if [ "`id -un`" != "root" ] ; then \ + echo; echo " Must be root to install!"; echo; exit 3; \ + fi + @if [ -z ${PREFIX} ] ; then \ + echo; echo "PREFIX is not set!"; echo; exit 3; \ + fi + @${INSTALL} -d -o ${OWNER} -g ${GROUP} -m 0755 ${PREFIX} + @${INSTALL} -d -o ${OWNER} -g ${GROUP} -m 0770 ${PREFIX}/bin + @${INSTALL} -d -o ${OWNER} -g ${GROUP} -m 0770 ${PREFIX}/etc + @${INSTALL} -d -o ${OWNER} -g ${GROUP} -m 0750 ${PREFIX}/etc/dosemu + @if [ -f ${PREFIX}/etc/lastcall.data ] ; then \ + chmod 0660 ${PREFIX}/etc/lastcall.data ; \ + fi + @if [ -f ${PREFIX}/etc/sysinfo.data ] ; then \ + chmod 0660 ${PREFIX}/etc/sysinfo.data ; \ + fi + @${INSTALL} -d -o ${OWNER} -g ${GROUP} -m 0770 ${PREFIX}/log + @${INSTALL} -d -o ${OWNER} -g ${GROUP} -m 0770 ${PREFIX}/tmp + @${INSTALL} -d -o ${OWNER} -g ${GROUP} -m 0770 ${PREFIX}/home + @${INSTALL} -d -o ${OWNER} -g ${GROUP} -m 0755 ${PREFIX}/share + @${INSTALL} -d -o ${OWNER} -g ${GROUP} -m 0755 ${PREFIX}/share/doc + @${INSTALL} -d -o ${OWNER} -g ${GROUP} -m 0755 ${PREFIX}/share/doc/html + @${INSTALL} -d -o ${OWNER} -g ${GROUP} -m 0755 ${PREFIX}/share/doc/tags + @${INSTALL} -d -o ${OWNER} -g ${GROUP} -m 0750 ${PREFIX}/share/int + @${INSTALL} -d -o ${OWNER} -g ${GROUP} -m 0750 ${PREFIX}/share/int/menus + @${INSTALL} -d -o ${OWNER} -g ${GROUP} -m 0750 ${PREFIX}/share/int/menus/en + @${INSTALL} -d -o ${OWNER} -g ${GROUP} -m 0750 ${PREFIX}/share/int/menus/es + @${INSTALL} -d -o ${OWNER} -g ${GROUP} -m 0750 ${PREFIX}/share/int/menus/nl + @${INSTALL} -d -o ${OWNER} -g ${GROUP} -m 0750 ${PREFIX}/share/int/menus/de + @${INSTALL} -d -o ${OWNER} -g ${GROUP} -m 0750 ${PREFIX}/share/int/menus/gl + @${INSTALL} -d -o ${OWNER} -g ${GROUP} -m 0750 ${PREFIX}/share/int/menus/zh + @${INSTALL} -d -o ${OWNER} -g ${GROUP} -m 0750 ${PREFIX}/share/int/macro + @${INSTALL} -d -o ${OWNER} -g ${GROUP} -m 0750 ${PREFIX}/share/int/macro/en + @${INSTALL} -d -o ${OWNER} -g ${GROUP} -m 0750 ${PREFIX}/share/int/macro/es + @${INSTALL} -d -o ${OWNER} -g ${GROUP} -m 0750 ${PREFIX}/share/int/macro/nl + @${INSTALL} -d -o ${OWNER} -g ${GROUP} -m 0750 ${PREFIX}/share/int/macro/de + @${INSTALL} -d -o ${OWNER} -g ${GROUP} -m 0750 ${PREFIX}/share/int/macro/gl + @${INSTALL} -d -o ${OWNER} -g ${GROUP} -m 0750 ${PREFIX}/share/int/macro/zh + @${INSTALL} -d -o ${OWNER} -g ${GROUP} -m 0750 ${PREFIX}/share/int/txtfiles + @${INSTALL} -d -o ${OWNER} -g ${GROUP} -m 0750 ${PREFIX}/share/int/txtfiles/en + @${INSTALL} -d -o ${OWNER} -g ${GROUP} -m 0750 ${PREFIX}/share/int/txtfiles/es + @${INSTALL} -d -o ${OWNER} -g ${GROUP} -m 0750 ${PREFIX}/share/int/txtfiles/nl + @${INSTALL} -d -o ${OWNER} -g ${GROUP} -m 0750 ${PREFIX}/share/int/txtfiles/de + @${INSTALL} -d -o ${OWNER} -g ${GROUP} -m 0750 ${PREFIX}/share/int/txtfiles/gl + @${INSTALL} -d -o ${OWNER} -g ${GROUP} -m 0750 ${PREFIX}/share/int/txtfiles/zh + @${INSTALL} -d -o ${OWNER} -g ${GROUP} -m 0775 ${PREFIX}/ftp + @${INSTALL} -d -o ${OWNER} -g ${GROUP} -m 0775 ${PREFIX}/ftp/pub + @${INSTALL} -d -o ${OWNER} -g ${GROUP} -m 0775 ${PREFIX}/ftp/pub/local + @${INSTALL} -d -o ${ROWNER} -g ${RGROUP} -m 0750 ${PREFIX}/ftp/incoming + @${INSTALL} -d -o ${OWNER} -g ${GROUP} -m 0775 ${PREFIX}/var + @${INSTALL} -d -o ${OWNER} -g ${GROUP} -m 0750 ${PREFIX}/var/arealists + @${INSTALL} -d -o ${OWNER} -g ${GROUP} -m 0750 ${PREFIX}/var/badtic + @${INSTALL} -d -o ${OWNER} -g ${GROUP} -m 0770 ${PREFIX}/var/boxes + @${INSTALL} -d -o ${OWNER} -g ${GROUP} -m 0770 ${PREFIX}/var/bso + @${INSTALL} -d -o ${OWNER} -g ${GROUP} -m 0770 ${PREFIX}/var/bso/outbound + @${INSTALL} -d -o ${OWNER} -g ${GROUP} -m 0770 ${PREFIX}/var/boxes + @${INSTALL} -d -o ${OWNER} -g ${GROUP} -m 0770 ${PREFIX}/var/dosemu + @${INSTALL} -d -o ${OWNER} -g ${GROUP} -m 0770 ${PREFIX}/var/dosemu/c + @if [ ! -d ${PREFIX}/var/fdb ] && [ -d ${PREFIX}/fdb ]; then \ + echo "Migrate files database..." ; \ + ${INSTALL} -d -o ${OWNER} -g ${GROUP} -m 0770 ${PREFIX}/var/fdb ; \ + mv ${PREFIX}/fdb/file*.data ${PREFIX}/var/fdb ; \ + echo "...done. You may remove ${PREFIX}/fdb" ; \ + fi + @if [ ! -d ${PREFIX}/var/magic ] && [ -d ${PREFIX}/magic ]; then \ + echo "Migrate magic filenames..." ; \ + ${INSTALL} -d -o ${OWNER} -g ${GROUP} -m 0750 ${PREFIX}/var/magic ; \ + mv ${PREFIX}/magic/* ${PREFIX}/var/magic ; \ + rmdir ${PREFIX}/magic ; \ + echo "...done." ; \ + fi + @${INSTALL} -d -o ${OWNER} -g ${GROUP} -m 0770 ${PREFIX}/var/fdb + @${INSTALL} -d -o ${OWNER} -g ${GROUP} -m 0750 ${PREFIX}/var/hatch + @${INSTALL} -d -o ${OWNER} -g ${GROUP} -m 0750 ${PREFIX}/var/inbound + @${INSTALL} -d -o ${OWNER} -g ${GROUP} -m 0750 ${PREFIX}/var/magic + @${INSTALL} -d -o ${OWNER} -g ${GROUP} -m 0770 ${PREFIX}/var/mail + @${INSTALL} -d -o ${OWNER} -g ${GROUP} -m 0770 ${PREFIX}/var/msgs + @${INSTALL} -d -o ${OWNER} -g ${GROUP} -m 0750 ${PREFIX}/var/nodelist + @${INSTALL} -d -o ${OWNER} -g ${GROUP} -m 0750 ${PREFIX}/var/queue + @${INSTALL} -d -o ${OWNER} -g ${GROUP} -m 0770 ${PREFIX}/var/rules + @${INSTALL} -d -o ${OWNER} -g ${GROUP} -m 0770 ${PREFIX}/var/run + @${INSTALL} -d -o ${OWNER} -g ${GROUP} -m 0775 ${PREFIX}/var/sema + @${INSTALL} -d -o ${OWNER} -g ${GROUP} -m 0750 ${PREFIX}/var/ticqueue + @${INSTALL} -d -o ${OWNER} -g ${GROUP} -m 0750 ${PREFIX}/var/unknown + @chmod 0775 ${PREFIX}/var + @chmod 0775 ${PREFIX}/var/sema + @if [ -x ${BINDIR}/mbtelnetd ]; then \ + rm ${BINDIR}/mbtelnetd ; \ + echo "removed ${BINDIR}/mbtelnetd"; \ + fi + @for d in ${SUBDIRS}; do (cd $$d && ${MAKE} -w $@) || exit; done + @if [ -d ${PREFIX}/doc ] ; then \ + echo; echo "If there is nothing important in ${PREFIX}/doc" ; \ + echo "you may remove that obsolete directory." ; \ + fi + @for d in de en es fr gl it nl; do \ + if [ -d ${PREFIX}/share/int/$$d ] ; then \ + rmdir ${PREFIX}/share/int/$$d ; \ + echo "Removed directory ${PREFIX}/share/int/$$d" ; \ + fi ; \ + done + @rm -f ${PREFIX}/etc/charset.bin + @rm -f ${PREFIX}/bin/mbcharsetc + @rm -rf ${PREFIX}/sema + @rm -rf ${PREFIX}/tmp/arc + + +dist tar: ${TARFILE} + +clean: + rm -f .filelist core ${TARFILE} paths.h config.h + for d in ${SUBDIRS}; do (cd $$d && ${MAKE} $@) || exit; done; + +${TARFILE}: .filelist + cd ..; ln -s ${PACKAGE} ${PACKAGE}-${VERSION} ; rm -f ${TARFILE}; \ + ${TAR} cvTf ./${PACKAGE}-${VERSION}/.filelist - | bzip2 >${TARFILE} ; \ + rm -f ${PACKAGE}-${VERSION} + +crontab: + sh ./CRON.sh + +.filelist filelist: + (for f in ${OTHER} ;do echo ${PACKAGE}-${VERSION}/$$f; done) >.filelist + for d in ${SUBDIRS}; do (cd $$d && ${MAKE} filelist && cat filelist >>../.filelist) || exit; done; + diff --git a/NEWS b/NEWS new file mode 100644 index 00000000..e69de29b diff --git a/README b/README new file mode 100644 index 00000000..f54feb92 --- /dev/null +++ b/README @@ -0,0 +1,28 @@ +$Id: README,v 1.8 2006/07/03 20:27:21 mbse Exp $ + + MBSE BBS Packages. + + +Distribution naming scheme: + +mbsebbs-0.33.18.tar.bz2 + | | | | + | | | +-------- minor patchlevel + | | +----------- minor version + | +------------- major version + +------------------- package name + +For fidonet distribution, the tar archive and FILE_ID.DIZ are +zipped together in a file like mbb03318.zip + +The odd minor version numbers are developent versions only. From 0.35.1 and up +these will not be released anymore but are only available via cvs. + +The even minor version numbers will be stable releases, they will be available +at http://www.mbse.eu and at 2:280/2802. The first version using this +scheme is 0.36.00 + +For first time installing, see the file INSTALL. After installation, the html +guide is installed in /opt/mbse/html. + + diff --git a/README.Gentoo b/README.Gentoo new file mode 100644 index 00000000..306cc584 --- /dev/null +++ b/README.Gentoo @@ -0,0 +1,19 @@ +$Id: README.Gentoo,v 1.4 2004/09/26 11:40:55 mbse Exp $ + +Unlike most distributions, Gentoo doesn't install programs that may be usefull +for mbsebbs by default. Before you run ./configure emerge the following +programs to make mbsebbs run with most features: + +Package Provides +-------------- -------------------------------------------------------------- +xinetd Icoming TCP/IP networking. +netkit-telnetd Telnet sessions to the bbs. +zip Includes unzip. The default archiver. +arj ARJ archiver. +unarj UnARJ archiver. +rar RAR archiver. +lha LHArc archiver. +arc Arc archiver. +zoo ZOO archiver. +lrzsz Zmodem, Ymodem file transfers for the bbs. + diff --git a/README.Ubuntu b/README.Ubuntu new file mode 100644 index 00000000..d736c1ea --- /dev/null +++ b/README.Ubuntu @@ -0,0 +1,28 @@ +$Id: README.Ubuntu,v 1.2 2007/09/02 10:00:40 mbse Exp $ + +Unlike most distributions, Ubuntu doesn't install programs that may be usefull +for mbsebbs by default. Before you run ./configure install the following +packages to make mbsebbs run with most features: + +Package Provides +-------------- -------------------------------------------------------------- +xinetd Icoming TCP/IP networking. +libc6-dev To allow compiling of programs. +libz-dev To allow mailer zlib compression. +libbz2-dev To allow mailer bz2 compression. +automake To rebuild configure if needed. +telnetd Telnet sessions to the bbs. +arj ARJ archiver. +rar RAR archiver. +lha LHArc archiver. +arc Arc archiver. +zoo ZOO archiver. +lrzsz Zmodem, Ymodem file transfers for the bbs (obsolete). +joe External editor for the bbs. + +Install these programs by using 'sudo apt-get install Package'. +The xinetd and libc6-dev package are mandatory! + + +sudo bash /path/to/SETUP.sh + diff --git a/README.developer b/README.developer new file mode 100644 index 00000000..9a14de09 --- /dev/null +++ b/README.developer @@ -0,0 +1,55 @@ +$Id: README.developer,v 1.30 2007/11/25 14:37:48 mbse Exp $ + + README.developer for MBSE BBS + +This file is only available on CVS, not in the distribution. This file will +hold information about CVS tags, scheduled releases and other info for +development only. There are no secrets in this file because it's public +available. + + + Wordlengths. + +From bits/types.h: + + Here we assume what is presently the case in all the GCC configurations + we support: long long is always 64 bits, long is always word/address size, + and int is always 32 bits. + +IOW: Never use long in the sources because it breaks between 32/64 bit +hardware. + +How about time_t, it seems an alias for long! (and it is). + + + CVS tags. + +mbsebbs-0_33_17 17-Aug-2001 Initial CVS import by Ken. +mbsebbs-0_33_18_current 25-Aug-2001 Upgraded to 0.33.18 current development. +mbsebbs-0_33_18_final 02-Nov-2001 Version 0.33.18 released. +mbsebbs-0_33_19_current 02-Nov-2001 Start 0.33.19 current development. +mbsebbs-0_33_19_final 10-Feb-2002 Version 0.33.19 released. +mbsebbs-0_33_20_current 10-Feb-2002 Start 0.33.20 current development. +mbsebbs-0_33_20_final 04-Jun-2002 Version 0.33.20 finished (not released). +mbsebbs-0_33_21_release 04-Jun-2002 Version 0.33.21 release. +mbsebbs-0_35_01_current 05-Jun-2002 Start 0.35.01 development. +mbsebbs-0_36_00_release 26-Dec-2002 Version 0.36.00 release. +mbsebbs-0_37_00_current 26-Dec-2002 Start version 0.37 development. +mbsebbs-0_38_00_release 03-Oct-2003 Version 0.38.00 release. +mbsebbs-0_39_00_current 09-Oct-2003 Start version 0.39 development. +mbsebbs-0_50_00_release 09-Feb-2004 Version 0.50.0 release. +mbsebbs-0_51_00_current 09-Feb-2004 Start 0.51 development. +mbsebbs-0_60_00_release 04-Jun-2004 Version 0.60.0 release. +mbsebbs-0_61_00_current 06-Jun-2004 Start 0.61 development. +mbsebbs-0_70_00_release 26-Oct-2004 Version 0.70.0 release. +mbsebbs-0_71_00_current 27-Oct-2004 Start 0.71 development. +mbsebbs-0_80_00_release 06-Oct-2004 Version 0.80.0 release. +mbsebbs-0_81_00_current 07-Oct-2005 Start 0.81 development. +mbsebbs-0_82_00_release 06-Nov-2005 Version 0.82.0 release. +mbsebbs-0_83_00_current 06-Nov-2005 Start 0.83 development. +mbsebbs-0_90_00_release 23-Jul-2006 Version 0.90.0 release. +mbsebbs-0_91_00_release 08-Oct-2006 Version 0.91.0 development. +mbsebbs-0_92_00_release 16-Oct-2007 Version 0.92.0 release. +mbsebbs-0_95_00_current 25-Nov-2007 Version 0.95.9 development. + +Michiel. diff --git a/SETUP.sh b/SETUP.sh new file mode 100644 index 00000000..ce0845f1 --- /dev/null +++ b/SETUP.sh @@ -0,0 +1,669 @@ +#!/bin/bash +# +# $Id: SETUP.sh,v 1.38 2008/11/29 13:42:39 mbse Exp $ +# +# Basic setup script for MBSE BBS +# +# (C) Michiel Broek +# +# Customisation section, change the next variables to your need. +# However, all docs refer to the setup below. +# +# Basic bbs root directory. +clear +MHOME=/opt/mbse +PATH=/bin:/sbin:/usr/bin:/usr/sbin: +DISTNAME= +DISTVERS= +OSTYPE=$( uname -s ) + +#------------------------------------------------------------------------ +# +# Logging procedure, needs two parameters. +# +log() { + /bin/echo $( date +%d-%b-%y\ %X ) $1 $2 >> SETUP.log +} + + +#------------------------------------------------------------------------ +# +cat << EOF +MBSE BBS for Unix, first time setup. Checking your system..." + +If anything goes wrong with this script, look at the output of +the file SETUP.log that is created by this script in this +directory. If you can't get this script to run on your system, +mail this logfile to Michiel Broek at 2:280/2802 or email it +to mbroek@mbse.eu + +EOF + +echo -n "Press ENTER to start the basic checks " +read junk + +log "+" "MBSE BBS $0 started by $(whoami)" +log "+" "Current directory is $(pwd)" + +# Check the OS type, only Linux for now. +# +if [ "$OSTYPE" != "Linux" ] && [ "$OSTYPE" != "FreeBSD" ] && [ "$OSTYPE" != "NetBSD" ] && [ "$OSTYPE" != "OpenBSD" ] && [ "$OSTYPE" != "Darwin" ]; then + + cat << EOF + +Your are trying to install MBSE BBS on a $OSTYPE system, however +at this time only Linux, FreeBSD, NetBSD, OpenBSD and Darwin (OS X) +are supported. + +EOF + log "!" "Aborted, OS is $OSTYPE" + exit 2 +fi + + +# +# First do various tests to see which Linux distribution this is. +# +if [ "$OSTYPE" = "Linux" ]; then + PW= + if [ -f /etc/slackware-version ]; then + # Slackware 7.0 and later + DISTNAME="Slackware" + # There are two styles, newer releases are like "Slackware 12.0.0" + if grep -q Slackware /etc/slackware-version ; then + DISTVERS=$( cat /etc/slackware-version | awk '{ print $2 }' ) + else + DISTVERS=$( cat /etc/slackware-version ) + fi + elif [ -f /etc/slamd64-version ]; then + # Slamd64 + DISTNAME="Slamd64" + DISTVERS=`cat /etc/slamd64-version` + elif [ -f /etc/zenwalk-version ]; then + DISTNAME="Zenwalk" + DISTVERS=$( cat /etc/zenwalk-version | awk '{ print $2 }' ) + elif [ -f /etc/debian_version ]; then + # Debian, at least since version 2.2 + DISTNAME="Debian" + DISTVERS=$( cat /etc/debian_version ) + # Ubuntu is based on Debian + if grep -q "Ubuntu" /etc/issue ; then + DISTNAME="Ubuntu" + DISTVERS=$( cat /etc/issue | awk '{ print $2 }' ) + fi + elif [ -f /etc/SuSE-release ]; then + DISTNAME="SuSE" + DISTVERS=$( cat /etc/SuSE-release | grep VERSION | awk '{ print $3 }' ) + # Mandrake test before RedHat, Mandrake has a redhat-release + # file also which is a symbolic link to mandrake-release. + elif [ -f /etc/mandrake-release ]; then + DISTNAME="Mandrake" + # Format: Linux Mandrake release 8.0 (Cooker) for i586 + DISTVERS=$( cat /etc/mandrake-release | awk '{ print $4 }' ) + elif [ -f /etc/redhat-release ]; then + DISTNAME="RedHat" + if grep -q e-smith /etc/redhat-release ; then + DISTVERS=$( cat /etc/redhat-release | awk '{ print $13 }' | tr -d \) ) + else + DISTVERS=$( cat /etc/redhat-release | awk '{ print $5 }' ) + fi + elif [ -f /etc/gentoo-release ]; then + DISTNAME="Gentoo" + DISTVERS=$( cat /etc/gentoo-release | awk '{ print $5 }' ) + else + DISTNAME="Unknown" + fi +elif [ "$OSTYPE" = "FreeBSD" ]; then + DISTNAME="FreeBSD" + DISTVERS=$(uname -r) + PW="pw " +elif [ "$OSTYPE" = "NetBSD" ]; then + DISTNAME="NetBSD" + DISTVERS=$(uname -r) +elif [ "$OSTYPE" = "OpenBSD" ]; then + DISTNAME="OpenBSD" + DISTVERS=$(uname -r) +elif [ "$OSTYPE" = "Darwin" ]; then + DISTNAME="Darwin" + DISTVERS=$(uname -r) +else + DISTNAME="Unknown" +fi +log "+" "Detected \"${OSTYPE}\" (${HOSTTYPE}) \"${DISTNAME}\" version \"${DISTVERS}\"" + + +# Basic checks. +if [ "$DISTNAME" = "Unknown" ]; then + cat << EOF + + Your are trying to install MBSE BBS on $OSTYPE system, however + the distribution is unknown. + +EOF + log "!" "Aborted, OS is $OSTYPE, distribution is unknown" + exit 2 +fi + +if [ $( whoami ) != "root" ]; then +cat << EOF +*** Run $0 as root only! *** + + Because some of the system files must be changed, you must be root + to use this script. + +*** SETUP aborted *** +EOF + log "!" "Aborted, not root" + exit 2 +fi + +if [ "$MBSE_ROOT" != "" ]; then + echo "*** The MBSE_ROOT variable exists: $MBSE_ROOT ***" + echo "*** SETUP aborted ***" + log "!" "Aborted, MBSE_ROOT variable exists: ${MBSE_ROOT}" + exit 2 +fi + +if grep -q ^mbse: /etc/passwd ; then + echo "*** User 'mbse' already exists on this system ***" + echo "*** SETUP aborted ***" + log "!" "Aborted, user 'mbse' already exists on this system" + exit 2 +fi + +if grep -q ^bbs: /etc/group ; then + echo "*** Group 'bbs' already exists on this system ***" + echo "*** SETUP aborted ***" + log "!" "Aborted, group 'bbs' already exists on this system" + exit 2 +fi + +if [ -f /etc/passwd.lock ]; then + echo "*** The password file is locked, make sure that nobody" + echo " is using any password utilities. ***" + echo "*** SETUP aborted ***" + log "!" "Aborted, password file is locked" + exit 2 +fi + +# +# Check if this is Ubuntu. Ubuntu by default has no xinetd installed. +# +if [ "$DISTNAME" = "Ubuntu" ]; then + if [ ! -f /etc/xinetd.d/echo ]; then + echo "*** You seem to be using Ubuntu but have not yet installed xinetd." + echo " 'sudo apt-get install xinetd' will install that for you. ***" + echo "*** SETUP aborted ***" + log "!" "Aborted, Ubuntu without xinetd package" + exit 2 + fi +fi + +clear + +if [ "$OSTYPE" = "Linux" ]; then + if [ -d /opt ]; then + log "+" "Directory /opt already present" + else + mkdir /opt + log "+" "Directory /opt created" + echo "Directory /opt created." + fi +fi + +if [ "$OSTYPE" = "FreeBSD" ] || [ "$OSTYPE" = "NetBSD" ] || [ "$OSTYPE" = "OpenBSD" ] || [ "$OSTYPE" = "Darwin" ]; then + # + # FreeBSD/NetBSD/OpenBSD/Darwin uses /usr/local for extra packages + # and doesn't use /opt. + # Also using /opt means that we are in the root partition which + # by default is very small. We put everything in /usr/local/opt + # and create symlinks to it. + # + if [ -d /opt ]; then + log "+" "Directory /opt already present" + else + if [ -d /usr/local/opt ]; then + log "+" "Directory /usr/local/opt already present" + else + mkdir -p /usr/local/opt + log "+" "Directory /usr/local/opt created" + echo "Directory /usr/local/opt created." + fi + ln -s /usr/local/opt /opt + log "+" "Link /opt to /usr/local/opt created" + echo "Link /opt to /usr/local/opt created." + fi +fi + + +cat << EOF + Basic checks done. + + The detected $OSTYPE distribution is $DISTNAME $DISTVERS + + Everything looks allright to start the installation now. + Next the script will install a new group 'bbs' and two new + users, 'mbse' which is the bbs system account, and 'bbs' which + is the login account for bbs users. This account will have no + password! The shell for this account is the main bbs program. + + One final important note: This script will make changes to some + of your system files. Because I don't have access to all kinds of + distributions and configurations there is no garantee that this + script is perfect. Please make sure you have a recent system backup. + Also make sure you have resque boot disks and know how to repair + your system. It might also be wise to login as root on another + virtual console incase something goes wrong with system login. + + Darwin (OS X) Users must install the .dmg image of user utils + available on Version Tracker and within this archive prior + to continuing the installation. + + If you are not sure, or forgot something, hit Control-C now or +EOF + +echo -n " press Enter to start the installation " +read junk +clear + +#------------------------------------------------------------------------ +# +# The real work starts here +# +log "+" "Starting installation" +echo "Installing MBSE BBS for the first time..." +echo "" +echo -n "Adding group 'bbs'" +$PW groupadd bbs +log "+" "[$?] Added group bbs" + +echo -n ", user 'mbse' $OSTYPE " +if [ "$OSTYPE" = "Linux" ]; then + # Different distros have different needs... + GRPS="uucp" + if grep -q ^wheel /etc/group ; then + GRPS=${GRPS}",wheel" + fi + if [ "$DISTNAME" = "Ubuntu" ]; then + GRPS=${GRPS}",adm,admin" + fi + if grep -q ^dialout /etc/group ; then + GRPS=${GRPS}",dialout" + fi + if grep -q ^dip /etc/group ; then + GRPS=${GRPS}",dip" + fi + log "+" "useradd -c \"MBSE BBS Admin\" -d $MHOME -g bbs -G $GRPS -m -s /bin/bash mbse" + useradd -c "MBSE BBS Admin" -d $MHOME -g bbs -G $GRPS -m -s /bin/bash mbse +elif [ "$OSTYPE" = "FreeBSD" ]; then + pw useradd mbse -c "MBSE BBS Admin" -d $MHOME -g bbs -G wheel,dialer -m -s /usr/local/bin/bash +elif [ "$OSTYPE" = "NetBSD" ]; then + useradd -c "MBSE BBS Admin" -d $MHOME -g bbs -G wheel,dialer -m -s /usr/pkg/bin/bash mbse +elif [ "$OSTYPE" = "OpenBSD" ]; then + useradd -c "MBSE BBS Admin" -d $MHOME -g bbs -G wheel,dialer -m -s /usr/local/bin/bash mbse +elif [ "$OSTYPE" = "Darwin" ]; then + useradd mbse -c "MBSE BBS Admin" -d $MHOME -g bbs -s /bin/bash +fi +log "+" "[$?] Added user mbse" +chmod 755 $MHOME +log "+" "[$?] chmod 755 $MHOME" + +echo -n " writing '$MHOME/.profile'" +cat << EOF >$MHOME/.profile +# profile for mbse +# +export PATH=\$HOME/bin:\$PATH +export MBSE_ROOT=\$HOME +export GOLDED=\$HOME/etc +# For xterm on the Gnome desktop: +cd \$HOME +# +export COLUMNS LINES +EOF +chown mbse $MHOME/.profile +chgrp bbs $MHOME/.profile +echo "" +log "+" "Created $MHOME/.profile" + +# On some systems there is a .bashrc file in the users homedir. +# It must be removed. +if [ -f $MHOME/.bashrc ] || [ -f $MHOME/.bash_profile ]; then + echo "Removing '$MHOME/.bash*'" + rm -f $MHOME/.bash* + log "+" "Removed $MHOME/.bash* files" +fi + +echo "" +echo "Now set the login password for user 'mbse'" +passwd mbse +log "+" "[$?] Password is set for user mbse" + + +echo -n "Adding user 'bbs'" +if [ ! -d $MHOME/home ]; then + mkdir $MHOME/home + log "+" "[$?] Created directory $MHOME/home" +fi +chown mbse $MHOME/home +log "+" "[$?] chown mbse $MHOME/home" +chgrp bbs $MHOME/home +log "+" "[$?] chgrp bbs $MHOME/home" +chmod 770 $MHOME/home +log "+" "[$?] chmod 770 $MHOME/home" +if [ "$OSTYPE" = "Linux" ]; then + useradd -c "MBSE BBS Login" -d $MHOME/home/bbs -g bbs -s $MHOME/bin/mbnewusr bbs + log "+" "[$?] Added user bbs" +fi +if [ "$OSTYPE" = "FreeBSD" ]; then + pw useradd bbs -c "MBSE BBS Login" -d $MHOME/home/bbs -g bbs -s $MHOME/bin/mbnewusr + log "+" "[$?] Added user bbs" +fi +if [ "$OSTYPE" = "NetBSD" ]; then + useradd -c "MBSE BBS Login" -d $MHOME/home/bbs -m -g bbs -s $MHOME/bin/mbnewusr bbs + log "+" "[$?] Added user bbs" +fi +if [ "$OSTYPE" = "OpenBSD" ]; then + useradd -c "MBSE BBS Login" -d $MHOME/home/bbs -m -g bbs -s $MHOME/bin/mbnewusr bbs + log "+" "[$?] Added user bbs" +fi +if [ "$OSTYPE" = "Darwin" ]; then + useradd bbs -c "MBSE BBS Login" -d $MHOME/home/bbs -g bbs -s $MHOME/bin/mbnewuser + log "+" "[$?] Added user bbs" +fi +# Some systems (RedHat and Mandrake) insist on creating a users homedir. +# NetBSD gives errormessages when not creating a homedir, so we let it create. +# These are full of garbage we don't need. Kill it first. +if [ -d $MHOME/home/bbs ]; then + rm -Rf $MHOME/home/bbs + log "+" "[$?] Removed $MHOME/home/bbs" +fi +mkdir -m 0770 $MHOME/home/bbs +log "+" "[$?] mkdir $MHOME/home/bbs" +chown mbse $MHOME/home/bbs +log "+" "[$?] chown mbse $MHOME/home/bbs" +chgrp bbs $MHOME/home/bbs +log "+" "[$?] chgrp bbs $MHOME/home/bbs" + +echo ", removing password:" +if [ "$OSTYPE" = "Linux" ]; then + echo -n "$$" >/etc/passwd.lock + if [ -f /etc/shadow ]; then + log "+" "Standard shadow password system" + # Not all systems are the same... + if grep -q ^bbs:\!\!: /etc/shadow ; then + sed /bbs:\!\!:/s/bbs:\!\!:/bbs::/ /etc/shadow >/etc/shadow.bbs + else + sed /bbs:\!:/s/bbs:\!:/bbs::/ /etc/shadow >/etc/shadow.bbs + fi + log "+" "[$?] removed password from user bbs" + mv /etc/shadow /etc/shadow.mbse + log "+" "[$?] made backup of /etc/shadow" + mv /etc/shadow.bbs /etc/shadow + log "+" "[$?] moved new /etc/shadow in place" + if [ "$DISTNAME" = "Debian" ] || [ "$DISTNAME" = "Ubuntu" ] || [ "$DISTNAME" = "SuSE" ]; then + # Debian, Ubuntu and SuSE use other ownership of /etc/shadow + chmod 640 /etc/shadow + chgrp shadow /etc/shadow + log "+" "[$?] Debian/Ubuntu/SuSE style owner of /etc/shadow (0640 root.shadow)" + else + chmod 600 /etc/shadow + log "+" "[$?] Default style owner of /etc/shadow (0600 root.root)" + fi + echo " File /etc/shadow.mbse is your backup of /etc/shadow" + else + log "+" "Not a shadow password system" + if grep -q ^bbs:\!\!: /etc/passwd ; then + sed /bbs:\!\!:/s/bbs:\!\!:/bbs::/ /etc/passwd >/etc/passwd.bbs + else + sed /bbs:\!:/s/bbs:\!:/bbs::/ /etc/passwd >/etc/passwd.bbs + fi + log "+" "[$?] Removed password of user bbs" + mv /etc/passwd /etc/passwd.mbse + log "+" "[$?] Made backup of /etc/passwd" + mv /etc/passwd.bbs /etc/passwd + log "+" "[$?] Moved new /etc/passwd in place" + chmod 644 /etc/passwd + log "+" "[$?] Changed owner of /etc/passwd" + echo " File /etc/passwd.mbse is your backup of /etc/passwd" + fi + rm /etc/passwd.lock +fi +if [ "$OSTYPE" = "NetBSD" ] || [ "$OSTYPE" = "OpenBSD" ] || [ "$OSTYPE" = "Darwin" ]; then +cat << EOF + +READ THIS CAREFULLY NOW READ THIS CAREFULLY NOW + +I don't know how to automatic remove the password for the "bbs" +user account in NetBSD/Darwin. You have to do this for me! +Next I start the editor you need to use, remove all the stars" +after the word Password, then save the file with "wq!" + +EOF + echo -n "Press Enter when ready " + read junk + chpass bbs +fi +if [ "$OSTYPE" = "FreeBSD" ]; then + # + # FreeBSD has a util to remove a password + # + chpass -p "" bbs + log "+" "[$?] Removed password of user bbs" +fi +echo "" + + +if grep -q ^binkp /etc/services ; then + BINKD=FALSE +else + BINKD=TRUE +fi +if grep -q 60179\/tcp /etc/services ; then + FIDO_TCP=FALSE +else + FIDO_TCP=TRUE +fi +if grep -q 60179\/udp /etc/services ; then + FIDO_UDP=FALSE +else + FIDO_UDP=TRUE +fi +if grep -q ^tfido /etc/services ; then + TFIDO=FALSE +else + TFIDO=TRUE +fi + +log "+" "Services: binkp=$BINKD fido_tcp=$FIDO_TCP fido_udp=$FIDO_UDP tfido=$TFIDO" + +if [ "$FIDO_TCP" = "TRUE" ] || [ "$FIDO_UDP" = "TRUE" ] || [ "$TFIDO" = "TRUE" ] || [ "$BINKD" = "TRUE" ]; then + echo -n "Modifying /etc/services" + log "+" "Modifying /etc/services" + mv /etc/services /etc/services.mbse + cat /etc/services.mbse >/etc/services + echo "#" >>/etc/services + echo "# Unofficial for MBSE BBS" >>/etc/services + echo "#" >>/etc/services + if [ "$BINKD" = "TRUE" ]; then + echo -n ", binkp at port 24554" + echo "binkp 24554/tcp # mbcico IBN mode">>/etc/services + fi + if [ "$TFIDO" = "TRUE" ]; then + echo -n ", tfido at port 60177" + echo "tfido 60177/tcp # mbcico ITN mode (alternate port)">>/etc/services + fi + if [ "$FIDO_TCP" = "TRUE" ]; then + echo -n ", fido tcp at port 60179" + echo "fido 60179/tcp # mbcico IFC mode">>/etc/services + fi + if [ "$FIDO_UDP" = "TRUE" ]; then + echo -n ", fido udp at port 60179" + echo "fido 60179/udp # Chatserver">>/etc/services + fi + chmod 644 /etc/services + echo ", done." +fi + + +if [ -f /etc/inetd.conf ]; then + log "+" "/etc/inetd.conf found, inetd system" + if ! grep -q mbcico /etc/inetd.conf ; then + echo -n "Modifying /etc/inetd.conf" + log "+" "Modifying /etc/inetd.conf" + mv /etc/inetd.conf /etc/inetd.conf.mbse + cat /etc/inetd.conf.mbse >/etc/inetd.conf +cat << EOF >>/etc/inetd.conf + +#:MBSE-BBS: bbs service +binkp stream tcp nowait mbse $MHOME/bin/mbcico mbcico -t ibn +fido stream tcp nowait mbse $MHOME/bin/mbcico mbcico -t ifc +tfido stream tcp nowait mbse $MHOME/bin/mbcico mbcico -t itn +# Example Linux telnet to the BBS +#telnet stream tcp nowait root /usr/sbin/tcpd in.telnetd -L $MHOME/bin/mblogin +# Example FreeBSD telnet to the BBS +#telnet stream tcp nowait root /usr/libexec/telnetd telnetd -p $MHOME/bin/mblogin +# Example OpenBSD telnet to the BBS +#telnet stream tcp nowait root /usr/libexec/tcpd telnetd -L $MHOME/bin/mblogin +# Example NetBSD telnet to the BBS +#telnet stream tcp nowait root /usr/libexec/telnetd telnetd -g mbsebbs + +EOF + chmod 644 /etc/inetd.conf + if [ -f /var/run/inetd.pid ]; then + echo -n ", restarting inetd" + kill -HUP $( cat /var/run/inetd.pid ) + log "+" "[$?] restarted inetd" + else + log "!" "Warning: no inetd.pid file found" + fi + echo ", done." + fi +fi + +if [ "$OSTYPE" = "NetBSD" ]; then + if [ -f /etc/gettytab ]; then + if ! grep mbsebbs /etc/gettytab ; then + log "+" "[$?] adding mbsebbs login to /etc/gettytab" +cat << EOF >>/etc/gettytab + +# +# Login entry for mbsebbs. +# +mbsebbs:cd:ck:np:lo=$MHOME/bin/mblogin:sp#38400: +EOF + fi + fi +fi + +if [ -f /etc/xinetd.conf ]; then + log "+" "/etc/xinetd.conf found, xinetd system" + if [ -d /etc/xinetd.d ]; then + log "+" "has xinetd.d subdir, writing files" + XINET="/etc/xinetd.d/mbsebbs" + else + log "+" "appending to xinetd.conf" + XINET="/etc/xinetd.conf" + fi +cat << EOF >> $XINET +#:MBSE BBS services are defined here. +# +# Author: Michiel Broek , 27-Sep-2004 + +service binkp +{ + socket_type = stream + protocol = tcp + wait = no + user = mbse + instances = 10 + server = $MHOME/bin/mbcico + server_args = -t ibn +} + +service fido +{ + socket_type = stream + protocol = tcp + wait = no + user = mbse + instances = 10 + server = $MHOME/bin/mbcico + server_args = -t ifc +} + +service tfido +{ + socket_type = stream + protocol = tcp + wait = no + user = mbse + instances = 10 + server = $MHOME/bin/mbcico + server_args = -t itn +} + +# Telnet to the bbs using mblogin, disabled by default. +# +service telnet +{ + disable = yes + protocol = tcp + instances = 10 + flags = REUSE + log_on_failure += USERID + socket_type = stream + user = root + server = /usr/sbin/telnetd + server_args = -L $MHOME/bin/mblogin + wait = no +} + +EOF + +fi + +# We made it, copy the logfile to mbse's homedir so that when the +# /tmp directory is cleaned, we still have it. +cat SETUP.log >> $MHOME/SETUP.log + +echo "" +echo -n "Press Enter to continue" +read junk +clear + +cat << EOF + The script made it to the end, that looks good. Before you logout do some + sanity checks; + + 1. Can you still login as a normal user. + + 2. Login on another virtual console, network or whatever as user 'mbse'. + Then type 'echo \$MBSE_ROOT'. Does this show the path to + '$MHOME' or nothing. + + 3. Login on another virtual console as user 'bbs'. It should not ask for + a password, but should direct try to start the bbs. This is not + installed yet but you should see error messages and then be logged out. + + If these three tests weren't successfull, restore /etc/passwd and + or /etc/shadow, the backup copies have the extension '.mbse'. + Then issue (as root of course) the following commands: + +EOF +if [ "$OSTYPE" = "Linux" ] || [ "$OSTYPE" = "NetBSD" ] || [ "$OSTYPE" = "OpenBSD" ]; then + if [ "$DISTNAME" = "Ubuntu" ]; then + echo " sudo userdel bbs" + echo " sudo userdel -r mbse" + echo " sudo groupdel bbs" + else + echo " userdel bbs" + echo " userdel -r mbse" + echo " groupdel bbs" + fi +fi +if [ "$OSTYPE" = "FreeBSD" ]; then + echo " pw userdel bbs -r" + echo " pw userdel mbse -r" + echo " pw groupdel bbs" +fi + diff --git a/TODO b/TODO new file mode 100644 index 00000000..909e0fb6 --- /dev/null +++ b/TODO @@ -0,0 +1,138 @@ +$Id: TODO,v 1.353 2008/11/29 13:59:33 mbse Exp $ + + MBSE BBS V0.95.5 TODO list. + --------------------------- + + These are a list of things that must be implemented one way or + another. Some things are urgent and necessary to operate the bbs + without human intervention, others are just for comfort, or nice. + I think this list will always contain items, I only hope the urgent + matters will be removed. + Note that most goodies are still in my mind instead of in this file. + Classes: U = Urgent. + N = Normal, second priority. + L = Cosmetic or nice to have. + W = Feature request. + X = Will not be done unless it's really needed. + +everything: + W: Implement IPv6. + + N: In BSO the i flavor should have been d flavor. + + N: Increase size of Unix usernames > 8. The limit on Slackware is 32 + characters, defined in utmp.h in UT_NAMESIZE + + L: Add personal message area. + + N: The ttyinfo.tty field is too short for NetBSD. + + W: Implement topic groups for file and message areas, with access level + control. + + W: Switch to MySQL as database backend. This can also solve some other + limitations. A php API should be added too. + +mbsebbs: + W: OLR, implement file requests. + + N: Only count posted messages in local mail areas. + + X: OLR: include private email area in download packets. See also global + wish for private mail areas. + + X: OLR: implement some global settings from the offline configuration. + + X: OLR: check qwke extensions. + + N: OLR: qwk, check netmail entered from reader, fido address missing? + + W: Implement kermit protocol, external versions don't work right. + + +mbfido: + N: Don't log an error if no file_id.diz is found. + + W: Check all .flo files for dead attachments. + + W: Check all .flo files for to old attachments. + + W: Count posted messages during mailscan. + + W: Code cleanup and make a structure in this program. Remove duplicate + or similar functions. + + N: Process GoldED filerequest netmails with the filereq flag set, we + should create a .req file with the contents of the subject line. + + N: Process To: and Cc: lines in messages gated from Fido to Internet. + + N: Investigate a method to scan and filter messages using the gateway. + + W: Add macro's for stats of all months. + + W: Implement file requests for directory nodes. + + W: Add %from command to areamgr/filemgr. + + W: Add netmail notification of changed areas. + + W: Make it possible to only virus scan the complete archives. + + W: Let mbfido areas with a special switch update area descriptions. + + W: Send rulefile via netmail for each new connected mail area. + + W: Send notifications to downlinks about changed areas from uplink. + + W: Add statistic mail messages. Via AMC?? + + N: After readalias we need to free the alias list when mbfido ends. + + N: Hatch statistics are not updated. + + W: Copy personal mail to a personal message area. + + W: Someday make retoss from bad possible (volonteers?). + + W: AreaMgr %rescan should auto connect disconnected areas. + +mbcico: + L: Implement binkp option ND and NDA. + +mbnntp: + N: fetched mail doesn't get the status Rcvd if it was for the user. + + N: Do a better job for message linking by newsclients. This is a + problem because we use the message numbers and messages are + sometimes renumbered. This will make some clients try to fetch + the wrong messages because they cache the message id's. + + N: Lastread pointers are not updated. + + N: Investigate a method to scan and filter messages using the gateway. + +mbaff: + W: Rewrite filefind search algorithm. + +mbsetup: + U: Menu 7.x.4.1 password length too large? + + U: Add check for empty data files. + + N: Add a check for double areatag names. See MySQL plan. + + N: Use some sort of sorting for the system aka's and make sure the + main aka with zone's is listed first. Having zone's mixed gives + too high outbound stats and the outbound is scanned multiple times. + + N: Put ZMH fields in the network setup for each zone. Currently Z1-6. + See MySQL plan. + + W: Add global setup in menus 9.1 and 10.1 at least to change uplink + data. + + W: See if a check can be made in file groups setup for the areas file + format, if a filegate list is installed and the filegate switch + setting is wrong, a lot of wrong areas will be created. + diff --git a/UPGRADE b/UPGRADE new file mode 100644 index 00000000..a8d9facc --- /dev/null +++ b/UPGRADE @@ -0,0 +1,18 @@ + UPGRADE INSTRUCTIONS. + + +Read the file ChangeLog from the version you are currently running +until you reach the current version. With every version that needs +upgrade you will find the instructions there. Read them carefully +and perform all necessary steps. + +Read the file ChangeLog from the version you are currently running +until you reach the current version. With every version that needs +upgrade you will find the instructions there. Read them carefully +and perform all necessary steps. + +Yes, I wrote this twice, please do the same with the update +instructions. + + Michiel. + diff --git a/aclocal.m4 b/aclocal.m4 new file mode 100644 index 00000000..f8a5ee45 --- /dev/null +++ b/aclocal.m4 @@ -0,0 +1,149 @@ +dnl aclocal.m4 generated automatically by aclocal 1.4-p4 + +dnl Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +dnl This program is distributed in the hope that it will be useful, +dnl but WITHOUT ANY WARRANTY, to the extent permitted by law; without +dnl even the implied warranty of MERCHANTABILITY or FITNESS FOR A +dnl PARTICULAR PURPOSE. + +dnl aclocal.m4 generated automatically by aclocal 1.4 + +dnl Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +dnl This program is distributed in the hope that it will be useful, +dnl but WITHOUT ANY WARRANTY, to the extent permitted by law; without +dnl even the implied warranty of MERCHANTABILITY or FITNESS FOR A +dnl PARTICULAR PURPOSE. + +# Do all the work for Automake. This macro actually does too much -- +# some checks are only needed if your package does certain things. +# But this isn't really a big deal. + +# serial 1 + +dnl Usage: +dnl AM_INIT_AUTOMAKE(package,version, [no-define]) + +AC_DEFUN(AM_INIT_AUTOMAKE, +[AC_REQUIRE([AC_PROG_INSTALL]) +PACKAGE=[$1] +AC_SUBST(PACKAGE) +VERSION=[$2] +AC_SUBST(VERSION) +dnl test to see if srcdir already configured +if test "`cd $srcdir && pwd`" != "`pwd`" && test -f $srcdir/config.status; then + AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) +fi +ifelse([$3],, +AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package]) +AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])) +AC_REQUIRE([AM_SANITY_CHECK]) +AC_REQUIRE([AC_ARG_PROGRAM]) +dnl FIXME This is truly gross. +missing_dir=`cd $ac_aux_dir && pwd` +AM_MISSING_PROG(ACLOCAL, aclocal, $missing_dir) +AM_MISSING_PROG(AUTOCONF, autoconf, $missing_dir) +AM_MISSING_PROG(AUTOMAKE, automake, $missing_dir) +AM_MISSING_PROG(AUTOHEADER, autoheader, $missing_dir) +AM_MISSING_PROG(MAKEINFO, makeinfo, $missing_dir) +AC_REQUIRE([AC_PROG_MAKE_SET])]) + +# +# Check to make sure that the build environment is sane. +# + +AC_DEFUN(AM_SANITY_CHECK, +[AC_MSG_CHECKING([whether build environment is sane]) +# Just in case +sleep 1 +echo timestamp > conftestfile +# Do `set' in a subshell so we don't clobber the current shell's +# arguments. Must try -L first in case configure is actually a +# symlink; some systems play weird games with the mod time of symlinks +# (eg FreeBSD returns the mod time of the symlink's containing +# directory). +if ( + set X `ls -Lt $srcdir/configure conftestfile 2> /dev/null` + if test "[$]*" = "X"; then + # -L didn't work. + set X `ls -t $srcdir/configure conftestfile` + fi + if test "[$]*" != "X $srcdir/configure conftestfile" \ + && test "[$]*" != "X conftestfile $srcdir/configure"; then + + # If neither matched, then we have a broken ls. This can happen + # if, for instance, CONFIG_SHELL is bash and it inherits a + # broken ls alias from the environment. This has actually + # happened. Such a system could not be considered "sane". + AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken +alias in your environment]) + fi + + test "[$]2" = conftestfile + ) +then + # Ok. + : +else + AC_MSG_ERROR([newly created file is older than distributed files! +Check your system clock]) +fi +rm -f conftest* +AC_MSG_RESULT(yes)]) + +dnl AM_MISSING_PROG(NAME, PROGRAM, DIRECTORY) +dnl The program must properly implement --version. +AC_DEFUN(AM_MISSING_PROG, +[AC_MSG_CHECKING(for working $2) +# Run test in a subshell; some versions of sh will print an error if +# an executable is not found, even if stderr is redirected. +# Redirect stdin to placate older versions of autoconf. Sigh. +if ($2 --version) < /dev/null > /dev/null 2>&1; then + $1=$2 + AC_MSG_RESULT(found) +else + $1="$3/missing $2" + AC_MSG_RESULT(missing) +fi +AC_SUBST($1)]) + +# Like AC_CONFIG_HEADER, but automatically create stamp file. + +AC_DEFUN(AM_CONFIG_HEADER, +[AC_PREREQ([2.12]) +AC_CONFIG_HEADER([$1]) +dnl When config.status generates a header, we must update the stamp-h file. +dnl This file resides in the same directory as the config header +dnl that is generated. We must strip everything past the first ":", +dnl and everything past the last "/". +AC_OUTPUT_COMMANDS(changequote(<<,>>)dnl +ifelse(patsubst(<<$1>>, <<[^ ]>>, <<>>), <<>>, +<>CONFIG_HEADERS" || echo timestamp > patsubst(<<$1>>, <<^\([^:]*/\)?.*>>, <<\1>>)stamp-h<<>>dnl>>, +<>; do + case " <<$>>CONFIG_HEADERS " in + *" <<$>>am_file "*<<)>> + echo timestamp > `echo <<$>>am_file | sed -e 's%:.*%%' -e 's%[^/]*$%%'`stamp-h$am_indx + ;; + esac + am_indx=`expr "<<$>>am_indx" + 1` +done<<>>dnl>>) +changequote([,]))]) + + +dnl AM_PROG_LEX +dnl Look for flex, lex or missing, then run AC_PROG_LEX and AC_DECL_YYTEXT +AC_DEFUN(AM_PROG_LEX, +[missing_dir=ifelse([$1],,`cd $ac_aux_dir && pwd`,$1) +AC_CHECK_PROGS(LEX, flex lex, "$missing_dir/missing flex") +AC_PROG_LEX +AC_DECL_YYTEXT]) + + diff --git a/checkbasic b/checkbasic new file mode 100755 index 00000000..7174d760 --- /dev/null +++ b/checkbasic @@ -0,0 +1,50 @@ +#!/bin/sh +# +# $Id: checkbasic,v 1.3 2006/07/02 11:07:36 mbse Exp $ +# +# checkbasic - A script for mbse bbs that checks if your +# installation is correct. If it is then +# normal installation is allowed. If it is +# pristine, basic installation must be done. +# If it bad or incomplete installed it will +# give an errormessage. + +if [ "`grep mbse: /etc/passwd`" != "" ]; then + if [ "`grep bbs: /etc/group`" != "" ]; then + if [ -n "$MBSE_ROOT" ]; then + if [ "$LOGNAME" = "root" ]; then + # + # Newer su versions change logname when su to root without + # environment change. Try to fix LOGNAME variable. + # + export LOGNAME="`who am i | awk -F ' ' '{ print $1 }'`" + fi + if [ "$LOGNAME" = "mbse" ]; then + # + # Looks good, normal mbse user and environment is set. + # Exit with errorcode 0 + echo "Hm, looks good..." + exit 0 + else + echo "*** You are not logged in as user 'mbse' ***" + exit 1 + fi + else + echo "*** MBSE_ROOT environment is not set or you are not 'mbse' ***" + if [ "$LOGNAME" = "root" ]; then + echo "*** You seem to be root, did you use 'su -' instead of 'su' ***" + fi + exit 1 + fi + else + echo "*** Group 'bbs' is missing on your system ***" + exit 1 + fi +else + echo "*** User 'mbse' is missing on your system ***" + echo " It looks like you need to do a basic install." + echo " Make sure you are root and type ./SETUP.sh and" + echo " read the file INSTALL for instructions." +fi +exit 1 + diff --git a/configure b/configure new file mode 100755 index 00000000..1c126f06 --- /dev/null +++ b/configure @@ -0,0 +1,11607 @@ +#! /bin/sh +# Guess values for system-dependent variables and create Makefiles. +# Generated by GNU Autoconf 2.61. +# +# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, +# 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. +# This configure script is free software; the Free Software Foundation +# gives unlimited permission to copy, distribute and modify it. +## --------------------- ## +## M4sh Initialization. ## +## --------------------- ## + +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in + *posix*) set -o posix ;; +esac + +fi + + + + +# PATH needs CR +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + echo "#! /bin/sh" >conf$$.sh + echo "exit 0" >>conf$$.sh + chmod +x conf$$.sh + if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then + PATH_SEPARATOR=';' + else + PATH_SEPARATOR=: + fi + rm -f conf$$.sh +fi + +# Support unset when possible. +if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then + as_unset=unset +else + as_unset=false +fi + + +# IFS +# We need space, tab and new line, in precisely that order. Quoting is +# there to prevent editors from complaining about space-tab. +# (If _AS_PATH_WALK were called with IFS unset, it would disable word +# splitting by setting IFS to empty value.) +as_nl=' +' +IFS=" "" $as_nl" + +# Find who we are. Look in the path if we contain no directory separator. +case $0 in + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break +done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as `sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + { (exit 1); exit 1; } +fi + +# Work around bugs in pre-3.0 UWIN ksh. +for as_var in ENV MAIL MAILPATH +do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var +done +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +for as_var in \ + LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ + LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ + LC_TELEPHONE LC_TIME +do + if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then + eval $as_var=C; export $as_var + else + ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var + fi +done + +# Required to use basename. +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + + +# Name of the executable. +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# CDPATH. +$as_unset CDPATH + + +if test "x$CONFIG_SHELL" = x; then + if (eval ":") 2>/dev/null; then + as_have_required=yes +else + as_have_required=no +fi + + if test $as_have_required = yes && (eval ": +(as_func_return () { + (exit \$1) +} +as_func_success () { + as_func_return 0 +} +as_func_failure () { + as_func_return 1 +} +as_func_ret_success () { + return 0 +} +as_func_ret_failure () { + return 1 +} + +exitcode=0 +if as_func_success; then + : +else + exitcode=1 + echo as_func_success failed. +fi + +if as_func_failure; then + exitcode=1 + echo as_func_failure succeeded. +fi + +if as_func_ret_success; then + : +else + exitcode=1 + echo as_func_ret_success failed. +fi + +if as_func_ret_failure; then + exitcode=1 + echo as_func_ret_failure succeeded. +fi + +if ( set x; as_func_ret_success y && test x = \"\$1\" ); then + : +else + exitcode=1 + echo positional parameters were not saved. +fi + +test \$exitcode = 0) || { (exit 1); exit 1; } + +( + as_lineno_1=\$LINENO + as_lineno_2=\$LINENO + test \"x\$as_lineno_1\" != \"x\$as_lineno_2\" && + test \"x\`expr \$as_lineno_1 + 1\`\" = \"x\$as_lineno_2\") || { (exit 1); exit 1; } +") 2> /dev/null; then + : +else + as_candidate_shells= + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + case $as_dir in + /*) + for as_base in sh bash ksh sh5; do + as_candidate_shells="$as_candidate_shells $as_dir/$as_base" + done;; + esac +done +IFS=$as_save_IFS + + + for as_shell in $as_candidate_shells $SHELL; do + # Try only shells that exist, to save several forks. + if { test -f "$as_shell" || test -f "$as_shell.exe"; } && + { ("$as_shell") 2> /dev/null <<\_ASEOF +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in + *posix*) set -o posix ;; +esac + +fi + + +: +_ASEOF +}; then + CONFIG_SHELL=$as_shell + as_have_required=yes + if { "$as_shell" 2> /dev/null <<\_ASEOF +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in + *posix*) set -o posix ;; +esac + +fi + + +: +(as_func_return () { + (exit $1) +} +as_func_success () { + as_func_return 0 +} +as_func_failure () { + as_func_return 1 +} +as_func_ret_success () { + return 0 +} +as_func_ret_failure () { + return 1 +} + +exitcode=0 +if as_func_success; then + : +else + exitcode=1 + echo as_func_success failed. +fi + +if as_func_failure; then + exitcode=1 + echo as_func_failure succeeded. +fi + +if as_func_ret_success; then + : +else + exitcode=1 + echo as_func_ret_success failed. +fi + +if as_func_ret_failure; then + exitcode=1 + echo as_func_ret_failure succeeded. +fi + +if ( set x; as_func_ret_success y && test x = "$1" ); then + : +else + exitcode=1 + echo positional parameters were not saved. +fi + +test $exitcode = 0) || { (exit 1); exit 1; } + +( + as_lineno_1=$LINENO + as_lineno_2=$LINENO + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2") || { (exit 1); exit 1; } + +_ASEOF +}; then + break +fi + +fi + + done + + if test "x$CONFIG_SHELL" != x; then + for as_var in BASH_ENV ENV + do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var + done + export CONFIG_SHELL + exec "$CONFIG_SHELL" "$as_myself" ${1+"$@"} +fi + + + if test $as_have_required = no; then + echo This script requires a shell more modern than all the + echo shells that I found on your system. Please install a + echo modern shell, or manually run the script under such a + echo shell if you do have one. + { (exit 1); exit 1; } +fi + + +fi + +fi + + + +(eval "as_func_return () { + (exit \$1) +} +as_func_success () { + as_func_return 0 +} +as_func_failure () { + as_func_return 1 +} +as_func_ret_success () { + return 0 +} +as_func_ret_failure () { + return 1 +} + +exitcode=0 +if as_func_success; then + : +else + exitcode=1 + echo as_func_success failed. +fi + +if as_func_failure; then + exitcode=1 + echo as_func_failure succeeded. +fi + +if as_func_ret_success; then + : +else + exitcode=1 + echo as_func_ret_success failed. +fi + +if as_func_ret_failure; then + exitcode=1 + echo as_func_ret_failure succeeded. +fi + +if ( set x; as_func_ret_success y && test x = \"\$1\" ); then + : +else + exitcode=1 + echo positional parameters were not saved. +fi + +test \$exitcode = 0") || { + echo No shell found that supports shell functions. + echo Please tell autoconf@gnu.org about your system, + echo including any error possibly output before this + echo message +} + + + + as_lineno_1=$LINENO + as_lineno_2=$LINENO + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || { + + # Create $as_me.lineno as a copy of $as_myself, but with $LINENO + # uniformly replaced by the line number. The first 'sed' inserts a + # line-number line after each line using $LINENO; the second 'sed' + # does the real work. The second script uses 'N' to pair each + # line-number line with the line containing $LINENO, and appends + # trailing '-' during substitution so that $LINENO is not a special + # case at line end. + # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the + # scripts with optimization help from Paolo Bonzini. Blame Lee + # E. McMahon (1931-1989) for sed's syntax. :-) + sed -n ' + p + /[$]LINENO/= + ' <$as_myself | + sed ' + s/[$]LINENO.*/&-/ + t lineno + b + :lineno + N + :loop + s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ + t loop + s/-\n.*// + ' >$as_me.lineno && + chmod +x "$as_me.lineno" || + { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 + { (exit 1); exit 1; }; } + + # Don't try to exec as it changes $[0], causing all sort of problems + # (the dirname of $[0] is not the place where we might find the + # original and so on. Autoconf is especially sensitive to this). + . "./$as_me.lineno" + # Exit status is that of the last command. + exit +} + + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in +-n*) + case `echo 'x\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + *) ECHO_C='\c';; + esac;; +*) + ECHO_N='-n';; +esac + +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir +fi +echo >conf$$.file +if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -p'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -p' +elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln +else + as_ln_s='cp -p' +fi +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null + +if mkdir -p . 2>/dev/null; then + as_mkdir_p=: +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + +if test -x / >/dev/null 2>&1; then + as_test_x='test -x' +else + if ls -dL / >/dev/null 2>&1; then + as_ls_L_option=L + else + as_ls_L_option= + fi + as_test_x=' + eval sh -c '\'' + if test -d "$1"; then + test -d "$1/."; + else + case $1 in + -*)set "./$1";; + esac; + case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in + ???[sx]*):;;*)false;;esac;fi + '\'' sh + ' +fi +as_executable_p=$as_test_x + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + + + +exec 7<&0 &1 + +# Name of the host. +# hostname on some systems (SVR3.2, Linux) returns a bogus exit status, +# so uname gets run too. +ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` + +# +# Initializations. +# +ac_default_prefix=/usr/local +ac_clean_files= +ac_config_libobj_dir=. +LIBOBJS= +cross_compiling=no +subdirs= +MFLAGS= +MAKEFLAGS= +SHELL=${CONFIG_SHELL-/bin/sh} + +# Identity of this package. +PACKAGE_NAME= +PACKAGE_TARNAME= +PACKAGE_VERSION= +PACKAGE_STRING= +PACKAGE_BUGREPORT= + +ac_unique_file="lib/mbselib.h" +ac_default_prefix=/opt/mbse +# Factoring default headers for most tests. +ac_includes_default="\ +#include +#ifdef HAVE_SYS_TYPES_H +# include +#endif +#ifdef HAVE_SYS_STAT_H +# include +#endif +#ifdef STDC_HEADERS +# include +# include +#else +# ifdef HAVE_STDLIB_H +# include +# endif +#endif +#ifdef HAVE_STRING_H +# if !defined STDC_HEADERS && defined HAVE_MEMORY_H +# include +# endif +# include +#endif +#ifdef HAVE_STRINGS_H +# include +#endif +#ifdef HAVE_INTTYPES_H +# include +#endif +#ifdef HAVE_STDINT_H +# include +#endif +#ifdef HAVE_UNISTD_H +# include +#endif" + +ac_header_list= +ac_subst_vars='SHELL +PATH_SEPARATOR +PACKAGE_NAME +PACKAGE_TARNAME +PACKAGE_VERSION +PACKAGE_STRING +PACKAGE_BUGREPORT +exec_prefix +prefix +program_transform_name +bindir +sbindir +libexecdir +datarootdir +datadir +sysconfdir +sharedstatedir +localstatedir +includedir +oldincludedir +docdir +infodir +htmldir +dvidir +pdfdir +psdir +libdir +localedir +mandir +DEFS +ECHO_C +ECHO_N +ECHO_T +LIBS +build_alias +host_alias +target_alias +SUBDIRS +PACKAGE +MAJOR +MINOR +REVISION +COPYRIGHT +GROUP +OWNER +ROWNER +RGROUP +VERSION +MAKE +AWK +INSTALL +CC +CFLAGS +LDFLAGS +CPPFLAGS +ac_ct_CC +EXEEXT +OBJEXT +SET_MAKE +RANLIB +LN_S +TAR +ZIP +CHOWN +CPP +GREP +EGREP +LIBOBJS +COMPRESS +GZIP +ARC +NOMARCH +ARJ +UNARJ +LHA +RAR +UNRAR +UNZIP +ZOO +HA +ANTIVIR +FPROT +UVSCAN +CLAMAV +RB +SB +RZ +SZ +GOLDEDBIN +GOLDNODE +CONVERT +joebin +joelib +LTLIBOBJS' +ac_subst_files='' + ac_precious_vars='build_alias +host_alias +target_alias +CC +CFLAGS +LDFLAGS +LIBS +CPPFLAGS +CPP' + + +# Initialize some variables set by options. +ac_init_help= +ac_init_version=false +# The variables have the same names as the options, with +# dashes changed to underlines. +cache_file=/dev/null +exec_prefix=NONE +no_create= +no_recursion= +prefix=NONE +program_prefix=NONE +program_suffix=NONE +program_transform_name=s,x,x, +silent= +site= +srcdir= +verbose= +x_includes=NONE +x_libraries=NONE + +# Installation directory options. +# These are left unexpanded so users can "make install exec_prefix=/foo" +# and all the variables that are supposed to be based on exec_prefix +# by default will actually change. +# Use braces instead of parens because sh, perl, etc. also accept them. +# (The list follows the same order as the GNU Coding Standards.) +bindir='${exec_prefix}/bin' +sbindir='${exec_prefix}/sbin' +libexecdir='${exec_prefix}/libexec' +datarootdir='${prefix}/share' +datadir='${datarootdir}' +sysconfdir='${prefix}/etc' +sharedstatedir='${prefix}/com' +localstatedir='${prefix}/var' +includedir='${prefix}/include' +oldincludedir='/usr/include' +docdir='${datarootdir}/doc/${PACKAGE}' +infodir='${datarootdir}/info' +htmldir='${docdir}' +dvidir='${docdir}' +pdfdir='${docdir}' +psdir='${docdir}' +libdir='${exec_prefix}/lib' +localedir='${datarootdir}/locale' +mandir='${datarootdir}/man' + +ac_prev= +ac_dashdash= +for ac_option +do + # If the previous option needs an argument, assign it. + if test -n "$ac_prev"; then + eval $ac_prev=\$ac_option + ac_prev= + continue + fi + + case $ac_option in + *=*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; + *) ac_optarg=yes ;; + esac + + # Accept the important Cygnus configure options, so we can diagnose typos. + + case $ac_dashdash$ac_option in + --) + ac_dashdash=yes ;; + + -bindir | --bindir | --bindi | --bind | --bin | --bi) + ac_prev=bindir ;; + -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) + bindir=$ac_optarg ;; + + -build | --build | --buil | --bui | --bu) + ac_prev=build_alias ;; + -build=* | --build=* | --buil=* | --bui=* | --bu=*) + build_alias=$ac_optarg ;; + + -cache-file | --cache-file | --cache-fil | --cache-fi \ + | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) + ac_prev=cache_file ;; + -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ + | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) + cache_file=$ac_optarg ;; + + --config-cache | -C) + cache_file=config.cache ;; + + -datadir | --datadir | --datadi | --datad) + ac_prev=datadir ;; + -datadir=* | --datadir=* | --datadi=* | --datad=*) + datadir=$ac_optarg ;; + + -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ + | --dataroo | --dataro | --datar) + ac_prev=datarootdir ;; + -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ + | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) + datarootdir=$ac_optarg ;; + + -disable-* | --disable-*) + ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_feature" : ".*[^-._$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid feature name: $ac_feature" >&2 + { (exit 1); exit 1; }; } + ac_feature=`echo $ac_feature | sed 's/[-.]/_/g'` + eval enable_$ac_feature=no ;; + + -docdir | --docdir | --docdi | --doc | --do) + ac_prev=docdir ;; + -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) + docdir=$ac_optarg ;; + + -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) + ac_prev=dvidir ;; + -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) + dvidir=$ac_optarg ;; + + -enable-* | --enable-*) + ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_feature" : ".*[^-._$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid feature name: $ac_feature" >&2 + { (exit 1); exit 1; }; } + ac_feature=`echo $ac_feature | sed 's/[-.]/_/g'` + eval enable_$ac_feature=\$ac_optarg ;; + + -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ + | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ + | --exec | --exe | --ex) + ac_prev=exec_prefix ;; + -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ + | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ + | --exec=* | --exe=* | --ex=*) + exec_prefix=$ac_optarg ;; + + -gas | --gas | --ga | --g) + # Obsolete; use --with-gas. + with_gas=yes ;; + + -help | --help | --hel | --he | -h) + ac_init_help=long ;; + -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) + ac_init_help=recursive ;; + -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) + ac_init_help=short ;; + + -host | --host | --hos | --ho) + ac_prev=host_alias ;; + -host=* | --host=* | --hos=* | --ho=*) + host_alias=$ac_optarg ;; + + -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) + ac_prev=htmldir ;; + -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ + | --ht=*) + htmldir=$ac_optarg ;; + + -includedir | --includedir | --includedi | --included | --include \ + | --includ | --inclu | --incl | --inc) + ac_prev=includedir ;; + -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ + | --includ=* | --inclu=* | --incl=* | --inc=*) + includedir=$ac_optarg ;; + + -infodir | --infodir | --infodi | --infod | --info | --inf) + ac_prev=infodir ;; + -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) + infodir=$ac_optarg ;; + + -libdir | --libdir | --libdi | --libd) + ac_prev=libdir ;; + -libdir=* | --libdir=* | --libdi=* | --libd=*) + libdir=$ac_optarg ;; + + -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ + | --libexe | --libex | --libe) + ac_prev=libexecdir ;; + -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ + | --libexe=* | --libex=* | --libe=*) + libexecdir=$ac_optarg ;; + + -localedir | --localedir | --localedi | --localed | --locale) + ac_prev=localedir ;; + -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) + localedir=$ac_optarg ;; + + -localstatedir | --localstatedir | --localstatedi | --localstated \ + | --localstate | --localstat | --localsta | --localst | --locals) + ac_prev=localstatedir ;; + -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ + | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) + localstatedir=$ac_optarg ;; + + -mandir | --mandir | --mandi | --mand | --man | --ma | --m) + ac_prev=mandir ;; + -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) + mandir=$ac_optarg ;; + + -nfp | --nfp | --nf) + # Obsolete; use --without-fp. + with_fp=no ;; + + -no-create | --no-create | --no-creat | --no-crea | --no-cre \ + | --no-cr | --no-c | -n) + no_create=yes ;; + + -no-recursion | --no-recursion | --no-recursio | --no-recursi \ + | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) + no_recursion=yes ;; + + -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ + | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ + | --oldin | --oldi | --old | --ol | --o) + ac_prev=oldincludedir ;; + -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ + | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ + | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) + oldincludedir=$ac_optarg ;; + + -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) + ac_prev=prefix ;; + -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) + prefix=$ac_optarg ;; + + -program-prefix | --program-prefix | --program-prefi | --program-pref \ + | --program-pre | --program-pr | --program-p) + ac_prev=program_prefix ;; + -program-prefix=* | --program-prefix=* | --program-prefi=* \ + | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) + program_prefix=$ac_optarg ;; + + -program-suffix | --program-suffix | --program-suffi | --program-suff \ + | --program-suf | --program-su | --program-s) + ac_prev=program_suffix ;; + -program-suffix=* | --program-suffix=* | --program-suffi=* \ + | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) + program_suffix=$ac_optarg ;; + + -program-transform-name | --program-transform-name \ + | --program-transform-nam | --program-transform-na \ + | --program-transform-n | --program-transform- \ + | --program-transform | --program-transfor \ + | --program-transfo | --program-transf \ + | --program-trans | --program-tran \ + | --progr-tra | --program-tr | --program-t) + ac_prev=program_transform_name ;; + -program-transform-name=* | --program-transform-name=* \ + | --program-transform-nam=* | --program-transform-na=* \ + | --program-transform-n=* | --program-transform-=* \ + | --program-transform=* | --program-transfor=* \ + | --program-transfo=* | --program-transf=* \ + | --program-trans=* | --program-tran=* \ + | --progr-tra=* | --program-tr=* | --program-t=*) + program_transform_name=$ac_optarg ;; + + -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) + ac_prev=pdfdir ;; + -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) + pdfdir=$ac_optarg ;; + + -psdir | --psdir | --psdi | --psd | --ps) + ac_prev=psdir ;; + -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) + psdir=$ac_optarg ;; + + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + silent=yes ;; + + -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) + ac_prev=sbindir ;; + -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ + | --sbi=* | --sb=*) + sbindir=$ac_optarg ;; + + -sharedstatedir | --sharedstatedir | --sharedstatedi \ + | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ + | --sharedst | --shareds | --shared | --share | --shar \ + | --sha | --sh) + ac_prev=sharedstatedir ;; + -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ + | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ + | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ + | --sha=* | --sh=*) + sharedstatedir=$ac_optarg ;; + + -site | --site | --sit) + ac_prev=site ;; + -site=* | --site=* | --sit=*) + site=$ac_optarg ;; + + -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) + ac_prev=srcdir ;; + -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) + srcdir=$ac_optarg ;; + + -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ + | --syscon | --sysco | --sysc | --sys | --sy) + ac_prev=sysconfdir ;; + -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ + | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) + sysconfdir=$ac_optarg ;; + + -target | --target | --targe | --targ | --tar | --ta | --t) + ac_prev=target_alias ;; + -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) + target_alias=$ac_optarg ;; + + -v | -verbose | --verbose | --verbos | --verbo | --verb) + verbose=yes ;; + + -version | --version | --versio | --versi | --vers | -V) + ac_init_version=: ;; + + -with-* | --with-*) + ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_package" : ".*[^-._$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid package name: $ac_package" >&2 + { (exit 1); exit 1; }; } + ac_package=`echo $ac_package | sed 's/[-.]/_/g'` + eval with_$ac_package=\$ac_optarg ;; + + -without-* | --without-*) + ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_package" : ".*[^-._$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid package name: $ac_package" >&2 + { (exit 1); exit 1; }; } + ac_package=`echo $ac_package | sed 's/[-.]/_/g'` + eval with_$ac_package=no ;; + + --x) + # Obsolete; use --with-x. + with_x=yes ;; + + -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ + | --x-incl | --x-inc | --x-in | --x-i) + ac_prev=x_includes ;; + -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ + | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) + x_includes=$ac_optarg ;; + + -x-libraries | --x-libraries | --x-librarie | --x-librari \ + | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) + ac_prev=x_libraries ;; + -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ + | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) + x_libraries=$ac_optarg ;; + + -*) { echo "$as_me: error: unrecognized option: $ac_option +Try \`$0 --help' for more information." >&2 + { (exit 1); exit 1; }; } + ;; + + *=*) + ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` + # Reject names that are not valid shell variable names. + expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid variable name: $ac_envvar" >&2 + { (exit 1); exit 1; }; } + eval $ac_envvar=\$ac_optarg + export $ac_envvar ;; + + *) + # FIXME: should be removed in autoconf 3.0. + echo "$as_me: WARNING: you should use --build, --host, --target" >&2 + expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && + echo "$as_me: WARNING: invalid host type: $ac_option" >&2 + : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option} + ;; + + esac +done + +if test -n "$ac_prev"; then + ac_option=--`echo $ac_prev | sed 's/_/-/g'` + { echo "$as_me: error: missing argument to $ac_option" >&2 + { (exit 1); exit 1; }; } +fi + +# Be sure to have absolute directory names. +for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ + datadir sysconfdir sharedstatedir localstatedir includedir \ + oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ + libdir localedir mandir +do + eval ac_val=\$$ac_var + case $ac_val in + [\\/$]* | ?:[\\/]* ) continue;; + NONE | '' ) case $ac_var in *prefix ) continue;; esac;; + esac + { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 + { (exit 1); exit 1; }; } +done + +# There might be people who depend on the old broken behavior: `$host' +# used to hold the argument of --host etc. +# FIXME: To remove some day. +build=$build_alias +host=$host_alias +target=$target_alias + +# FIXME: To remove some day. +if test "x$host_alias" != x; then + if test "x$build_alias" = x; then + cross_compiling=maybe + echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host. + If a cross compiler is detected then cross compile mode will be used." >&2 + elif test "x$build_alias" != "x$host_alias"; then + cross_compiling=yes + fi +fi + +ac_tool_prefix= +test -n "$host_alias" && ac_tool_prefix=$host_alias- + +test "$silent" = yes && exec 6>/dev/null + + +ac_pwd=`pwd` && test -n "$ac_pwd" && +ac_ls_di=`ls -di .` && +ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || + { echo "$as_me: error: Working directory cannot be determined" >&2 + { (exit 1); exit 1; }; } +test "X$ac_ls_di" = "X$ac_pwd_ls_di" || + { echo "$as_me: error: pwd does not report name of working directory" >&2 + { (exit 1); exit 1; }; } + + +# Find the source files, if location was not specified. +if test -z "$srcdir"; then + ac_srcdir_defaulted=yes + # Try the directory containing this script, then the parent directory. + ac_confdir=`$as_dirname -- "$0" || +$as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$0" : 'X\(//\)[^/]' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +echo X"$0" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + srcdir=$ac_confdir + if test ! -r "$srcdir/$ac_unique_file"; then + srcdir=.. + fi +else + ac_srcdir_defaulted=no +fi +if test ! -r "$srcdir/$ac_unique_file"; then + test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." + { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2 + { (exit 1); exit 1; }; } +fi +ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" +ac_abs_confdir=`( + cd "$srcdir" && test -r "./$ac_unique_file" || { echo "$as_me: error: $ac_msg" >&2 + { (exit 1); exit 1; }; } + pwd)` +# When building in place, set srcdir=. +if test "$ac_abs_confdir" = "$ac_pwd"; then + srcdir=. +fi +# Remove unnecessary trailing slashes from srcdir. +# Double slashes in file names in object file debugging info +# mess up M-x gdb in Emacs. +case $srcdir in +*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; +esac +for ac_var in $ac_precious_vars; do + eval ac_env_${ac_var}_set=\${${ac_var}+set} + eval ac_env_${ac_var}_value=\$${ac_var} + eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} + eval ac_cv_env_${ac_var}_value=\$${ac_var} +done + +# +# Report the --help message. +# +if test "$ac_init_help" = "long"; then + # Omit some internal or obsolete options to make the list less imposing. + # This message is too long to be a string in the A/UX 3.1 sh. + cat <<_ACEOF +\`configure' configures this package to adapt to many kinds of systems. + +Usage: $0 [OPTION]... [VAR=VALUE]... + +To assign environment variables (e.g., CC, CFLAGS...), specify them as +VAR=VALUE. See below for descriptions of some of the useful variables. + +Defaults for the options are specified in brackets. + +Configuration: + -h, --help display this help and exit + --help=short display options specific to this package + --help=recursive display the short help of all the included packages + -V, --version display version information and exit + -q, --quiet, --silent do not print \`checking...' messages + --cache-file=FILE cache test results in FILE [disabled] + -C, --config-cache alias for \`--cache-file=config.cache' + -n, --no-create do not create output files + --srcdir=DIR find the sources in DIR [configure dir or \`..'] + +Installation directories: + --prefix=PREFIX install architecture-independent files in PREFIX + [$ac_default_prefix] + --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX + [PREFIX] + +By default, \`make install' will install all the files in +\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify +an installation prefix other than \`$ac_default_prefix' using \`--prefix', +for instance \`--prefix=\$HOME'. + +For better control, use the options below. + +Fine tuning of the installation directories: + --bindir=DIR user executables [EPREFIX/bin] + --sbindir=DIR system admin executables [EPREFIX/sbin] + --libexecdir=DIR program executables [EPREFIX/libexec] + --sysconfdir=DIR read-only single-machine data [PREFIX/etc] + --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] + --localstatedir=DIR modifiable single-machine data [PREFIX/var] + --libdir=DIR object code libraries [EPREFIX/lib] + --includedir=DIR C header files [PREFIX/include] + --oldincludedir=DIR C header files for non-gcc [/usr/include] + --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] + --datadir=DIR read-only architecture-independent data [DATAROOTDIR] + --infodir=DIR info documentation [DATAROOTDIR/info] + --localedir=DIR locale-dependent data [DATAROOTDIR/locale] + --mandir=DIR man documentation [DATAROOTDIR/man] + --docdir=DIR documentation root [DATAROOTDIR/doc/PACKAGE] + --htmldir=DIR html documentation [DOCDIR] + --dvidir=DIR dvi documentation [DOCDIR] + --pdfdir=DIR pdf documentation [DOCDIR] + --psdir=DIR ps documentation [DOCDIR] +_ACEOF + + cat <<\_ACEOF +_ACEOF +fi + +if test -n "$ac_init_help"; then + + cat <<\_ACEOF + +Optional Features: + --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) + --enable-FEATURE[=ARG] include FEATURE [ARG=yes] + --enable-experiment Compile experimental code + --enable-debugging Compile for debugging + --enable-optimize Enable CPU optimize + --enable-newsgate Compile with newsgate + --enable-gbkdel Delete key is 126 (default is 207) + +Some influential environment variables: + CC C compiler command + CFLAGS C compiler flags + LDFLAGS linker flags, e.g. -L if you have libraries in a + nonstandard directory + LIBS libraries to pass to the linker, e.g. -l + CPPFLAGS C/C++/Objective C preprocessor flags, e.g. -I if + you have headers in a nonstandard directory + CPP C preprocessor + +Use these variables to override the choices made by `configure' or to help +it to find libraries and programs with nonstandard names/locations. + +_ACEOF +ac_status=$? +fi + +if test "$ac_init_help" = "recursive"; then + # If there are subdirs, report their specific --help. + for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue + test -d "$ac_dir" || continue + ac_builddir=. + +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,/..,g;s,/,,'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix + +case $srcdir in + .) # We are building in place. + ac_srcdir=. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + cd "$ac_dir" || { ac_status=$?; continue; } + # Check for guested configure. + if test -f "$ac_srcdir/configure.gnu"; then + echo && + $SHELL "$ac_srcdir/configure.gnu" --help=recursive + elif test -f "$ac_srcdir/configure"; then + echo && + $SHELL "$ac_srcdir/configure" --help=recursive + else + echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 + fi || ac_status=$? + cd "$ac_pwd" || { ac_status=$?; break; } + done +fi + +test -n "$ac_init_help" && exit $ac_status +if $ac_init_version; then + cat <<\_ACEOF +configure +generated by GNU Autoconf 2.61 + +Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, +2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. +This configure script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it. +_ACEOF + exit +fi +cat >config.log <<_ACEOF +This file contains any messages produced by compilers while +running configure, to aid debugging if configure makes a mistake. + +It was created by $as_me, which was +generated by GNU Autoconf 2.61. Invocation command line was + + $ $0 $@ + +_ACEOF +exec 5>>config.log +{ +cat <<_ASUNAME +## --------- ## +## Platform. ## +## --------- ## + +hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` +uname -m = `(uname -m) 2>/dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` + +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` + +/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` +/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` +/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` +/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` + +_ASUNAME + +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + echo "PATH: $as_dir" +done +IFS=$as_save_IFS + +} >&5 + +cat >&5 <<_ACEOF + + +## ----------- ## +## Core tests. ## +## ----------- ## + +_ACEOF + + +# Keep a trace of the command line. +# Strip out --no-create and --no-recursion so they do not pile up. +# Strip out --silent because we don't want to record it for future runs. +# Also quote any args containing shell meta-characters. +# Make two passes to allow for proper duplicate-argument suppression. +ac_configure_args= +ac_configure_args0= +ac_configure_args1= +ac_must_keep_next=false +for ac_pass in 1 2 +do + for ac_arg + do + case $ac_arg in + -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + continue ;; + *\'*) + ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + case $ac_pass in + 1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;; + 2) + ac_configure_args1="$ac_configure_args1 '$ac_arg'" + if test $ac_must_keep_next = true; then + ac_must_keep_next=false # Got value, back to normal. + else + case $ac_arg in + *=* | --config-cache | -C | -disable-* | --disable-* \ + | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ + | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ + | -with-* | --with-* | -without-* | --without-* | --x) + case "$ac_configure_args0 " in + "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; + esac + ;; + -* ) ac_must_keep_next=true ;; + esac + fi + ac_configure_args="$ac_configure_args '$ac_arg'" + ;; + esac + done +done +$as_unset ac_configure_args0 || test "${ac_configure_args0+set}" != set || { ac_configure_args0=; export ac_configure_args0; } +$as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_configure_args1=; export ac_configure_args1; } + +# When interrupted or exit'd, cleanup temporary files, and complete +# config.log. We remove comments because anyway the quotes in there +# would cause problems or look ugly. +# WARNING: Use '\'' to represent an apostrophe within the trap. +# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. +trap 'exit_status=$? + # Save into config.log some information that might help in debugging. + { + echo + + cat <<\_ASBOX +## ---------------- ## +## Cache variables. ## +## ---------------- ## +_ASBOX + echo + # The following way of writing the cache mishandles newlines in values, +( + for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do + eval ac_val=\$$ac_var + case $ac_val in #( + *${as_nl}*) + case $ac_var in #( + *_cv_*) { echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5 +echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;; + esac + case $ac_var in #( + _ | IFS | as_nl) ;; #( + *) $as_unset $ac_var ;; + esac ;; + esac + done + (set) 2>&1 | + case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( + *${as_nl}ac_space=\ *) + sed -n \ + "s/'\''/'\''\\\\'\'''\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" + ;; #( + *) + sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" + ;; + esac | + sort +) + echo + + cat <<\_ASBOX +## ----------------- ## +## Output variables. ## +## ----------------- ## +_ASBOX + echo + for ac_var in $ac_subst_vars + do + eval ac_val=\$$ac_var + case $ac_val in + *\'\''*) ac_val=`echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + esac + echo "$ac_var='\''$ac_val'\''" + done | sort + echo + + if test -n "$ac_subst_files"; then + cat <<\_ASBOX +## ------------------- ## +## File substitutions. ## +## ------------------- ## +_ASBOX + echo + for ac_var in $ac_subst_files + do + eval ac_val=\$$ac_var + case $ac_val in + *\'\''*) ac_val=`echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + esac + echo "$ac_var='\''$ac_val'\''" + done | sort + echo + fi + + if test -s confdefs.h; then + cat <<\_ASBOX +## ----------- ## +## confdefs.h. ## +## ----------- ## +_ASBOX + echo + cat confdefs.h + echo + fi + test "$ac_signal" != 0 && + echo "$as_me: caught signal $ac_signal" + echo "$as_me: exit $exit_status" + } >&5 + rm -f core *.core core.conftest.* && + rm -f -r conftest* confdefs* conf$$* $ac_clean_files && + exit $exit_status +' 0 +for ac_signal in 1 2 13 15; do + trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal +done +ac_signal=0 + +# confdefs.h avoids OS command line length limits that DEFS can exceed. +rm -f -r conftest* confdefs.h + +# Predefined preprocessor variables. + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_NAME "$PACKAGE_NAME" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_TARNAME "$PACKAGE_TARNAME" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_VERSION "$PACKAGE_VERSION" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_STRING "$PACKAGE_STRING" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" +_ACEOF + + +# Let the site file select an alternate cache file if it wants to. +# Prefer explicitly selected file to automatically selected ones. +if test -n "$CONFIG_SITE"; then + set x "$CONFIG_SITE" +elif test "x$prefix" != xNONE; then + set x "$prefix/share/config.site" "$prefix/etc/config.site" +else + set x "$ac_default_prefix/share/config.site" \ + "$ac_default_prefix/etc/config.site" +fi +shift +for ac_site_file +do + if test -r "$ac_site_file"; then + { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5 +echo "$as_me: loading site script $ac_site_file" >&6;} + sed 's/^/| /' "$ac_site_file" >&5 + . "$ac_site_file" + fi +done + +if test -r "$cache_file"; then + # Some versions of bash will fail to source /dev/null (special + # files actually), so we avoid doing that. + if test -f "$cache_file"; then + { echo "$as_me:$LINENO: loading cache $cache_file" >&5 +echo "$as_me: loading cache $cache_file" >&6;} + case $cache_file in + [\\/]* | ?:[\\/]* ) . "$cache_file";; + *) . "./$cache_file";; + esac + fi +else + { echo "$as_me:$LINENO: creating cache $cache_file" >&5 +echo "$as_me: creating cache $cache_file" >&6;} + >$cache_file +fi + +ac_header_list="$ac_header_list utime.h" +# Check that the precious variables saved in the cache have kept the same +# value. +ac_cache_corrupted=false +for ac_var in $ac_precious_vars; do + eval ac_old_set=\$ac_cv_env_${ac_var}_set + eval ac_new_set=\$ac_env_${ac_var}_set + eval ac_old_val=\$ac_cv_env_${ac_var}_value + eval ac_new_val=\$ac_env_${ac_var}_value + case $ac_old_set,$ac_new_set in + set,) + { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 +echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,set) + { echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5 +echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,);; + *) + if test "x$ac_old_val" != "x$ac_new_val"; then + { echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5 +echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} + { echo "$as_me:$LINENO: former value: $ac_old_val" >&5 +echo "$as_me: former value: $ac_old_val" >&2;} + { echo "$as_me:$LINENO: current value: $ac_new_val" >&5 +echo "$as_me: current value: $ac_new_val" >&2;} + ac_cache_corrupted=: + fi;; + esac + # Pass precious variables to config.status. + if test "$ac_new_set" = set; then + case $ac_new_val in + *\'*) ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; + *) ac_arg=$ac_var=$ac_new_val ;; + esac + case " $ac_configure_args " in + *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. + *) ac_configure_args="$ac_configure_args '$ac_arg'" ;; + esac + fi +done +if $ac_cache_corrupted; then + { echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5 +echo "$as_me: error: changes in the environment can compromise the build" >&2;} + { { echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5 +echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;} + { (exit 1); exit 1; }; } +fi + + + + + + + + + + + + + + + + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + +ac_config_headers="$ac_config_headers config.h" + +ac_config_commands="$ac_config_commands default-1" + +SUBDIRS="lib mbcico mbfido mbmon mbsebbs mbutils mbnntp mbtask mbsetup unix lang examples html script" + + +# +# General settings for MBSE BBS +# After changeing the version number, run autoconf! +# +PACKAGE="mbsebbs" +MAJOR="0" +MINOR="95" +REVISION="5" +VERSION="$MAJOR.$MINOR.$REVISION" +COPYRIGHT="Copyright (C) 1997-2008 Michiel Broek, All Rights Reserved" +SHORTRIGHT="Copyright (C) 1997-2008 M. Broek" +GROUP="bbs" +OWNER="mbse" +ROWNER="`id -un root`" +RGROUP="`id -gn root`" + + + + + + + + + + +cat >>confdefs.h <<_ACEOF +#define VERSION "$VERSION" +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define VERSION_MAJOR $MAJOR +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define VERSION_MINOR $MINOR +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define VERSION_REVISION $REVISION +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define COPYRIGHT "$COPYRIGHT" +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define SHORTRIGHT "$SHORTRIGHT" +_ACEOF + + +SYSTEM="`uname -s`" +CPU="`uname -m`" +LDFLAGS="-L/usr/local/lib" +CPPFLAGS="-I/usr/local/include" + +# +# Checks for programs. +# Try to find GNU make +# +# Extract the first word of "gmake", so it can be a program name with args. +set dummy gmake; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_prog_MAKE+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$MAKE"; then + ac_cv_prog_MAKE="$MAKE" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_MAKE="gmake" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +MAKE=$ac_cv_prog_MAKE +if test -n "$MAKE"; then + { echo "$as_me:$LINENO: result: $MAKE" >&5 +echo "${ECHO_T}$MAKE" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + +# Extract the first word of "make", so it can be a program name with args. +set dummy make; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_prog_MAKE+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$MAKE"; then + ac_cv_prog_MAKE="$MAKE" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_MAKE="make" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +MAKE=$ac_cv_prog_MAKE +if test -n "$MAKE"; then + { echo "$as_me:$LINENO: result: $MAKE" >&5 +echo "${ECHO_T}$MAKE" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + +# Alternate awk check, I skip mawk because it doesn't work for MBSE. +# Extract the first word of "gawk", so it can be a program name with args. +set dummy gawk; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_prog_AWK+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$AWK"; then + ac_cv_prog_AWK="$AWK" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_AWK="gawk" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +AWK=$ac_cv_prog_AWK +if test -n "$AWK"; then + { echo "$as_me:$LINENO: result: $AWK" >&5 +echo "${ECHO_T}$AWK" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + +# Extract the first word of "nawk", so it can be a program name with args. +set dummy nawk; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_prog_AWK+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$AWK"; then + ac_cv_prog_AWK="$AWK" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_AWK="nawk" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +AWK=$ac_cv_prog_AWK +if test -n "$AWK"; then + { echo "$as_me:$LINENO: result: $AWK" >&5 +echo "${ECHO_T}$AWK" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + +# Extract the first word of "awk", so it can be a program name with args. +set dummy awk; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_prog_AWK+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$AWK"; then + ac_cv_prog_AWK="$AWK" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_AWK="awk" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +AWK=$ac_cv_prog_AWK +if test -n "$AWK"; then + { echo "$as_me:$LINENO: result: $AWK" >&5 +echo "${ECHO_T}$AWK" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + +# Try to find GNU install +# Extract the first word of "ginstall", so it can be a program name with args. +set dummy ginstall; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_prog_INSTALL+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$INSTALL"; then + ac_cv_prog_INSTALL="$INSTALL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_INSTALL="ginstall" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +INSTALL=$ac_cv_prog_INSTALL +if test -n "$INSTALL"; then + { echo "$as_me:$LINENO: result: $INSTALL" >&5 +echo "${ECHO_T}$INSTALL" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + +# Extract the first word of "install", so it can be a program name with args. +set dummy install; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_prog_INSTALL+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$INSTALL"; then + ac_cv_prog_INSTALL="$INSTALL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_INSTALL="install" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +INSTALL=$ac_cv_prog_INSTALL +if test -n "$INSTALL"; then + { echo "$as_me:$LINENO: result: $INSTALL" >&5 +echo "${ECHO_T}$INSTALL" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. +set dummy ${ac_tool_prefix}gcc; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_CC="${ac_tool_prefix}gcc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "gcc", so it can be a program name with args. +set dummy gcc; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_prog_ac_ct_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_CC="gcc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +echo "${ECHO_T}$ac_ct_CC" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf@gnu.org." >&5 +echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf@gnu.org." >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +else + CC="$ac_cv_prog_CC" +fi + +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. +set dummy ${ac_tool_prefix}cc; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_CC="${ac_tool_prefix}cc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + + fi +fi +if test -z "$CC"; then + # Extract the first word of "cc", so it can be a program name with args. +set dummy cc; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else + ac_prog_rejected=no +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then + ac_prog_rejected=yes + continue + fi + ac_cv_prog_CC="cc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +if test $ac_prog_rejected = yes; then + # We found a bogon in the path, so make sure we never use it. + set dummy $ac_cv_prog_CC + shift + if test $# != 0; then + # We chose a different compiler from the bogus one. + # However, it has the same basename, so the bogon will be chosen + # first if we set CC to just the basename; use the full file name. + shift + ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" + fi +fi +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + +fi +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + for ac_prog in cl.exe + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_CC="$ac_tool_prefix$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + + test -n "$CC" && break + done +fi +if test -z "$CC"; then + ac_ct_CC=$CC + for ac_prog in cl.exe +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_prog_ac_ct_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_CC="$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +echo "${ECHO_T}$ac_ct_CC" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + + test -n "$ac_ct_CC" && break +done + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf@gnu.org." >&5 +echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf@gnu.org." >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +fi + +fi + + +test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH +See \`config.log' for more details." >&5 +echo "$as_me: error: no acceptable C compiler found in \$PATH +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } + +# Provide some information about the compiler. +echo "$as_me:$LINENO: checking for C compiler version" >&5 +ac_compiler=`set X $ac_compile; echo $2` +{ (ac_try="$ac_compiler --version >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compiler --version >&5") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (ac_try="$ac_compiler -v >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compiler -v >&5") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (ac_try="$ac_compiler -V >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compiler -V >&5") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files a.out a.exe b.out" +# Try to create an executable without -o first, disregard a.out. +# It will help us diagnose broken compilers, and finding out an intuition +# of exeext. +{ echo "$as_me:$LINENO: checking for C compiler default output file name" >&5 +echo $ECHO_N "checking for C compiler default output file name... $ECHO_C" >&6; } +ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` +# +# List of possible output files, starting from the most likely. +# The algorithm is not robust to junk in `.', hence go to wildcards (a.*) +# only as a last resort. b.out is created by i960 compilers. +ac_files='a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out' +# +# The IRIX 6 linker writes into existing files which may not be +# executable, retaining their permissions. Remove them first so a +# subsequent execution test works. +ac_rmfiles= +for ac_file in $ac_files +do + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) ;; + * ) ac_rmfiles="$ac_rmfiles $ac_file";; + esac +done +rm -f $ac_rmfiles + +if { (ac_try="$ac_link_default" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link_default") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. +# So ignore a value of `no', otherwise this would lead to `EXEEXT = no' +# in a Makefile. We should not override ac_cv_exeext if it was cached, +# so that the user can short-circuit this test for compilers unknown to +# Autoconf. +for ac_file in $ac_files '' +do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) + ;; + [ab].out ) + # We found the default executable, but exeext='' is most + # certainly right. + break;; + *.* ) + if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; + then :; else + ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + fi + # We set ac_cv_exeext here because the later test for it is not + # safe: cross compilers may not add the suffix if given an `-o' + # argument, so we may need to know it at that point already. + # Even if this section looks crufty: it has the advantage of + # actually working. + break;; + * ) + break;; + esac +done +test "$ac_cv_exeext" = no && ac_cv_exeext= + +else + ac_file='' +fi + +{ echo "$as_me:$LINENO: result: $ac_file" >&5 +echo "${ECHO_T}$ac_file" >&6; } +if test -z "$ac_file"; then + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { echo "$as_me:$LINENO: error: C compiler cannot create executables +See \`config.log' for more details." >&5 +echo "$as_me: error: C compiler cannot create executables +See \`config.log' for more details." >&2;} + { (exit 77); exit 77; }; } +fi + +ac_exeext=$ac_cv_exeext + +# Check that the compiler produces executables we can run. If not, either +# the compiler is broken, or we cross compile. +{ echo "$as_me:$LINENO: checking whether the C compiler works" >&5 +echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6; } +# FIXME: These cross compiler hacks should be removed for Autoconf 3.0 +# If not cross compiling, check that we can run a simple program. +if test "$cross_compiling" != yes; then + if { ac_try='./$ac_file' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + cross_compiling=no + else + if test "$cross_compiling" = maybe; then + cross_compiling=yes + else + { { echo "$as_me:$LINENO: error: cannot run C compiled programs. +If you meant to cross compile, use \`--host'. +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot run C compiled programs. +If you meant to cross compile, use \`--host'. +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } + fi + fi +fi +{ echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6; } + +rm -f a.out a.exe conftest$ac_cv_exeext b.out +ac_clean_files=$ac_clean_files_save +# Check that the compiler produces executables we can run. If not, either +# the compiler is broken, or we cross compile. +{ echo "$as_me:$LINENO: checking whether we are cross compiling" >&5 +echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6; } +{ echo "$as_me:$LINENO: result: $cross_compiling" >&5 +echo "${ECHO_T}$cross_compiling" >&6; } + +{ echo "$as_me:$LINENO: checking for suffix of executables" >&5 +echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6; } +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + # If both `conftest.exe' and `conftest' are `present' (well, observable) +# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will +# work properly (i.e., refer to `conftest.exe'), while it won't with +# `rm'. +for ac_file in conftest.exe conftest conftest.*; do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) ;; + *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + break;; + * ) break;; + esac +done +else + { { echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute suffix of executables: cannot compile and link +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +fi + +rm -f conftest$ac_cv_exeext +{ echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5 +echo "${ECHO_T}$ac_cv_exeext" >&6; } + +rm -f conftest.$ac_ext +EXEEXT=$ac_cv_exeext +ac_exeext=$EXEEXT +{ echo "$as_me:$LINENO: checking for suffix of object files" >&5 +echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6; } +if test "${ac_cv_objext+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.o conftest.obj +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + for ac_file in conftest.o conftest.obj conftest.*; do + test -f "$ac_file" || continue; + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf ) ;; + *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` + break;; + esac +done +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute suffix of object files: cannot compile +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +fi + +rm -f conftest.$ac_cv_objext conftest.$ac_ext +fi +{ echo "$as_me:$LINENO: result: $ac_cv_objext" >&5 +echo "${ECHO_T}$ac_cv_objext" >&6; } +OBJEXT=$ac_cv_objext +ac_objext=$OBJEXT +{ echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5 +echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6; } +if test "${ac_cv_c_compiler_gnu+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_compiler_gnu=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_compiler_gnu=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +ac_cv_c_compiler_gnu=$ac_compiler_gnu + +fi +{ echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5 +echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6; } +GCC=`test $ac_compiler_gnu = yes && echo yes` +ac_test_CFLAGS=${CFLAGS+set} +ac_save_CFLAGS=$CFLAGS +{ echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5 +echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6; } +if test "${ac_cv_prog_cc_g+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_save_c_werror_flag=$ac_c_werror_flag + ac_c_werror_flag=yes + ac_cv_prog_cc_g=no + CFLAGS="-g" + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_prog_cc_g=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + CFLAGS="" + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + : +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_c_werror_flag=$ac_save_c_werror_flag + CFLAGS="-g" + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_prog_cc_g=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ac_c_werror_flag=$ac_save_c_werror_flag +fi +{ echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 +echo "${ECHO_T}$ac_cv_prog_cc_g" >&6; } +if test "$ac_test_CFLAGS" = set; then + CFLAGS=$ac_save_CFLAGS +elif test $ac_cv_prog_cc_g = yes; then + if test "$GCC" = yes; then + CFLAGS="-g -O2" + else + CFLAGS="-g" + fi +else + if test "$GCC" = yes; then + CFLAGS="-O2" + else + CFLAGS= + fi +fi +{ echo "$as_me:$LINENO: checking for $CC option to accept ISO C89" >&5 +echo $ECHO_N "checking for $CC option to accept ISO C89... $ECHO_C" >&6; } +if test "${ac_cv_prog_cc_c89+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_prog_cc_c89=no +ac_save_CC=$CC +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +#include +#include +#include +/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ +struct buf { int x; }; +FILE * (*rcsopen) (struct buf *, struct stat *, int); +static char *e (p, i) + char **p; + int i; +{ + return p[i]; +} +static char *f (char * (*g) (char **, int), char **p, ...) +{ + char *s; + va_list v; + va_start (v,p); + s = g (p, va_arg (v,int)); + va_end (v); + return s; +} + +/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has + function prototypes and stuff, but not '\xHH' hex character constants. + These don't provoke an error unfortunately, instead are silently treated + as 'x'. The following induces an error, until -std is added to get + proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an + array size at least. It's necessary to write '\x00'==0 to get something + that's true only with -std. */ +int osf4_cc_array ['\x00' == 0 ? 1 : -1]; + +/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters + inside strings and character constants. */ +#define FOO(x) 'x' +int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; + +int test (int i, double x); +struct s1 {int (*f) (int a);}; +struct s2 {int (*f) (double a);}; +int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); +int argc; +char **argv; +int +main () +{ +return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; + ; + return 0; +} +_ACEOF +for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ + -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +do + CC="$ac_save_CC $ac_arg" + rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_prog_cc_c89=$ac_arg +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + +fi + +rm -f core conftest.err conftest.$ac_objext + test "x$ac_cv_prog_cc_c89" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC + +fi +# AC_CACHE_VAL +case "x$ac_cv_prog_cc_c89" in + x) + { echo "$as_me:$LINENO: result: none needed" >&5 +echo "${ECHO_T}none needed" >&6; } ;; + xno) + { echo "$as_me:$LINENO: result: unsupported" >&5 +echo "${ECHO_T}unsupported" >&6; } ;; + *) + CC="$CC $ac_cv_prog_cc_c89" + { echo "$as_me:$LINENO: result: $ac_cv_prog_cc_c89" >&5 +echo "${ECHO_T}$ac_cv_prog_cc_c89" >&6; } ;; +esac + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +{ echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5 +echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6; } +set x ${MAKE-make}; ac_make=`echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` +if { as_var=ac_cv_prog_make_${ac_make}_set; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.make <<\_ACEOF +SHELL = /bin/sh +all: + @echo '@@@%%%=$(MAKE)=@@@%%%' +_ACEOF +# GNU make sometimes prints "make[1]: Entering...", which would confuse us. +case `${MAKE-make} -f conftest.make 2>/dev/null` in + *@@@%%%=?*=@@@%%%*) + eval ac_cv_prog_make_${ac_make}_set=yes;; + *) + eval ac_cv_prog_make_${ac_make}_set=no;; +esac +rm -f conftest.make +fi +if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then + { echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6; } + SET_MAKE= +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } + SET_MAKE="MAKE=${MAKE-make}" +fi + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. +set dummy ${ac_tool_prefix}ranlib; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_prog_RANLIB+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$RANLIB"; then + ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +RANLIB=$ac_cv_prog_RANLIB +if test -n "$RANLIB"; then + { echo "$as_me:$LINENO: result: $RANLIB" >&5 +echo "${ECHO_T}$RANLIB" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_RANLIB"; then + ac_ct_RANLIB=$RANLIB + # Extract the first word of "ranlib", so it can be a program name with args. +set dummy ranlib; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_RANLIB"; then + ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_RANLIB="ranlib" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB +if test -n "$ac_ct_RANLIB"; then + { echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5 +echo "${ECHO_T}$ac_ct_RANLIB" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + if test "x$ac_ct_RANLIB" = x; then + RANLIB=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf@gnu.org." >&5 +echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf@gnu.org." >&2;} +ac_tool_warned=yes ;; +esac + RANLIB=$ac_ct_RANLIB + fi +else + RANLIB="$ac_cv_prog_RANLIB" +fi + +{ echo "$as_me:$LINENO: checking whether ln -s works" >&5 +echo $ECHO_N "checking whether ln -s works... $ECHO_C" >&6; } +LN_S=$as_ln_s +if test "$LN_S" = "ln -s"; then + { echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6; } +else + { echo "$as_me:$LINENO: result: no, using $LN_S" >&5 +echo "${ECHO_T}no, using $LN_S" >&6; } +fi + +# Extract the first word of "tar", so it can be a program name with args. +set dummy tar; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_prog_TAR+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$TAR"; then + ac_cv_prog_TAR="$TAR" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_TAR="tar" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +TAR=$ac_cv_prog_TAR +if test -n "$TAR"; then + { echo "$as_me:$LINENO: result: $TAR" >&5 +echo "${ECHO_T}$TAR" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + +# Extract the first word of "zip", so it can be a program name with args. +set dummy zip; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_prog_ZIP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ZIP"; then + ac_cv_prog_ZIP="$ZIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ZIP="zip" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +ZIP=$ac_cv_prog_ZIP +if test -n "$ZIP"; then + { echo "$as_me:$LINENO: result: $ZIP" >&5 +echo "${ECHO_T}$ZIP" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + +# Extract the first word of "chown", so it can be a program name with args. +set dummy chown; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_path_CHOWN+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $CHOWN in + [\\/]* | ?:[\\/]*) + ac_cv_path_CHOWN="$CHOWN" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +as_dummy="/bin:/sbin:/usr/bin:/usr/sbin:" +for as_dir in $as_dummy +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_path_CHOWN="$as_dir/$ac_word$ac_exec_ext" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + + test -z "$ac_cv_path_CHOWN" && ac_cv_path_CHOWN="chown" + ;; +esac +fi +CHOWN=$ac_cv_path_CHOWN +if test -n "$CHOWN"; then + { echo "$as_me:$LINENO: result: $CHOWN" >&5 +echo "${ECHO_T}$CHOWN" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +{ echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5 +echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6; } +# On Suns, sometimes $CPP names a directory. +if test -n "$CPP" && test -d "$CPP"; then + CPP= +fi +if test -z "$CPP"; then + if test "${ac_cv_prog_CPP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + # Double quotes because CPP needs to be expanded + for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" + do + ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error +_ACEOF +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then + : +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Broken: fails on valid input. +continue +fi + +rm -f conftest.err conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +_ACEOF +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then + # Broken: success on invalid input. +continue +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Passes both tests. +ac_preproc_ok=: +break +fi + +rm -f conftest.err conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.err conftest.$ac_ext +if $ac_preproc_ok; then + break +fi + + done + ac_cv_prog_CPP=$CPP + +fi + CPP=$ac_cv_prog_CPP +else + ac_cv_prog_CPP=$CPP +fi +{ echo "$as_me:$LINENO: result: $CPP" >&5 +echo "${ECHO_T}$CPP" >&6; } +ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error +_ACEOF +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then + : +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Broken: fails on valid input. +continue +fi + +rm -f conftest.err conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +_ACEOF +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then + # Broken: success on invalid input. +continue +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Passes both tests. +ac_preproc_ok=: +break +fi + +rm -f conftest.err conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.err conftest.$ac_ext +if $ac_preproc_ok; then + : +else + { { echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check +See \`config.log' for more details." >&5 +echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + +{ echo "$as_me:$LINENO: checking for grep that handles long lines and -e" >&5 +echo $ECHO_N "checking for grep that handles long lines and -e... $ECHO_C" >&6; } +if test "${ac_cv_path_GREP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + # Extract the first word of "grep ggrep" to use in msg output +if test -z "$GREP"; then +set dummy grep ggrep; ac_prog_name=$2 +if test "${ac_cv_path_GREP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_path_GREP_found=false +# Loop through the user's path and test for each of PROGNAME-LIST +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in grep ggrep; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" + { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue + # Check for GNU ac_path_GREP and select it if it is found. + # Check for GNU $ac_path_GREP +case `"$ac_path_GREP" --version 2>&1` in +*GNU*) + ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; +*) + ac_count=0 + echo $ECHO_N "0123456789$ECHO_C" >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + echo 'GREP' >> "conftest.nl" + "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + ac_count=`expr $ac_count + 1` + if test $ac_count -gt ${ac_path_GREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_GREP="$ac_path_GREP" + ac_path_GREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + + $ac_path_GREP_found && break 3 + done +done + +done +IFS=$as_save_IFS + + +fi + +GREP="$ac_cv_path_GREP" +if test -z "$GREP"; then + { { echo "$as_me:$LINENO: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5 +echo "$as_me: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;} + { (exit 1); exit 1; }; } +fi + +else + ac_cv_path_GREP=$GREP +fi + + +fi +{ echo "$as_me:$LINENO: result: $ac_cv_path_GREP" >&5 +echo "${ECHO_T}$ac_cv_path_GREP" >&6; } + GREP="$ac_cv_path_GREP" + + +{ echo "$as_me:$LINENO: checking for egrep" >&5 +echo $ECHO_N "checking for egrep... $ECHO_C" >&6; } +if test "${ac_cv_path_EGREP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 + then ac_cv_path_EGREP="$GREP -E" + else + # Extract the first word of "egrep" to use in msg output +if test -z "$EGREP"; then +set dummy egrep; ac_prog_name=$2 +if test "${ac_cv_path_EGREP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_path_EGREP_found=false +# Loop through the user's path and test for each of PROGNAME-LIST +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in egrep; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" + { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue + # Check for GNU ac_path_EGREP and select it if it is found. + # Check for GNU $ac_path_EGREP +case `"$ac_path_EGREP" --version 2>&1` in +*GNU*) + ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; +*) + ac_count=0 + echo $ECHO_N "0123456789$ECHO_C" >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + echo 'EGREP' >> "conftest.nl" + "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + ac_count=`expr $ac_count + 1` + if test $ac_count -gt ${ac_path_EGREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_EGREP="$ac_path_EGREP" + ac_path_EGREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + + $ac_path_EGREP_found && break 3 + done +done + +done +IFS=$as_save_IFS + + +fi + +EGREP="$ac_cv_path_EGREP" +if test -z "$EGREP"; then + { { echo "$as_me:$LINENO: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5 +echo "$as_me: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;} + { (exit 1); exit 1; }; } +fi + +else + ac_cv_path_EGREP=$EGREP +fi + + + fi +fi +{ echo "$as_me:$LINENO: result: $ac_cv_path_EGREP" >&5 +echo "${ECHO_T}$ac_cv_path_EGREP" >&6; } + EGREP="$ac_cv_path_EGREP" + + +{ echo "$as_me:$LINENO: checking for ANSI C header files" >&5 +echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6; } +if test "${ac_cv_header_stdc+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +#include +#include +#include + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_header_stdc=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_header_stdc=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + +if test $ac_cv_header_stdc = yes; then + # SunOS 4.x string.h does not declare mem*, contrary to ANSI. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "memchr" >/dev/null 2>&1; then + : +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "free" >/dev/null 2>&1; then + : +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. + if test "$cross_compiling" = yes; then + : +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +#include +#if ((' ' & 0x0FF) == 0x020) +# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') +# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) +#else +# define ISLOWER(c) \ + (('a' <= (c) && (c) <= 'i') \ + || ('j' <= (c) && (c) <= 'r') \ + || ('s' <= (c) && (c) <= 'z')) +# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) +#endif + +#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) +int +main () +{ + int i; + for (i = 0; i < 256; i++) + if (XOR (islower (i), ISLOWER (i)) + || toupper (i) != TOUPPER (i)) + return 2; + return 0; +} +_ACEOF +rm -f conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + : +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +ac_cv_header_stdc=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi + + +fi +fi +{ echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 +echo "${ECHO_T}$ac_cv_header_stdc" >&6; } +if test $ac_cv_header_stdc = yes; then + +cat >>confdefs.h <<\_ACEOF +#define STDC_HEADERS 1 +_ACEOF + +fi + +# On IRIX 5.3, sys/types and inttypes.h are conflicting. + + + + + + + + + +for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ + inttypes.h stdint.h unistd.h +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +{ echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default + +#include <$ac_header> +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + eval "$as_ac_Header=yes" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + eval "$as_ac_Header=no" +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +ac_res=`eval echo '${'$as_ac_Header'}'` + { echo "$as_me:$LINENO: result: $ac_res" >&5 +echo "${ECHO_T}$ac_res" >&6; } +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + +{ echo "$as_me:$LINENO: checking whether byte ordering is bigendian" >&5 +echo $ECHO_N "checking whether byte ordering is bigendian... $ECHO_C" >&6; } +if test "${ac_cv_c_bigendian+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + # See if sys/param.h defines the BYTE_ORDER macro. +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +#include + +int +main () +{ +#if ! (defined BYTE_ORDER && defined BIG_ENDIAN && defined LITTLE_ENDIAN \ + && BYTE_ORDER && BIG_ENDIAN && LITTLE_ENDIAN) + bogus endian macros +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + # It does; now see whether it defined to BIG_ENDIAN or not. +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +#include + +int +main () +{ +#if BYTE_ORDER != BIG_ENDIAN + not big endian +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_c_bigendian=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_c_bigendian=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # It does not; compile a test program. +if test "$cross_compiling" = yes; then + # try to guess the endianness by grepping values into an object file + ac_cv_c_bigendian=unknown + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +short int ascii_mm[] = { 0x4249, 0x4765, 0x6E44, 0x6961, 0x6E53, 0x7953, 0 }; +short int ascii_ii[] = { 0x694C, 0x5454, 0x656C, 0x6E45, 0x6944, 0x6E61, 0 }; +void _ascii () { char *s = (char *) ascii_mm; s = (char *) ascii_ii; } +short int ebcdic_ii[] = { 0x89D3, 0xE3E3, 0x8593, 0x95C5, 0x89C4, 0x9581, 0 }; +short int ebcdic_mm[] = { 0xC2C9, 0xC785, 0x95C4, 0x8981, 0x95E2, 0xA8E2, 0 }; +void _ebcdic () { char *s = (char *) ebcdic_mm; s = (char *) ebcdic_ii; } +int +main () +{ + _ascii (); _ebcdic (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + if grep BIGenDianSyS conftest.$ac_objext >/dev/null ; then + ac_cv_c_bigendian=yes +fi +if grep LiTTleEnDian conftest.$ac_objext >/dev/null ; then + if test "$ac_cv_c_bigendian" = unknown; then + ac_cv_c_bigendian=no + else + # finding both strings is unlikely to happen, but who knows? + ac_cv_c_bigendian=unknown + fi +fi +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ + + /* Are we little or big endian? From Harbison&Steele. */ + union + { + long int l; + char c[sizeof (long int)]; + } u; + u.l = 1; + return u.c[sizeof (long int) - 1] == 1; + + ; + return 0; +} +_ACEOF +rm -f conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_c_bigendian=no +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +ac_cv_c_bigendian=yes +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi + + +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ echo "$as_me:$LINENO: result: $ac_cv_c_bigendian" >&5 +echo "${ECHO_T}$ac_cv_c_bigendian" >&6; } +case $ac_cv_c_bigendian in + yes) + +cat >>confdefs.h <<\_ACEOF +#define WORDS_BIGENDIAN 1 +_ACEOF + ;; + no) + ;; + *) + { { echo "$as_me:$LINENO: error: unknown endianness +presetting ac_cv_c_bigendian=no (or yes) will help" >&5 +echo "$as_me: error: unknown endianness +presetting ac_cv_c_bigendian=no (or yes) will help" >&2;} + { (exit 1); exit 1; }; } ;; +esac + + + +# +# Additional commandline switches +# +# Check whether --enable-experiment was given. +if test "${enable_experiment+set}" = set; then + enableval=$enable_experiment; experiment=$enableval +else + experiment=no +fi + +if test "$experiment" = "yes"; then + cat >>confdefs.h <<\_ACEOF +#define USE_EXPERIMENT 1 +_ACEOF + +fi + +# Check whether --enable-debugging was given. +if test "${enable_debugging+set}" = set; then + enableval=$enable_debugging; debugging=$enableval +else + debugging=no +fi + +if test "$debugging" = "yes"; then + CFLAGS="-O -g -Wall -Wshadow -Wwrite-strings -Wstrict-prototypes -D_REENTRANT -I/usr/local/include" +else + CFLAGS="-O2 -fno-strict-aliasing -Wall -Wshadow -Wwrite-strings -Wstrict-prototypes -D_REENTRANT -I/usr/local/include" +fi + +# Check whether --enable-optimize was given. +if test "${enable_optimize+set}" = set; then + enableval=$enable_optimize; optimize=$enableval +else + optimize=no +fi + +if test "$optimize" = "yes"; then +{ echo "$as_me:$LINENO: checking for cpuflags" >&5 +echo $ECHO_N "checking for cpuflags... $ECHO_C" >&6; } + for cpuflagsbin in /usr/bin /usr/local/bin /usr/pkg/bin `pwd` NONE; do + if test "$cpuflagsbin" = "NONE"; then + { echo "$as_me:$LINENO: result: unknown" >&5 +echo "${ECHO_T}unknown" >&6; } + elif test -x $cpuflagsbin/cpuflags; then + CPUFLAGS=`$cpuflagsbin/cpuflags` + { echo "$as_me:$LINENO: result: $CPUFLAGS" >&5 +echo "${ECHO_T}$CPUFLAGS" >&6; } + CFLAGS="$CPUFLAGS $CFLAGS" + break + fi + done +fi + + +# +# Enable full newsgate, this was default upto 0.50.0 +# +# Check whether --enable-newsgate was given. +if test "${enable_newsgate+set}" = set; then + enableval=$enable_newsgate; newsgate=$enableval +else + newsgate=no +fi + +if test "$newsgate" = "yes"; then + cat >>confdefs.h <<\_ACEOF +#define USE_NEWSGATE 1 +_ACEOF + + NEWSGATE="Yes" +else + NEWSGATE="No" +fi + + +# +# Checks for libraries and functions. +# +{ echo "$as_me:$LINENO: checking for re_comp in -lcompat" >&5 +echo $ECHO_N "checking for re_comp in -lcompat... $ECHO_C" >&6; } +if test "${ac_cv_lib_compat_re_comp+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lcompat $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char re_comp (); +int +main () +{ +return re_comp (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then + ac_cv_lib_compat_re_comp=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_lib_compat_re_comp=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ echo "$as_me:$LINENO: result: $ac_cv_lib_compat_re_comp" >&5 +echo "${ECHO_T}$ac_cv_lib_compat_re_comp" >&6; } +if test $ac_cv_lib_compat_re_comp = yes; then + result=yes +else + result=no +fi + +if test "$result" = "yes"; then + LIBS="$LIBS -lcompat" +fi + +{ echo "$as_me:$LINENO: checking for pw_age in struct passwd" >&5 +echo $ECHO_N "checking for pw_age in struct passwd... $ECHO_C" >&6; } +if test "${ac_cv_struct_passwd_pw_age+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +int +main () +{ + struct passwd pw; pw.pw_age = ""; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_struct_passwd_pw_age=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_struct_passwd_pw_age=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ echo "$as_me:$LINENO: result: $ac_cv_struct_passwd_pw_age" >&5 +echo "${ECHO_T}$ac_cv_struct_passwd_pw_age" >&6; } +if test "$ac_cv_struct_passwd_pw_age" = "yes"; then + cat >>confdefs.h <<\_ACEOF +#define ATT_AGE 1 +_ACEOF + +fi + +{ echo "$as_me:$LINENO: checking for pw_comment in struct passwd" >&5 +echo $ECHO_N "checking for pw_comment in struct passwd... $ECHO_C" >&6; } +if test "${ac_cv_struct_passwd_pw_comment+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +int +main () +{ + struct passwd pw; pw.pw_comment = ""; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_struct_passwd_pw_comment=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_struct_passwd_pw_comment=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ echo "$as_me:$LINENO: result: $ac_cv_struct_passwd_pw_comment" >&5 +echo "${ECHO_T}$ac_cv_struct_passwd_pw_comment" >&6; } +if test "$ac_cv_struct_passwd_pw_comment" = "yes"; then + cat >>confdefs.h <<\_ACEOF +#define ATT_COMMENT 1 +_ACEOF + +fi + +{ echo "$as_me:$LINENO: checking for setspent in -lshadow" >&5 +echo $ECHO_N "checking for setspent in -lshadow... $ECHO_C" >&6; } +if test "${ac_cv_lib_shadow_setspent+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lshadow $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char setspent (); +int +main () +{ +return setspent (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then + ac_cv_lib_shadow_setspent=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_lib_shadow_setspent=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ echo "$as_me:$LINENO: result: $ac_cv_lib_shadow_setspent" >&5 +echo "${ECHO_T}$ac_cv_lib_shadow_setspent" >&6; } +if test $ac_cv_lib_shadow_setspent = yes; then + result=yes +else + result=no +fi + +if test "$result" = "yes"; then + LIBS="$LIBS -lshadow" + SHADOW_PASSWORD=1 + LIBSHADOW=1 +else + { echo "$as_me:$LINENO: checking for getspnam in -lshadow" >&5 +echo $ECHO_N "checking for getspnam in -lshadow... $ECHO_C" >&6; } +if test "${ac_cv_lib_shadow_getspnam+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lshadow $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char getspnam (); +int +main () +{ +return getspnam (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then + ac_cv_lib_shadow_getspnam=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_lib_shadow_getspnam=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ echo "$as_me:$LINENO: result: $ac_cv_lib_shadow_getspnam" >&5 +echo "${ECHO_T}$ac_cv_lib_shadow_getspnam" >&6; } +if test $ac_cv_lib_shadow_getspnam = yes; then + result=yes +else + result=no +fi + + if test "$result" = "yes"; then + LIBS="$LIBS -lshadow" + SHADOW_PASSWORD=1 + LIBSHADOW=1 + else + # some libc's (glibc 2.x) keep shadow functions in -lc + { echo "$as_me:$LINENO: checking for setspent in -lc" >&5 +echo $ECHO_N "checking for setspent in -lc... $ECHO_C" >&6; } +if test "${ac_cv_lib_c_setspent+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lc $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char setspent (); +int +main () +{ +return setspent (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then + ac_cv_lib_c_setspent=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_lib_c_setspent=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ echo "$as_me:$LINENO: result: $ac_cv_lib_c_setspent" >&5 +echo "${ECHO_T}$ac_cv_lib_c_setspent" >&6; } +if test $ac_cv_lib_c_setspent = yes; then + result=yes +else + result=no +fi + + if test "$result" = "yes"; then + if test -f /etc/shadow; then + SHADOW_PASSWORD=1 + fi + fi + fi +fi + +if test "$SHADOW_PASSWORD" = "1"; then + if test "$ac_cv_func_fgetspent" != "yes"; then + { echo "$as_me:$LINENO: checking for fgetspent in -lshadow" >&5 +echo $ECHO_N "checking for fgetspent in -lshadow... $ECHO_C" >&6; } +if test "${ac_cv_lib_shadow_fgetspent+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lshadow $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char fgetspent (); +int +main () +{ +return fgetspent (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then + ac_cv_lib_shadow_fgetspent=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_lib_shadow_fgetspent=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ echo "$as_me:$LINENO: result: $ac_cv_lib_shadow_fgetspent" >&5 +echo "${ECHO_T}$ac_cv_lib_shadow_fgetspent" >&6; } +if test $ac_cv_lib_shadow_fgetspent = yes; then + result=yes +else + result=no +fi + + if test "$result" = "yes"; then + if test "$LIBSHADOW" != "1"; then + LIBS="$LIBS -lshadow" + fi + fi + fi + cat >>confdefs.h <<\_ACEOF +#define SHADOW_PASSWORD 1 +_ACEOF + +fi + +{ echo "$as_me:$LINENO: checking for crypt in -lcrypt" >&5 +echo $ECHO_N "checking for crypt in -lcrypt... $ECHO_C" >&6; } +if test "${ac_cv_lib_crypt_crypt+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lcrypt $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char crypt (); +int +main () +{ +return crypt (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then + ac_cv_lib_crypt_crypt=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_lib_crypt_crypt=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ echo "$as_me:$LINENO: result: $ac_cv_lib_crypt_crypt" >&5 +echo "${ECHO_T}$ac_cv_lib_crypt_crypt" >&6; } +if test $ac_cv_lib_crypt_crypt = yes; then + result=yes +else + result=no +fi + +if test "$result" = "yes"; then + LIBS="$LIBS -lcrypt" +fi + +{ echo "$as_me:$LINENO: checking for login in -lutil" >&5 +echo $ECHO_N "checking for login in -lutil... $ECHO_C" >&6; } +if test "${ac_cv_lib_util_login+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lutil $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char login (); +int +main () +{ +return login (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then + ac_cv_lib_util_login=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_lib_util_login=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ echo "$as_me:$LINENO: result: $ac_cv_lib_util_login" >&5 +echo "${ECHO_T}$ac_cv_lib_util_login" >&6; } +if test $ac_cv_lib_util_login = yes; then + result=yes +else + result=no +fi + +if test "$result" = "yes"; then + LIBS="$LIBS -lutil" + +for ac_header in util.h +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + { echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +ac_res=`eval echo '${'$as_ac_Header'}'` + { echo "$as_me:$LINENO: result: $ac_res" >&5 +echo "${ECHO_T}$ac_res" >&6; } +else + # Is the header compilable? +{ echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; } +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +#include <$ac_header> +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_compiler=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6; } + +# Is the header present? +{ echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; } +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <$ac_header> +_ACEOF +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then + ac_header_preproc=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_preproc=no +fi + +rm -f conftest.err conftest.$ac_ext +{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6; } + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in + yes:no: ) + { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} + ac_header_preproc=yes + ;; + no:yes:* ) + { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 +echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 +echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 +echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} + + ;; +esac +{ echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + eval "$as_ac_Header=\$ac_header_preproc" +fi +ac_res=`eval echo '${'$as_ac_Header'}'` + { echo "$as_me:$LINENO: result: $ac_res" >&5 +echo "${ECHO_T}$ac_res" >&6; } + +fi +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + +for ac_header in libutil.h +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + { echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +ac_res=`eval echo '${'$as_ac_Header'}'` + { echo "$as_me:$LINENO: result: $ac_res" >&5 +echo "${ECHO_T}$ac_res" >&6; } +else + # Is the header compilable? +{ echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; } +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +#include <$ac_header> +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_compiler=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6; } + +# Is the header present? +{ echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; } +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <$ac_header> +_ACEOF +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then + ac_header_preproc=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_preproc=no +fi + +rm -f conftest.err conftest.$ac_ext +{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6; } + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in + yes:no: ) + { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} + ac_header_preproc=yes + ;; + no:yes:* ) + { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 +echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 +echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 +echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} + + ;; +esac +{ echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + eval "$as_ac_Header=\$ac_header_preproc" +fi +ac_res=`eval echo '${'$as_ac_Header'}'` + { echo "$as_me:$LINENO: result: $ac_res" >&5 +echo "${ECHO_T}$ac_res" >&6; } + +fi +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + +for ac_header in sys/types.h +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + { echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +ac_res=`eval echo '${'$as_ac_Header'}'` + { echo "$as_me:$LINENO: result: $ac_res" >&5 +echo "${ECHO_T}$ac_res" >&6; } +else + # Is the header compilable? +{ echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; } +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +#include <$ac_header> +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_compiler=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6; } + +# Is the header present? +{ echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; } +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <$ac_header> +_ACEOF +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then + ac_header_preproc=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_preproc=no +fi + +rm -f conftest.err conftest.$ac_ext +{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6; } + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in + yes:no: ) + { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} + ac_header_preproc=yes + ;; + no:yes:* ) + { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 +echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 +echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 +echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} + + ;; +esac +{ echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + eval "$as_ac_Header=\$ac_header_preproc" +fi +ac_res=`eval echo '${'$as_ac_Header'}'` + { echo "$as_me:$LINENO: result: $ac_res" >&5 +echo "${ECHO_T}$ac_res" >&6; } + +fi +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + +fi + + +# +# Support for zlib and bzlib transfers compression +# +ZLIBSUP=No +{ echo "$as_me:$LINENO: checking for compress2 in -lz" >&5 +echo $ECHO_N "checking for compress2 in -lz... $ECHO_C" >&6; } +if test "${ac_cv_lib_z_compress2+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lz $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char compress2 (); +int +main () +{ +return compress2 (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then + ac_cv_lib_z_compress2=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_lib_z_compress2=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ echo "$as_me:$LINENO: result: $ac_cv_lib_z_compress2" >&5 +echo "${ECHO_T}$ac_cv_lib_z_compress2" >&6; } +if test $ac_cv_lib_z_compress2 = yes; then + result=yes +else + result=no +fi + +if test "$result" = "yes"; then + LIBS="$LIBS -lz" + +for ac_header in zlib.h +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + { echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +ac_res=`eval echo '${'$as_ac_Header'}'` + { echo "$as_me:$LINENO: result: $ac_res" >&5 +echo "${ECHO_T}$ac_res" >&6; } +else + # Is the header compilable? +{ echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; } +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +#include <$ac_header> +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_compiler=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6; } + +# Is the header present? +{ echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; } +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <$ac_header> +_ACEOF +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then + ac_header_preproc=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_preproc=no +fi + +rm -f conftest.err conftest.$ac_ext +{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6; } + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in + yes:no: ) + { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} + ac_header_preproc=yes + ;; + no:yes:* ) + { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 +echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 +echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 +echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} + + ;; +esac +{ echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + eval "$as_ac_Header=\$ac_header_preproc" +fi +ac_res=`eval echo '${'$as_ac_Header'}'` + { echo "$as_me:$LINENO: result: $ac_res" >&5 +echo "${ECHO_T}$ac_res" >&6; } + +fi +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + ZLIBSUP=Yes +else + ZLIBSUP=No +fi + +done + +fi +BZLIBSUP=No +{ echo "$as_me:$LINENO: checking for BZ2_bzCompressInit in -lbz2" >&5 +echo $ECHO_N "checking for BZ2_bzCompressInit in -lbz2... $ECHO_C" >&6; } +if test "${ac_cv_lib_bz2_BZ2_bzCompressInit+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lbz2 $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char BZ2_bzCompressInit (); +int +main () +{ +return BZ2_bzCompressInit (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then + ac_cv_lib_bz2_BZ2_bzCompressInit=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_lib_bz2_BZ2_bzCompressInit=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ echo "$as_me:$LINENO: result: $ac_cv_lib_bz2_BZ2_bzCompressInit" >&5 +echo "${ECHO_T}$ac_cv_lib_bz2_BZ2_bzCompressInit" >&6; } +if test $ac_cv_lib_bz2_BZ2_bzCompressInit = yes; then + result=yes +else + result=no +fi + +if test "$result" = "yes"; then + LIBS="$LIBS -lbz2" + +for ac_header in bzlib.h +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + { echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +ac_res=`eval echo '${'$as_ac_Header'}'` + { echo "$as_me:$LINENO: result: $ac_res" >&5 +echo "${ECHO_T}$ac_res" >&6; } +else + # Is the header compilable? +{ echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; } +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +#include <$ac_header> +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_compiler=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6; } + +# Is the header present? +{ echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; } +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <$ac_header> +_ACEOF +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then + ac_header_preproc=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_preproc=no +fi + +rm -f conftest.err conftest.$ac_ext +{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6; } + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in + yes:no: ) + { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} + ac_header_preproc=yes + ;; + no:yes:* ) + { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 +echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 +echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 +echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} + + ;; +esac +{ echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + eval "$as_ac_Header=\$ac_header_preproc" +fi +ac_res=`eval echo '${'$as_ac_Header'}'` + { echo "$as_me:$LINENO: result: $ac_res" >&5 +echo "${ECHO_T}$ac_res" >&6; } + +fi +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + BZLIBSUP=Yes +else + BZLIBSUP=No +fi + +done + +fi + +# +# Support for iconv, check libc first. +# +result="no" +{ echo "$as_me:$LINENO: checking for iconv_open" >&5 +echo $ECHO_N "checking for iconv_open... $ECHO_C" >&6; } +if test "${ac_cv_func_iconv_open+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define iconv_open to an innocuous variant, in case declares iconv_open. + For example, HP-UX 11i declares gettimeofday. */ +#define iconv_open innocuous_iconv_open + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char iconv_open (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef iconv_open + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char iconv_open (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined __stub_iconv_open || defined __stub___iconv_open +choke me +#endif + +int +main () +{ +return iconv_open (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then + ac_cv_func_iconv_open=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_func_iconv_open=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +fi +{ echo "$as_me:$LINENO: result: $ac_cv_func_iconv_open" >&5 +echo "${ECHO_T}$ac_cv_func_iconv_open" >&6; } +if test $ac_cv_func_iconv_open = yes; then + result=yes +else + # AC_SEARCH_LIBS(iconv_open,iconv,result=yes,result=no) + { echo "$as_me:$LINENO: checking for iconv_open in -liconv" >&5 +echo $ECHO_N "checking for iconv_open in -liconv... $ECHO_C" >&6; } +if test "${ac_cv_lib_iconv_iconv_open+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-liconv $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char iconv_open (); +int +main () +{ +return iconv_open (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then + ac_cv_lib_iconv_iconv_open=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_lib_iconv_iconv_open=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ echo "$as_me:$LINENO: result: $ac_cv_lib_iconv_iconv_open" >&5 +echo "${ECHO_T}$ac_cv_lib_iconv_iconv_open" >&6; } +if test $ac_cv_lib_iconv_iconv_open = yes; then + result=yes +else + result=no +fi + + if test "$result" = "yes"; then + LIBS="$LIBS -liconv" + fi + +fi + +if test "$result" = "yes"; then + +for ac_header in iconv.h +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + { echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +ac_res=`eval echo '${'$as_ac_Header'}'` + { echo "$as_me:$LINENO: result: $ac_res" >&5 +echo "${ECHO_T}$ac_res" >&6; } +else + # Is the header compilable? +{ echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; } +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +#include <$ac_header> +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_compiler=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6; } + +# Is the header present? +{ echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; } +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <$ac_header> +_ACEOF +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then + ac_header_preproc=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_preproc=no +fi + +rm -f conftest.err conftest.$ac_ext +{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6; } + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in + yes:no: ) + { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} + ac_header_preproc=yes + ;; + no:yes:* ) + { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 +echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 +echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 +echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} + + ;; +esac +{ echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + eval "$as_ac_Header=\$ac_header_preproc" +fi +ac_res=`eval echo '${'$as_ac_Header'}'` + { echo "$as_me:$LINENO: result: $ac_res" >&5 +echo "${ECHO_T}$ac_res" >&6; } + +fi +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + +fi + +# +# Checks for header files. +# +{ echo "$as_me:$LINENO: checking for ANSI C header files" >&5 +echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6; } +if test "${ac_cv_header_stdc+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +#include +#include +#include + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_header_stdc=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_header_stdc=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + +if test $ac_cv_header_stdc = yes; then + # SunOS 4.x string.h does not declare mem*, contrary to ANSI. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "memchr" >/dev/null 2>&1; then + : +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "free" >/dev/null 2>&1; then + : +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. + if test "$cross_compiling" = yes; then + : +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +#include +#if ((' ' & 0x0FF) == 0x020) +# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') +# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) +#else +# define ISLOWER(c) \ + (('a' <= (c) && (c) <= 'i') \ + || ('j' <= (c) && (c) <= 'r') \ + || ('s' <= (c) && (c) <= 'z')) +# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) +#endif + +#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) +int +main () +{ + int i; + for (i = 0; i < 256; i++) + if (XOR (islower (i), ISLOWER (i)) + || toupper (i) != TOUPPER (i)) + return 2; + return 0; +} +_ACEOF +rm -f conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + : +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +ac_cv_header_stdc=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi + + +fi +fi +{ echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 +echo "${ECHO_T}$ac_cv_header_stdc" >&6; } +if test $ac_cv_header_stdc = yes; then + +cat >>confdefs.h <<\_ACEOF +#define STDC_HEADERS 1 +_ACEOF + +fi + + + + + + +ac_header_dirent=no +for ac_hdr in dirent.h sys/ndir.h sys/dir.h ndir.h; do + as_ac_Header=`echo "ac_cv_header_dirent_$ac_hdr" | $as_tr_sh` +{ echo "$as_me:$LINENO: checking for $ac_hdr that defines DIR" >&5 +echo $ECHO_N "checking for $ac_hdr that defines DIR... $ECHO_C" >&6; } +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +#include <$ac_hdr> + +int +main () +{ +if ((DIR *) 0) +return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + eval "$as_ac_Header=yes" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + eval "$as_ac_Header=no" +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +ac_res=`eval echo '${'$as_ac_Header'}'` + { echo "$as_me:$LINENO: result: $ac_res" >&5 +echo "${ECHO_T}$ac_res" >&6; } +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_hdr" | $as_tr_cpp` 1 +_ACEOF + +ac_header_dirent=$ac_hdr; break +fi + +done +# Two versions of opendir et al. are in -ldir and -lx on SCO Xenix. +if test $ac_header_dirent = dirent.h; then + { echo "$as_me:$LINENO: checking for library containing opendir" >&5 +echo $ECHO_N "checking for library containing opendir... $ECHO_C" >&6; } +if test "${ac_cv_search_opendir+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_func_search_save_LIBS=$LIBS +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char opendir (); +int +main () +{ +return opendir (); + ; + return 0; +} +_ACEOF +for ac_lib in '' dir; do + if test -z "$ac_lib"; then + ac_res="none required" + else + ac_res=-l$ac_lib + LIBS="-l$ac_lib $ac_func_search_save_LIBS" + fi + rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then + ac_cv_search_opendir=$ac_res +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + +fi + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext + if test "${ac_cv_search_opendir+set}" = set; then + break +fi +done +if test "${ac_cv_search_opendir+set}" = set; then + : +else + ac_cv_search_opendir=no +fi +rm conftest.$ac_ext +LIBS=$ac_func_search_save_LIBS +fi +{ echo "$as_me:$LINENO: result: $ac_cv_search_opendir" >&5 +echo "${ECHO_T}$ac_cv_search_opendir" >&6; } +ac_res=$ac_cv_search_opendir +if test "$ac_res" != no; then + test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" + +fi + +else + { echo "$as_me:$LINENO: checking for library containing opendir" >&5 +echo $ECHO_N "checking for library containing opendir... $ECHO_C" >&6; } +if test "${ac_cv_search_opendir+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_func_search_save_LIBS=$LIBS +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char opendir (); +int +main () +{ +return opendir (); + ; + return 0; +} +_ACEOF +for ac_lib in '' x; do + if test -z "$ac_lib"; then + ac_res="none required" + else + ac_res=-l$ac_lib + LIBS="-l$ac_lib $ac_func_search_save_LIBS" + fi + rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then + ac_cv_search_opendir=$ac_res +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + +fi + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext + if test "${ac_cv_search_opendir+set}" = set; then + break +fi +done +if test "${ac_cv_search_opendir+set}" = set; then + : +else + ac_cv_search_opendir=no +fi +rm conftest.$ac_ext +LIBS=$ac_func_search_save_LIBS +fi +{ echo "$as_me:$LINENO: result: $ac_cv_search_opendir" >&5 +echo "${ECHO_T}$ac_cv_search_opendir" >&6; } +ac_res=$ac_cv_search_opendir +if test "$ac_res" != no; then + test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" + +fi + +fi + +{ echo "$as_me:$LINENO: checking whether time.h and sys/time.h may both be included" >&5 +echo $ECHO_N "checking whether time.h and sys/time.h may both be included... $ECHO_C" >&6; } +if test "${ac_cv_header_time+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +#include +#include + +int +main () +{ +if ((struct tm *) 0) +return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_header_time=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_header_time=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ echo "$as_me:$LINENO: result: $ac_cv_header_time" >&5 +echo "${ECHO_T}$ac_cv_header_time" >&6; } +if test $ac_cv_header_time = yes; then + +cat >>confdefs.h <<\_ACEOF +#define TIME_WITH_SYS_TIME 1 +_ACEOF + +fi + +{ echo "$as_me:$LINENO: checking for sys/wait.h that is POSIX.1 compatible" >&5 +echo $ECHO_N "checking for sys/wait.h that is POSIX.1 compatible... $ECHO_C" >&6; } +if test "${ac_cv_header_sys_wait_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +#include +#ifndef WEXITSTATUS +# define WEXITSTATUS(stat_val) ((unsigned int) (stat_val) >> 8) +#endif +#ifndef WIFEXITED +# define WIFEXITED(stat_val) (((stat_val) & 255) == 0) +#endif + +int +main () +{ + int s; + wait (&s); + s = WIFEXITED (s) ? WEXITSTATUS (s) : 1; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_header_sys_wait_h=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_header_sys_wait_h=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ echo "$as_me:$LINENO: result: $ac_cv_header_sys_wait_h" >&5 +echo "${ECHO_T}$ac_cv_header_sys_wait_h" >&6; } +if test $ac_cv_header_sys_wait_h = yes; then + +cat >>confdefs.h <<\_ACEOF +#define HAVE_SYS_WAIT_H 1 +_ACEOF + +fi + + + + + + +for ac_header in termios.h sys/termios.h termio.h sys/termio.h sgtty.h +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + { echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +ac_res=`eval echo '${'$as_ac_Header'}'` + { echo "$as_me:$LINENO: result: $ac_res" >&5 +echo "${ECHO_T}$ac_res" >&6; } +else + # Is the header compilable? +{ echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; } +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +#include <$ac_header> +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_compiler=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6; } + +# Is the header present? +{ echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; } +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <$ac_header> +_ACEOF +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then + ac_header_preproc=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_preproc=no +fi + +rm -f conftest.err conftest.$ac_ext +{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6; } + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in + yes:no: ) + { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} + ac_header_preproc=yes + ;; + no:yes:* ) + { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 +echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 +echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 +echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} + + ;; +esac +{ echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + eval "$as_ac_Header=\$ac_header_preproc" +fi +ac_res=`eval echo '${'$as_ac_Header'}'` + { echo "$as_me:$LINENO: result: $ac_res" >&5 +echo "${ECHO_T}$ac_res" >&6; } + +fi +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + + + + + +for ac_header in sys/time.h sys/vfs.h unistd.h netinet/in.h regex.h +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + { echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +ac_res=`eval echo '${'$as_ac_Header'}'` + { echo "$as_me:$LINENO: result: $ac_res" >&5 +echo "${ECHO_T}$ac_res" >&6; } +else + # Is the header compilable? +{ echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; } +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +#include <$ac_header> +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_compiler=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6; } + +# Is the header present? +{ echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; } +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <$ac_header> +_ACEOF +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then + ac_header_preproc=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_preproc=no +fi + +rm -f conftest.err conftest.$ac_ext +{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6; } + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in + yes:no: ) + { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} + ac_header_preproc=yes + ;; + no:yes:* ) + { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 +echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 +echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 +echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} + + ;; +esac +{ echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + eval "$as_ac_Header=\$ac_header_preproc" +fi +ac_res=`eval echo '${'$as_ac_Header'}'` + { echo "$as_me:$LINENO: result: $ac_res" >&5 +echo "${ECHO_T}$ac_res" >&6; } + +fi +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + + + + + +for ac_header in sys/resource.h usersec.h gshadow.h shadow.h crypt.h +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + { echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +ac_res=`eval echo '${'$as_ac_Header'}'` + { echo "$as_me:$LINENO: result: $ac_res" >&5 +echo "${ECHO_T}$ac_res" >&6; } +else + # Is the header compilable? +{ echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; } +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +#include <$ac_header> +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_compiler=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6; } + +# Is the header present? +{ echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; } +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <$ac_header> +_ACEOF +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then + ac_header_preproc=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_preproc=no +fi + +rm -f conftest.err conftest.$ac_ext +{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6; } + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in + yes:no: ) + { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} + ac_header_preproc=yes + ;; + no:yes:* ) + { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 +echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 +echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 +echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} + + ;; +esac +{ echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + eval "$as_ac_Header=\$ac_header_preproc" +fi +ac_res=`eval echo '${'$as_ac_Header'}'` + { echo "$as_me:$LINENO: result: $ac_res" >&5 +echo "${ECHO_T}$ac_res" >&6; } + +fi +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + + + + + +for ac_header in limits.h utmp.h utmpx.h lastlog.h rpc/key_prot.h +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + { echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +ac_res=`eval echo '${'$as_ac_Header'}'` + { echo "$as_me:$LINENO: result: $ac_res" >&5 +echo "${ECHO_T}$ac_res" >&6; } +else + # Is the header compilable? +{ echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; } +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +#include <$ac_header> +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_compiler=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6; } + +# Is the header present? +{ echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; } +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <$ac_header> +_ACEOF +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then + ac_header_preproc=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_preproc=no +fi + +rm -f conftest.err conftest.$ac_ext +{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6; } + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in + yes:no: ) + { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} + ac_header_preproc=yes + ;; + no:yes:* ) + { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 +echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 +echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 +echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} + + ;; +esac +{ echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + eval "$as_ac_Header=\$ac_header_preproc" +fi +ac_res=`eval echo '${'$as_ac_Header'}'` + { echo "$as_me:$LINENO: result: $ac_res" >&5 +echo "${ECHO_T}$ac_res" >&6; } + +fi +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + +{ echo "$as_me:$LINENO: checking whether struct tm is in sys/time.h or time.h" >&5 +echo $ECHO_N "checking whether struct tm is in sys/time.h or time.h... $ECHO_C" >&6; } +if test "${ac_cv_struct_tm+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +#include + +int +main () +{ +struct tm tm; + int *p = &tm.tm_sec; + return !p; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_struct_tm=time.h +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_struct_tm=sys/time.h +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ echo "$as_me:$LINENO: result: $ac_cv_struct_tm" >&5 +echo "${ECHO_T}$ac_cv_struct_tm" >&6; } +if test $ac_cv_struct_tm = sys/time.h; then + +cat >>confdefs.h <<\_ACEOF +#define TM_IN_SYS_TIME 1 +_ACEOF + +fi + +{ echo "$as_me:$LINENO: checking for struct tm.tm_zone" >&5 +echo $ECHO_N "checking for struct tm.tm_zone... $ECHO_C" >&6; } +if test "${ac_cv_member_struct_tm_tm_zone+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +#include <$ac_cv_struct_tm> + + +int +main () +{ +static struct tm ac_aggr; +if (ac_aggr.tm_zone) +return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_member_struct_tm_tm_zone=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +#include <$ac_cv_struct_tm> + + +int +main () +{ +static struct tm ac_aggr; +if (sizeof ac_aggr.tm_zone) +return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_member_struct_tm_tm_zone=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_member_struct_tm_tm_zone=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ echo "$as_me:$LINENO: result: $ac_cv_member_struct_tm_tm_zone" >&5 +echo "${ECHO_T}$ac_cv_member_struct_tm_tm_zone" >&6; } +if test $ac_cv_member_struct_tm_tm_zone = yes; then + +cat >>confdefs.h <<_ACEOF +#define HAVE_STRUCT_TM_TM_ZONE 1 +_ACEOF + + +fi + +if test "$ac_cv_member_struct_tm_tm_zone" = yes; then + +cat >>confdefs.h <<\_ACEOF +#define HAVE_TM_ZONE 1 +_ACEOF + +else + { echo "$as_me:$LINENO: checking whether tzname is declared" >&5 +echo $ECHO_N "checking whether tzname is declared... $ECHO_C" >&6; } +if test "${ac_cv_have_decl_tzname+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include + +int +main () +{ +#ifndef tzname + (void) tzname; +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_have_decl_tzname=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_have_decl_tzname=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ echo "$as_me:$LINENO: result: $ac_cv_have_decl_tzname" >&5 +echo "${ECHO_T}$ac_cv_have_decl_tzname" >&6; } +if test $ac_cv_have_decl_tzname = yes; then + +cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_TZNAME 1 +_ACEOF + + +else + cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_TZNAME 0 +_ACEOF + + +fi + + + { echo "$as_me:$LINENO: checking for tzname" >&5 +echo $ECHO_N "checking for tzname... $ECHO_C" >&6; } +if test "${ac_cv_var_tzname+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +#if !HAVE_DECL_TZNAME +extern char *tzname[]; +#endif + +int +main () +{ +return tzname[0][0]; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then + ac_cv_var_tzname=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_var_tzname=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +fi +{ echo "$as_me:$LINENO: result: $ac_cv_var_tzname" >&5 +echo "${ECHO_T}$ac_cv_var_tzname" >&6; } + if test $ac_cv_var_tzname = yes; then + +cat >>confdefs.h <<\_ACEOF +#define HAVE_TZNAME 1 +_ACEOF + + fi +fi + + +# +# Checks for typedefs, structures, and compiler characteristics. +# +{ echo "$as_me:$LINENO: checking for an ANSI C-conforming const" >&5 +echo $ECHO_N "checking for an ANSI C-conforming const... $ECHO_C" >&6; } +if test "${ac_cv_c_const+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ +/* FIXME: Include the comments suggested by Paul. */ +#ifndef __cplusplus + /* Ultrix mips cc rejects this. */ + typedef int charset[2]; + const charset cs; + /* SunOS 4.1.1 cc rejects this. */ + char const *const *pcpcc; + char **ppc; + /* NEC SVR4.0.2 mips cc rejects this. */ + struct point {int x, y;}; + static struct point const zero = {0,0}; + /* AIX XL C 1.02.0.0 rejects this. + It does not let you subtract one const X* pointer from another in + an arm of an if-expression whose if-part is not a constant + expression */ + const char *g = "string"; + pcpcc = &g + (g ? g-g : 0); + /* HPUX 7.0 cc rejects these. */ + ++pcpcc; + ppc = (char**) pcpcc; + pcpcc = (char const *const *) ppc; + { /* SCO 3.2v4 cc rejects this. */ + char *t; + char const *s = 0 ? (char *) 0 : (char const *) 0; + + *t++ = 0; + if (s) return 0; + } + { /* Someone thinks the Sun supposedly-ANSI compiler will reject this. */ + int x[] = {25, 17}; + const int *foo = &x[0]; + ++foo; + } + { /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */ + typedef const int *iptr; + iptr p = 0; + ++p; + } + { /* AIX XL C 1.02.0.0 rejects this saying + "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */ + struct s { int j; const int *ap[3]; }; + struct s *b; b->j = 5; + } + { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */ + const int foo = 10; + if (!foo) return 0; + } + return !cs[0] && !zero.x; +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_c_const=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_c_const=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ echo "$as_me:$LINENO: result: $ac_cv_c_const" >&5 +echo "${ECHO_T}$ac_cv_c_const" >&6; } +if test $ac_cv_c_const = no; then + +cat >>confdefs.h <<\_ACEOF +#define const +_ACEOF + +fi + +{ echo "$as_me:$LINENO: checking for uid_t in sys/types.h" >&5 +echo $ECHO_N "checking for uid_t in sys/types.h... $ECHO_C" >&6; } +if test "${ac_cv_type_uid_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "uid_t" >/dev/null 2>&1; then + ac_cv_type_uid_t=yes +else + ac_cv_type_uid_t=no +fi +rm -f conftest* + +fi +{ echo "$as_me:$LINENO: result: $ac_cv_type_uid_t" >&5 +echo "${ECHO_T}$ac_cv_type_uid_t" >&6; } +if test $ac_cv_type_uid_t = no; then + +cat >>confdefs.h <<\_ACEOF +#define uid_t int +_ACEOF + + +cat >>confdefs.h <<\_ACEOF +#define gid_t int +_ACEOF + +fi + +{ echo "$as_me:$LINENO: checking for off_t" >&5 +echo $ECHO_N "checking for off_t... $ECHO_C" >&6; } +if test "${ac_cv_type_off_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +typedef off_t ac__type_new_; +int +main () +{ +if ((ac__type_new_ *) 0) + return 0; +if (sizeof (ac__type_new_)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_type_off_t=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_type_off_t=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ echo "$as_me:$LINENO: result: $ac_cv_type_off_t" >&5 +echo "${ECHO_T}$ac_cv_type_off_t" >&6; } +if test $ac_cv_type_off_t = yes; then + : +else + +cat >>confdefs.h <<_ACEOF +#define off_t long int +_ACEOF + +fi + +{ echo "$as_me:$LINENO: checking for pid_t" >&5 +echo $ECHO_N "checking for pid_t... $ECHO_C" >&6; } +if test "${ac_cv_type_pid_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +typedef pid_t ac__type_new_; +int +main () +{ +if ((ac__type_new_ *) 0) + return 0; +if (sizeof (ac__type_new_)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_type_pid_t=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_type_pid_t=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ echo "$as_me:$LINENO: result: $ac_cv_type_pid_t" >&5 +echo "${ECHO_T}$ac_cv_type_pid_t" >&6; } +if test $ac_cv_type_pid_t = yes; then + : +else + +cat >>confdefs.h <<_ACEOF +#define pid_t int +_ACEOF + +fi + +{ echo "$as_me:$LINENO: checking for mode_t" >&5 +echo $ECHO_N "checking for mode_t... $ECHO_C" >&6; } +if test "${ac_cv_type_mode_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +typedef mode_t ac__type_new_; +int +main () +{ +if ((ac__type_new_ *) 0) + return 0; +if (sizeof (ac__type_new_)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_type_mode_t=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_type_mode_t=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ echo "$as_me:$LINENO: result: $ac_cv_type_mode_t" >&5 +echo "${ECHO_T}$ac_cv_type_mode_t" >&6; } +if test $ac_cv_type_mode_t = yes; then + : +else + +cat >>confdefs.h <<_ACEOF +#define mode_t int +_ACEOF + +fi + +{ echo "$as_me:$LINENO: checking for size_t" >&5 +echo $ECHO_N "checking for size_t... $ECHO_C" >&6; } +if test "${ac_cv_type_size_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +typedef size_t ac__type_new_; +int +main () +{ +if ((ac__type_new_ *) 0) + return 0; +if (sizeof (ac__type_new_)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_type_size_t=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_type_size_t=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ echo "$as_me:$LINENO: result: $ac_cv_type_size_t" >&5 +echo "${ECHO_T}$ac_cv_type_size_t" >&6; } +if test $ac_cv_type_size_t = yes; then + : +else + +cat >>confdefs.h <<_ACEOF +#define size_t unsigned int +_ACEOF + +fi + +{ echo "$as_me:$LINENO: checking for ssize_t" >&5 +echo $ECHO_N "checking for ssize_t... $ECHO_C" >&6; } +if test "${ac_cv_type_ssize_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +typedef ssize_t ac__type_new_; +int +main () +{ +if ((ac__type_new_ *) 0) + return 0; +if (sizeof (ac__type_new_)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_type_ssize_t=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_type_ssize_t=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ echo "$as_me:$LINENO: result: $ac_cv_type_ssize_t" >&5 +echo "${ECHO_T}$ac_cv_type_ssize_t" >&6; } +if test $ac_cv_type_ssize_t = yes; then + : +else + +cat >>confdefs.h <<_ACEOF +#define ssize_t int +_ACEOF + +fi + +{ echo "$as_me:$LINENO: checking for struct stat.st_blksize" >&5 +echo $ECHO_N "checking for struct stat.st_blksize... $ECHO_C" >&6; } +if test "${ac_cv_member_struct_stat_st_blksize+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static struct stat ac_aggr; +if (ac_aggr.st_blksize) +return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_member_struct_stat_st_blksize=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static struct stat ac_aggr; +if (sizeof ac_aggr.st_blksize) +return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_member_struct_stat_st_blksize=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_member_struct_stat_st_blksize=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ echo "$as_me:$LINENO: result: $ac_cv_member_struct_stat_st_blksize" >&5 +echo "${ECHO_T}$ac_cv_member_struct_stat_st_blksize" >&6; } +if test $ac_cv_member_struct_stat_st_blksize = yes; then + +cat >>confdefs.h <<_ACEOF +#define HAVE_STRUCT_STAT_ST_BLKSIZE 1 +_ACEOF + + +cat >>confdefs.h <<\_ACEOF +#define HAVE_ST_BLKSIZE 1 +_ACEOF + +fi + + +{ echo "$as_me:$LINENO: checking whether stat file-mode macros are broken" >&5 +echo $ECHO_N "checking whether stat file-mode macros are broken... $ECHO_C" >&6; } +if test "${ac_cv_header_stat_broken+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +#include + +#if defined S_ISBLK && defined S_IFDIR +extern char c1[S_ISBLK (S_IFDIR) ? -1 : 1]; +#endif + +#if defined S_ISBLK && defined S_IFCHR +extern char c2[S_ISBLK (S_IFCHR) ? -1 : 1]; +#endif + +#if defined S_ISLNK && defined S_IFREG +extern char c3[S_ISLNK (S_IFREG) ? -1 : 1]; +#endif + +#if defined S_ISSOCK && defined S_IFREG +extern char c4[S_ISSOCK (S_IFREG) ? -1 : 1]; +#endif + +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_header_stat_broken=no +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_header_stat_broken=yes +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ echo "$as_me:$LINENO: result: $ac_cv_header_stat_broken" >&5 +echo "${ECHO_T}$ac_cv_header_stat_broken" >&6; } +if test $ac_cv_header_stat_broken = yes; then + +cat >>confdefs.h <<\_ACEOF +#define STAT_MACROS_BROKEN 1 +_ACEOF + +fi + +{ echo "$as_me:$LINENO: checking whether struct tm is in sys/time.h or time.h" >&5 +echo $ECHO_N "checking whether struct tm is in sys/time.h or time.h... $ECHO_C" >&6; } +if test "${ac_cv_struct_tm+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +#include + +int +main () +{ +struct tm tm; + int *p = &tm.tm_sec; + return !p; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_struct_tm=time.h +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_struct_tm=sys/time.h +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ echo "$as_me:$LINENO: result: $ac_cv_struct_tm" >&5 +echo "${ECHO_T}$ac_cv_struct_tm" >&6; } +if test $ac_cv_struct_tm = sys/time.h; then + +cat >>confdefs.h <<\_ACEOF +#define TM_IN_SYS_TIME 1 +_ACEOF + +fi + + +# +# Checks for library functions. +# + + + + + + + + + +for ac_func in c64i a64l fchmod fchown fdatasync fsync lckpwdf strcasestr putpwent +do +as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +{ echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; } +if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define $ac_func to an innocuous variant, in case declares $ac_func. + For example, HP-UX 11i declares gettimeofday. */ +#define $ac_func innocuous_$ac_func + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $ac_func (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef $ac_func + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char $ac_func (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined __stub_$ac_func || defined __stub___$ac_func +choke me +#endif + +int +main () +{ +return $ac_func (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then + eval "$as_ac_var=yes" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + eval "$as_ac_var=no" +fi + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +fi +ac_res=`eval echo '${'$as_ac_var'}'` + { echo "$as_me:$LINENO: result: $ac_res" >&5 +echo "${ECHO_T}$ac_res" >&6; } +if test `eval echo '${'$as_ac_var'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +fi +done + +if test $ac_cv_c_compiler_gnu = yes; then + { echo "$as_me:$LINENO: checking whether $CC needs -traditional" >&5 +echo $ECHO_N "checking whether $CC needs -traditional... $ECHO_C" >&6; } +if test "${ac_cv_prog_gcc_traditional+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_pattern="Autoconf.*'x'" + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +Autoconf TIOCGETP +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "$ac_pattern" >/dev/null 2>&1; then + ac_cv_prog_gcc_traditional=yes +else + ac_cv_prog_gcc_traditional=no +fi +rm -f conftest* + + + if test $ac_cv_prog_gcc_traditional = no; then + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +Autoconf TCGETA +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "$ac_pattern" >/dev/null 2>&1; then + ac_cv_prog_gcc_traditional=yes +fi +rm -f conftest* + + fi +fi +{ echo "$as_me:$LINENO: result: $ac_cv_prog_gcc_traditional" >&5 +echo "${ECHO_T}$ac_cv_prog_gcc_traditional" >&6; } + if test $ac_cv_prog_gcc_traditional = yes; then + CC="$CC -traditional" + fi +fi + +{ echo "$as_me:$LINENO: checking for working memcmp" >&5 +echo $ECHO_N "checking for working memcmp... $ECHO_C" >&6; } +if test "${ac_cv_func_memcmp_working+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$cross_compiling" = yes; then + ac_cv_func_memcmp_working=no +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ + + /* Some versions of memcmp are not 8-bit clean. */ + char c0 = '\100', c1 = '\200', c2 = '\201'; + if (memcmp(&c0, &c2, 1) >= 0 || memcmp(&c1, &c2, 1) >= 0) + return 1; + + /* The Next x86 OpenStep bug shows up only when comparing 16 bytes + or more and with at least one buffer not starting on a 4-byte boundary. + William Lewis provided this test program. */ + { + char foo[21]; + char bar[21]; + int i; + for (i = 0; i < 4; i++) + { + char *a = foo + i; + char *b = bar + i; + strcpy (a, "--------01111111"); + strcpy (b, "--------10000000"); + if (memcmp (a, b, 16) >= 0) + return 1; + } + return 0; + } + + ; + return 0; +} +_ACEOF +rm -f conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_memcmp_working=yes +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +ac_cv_func_memcmp_working=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi + + +fi +{ echo "$as_me:$LINENO: result: $ac_cv_func_memcmp_working" >&5 +echo "${ECHO_T}$ac_cv_func_memcmp_working" >&6; } +test $ac_cv_func_memcmp_working = no && case " $LIBOBJS " in + *" memcmp.$ac_objext "* ) ;; + *) LIBOBJS="$LIBOBJS memcmp.$ac_objext" + ;; +esac + + +{ echo "$as_me:$LINENO: checking return type of signal handlers" >&5 +echo $ECHO_N "checking return type of signal handlers... $ECHO_C" >&6; } +if test "${ac_cv_type_signal+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +#include + +int +main () +{ +return *(signal (0, 0)) (0) == 1; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_type_signal=int +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_type_signal=void +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ echo "$as_me:$LINENO: result: $ac_cv_type_signal" >&5 +echo "${ECHO_T}$ac_cv_type_signal" >&6; } + +cat >>confdefs.h <<_ACEOF +#define RETSIGTYPE $ac_cv_type_signal +_ACEOF + + + + + + +for ac_header in $ac_header_list +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + { echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +ac_res=`eval echo '${'$as_ac_Header'}'` + { echo "$as_me:$LINENO: result: $ac_res" >&5 +echo "${ECHO_T}$ac_res" >&6; } +else + # Is the header compilable? +{ echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; } +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +#include <$ac_header> +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_compiler=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6; } + +# Is the header present? +{ echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; } +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <$ac_header> +_ACEOF +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then + ac_header_preproc=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_preproc=no +fi + +rm -f conftest.err conftest.$ac_ext +{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6; } + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in + yes:no: ) + { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} + ac_header_preproc=yes + ;; + no:yes:* ) + { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 +echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 +echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 +echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} + + ;; +esac +{ echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + eval "$as_ac_Header=\$ac_header_preproc" +fi +ac_res=`eval echo '${'$as_ac_Header'}'` + { echo "$as_me:$LINENO: result: $ac_res" >&5 +echo "${ECHO_T}$ac_res" >&6; } + +fi +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + + + + + + + + +{ echo "$as_me:$LINENO: checking whether utime accepts a null argument" >&5 +echo $ECHO_N "checking whether utime accepts a null argument... $ECHO_C" >&6; } +if test "${ac_cv_func_utime_null+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + rm -f conftest.data; >conftest.data +# Sequent interprets utime(file, 0) to mean use start of epoch. Wrong. +if test "$cross_compiling" = yes; then + ac_cv_func_utime_null=no +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default + #ifdef HAVE_UTIME_H + # include + #endif +int +main () +{ +struct stat s, t; + return ! (stat ("conftest.data", &s) == 0 + && utime ("conftest.data", 0) == 0 + && stat ("conftest.data", &t) == 0 + && t.st_mtime >= s.st_mtime + && t.st_mtime - s.st_mtime < 120); + ; + return 0; +} +_ACEOF +rm -f conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_utime_null=yes +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +ac_cv_func_utime_null=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi + + +fi +{ echo "$as_me:$LINENO: result: $ac_cv_func_utime_null" >&5 +echo "${ECHO_T}$ac_cv_func_utime_null" >&6; } +if test $ac_cv_func_utime_null = yes; then + +cat >>confdefs.h <<\_ACEOF +#define HAVE_UTIME_NULL 1 +_ACEOF + +fi +rm -f conftest.data + + + + + + +for ac_func in gettimeofday re_comp select statfs statvfs +do +as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +{ echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; } +if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define $ac_func to an innocuous variant, in case declares $ac_func. + For example, HP-UX 11i declares gettimeofday. */ +#define $ac_func innocuous_$ac_func + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $ac_func (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef $ac_func + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char $ac_func (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined __stub_$ac_func || defined __stub___$ac_func +choke me +#endif + +int +main () +{ +return $ac_func (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then + eval "$as_ac_var=yes" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + eval "$as_ac_var=no" +fi + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +fi +ac_res=`eval echo '${'$as_ac_var'}'` + { echo "$as_me:$LINENO: result: $ac_res" >&5 +echo "${ECHO_T}$ac_res" >&6; } +if test `eval echo '${'$as_ac_var'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +fi +done + + + + + +for ac_func in getspnam initgroups updwtmp updwtmpx +do +as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +{ echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; } +if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define $ac_func to an innocuous variant, in case declares $ac_func. + For example, HP-UX 11i declares gettimeofday. */ +#define $ac_func innocuous_$ac_func + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $ac_func (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef $ac_func + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char $ac_func (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined __stub_$ac_func || defined __stub___$ac_func +choke me +#endif + +int +main () +{ +return $ac_func (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then + eval "$as_ac_var=yes" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + eval "$as_ac_var=no" +fi + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +fi +ac_res=`eval echo '${'$as_ac_var'}'` + { echo "$as_me:$LINENO: result: $ac_res" >&5 +echo "${ECHO_T}$ac_res" >&6; } +if test `eval echo '${'$as_ac_var'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +fi +done + + +# +# Check for usefull external programs +# +# Extract the first word of "compress", so it can be a program name with args. +set dummy compress; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_path_COMPRESS+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $COMPRESS in + [\\/]* | ?:[\\/]*) + ac_cv_path_COMPRESS="$COMPRESS" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_path_COMPRESS="$as_dir/$ac_word$ac_exec_ext" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + + test -z "$ac_cv_path_COMPRESS" && ac_cv_path_COMPRESS="no-compress-found-during-configure" + ;; +esac +fi +COMPRESS=$ac_cv_path_COMPRESS +if test -n "$COMPRESS"; then + { echo "$as_me:$LINENO: result: $COMPRESS" >&5 +echo "${ECHO_T}$COMPRESS" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + +# Extract the first word of "gzip", so it can be a program name with args. +set dummy gzip; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_path_GZIP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $GZIP in + [\\/]* | ?:[\\/]*) + ac_cv_path_GZIP="$GZIP" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_path_GZIP="$as_dir/$ac_word$ac_exec_ext" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + + test -z "$ac_cv_path_GZIP" && ac_cv_path_GZIP="no-gzip-found-during-configure" + ;; +esac +fi +GZIP=$ac_cv_path_GZIP +if test -n "$GZIP"; then + { echo "$as_me:$LINENO: result: $GZIP" >&5 +echo "${ECHO_T}$GZIP" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + +# Extract the first word of "arc", so it can be a program name with args. +set dummy arc; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_path_ARC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $ARC in + [\\/]* | ?:[\\/]*) + ac_cv_path_ARC="$ARC" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_path_ARC="$as_dir/$ac_word$ac_exec_ext" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + + ;; +esac +fi +ARC=$ac_cv_path_ARC +if test -n "$ARC"; then + { echo "$as_me:$LINENO: result: $ARC" >&5 +echo "${ECHO_T}$ARC" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + +# Extract the first word of "nomarch", so it can be a program name with args. +set dummy nomarch; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_path_NOMARCH+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $NOMARCH in + [\\/]* | ?:[\\/]*) + ac_cv_path_NOMARCH="$NOMARCH" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_path_NOMARCH="$as_dir/$ac_word$ac_exec_ext" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + + ;; +esac +fi +NOMARCH=$ac_cv_path_NOMARCH +if test -n "$NOMARCH"; then + { echo "$as_me:$LINENO: result: $NOMARCH" >&5 +echo "${ECHO_T}$NOMARCH" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + +# Extract the first word of "arj", so it can be a program name with args. +set dummy arj; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_path_ARJ+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $ARJ in + [\\/]* | ?:[\\/]*) + ac_cv_path_ARJ="$ARJ" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_path_ARJ="$as_dir/$ac_word$ac_exec_ext" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + + ;; +esac +fi +ARJ=$ac_cv_path_ARJ +if test -n "$ARJ"; then + { echo "$as_me:$LINENO: result: $ARJ" >&5 +echo "${ECHO_T}$ARJ" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + +# Extract the first word of "unarj", so it can be a program name with args. +set dummy unarj; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_path_UNARJ+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $UNARJ in + [\\/]* | ?:[\\/]*) + ac_cv_path_UNARJ="$UNARJ" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_path_UNARJ="$as_dir/$ac_word$ac_exec_ext" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + + ;; +esac +fi +UNARJ=$ac_cv_path_UNARJ +if test -n "$UNARJ"; then + { echo "$as_me:$LINENO: result: $UNARJ" >&5 +echo "${ECHO_T}$UNARJ" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + +# Extract the first word of "lha", so it can be a program name with args. +set dummy lha; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_path_LHA+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $LHA in + [\\/]* | ?:[\\/]*) + ac_cv_path_LHA="$LHA" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_path_LHA="$as_dir/$ac_word$ac_exec_ext" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + + ;; +esac +fi +LHA=$ac_cv_path_LHA +if test -n "$LHA"; then + { echo "$as_me:$LINENO: result: $LHA" >&5 +echo "${ECHO_T}$LHA" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + +# Extract the first word of "rar", so it can be a program name with args. +set dummy rar; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_path_RAR+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $RAR in + [\\/]* | ?:[\\/]*) + ac_cv_path_RAR="$RAR" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_path_RAR="$as_dir/$ac_word$ac_exec_ext" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + + ;; +esac +fi +RAR=$ac_cv_path_RAR +if test -n "$RAR"; then + { echo "$as_me:$LINENO: result: $RAR" >&5 +echo "${ECHO_T}$RAR" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + +# Extract the first word of "unrar", so it can be a program name with args. +set dummy unrar; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_path_UNRAR+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $UNRAR in + [\\/]* | ?:[\\/]*) + ac_cv_path_UNRAR="$UNRAR" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_path_UNRAR="$as_dir/$ac_word$ac_exec_ext" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + + ;; +esac +fi +UNRAR=$ac_cv_path_UNRAR +if test -n "$UNRAR"; then + { echo "$as_me:$LINENO: result: $UNRAR" >&5 +echo "${ECHO_T}$UNRAR" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + +# Extract the first word of "tar", so it can be a program name with args. +set dummy tar; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_path_TAR+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $TAR in + [\\/]* | ?:[\\/]*) + ac_cv_path_TAR="$TAR" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_path_TAR="$as_dir/$ac_word$ac_exec_ext" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + + ;; +esac +fi +TAR=$ac_cv_path_TAR +if test -n "$TAR"; then + { echo "$as_me:$LINENO: result: $TAR" >&5 +echo "${ECHO_T}$TAR" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + +# Extract the first word of "zip", so it can be a program name with args. +set dummy zip; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_path_ZIP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $ZIP in + [\\/]* | ?:[\\/]*) + ac_cv_path_ZIP="$ZIP" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_path_ZIP="$as_dir/$ac_word$ac_exec_ext" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + + ;; +esac +fi +ZIP=$ac_cv_path_ZIP +if test -n "$ZIP"; then + { echo "$as_me:$LINENO: result: $ZIP" >&5 +echo "${ECHO_T}$ZIP" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + +# Extract the first word of "unzip", so it can be a program name with args. +set dummy unzip; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_path_UNZIP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $UNZIP in + [\\/]* | ?:[\\/]*) + ac_cv_path_UNZIP="$UNZIP" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_path_UNZIP="$as_dir/$ac_word$ac_exec_ext" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + + ;; +esac +fi +UNZIP=$ac_cv_path_UNZIP +if test -n "$UNZIP"; then + { echo "$as_me:$LINENO: result: $UNZIP" >&5 +echo "${ECHO_T}$UNZIP" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + +# Extract the first word of "zoo", so it can be a program name with args. +set dummy zoo; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_path_ZOO+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $ZOO in + [\\/]* | ?:[\\/]*) + ac_cv_path_ZOO="$ZOO" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_path_ZOO="$as_dir/$ac_word$ac_exec_ext" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + + ;; +esac +fi +ZOO=$ac_cv_path_ZOO +if test -n "$ZOO"; then + { echo "$as_me:$LINENO: result: $ZOO" >&5 +echo "${ECHO_T}$ZOO" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + +# Extract the first word of "ha", so it can be a program name with args. +set dummy ha; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_path_HA+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $HA in + [\\/]* | ?:[\\/]*) + ac_cv_path_HA="$HA" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_path_HA="$as_dir/$ac_word$ac_exec_ext" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + + ;; +esac +fi +HA=$ac_cv_path_HA +if test -n "$HA"; then + { echo "$as_me:$LINENO: result: $HA" >&5 +echo "${ECHO_T}$HA" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + +# Extract the first word of "antivir", so it can be a program name with args. +set dummy antivir; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_path_ANTIVIR+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $ANTIVIR in + [\\/]* | ?:[\\/]*) + ac_cv_path_ANTIVIR="$ANTIVIR" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_path_ANTIVIR="$as_dir/$ac_word$ac_exec_ext" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + + ;; +esac +fi +ANTIVIR=$ac_cv_path_ANTIVIR +if test -n "$ANTIVIR"; then + { echo "$as_me:$LINENO: result: $ANTIVIR" >&5 +echo "${ECHO_T}$ANTIVIR" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + +# Extract the first word of "fpscan", so it can be a program name with args. +set dummy fpscan; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_path_FPROT+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $FPROT in + [\\/]* | ?:[\\/]*) + ac_cv_path_FPROT="$FPROT" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_path_FPROT="$as_dir/$ac_word$ac_exec_ext" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + + ;; +esac +fi +FPROT=$ac_cv_path_FPROT +if test -n "$FPROT"; then + { echo "$as_me:$LINENO: result: $FPROT" >&5 +echo "${ECHO_T}$FPROT" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + +# Extract the first word of "uvscan", so it can be a program name with args. +set dummy uvscan; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_path_UVSCAN+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $UVSCAN in + [\\/]* | ?:[\\/]*) + ac_cv_path_UVSCAN="$UVSCAN" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_path_UVSCAN="$as_dir/$ac_word$ac_exec_ext" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + + ;; +esac +fi +UVSCAN=$ac_cv_path_UVSCAN +if test -n "$UVSCAN"; then + { echo "$as_me:$LINENO: result: $UVSCAN" >&5 +echo "${ECHO_T}$UVSCAN" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + +# Extract the first word of "clamscan", so it can be a program name with args. +set dummy clamscan; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_path_CLAMAV+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $CLAMAV in + [\\/]* | ?:[\\/]*) + ac_cv_path_CLAMAV="$CLAMAV" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_path_CLAMAV="$as_dir/$ac_word$ac_exec_ext" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + + ;; +esac +fi +CLAMAV=$ac_cv_path_CLAMAV +if test -n "$CLAMAV"; then + { echo "$as_me:$LINENO: result: $CLAMAV" >&5 +echo "${ECHO_T}$CLAMAV" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + +# Extract the first word of "rb", so it can be a program name with args. +set dummy rb; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_path_RB+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $RB in + [\\/]* | ?:[\\/]*) + ac_cv_path_RB="$RB" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_path_RB="$as_dir/$ac_word$ac_exec_ext" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + + ;; +esac +fi +RB=$ac_cv_path_RB +if test -n "$RB"; then + { echo "$as_me:$LINENO: result: $RB" >&5 +echo "${ECHO_T}$RB" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + +# Extract the first word of "lrb", so it can be a program name with args. +set dummy lrb; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_path_RB+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $RB in + [\\/]* | ?:[\\/]*) + ac_cv_path_RB="$RB" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_path_RB="$as_dir/$ac_word$ac_exec_ext" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + + ;; +esac +fi +RB=$ac_cv_path_RB +if test -n "$RB"; then + { echo "$as_me:$LINENO: result: $RB" >&5 +echo "${ECHO_T}$RB" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + +# Extract the first word of "sb", so it can be a program name with args. +set dummy sb; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_path_SB+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $SB in + [\\/]* | ?:[\\/]*) + ac_cv_path_SB="$SB" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_path_SB="$as_dir/$ac_word$ac_exec_ext" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + + ;; +esac +fi +SB=$ac_cv_path_SB +if test -n "$SB"; then + { echo "$as_me:$LINENO: result: $SB" >&5 +echo "${ECHO_T}$SB" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + +# Extract the first word of "lsb", so it can be a program name with args. +set dummy lsb; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_path_SB+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $SB in + [\\/]* | ?:[\\/]*) + ac_cv_path_SB="$SB" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_path_SB="$as_dir/$ac_word$ac_exec_ext" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + + ;; +esac +fi +SB=$ac_cv_path_SB +if test -n "$SB"; then + { echo "$as_me:$LINENO: result: $SB" >&5 +echo "${ECHO_T}$SB" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + +# Extract the first word of "rz", so it can be a program name with args. +set dummy rz; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_path_RZ+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $RZ in + [\\/]* | ?:[\\/]*) + ac_cv_path_RZ="$RZ" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_path_RZ="$as_dir/$ac_word$ac_exec_ext" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + + ;; +esac +fi +RZ=$ac_cv_path_RZ +if test -n "$RZ"; then + { echo "$as_me:$LINENO: result: $RZ" >&5 +echo "${ECHO_T}$RZ" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + +# Extract the first word of "lrz", so it can be a program name with args. +set dummy lrz; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_path_RZ+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $RZ in + [\\/]* | ?:[\\/]*) + ac_cv_path_RZ="$RZ" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_path_RZ="$as_dir/$ac_word$ac_exec_ext" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + + ;; +esac +fi +RZ=$ac_cv_path_RZ +if test -n "$RZ"; then + { echo "$as_me:$LINENO: result: $RZ" >&5 +echo "${ECHO_T}$RZ" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + +# Extract the first word of "sz", so it can be a program name with args. +set dummy sz; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_path_SZ+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $SZ in + [\\/]* | ?:[\\/]*) + ac_cv_path_SZ="$SZ" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_path_SZ="$as_dir/$ac_word$ac_exec_ext" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + + ;; +esac +fi +SZ=$ac_cv_path_SZ +if test -n "$SZ"; then + { echo "$as_me:$LINENO: result: $SZ" >&5 +echo "${ECHO_T}$SZ" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + +# Extract the first word of "lsz", so it can be a program name with args. +set dummy lsz; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_path_SZ+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $SZ in + [\\/]* | ?:[\\/]*) + ac_cv_path_SZ="$SZ" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_path_SZ="$as_dir/$ac_word$ac_exec_ext" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + + ;; +esac +fi +SZ=$ac_cv_path_SZ +if test -n "$SZ"; then + { echo "$as_me:$LINENO: result: $SZ" >&5 +echo "${ECHO_T}$SZ" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + +# Extract the first word of "golded", so it can be a program name with args. +set dummy golded; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_path_GOLDEDBIN+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $GOLDEDBIN in + [\\/]* | ?:[\\/]*) + ac_cv_path_GOLDEDBIN="$GOLDEDBIN" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_path_GOLDEDBIN="$as_dir/$ac_word$ac_exec_ext" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + + ;; +esac +fi +GOLDEDBIN=$ac_cv_path_GOLDEDBIN +if test -n "$GOLDEDBIN"; then + { echo "$as_me:$LINENO: result: $GOLDEDBIN" >&5 +echo "${ECHO_T}$GOLDEDBIN" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + +# Extract the first word of "gedlnx", so it can be a program name with args. +set dummy gedlnx; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_path_GOLDEDBIN+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $GOLDEDBIN in + [\\/]* | ?:[\\/]*) + ac_cv_path_GOLDEDBIN="$GOLDEDBIN" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_path_GOLDEDBIN="$as_dir/$ac_word$ac_exec_ext" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + + ;; +esac +fi +GOLDEDBIN=$ac_cv_path_GOLDEDBIN +if test -n "$GOLDEDBIN"; then + { echo "$as_me:$LINENO: result: $GOLDEDBIN" >&5 +echo "${ECHO_T}$GOLDEDBIN" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + +# Extract the first word of "goldnode", so it can be a program name with args. +set dummy goldnode; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_path_GOLDNODE+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $GOLDNODE in + [\\/]* | ?:[\\/]*) + ac_cv_path_GOLDNODE="$GOLDNODE" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_path_GOLDNODE="$as_dir/$ac_word$ac_exec_ext" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + + ;; +esac +fi +GOLDNODE=$ac_cv_path_GOLDNODE +if test -n "$GOLDNODE"; then + { echo "$as_me:$LINENO: result: $GOLDNODE" >&5 +echo "${ECHO_T}$GOLDNODE" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + +# Extract the first word of "gnlnx", so it can be a program name with args. +set dummy gnlnx; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_path_GOLDNODE+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $GOLDNODE in + [\\/]* | ?:[\\/]*) + ac_cv_path_GOLDNODE="$GOLDNODE" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_path_GOLDNODE="$as_dir/$ac_word$ac_exec_ext" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + + ;; +esac +fi +GOLDNODE=$ac_cv_path_GOLDNODE +if test -n "$GOLDNODE"; then + { echo "$as_me:$LINENO: result: $GOLDNODE" >&5 +echo "${ECHO_T}$GOLDNODE" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + +# Extract the first word of "convert", so it can be a program name with args. +set dummy convert; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_path_CONVERT+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $CONVERT in + [\\/]* | ?:[\\/]*) + ac_cv_path_CONVERT="$CONVERT" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_path_CONVERT="$as_dir/$ac_word$ac_exec_ext" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + + ;; +esac +fi +CONVERT=$ac_cv_path_CONVERT +if test -n "$CONVERT"; then + { echo "$as_me:$LINENO: result: $CONVERT" >&5 +echo "${ECHO_T}$CONVERT" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + + + +# +# Check for GeoIP support, see http://www.maxmind.com/ +# +GEOIPSUP=No +{ echo "$as_me:$LINENO: checking for GeoIP_new in -lGeoIP" >&5 +echo $ECHO_N "checking for GeoIP_new in -lGeoIP... $ECHO_C" >&6; } +if test "${ac_cv_lib_GeoIP_GeoIP_new+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lGeoIP $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char GeoIP_new (); +int +main () +{ +return GeoIP_new (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then + ac_cv_lib_GeoIP_GeoIP_new=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_lib_GeoIP_GeoIP_new=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ echo "$as_me:$LINENO: result: $ac_cv_lib_GeoIP_GeoIP_new" >&5 +echo "${ECHO_T}$ac_cv_lib_GeoIP_GeoIP_new" >&6; } +if test $ac_cv_lib_GeoIP_GeoIP_new = yes; then + result=yes +else + result=no +fi + +if test "$result" = "yes"; then + LIBS="$LIBS -lGeoIP" + + +for ac_header in GeoIP.h GeoIPCity.h +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + { echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +ac_res=`eval echo '${'$as_ac_Header'}'` + { echo "$as_me:$LINENO: result: $ac_res" >&5 +echo "${ECHO_T}$ac_res" >&6; } +else + # Is the header compilable? +{ echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; } +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +#include <$ac_header> +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_compiler=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6; } + +# Is the header present? +{ echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; } +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <$ac_header> +_ACEOF +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then + ac_header_preproc=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_preproc=no +fi + +rm -f conftest.err conftest.$ac_ext +{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6; } + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in + yes:no: ) + { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} + ac_header_preproc=yes + ;; + no:yes:* ) + { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 +echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 +echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 +echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} + + ;; +esac +{ echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + eval "$as_ac_Header=\$ac_header_preproc" +fi +ac_res=`eval echo '${'$as_ac_Header'}'` + { echo "$as_me:$LINENO: result: $ac_res" >&5 +echo "${ECHO_T}$ac_res" >&6; } + +fi +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + GEOIPSUP=Yes +else + GEOIPSUP=No +fi + +done + +fi + + +# +# FIX DEL for Del!=207, this was default upto 207 or 126 if no argument +# +# Check whether --enable-gbkdel was given. +if test "${enable_gbkdel+set}" = set; then + enableval=$enable_gbkdel; gbkdel=$enableval +else + gbkdel=no +fi + +if test "$gbkdel" = "yes"; then + GBK_DEL=126 + DEL=$GBK_DEL + echo "checking delete key... changed into $DEL" +else + DEL="default" + GBK_DEL=0 + echo "checking delete key... default" +fi +cat >>confdefs.h <<_ACEOF +#define GBK_DEL $GBK_DEL +_ACEOF + + + +{ echo "$as_me:$LINENO: checking location of joe editor" >&5 +echo $ECHO_N "checking location of joe editor... $ECHO_C" >&6; } +for joebin in /usr/bin /usr/local/bin /usr/pkg/bin NONE; do + if test "$joebin" = "NONE"; then + { echo "$as_me:$LINENO: result: not found" >&5 +echo "${ECHO_T}not found" >&6; } + elif test -x $joebin/joe; then + + { echo "$as_me:$LINENO: result: $joebin" >&5 +echo "${ECHO_T}$joebin" >&6; } + break + fi +done +{ echo "$as_me:$LINENO: checking location of joe rc files" >&5 +echo $ECHO_N "checking location of joe rc files... $ECHO_C" >&6; } +for joelib in /etc/joe /usr/lib/joe /usr/local/etc /usr/local/etc/joe /usr/local/lib/joe /usr/local/lib /usr/pkg/lib /usr/pkg/etc NONE; do + if test "$joelib" = "NONE"; then + { echo "$as_me:$LINENO: result: not found" >&5 +echo "${ECHO_T}not found" >&6; } + elif test -f $joelib/joerc; then + + { echo "$as_me:$LINENO: result: $joelib" >&5 +echo "${ECHO_T}$joelib" >&6; } + break + fi +done + +{ echo "$as_me:$LINENO: checking location of utmp" >&5 +echo $ECHO_N "checking location of utmp... $ECHO_C" >&6; } +for utmpdir in /var/run /var/adm /usr/adm /etc NONE; do + if test "$utmpdir" = "NONE"; then + { echo "$as_me:$LINENO: WARNING: utmp file not found" >&5 +echo "$as_me: WARNING: utmp file not found" >&2;} + elif test -f $utmpdir/utmp; then + cat >>confdefs.h <<_ACEOF +#define _UTMP_FILE "$utmpdir/utmp" +_ACEOF + + { echo "$as_me:$LINENO: result: $utmpdir" >&5 +echo "${ECHO_T}$utmpdir" >&6; } + break + fi +done + +{ echo "$as_me:$LINENO: checking location of lastlog/wtmp" >&5 +echo $ECHO_N "checking location of lastlog/wtmp... $ECHO_C" >&6; } +for logdir in /var/log /var/adm /usr/adm /etc; do + if test -d $logdir; then + cat >>confdefs.h <<_ACEOF +#define _WTMP_FILE "$logdir/wtmp" +_ACEOF + + cat >>confdefs.h <<_ACEOF +#define LASTLOG_FILE "$logdir/lastlog" +_ACEOF + + { echo "$as_me:$LINENO: result: $logdir" >&5 +echo "${ECHO_T}$logdir" >&6; } + break + fi +done + +{ echo "$as_me:$LINENO: checking location of vpopmail" >&5 +echo $ECHO_N "checking location of vpopmail... $ECHO_C" >&6; } +for vpop in /var/qmail/vpopmail/bin NONE; do + if test "$vpop" = "NONE"; then + { echo "$as_me:$LINENO: result: not found" >&5 +echo "${ECHO_T}not found" >&6; } + elif test -x $vpop/vadduser; then + cat >>confdefs.h <<_ACEOF +#define _VPOPMAIL_PATH "$vpop" +_ACEOF + + { echo "$as_me:$LINENO: result: $vpop" >&5 +echo "${ECHO_T}$vpop" >&6; } + break + fi +done + + +ac_config_files="$ac_config_files Makefile.global paths.h unix/login.defs INSTALL FILE_ID.DIZ script/editor html/index.htm html/basic.html html/upgrade.html" + +cat >confcache <<\_ACEOF +# This file is a shell script that caches the results of configure +# tests run on this system so they can be shared between configure +# scripts and configure runs, see configure's option --config-cache. +# It is not useful on other systems. If it contains results you don't +# want to keep, you may remove or edit it. +# +# config.status only pays attention to the cache file if you give it +# the --recheck option to rerun configure. +# +# `ac_cv_env_foo' variables (set or unset) will be overridden when +# loading this file, other *unset* `ac_cv_foo' will be assigned the +# following values. + +_ACEOF + +# The following way of writing the cache mishandles newlines in values, +# but we know of no workaround that is simple, portable, and efficient. +# So, we kill variables containing newlines. +# Ultrix sh set writes to stderr and can't be redirected directly, +# and sets the high bit in the cache file unless we assign to the vars. +( + for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do + eval ac_val=\$$ac_var + case $ac_val in #( + *${as_nl}*) + case $ac_var in #( + *_cv_*) { echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5 +echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;; + esac + case $ac_var in #( + _ | IFS | as_nl) ;; #( + *) $as_unset $ac_var ;; + esac ;; + esac + done + + (set) 2>&1 | + case $as_nl`(ac_space=' '; set) 2>&1` in #( + *${as_nl}ac_space=\ *) + # `set' does not quote correctly, so add quotes (double-quote + # substitution turns \\\\ into \\, and sed turns \\ into \). + sed -n \ + "s/'/'\\\\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" + ;; #( + *) + # `set' quotes correctly as required by POSIX, so do not add quotes. + sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" + ;; + esac | + sort +) | + sed ' + /^ac_cv_env_/b end + t clear + :clear + s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ + t end + s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ + :end' >>confcache +if diff "$cache_file" confcache >/dev/null 2>&1; then :; else + if test -w "$cache_file"; then + test "x$cache_file" != "x/dev/null" && + { echo "$as_me:$LINENO: updating cache $cache_file" >&5 +echo "$as_me: updating cache $cache_file" >&6;} + cat confcache >$cache_file + else + { echo "$as_me:$LINENO: not updating unwritable cache $cache_file" >&5 +echo "$as_me: not updating unwritable cache $cache_file" >&6;} + fi +fi +rm -f confcache + +test "x$prefix" = xNONE && prefix=$ac_default_prefix +# Let make expand exec_prefix. +test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' + +DEFS=-DHAVE_CONFIG_H + +ac_libobjs= +ac_ltlibobjs= +for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue + # 1. Remove the extension, and $U if already installed. + ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' + ac_i=`echo "$ac_i" | sed "$ac_script"` + # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR + # will be set to the directory where LIBOBJS objects are built. + ac_libobjs="$ac_libobjs \${LIBOBJDIR}$ac_i\$U.$ac_objext" + ac_ltlibobjs="$ac_ltlibobjs \${LIBOBJDIR}$ac_i"'$U.lo' +done +LIBOBJS=$ac_libobjs + +LTLIBOBJS=$ac_ltlibobjs + + + +: ${CONFIG_STATUS=./config.status} +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files $CONFIG_STATUS" +{ echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5 +echo "$as_me: creating $CONFIG_STATUS" >&6;} +cat >$CONFIG_STATUS <<_ACEOF +#! $SHELL +# Generated by $as_me. +# Run this file to recreate the current configuration. +# Compiler output produced by configure, useful for debugging +# configure, is in config.log if it exists. + +debug=false +ac_cs_recheck=false +ac_cs_silent=false +SHELL=\${CONFIG_SHELL-$SHELL} +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF +## --------------------- ## +## M4sh Initialization. ## +## --------------------- ## + +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in + *posix*) set -o posix ;; +esac + +fi + + + + +# PATH needs CR +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + echo "#! /bin/sh" >conf$$.sh + echo "exit 0" >>conf$$.sh + chmod +x conf$$.sh + if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then + PATH_SEPARATOR=';' + else + PATH_SEPARATOR=: + fi + rm -f conf$$.sh +fi + +# Support unset when possible. +if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then + as_unset=unset +else + as_unset=false +fi + + +# IFS +# We need space, tab and new line, in precisely that order. Quoting is +# there to prevent editors from complaining about space-tab. +# (If _AS_PATH_WALK were called with IFS unset, it would disable word +# splitting by setting IFS to empty value.) +as_nl=' +' +IFS=" "" $as_nl" + +# Find who we are. Look in the path if we contain no directory separator. +case $0 in + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break +done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as `sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + { (exit 1); exit 1; } +fi + +# Work around bugs in pre-3.0 UWIN ksh. +for as_var in ENV MAIL MAILPATH +do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var +done +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +for as_var in \ + LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ + LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ + LC_TELEPHONE LC_TIME +do + if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then + eval $as_var=C; export $as_var + else + ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var + fi +done + +# Required to use basename. +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + + +# Name of the executable. +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# CDPATH. +$as_unset CDPATH + + + + as_lineno_1=$LINENO + as_lineno_2=$LINENO + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || { + + # Create $as_me.lineno as a copy of $as_myself, but with $LINENO + # uniformly replaced by the line number. The first 'sed' inserts a + # line-number line after each line using $LINENO; the second 'sed' + # does the real work. The second script uses 'N' to pair each + # line-number line with the line containing $LINENO, and appends + # trailing '-' during substitution so that $LINENO is not a special + # case at line end. + # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the + # scripts with optimization help from Paolo Bonzini. Blame Lee + # E. McMahon (1931-1989) for sed's syntax. :-) + sed -n ' + p + /[$]LINENO/= + ' <$as_myself | + sed ' + s/[$]LINENO.*/&-/ + t lineno + b + :lineno + N + :loop + s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ + t loop + s/-\n.*// + ' >$as_me.lineno && + chmod +x "$as_me.lineno" || + { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 + { (exit 1); exit 1; }; } + + # Don't try to exec as it changes $[0], causing all sort of problems + # (the dirname of $[0] is not the place where we might find the + # original and so on. Autoconf is especially sensitive to this). + . "./$as_me.lineno" + # Exit status is that of the last command. + exit +} + + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in +-n*) + case `echo 'x\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + *) ECHO_C='\c';; + esac;; +*) + ECHO_N='-n';; +esac + +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir +fi +echo >conf$$.file +if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -p'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -p' +elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln +else + as_ln_s='cp -p' +fi +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null + +if mkdir -p . 2>/dev/null; then + as_mkdir_p=: +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + +if test -x / >/dev/null 2>&1; then + as_test_x='test -x' +else + if ls -dL / >/dev/null 2>&1; then + as_ls_L_option=L + else + as_ls_L_option= + fi + as_test_x=' + eval sh -c '\'' + if test -d "$1"; then + test -d "$1/."; + else + case $1 in + -*)set "./$1";; + esac; + case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in + ???[sx]*):;;*)false;;esac;fi + '\'' sh + ' +fi +as_executable_p=$as_test_x + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + + +exec 6>&1 + +# Save the log message, to keep $[0] and so on meaningful, and to +# report actual input values of CONFIG_FILES etc. instead of their +# values after options handling. +ac_log=" +This file was extended by $as_me, which was +generated by GNU Autoconf 2.61. Invocation command line was + + CONFIG_FILES = $CONFIG_FILES + CONFIG_HEADERS = $CONFIG_HEADERS + CONFIG_LINKS = $CONFIG_LINKS + CONFIG_COMMANDS = $CONFIG_COMMANDS + $ $0 $@ + +on `(hostname || uname -n) 2>/dev/null | sed 1q` +" + +_ACEOF + +cat >>$CONFIG_STATUS <<_ACEOF +# Files that config.status was made for. +config_files="$ac_config_files" +config_headers="$ac_config_headers" +config_commands="$ac_config_commands" + +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF +ac_cs_usage="\ +\`$as_me' instantiates files from templates according to the +current configuration. + +Usage: $0 [OPTIONS] [FILE]... + + -h, --help print this help, then exit + -V, --version print version number and configuration settings, then exit + -q, --quiet do not print progress messages + -d, --debug don't remove temporary files + --recheck update $as_me by reconfiguring in the same conditions + --file=FILE[:TEMPLATE] + instantiate the configuration file FILE + --header=FILE[:TEMPLATE] + instantiate the configuration header FILE + +Configuration files: +$config_files + +Configuration headers: +$config_headers + +Configuration commands: +$config_commands + +Report bugs to ." + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF +ac_cs_version="\\ +config.status +configured by $0, generated by GNU Autoconf 2.61, + with options \\"`echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\" + +Copyright (C) 2006 Free Software Foundation, Inc. +This config.status script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it." + +ac_pwd='$ac_pwd' +srcdir='$srcdir' +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF +# If no file are specified by the user, then we need to provide default +# value. By we need to know if files were specified by the user. +ac_need_defaults=: +while test $# != 0 +do + case $1 in + --*=*) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` + ac_shift=: + ;; + *) + ac_option=$1 + ac_optarg=$2 + ac_shift=shift + ;; + esac + + case $ac_option in + # Handling of the options. + -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) + ac_cs_recheck=: ;; + --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) + echo "$ac_cs_version"; exit ;; + --debug | --debu | --deb | --de | --d | -d ) + debug=: ;; + --file | --fil | --fi | --f ) + $ac_shift + CONFIG_FILES="$CONFIG_FILES $ac_optarg" + ac_need_defaults=false;; + --header | --heade | --head | --hea ) + $ac_shift + CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg" + ac_need_defaults=false;; + --he | --h) + # Conflict between --help and --header + { echo "$as_me: error: ambiguous option: $1 +Try \`$0 --help' for more information." >&2 + { (exit 1); exit 1; }; };; + --help | --hel | -h ) + echo "$ac_cs_usage"; exit ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil | --si | --s) + ac_cs_silent=: ;; + + # This is an error. + -*) { echo "$as_me: error: unrecognized option: $1 +Try \`$0 --help' for more information." >&2 + { (exit 1); exit 1; }; } ;; + + *) ac_config_targets="$ac_config_targets $1" + ac_need_defaults=false ;; + + esac + shift +done + +ac_configure_extra_args= + +if $ac_cs_silent; then + exec 6>/dev/null + ac_configure_extra_args="$ac_configure_extra_args --silent" +fi + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF +if \$ac_cs_recheck; then + echo "running CONFIG_SHELL=$SHELL $SHELL $0 "$ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6 + CONFIG_SHELL=$SHELL + export CONFIG_SHELL + exec $SHELL "$0"$ac_configure_args \$ac_configure_extra_args --no-create --no-recursion +fi + +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF +exec 5>>config.log +{ + echo + sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX +## Running $as_me. ## +_ASBOX + echo "$ac_log" +} >&5 + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF +# +# INIT-COMMANDS +# + + +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF + +# Handling of arguments. +for ac_config_target in $ac_config_targets +do + case $ac_config_target in + "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; + "default-1") CONFIG_COMMANDS="$CONFIG_COMMANDS default-1" ;; + "Makefile.global") CONFIG_FILES="$CONFIG_FILES Makefile.global" ;; + "paths.h") CONFIG_FILES="$CONFIG_FILES paths.h" ;; + "unix/login.defs") CONFIG_FILES="$CONFIG_FILES unix/login.defs" ;; + "INSTALL") CONFIG_FILES="$CONFIG_FILES INSTALL" ;; + "FILE_ID.DIZ") CONFIG_FILES="$CONFIG_FILES FILE_ID.DIZ" ;; + "script/editor") CONFIG_FILES="$CONFIG_FILES script/editor" ;; + "html/index.htm") CONFIG_FILES="$CONFIG_FILES html/index.htm" ;; + "html/basic.html") CONFIG_FILES="$CONFIG_FILES html/basic.html" ;; + "html/upgrade.html") CONFIG_FILES="$CONFIG_FILES html/upgrade.html" ;; + + *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5 +echo "$as_me: error: invalid argument: $ac_config_target" >&2;} + { (exit 1); exit 1; }; };; + esac +done + + +# If the user did not use the arguments to specify the items to instantiate, +# then the envvar interface is used. Set only those that are not. +# We use the long form for the default assignment because of an extremely +# bizarre bug on SunOS 4.1.3. +if $ac_need_defaults; then + test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files + test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers + test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands +fi + +# Have a temporary directory for convenience. Make it in the build tree +# simply because there is no reason against having it here, and in addition, +# creating and moving files from /tmp can sometimes cause problems. +# Hook for its removal unless debugging. +# Note that there is a small window in which the directory will not be cleaned: +# after its creation but before its name has been assigned to `$tmp'. +$debug || +{ + tmp= + trap 'exit_status=$? + { test -z "$tmp" || test ! -d "$tmp" || rm -fr "$tmp"; } && exit $exit_status +' 0 + trap '{ (exit 1); exit 1; }' 1 2 13 15 +} +# Create a (secure) tmp directory for tmp files. + +{ + tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && + test -n "$tmp" && test -d "$tmp" +} || +{ + tmp=./conf$$-$RANDOM + (umask 077 && mkdir "$tmp") +} || +{ + echo "$me: cannot create a temporary directory in ." >&2 + { (exit 1); exit 1; } +} + +# +# Set up the sed scripts for CONFIG_FILES section. +# + +# No need to generate the scripts if there are no CONFIG_FILES. +# This happens for instance when ./config.status config.h +if test -n "$CONFIG_FILES"; then + +_ACEOF + + + +ac_delim='%!_!# ' +for ac_last_try in false false false false false :; do + cat >conf$$subs.sed <<_ACEOF +SHELL!$SHELL$ac_delim +PATH_SEPARATOR!$PATH_SEPARATOR$ac_delim +PACKAGE_NAME!$PACKAGE_NAME$ac_delim +PACKAGE_TARNAME!$PACKAGE_TARNAME$ac_delim +PACKAGE_VERSION!$PACKAGE_VERSION$ac_delim +PACKAGE_STRING!$PACKAGE_STRING$ac_delim +PACKAGE_BUGREPORT!$PACKAGE_BUGREPORT$ac_delim +exec_prefix!$exec_prefix$ac_delim +prefix!$prefix$ac_delim +program_transform_name!$program_transform_name$ac_delim +bindir!$bindir$ac_delim +sbindir!$sbindir$ac_delim +libexecdir!$libexecdir$ac_delim +datarootdir!$datarootdir$ac_delim +datadir!$datadir$ac_delim +sysconfdir!$sysconfdir$ac_delim +sharedstatedir!$sharedstatedir$ac_delim +localstatedir!$localstatedir$ac_delim +includedir!$includedir$ac_delim +oldincludedir!$oldincludedir$ac_delim +docdir!$docdir$ac_delim +infodir!$infodir$ac_delim +htmldir!$htmldir$ac_delim +dvidir!$dvidir$ac_delim +pdfdir!$pdfdir$ac_delim +psdir!$psdir$ac_delim +libdir!$libdir$ac_delim +localedir!$localedir$ac_delim +mandir!$mandir$ac_delim +DEFS!$DEFS$ac_delim +ECHO_C!$ECHO_C$ac_delim +ECHO_N!$ECHO_N$ac_delim +ECHO_T!$ECHO_T$ac_delim +LIBS!$LIBS$ac_delim +build_alias!$build_alias$ac_delim +host_alias!$host_alias$ac_delim +target_alias!$target_alias$ac_delim +SUBDIRS!$SUBDIRS$ac_delim +PACKAGE!$PACKAGE$ac_delim +MAJOR!$MAJOR$ac_delim +MINOR!$MINOR$ac_delim +REVISION!$REVISION$ac_delim +COPYRIGHT!$COPYRIGHT$ac_delim +GROUP!$GROUP$ac_delim +OWNER!$OWNER$ac_delim +ROWNER!$ROWNER$ac_delim +RGROUP!$RGROUP$ac_delim +VERSION!$VERSION$ac_delim +MAKE!$MAKE$ac_delim +AWK!$AWK$ac_delim +INSTALL!$INSTALL$ac_delim +CC!$CC$ac_delim +CFLAGS!$CFLAGS$ac_delim +LDFLAGS!$LDFLAGS$ac_delim +CPPFLAGS!$CPPFLAGS$ac_delim +ac_ct_CC!$ac_ct_CC$ac_delim +EXEEXT!$EXEEXT$ac_delim +OBJEXT!$OBJEXT$ac_delim +SET_MAKE!$SET_MAKE$ac_delim +RANLIB!$RANLIB$ac_delim +LN_S!$LN_S$ac_delim +TAR!$TAR$ac_delim +ZIP!$ZIP$ac_delim +CHOWN!$CHOWN$ac_delim +CPP!$CPP$ac_delim +GREP!$GREP$ac_delim +EGREP!$EGREP$ac_delim +LIBOBJS!$LIBOBJS$ac_delim +COMPRESS!$COMPRESS$ac_delim +GZIP!$GZIP$ac_delim +ARC!$ARC$ac_delim +NOMARCH!$NOMARCH$ac_delim +ARJ!$ARJ$ac_delim +UNARJ!$UNARJ$ac_delim +LHA!$LHA$ac_delim +RAR!$RAR$ac_delim +UNRAR!$UNRAR$ac_delim +UNZIP!$UNZIP$ac_delim +ZOO!$ZOO$ac_delim +HA!$HA$ac_delim +ANTIVIR!$ANTIVIR$ac_delim +FPROT!$FPROT$ac_delim +UVSCAN!$UVSCAN$ac_delim +CLAMAV!$CLAMAV$ac_delim +RB!$RB$ac_delim +SB!$SB$ac_delim +RZ!$RZ$ac_delim +SZ!$SZ$ac_delim +GOLDEDBIN!$GOLDEDBIN$ac_delim +GOLDNODE!$GOLDNODE$ac_delim +CONVERT!$CONVERT$ac_delim +joebin!$joebin$ac_delim +joelib!$joelib$ac_delim +LTLIBOBJS!$LTLIBOBJS$ac_delim +_ACEOF + + if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 94; then + break + elif $ac_last_try; then + { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 +echo "$as_me: error: could not make $CONFIG_STATUS" >&2;} + { (exit 1); exit 1; }; } + else + ac_delim="$ac_delim!$ac_delim _$ac_delim!! " + fi +done + +ac_eof=`sed -n '/^CEOF[0-9]*$/s/CEOF/0/p' conf$$subs.sed` +if test -n "$ac_eof"; then + ac_eof=`echo "$ac_eof" | sort -nru | sed 1q` + ac_eof=`expr $ac_eof + 1` +fi + +cat >>$CONFIG_STATUS <<_ACEOF +cat >"\$tmp/subs-1.sed" <<\CEOF$ac_eof +/@[a-zA-Z_][a-zA-Z_0-9]*@/!b end +_ACEOF +sed ' +s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g +s/^/s,@/; s/!/@,|#_!!_#|/ +:n +t n +s/'"$ac_delim"'$/,g/; t +s/$/\\/; p +N; s/^.*\n//; s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g; b n +' >>$CONFIG_STATUS >$CONFIG_STATUS <<_ACEOF +:end +s/|#_!!_#|//g +CEOF$ac_eof +_ACEOF + + +# VPATH may cause trouble with some makes, so we remove $(srcdir), +# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and +# trailing colons and then remove the whole line if VPATH becomes empty +# (actually we leave an empty line to preserve line numbers). +if test "x$srcdir" = x.; then + ac_vpsub='/^[ ]*VPATH[ ]*=/{ +s/:*\$(srcdir):*/:/ +s/:*\${srcdir}:*/:/ +s/:*@srcdir@:*/:/ +s/^\([^=]*=[ ]*\):*/\1/ +s/:*$// +s/^[^=]*=[ ]*$// +}' +fi + +cat >>$CONFIG_STATUS <<\_ACEOF +fi # test -n "$CONFIG_FILES" + + +for ac_tag in :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS +do + case $ac_tag in + :[FHLC]) ac_mode=$ac_tag; continue;; + esac + case $ac_mode$ac_tag in + :[FHL]*:*);; + :L* | :C*:*) { { echo "$as_me:$LINENO: error: Invalid tag $ac_tag." >&5 +echo "$as_me: error: Invalid tag $ac_tag." >&2;} + { (exit 1); exit 1; }; };; + :[FH]-) ac_tag=-:-;; + :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; + esac + ac_save_IFS=$IFS + IFS=: + set x $ac_tag + IFS=$ac_save_IFS + shift + ac_file=$1 + shift + + case $ac_mode in + :L) ac_source=$1;; + :[FH]) + ac_file_inputs= + for ac_f + do + case $ac_f in + -) ac_f="$tmp/stdin";; + *) # Look for the file first in the build tree, then in the source tree + # (if the path is not absolute). The absolute path cannot be DOS-style, + # because $ac_f cannot contain `:'. + test -f "$ac_f" || + case $ac_f in + [\\/$]*) false;; + *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; + esac || + { { echo "$as_me:$LINENO: error: cannot find input file: $ac_f" >&5 +echo "$as_me: error: cannot find input file: $ac_f" >&2;} + { (exit 1); exit 1; }; };; + esac + ac_file_inputs="$ac_file_inputs $ac_f" + done + + # Let's still pretend it is `configure' which instantiates (i.e., don't + # use $as_me), people would be surprised to read: + # /* config.h. Generated by config.status. */ + configure_input="Generated from "`IFS=: + echo $* | sed 's|^[^:]*/||;s|:[^:]*/|, |g'`" by configure." + if test x"$ac_file" != x-; then + configure_input="$ac_file. $configure_input" + { echo "$as_me:$LINENO: creating $ac_file" >&5 +echo "$as_me: creating $ac_file" >&6;} + fi + + case $ac_tag in + *:-:* | *:-) cat >"$tmp/stdin";; + esac + ;; + esac + + ac_dir=`$as_dirname -- "$ac_file" || +$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || +echo X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + { as_dir="$ac_dir" + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || { { echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5 +echo "$as_me: error: cannot create directory $as_dir" >&2;} + { (exit 1); exit 1; }; }; } + ac_builddir=. + +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,/..,g;s,/,,'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix + +case $srcdir in + .) # We are building in place. + ac_srcdir=. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + + case $ac_mode in + :F) + # + # CONFIG_FILE + # + +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF +# If the template does not know about datarootdir, expand it. +# FIXME: This hack should be removed a few years after 2.60. +ac_datarootdir_hack=; ac_datarootdir_seen= + +case `sed -n '/datarootdir/ { + p + q +} +/@datadir@/p +/@docdir@/p +/@infodir@/p +/@localedir@/p +/@mandir@/p +' $ac_file_inputs` in +*datarootdir*) ac_datarootdir_seen=yes;; +*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) + { echo "$as_me:$LINENO: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 +echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF + ac_datarootdir_hack=' + s&@datadir@&$datadir&g + s&@docdir@&$docdir&g + s&@infodir@&$infodir&g + s&@localedir@&$localedir&g + s&@mandir@&$mandir&g + s&\\\${datarootdir}&$datarootdir&g' ;; +esac +_ACEOF + +# Neutralize VPATH when `$srcdir' = `.'. +# Shell code in configure.ac might set extrasub. +# FIXME: do we really want to maintain this feature? +cat >>$CONFIG_STATUS <<_ACEOF + sed "$ac_vpsub +$extrasub +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF +:t +/@[a-zA-Z_][a-zA-Z_0-9]*@/!b +s&@configure_input@&$configure_input&;t t +s&@top_builddir@&$ac_top_builddir_sub&;t t +s&@srcdir@&$ac_srcdir&;t t +s&@abs_srcdir@&$ac_abs_srcdir&;t t +s&@top_srcdir@&$ac_top_srcdir&;t t +s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t +s&@builddir@&$ac_builddir&;t t +s&@abs_builddir@&$ac_abs_builddir&;t t +s&@abs_top_builddir@&$ac_abs_top_builddir&;t t +$ac_datarootdir_hack +" $ac_file_inputs | sed -f "$tmp/subs-1.sed" >$tmp/out + +test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && + { ac_out=`sed -n '/\${datarootdir}/p' "$tmp/out"`; test -n "$ac_out"; } && + { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' "$tmp/out"`; test -z "$ac_out"; } && + { echo "$as_me:$LINENO: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined." >&5 +echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined." >&2;} + + rm -f "$tmp/stdin" + case $ac_file in + -) cat "$tmp/out"; rm -f "$tmp/out";; + *) rm -f "$ac_file"; mv "$tmp/out" $ac_file;; + esac + ;; + :H) + # + # CONFIG_HEADER + # +_ACEOF + +# Transform confdefs.h into a sed script `conftest.defines', that +# substitutes the proper values into config.h.in to produce config.h. +rm -f conftest.defines conftest.tail +# First, append a space to every undef/define line, to ease matching. +echo 's/$/ /' >conftest.defines +# Then, protect against being on the right side of a sed subst, or in +# an unquoted here document, in config.status. If some macros were +# called several times there might be several #defines for the same +# symbol, which is useless. But do not sort them, since the last +# AC_DEFINE must be honored. +ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* +# These sed commands are passed to sed as "A NAME B PARAMS C VALUE D", where +# NAME is the cpp macro being defined, VALUE is the value it is being given. +# PARAMS is the parameter list in the macro definition--in most cases, it's +# just an empty string. +ac_dA='s,^\\([ #]*\\)[^ ]*\\([ ]*' +ac_dB='\\)[ (].*,\\1define\\2' +ac_dC=' ' +ac_dD=' ,' + +uniq confdefs.h | + sed -n ' + t rset + :rset + s/^[ ]*#[ ]*define[ ][ ]*// + t ok + d + :ok + s/[\\&,]/\\&/g + s/^\('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/ '"$ac_dA"'\1'"$ac_dB"'\2'"${ac_dC}"'\3'"$ac_dD"'/p + s/^\('"$ac_word_re"'\)[ ]*\(.*\)/'"$ac_dA"'\1'"$ac_dB$ac_dC"'\2'"$ac_dD"'/p + ' >>conftest.defines + +# Remove the space that was appended to ease matching. +# Then replace #undef with comments. This is necessary, for +# example, in the case of _POSIX_SOURCE, which is predefined and required +# on some systems where configure will not decide to define it. +# (The regexp can be short, since the line contains either #define or #undef.) +echo 's/ $// +s,^[ #]*u.*,/* & */,' >>conftest.defines + +# Break up conftest.defines: +ac_max_sed_lines=50 + +# First sed command is: sed -f defines.sed $ac_file_inputs >"$tmp/out1" +# Second one is: sed -f defines.sed "$tmp/out1" >"$tmp/out2" +# Third one will be: sed -f defines.sed "$tmp/out2" >"$tmp/out1" +# et cetera. +ac_in='$ac_file_inputs' +ac_out='"$tmp/out1"' +ac_nxt='"$tmp/out2"' + +while : +do + # Write a here document: + cat >>$CONFIG_STATUS <<_ACEOF + # First, check the format of the line: + cat >"\$tmp/defines.sed" <<\\CEOF +/^[ ]*#[ ]*undef[ ][ ]*$ac_word_re[ ]*\$/b def +/^[ ]*#[ ]*define[ ][ ]*$ac_word_re[( ]/b def +b +:def +_ACEOF + sed ${ac_max_sed_lines}q conftest.defines >>$CONFIG_STATUS + echo 'CEOF + sed -f "$tmp/defines.sed"' "$ac_in >$ac_out" >>$CONFIG_STATUS + ac_in=$ac_out; ac_out=$ac_nxt; ac_nxt=$ac_in + sed 1,${ac_max_sed_lines}d conftest.defines >conftest.tail + grep . conftest.tail >/dev/null || break + rm -f conftest.defines + mv conftest.tail conftest.defines +done +rm -f conftest.defines conftest.tail + +echo "ac_result=$ac_in" >>$CONFIG_STATUS +cat >>$CONFIG_STATUS <<\_ACEOF + if test x"$ac_file" != x-; then + echo "/* $configure_input */" >"$tmp/config.h" + cat "$ac_result" >>"$tmp/config.h" + if diff $ac_file "$tmp/config.h" >/dev/null 2>&1; then + { echo "$as_me:$LINENO: $ac_file is unchanged" >&5 +echo "$as_me: $ac_file is unchanged" >&6;} + else + rm -f $ac_file + mv "$tmp/config.h" $ac_file + fi + else + echo "/* $configure_input */" + cat "$ac_result" + fi + rm -f "$tmp/out12" + ;; + + :C) { echo "$as_me:$LINENO: executing $ac_file commands" >&5 +echo "$as_me: executing $ac_file commands" >&6;} + ;; + esac + + + case $ac_file$ac_mode in + "default-1":C) test -z "$CONFIG_HEADERS" || echo timestamp > stamp-h ;; + + esac +done # for ac_tag + + +{ (exit 0); exit 0; } +_ACEOF +chmod +x $CONFIG_STATUS +ac_clean_files=$ac_clean_files_save + + +# configure is writing to config.log, and then calls config.status. +# config.status does its own redirection, appending to config.log. +# Unfortunately, on DOS this fails, as config.log is still kept open +# by configure, so config.status won't be able to write to it; its +# output is simply discarded. So we exec the FD to /dev/null, +# effectively closing config.log, so it can be properly (re)opened and +# appended to by config.status. When coming back to configure, we +# need to make the FD available again. +if test "$no_create" != yes; then + ac_cs_success=: + ac_config_status_args= + test "$silent" = yes && + ac_config_status_args="$ac_config_status_args --quiet" + exec 5>/dev/null + $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false + exec 5>>config.log + # Use ||, not &&, to avoid exiting from the if with $? = 1, which + # would make configure fail if this is the last instruction. + $ac_cs_success || { (exit 1); exit 1; } +fi + + +#================================================================================= + +{ echo "$as_me:$LINENO: result: +-=-=-=-=-=-=-=-=-=-= Configuration Complete =-=-=-=-=-=-=-=-=-=- + + Configuration summary : + + Version : ..................... ${VERSION} + Hydra/Binkp zlib compression : ${ZLIBSUP} + Binkp bzlib compression : ..... ${BZLIBSUP} + Full newsgate : ............... ${NEWSGATE} + GeoIP support : ............... ${GEOIPSUP} + Delete key : .................. ${DEL} + +" >&5 +echo "${ECHO_T} +-=-=-=-=-=-=-=-=-=-= Configuration Complete =-=-=-=-=-=-=-=-=-=- + + Configuration summary : + + Version : ..................... ${VERSION} + Hydra/Binkp zlib compression : ${ZLIBSUP} + Binkp bzlib compression : ..... ${BZLIBSUP} + Full newsgate : ............... ${NEWSGATE} + GeoIP support : ............... ${GEOIPSUP} + Delete key : .................. ${DEL} + +" >&6; } + +if test x$ac_cv_c_compiler_gnu = xyes ; then + echo -e " Tools :\n" + echo " Compiler is GCC : ............. ${ac_cv_c_compiler_gnu}" + fi + +{ echo "$as_me:$LINENO: result: + Installation directories : + + Main directory : ........... ${prefix} + Owner and group : ........... ${OWNER}.${GROUP} + + Now type 'make' and as root 'make install' +" >&5 +echo "${ECHO_T} + Installation directories : + + Main directory : ........... ${prefix} + Owner and group : ........... ${OWNER}.${GROUP} + + Now type 'make' and as root 'make install' +" >&6; } diff --git a/configure.ac b/configure.ac new file mode 100644 index 00000000..d881d15f --- /dev/null +++ b/configure.ac @@ -0,0 +1,406 @@ +# Process this file with autoconf to produce a configure script. +# $Id: configure.ac,v 1.29 2008/11/29 13:59:33 mbse Exp $ + +AC_INIT(lib/mbselib.h) +AM_CONFIG_HEADER(config.h) +SUBDIRS="lib mbcico mbfido mbmon mbsebbs mbutils mbnntp mbtask mbsetup unix lang examples html script" +AC_SUBST(SUBDIRS) + +# +# General settings for MBSE BBS +# After changeing the version number, run autoconf! +# +PACKAGE="mbsebbs" +MAJOR="0" +MINOR="95" +REVISION="5" +VERSION="$MAJOR.$MINOR.$REVISION" +COPYRIGHT="Copyright (C) 1997-2008 Michiel Broek, All Rights Reserved" +SHORTRIGHT="Copyright (C) 1997-2008 M. Broek" +GROUP="bbs" +OWNER="mbse" +ROWNER="`id -un root`" +RGROUP="`id -gn root`" +AC_SUBST(PACKAGE) +AC_SUBST(MAJOR) +AC_SUBST(MINOR) +AC_SUBST(REVISION) +AC_SUBST(COPYRIGHT) +AC_SUBST(GROUP) +AC_SUBST(OWNER) +AC_SUBST(ROWNER) +AC_SUBST(RGROUP) +AC_PREFIX_DEFAULT(/opt/mbse) +AC_DEFINE_UNQUOTED(VERSION, "$VERSION") +AC_DEFINE_UNQUOTED(VERSION_MAJOR, $MAJOR) +AC_DEFINE_UNQUOTED(VERSION_MINOR, $MINOR) +AC_DEFINE_UNQUOTED(VERSION_REVISION, $REVISION) +AC_DEFINE_UNQUOTED(COPYRIGHT, "$COPYRIGHT") +AC_DEFINE_UNQUOTED(SHORTRIGHT, "$SHORTRIGHT") +AC_SUBST(VERSION) +SYSTEM="`uname -s`" +CPU="`uname -m`" +LDFLAGS="-L/usr/local/lib" +CPPFLAGS="-I/usr/local/include" + +# +# Checks for programs. +# Try to find GNU make +# +AC_CHECK_PROG(MAKE, gmake, gmake) +AC_CHECK_PROG(MAKE, make, make) +# Alternate awk check, I skip mawk because it doesn't work for MBSE. +AC_CHECK_PROG(AWK, gawk, gawk) +AC_CHECK_PROG(AWK, nawk, nawk) +AC_CHECK_PROG(AWK, awk, awk) +# Try to find GNU install +AC_CHECK_PROG(INSTALL, ginstall, ginstall) +AC_CHECK_PROG(INSTALL, install, install) +AC_PROG_CC +AC_PROG_MAKE_SET +AC_PROG_RANLIB +AC_PROG_LN_S +AC_CHECK_PROG(TAR, tar, tar) +AC_CHECK_PROG(ZIP, zip, zip) +AC_PATH_PROG(CHOWN, chown, chown, /bin:/sbin:/usr/bin:/usr/sbin:) +AC_C_BIGENDIAN + + +# +# Additional commandline switches +# +AC_ARG_ENABLE(experiment, [ --enable-experiment Compile experimental code], [ experiment=$enableval ], [ experiment=no ]) +if test "$experiment" = "yes"; then + AC_DEFINE(USE_EXPERIMENT) +fi + +AC_ARG_ENABLE(debugging, [ --enable-debugging Compile for debugging], [ debugging=$enableval ], [ debugging=no ]) +if test "$debugging" = "yes"; then + CFLAGS="-O -g -Wall -Wshadow -Wwrite-strings -Wstrict-prototypes -D_REENTRANT -I/usr/local/include" +else + CFLAGS="-O2 -fno-strict-aliasing -Wall -Wshadow -Wwrite-strings -Wstrict-prototypes -D_REENTRANT -I/usr/local/include" +fi + +AC_ARG_ENABLE(optimize, [ --enable-optimize Enable CPU optimize], [ optimize=$enableval ], [ optimize=no ]) +if test "$optimize" = "yes"; then +AC_MSG_CHECKING(for cpuflags) + for cpuflagsbin in /usr/bin /usr/local/bin /usr/pkg/bin `pwd` NONE; do + if test "$cpuflagsbin" = "NONE"; then + AC_MSG_RESULT(unknown) + elif test -x $cpuflagsbin/cpuflags; then + CPUFLAGS=`$cpuflagsbin/cpuflags` + AC_MSG_RESULT($CPUFLAGS) + CFLAGS="$CPUFLAGS $CFLAGS" + break + fi + done +fi + + +# +# Enable full newsgate, this was default upto 0.50.0 +# +AC_ARG_ENABLE(newsgate, [ --enable-newsgate Compile with newsgate], [ newsgate=$enableval ], [ newsgate=no ]) +if test "$newsgate" = "yes"; then + AC_DEFINE(USE_NEWSGATE) + NEWSGATE="Yes" +else + NEWSGATE="No" +fi + + +# +# Checks for libraries and functions. +# +AC_CHECK_LIB(compat,re_comp,result=yes,result=no) +if test "$result" = "yes"; then + LIBS="$LIBS -lcompat" +fi + +AC_CACHE_CHECK(for pw_age in struct passwd, ac_cv_struct_passwd_pw_age, AC_TRY_COMPILE([#include ], +[ struct passwd pw; pw.pw_age = ""; ], ac_cv_struct_passwd_pw_age=yes, ac_cv_struct_passwd_pw_age=no)) +if test "$ac_cv_struct_passwd_pw_age" = "yes"; then + AC_DEFINE(ATT_AGE) +fi + +AC_CACHE_CHECK(for pw_comment in struct passwd, ac_cv_struct_passwd_pw_comment, AC_TRY_COMPILE([#include ], +[ struct passwd pw; pw.pw_comment = ""; ], ac_cv_struct_passwd_pw_comment=yes, ac_cv_struct_passwd_pw_comment=no)) +if test "$ac_cv_struct_passwd_pw_comment" = "yes"; then + AC_DEFINE(ATT_COMMENT) +fi + +AC_CHECK_LIB(shadow,setspent,result=yes,result=no) +if test "$result" = "yes"; then + LIBS="$LIBS -lshadow" + SHADOW_PASSWORD=1 + LIBSHADOW=1 +else + AC_CHECK_LIB(shadow,getspnam,result=yes,result=no) + if test "$result" = "yes"; then + LIBS="$LIBS -lshadow" + SHADOW_PASSWORD=1 + LIBSHADOW=1 + else + # some libc's (glibc 2.x) keep shadow functions in -lc + AC_CHECK_LIB(c,setspent,result=yes,result=no) + if test "$result" = "yes"; then + if test -f /etc/shadow; then + SHADOW_PASSWORD=1 + fi + fi + fi +fi + +if test "$SHADOW_PASSWORD" = "1"; then + if test "$ac_cv_func_fgetspent" != "yes"; then + AC_CHECK_LIB(shadow,fgetspent,result=yes,result=no) + if test "$result" = "yes"; then + if test "$LIBSHADOW" != "1"; then + LIBS="$LIBS -lshadow" + fi + fi + fi + AC_DEFINE(SHADOW_PASSWORD) +fi + +AC_CHECK_LIB(crypt,crypt,result=yes,result=no) +if test "$result" = "yes"; then + LIBS="$LIBS -lcrypt" +fi + +AC_CHECK_LIB(util,login,result=yes,result=no) +if test "$result" = "yes"; then + LIBS="$LIBS -lutil" + AC_CHECK_HEADERS(util.h) + AC_CHECK_HEADERS(libutil.h) + AC_CHECK_HEADERS(sys/types.h) +fi + + +# +# Support for zlib and bzlib transfers compression +# +ZLIBSUP=No +AC_CHECK_LIB(z,compress2,result=yes,result=no) +if test "$result" = "yes"; then + LIBS="$LIBS -lz" + AC_CHECK_HEADERS(zlib.h,ZLIBSUP=Yes,ZLIBSUP=No) +fi +BZLIBSUP=No +AC_CHECK_LIB(bz2,BZ2_bzCompressInit,result=yes,result=no) +if test "$result" = "yes"; then + LIBS="$LIBS -lbz2" + AC_CHECK_HEADERS(bzlib.h,BZLIBSUP=Yes,BZLIBSUP=No) +fi + +# +# Support for iconv, check libc first. +# +result="no" +AC_CHECK_FUNC(iconv_open,result=yes, +# AC_SEARCH_LIBS(iconv_open,iconv,result=yes,result=no) + AC_CHECK_LIB(iconv,iconv_open,result=yes,result=no) + if test "$result" = "yes"; then + LIBS="$LIBS -liconv" + fi +) +if test "$result" = "yes"; then + AC_CHECK_HEADERS(iconv.h) +fi + +# +# Checks for header files. +# +AC_HEADER_STDC +AC_HEADER_DIRENT +AC_HEADER_TIME +AC_HEADER_SYS_WAIT +AC_CHECK_HEADERS(termios.h sys/termios.h termio.h sys/termio.h sgtty.h) +AC_CHECK_HEADERS(sys/time.h sys/vfs.h unistd.h netinet/in.h regex.h) +AC_CHECK_HEADERS(sys/resource.h usersec.h gshadow.h shadow.h crypt.h) +AC_CHECK_HEADERS(limits.h utmp.h utmpx.h lastlog.h rpc/key_prot.h) +AC_STRUCT_TIMEZONE + +# +# Checks for typedefs, structures, and compiler characteristics. +# +AC_C_CONST +AC_TYPE_UID_T +AC_TYPE_OFF_T +AC_TYPE_PID_T +AC_TYPE_MODE_T +AC_TYPE_SIZE_T +AC_TYPE_SSIZE_T +AC_STRUCT_ST_BLKSIZE +AC_HEADER_STAT +AC_STRUCT_TM + +# +# Checks for library functions. +# +AC_CHECK_FUNCS(c64i a64l fchmod fchown fdatasync fsync lckpwdf strcasestr putpwent) +AC_PROG_GCC_TRADITIONAL +AC_FUNC_MEMCMP +AC_TYPE_SIGNAL +AC_FUNC_UTIME_NULL +AC_CHECK_FUNCS(gettimeofday re_comp select statfs statvfs) +AC_CHECK_FUNCS(getspnam initgroups updwtmp updwtmpx) + +# +# Check for usefull external programs +# +AC_PATH_PROG(COMPRESS,compress,no-compress-found-during-configure) +AC_PATH_PROG(GZIP,gzip,no-gzip-found-during-configure) +AC_PATH_PROG(ARC,arc) +AC_PATH_PROG(NOMARCH,nomarch) +AC_PATH_PROG(ARJ,arj) +AC_PATH_PROG(UNARJ,unarj) +AC_PATH_PROG(LHA,lha) +AC_PATH_PROG(RAR,rar) +AC_PATH_PROG(UNRAR,unrar) +AC_PATH_PROG(TAR,tar) +AC_PATH_PROG(ZIP,zip) +AC_PATH_PROG(UNZIP,unzip) +AC_PATH_PROG(ZOO,zoo) +AC_PATH_PROG(HA,ha) +AC_PATH_PROG(ANTIVIR,antivir) +AC_PATH_PROG(FPROT,fpscan) +AC_PATH_PROG(UVSCAN,uvscan) +AC_PATH_PROG(CLAMAV,clamscan) +AC_PATH_PROG(RB,rb) +AC_PATH_PROG(RB,lrb) +AC_PATH_PROG(SB,sb) +AC_PATH_PROG(SB,lsb) +AC_PATH_PROG(RZ,rz) +AC_PATH_PROG(RZ,lrz) +AC_PATH_PROG(SZ,sz) +AC_PATH_PROG(SZ,lsz) +AC_PATH_PROG(GOLDEDBIN,golded) +AC_PATH_PROG(GOLDEDBIN,gedlnx) +AC_PATH_PROG(GOLDNODE,goldnode) +AC_PATH_PROG(GOLDNODE,gnlnx) +AC_PATH_PROG(CONVERT,convert) + + +# +# Check for GeoIP support, see http://www.maxmind.com/ +# +GEOIPSUP=No +AC_CHECK_LIB(GeoIP,GeoIP_new,result=yes,result=no) +if test "$result" = "yes"; then + LIBS="$LIBS -lGeoIP" + AC_CHECK_HEADERS(GeoIP.h GeoIPCity.h,GEOIPSUP=Yes,GEOIPSUP=No) +fi + + +# +# FIX DEL for Del!=207, this was default upto 207 or 126 if no argument +# +AC_ARG_ENABLE(gbkdel, [ --enable-gbkdel Delete key is 126 (default is 207)], [ gbkdel=$enableval ], [ gbkdel=no ]) +if test "$gbkdel" = "yes"; then + GBK_DEL=126 + DEL=$GBK_DEL + echo "checking delete key... changed into $DEL" +else + DEL="default" + GBK_DEL=0 + echo "checking delete key... default" +fi +AC_DEFINE_UNQUOTED(GBK_DEL,$GBK_DEL) + + +AC_MSG_CHECKING(location of joe editor) +for joebin in /usr/bin /usr/local/bin /usr/pkg/bin NONE; do + if test "$joebin" = "NONE"; then + AC_MSG_RESULT(not found) + elif test -x $joebin/joe; then + AC_SUBST(joebin) + AC_MSG_RESULT($joebin) + break + fi +done +AC_MSG_CHECKING(location of joe rc files) +for joelib in /etc/joe /usr/lib/joe /usr/local/etc /usr/local/etc/joe /usr/local/lib/joe /usr/local/lib /usr/pkg/lib /usr/pkg/etc NONE; do + if test "$joelib" = "NONE"; then + AC_MSG_RESULT(not found) + elif test -f $joelib/joerc; then + AC_SUBST(joelib) + AC_MSG_RESULT($joelib) + break + fi +done + +AC_MSG_CHECKING(location of utmp) +for utmpdir in /var/run /var/adm /usr/adm /etc NONE; do + if test "$utmpdir" = "NONE"; then + AC_MSG_WARN(utmp file not found) + elif test -f $utmpdir/utmp; then + AC_DEFINE_UNQUOTED(_UTMP_FILE, "$utmpdir/utmp") + AC_MSG_RESULT($utmpdir) + break + fi +done + +AC_MSG_CHECKING(location of lastlog/wtmp) +for logdir in /var/log /var/adm /usr/adm /etc; do + if test -d $logdir; then + AC_DEFINE_UNQUOTED(_WTMP_FILE, "$logdir/wtmp") + AC_DEFINE_UNQUOTED(LASTLOG_FILE, "$logdir/lastlog") + AC_MSG_RESULT($logdir) + break + fi +done + +AC_MSG_CHECKING(location of vpopmail) +for vpop in /var/qmail/vpopmail/bin NONE; do + if test "$vpop" = "NONE"; then + AC_MSG_RESULT(not found) + elif test -x $vpop/vadduser; then + AC_DEFINE_UNQUOTED(_VPOPMAIL_PATH, "$vpop") + AC_MSG_RESULT($vpop) + break + fi +done + + +AC_OUTPUT( + Makefile.global + paths.h + unix/login.defs + INSTALL + FILE_ID.DIZ + script/editor + html/index.htm + html/basic.html + html/upgrade.html +) + +#================================================================================= + +AC_MSG_RESULT([ +-=-=-=-=-=-=-=-=-=-= Configuration Complete =-=-=-=-=-=-=-=-=-=- + + Configuration summary : + + Version : ..................... ${VERSION} + Hydra/Binkp zlib compression : ${ZLIBSUP} + Binkp bzlib compression : ..... ${BZLIBSUP} + Full newsgate : ............... ${NEWSGATE} + GeoIP support : ............... ${GEOIPSUP} + Delete key : .................. ${DEL} + +]) + +if test x$ac_cv_c_compiler_gnu = xyes ; then + echo -e " Tools :\n" + echo " Compiler is GCC : ............. ${ac_cv_c_compiler_gnu}" + fi + +AC_MSG_RESULT([ + Installation directories : + + Main directory : ........... ${prefix} + Owner and group : ........... ${OWNER}.${GROUP} + + Now type 'make' and as root 'make install' +]) diff --git a/cpuflags b/cpuflags new file mode 100755 index 00000000..cd91fc5e --- /dev/null +++ b/cpuflags @@ -0,0 +1,140 @@ +#!/bin/sh +# +# $Id: cpuflags,v 1.2 2004/09/25 10:47:33 mbse Exp $ +# +# Small script to try to find out the CPU optimisation flags. +# Based on ideas found in the NetBSD cpuflags script. +# +OS=`uname -s` + +case $OS in + FreeBSD | NetBSD) + + if [ -x /sbin/sysctl ]; then + SYSCTL=/sbin/sysctl + elif [ -x /usr/sbin/sysctl ]; then + SYSCTL=/usr/sbin/sysctl + elif [ -x /bin/sysctl ]; then + SYSCTL=/bin/sysctl + else + SYSCTL=/usr/bin/sysctl + fi + + hw_machine_arch=`$SYSCTL -n hw.machine_arch` + hw_model=`$SYSCTL -n hw.model` + + case $hw_machine_arch in + + alpha) + # cpu0 at mainbus0: ID 0 (primary), 21164A-0 (unknown ... + case "`egrep '^cpu0 ' /var/run/dmesg.boot`" in + *[\(\ ]2106[46][-\ \)]*) FLAGS="-mcpu=21064" ;; + *[\(\ ]21164[-\ \)]*) FLAGS="-mcpu=21164" ;; + *[\(\ ]21164A[-\ \)]*) FLAGS="-mcpu=21164a" ;; + *[\(\ ]21264B[-\ \)]*) FLAGS="-mcpu=21264" ;; + esac + ;; + + i386) + case $hw_model in + *386-class*) FLAGS='-march=i386' ;; + *486-class*) FLAGS='-march=i486' ;; + *AMD\ K6*) FLAGS='-march=k6' ;; + *Pentium*) FLAGS='-march=pentium' ;; + *586-class*) FLAGS='-march=pentium' ;; + *686-class*) FLAGS='-march=pentiumpro' ;; + esac + ;; + + sparc | sparc64) + case " $hw_model" in # Examples + *[\ \(]MB86900/1A*) FLAGS='-mcpu=cypress' ;; # ss1+ + *[\ \(]CY7C601*) FLAGS='-mcpu=cypress' ;; # ss2 + *[\ \(]W8601/8701*) FLAGS='-mcpu=cypress' ;; # elc + *[\ \(]MB86904*) FLAGS='-mcpu=supersparc' ;; # ss5 usparc + *[\ \(]MB86907*) FLAGS='-mcpu=supersparc' ;; # ss5 usparc + *[\ \(]TMS390S10*) FLAGS='-mcpu=supersparc' ;; # classic " + *[\ \(]TMS390Z50*) FLAGS='-mcpu=supersparc' ;; # ss10/ss20 + *[\ \(]RT620/625*) FLAGS='-mcpu=supersparc' ;; # ss20 ross + *[\ \(]MB86930*) FLAGS='-mcpu=sparclite' ;; # from gcc + *[\ \(]MB86934*) FLAGS='-mcpu=sparclite' ;; # from gcc + # under 1.5.1 -mcpu=ultrasparc chokes egcs-2.91.66 compiling perl + *[\ \(]SUNW,UltraSPARC*) FLAGS='-mcpu=v9' ;; # Ultra + esac + ;; + + esac + ;; + + Linux) + hw_machine_arch=`uname -m` + case $hw_machine_arch in + + parisc) + case "`egrep 'cpu family' /proc/cpuinfo | cut -d ' ' -f 4`" in + 1.0*) FLAGS='-march=1.0' ;; + 1.1*) FLAGS='-march=1.1' ;; + 2.0*) FLAGS='-march=2.0' ;; + esac + case "`egrep 'cpu ' /proc/cpuinfo | cut -d ' ' -f 2`" in + PA7100LC) FLAGS=${FLAGS}' -mschedule=7100LC' ;; + esac + ;; + + i386) + FLAGS='-march=i386' + ;; + + i486) + FLAGS='-march=i486' + ;; + + i586) + FLAGS='-march=pentium' + ;; + + i686) + FLAGS='-march=pentiumpro' + ;; + + *) + echo "Unsupported Linux arch $hw_machine_arch" + exit 1 + ;; + esac + ;; + + *) + echo "Unsupported OS $OS" + exit 1 + ;; +esac + + +# Fixup flags for old gcc +if [ -n "$FLAGS" ]; then + gcc_ver=`gcc -v 2>&1 | awk '/gcc version/ {sub("egcs-","");print $3}'` + FLAGS=`awk -v "flags=$FLAGS" -v "gcc_ver=$gcc_ver" ' + {if (gcc_ver < $1){map[$2] = ""$3}} + END{if (flags in map) {print map[flags]}else {print flags}} + ' <filelist + +depend: + @rm -f Makefile.bak; \ + mv Makefile Makefile.bak; \ + sed -e '/^# DO NOT DELETE/,$$d' Makefile.bak >Makefile; \ + ${ECHO} '# DO NOT DELETE THIS LINE - MAKE DEPEND RELIES ON IT' \ + >>Makefile; \ + ${ECHO} '# Dependencies generated by make depend' >>Makefile; \ + for f in ${SRCS}; \ + do \ + ${ECHO} "Dependencies for $$f:\c"; \ + ${ECHO} "`basename $$f .c`.o:\c" >>Makefile; \ + for h in `sed -n -e \ + 's/^#[ ]*include[ ]*"\([^"]*\)".*/\1/p' $$f`; \ + do \ + ${ECHO} " $$h\c"; \ + ${ECHO} " $$h\c" >>Makefile; \ + done; \ + ${ECHO} " done."; \ + ${ECHO} "" >>Makefile; \ + done; \ + ${ECHO} '# End of generated dependencies' >>Makefile + +# DO NOT DELETE THIS LINE - MAKE DEPEND RELIES ON IT +# Dependencies generated by make depend +# End of generated dependencies diff --git a/examples/footer.txt b/examples/footer.txt new file mode 100644 index 00000000..5e2a7835 --- /dev/null +++ b/examples/footer.txt @@ -0,0 +1,9 @@ + +MBSE Support BBS is the main development system for the MBSE BBS package. +MBSE BBS is available from 2:280/2802, magic request is MBSEBBS. +Also available at http://www.mbse.eu + +MBSE Support BBS es el sistema principal de sdesarrollo de paquete +MBSE BBS. +MBSE BBS esta disponible en 2:280/2802, peticion de magic MBSEBBS. +Tambien esta disponible en http://www.mbse.eu diff --git a/examples/header.txt b/examples/header.txt new file mode 100644 index 00000000..96a2c31f --- /dev/null +++ b/examples/header.txt @@ -0,0 +1,28 @@ + + ----------========== MBSE BBS Support System NL. ==========---------- + + Sysops : Michiel Broek + Online : 24 hrs/day + Line #1 : 31-(0)255-515973 1200-28K8 bps, V34,V42B,V32B,X75 + Requests : minimum 1200 bps, no limits. + Request times: except ZMH. + Request flag : XA + AKAs : 2:280/2802 + + Alle files op dit bbs die onder MS-DOS draaien zijn gecontroleerd met + de laatste beschikbare virusscanners voordat ze voor download op het + bbs geplaatst zijn. + Desondanks aanvaarden wij geen enkele aansprakelijkheid voor eventuele + schade die ontstaat door het gebruik van deze files. + + All files on this bbs running under MS-DOS are checked with the latest + available virusscanners before they were made available for download from + the bbs. + Nevertheless we take no responibility for any damage due to the use of + these files. + + Todos los ficheros en esta bbs nativos de MS-DOS son verificados con + los mas recientes antivirus disponibles antes de ser puestos para + descarga desde la bbs. + Aun asi nosotros no somos responsables por cualquier daño casusado + debido al uso de estos archivos. diff --git a/examples/menus-de.tar b/examples/menus-de.tar new file mode 100644 index 0000000000000000000000000000000000000000..38a86eb0e72a42f0db1bb85da07e5514918903af GIT binary patch literal 61440 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 AzyJUM literal 0 HcmV?d00001 diff --git a/examples/templates-de.tar b/examples/templates-de.tar new file mode 100644 index 0000000000000000000000000000000000000000..ef33e03ca580506b243e8a929792f9a7d4cb6eb2 GIT binary patch literal 81920 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 U16dDbJ&^T4)&p4&e6Kz5e}Qr?Z2$lO literal 0 HcmV?d00001 diff --git a/examples/templates-nl.tar b/examples/templates-nl.tar new file mode 100644 index 0000000000000000000000000000000000000000..91e1cb1ed6271853a9d6dc665bae837f6944366e GIT binary patch literal 81920 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 A&Hw-a literal 0 HcmV?d00001 diff --git a/examples/txtfiles-de.tar b/examples/txtfiles-de.tar new file mode 100644 index 0000000000000000000000000000000000000000..d22d363964fb53a40cbd30d3b4c6d900ee98e678 GIT binary patch literal 40960 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 + diff --git a/html/basic.html.in b/html/basic.html.in new file mode 100644 index 00000000..65ff8d7a --- /dev/null +++ b/html/basic.html.in @@ -0,0 +1,287 @@ + + + + + + + + + + + +MBSE BBS basic installation. + + + +
+
Last update 14-Oct-2007
+

MBSE BBS Basic Installation

+ +

Introduction.

+

+Before you compile and install MBSE BBS you must first setup the basic +environment. If you don't do this, things will fail. +

+To compile and install MBSE BBS most distributions have installed all needed packages. +If important packages are missing then the configure script will tell you. There are also +less important packages which if missinng still let you compile MBSE BBS, but you will miss +some features. Here is a short list of these packages: +

    +
  1. Zlib. On some distributions you also need zlib development. When you have + zlib installed, then in mbcico extra code will be compiled in the Hydra and Binkp protocol drivers + that will allow the PLZ extension. In the binkp protocol GZ compression will be enabled as well.
  2. +
  3. Bzlib. On some distributions you need to install bzlib2 development to add + support for binkp BZ2 compression.
  4. +
  5. GeoIP. Allows logging of the origin of the network connections by country and continent. + You need at least GeoIP 1.4.3 to compile without errors. See + www.maxmind.com. +
+If you use Gentoo or Ubuntu, read the files README.Gentoo or README.Ubuntu. The last one may be usefull +for Debian users too. +

 

+ +

Step 1: planning the filesystems.

+

+MBSE BBS is default installed in /opt/mbse. It should be possible to install the bbs in a different +location but this is not supported. Many have tried, and and only a few have succeeded. See +Filesystem Hierarchy Standard for more info. +The default filesystem layout looks like this:
+

+/opt/mbse                       0775  Default MBSE_ROOT
+/opt/mbse/bin                   0770  Binaries
+/opt/mbse/etc                   0770  System configuration files
+/opt/mbse/etc/dosemu            0750  DOSemu configuration files
+/opt/mbse/ftp/pub               0755  Default FTP root for download areas.
+/opt/mbse/home                  0770  Users homedirectories
+/opt/mbse/home/bbs              0770  Newuser account
+/opt/mbse/html                  0755  HTML documentation
+/opt/mbse/log                   0770  MBSE BBS logfiles
+/opt/mbse/share/doc             0750  Generated sitedocs
+/opt/mbse/share/doc/html        0750  Generated html sitedocs
+/opt/mbse/share/doc/tags        0750  Generated area tags
+/opt/mbse/share/int             0750  Base for language files
+/opt/mbse/share/int/macro/de    0750  German template macro's
+/opt/mbse/share/int/macro/en    0750  English template macro's
+/opt/mbse/share/int/macro/es    0750  Spanish template macro's
+/opt/mbse/share/int/macro/fr    0750  French template macro's
+/opt/mbse/share/int/macro/gl    0750  Galego template macro's
+/opt/mbse/share/int/macro/nl    0750  Dutch template macro's
+/opt/mbse/share/int/macro/zh    0750  Chinese template macro's
+/opt/mbse/share/int/menus/de    0750  German menu files
+/opt/mbse/share/int/menus/en    0750  English menu files
+/opt/mbse/share/int/menus/es    0750  Spanish menu files
+/opt/mbse/share/int/menus/fr    0750  French menu files
+/opt/mbse/share/int/menus/gl    0750  Galego menu files
+/opt/mbse/share/int/menus/nl    0750  Dutch menu files
+/opt/mbse/share/int/menus/zh    0750  Chinese menu files
+/opt/mbse/share/int/txtfiles/de 0750  German ansi screens
+/opt/mbse/share/int/txtfiles/en 0750  English ansi screens
+/opt/mbse/share/int/txtfiles/es 0750  Spanish ansi screens
+/opt/mbse/share/int/txtfiles/fr 0750  French ansi screens
+/opt/mbse/share/int/txtfiles/gl 0750  Galego ansi screens
+/opt/mbse/share/int/txtfiles/nl 0750  Dutch ansi screens
+/opt/mbse/share/int/txtfiles/zh 0750  Chinese ansi screens
+/opt/mbse/tmp                   0770  Temp directory
+/opt/mbse/tmp/arc               0770  Temp archiver directory
+/opt/mbse/var                   0770  Var root
+/opt/mbse/var/arealists         0750  Areamgr arealist files
+/opt/mbse/var/badtic            0750  Bad TIC files
+/opt/mbse/var/boxes             0770  Base for nodes fileboxes
+/opt/mbse/var/bso               0770  Binkley Style Outbound directory
+/opt/mbse/var/bso/outbound      0770  Default outbound for main aka
+/opt/mbse/var/dosemu            0770  Base for DOS drives (doors)
+/opt/mbse/var/dosemu/c          0770  DOS drive C:
+/opt/mbse/var/fdb               0770  Files database
+/opt/mbse/var/inbound           0750  Protected inbound directory
+/opt/mbse/var/magic             0750  Magic filerequest names
+/opt/mbse/var/mail              0770  JAM messagebase root
+/opt/mbse/var/msgs              0770  *.msgs netmail directory
+/opt/mbse/var/nodelist          0750  Nodelists
+/opt/mbse/var/queue             0750  Queue for before outbound
+/opt/mbse/var/rules             0770  Echomail area rules files
+/opt/mbse/var/run               0770  Pid files of running programs
+/opt/mbse/var/sema              0777  Semafore files
+/opt/mbse/var/ticqueue          0750  Queue for TIC files
+/opt/mbse/var/unknown           0750  Unprotected inbound directory
+
+

+Don't use UMSDOS or SAMBA filesystems for the bbs, stick by the standard +GNU/Linux +filesystems (ext2, ext3 or reiserfs) or ufs if you use FreeBSD. +If you intent to make your bbs also accessible +by FTP and WWW you must create the directory structure under the ftp user +behind the pub directory. Read the +ftp server doc for details. If you don't follow these guidlines, you +will run into trouble later and have to spend a lot of time in correcting +this error. +

 

+ +

Step 2: Running the installation script.

+

+First, if you use FreeBSD, install the psmisc package. This will make sure +that MBSE BBS is stopped properly if you shutdown your computer. Also if you +use FreeBSD 5.0 or later make sure that you mount procfs, see man procfs +for details. If you don't mount procfs, you cannot add new users to the bbs and +existing bbs users cannot change their passwords. As sysop, you can't change +passwords too.
+If you are upgrading, proceed with step 4. If not, follow the next steps +very carefully!
+The installation script must be run by root. It checks if there is a +previous or failed installation on your system. If that's so the script will +not run. In other words, you can only run this script once. The script makes +backup copies of the system files it changes, these files will get the +extension .mbse To run the installation script you need +the archive mbbsebbs-@VERSION@.tar.bz2. +Unpack this archive on your system, in /tmp: +

+cd /tmp
+tar xfvj /path/to/the/mbsebbs-@VERSION@.tar.bz2
+
+To start the script type: +
+cd mbsebbs-@VERSION@
+bash ./SETUP.sh
+
+Ubuntu users should do: +
+cd mbsebbs-@VERSION@
+sudo bash ./SETUP.sh
+
+Yes, use bash as shell here. On some systems root doesn't use bash +as login shell, calling the script with bash forces the use of bash. +The script does the following: +
    +
  1. Create the group bbs +
  2. Create the user mbse On Ubuntu this user is added to the admin group. +
  3. Create a .profile for user mbse +
  4. Create and set owner of directory tree under /opt/mbse +
+Then the script will ask you to give a password for user mbse +This password is for system maintenance and for you to make changes to the +bbs. You will need that frequently but you should not make that password +easy to guess of course. The script will then continue again: +
    +
  1. The user bbs is added. +
  2. The password will be removed from user bbs This action +will make changes in /etc/shadow (if you have that) otherwise in /etc/passwd. +On FreeBSD it uses other tools to modify the master database. +On NetBSD you have to do that manually, there are no tools to do that. +
  3. If they don't exist in the file /etc/services the services fido, tfido +and binkp will be added. +
  4. If they don't exist in the file /etc/inetd.conf the internet protocols +for the mailer will be added. The inetd is restarted to +activate the changes. If your distribution uses xinetd instead of inetd, an +include file for xinetd is added instead. +
+

 

+ +

Step 3: Check the basic installation

+

+The last screen of the script is about sanity checks. Perform those checks! +If something is wrong, now is the time to fix it. Don't panic and remember +the backups of the system files that are changed are in /etc with the +extension .mbse i.e: those were the original files. +The installation logfile is copied to /opt/mbse. +If everythings is allright, then remove the directory /tmp/mbsebbs-@VERSION@: +

+cd /tmp
+rm -Rf mbsebbs-@VERSION@
+
+

 

+ +

Step 4: Install the basic packages.

+

+Login as user mbse. Yes, very important, login as user mbse. +While in mbse's home directory (/opt/mbse) unpack the distribution archives: +

+tar xfvj /path/to/mbsebbs-@VERSION@.tar.bz2
+
+You now have the subdirectory with sources in the right place. +Next build the binaries and install them using the following commands: +
+cd ~/mbsebbs-@VERSION@
+./configure [--enable-optimize] [--enable-newsgate] [--enable-gdkdel]
+make
+su        important, do not use "su -"
+password: enter root password here
+make install
+exit
+
+Ubuntu users should do: +
+cd ~/mbsebbs-@VERSION@
+./configure [--enable-optimize] [--enable-newsgate] [--enable-gdkdel]
+make
+sudo make install
+
+Important: it seems logical to use the --enable-newsgate option +but it isn't. When you do, the mbnntp program is disabled and you cannot serve +echomail as news to your users via internet. But you can gate echomail to the +internet. Independant of your choice, you can allways make internet news available +for your bbs users. Only use --enable-newsgate if you really need to gate echomail +to the internet. +

+To support Chinese the DELete key needs to be changed because it conflicts with one +of the characters. If you want to use Chinese, use --enable-gbkdel +to configure. +

+The last part of the installation procedure shows you the location of the bbs +startup script that is added to your system. Remember this one for a moment. +Because this is your first +time installation, example menus and example textfiles are installed. +If they already exist on your systems (when you do an upgrade) they +will not be installed again. +

+Now start the bbs for the first time (still as root) by executing the startup +script you just saw on the screen followed by a space and the word start. +For example: +

+/etc/rc.d/init.d/mbsed start
+
+Ubuntu users do: +
+sudo /etc/init.d/mbsebbs start
+
+This will start the mbtask daemon. +After that the bbs will be opened for use. +Check the file /opt/mbse/log/mbtask.log for startup problems. +The first time mbtask is started on your system it will create a +lot of new configuration files with default settings. +

 

+ +

Step 5: Ready.

+

+Now you have shell scripts in ~/etc, most of them are called by cron, some +are called during system startup and shutdown. You also have some default +configuration files, these are ttyinfo, modems, fidonet networks. In the +default (english) directory you now have default menu datafiles and ansi +screens. These are copies of my test system so you have to edit them to +build your own bbs.
+Editing ansi screens can be done on a GNU/Linux system with one of the +following packages: +

    +
  1. duhdraw, this is available from 2:280/2802 as + duhdraw.tgz (68 Kbytes). + The binaries are included in this archive, if you compile it yourself + it may give trouble so if the binaries work, use these.
  2. +
  3. bmdraw This editor is available from + http://www.drastic.net/bmdraw/, + you can find the tar.gz file in + http://www.drastic.net/bmdraw/files/bmd022.tgz, + it's about 36 Kbytes. This is also a thedraw clone for Linux. + Note, at my system I needed to run it as root.
  4. +
  5. TetraDraw This is a very nice Ansi editor, you can + get this file as TETR~VC#.TGZ from 2:280/2802. The file is 157 Kbytes. +
+You may also want to edit ~/etc/header.txt and ~/etc/footer.txt, these +files are the top and bottom of the newfiles/allfiles listings. +

+Now the basic environment is finished, the next thing to do is +configure the bbs. +

 

+ +Back to IndexBack to Index + +

+ + diff --git a/html/dist.html b/html/dist.html new file mode 100644 index 00000000..4961f18f --- /dev/null +++ b/html/dist.html @@ -0,0 +1,104 @@ + + + + + + + + + + + +Unix distributions. + + + +
+
Last update 12-Sep-2007
+

Unix Distributions.

+ +

Which distribution

+

+GNU/Linux is available in several distributions, they all have advantages and +disadvantages for bbs use. Which distribution to pick is very personal. +Since late 2001 a port to FreeBSD is available, from version 0.33.19 this +port is ready to use. +Since januari 2002 a port to NetBSD is available, later other *BSD versions +were added. +

 

+ +

Slackware

+

+I am using MBSE BBS on several Slackware distributions. You can make a very small +setup for MBSE BBS like Zipslack. Not included is the mgetty package. +

 

+ +

Redhat and Mandrake

+

+I write this as if these are the same which isn't true of course. From MBSE +BBS's point of view they are almost the same, so that's why I treat them as +the same distributions. The E-Smith server and gateway based on RedHat is also +supported. +For people with little GNU/Linux experience these +distributions are a good choice if you can spare the diskspace. I haven't +found a simple dedicated setup for the bbs, so the safest way is to install +allmost everything, which is quite simple. This will cost you about 1200 Megs. +Maybe that someone more experienced with these distro's can give more details +on how to build a small server. +

 

+ +

SuSE

+

+Since SuSE 7.1 the setup scripts are working and tested. Older distro's +might work. +

 

+ +

Debian

+

+The installation works on a Debian 2.1, 2.2 and 3.0 distribution without any problems. +How to build an optimized Debian system is not tested by me. +

 

+ +

Ubuntu

+

+Since 0.91.10 the installation on Ubuntu 7.04 works fine. Read the file README.Ubuntu in +the source for more information. +

 

+ +

GenToo

+

+Installation and startup scripts are tested on GenToo. Read the file README.Gentoo for +more information. +

 

+ +

FreeBSD

+

+I tested on FreeBSD 6.2 stable release. Older releases have been used and work. +The setup is quite simple, do a small setup (average user), and add some needed packages +from the ports collection such as gcc, mgetty, infozip etc. +You may need to build mgetty yourself if you have an older FreeBSD distribution. +

 

+ +

NetBSD

+

+Currently NetBSD 3.1 is used for the latest tests. NetBSD before 3.0 doesn't +work anymore. +

 

+ +

OpenBSD

+

+Currently OpenBSD 3.7 is used for testing. +

 

+ +

Famous last words...

+

+I don't have the diskspace and time for all kinds of GNU/Linux distributions +to install for testing. Most distributions work without major changes. For +questions about "unsupported" distributions, the best place to be is in the +MBSE support echo. +

 

+ +BackGo Back +

+ + diff --git a/html/doors.html b/html/doors.html new file mode 100644 index 00000000..fa17cb55 --- /dev/null +++ b/html/doors.html @@ -0,0 +1,229 @@ + + + + + + + + + + + +Running DOS doors on MBSE BBS. + + + +
+
Last update 05-Nov-2004
+

MBSE BBS - Running DOS doors.

+ +

Introduction

+

+Running DOS doors is possible on systems that can run +dosemu. The latest versions of dosemu don't +need to be started suid root or started using sudo, it can run as the user that +is logged in the bbs. Since that is possible, a new location for the virtual C: +drive is now being used withing the $MBSE_ROOT file structure. This virtual C: +drive is owned by the group bbs. The basic ideas how doors should be run written +by Redy Rodriguez are still valid, but some scripts are changed and some dosemu +files must be copied into the mbse directory tree.

+One very important note: the virtual dos drive is now $MBSE_ROOT/var/dosemu/c +Don't use another location or change the access rights, there will be several +references from mbse to that and only that location for dos support. +Choose another one and you are on your own! +

 

+ +

Installing dosemu

+

+Some distributions have good dosemu packages, others don't. You need a dosemu +that can be used in a systemwide multiuser setup. The bad packages want to have +the dos drive in each users home directory, this is not what we want for doors. +If you don't have a good dosemu you have to compile your own. This is not too +complicated. First download the source from dosemu. You don't need the freedos-bin source +if you are going to use ms-dos or pc-dos. +Unpack the source in some directory of your choice and compile the sources:
+

+mbse@seaport$ tar xfvz dosemu-1.2.2.tgz
+mbse@seaport$ cd dosemu-1.2.2
+mbse@seaport:~/dosemu-1.2.2$ ./configure --prefix=/usr --sysconfdir=/etc/dosemu --with-x
+mbse@seaport:~/dosemu-1.2.2$ make
+
+Note that the --with-x is not needed for running doors, but it +might be handy that you can use dosemu as user mbse in X to do maintenance on +your doors.
+Then as root do:
+
+root@seaport:~/dosemu-1.2.2# make install
+
+

 

+ +

Setup dosemu in mbse

+

+First copy /etc/dosemu/dosemu.conf into ~/etc/dosmeu. +Then edit ~/etc/dosemu/dosemu.conf so that we have a version for +mbse users. Set the following settings in that file:
+

+$_hdimage = "/opt/mbse/var/dosemu/c"
+$_floppy_a = ""
+$_xms = (1024)
+$_ems = (2048)
+$_dpmi = (0x1000)
+$_layout = "us"
+
+Next copy this new file as virtual.conf in +~/etc/dosemu/. Then add the following line: +
+$_com1 = "virtual"
+
+Note that in older dosemu versions you could use a commandline option to do +this, but this isn't supported anymore since dosemu-1.2.x. The +rundoor.sh now also uses two configuration files.
+Next we need to setup the C: drive. Do this as user mbse. First type umask +007, this sets the create mode for directories to 0770 and files to 0660 +so that we create all files and directories read/write for all bbs users. This +is very important! Type the following commands: +
+mbse@seaport:~$ umask 007
+mbse@seaport:~$ cd var/dosemu/c
+mbse@seaport:~/var/dosemu/c$ mkdir dos dosemu temp util doors
+
+Now we must install dos. If you use ms-dos then in ~/var/dosemu/c +copy the ms-dos files command.com, io.sys and +msdos.sys. In ~/var/dosemu/c/dos copy all ms-dos +commands. Next install the dosemu utilities, copy these from +/usr/share/dosemu/freedos/dosemu to +~/var/dosemu/c/dosemu. Now there is a empty +~/var/dosemu/c/util, copy some utilities here such as your +favourite dos editor, zip and unzip etc.
+Next we must create config.sys and autoexec.bat. These +files must be dos crlf formatted. You can do that with the joe editor, for +example joe -crlf config.sys. Examples:
+
+config.sys:
+
+BUFFERS = 20
+DEVICE=C:\DOS\SETVER.EXE
+SET TEMP=C:\TEMP
+DOS=HIGH,UMB
+FILES=50
+
+autoexec.bat:
+
+@ECHO OFF
+PROMPT $P$G
+PATH C:\DOSEMU;C:\DOS;C:\UTIL;
+SET TEMP=C:\TEMP
+Lh C:\DOS\DOSKEY /INSERT
+Lh C:\DOS\SHARE
+
+Now we are ready to try it, type mbsedos and the dos emulator +should start. You can leave dosemu with the command exitemu. +

 

+ +

Installing a door

+

+All doors are started using the script ~/bin/rundoor.sh. This script +is never started directly, you should make a copy of that with the name of the +door, but the best solution is to make a symlink with the name of the door. For +example:
+

+mbse@seaport$ cd ~/bin
+mbse@seaport:~bin$ ln -s rundoor.sh 8ball
+
+See also inside rundoor.sh for the instructions. This file does +several things, first it prepares the users home directory with the dosemu +environment so that dosemu will run for the user. Then it creates a node +directory in the dos C: drive and copies the door dropfiles into that node +directory. Finally it starts dosemu in virtual comport mode and inserts the +commands in dos to start the door.
+But before we can run the door, the door itself must be installed in the dos +partition. In this example I will explain how to install the door 8ball. +Start mbsedos and create a directory c:\doors\8ball. +Unpack 8ball in that directory and run setup. Test the door with +the command local. Now goto the directory c:\doors and +create the file 8ball.bat. That file will be used to start the +door. It will be called by c:\doors.bat with two parameters, the +name of the door and the nodenumber. +
+@ECHO OFF
+C:
+C:\UTIL\X00 E B,0,57600
+CD \DOORS\8BALL
+ASKME.EXE /E /C1 /PC:\DOORS\NODE%1
+C:\UTIL\X00
+CD \DOORS\NODE%1
+DEL DOOR.SYS
+DEL DOOR32.SYS
+
+Finally we have to make a menu entry to start the door. The Opt. Data line is +the command to start the door, the optional /N is replaced by the +current nodenumber of the user. A second option may be used, +novirtual, if that is present the rundoor.sh will +start dosemu without setting the comport in virtual mode. Use this if your door +isn't a real door but a normal dos program. +

+door setup

+Note that I use the +Display lines to make the menu, there are only ansi screens for the top and +common lines on the screen, see the second image how to build the whole doors +menu. +

+doors menu +

+

 

+ +

Netmail support

+

+In the virtual c: drive you need some directories that point to several other +mbse subdirectories. You may need at least three of them, one to put netmail in, +one to put files in to send and one semafore directory to tell mbse there is +something to send. For example like this: +

+ln -s /opt/mbse/var/msgs /opt/mbse/var/dosemu/c/msgs
+ln -s /opt/mbse/var/boxes/node92_100_60 /opt/mbse/var/dosemu/c/outbox
+ln -s /opt/mbse/var/sema /opt/mbse/var/dosemu/c/sema
+
+In dos you now have: +
+C:\MSGS
+C:\OUTBOX
+C:\SEMA
+
+In C:\MSGS doors may put *.msg netmails. +File attaches won't work from these netmails because the netmails +point to files with dosnames. (May be solved later). The script that calls the +door, for example c:\doors\bre.bat must copy the file to send to +the node outbound box. In the above example that would be copy to +C:\OUTBOX. +To create the semafore to tell mbse to scan add to the batfile (for example +C:\DOORS\BRE.BAT the following two lines: +
+CD C:\SEMA
+ECHO "">MAILOUT
+
+See also the F.A.Q. for some very usefull tips and +tricks. +Using the same method with symlinks, you can make all paths you need from the +rest of mbse visible in dos. Use with care. +

 

+ +

What if I don't upgrade

+

+That's your choice, but for a while the old method starting dosemu via sudo is +still supported. The file ~/bin/bbsdoor.sh is still there, but the +file ~/bin/rundoor.sh is renamed to +~/bin/runvirtual.sh. So you should change all symlinks of your door +names in ~/bin (or copies) to ~/bin/runvirtual.sh. You +should not need to change anything else. +

+ +

Problems

+

+Currently there are some troubles with modem calls. +

+ +BackGo Back +

+ + diff --git a/html/errcodes.html b/html/errcodes.html new file mode 100644 index 00000000..903801f0 --- /dev/null +++ b/html/errcodes.html @@ -0,0 +1,83 @@ + + + + + + + + + + + +Error return codes. + + + +
+
Last update 30-Jun-2005
+

MBSE BBS - Error return codes.

+ + +

+Following is a list of return codes from all official mbse programs and +utilities. These codes can be used in scripts. If a program exits normally, the +return code is 0. If a program exits by a signal, the return code is the signal +number. This means if you kill a running program with a SIGTERM, the programs +exits with the SIGTERM error number. On most platforms this is 15. These +errorcodes are for the most part the same on all *nix platforms but because of +some small differences I cannot list these here. Just do a kill -l to see +a list of errors for your own platform.
+Here is the list of other return codes: +

    +
  1. Commandline error +
  2. Configuration error +
  3. Initialisation error +
  4. A full disk partition +
  5. UPS alarm detected +
  6. No valid recipients +
  7. Execute external program failed +
  8. Set tty failed +
  9. File transfer error +
  10. File attach failed +
  11. Can't lock program, retry later +
  12. Node not in nodelist +
  13. Node may not be called +
  14. Can't make connection +
  15. Can't open tty port +
  16. Node is locked +
  17. Node IP address not found +
  18. Unknow session type +
  19. Not Zone Mail Hour +
  20. Modem error +
  21. No modemport available +
  22. Session error (password) +
  23. EMSI session error +
  24. FTSC session error +
  25. WaZoo session error +
  26. YooHoo session error +
  27. Outbound scan error +
  28. Can't make poll +
  29. File request error +
  30. Error processing nodediff +
  31. Virus found +
  32. General error +
  33. Timeout error +
+

+The mailer can also return the following error codes: +

    +
  1. TTY general error +
  2. TTY timeout +
  3. TTY EndOfFile +
  4. TTY Hangup +
  5. TTY Empty +
+

+When an external program is run, a mbse program can exit with return code 256 + +the return code of the external program. So if the external program exits with +error code 7, the code returned by the mbse program is 263. +

+BackGo Back +

+ + diff --git a/html/faq.html b/html/faq.html new file mode 100644 index 00000000..5d5d90d0 --- /dev/null +++ b/html/faq.html @@ -0,0 +1,1502 @@ + + + + + + + + + + + + +MBSE BBS FAQ & Howto + + + +
+

MBSE BBS FAQ and Howto.

+
Last updated 31-Jan-2005
+ +
+Authors: P.E. Kimble aka King Kimerud            kimerud@bayhaus.org
+         Michiel Broek                           2:280/2802
+         Rick van Ruth                           3:640/954
+	 David Gonzalez                          4:930/1
+

+

Introduction

+

+This FAQ is a work in progress. It is not complete, nor does its author +claim that it is complete. This FAQ only answers questions pertaining to +using MBSE BBS on your GNU/Linux box. It is a compilation of previous questions +that Michiel Broek has recieved and answered from us newbies in getting +MBSE up & running. +

+ +
    +
  1. Installation

    +

      +
    1. Why do I have to install MBSE in the /opt directory?
    2. +
    3. What other operating systems will MBSE run on?
    4. +
    5. Will MBSE ever be ported to DOS/Windows or OS/2?
    6. +
    7. What does the quest switch in the bbs user setup mean?
    8. +
    9. How do I monitor as the things happen?
    10. +
    11. How do I start mbsebbs from inetd or xinetd?
    12. +
    13. I just installed mbse, now I get a Socket send failed error 2
    14. +
    +

  2. +
  3. Fidonet Setup

    +

      +
    1. The nodelist compiler crashes, why?
    2. +
    3. What is the purpose of the "Comment" line in the tic area setup?
    4. +
    5. How do I poll a node?
    6. +
    7. I created a filerequest but mbcico doesn't call out.
    8. +
    9. Does MBSE support fidonet via ftp feeds?
    10. +
    11. The tosser and mbmsg program are slow, why?
    12. +
    13. How can I use an external netmail tracker with MBSE?
    14. +
    15. I am having problems with dates when unarchiving .arc files.
    16. +
    +

  4. +
  5. Internet Setup

    +

      +
    1. Posting newsmessages to the newsserver fails.
    2. +
    3. FTP fidonet feeds how-to.
    4. +
    5. Polling a internet node fails
    6. +
    7. Dialup script examples for MBSE
    8. +
    9. BBS users cannot get their email on Debian
    10. +
    +

  6. +
  7. BBS Setup

    +

      +
    1. How do I to set up MBSE for ISDN?
    2. +
    3. How do I use GoldED together with MBSE?
    4. +
    5. How do I use MsgEd together with MBSE?
    6. +
    7. How do I adopt a directory full of files to the bbs?
    8. +
    +

  8. +
  9. Doors Setup

    +

      +
    1. How do I run DOS doors under MBSE BBS?
    2. +
    3. Dosemu compile tips
    4. +
    5. Setting up for InterBBS games.
    6. +
    7. Door Maintenance.
    8. +
    +

  10. +
+ +BackGo Back +
+ +

1. Installation.

+ + + + + + + + + + + + +
Q 1.1Why do I have to install MBSE in the /opt directory?
A 1.1 The /opt is for extra applications, when mbse is installed there + it is easier to upgrade the OS. If you insist on installing in /usr/local + the choose /usr/local/mbse. +
+Up +

+ + + + + + + + + + + + +
Q 1.2 What other operating systems will MBSE run on?
A 1.2 Currently only on most GNU/Linux distributions, FreeBSD and NetBSD. + The author, Michiel Broek, has made a valiant effort ensuring that +MBSE will recognize and install on the major distributions of GNU/Linux. +
+Up +

+ + + + + + + + + + + + +
Q 1.3 Will MBSE BBS ever be ported to DOS/Windows or OS/2?
A 1.3 No.
+Up +

+ + + + + + + + + + + + +
Q 1.4 What does the guest switch in BBS user setup mean?
A 1.4 Nothing yet.
+Up +

+ + + + + + + + + + + +
Q 1.5 How do I monitor as the things happen?
A 1.5 tail -f /opt/mbse/log/system.log or start mbmon.
+Up +

+ + + + + + + + + + + + +
Q 1.6 How to start mbsebbs from inetd or xinetd?
A 1.6 This is described in the documentation of the + mblogin program.
+Up +

+ + + + + + + + + + + + +
Q 1.7 I just installed mbse, now I get a Socket send failed error 2.
A 1.7 With a normal system boot the mbtask daemon will be started + by one of the systems init scripts. If you just installed mbse you need + to do this for the first time manually. As user mbse issue the + following commands:
mbtask
mbstat open

+ This will start the daemon, the daemon creates the default + databases. Then you can use mbsetup to configure your new system. +
+Up + +


+

2. Fidonet setup.

+ + + + + + + + + + + + +
Q 2.1 The nodelist compiler crashes, why?
A 2.1Note: From previous experience, it is vital that you follow + the docs closely. Also, ensure that you have a copy of a valid nodelist + and nodediff file. I have ran into problems where either the noddiffs + don't match the nodelist, the crc checks fail, or I have files from + two different zones. I have even had to back up several months before + finding a valid noddiff that would match the nodelist.
+Up +

+ + + + + + + + + + + + +
Q 2.2 What is the purpose of the "Comment" line in the tic area setup?
A 2.2The downlinks will see this when receiving FileMgr replies. + It is meant only as a description for the filearea.
+Up +

+ + + + + + + + + + + + +
Q 2.3 How do I poll a node?
A 2.3 mbout poll f2802.n280.z2
+Up +

+ + + + + + + + + + + + +
Q 2.4 I created a filerequest but mbcico doesn't call out.
A 2.4 You need to add a poll for that node to do the call.
+Up +

+ + + + + + + + + + + + +
Q 2.5 Does MBSE support fidonet via ftp transfers?
A 2.5 Yes, but only the passive side. Refer to 3.2.
+Up +

+ + + + + + + + + + + + +
Q 2.6The tosser and mbmsg programs are slow, why?
A 2.6 Tossing mail and linking message areas are background tasks. + When mbse was first developed the hardware was not fast enough to run + these programs at full speed. The mailer could give CRC errors and the + bbs seemed to stop now and then. To overcome this problem all programs + started with the -quiet switch (background jobs) are stopping for short + periods so that they would use less system resources. Systems with SCSI + disks or other fast and well designed machines don't have a need for that + slowdown. In mbsetup menu 1.5.17 is the setting for the speed of all utility + programs, the default is slow. You might try this set to fast and see what + happens on your system.
+Up +

+ + + + + + + + + + + + +
Q 2.7How can I use an external netmail tracker with MBSE?
A 2.7If the netmail tracker can work on .pkt files you could try to + install it into mbfido. It can call a external program to process incoming + .pkt files before mbfido does something with it. That option was built a + few years ago for extra Y2K checks. (The pktdate program of Tobias Ernest).
+Up +

+ + + + + + + + + + + + +
Q 2.8I am having problems with dates when unarchiving .arc files.
A 2.8If you are experiencing a problem with the dates on arc files + showing as January 1970 or similar when extracted using Arc v5.31 for linux + then obtain "nomarch". MBSE will detect nomarch during configuration/install + and set your archiver.data file accordingly. Nomarch extracts .arc files + and keeps the original file date.
+Up + +


+

3. Internet setup.

+ + + + + + + + + + + + +
Q 3.1 Posting newsmessages to the newsserver fails.
A 3.1Check if you need the "mode reader" command for the newsserver. + Set this flag in mbsetup 1.15.5
+Up +

+ + + + + + + + + + + + +
Q 3.2 How do I configure MBSE for my ftp filenet feeds?
A 3.2Follow the next steps to setup your system for FTP clients. +
    +
  1. As root, add a new group to your system: groupadd bbsftp.
  2. +
  3. Make sure there is a directory /opt/mbse/var/bbsftp. This directory + should be owned by mbse, group bbs and have mode 0775.
  4. +
  5. Add an invalid shell to /etc/shells, /usr/bin/false is good.
  6. +
  7. Install an FTP server, the examples here are for ProFTPD.
  8. +
  9. In /etc/proftpd.conf make sure there are the following lines: +
    +# Anonymous ftp and members of group bbsftp have a chroot environment.
    +# DefaultRoot     ~ bbsftp
    +
    + This will make sure that users who are member of the bbsftp + group have a chrooted directory structure for their ftp directories. + Also make sure the line Umask 022 is changed to Umask 002.
  10. +
  11. Add a username for the node you whish to give an FTP feed. + Use the following as root: +
    +useradd -g bbs -G bbsftp -d /opt/mbse/var/bbsftp/username
    +    -s /usr/bin/false -c "FTP Account for username" -m username
    +
    + Note: this is one line! There will now be a user added and + have a home directory of /opt/mbse/var/bbsftp/username. Make sure + that directory has permission 0775 or 0770. Create in the username + directory two other directories, inbound and outbound. They must + be owned by the user and be a member of group bbs and have mode 0775. + The modes 077x are needed because the user and mbse must be able to + read and write to these directories.
  12. +
  13. Try to login with ftp from some other system with the choosen + username and his password and check the changes until now. You should + not be able to escape from the directories of this user and you should + be able to upload files, download and delete files. Check also if you + uploaded a file if user mbse can delete that file and also put a file + in the users ftp directory as user mbse, and check that you can download + and delete is as ftp user.
  14. +
  15. Make sure for the node you want to change there is no mail + left in the outbound. Now start mbsetup, menu 7, open the setup + of the node that will use ftp. In screen 3, items 7 and 8, set these + to Directory. Now enter screen 8, here you will setup the directory + session. +
    +       7.8  EDIT NODE DIRECTORY SESSION
    +
    +            Outbound settings
    +       1.   Files path      /opt/mbse/var/bbsftp/username/outbound
    +       2.   Check for lock  Yes               3.   Wait clear lock Yes
    +       4.   Check lockfile  /opt/mbse/var/bbsftp/username/lock.bsy
    +       5.   Create lock     Yes
    +       6.   Create lockfile /opt/mbse/var/bbsftp/username/lock.bsy
    +       
    +            Inbound settings
    +       7.   Files path      /opt/mbse/var/bbsftp/username/inbound
    +       8.   Check for lock  Yes               9.   Wait clear lock Yes
    +       10.  Check lockfile  /opt/mbse/var/bbsftp/username/lock.bsy
    +       11.  Create lock     Yes
    +       12.  Create lockfile /opt/mbse/var/bbsftp/username/lock.bsy
    +
    + Save this and you are ready.
  16. +
  17. A final note, since this user is in group bbs and not in the + bbs userdatabase he can never telnet to your system with this account + and get a shell. The user doesn't even have a valid shell.
  18. +
+
+Up +

+ + + + + + + + + + + + +
Q 3.3Polling a internet node fails.
A 3.3There are several reasons why mbcico refuses to call an internet + node, most problems are nodelist related. A internet node with binkp + protocol should be listed with the flags CM,IBN before mbcico will + make a call. Also, in the nodelist system name field there should + be the hosts full qualified domainname so that mbcico can get that + node's IP address. If one of these items are missing, the node will + not be called. To correct this problem there are two options, make + sure the node is listed with a dns name and proper flags in the nodelist. + The second option is to add a setup record for that node and fill in + the nodelist override fields. You can find these in menu 7.3, item + 5 can be filled with the nodelist flags, ie. CM,IBN and item 6 can + be used to give that node's fdn or IP address. +

+ If the call still fails there are several things that must be + right before mbcico makes any internet call. In mbmon, screen 2 (SERVER + STATS) there are flags that indicate if the system is running, internet + is available and the bbs is open. If one of these is No, then no call will + be made. (For POTS the Internet flag does not matter of course). +

+ In mbsetup, screen 18 (taskmanager), you need to set the maximum + TCP sessions to allow. This is inbound and outbound together. So if you set + this to 3 and 3 or more systems are already calling in via internet, your + system will not call anymore until the amount of TCP sessions drops below 3. +

+ If you set this to high on an average cable/adsl connection, + you can get into trouble because you use up all upstream bandwidth. (We have + seen a lot of errors at a busy when the upstream speed was 64K and downspeed + 512K and about 4 sessions together). A good rule seems 1 TCP session for + each 32K bandwidth. +

+ Then turn in that same screen debug on. After a minute mbtask + rereads his configuration. +

+ Make a poll with mbout poll <node>. +

+ Watch the mbtask logfile and see what it does for that node. It + should be added to the calllist. If not, it might be still a nodelist problem.

+Up +

+ + + + + + + + + + + + +
Q 3.4Dialup script examples for MBSE
A 3.4Dialup Script using mclient: +
+#!/bin/sh
+#
+# Dialup script for MBSE BBS.
+#
+#============================================================================
+# Copyright (C) 1997-2002
+#   
+# Michiel Broek                FIDO:           2:280/2802
+# Beekmansbos 10
+# 1971 BV IJmuiden
+# the Netherlands
+#
+# This file is part of MBSE BBS.
+#
+# This BBS is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by the
+# Free Software Foundation; either version 2, or (at your option) any
+# later version.
+#
+# MBSE BBS is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# General Public License for more details.
+# 
+# You should have received a copy of the GNU General Public License
+# along with MBSE BBS; see the file COPYING.  If not, write to the Free
+# Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
+#============================================================================
+#
+#
+# Enter commands to make the dialup connection and to hangup the connection.
+#
+DIALCMD="mclient -d -c DDS"
+HANGUPCMD="mclient -k"
+#
+# Log to syslog
+#
+LOGGER="logger -p user.notice -t basename $0$$]"
+
+if [ -z "$DIALCMD" ]; then
+    echo "This script is not configured, edit this script to use it."
+    exit 1
+fi
+
+echo "Dial internet start" | $LOGGER
+#
+# Do 3 attempts to connect
+#
+connect=0; try=0;
+while let 'connect == 0'
+do
+    # Count connect attepts
+    #
+    let try=try+1
+    if [ $try == 4 ]; then
+        echo "No internet connection, giving up" | $LOGGER
+        $HANGUPCMD >>/dev/null
+        exit 1
+    fi
+
+    echo "Call attempt $try"    | $LOGGER
+    $DIALCMD >>/dev/null
+    i=60;
+    while let 'i > 0' && let 'connect == 0'
+    do
+        if [ -f $MBSE_ROOT/var/sema/is_inet ]; then
+            connect=1
+            echo "mbtask detected internet"     | $LOGGER
+        fi
+        let i=i-1
+        sleep 1
+    done
+    #
+    # Check if we have a connection
+    #
+    if [ ! -f $MBSE_ROOT/var/sema/is_inet ]; then
+        echo "Failed, 10 seconds pause ..."     | $LOGGER
+        sleep 10
+    fi
+done
+
+#
+# Here we have a connection, now make all needed polls
+#
+$MBSE_ROOT/bin/mbout poll f5003.n280.z2 f19.n280.z2 -quiet
+
+#
+# Now we wait until the do_inet semafore appears, we
+# timeout at 25 seconds, must be enough.
+#
+i=25;
+while let 'i > 0'
+do
+    if [ -f $MBSE_ROOT/var/sema/do_inet ]; then
+        i=0;
+    else
+        let i=i-1;
+        sleep 1
+        echo "wait do_inet $i"
+    fi
+done
+
+#
+# Now test until the do_inet semafore is gone.
+# Timeout is one hour.
+#
+i=3600;
+while let 'i > 0'
+do
+    if [ ! -f $MBSE_ROOT/var/sema/do_inet ]; then
+        i=0;
+    else
+        let i=i-1;
+        sleep 1
+        echo "wait ready $i"
+    fi
+done
+
+echo "Internet sessions done, hangup"   | $LOGGER
+$HANGUPCMD >>/dev/null
+echo "Script ready"                     | $LOGGER
+exit 0
+
+=================================================
+
+ Dialup Script using diald: + +
+=================================================
+#!/bin/sh
+
+PATH=/opt/mbse:/opt/mbse/bin:/usr/bin:/usr/local/bin:/bin:/usr/sbin:/usr/local
+/ sbin:$PATH
+cd /opt/mbse
+if [ -f /opt/mbse/tmp/ip.up ] ; then
+        exit
+fi
+echo "up" > /var/run/diald.ctl
+sleep 15
+
+ping -c 10 -w 10 mail.iol.ie
+if [ -e /var/run/ppp0.pid ]  ; then
+        touch /opt/mbse/tmp/ip.up
+   cd /opt/mbse
+   echo "Fetching News"
+   /opt/mbse/fetchnews
+   echo "Synching clock"
+   telnet 192.168.0.2 9049
+   bin/mbfido news
+   echo "Fetching Mail"
+   /usr/bin/fetchmail -f /opt/mbse/.fetchmailrc
+   bin/soup
+        if [ ! 'cat /opt/mbse/irex/s/rexbusy.0 | xargs ps --no-header' ] ;
+        then
+                rm /etc/ftn/irex/s/rexbusy.0
+        fi
+
+   ./rexl
+   fetchmail -f /opt/mbse/.fetchmailrc
+   ./rexl -sf m
+   /opt/mbse/bin/bink
+
+  echo down > /var/run/diald.ctl
+
+  bin/bres.sh  # >> /dev/null 2>&1
+fi
+rm /opt/mbse/tmp/ip.up
+
+==================================
+
+
+Up + + + + + + + + + + + + +
Q 3.5BBS users cannot get their email on Debian
A 3.5 + Debian Linux uses for normal users a security model with private user groups. + The users of the bbs are all in group bbs. Some pop3 servers do not handle + that situation well and don't show the email for bbs users that is delivered + in /var/mail. If you choose to use qpopper it will work. +
+Up + +


+

4. BBS setup.

+ + + + + + + + + + + + +
Q 4.1 How to set up MBSE for ISDN.
A 4.1Contributed by: J. Beekhuizen, 2:280/1018 +

+ Of course, you have to configure and build your kernel for ISDN + support and the correct drivers for your card. It is beyond the scope + of this document to explain how to do that. +

+ To your /etc/inittab file add the following lines for your ISDN + devices ttyI0 and ttyI1.

+
+# ISDN lines
+I1:23:respawn:/usr/local/sbin/mgetty -x 4 -i /opt/mbse/etc/issue ttyI0
+I2:23:respawn:/usr/local/sbin/mgetty -x 4 -i /opt/mbse/etc/issue ttyI1
+
+ To your mgetty.config file [/usr/local/etc/mgetty_sendfax/mgetty.config + on my system] set up the ttyI0 and ttyI1 ports. With AT&E you set + the MSN/EAZ the device should listen to. This should for an MSN be your + telephone number with the area code but without the leading + 0. For an EAZ the last digit of your EAZ. +

+ The ISDN ports +

+port ttyI0
+modem-type data
+init-chat "" ATZ OK
+AT&E714015437&W0 OK 
+AT&B512 OK
+
+port ttyI1
+modem-type data
+init-chat "" ATZ OK 
+AT&E714017198&W0 OK
+AT&B512 OK
+
+ From the mbsetup menu #5 "Edit Modem types" configure the ISDN + modem type. +
+	Modem type   ISDN Linux
+	Init string  ATZ\r
+	Init string
+	Init string
+	OK string    OK
+	Hangup       \d\p\p\p+++\d\p\p\pATH0\r
+	Info command ATI2\r
+	Dial command ATD\T\r
+	Connect      CONNECT 64000
+	Connect      CONNECT
+	[...]
+	Reset cmd    ATZ\r
+	Error string BUSY
+	Error string NO CARRIER
+	Error string NO DIALTONE
+	Error string NO ANSWER
+	Error string RING\r
+	Error string ERROR
+	Error string
+	Error string
+	Error string
+	Error string
+	Cost offset  0
+	EMSI speed   28800                   ! not relevant for ISDN
+	Strip dashes No
+	Available    Yes
+
+ And from #6 "Edit TTY lines info" the ISDN lines +
+	TTY name     ISDN Line 1
+	Device name  ttyI0
+	Phone or DNS 31-71-4015437
+	Line speed   64 kbits
+	Fido flags   CM,XA,MO,X75
+	Equipment    ISDN
+	Available    Yes
+	Auth. log    No
+	Honor ZMH    Yes
+	Callout      Yes
+	Modem type   ISDN Linux
+	Locked speed 0                                 ! not relevant for ISDN
+	EMSI name    The Wizard's ISDN line 1
+
+	TTY name     ISDN Line 2
+	Device name  ttyI1
+	Phone or DNS 31-71-4017198
+	Line speed   64 kbits
+	Fido flags   CM,XA,MO,X75
+	Equipment    ISDN
+	Available    Yes
+	Auth. log    No
+	Honor ZMH    Yes
+	Callout      Yes
+	Modem type   ISDN Linux
+	Locked speed 0
+	EMSI name    The Wizard's ISDN line 2
+
+
+ T-t-that's all folks :))
+Up +

+ + + + + + + + + + + + +
Q 4.2 How do I use GoldED together with MBSE?
A 4.2Since MBSE BBS version 0.33.12 GoldED and MBSE BBS can be used + together without problems as long as you use it to read the sysop mail. + The mbsetup program can export a file called /opt/mbse/etc/golded.inc + which will contain your main Aka's, Aka matching, sysop name and all your + mail areas. This file is only (re)created if you change the global settings + or one of the mail areas. The first time you must force this by making + a change somewhere. +

+ Now create /opt/mbse/etc/golded.cfg, here is what I wrote: +

+; GoldED.cfg
+;
+; Internet Addressing
+;
+INTERNETADDRESS Michiel_Broek@f2802.n280.z2.fidonet.org
+INTERNETGATE UUCP 2:292/875
+;
+;
+OUTBOUNDPATH /opt/mbse/var/bso/outbound
+REPLYLINK chain
+STYLECODES yes
+;
+;
+; MESSAGE READER
+;
+DISPMSGSIZE KBYTES
+DISPATTACHSIZE KBYTES
+DISPLOCALHIGH YES
+DISPPAGEBAR YES
+VIEWHIDDEN YES
+VIEWKLUDGE NO
+VIEWQUOTE YES
+;
+INCLUDE /opt/mbse/etc/golded.inc
+;
+; The end.
+
+ Put in /opt/mbse/.profile the following line: export GOLDED=$HOME/etc +

+ When you now start GoldED you use it as the sysop. Make sure that + the sysop's userrecord is the first user in the MBSE BBS userbase. If not, + the lastread pointers are not right. The GoldED nodelist compiler can be + added to the setup in menu 18.

+Up +

+ + + + + + + + + + + + +
Q 4.3 How do I use MsgEd together with MBSE?
A 4.3Since MBSE BBS version 0.35.05 MsgEd and MBSE BBS can be used + together without problems as long as you use it to read the sysop + mail. The mbsetup program can export a file called /opt/mbse/etc/msg.txt + which will contain your mail areas setup. This file is only + (re)created if you change the global settings or one of the mail + areas. The first time you must force this by making a change somewhere.
+Up + + + + + + + + + + + + +
Q 4.4 How do I adopt (batch upload) a directory full of files to my BBS'es file base?
A 4.4Written by: Russell Tiedt. +

+ Easy using the script below, provided the file archives (*.zip, *.rar, *.arc, + *.lha, etc.) all contain "file_id.diz" files. +

+ Sort the files in tempory directries that correspond to the filebase area, ie. + /dos4 (DOS files - filebase area no 4) +

+ Then copy the script below to the directory, edit the number of the filebase + that the files must be batch uploaded to, to the number that corresponds to + the required filebase. (On my BBS system the DOS file section corresponds to + the number 4, hence the name above for the tempory directory used above) I + copy all files to be batch uploaded to the DOS file section, to the /dos4 + directory, copy the script below to the /dos4 directory, edit the script so + that it uploads to the DOS filebase (4) and run it. +

+for file in `ls` ; do
+  mbfile adopt 4 $file "Dummy description"
+done
+
+ NOTE: the 4 in the script above, indicates the filebase/filearea that the + files will be batch uploaded to. + + For archives that have/contain a file_id.diz file, "Dummy description" will be + replaced with the content of the "file_id.diz file of that archive, if no + file_id.diz exists in the archive, then "Dummy descrition" will appear in the + description field of the files.bbs file for the file area it gets uploaded to. +

+ If the files don't have/contain file_id.diz files, then create and insert in + the archive, a file_id.diz file having a suitable description of the content + of the archive, then follow the instructions above. +

+ For *.exe and *.com files, as well as other files that are not archived ie. in + *.zip/*.rar/*.arc/*.lha/*.lhz/*.zoo etc. Create a file_id.diz file for the + file, then make an archive using the archiver of your choice containing the + file and the file_id.diz you created for it, then follow the instructions + above. +

+Up + +


+

5. Doors setup.

+ + + + + + + + + + + + +
Q 5.1 How do I run DOS doors under MBSE BBS?
A 5.1 +
+Written by: Redy Rodriguez, sysop of Parolas BBS 2:348/609
+Fidonet:    Redy rodriguez 2:348/609
+Email:      redy@users.sourceforge.net
+            Redy_Rodriguez@f609.n348.z2.fidospain.org
+
+

+Note: the next method is obsolete, with newer versions of dosemu it is +possible to run the doors without sudo but with user privileges. See the +doors page for details. The information below is for +old versions of dosemu. +

+ NO WARANTEE +

+ The information gathered here, works for the indicated intention. + It is proven and working in PAROLAS BBS, however, I do not guarantee + that it works correctly in all the cases. The author is not responsible + for the damage this can cause. If you follow the instructions, and you + get not the expected result, or as a result of it you get undesired results, + you loose data or destroy your system, you you will be the only person + in charge. +

+ INTRODUCTION +

+ This document describes how I have been able to execute MS/DOS + doors in MBSEBBS. Probably it is not the best way to do it, but this + is the one that works for me. If somebody finds one more more effective, + or simpler or safer a solution, then I like to hear this solution. +

+ WHAT IS NEEDED? +

+ MBSEBBS is correctly compiled and working, in my case I have the + version 0.33.19, that is at the moment the most recent and stable, I suppose + that this method can be valid for newer versions. DOSEMU 1.0.2 I have tried + previous versions, but these do not work correctly with virtual ports. You + can download dosemu.1.02.tgz from www.dosemu.org + , you may also need to download the freedos archive dosemu-freedos-bin-1.02.tgz. + A partition with MS/DOS, I have on my disc a partition with installed + MS/DOS, and that is the one that I use, but I'm sure that many doors + could work correctly with the freedos. You also need sudo. Sudo + is a utility that let's ordinary users execute certain programs as superuser, + this is available with almost all GNU/Linux distributions. +

+ COMPILING DOSEMU +

+ Unpack dosemu in some directory, for example /usr/src, then changed + into that directory and execute 'make'. When this is ready we have + dosemu compiled. If we already had a previous version of dosemu it is + advisable to uninstall it before continuing. Copy dosemu-freedos-bin-1.02.tgz + to the toplevel directory of the dosemu source and execute: +

+./install_systemwide -fd dosemu-freedos-bin-1.02.tgz
+
+ In the directory etc, within the directory where we have decompressed + the source code of dosemu we have configuration examples. Create the + directory /var/lib/dosemu if it does not exist the directory, and copy + global.conf to that directory. Also copy dosemu.conf to directory /etc + and copy dosemu.users.secure as dosemu.users to /etc. +

+ CONFIGURE THE DOS PARTITION +

+ Now we must configure the dos partition, in my case this exists + as a mounted dos partition in /dos/c. If this is not the case then you + could work with an image of freedos. I have created in my dos partition + a directory c:\doors where I install all doors that I want to use, and + a file called c:\doors.bat with the following contents: +

+@echo off
+c:
+cd \doors
+if exist %1.bat call %1 %2 %3 %4 %5 %6 %7 %8 %9
+c:\dosemu\exitemu
+
+ Change to the directory /var/lib/dosemu and create directory + called for example 'c': +
+mkdir c. 
+
+ A link to the mounted partition could be made but I prefer + to create a new directory and in that directory make links to dos program + which are only of interest for us. Many programs and directories of the + dos partition are not needed in dosemu and to run doors. Change to the + created directory and make links to everything what we have in our dos + partition (we will erase soon what we do not need). Autoexec.bat and + config.sys must copied instead of making links so we can modify them, because + surely we will want that they are different in dosemu, then in real dos. +
+cd c
+ln -s /dos/c/* .
+rm autoexec.bat
+rm config.sys
+cp /dos/c/autoexec.bat config.sys .
+
+ Create a directory dosemu and copy the typical utilities of dosemu. +
+mkdir dosemu 
+cp /usr/src/dosemu-1.02/1.0.2.0/commands/* dosemu
+
+ Now we modify the copy of config.sys and autoexec.bat to erase + everything what is not necessary to execute our games as doors, like + drivers for cdrom, mouse etc... We will clear the keyboard driver 'KEYB + XX' and make sure that in the path in autoexec.bat to include the directory + c:\dosemu. Also load the fossil emulator, for example add these two lines: +
+path %PATH%:c:\dosemu
+c:\dosemu\fossil
+
+ If there is another fossil, such as bnu or x00 in config.sys + or autoexec.bat we clear all references to these, we will load them + if that is necessary in the file that it executes the door when needed, + this can be necessary for some doors and for other not. Now we can erase + all the links to the directories who are not necessary, and that we do + not want that they are visible. +

+ Then edit the file /etc/dosemu.conf and look for the line that + begins with "$_hdimage =" and change that to: +

+$_hdimage = "c"
+
+ Now login as root and you should be able to execute our dos + emulator by executing '/usr/bin/dosemu.bin' +

+ (to leave dosemu type in exitemu) +

+ CONFIGURING SUDO +

+ Normally the dos partition is not accessible to the users of the + BBS, except from within dosemu, and to be able to have access without activating + the setuid bit of dosemu, we use sudo so that any user of the BBS can execute + dosemu.bin as root. As root execute visudo to edit the configuration file + of sudo add the lines: +

+%bbs   ALL=NOPASSWD:/opt/mbse/bin/bbsdoor.sh
+%bbs   ALL=NOPASSWD:/opt/dosemu/bin/dosemu.bin
+
+ The first command is a script that takes care of copying the + file door.sys to the dos partition, the second line is to allow to + execute dosemu.bin. Any user of group BBS can execute these commandos + like root without password is asked. +

+ In order to test that this works login as user mbse and execute: +

 
+sudo dosemu.bin
+
+

+ INSTALLING A DOOR +

+ First we need a pair of scripts. These scripts are installed when + you did install MBSE. These scripts are needed to execute the doors and are + installed in /opt/mbse/bin: +

+--- rundoor.sh ---
+
+#!/bin/bash
+#
+# rundoor.sh - Never call this script directly, create a symlink
+#              to thisfile with the name of the door. For example
+#              tu run the door ilord do:
+#              cd /opt/mbse/bin
+#              ln -s rundoor.sh ilord
+#
+# by Redy Rodriguez and Michiel Broek.
+#
+DOOR=`basename $0`
+COMMANDO="\" doors $DOOR $*\r\""
+
+/usr/bin/sudo /opt/mbse/bin/bbsdoor.sh $DOOR $1
+/usr/bin/sudo /opt/dosemu/bin/dosemu.bin \
+-F /var/lib/dosemu/global.conf \
+-I "`echo -e serial { com 1 virtual }"\n" keystroke $COMMANDO`"
+reset
+tput reset
+stty sane
+
+--- bbsdoor.sh ---
+
+#
+#  Initialize DOS environment before starting a bbs door.
+#  Parameters: $1 = name of the door
+#              $2 = the nodenumber for this session
+#
+#  by Redy Rodriguez, 22-Oct-2001
+if [ "$1" != "" ]; then
+    if [ "$2" != "" ]; then
+        mkdir -p /dos/c/doors/node$2 >/dev/null 2>&1
+	# Copy door.sys to dos partition
+	cat ~/door.sys >/dos/c/doors/node$2/door.sys
+	# Create .dosemu/disclaimer in user home to avoid warning
+	if [ ! -d $HOME/.dosemu ]; then
+	    mkdir $HOME/.dosemu
+	fi
+	if [ ! -f $HOME/.dosemu/disclaimer ]; then
+	    touch $HOME/.dosemu/disclaimer
+	fi
+    fi
+fi
+
+ The script rundoor.sh is never called directly, simply create + a link with the name of the door to this file, this name must be the + same as the one of the .bat file that starts the door in the doors directory + of the dos partition. Let me explain this with an example: +

+ I have chosen the door Virtual Sysop, but it could be any other + door. My experience says to me that not all doors work correctly with + a serial port in virtual mode. This one is working at Parolas BBS. +

+ Unpack Virtual Sysop in the dos partition, in the directory c:\doors\vsysop. + Execute as user mbse 'sudo dosemu.bin' and make sure that the door + works in local mode (these commands are for this door): +

+cd doors
+cd vsysop
+vsysop -local
+
+ If everything is correct then create the file c:\doors\vsysop.bat + with the following contents: +
+--- vsysop.bat ---
+
+@echo off
+C:\COMUNIC\X00\X00 E B,0,57600
+cd vsysop
+vsysop -D c:\doors\node%1\door.sys -BBSNAME PAROLAS
+deltree /y c:\doors\node%1
+C:\COMUNIC\X00\X00
+cd ..
+
+ Before passing the control to dosemu, the file door.sys will + be copied to c:\doors\node???? where the ???? is the node number from + which the door is invoked (to allow that several users can execute the + door at the same time). This nodenumber also is passed as the first parameters + to the .bat file, this is to indicate to which directory to copy the door.sys + file. +

+ The Virtual Sysop door supports door.sys and that is the only + dropfile that is generated by mbsebbs and that is supported by most + of the doors. If you need another format you must use a converter to change + the format of the dropfile. +

+ I use the fossil X00, I have it installed in C:\COMUNIC\X00 and + this door works for me correctly with these parameters, it is alos possible + that it works without X00 or that you can load another fossil. +

+ Now create a link to rundoor.sh in /opt/mbse/bin called vsysop. + The name must be the same one that the name of the .bat file created + in the dos partition, but without the extension bat. +

+ln -s /opt/mbse/bin/rundoor.sh /opt/mbse/bin/vsysop
+
+ Now we execute mbsetup and enter the menu setup to add an entrance + like this (It puts option 16 to Yes): +
+    8.3. EDIT MENU ITEM
+
+    1.  Sel. key  V
+    2.  Type nr.  7         Run external program in shell
+    3.  Opt. data /opt/mbse/bin/vsysop /N
+                  1234567890123456789012345678901234567890123456789012345678901234
+    4.  Display
+    5.  Security  0     --------------------------------
+    6.  Min. age  0
+    7.  Max. lvl  0
+    8.  Password  <null>                    13. No door.sys No
+    9.  Credit    0                         13. Y2K style   No
+    10. Lo-colors Normal display color      14. Use Comport Yes
+    11. Hi-colors Bright display color      15. Run nosuid  Yes
+    12. Autoexec  No                        16. No Prompt   Yes
+
+ And that is everything...
+Up +

+ + + + + + + + + + + + +
Q 5.2 Dosemu compile tips
A 5.2 +
+Written by: Rick Van Ruth, sysop of Vampyre's Heaven BBS 3:640/954
+
+ Dosemu still exhibits some file locking behaviour and this needs + to be overcome, especially if you are running multinode door games. The + following information was supplied by Bob Newell of Chung Kuo BBS (telnet + chungkuo.org) and I reiterate it here. +

+ There is an issue in that GNU/Linux file locking does not map precisely + to DOS file locking. You need to patch DOSEMU and build a special version + to deal with this problem. Find the file "dosext/mfs/mfs.c" in your + DOSEMU source tree. Locate the following lines: +

+case DENY_ANY:
+fl.l_type = F_RDLCK;
+
+Change the second line to 
+fl.l_type = !writing ? F_RDLCK : F_WRLCK;
+
+ and build a new version of DOSEMU. +

+ To solve a problem of slow screen painting, locate "base/async/int.c" + in your source tree. Locate +

+case 0x2C:
+
+and just below, comment out or delete the line
+
+usleep(INT2F_IDLE_USECS);
+
+ and rebuild your DOSEMU. +
+ It is recommended to use both tips above as it will not harm + any dos door games.
+Up +

+ + + + + + + + + + + + +
Q 5.3 Setting up for InterBBS games.
A 5.3 +
+Written by: Rick Van Ruth, sysop of Vampyre's Heaven BBS 3:640/954
+
+ There are 2 methods for providing InterBBS setup. If your system + merely connects to one host for your games packets you need only perform + a few simple steps to have it working. If your system is a Host for InterBBS + games you will also need to add a script to separate different packets + for different downlink systems. +

+ Common to Both Methods:
+ With most BBS games you will need 2 directories in your dos + filesystem area. One for the inbound packets and one for netmail messages + door games produce to send outbound packets. +

+ The easiest way to solve this is by creating symlinks from your + MBSE directories into the directory where your dos doors live (c:\doors). + The 2 directories you wish to link are /opt/mbse/var/inbound and /opt/mbse/var/msgs + - link them into your dos directories doors directory with the same + names ie: "inbound" and "msgs". Now according to dosemu you will have + a c:\doors\inbound and a c:\doors\msgs. We do not actually use the "msgs" + directory for anything other than a place to tell games where to write + its netmails to. These "netmails" are subsequently deleted from the system, + but the games need to be able to write them there. +

+ 1. The Easy Way - Single Host System:
+

+ 1A. First of all you will realise that door games running under + dosemu usually write files as owner root, chmod 0644. This is not good + for MBSE to transfer these files as it does not have permission to act + on the files. In order to force dosemu to write games files so that MBSE + can act upon them we need to alter /etc/sudoers and change the umask for + root running under sudo. To do this open /etc/sudoers (you must be root + to edit this file) and add the following line at the top of the file before + the specifications: +

+ Defaults               umask=0000

+

+ This will allow dosemu to write files chmod 0666 (read/write everybody) + and MBSE will be able to manipulate them. +

+ For my example I will use the InterBBS dos door game called Barren + Realms Elite (BRE for short). +

+ 1B. Install Bre in c:\doors\bre and setup the necessary files + for its execution as a dos door from MBSE as per the dos doors faq. +

+ 1C. Tell Bre (in its BBS.CFG) that the path for inbound packets + is c:\doors\inbound and the netmail path is c:\doors\msgs Bre will now + automatically process all inbound packets it finds in the inbound directory + for itself. It needs no assistance as it merely searches for the correct + filename in the directory. +

+ 1D. We need to link Bre's outbound path to our host nodes MBSE + mailbox for automatic transfer of games packets. First make sure you + have added an "outbox" for your uplink node in the nodes setup in MBSE + - Section 7, Select Uplink, Menu 1, Section 2 "outbox dir". eg: if your + uplink is 3:640/954 then MBSE will default to creating /opt/mbse/var/boxes/node3_640_954 + as the outbox (I will use this as an example). Note the flavour of your + uplinks node connection will apply to the outbox as well. Thus if that + particular node is set crashmail then anything you put in the outbox will + also be sent crashmail. +

+ Next go to your Bre game directory. You will notice Bre has an + OUTBOUND directory, this is where it places all its game packets that + are to be sent to the uplink. We need to delete this directory and instead + create a symlink to the node outbox instead. If Bre is in c:\doors\bre + then the symlink command will be: +

+ ln -s /opt/mbse/var/boxes/node3_640_954 /dos/c/doors/bre/OUTBOUND +

+ Alter the above depending on where your linux path to your dos + is, also remember linux is case sensitive! Note you can also make as + many symlinks as you like to the nodes outbox, so if you have 2 or 3 + different games you send to that node you can link the outbox to each + games outbound directory. Also if you have different games to different + host nodes just link the game outbound directories to the outboxes of each + node. +

+ Thats it. The system will now process inbound and outbound packets + automatically. You will however need to delete the netmails in the msgs + directory - I have included this in the Door game maintenance section + further on. +

+ If you experience problems with your system polling nodes and + sending the game mail packets while a user is online within the game then + you might wish to use the dos "share.exe" so packet files are not being accessed + by both the game and the mailer at the same time. You can load share.exe + within your doors.bat in dos root directory. +

+ 2. The Hard Way - Multiple Host System +

+ Follow steps 1A, 1B, 1C above, the change occurs for 1D (below). +

+ 1D. We need a script to process the Bre outbound packets and add + them to MBSE's node outboxes path so they are sent. A script on how to do + this follows (with comments ). First remember to create your outboxes for + each node that you transfer games packets to. I will use 3:640/954 as above + and 1:123/456 for this example of 2 systems linked to the one Bre game. +

+ This script should be owned by user "mbse" and have the permissions + (chmod 755) -rwxr-xr-x. It is best kept in /opt/mbse/bin with your + dos game executing scripts. I call this script "dos_poll" +

+------------------------------------------------------------------------
+#!/usr/bin/perl -U
+use File::Basename;
+use File::Copy;
+
+# Define the variables for the outboxes for our links
+$node1 = "/opt/mbse/var/boxes/node3_640_954";
+$node2 = "/opt/mbse/var/boxes/node1_123_456";
+# Define the linux path to Bre's outbound directory
+$bre_path = "/opt/mbse/dos/doors/bre/OUTBOUND";
+
+opendir(DIR, "$bre_path") || die;
+@dirlist = readdir(DIR);
+closedir(DIR);
+
+foreach $filename (@dirlist){
+    $brefile = "$bre_path/$filename";
+    ($filenameOnly, $pathname, $fileExtension) = fileparse($filename, '\..*');
+    
+    if($filenameOnly eq "048b0201") {
+        move("$brefile","$node1"); 
+    }
+    if($filenameOnly eq "048b0203") {
+        move("$brefile","$node2"); 
+    }
+}
+
+# '048b0201' is the packet name Bre creates. You can find out what
+# your packet name is by running BRE PLANETARY and then checking inside
+# the Bre OUTBOUND directory - note no ext on name. You should also check
+# your nodes dat for which is which 048b0201 means from system 2 to system 1
+# so you would be system 2 in the nodes dat and 1 would be 3:640/954
+# 048b0203 is obviously to system 3 in the nodes dat - 1:/123/456 in our
+# example here
+
+------------------------------------------------------------------------
+
+ Thats it. You can run this 'dos_poll' script from the maintenance scripts described below.
+Up +

+ + + + + + + + + + + + +
Q 5.4 Door Maintenance.
A 5.4 +
Written by: Rick Van Ruth, sysop of Vampyre's Heaven BBS 3:640/954
+ Ok, so you can setup doors, run inbound and outbound for interbbs + games. So how do you do maintenance?
+ Again by scripts. Again I will use BRE as an example. First + I create a maintenance batch file in my C: root directory. I have called + it maint.bat and for the bre game it looks like this: +
+cd \doors\bre
+BRE INBOUND
+BRE SCORES
+BRE REQUEST
+BRE PLANETARY
+exitemu
+
+ if you are familiar with Bre you will know this to be a standard + sort of maintenance except for the "exitemu" at the end. That is there + because we are going to use a script to start dosemu and call the maint.bat + - so afterwards we need it to exit dosemu.
+ Now a maintenance script to be called from your cron or whatever + else you are using to execute events on your system. I call this script + "dos_maint" and it also lives in /opt/mbse/bin +
+#!/bin/sh
+#
+COMMANDO="\" maint \r\""
+/usr/bin/sudo dosemu -dumb -E dir > /opt/mbse/log/dos.log -quiet -I "`echo keystroke $COMMANDO`"
+/bin/rm /opt/mbse/var/msgs/*.msg
+#/opt/mbse/bin/dos_poll # Uncomment this line if you are using the Multiple host script
+
+ You will notice this script starts dosemu and calls maint.bat, + and then when its finished there it deletes all those games netmails + and if you run the script for multiple hosts for your games it can call + that as well. Please note the second line is all ONE line, it has most + probably wrapped here. +

+ You will notice that the script calls dosemu and not dosemu.bin, + this is because we need to tell dosemu to open a dumb terminal and not + display to a console or screen. By use of the redirection we redirect + the normal console output to a file, here I have used /opt/mbse/log/dos.log + as that is where all of MBSE's other logs reside. +

+ Once "dos_maint" is run via the cron it will run maintenance on + your dos doors, process inbound/outbound interBBS game packets and have your + outbound packets ready to send. Thats about all there is to do :) +

+ Note: You can make variants on these scripts for running daily + maintenance or just packet processing at certain times of day. They + are just variations on the information above, but if you have questions, + contact me! +

+ Have fun!

+Up + +

+ + diff --git a/html/flow.html b/html/flow.html new file mode 100644 index 00000000..3952a804 --- /dev/null +++ b/html/flow.html @@ -0,0 +1,180 @@ + + + + + + + + + + + +Running a BBS under Unix. + + + +
+
Last update 01-Mar-2007
+

Running a BBS under Unix.

+ +

Introduction

+

+Everyone who has been running a (single line) BBS under DOS until now will +need to understand that running a BBS under Unix (or any other multitasking +os) is completly different of what you are used to. Under DOS things were +quite simple, from AUTOEXEC.BAT you started a new .BAT file that would run +forever and started all needed programs after each other. +The programs that where started +depended on the errorlevel of the previous program. Only one program could +run at the same time. +

+People who had previous run a BBS on another multitasking os, or were running +a BBS on a small lan with a fileserver and workstations for each line, are +already more used to the idea of running more programs at the same time, +and to "signal" what to do next with semafore files. +

+The Unix aproach is more or less the same, but there are more differences. +The main difference is that there is no mailer connected with the modem waiting +for a call, instead there is a getty process watching your modem(s). And for +internet calls, these are started via (x)inetd using standard *nix methods. +Another +big difference is that you don't see what's happening, there is no screen +with the mailer or bbs picture on it. All programs run in the background. If +you don't like that, stop now and go back to your old DOS bbs. It's just the +way everything is done. +

+Programs that must start at specific times (events in DOS), are started from +cron, this is the event scheduler for Unix. With this +program maintenance can be started, polls created etc. For starting programs +when they are needed there is a taskmanager loaded at system bootup. This +taskmanager "watches" the semafore directory of the bbs and will start what +is needed. It will also watch the mailer outbound to see if there are nodes +to call. +

 

+ +

Waiting for a call .....

+

+Under Unix this is done with the mgetty program, this is the +process that is connected with each modem (or ISDN adapter) and waits for a +call. The mgetty program (written by Gert Doering, gert@greenie.muc.de) will +detect the call, and find out what or who did make the call. It can detect +incoming humans who want a login prompt, PPP calls from users who want to +make a PPP connection (browsing your BBS whith netscape for example), A fax +machine trying to deliver a fax and finally a mailer trying to establish +an EMSI, FSC-0006 or FSC-0001 session. The mgetty program is responsible for +starting the right client programs. How to do this is explained in the +installation manuals, but be sure to compile it with Fido and PPP support. +

+For internet calls, via (x)inetd mbsebbs can accept calls from connections on +ports. For example if a connection comes in on port 24554 the mailer is started +in binkp mode. +

 

+ +

A Human is calling.

+

+This could be a bbs user. For each user to login to your bbs there is a +unix account. They automatic create such an account the first time they login +with the bbs account. During the creation of their account the shell that is +installed for there account is the mbsebbs binary, so that's the only thing +that they get if they call in. When they logout the bbs, or drop carrier etc, +the session is ended and mgetty takes over the line again. +Note that they never can get a Unix shell unless you install a door +in the bbs that calls a shell for them. +

+Because for dialin with mgetty the mblogin program is used and not the normal +login program, only bbs users can login. All other users including root are +denied access. +You might consider installing SSH on your system for remote maintenance. +

+It is also possible to install the mblogin program as the login program for +telnet users if you are directly connected to the internet. +

 

+ +

A PPP call is detected.

+

+Installing a PPP server on your system is beyound the scope of this project. +However if you did install it, users can login your bbs with their favourite +browser and use your bbs. Note that the necessary tools to automatic create +newsgroups don't exist at this time. With the proper setup you can automatic +create and maintain html pages for the file areas. +

 

+ +

A mailer call is detected.

+

+If a mailer is detected by mgetty, the mbcico program is started and will +take over from mgetty. It will establish a mail session with the caller and +the mail and or files will be exchanged just like any DOS mailer would do. +After the call, mbcico will hangup and mgetty will take control of your modem +again. If there is any mail received, mbcico will place the semafore mailin +so that another process can take care of the received mail. +

 

+ +

There is mail in the inbound

+

+As I said before, if the mailin semafore is present, the task manager will +then start the mbfido program that will toss the mail, process any files +received and if necessary it will create other semafore's for example to link +the message bases, start the nodelist compiler etc. Note that this can be done +while there may be a new mailsession going on, a bbs user is online, it doesn't +matter. Processing mail and files can be done real multitasking without any +damage to other processes. +

 

+ +

It's time to poll a node

+

+At the time that you whish to poll a node, let cron create "poll" requests. +When a poll is created, the semafore scanout is also created. +The taskmanager will then start mbcico at regular intervals so that mail will +get out. If there is no more mail to send, the scanout semafore is removed. +If a timeslot ends, you can just remove the "poll" requests that didn't succeed. +

 

+ +

It's Zone Mail Hour, so now what

+

+Relax, if you have netmail ready for nodes the +mailer script will try to send these mails to those nodes. If it was crash +mail, and the destination was a non CM node, the mailer will try to send those +mails too. Note that other crashmails are send anytime. Also note that packed +mail and files are not send during ZMH. If a node calls you during ZMH he will +get everything that's waiting, including packed mail and files. The task manager +(more on that later) calculates the Zone Mail Hour from UTC time, you don't +have to change anything for summer- and wintertime. The taskmanager knows about +all zone mail hours of all Fidonet zones (1..6). For othernets, zone mail hour +is taken from the setup as default value. The taskmanager will also handle the +mail for nodes with the Txx flag (FSC-0062) on the right times. +

 

+ +

Daily maintenane

+

+This is started by cron jobs. There is no need to take +your bbs lines down during maintenance, you can do it any time of the day. +I have made several scripts for this, daily, weekly and monthly. +

 

+ +

How about system load

+

+Because GNU/Linux is a 32 bit os, not bothered with a graphical user interface +(unless you install it), it has all the time in the world to serve your +bbs programs. Background programs are build to release time to the Unix os, +they don't need to run fast because it's background processing. The bbs and +the mailer, have a low server load although there is no timerelease build +in. Only the bbs has some short moments when it needs a lot of your system, +for example when a user logs in and scans for new mail. The bbs I run is a +486-DX4 100 MHz, 20 MB ram, with 2 analogue lines, this seems to work fine. +When this system's MOBO died, I used a 386DX33 for several months with +20 MB ram, and the only thing users ever noticed was that scanning for new +mail was slower. I think this is the slowest harware that will work. +However, you must always use 16550A uarts for the COM ports. For best +performance use SCSI disks. I noticed that old 5"FH SCSI disks perform better +for bbs usage then modern EIDE disks. This is probably caused by the fact that +the kernel needs more time for the cheap IDE bus. +If you want to use X11 on your bbs, you need more ram and a faster CPU or a +separate machine via a lan and export the display to that machine. Currently the +smallest amount of memory you need is 36 MB, and that amount is only needed if +you use a virus scanner which needs more memory then mbse. +

+ +BackGo Back +

+ + diff --git a/html/ftsc/index.htm b/html/ftsc/index.htm new file mode 100644 index 00000000..5c6d11ed --- /dev/null +++ b/html/ftsc/index.htm @@ -0,0 +1,97 @@ + + + + + + + + + +Fidonet Standard Commitee documents. + + + +
+
Last update 01-Mar-2007
+

Fidonet Technical Standards

+ +

Introduction

+

+This is an overview of used documents for the development of the MBSE BBS +package. Note that there are more documents, but only the relevant and valid +documents are shown present here. The documents are not available in this +distribution anymore, you can get these from the FTSC +website. +

+Michiel Broek. +

+ +


+

FSC Documents

+
    +
  • FSC-0035 Transparant Gateways to and from FidoNet, Michael Shiels +
  • FSC-0039 A type-2 packet extension proposal M.Howard +
  • FSC-0046 A Product Identifier for FidoNet Message Handlers, J.Homrighausen +
  • FSC-0048 A Proposed type-2 packet extension, J.Vroonhof +
  • FSC-0049 A proposal for passing domain information during FTS-0006 sessions, B.Hartman +
  • FSC-0050 A character set identifier for FidoNet message editors, T.Sundblom +
  • FSC-0053 Specifications for the ^aFLAGS field, J.Homrighausen +
  • FSC-0056 EMSI/IEMSI Protocol Definition, J.Homrighausen +
  • FSC-0057 Conference Managers - Specifications For Requests, F.Fabris, J.Homrighausen +
  • FSC-0059 Newsgroup Interchange within FidoNet, J.Decker +
  • FSC-0062 Nodelist Flag indicating Online Times, D.Thomas +
  • FSC-0070 Improving FidoNet/UseNet Gating and Dupe checking, F.Arnoud +
  • FSC-0072 The HYDRA file transfer protocol, J.Homrighausen, A.Lenz +
  • FSC-0087 File forwarding in FidoNet technology networks, R.Williamson +
  • FSC-0088 Compatibility and Link Qualifier Extensions for EMSI Sessions, R.Williamson +
  • FSC-0091 ISDN nodelist flags (rev.002), A.Lenz +
  • FSC-0093 Reduced seen-by lines, F.Ellermann +
+ +

+ +

FSP Documents

+
    +
  • FSP-1011 BinkP - a protocol for transferring Fidonet mail over reliable connections, Dima Maloff +
  • FSP-1013 Character set definition in Fidonet messages +
  • FSP-1018 Binkp/1.0 Protocol specification +
  • FSP-1019 Binkp 1.0 optional protocol extension CRAM +
  • FSP-1026 Translation of a Fidonet Address into an Internet Domain Name +
  • FSP-1030 Unicode character set in FidoNet messages +
  • FSP-1032 Binkp optional protocol extension Dataframe Compression +
  • FSP-1033 The ICM Flag +
+ + +

+

FTA Documents

+
    +
  • FTA-1005 FTSC Product ID +
  • FTSC Product codes list +
+ + +

+

FTS Documents

+
    +
  • FTS-0001 A basic FidoNet(r) technical standard, R.Bush +
  • FTS-0004 Echomail specification, B.Hartman +
  • FTS-0006 YOOHOO and YOOHOO/2U2, V.Perriello +
  • FTS-0007 SEAlink protocol extension, P.Becker +
  • FTS-0008 Bark file-request protocol extension, P.Becker +
  • FTS-0009 Message identification and reply linkage, J.Nutt +
  • FTS-1024 Raw ifcico mail transfer protocol +
  • FTS-4001 Addressing Control Paragraphs, Goran Eriksson +
  • FTS-4008 Time zone information (TZUTC) +
  • FTS-4009 Netmail tracking (Via) +
  • FTS-5000 The distribution nodelist, David Hallford +
  • FTS-5001 Nodelist flags and user flags, David Hallford +
+ +
+ +IndexBack to Index +
+ + + diff --git a/html/images/b_arrow.png b/html/images/b_arrow.png new file mode 100644 index 0000000000000000000000000000000000000000..91e6de1b51c98e8192cb8e62a72291ffb3468817 GIT binary patch literal 1028 zcmW+!TS!z<6x}&9&N$9XM;&LJ8Ry~Sr^q-`&`&61IvHl;qeO!8;|P9KhJ-)G#ll_? zMiHE%khHH#NFpi_=C6eFCj>?GAcDd^ri_XTcI(^&_ny1YK6~x8*1i||`?~$!n3stB z`JP+>dm2yHM3z;=dQ)6{QF1sOPN&o5a+Q~tyWMV& z$5T;J;q`heD=U3IpWp8f1OmZeFcb<^RaI42SBJylnwpy0+Sx(o0^)Mo12LQkt9+?+I$K@LXuD<5VFZgK~j=b zBsEDk7nL9-NhwmA6r+x`AT3EN(wa0A3t~yEh>-v)K!JiXglsyPC52EzXd&1%L?oq< zN=PjvoBl{DDU=dQ3&n;G?rJHt5?Tw*V24t{Qm_(e#Ape=00Uj{10m$l7}$UY7K+(O zF)@~sQcKB38QLOJN-8ZC8=+uNh8M6O0lsJ`p_1U)=D!RggRYqd82l~G&o5e*#rV(hQ`j4Jd|{1v4jsk0XR6RQU>_j=_RPu% z&NhwpcIW84E761Cc0SiJIQ@F%+QWdA^5u?g@UBM#-Ln_VuCJ9no1Wdhy76iv^LVK3 zsrTpJw${ye&qj~rv(7{+I_ECi9(Qe|I~@c%XB1e@ok*-}^p%y))*VEQv4UU`qL}zT8sh;hF#JX099n literal 0 HcmV?d00001 diff --git a/html/images/connec.png b/html/images/connec.png new file mode 100644 index 0000000000000000000000000000000000000000..e9107d3f0b2a569c8d6852197f901e2f9f4d10ea GIT binary patch literal 1049 zcmW-fU5M6I5XL8DVO`J!gTPo(GYaM=$_w)%Sa~;HcU>0SDZ7!)G$W!2M7;1~=mS=; zWc5lb6Mabz3zTIcp^F!qe(yQ(=lti)oM)bSo^yO^a>uHn zbweVuYHVj`5BsM6H@KpIa;CQ|vO=aNrbh|Aecm=Fa$jWqzS#X~*+fDlDNr#LR|%C= zDHSm>6E_KyG$}%ta7mW}D#SuOBtkNz8j7WON~B~;rC5oVL`fD600V$aRFN@JGc{KW zwNxu5-(PMPW@%QfJ+ZrmTe?+aL)yb4EW@giquSFVEz_!T<+7JWS(a4;f-LM{BY<+MrI4a0O+W>Pd;ON-p6-Qe^d<<8@C>ge0c=P|dZt%X1aeeId6rib2<5npLP&xP zqG1}Y5gMsc+Ep z_4m7fzB)3xboPPE(}y;GHZ^g#x487=$-lOIcXa)c%_lydUwviv?t^P)Kb)95^~e(! zI@_<#uB`EU&usap_t=j!`#%5n#g`r*-yhxUn-)Gj^~JfRy+53uxp?jM1Mh#e_RU{! z*W7CtAAWwXuD>vTdv5KeJHtnAu3UKTGGw}qukheodMI&=TQ&Ho-7`smSz Ppf6*ilb!kPGjIJ5%32kX literal 0 HcmV?d00001 diff --git a/html/images/domains.png b/html/images/domains.png new file mode 100644 index 0000000000000000000000000000000000000000..31ed8cb3ec0d11130a12cf21d865f13a0f986c86 GIT binary patch literal 5379 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 Z)&Z@AdA+Ke_c#9@nVVP{7a3iO_$T&eCRhLf literal 0 HcmV?d00001 diff --git a/html/images/doors.png b/html/images/doors.png new file mode 100644 index 0000000000000000000000000000000000000000..58d9a8ae1739fe02d32d5a004f0ab3ca893bd20e GIT binary patch literal 12601 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

mbUcvD{U5&M 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 NrmCJwrIO7*{|!jc|AGJj literal 0 HcmV?d00001 diff --git a/html/images/dream1.png b/html/images/dream1.png new file mode 100644 index 0000000000000000000000000000000000000000..3752983232563226f3999707a48f712d9d07fea0 GIT binary patch literal 119883 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≀q+dFPP?a7SuxBnMGqDt)nuVA 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⪚7LrUynK?SiqJ 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

;v)KDsg&**|G}o@NxH`p4O@!l(IUV|L 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

2es>f&d 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 QEC2ui07*qoM6N<$f|Vbv$N&HU literal 0 HcmV?d00001 diff --git a/html/images/dream2.png b/html/images/dream2.png new file mode 100644 index 0000000000000000000000000000000000000000..b5f314e0e86044fe854b324e1ea62d7796d9dcfc GIT binary patch literal 108143 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 z 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 X98~p^7^SE800000NkvXXu0mjfbuWS` literal 0 HcmV?d00001 diff --git a/html/images/dream3.png b/html/images/dream3.png new file mode 100644 index 0000000000000000000000000000000000000000..408bf81bdc37b96989b00d92ecdbb8046b6cc41c GIT binary patch literal 115790 zcmV)HK)t_-P)^kwNkWBMAX8>H?!0@WR#DGNj8L^ zudJ@nX5-Xrd-MF^XTmK^z`_I zoWNaMU8>OGcXfSv(d2}FgM=~&+S7bwOeBQ9)DoD!COl*{Gd0(`pyb};7#=Lwe07YA zjf|qi>iYc5&de_?FU&491pfSYDFrfwLHq&)Jm%zdf_xHNfv89bTz;%#@N@hfh1Clv|3brl)OBWoZysywEhZ zWIWj9MAF>W#i~}Wxm#2xoX-5zmS7}Oq-11elvXsHq@ znuTtOc}LHydEDddmp%;p*`+v;N_)uEx6afjQ5<=1EmV@^yt1(@YK*tx=sG+SAG`;?n&HiI-_aN z5`E2J2Ux@{SI0Cby_=%%Z9H|N1S0#m*|y0LT#?OnK?mum+IHYJ!npcuWw24Fsm3$L zK_(Dm24p5PVvI3XqUc%z2LZM5fMTW@Hjj~^WOqTEPR89WP%3}T-fR6H-`{VoeM{Zu z<@6Er@^Ka&$-RYaho5!2S=Xczl zIp}bDI-I`w|K|Uj|DVVI`OHDx>1n%p^Z(8NH~&A6|I68m+sxeb=Kq`jZ~lL-|C_~% z+t2Fg^XJ0zyO;02`FZp6^Z4^~(Lz}VZQ6yKPCuXjyXPORAKz5_eDs^D$EV8wyK4Fm*4)_+b@6Ee?R~B^!f1o{bBljJKuc!+h3rQ zf118us2(rYKQEe({J-&ITmP#baooxupU)@bQ27k?p-lR|M zXirZs`M;OGtv$U|Js#!b;YS~Z^Dh5A+&v0^-TtWZ*>&@0*X{F3x7*X@-OHaB?I%wt z>7ZS{oY`pp+I%kmm)H15xXAI)H?6Ty{>vZw`qT;w$+2(~oh--epGu#nK1EMn|I}ko zU4E+kJXSegf9%7{--jQAzYjn5_WA3>FMRmJZ+{{GEMLpn3vd6YFT9=p(%C;vCo3#; z^~Hr_uI7{Z|El93{=1lkKIney95hxrXw?6aujj9!@;44IkDKx3K|kqgGc(Nm|C;@5 zYJZ7oP8S|Z-wSQcjCA_Q=}Z1Noo`*b^wRuyN&XY}OfOBB+DralxMsQpEYv-^pV{Z= z;iL3T=MNw4^B;WluL)DCH*q=nM=>%>R% z$;?HGpPqW^G5<+_Gry!i{hDvh{Ic-P+cWDhH_co_%rpNyPhT^;2m|5Ynz~8sLw_#- z%e-*5Fb#dZc=o~t-1EWmcV-v+pLI}Q{4IBxhqg%p5i<=H4K(YZ&A8ca^gG{Kcqsko z_sdD;m}AjGGtX>ZdU^R-zF$gQ_0pn*UYh@2*8dIh)S`J_ni(XkpiAl2%uJ6iTIbTG zNAmAWkAe=eN@!-A#56Pa%%6Q?qlXu^Sq|nQx~vT6WFFdehboQhpef&L@^5pxX_w13 z#o~6E|L8lP@_EWE_o2Xr>n>;ZnUBLxe|9_7K{L}Z3#Hr0KppYXM;EU7D*FH4g@3;H zQ)tC?yZo<8=u@JCvKpfQtb{&AzY8N>uKX?hQafgTnRU)%@V%&@7e2i3&GR3A{)Nm+ z>HqCj2D-qCdlA_w{VXhVtjgzw7hkxS_HjyR{JeC~s7$ozpsa`VdtBIRvmMgcX5puq zjTTn&+%wYI%fl&t=C9X?WnRiZ3lHVfmtI~Jk^DchIbD=cRyr?bMKtr#OIa07FFpFm zrAID3`qKRO$ozTqrAtQhSRIsEi2vqm;+iAjp*^agz12a)Nmcq+g3mWk6E7vUI8B-; z$Kno&nFduu$)HPS-jZ(9@cj)GICJ26(lsAlzIR+{ua zxtGu9B&>GiFX^DilGdT$tdbUc?XhgTCF5=Rek}1$GTvssnLVNOKYK$jd~Ph1c!tck ze8#5TqI{0e&>6ajjrc!*6*`FApcgCu#&~00G&9Vic(N+u@9l6TljlLajyUO43)ggsZ}tnbEdL8n%~!8~DqSs%x_gSwcirL%`Ty6MfnFzr z?y;novhDVEGT-=|l+cHhC$#X<3m^WR80bawch&klc=bZkOBcF8z&{_X=%8^mk|3O; zhTL*7vg@NiW9FEoi8kBibXG?BUeY;(sGlM0Aa#G}dows4M3&slHjivxdSvs+;sDKO zvrbAZlsG0a(P{RHmcN;6vie!hF46g;t2$`0;Zy@9tpt7$v(M4qa?N79$;teG3L1!c zq2a4Wd>o^a<~!MnOE#UVn9N7d;q-#jdwba?9Z!|tiW zu6zA4$3E%nvCK5=5IsdYDE+;0;LpSJ!=kr;%;Z|8_c5GhoUzu&x52DknXIIZ& zVAJg?xk6X(t%8bRoYO)5)~TTv(fP5b!!|oY^Us!khaoGU?S>d7U5}gBvgI~p-cd6S zj+g1X)Il$8vMrZC`7g24qK#7YAS2KOd>%=Rb7?l>UYfn3m+Cs`(PYH!RSP{T zZV>)wZIs!ivzn-5Ekqh9tCwtsZ5lGq7CWrXlMpt{A;dK_9<(uT&W4pzN;z|4X3xx* z%i}rmocnI}g1!rM&=-F+=^XKcvI)1SqU7*&$z&rAI(&+(xTH50~k#(m}})ay*ocxTpR-iY7e9|F3_T*(doy zAExu{|0G59LOx%<-oCDcUVQt^F?jZ3@%Mt5Y-j0WVV$$9_i}{zi+O1*w9s<>!J7K% zRq>2Q2a)a>hcW+V6_l8W4Y_g1SBZ0mta^rg;X-ip^}tLd&QJb%WWJrWk0_tSPDuxy zF3wLj-cGYMce=#lUh;=|)fLUqs=FR{3+iVpmxu{hR2$r;*71R-%# zm#w%14+QO&)2x5cip!z6`C0afo+8)iDYoLejq={Zi0XdFl z>kv?~|di)lCiy#5ri*mCRjWUFBuj>dzCb6)4b_A(yyVbVOT zg67ZV6gLptEi0j!k?O&0inm!VDk9htQ8>Grm?mkTv#S?{<33o92EB-EQ;w)wGwwyF zgFeVkQ8M60;+}L)evSkaGB<6>@5!oYgjigT$K}BG%bShrpqJUA%RH1-PF6jqNewM# zTsqCB+oF2fMI)uaTn@s$l-!_4vO6@rwBiTJ7!dJJVy6Sd5cU$4yKt2P`au$yZp1vJ z$lGb6erAE?>zr3N3|Yy{yfiGFcDh7ZPB*8@Z_7V;N{ezk|0svE54$g>2*M$$BN_+# zC`S>xkLJL3HrFVUutXP#eHO*^sqT>UQyNYE-cK1Flr+$i`BR@Fts{CUE1lIx=$ z(AkTtfdt1#Mg@5_6jAetG8(}Tl4wF!LPL%tjB-8>TVSE=2@R}yvi8X_g_l(ay$m{t zxF#u}~IUX%>1d15s;9MS2?L_UIa!77wqf=2!8wiw(p|@OIzMHks zcdbwBf!PUpPJ)}3@KFl9eN`F&qTjFj)J3y;KE<;R5^u@Wgfs$_r}RAa6#uFUVpr%X ziC;g)L4?<3PQqgljgwfM3#iWFL>mZD1Zwoy%`$p@Q zoGKyGKqIT3{7a{zd2&Qy6joZ)PYxxZ5~2Xy%c6od#6$V}rI#s;kbR#=HZmW9FE1qr z=p}K6TAG~j=u7Tzg@Za74cco+4tVF$y?R3xH%N`R%mdk!`_WCNco+cX;2Swajj&77 zK^xLI%zZR8l-1J4-qKLqd>lIEnD0_f`eNXr{3kzaM{<3>DQh2^p>V;h9%7=!cB4_% zG!@}fG!-Gui+k!R4Z%J36oe8eg7B2Fi{5Uy zMu%2kyn0qliMxj%^g$br+g8*NGESegP@kE}I6^Wffujhdd(vt0euQa~MjFKTNm^(i zRWxLtdF^H99|!ii= z`C|2lzPMCE#6BOrfPp^sO{jUk>EdZ|%rZ}<_%%#SNDAnwtb9lZJw~Cpa}3EnW-Yj< zLHnZEnw^|vzoxf+VV{t-uX{zgdK08A5k!HPC z|H|XAI8TRVM#7=vpL~b^4wyfE?elFcB#)-1lk{Lu)$J+8Ud|{90Z!*!!ailGtU83qHA_j1ju-cBXFl&yCHQ% zJ5-yDU3uJQgelvI@33e12 zEsuZ-<--V2HsF}kXhik&?&b5l=a+%wI7uI>|8jb=T%2S2^K;IT&(5W^oSaK3%0JIv=km?hDLEIGpKw!rllZ2& zd)Ysl~26aMn^^re>T&Qu(`lZm)B%Ly4E+{2Vc&kIlVvrk_+4{hpil z112sLnlI!3`5K{|OW$0UP6F6-O%58)_`7GEzCvv|`U|%L+F5lH8`Fj}$;(2j* z|7C9&^ycyA@$>FD(E6Y*jjZ-@`HTI^pZogx^;bXrXISdLs(=6dGuerqx*`H{(oNl)ldH!mg>9i-ktk~Q+_U`7f(L-LOw4fTu^xN^z(1|=Lg&8 zh2VQtm8rkkx7iQcCu=VD+lxNwU(Wh%zkDvv@~_SZ&i)w|y87teh>;YZ2MRC9^Eni= zmbU-7;g@M6-V4Uhz2Tp8j?cHR`+HW^=dUyl#D36ub5F)xm>T5N=P5wnptyMB>EA%g zJ{B3@czqXOW2LeS5hE$`#pi^=i%S1oi;1hIZSBFm2*Vk3cw$RgF3S4fK=&rNK1Txj ze5q#zHUrASN#Y0XhGm@)=cS{UFFNVXY42|R9KY?^y-O~y%~gLvdA+|^mg3LLyB-#o zq`x>ZcGTy9!i!3eEYbY23U6QD?``>O=%`e%LM^>RIi%_p-Z#>{7pJ|ro8Cb24#K`x zuq|v!1b)!wbcrOyemtJ<=l^uEBwa4kgK_4*bZ^ww^!oVc_8m?2sh)eK$LnLx9TE7P zAOlYY(p`97sn3+yOQ}7V!0BBHAjAcz2;U}&l=C^DaHVv57#;kp1!FFY!v!(6ReX|R z_JwnrB^RJ0a%w6M+Mche8UyrN_bLQqHLbu=>CiOMo`0F?GA5qsN+U!GaI6 z%m97In!4|`YZIwt!b$!Bqw<38Jst%DA;1Fc3`>oGdW42=GbsTnU?G@;|FCO zwA@`pO0R@?43N)h8X?f0s5Aw}vrJ$6ZdUFuOr5h+X-NVsr%l!r4W?g`UOOg#%oj8A zgOMdfu6a3@-z@S-z%+`^<-FkvdX|rj0k++nbe&KW={jp=fH+~KZwM)*>QebV6&l$G zNS}s;YRbQ4QIzlp8yWjvP!5VTR~)%sgrACHR6sFH)m-6nJN12T4HE~oiqJ+hkPEiI z0t=^S69w+jjh=dj%gv`Lec95HVBzYhQ=>cs>@g1uFx;WqL5hdiyV_C?`X(xbjwKCc zs$)ph529FH;@t)WiCTVHzBQ>;>HaY@a^DbdtxC^+I=iZ%Ch0CIGkq zDJI`x;U?^{)SSMUNAu&RS6!lJS|mZ)0|vMOsl@rjvL81D;`}0;y?H>!VM@ z_XvsxQPM0yG1Ewpq5^U+sPDOJasvd#4JS6mB&_s}!R$zw8&ye=T<;xX`iQ^E9_iNc zNbO-TGUW)WbLSnia$;~Lh1bWxMYH;MhEX!5OvG_qJ{Y13q#kstThjx&8VlxKdDGF>~S1j`Ml17eb+ z^V3BrWQ~*(Ho2==od_{BQa}@%%)m{fFgK~PjFpCHb$Ki;icOLe>3{y-=B5!0`DRKM zlLj6|bTs*-A!SU;EjNyu(C3PJsjuf^7nCfzI_6KtP|x5~6DUirBR4Nqp9;)-;7?CekS&1*h+9&#~k@+DfWd#sf z1F=^@*+tv&bE#49MukzMnW$*gB?f~;a?1^T8d)7N+o{Jdu|rXr43GFhyJfv8OQa@q zVJ5{$G|-S_ffJ=GXlel;m-n(@=3zG?b89qD{-d z65SA&a=sogJ7bjV=%XnYDi)cUxs}_K*e%uy741EeFv1FZ=oRi65w}q_(w5yga=ciR z9FI!XEbT=furtjDVq|T_saa>4x+#~se|_x5=}*;d#qtnMKB5E6m)eG0C#2{VOmvu! zN27%lTy12s*Vqs0k~K%BUL!U|FV+P40`kedm3cb*L1Y>*i}jq0$fscgOzBA&gR@7? zh5R6)KTsoN-btP5l*}i#QL;Ozr9&HfrZMKNWe{!oLI{_8GIT@Jpp;4Vj7o^jHj^^x zyFP1ccLVHMVx7!5LE#lj|PIhxy)kQnlTa%3x0!vBrj4{a)H!2xM@opk}DI$>Ls3Jjh z47x@t#wAt=cY9H0k^Nwf6=ozULr2k%z0@qKC#uqnq9S{#m4A=HPn19=t0o8xs^4_1 zE)kbGDocYOgt53B@m@q0%X9T?M96VHJ-8a2Kl>RJBO*1y?2vx86lxn|gzP<;7Ex~G zkQO(9x}9WgWJ4t1F;*P4Bx_WVvbhb^Fac9!yu#44(mR&AwH(Q`W!~xCE&hq31r*p` zx=mnNxV_m*pwnpkXsU{eKlL#ZdJ+0<?gbY;wNNiKPATpD$bw8RmVsp_qf z(h&2H+(aA?N|A)bij4?wb#AszA5m~8B|^*%u7*%)ufJd!u_z_8UEC<~RQd*UE#5!_ z)+_nsQVGd%Bm5a=wwj|lX}z=|ve6kOLr*jn6=c$1xsj!D1CuPrI$*Tm zk^P_@>!8?+Vy8$NM!6b_j*&MKc|4-gq^y%t+*dsiVlMEPw9%Zs$5N;o9k}V!G^D2C zs9nsw#qyZ$5R`yzaMDs!GOaZ1LaBnnMpKJ*AR`;B%To2{m(m%_Y5(+j? z`Ls9BMLv%X3hCBd8G+N#t*s;`NT7c*kTSB6^n$x+ghg+$#{qKhaOMIt1|&PfJ^rx*!v8sY1E z@ z@q=b-Zj*Ho3GId=Q9?!eYRkl+{Bs=TX`k3emhVOJbcG|fWE)U73W0#?l)D=KiZUTV zK+6ua5}$xa<$<7!KuZ}!hD9m5p~?haVNQ^i2o&3tk?M_$0N9e)VDj1u`t%Igk?M;P z5Jd66MA=(yLRKLnRzyL>&$Hb` zC15mIIk1;L9ght`gI{8#qxdzdh6PSNWu%~)V=A>`3xqm|yay;i3AVnbSTMksMMAh^W zJsZ_y(v+Zh&HOlmj&&J76B^=PRvbyAN6~6j5QB?;km#V8g=Vi(0S96EX}L!lo@!wn)Kat|gmBs?KCWS%jh)0=lsk-6QkV zqv{z3mW9Q!<`v-%vAQU?0YVa~tx~n#K$u3mK>Em1 zTVzSyi$DUqiHmoJQXclwd2wk6des~~0vgrWOdRh*C}t6ej!vtc$#NTd-uYLe%0`t` zJxFWC69^>HO(|$1dJ5buoHh)aK@|wkD-$1XgfVnjtVy~S8z|SR_@r&Uo}=^yB^g7X-sFx?;=xDn~DMqJ(_3|b10B8=D?*he2p96D=B2m!|HL-Tn zc$%6RBO4mVybyZex{iS&RT^ugbu=n-G|7=Vdx|BXrf0t@$|x1zlQUHu%FOB{E;>l& z#bGSY8s=a-5}LtEmT5yE@`+zba%9{|&`$Ic;^kN;&~i(SZQ5I7*eqLQr74CjQcw@l zk3=Cax*-LkB8GJYs6T$B3x-hTL`_5I8ePQkcA?IwV-uhsS#KCZB52wEQw@{~5l2Mv zpza)YAV$YTkBNNb^+33?HL7>1x=Fi;bt5Q6We)04kkRV3@fsl^@E-3+os}kmN$q%5 zkmW3Fr-fq#g`M4TtM!1ah(X65yIoob{oJ#22l(I?;(l=(&_SSlm`=pcK^+1CdL#CP z=fz1S)zWG!mDV zfJ?-}fhKN^++fRcJ*p)W>lB#?ZilY28L_ZlS_N|l&^i&#YSk7`J~l`i$-Y1tgifR4 z92i{!Uowh=GP;MZ;AX>64QX~+*Q4aA+L_uWNo;Qlg(R-BU2;M5f;NhChH z3*MQoDoPN!{o?lN-KA**boyF;mYcioDBoOucJN6X#CLRYkWbp*JZJ1=Gx?nqxRllH zDK8b3Q}4T6Ku0Ol2KGnkq9d?!`cwgyEO1cbZ`JVU>fv)AVA7?2&e zZhowl=er4Vf-ZxWt~>gYW@U&Nmj}*^*rT#`3VL)4`|Q(;2%=nBk6GNBX0SQTaD;S<>wTP@{aMnWH@3BWZ=1ogLGTYLN%uQ zM>|Q9D@|Du30jrb-!akdsCkt1h+3}1aZo%Q3Ao(%OMy&1dxdZQoXniFN$+mR)?7zI zrf)q}{U!u;Q`YsA?t0~ zFK*F6J2Fpa4uY@>kJiZ_8&VQ@(=>3Ii`vqU`u#XZPRiqBtCe7NTn>#i(SDIy%~q@3 zn!H*<)QsqO$e)>r$9F9#JO_?|*+MKxVqE2=m{bOn^%@l5XfUwlwn7prZfmkZ9ll4% zPQt*0B8}_V0$5wL$zA7e2`nroVqLueXu3|OR5Aj!Xoi`O*lSawp|qH{4DCJnP|xVx zCg@r~y4uktL5u&}gSX`%ffyJ3KYhI8DTrpqf(ZXIQov9RxQD?qN@qJVn@%}cWJ|c*H>~S`mr)EQG z(R6_|+hg)kw^Fb)Fx^v7q%xTV*E0;j1C-M;vVxn3o438in3PP-&pY1s+;bTrd4g^4 znipk;FZz=J-_|DI3eizWsi z;Tz$@EiM5Rnjqj|7A5_^hxg(!vPEP3jq{~*^pzm(j$CFgZo!yd= z0_+gwhc525LAmid0L|JT{2n5vUS}O?U+}&M5+&P49R^uW{_0SX+rfPzM|0L)z+W%nLDP1jg<@Wf zmx3`u8~SLF*b8QX*zWLD_J=+ur%Uu;e!y?u+Mf8UVkm-KLJo_CB|!gGZ+3}#oy6?cG(3gEl7i5lnmdi?|ttp zuU=8<7b$__u74uFcl&BYOe_ztpFDXy#^c+cIY}w6--(xd0pPn&Zp;r~{KovS2U=Wu z_?dY8;@Ceqvk|D6Nc|(rCsRGo9lA@K;rS~%Qidb((7QNiu~&kVY>+h*!*MZWbPN=r z14lUbk!QAW$vtjIs3bz*qhb`oVX$>Rgv?g#g(z?=Qm1zyf^Zfilbj$CCtxUgpCOjH z_TcFQ_czy0o_i==&KieSck@08-J*MDHI#G^<1(uU65nS0K^GIwzfY@pLjl&StcU$k zGP3S8vA_Scj~{zgLijw7LBjHH`R(nG{+aK1%g3+%hIhW@<5ncb_$%VW^WS^o-(GfI z01_5aLp!AD(sz}y*Ww}WVi%uO?X6<9jgQ8o{@a~Dr3bIyxjo#tu4rLp05&3+ZYIP<6bu-pB%oSyK|14sr)%qY zkQ76ikFDB?g7%(OJ2c9h2)!a!p%&$$D^6KP%9KeVU@$ec7STG?oCxN?@|n$;6XKxH z43BP}``81!-8pg4oo3hS8@SG!U4N36&z~Gr2t~%^@zd9Owjfz#2$%IwKb^=zS{I3e<@yl{_4p?s+~Xf&PiC*#rl_ks8m@umJw>~(RL+2k#^|9X36d3NXO z^&V!J=!_3lD?Rr~&P}tJVV++Esct5C*s0Dc8`U;h-vAx-0oC8f9wx1jx{A=RY%BDv zkwHlUQwgKU?NK!|&a>f8D<-^g8+aN>;-G8SuH7E~55v)Jw|n%#YpjFzqJxH0j>Yx; z$qpEi=K?(a`upA)g>BKyTps>kp6>gIbBc8DmHGVZg|1}XNeTtte;S{={oHd;UjK{` z$*979ZpvGJb^EKofb0(j!t>l=rV3Z5Gyv*Ds$x6CHi2ipkO+)&fO|3vs|vr^Dg5 zuKO_x1vR;yOQ_Qu#EmifM&^!#E;8OruVg2xJ~F7R`BY(>1+A(;VLr#m)8%#Mk5VVE zAj+z5aehAY;N9~d`^LZX7r*Dd``zgiNeAUf!Ul9uj>XL^cMyLevhDx$+aGz?N8V|L zy!?OZSA6%=B5CYyk4Xo`KhAPqY|q7tyYp@F~S2YmN6n`bXQGRBiaQgR}*u%mY*{J49zfWe|qw$n>%bK4&^FVtv z9i~U#{}VUA`ql^TKDT}F`jr#L=k@2?!?Zih?DZ{Qee3B~&Pi55ygYv%_JLCrNPiKVagR^n-+K zGsVlw9h^)V1-<0uu!aN8fl?xKg*Z&CHF~K4971go3koc)?-dZGG*PSRYVm{a+<4%@ zANxCB*zNxEd%N@O2hBE{=%5Z`as5dLvCqV{$4|e$fBEmf>wWKx!s05bX7%*wUw_)p z-Q}ro+339)zh32}2!$tJiofiYtEZ>OA3J&O)j+C)uEi(&Aw77ILJB%VJYI@dXG88hel~u#|G&+T zKGT0j5KAob>F#K@;kx~M9{#qUywYclDbtN};Oc2`9~e)}EciL|Ba0E&e@XnQnT<}w$`?0Ib{Xj7 z07tb4MEO!l{u*! z_h&0EjR*ZG>7Zq=o*awYE`AV1vXT~geK*~D$KU^Lix%SMiFNv=ukSwi$DeNg=+`~{ z^wSNn_VE&5NPqEz{nsCZ&`JMKoW_%rtEb&=bM@qv>(5-{eoZoH#>zY2@|M5)+kf=m z`i_r3^v;Kv!eGhKd$!*`GtsX9!^u+mBmHlQx&%eEa?|r060!zTvw87@=6v1EElW`0 z-HCU&XMQLl}jBcgHqA6HdYFK*?+K@VO3 z=`Vlackkcx-v8+@|LpFis}J6v{h-;3+g#RpaXA(@>maU>CbG^9^ys(zgLl2-_bplo z7XPKO#xb&q`H8uaQCLU@D>_x8oFhdx-w4L*K4GtTkpZ1wL>|JupP z^^x)D{G`A7=^qa7 zdCz+ue$RVO-}~Mx|Jv_(t1(8FB(o9tkK=n{nEy`W&-VXXe1_U}^1$@+PyEEfK;Q6F zKluLV@9(+AiM_7!!>{<>AAJ7NQ0FfT9g>>{2AVF#3=ZbYEd&~Zk(%5*J3qYb+B zigz3BNukLaQ5+%Cp&}px0Z-b`wev%@iFlg_mcg)hf-0;YFriXq@q?~C{_p&%^Q*6I zUi*`O`A^QK+-`sOGbt8#*zkBznisdQ&!V&rjK>Vq)2~1B!7qE)hd%TV-tlLD=|`?9 z6(&Ai)YG@T>qEckCmwm^{Xh8EuWc!qlezfi_;UYp|JD76;xucaQLNuS-hX<2a`M3G zKDpzU9(d&yVj(b)ANu~^{%3ysU-{MF@o!&S^uqHe59y;h<-`5A&t}{bPus;m9kUM7 zF$Rvcq>VY7UVR{vdy7&!%<5&K@r651VmGS;lGTeJbhp2nA`Q!NGIQ89u6kjh=N~-z zfiL`fA-wm!@BP`I{CmxBe5-l0T~Zg%&pPNIF3dCk{p8HXZzW;gKlkLzFW>x@TVMSL zf9fl~;!E0-&r(-qfNwuJd>}piim(5QFF8FqiMjwQ#^+{a-i%)z|6u(3*^oP7X9gV3 z_~SqRkLKe?e&o|{eQWd9PrtRv(ux&>MxkINRHU;;^bDSOtjD-TILIgKgvA?CWgz!W zFb`hgBkywn9i~Pc6)2V2)oW2VsXzye^$Dp)wu#i~6aVR$b&S+Ooa4Q|*$=w^n}7OO z{niKK@I7Dnh5zs`zGuHXdf+ppgJe#^tb-1Tu;%{ngl(4+pZ>b<{_F4iZ6BIB=tJ-O z$VZ;O#(YaY(Dd@Go<8)U-*oGfxBg~|HK>&Nqy1U@vi={;4D_K{Xnwtjy*_@tfBxi^ zyPKJp7bUcx_0gh*P*}x%FFUVVR zs(C9ybM|Od2sUXUnOP`a>wKnkw;ty|sGX8MH+;oUeZ$S^`9@|;?J{*q{E4B>jiRNj#ZyT;e|G>8$z0_a7mLdrq%}K~3tNUFtQSx}uF-wN0)A2Wd(}zCv zjt`~NYr6Pv?3?$!>+iqgL(B0?=fC$|+p2{-AMMOKzchZR|4{#B@m+arhUDJ;_kZRS z!?$(&|I>f>`~SqgyVO7T`2C*|1hGJQ=zsVt-|<(M=tVQ!e*BdiC!bMse$hd*7Fv8D z)In%{i2NZFPBuqQj}NnpGHamzy|ekYD4XY#vy%i>Gi#so*=Blh=Bz7`9aDU_alhX%&;^wWJADA9I zX@1|5XDe!GdHC}3@a5^r^w6xpyxvd!Ps~j8f%qhEhio^!`SCyXkGr4!$G_k=e&4VC zwSVe2|D#Vg=!mH7mhi4pqxE9|PrVF*p-^HyVOA*P#%^i>8QmcBtFB<4;;*a%zd%m+cJ7Ui-a}ch^xAiw>u1pgb`cA~`EM6`>JS)ws=jS)>e)*z_ zPMY75xBC`_(Z@?ONJstotjC^DFNoOn4GiaAzx|2JA8a4_HE)0LW6l5Z_8or5PUMHL zr-!#s=7%RN8wnq``^)hI@z=!Lb8)vtg-CDbRzu*^q-_QKaul>!xIq4u?pefNU z8GUChFscKhVb&2-h;jx_(9hmf9_lV{3jm#vGXtg^8e&l{U=u+r|}@17k8TH#m)3M zTMI`KjryhRKRP{f>qCEbiDvtqWcqi$@3;NXtc5=EzW2TFBVTt--kzKu|MB>d_`X>O zz2o>@ktH<;?C-zv+NIt9{=L8azxjo~fB)$4hGLP7ce=vj|hX`Z?#~<-a%nWLyH<%kb(oHsWU; zG_%k7?0D?bxa))Q!TuT}`pW6)rPE8h{meu+Zk#`VrMYwc!3VRs#HGJ7`#-0NyKgMx zK?%%5WFKHwB_F$T`@!3{Po8Oh-<{pFeq+2eT}n{voTP@|XTlo|Vv>sKvIw z_P%%h(EFZ#=W<-T)`NiSpH6OkGkZes;@5SMJX_vKay~q~|3yFfJ-_f5&m8pHZ+%tv z)UbO@#{BZHZ@zQoe%`Qp`F!o{`~1f^Drr*r9?w6t$H5qA?I=At`SLWln{#}oM?7^c4Pw;Kzksn5S zC;~c{eS7B5li4bGe6}$kR8NK)ef{~<-J_?QAs%17dpG+*#4kGUKpX=>b>H{aEkchV z%1&(2NNJ&Z9T(!Ab=iSdV+aFW;7{ep9Ig}Mh^!(6Wc6aiTY{2$g%jykw~WJ3BW$;! z)@Cp6nM@*AjO6j4`)_~a^F)ivKJ*T<;$RAFs_UKa`=uXwIxp)2NyCo8wtsqj7rpI7gwWz`+}J$Y{i0v~-~7s7 z{Cjur8P1=GTj-TkJj`%tZp<8HG=wxkUC?`X8I=mYt*-lB;pC^M+wKT{O|#KJm7blLqz*T57zS z*l?VaHOUZM7?F{A`HC7b&8$~93zu-abb7(u!sX%Z6Op$-U-RFq+uJjbi`$s{Y388W ztQcZ{{J`_)GY9n=wjv>ICUDDrFn(bk-e@q!4g}1pvn3mYPDQ`jN)}e+h&B;L$P&y9 z_~_t~xUk~u@GUcauU8s@pq6eIBtbik>cJ>dujYUjl}1z_yzz~{&kw(~tb%-~7;TdmqdkkajIv=p!F_8ayNfApL!P z-_WZPdbW*c0=YXpy8lJL`xpMo|NQsvE^THG;;Fl$3Yv_pg*Th$?_A+HA8oBOvrzn7 z{ok4y=nMM4n>mywHqkagO@5^gE#6z=aR6yRmcQ~wPn`*OErGpQT&D_hOs3oI{xi#f zXnarn_v7CdXJOWe-+X@cILWlv7AA@(cTQL}684)p_w#+$8+iunVVV1yXR}{F=`UZW zrJeE4<0rR=2VYepzWplqWQ?yqe&@jAKDltawW^B1#8C@oO-)60HP)7<&y8*h8t*L=-S-}v$et{%U5`x?#7c7718Zph<7 zpo3-(`Wt`!BOiI+*IlD)(Lb57x7VJ2nlfluNyJ-xn%;c_OGRSVLAzh{7k}aZ=Rg0w z`}Yhto^Y}-=66!(hBn8uCv=Tg%W=mpTIdVXsC*HyuPzQ6 zOjVnIXC2gC`nE*}UA>$ApeS;jB{=zOMq3l&)DP(K1>H<~J?u>#<@IqY^CbzZmr>p& zq#BR4jCfUA;3y+Utm9x+WXo13YQS^}FH6d$Pn0{|Sp1-qZ@zu< z+>P_|2k)HRc>eD7YpjEYcF;Ewr&!#QVb`-5Voh}IT6S|-mVpXND7yAE@I6dpqF1si z_4O1(2cc!IQ>FfB@k_lM&-)9eR; zt`WgR59~gD+;Dz1YDC?mK|R%ks-F~U@m)Y`xtL!sr>tp?#XQ9M;CAYp#@Pq}ZYx2m zTV+QMov5G@S1kKM58b)H`8}UFzj5WA%|rj?m3OYp&5n6Q_0FEPs?L7Z?PBEJO< zTEBSa>AAi&OVq*GKTW_re>eRR;+yl~(cK^W3%~dm|E1r*e|XVBJrE%?=Ka?`Gh0o^ zpSbeM6W56Bz(i~)R?tX<6t;cNaX9fsdwKV$dXCHe)4uIb`_s5dI*7GjD)d_X$MJ{b z5^ea4^o{4H9k%+J%cCQPAVYw^BiNy~QGsR$wm5K&~z@dilpQw#d7z6DJ z9evWJP#9z5X_r(}ZxmQ=l+NQO9n352u3f+JwvSztRo=^p>dvlFU1D%2G9F}u>1qJ+ z%g-W@+n{+$4|&O{6p_y6?!NncmxyT=(N7)^n?LrK{?dQ?pZ(0}4_G4}-@Gp#iD zf9&>?4_rUFa!t%JSph3sz@XqzLBj7~5&7lhY1Ww6X5N2j{!0tKM@-q9Xam{hSq$=S zGYb>levoki^VA^r!&CPT1WH=WaOD}G=-I}W;8J|9G2*ai29f|MYxxwmxqJ74yAO0b z8DshJ|Ndu$gTC?~eYRmdaNogR5{Q^lXk9uP=3e(!nV5(jTNP1dwvsch^};v&;N%8( zY0P*Ksba^)UdNhX27-(x0e`D5G8BMic?HJh8Q&@DJ_%1e`QYQaPeS&ChEv|F=W<%3 znpo}-^}Uv|sys@#gt`g=4l;xXADX|R+K&6xC7X|{Nd8@%GcZ+l)v{n&Avrkya!;T3N z=F@3NTk&C{t|IY|ZLC%Vf-Zzb#RJ+!@y5eBFopvoh5AY#)Kxw%Dehj6Ax_nF5jREX zvAl?_SyJ*o3C*>S-T4f1P}V^-H~aKlb{e61acq*JP|7BHex>IKi^-`!Msj+@%+*=8 z8LsDd9cy0I!K&!x=pkCdzbF|bvI#F1#r2d-Q@ndjPp_K-XjpP-Vy=4&Rg&A;;|_$J zLAOei{19=~5_@P#)K*I<3d3I!o{=rr2=r33P9D6w-=QfWrDL}sg@~+&F%m|o_O`^Z zbQ-ZrOz8)mJJRdyvfi|whGbL=ff@w{Qv``T;i(b50-}0KCW|ZVdT!@dNGX(?Lyo3M zK?*}EqhSg0dpdUMBL~lmJC{g8nitp0J_#xsj}4sqs?uJhMTAgMA}NVWiPM-vH+!Tu zU?3Sv5(OfW5g}8Z;S@oFgTyiHCQ2*znuP6M6D`!`nmmSOLPwEDs@$6)wC8)2tYEf_ z9$~#Hs&gykla3doT50?WV({o-8-^F9&4ls2d1Z0Wn|qNO6*11SUt%O4rU0BPhYn1Xj#gVE8&x9| zX(&A9W*1 zQ3xuBAx}g+vaW$uD^8${;?aOWk_ZrNCf0Mc+JGJ{;RN}M`LW3_utvV6(o8s`A9=Gn zP-e>IBNj%S!m=97`d$%6Z-P{kMP&;h@tewd|2Q7JK~bCgh=TweUuCZdw35W+KtxIr zGW^3YgWw<?aJSW&RdS6eM+ICRdV)DHJ+wxq zif^@E<18*gxx@b? zQ5R?yjcUA#jOw+eq60JnB=TEO27*>d(}*&;3!%Odq_FA$Gq%yQIwMRNfr|#WDmcU4 zf=T(}If-UGy%&eXL?ZdV!ec}&q(VQD7{RPiX7n3Zg_HACHSv@|<1^x6-nw)U1TR&K zM^NTs;OG>#Xnb-75IlD0hDL#0Tp@YfYv)>bzXx3@&YW26e3dvw)~M!LJtrr3(ypd= z@=3Z_uKD*ZX}{Bak?*Hxchb$}`z$@`<`XY*CglS+R^3O}I-Tm}9yFj5X@k(5;F zQrU?-rn>If0#ii^D#}iUyR6d4XQXbrMR&FG+^iFm5>T^#Oh)VsgDFNMbOtovWhmRHxDfn76QF~%3*I7NJD`+&pn(=< zOD2lf6GKlYhKLM7YE=LjfFRVP2wzTeDqSD6Pcuy8Av;RD{jv=W{q6S$_Mq~^^o%?z zN~h`NlQMPbyxWNvhDqo1Lzk0x^bkwQ3ALOI3l#~_Ey<4dnjqD+BY64ms5|WUau0tF z);V1A9%*4*4&B}F4pLKR;L@r(%6jOa3@t37?;zNKC*95iD9Df|&)KCQg7<*!>RfL? zPR0AtzH(CvJ+fWPl^-GA0sZ?uqQGM4VA8k_(zf%nt^_L48&^&Ztl&Hoz}y|ud-iee zEW~3C!P=G`B6*=61$^n)gET4oL3uoA)6N{!k^Vf{vGpkS5_nT(SjnHkg*DAEDVSmy zJi^-0!oUKt2r%mU5=2vCkFfOi3yapmv`p||t<~d$iZNo{K8liRJhek3&V-W61rbbXj*E-@rV(%*@TI~1B zSO(9FTUL3WH+|micNY8%V_B zux)z)px0;o&AEZK3<+qR5Z{mN2T^EY+d~`D>p=)n`tA^Rg)qQJecSVE1^P-Co8I3- zExm!52L}-GgcE+BOYTv8Aq=!n>);wCJf}{eqmcwCBL#vxx;`ka za_E<6_93QMaOKese$5YcBT+xU=Ngwp!9w z5xLcJ`OQ3$Uj@}uR4+1FFgfv?vm|a9Y% zdtoCfG^3M1 zUMfg?I&$AK-En$s1-zH4&+iX{^+D&09~ATC>`nvky$pv$a zpsPfu_gm>+8KqLer>Lc5+6-<7G*ZP4C7@Sti`&V}6;y$szZ*Vy5S@yyd6IF$`pe59&BfE!U}^L#>7XWu2KkFm%Rl{rZ`k%6q*&HE(KytsDZAl@ip&-Ni2im)0;eF&Yzq~qU<6+3fhI<8#5 zekJ|w4!insfS-dqJ?L{x>&iN;oR{?+mZ6wKE#YB3Qx%%SJ#ruTQ>m$vw_Y4Rs-WVK zMwZGl4r|4)Bd1pVVdaVMqagYFpr7jy?26iU zoV${Cw{z`hEZD*o5r>2ZY}&49OlPtkDrKznz(qY$w2GnVOqIJbnaxv41<=*;54Vb^ zl(9SP4EbpCu7*Tc9Hvjdn>`TpOv9TU%^keF>mH@Q>GZnz{wKsa{PvSRZIp0_ULds9 zMKn5(jAzElY%}$bdfe@D_Jj6`g03$c+Uy>^y}Nv6cj!{X+-FB82Yctxsc`7-^^sqa z`)lbAT}Ej>#YgZ2N|oXc7uR3O4TMqFkYWTmX6y_0=;9xE)NOYxP`jmXrNfhgHY<4nIm~{}v;^O(EyVFM>ee~gFM%44KaD;n% zM^-oFcX>zNC?RdR7-KUWANT3gu!)vl?F-90Wd>~CpDn-nw~v{F4!iIA@jrR>d;g=~ z^pj&*!k!6-8KIH%oiPX+1^umHu3AgzNZf(9_6go`@7&m>wm zqUzQz!(X$5Rm3TDP`14ZsI~m9HnL$YQ(d>yYzGevS_sY(lk?7{bTDCsjH+bC@z~Mq z<-E2da=-kZ-KF=;4D|56+uuErD1eR!?b|dSlvZFb8ztl|7n>Wq-HjXRt4Vq%F1xhp zI(rW4@!qBl%;i`(sQa!M{-3&1$l8T_8EZ-aE!zO3o1o;`KYm#zkNPqiMaz!&$XYjgoTMAkrSf1>g z!;YRLwr!F|YN%xif>cW?rK9Y-J;6cMHB?|$RRV3tO&~}z>u`n)Vn+|fh|2`PbltIa z16*Wno(n!~8J(y(vZ0KzTcR z)^vC+PxqSR!1?!*@IVQ3^K-&I6p+q3SLFeb1`V}py0DZEJE7^_LFnn;hx%rqkGv@a zW!YetDwZ5B8y zyO+QGwb_K5Iq2>kS>^PMtZvBGTwE5ZCM#~A{h%kFNH9L}@h6^mqRDE9^i1Lu{z<#C zHEDCUrl)(eh1h-MfBxBr|AT+{(f|5?`QLqMeDpn6)emamvnLwaF&)cipH#q}Wb{E( zWkqw??eon&r{0s!;9DfzcS^(b(~+f>O6j27Os5BiOKQ)BlNY8nW$xZnYAQ(XBa5sBCWO+5BY=mm_ ztv#1k{_L{#)k$1qx!pl2`<=jW(3-jgwCWIglJ4yll#H=1m%68@0X3ELXE!io;UG2A z&t9wCD|~_$ZZ6CG4k%MXO;*|;&|JD_EbhP(+}Us#xq#;;3|2(G4({{-Id(n*3sE@D zhtbP}iE?6j5E;xa5Gv6k4u`=@Dt|uPq#Z&U+HUHE<|Jfa$AXsKsFT*&O4Kgj;O*p=@u1)JRsY`W-}6=9^ioD2mc|2hfq? zO)a-n;fRxBY?Z_36^fHs9Ef~0(o{p?gAR2CP`Flmu&H*YXb8F*3$Pl8V`kQo3kRhd zckCQFi}J85^5nBkmv?E;lZ}^Xb_$mztugDMWop1-clQaNK@0n4XDhDHvAD=DZ)iv& z?kJ$W4Er=Wn%zWFIhldvs)_WLhQ$wRzVz$<#@~4BTYtklA9~_}@ZK+aJd0COBj^>7 z*RaoLS;w$V2VT&D9EO9)^wKB<1=6YSvFB{08aTXtP?dmw4}(fkC7A8Ek=hZ7Ebg0<3KLTtO7ji^7Fn7bS^ zLmiX@S=he#0y9xvp4Pv2ZDp?=R#UG&XPN*NA2fCpn$ z00b-02?H~WT^80TrUIu%JJSFkXY8c&I}f4LP({elFj}emHoVV4GSi-sSlps;ZVZ&{ z?q?!zzL(zJu+cTDaY?^eg2kK!SYZTx zKl6lB$cHS7Ra8hSI%6jR z9cxcX5&9HNbq#aj5H1LID4J6W9YTSeuCq$S7-biIOKE}wxNU5-()9vhrQM=~lKQ%Pjn^!u zRo)wp#SOC`)GgNA32zvO>n+m?Pu}ic-`~I-3kwD*`QitC=84B2|LhZw&wo$c{-Q7X z1CJZlNT-b_Q4n3CfvpdWTD%fQ+U<75y@O_C{)FB?$Sf%<)l^sk32X6UGLb!2K!bti z99uF14BO}I&Y6<}trFuxjIcx$TWbwW7)K_}Q{Nf^|?q z>Z+4f3mwFA2T1~C;GIL&?p8R1Ob6a!0d+9&upI0T?#4lGbylO$@7_hGlxH39>`FinaY6;P#*(r!it+>@FKN)q!r&RQg%CAisy8Z+JY(2;h+Stn9d>xZXgp0Y7SVf zx35Lyb!xmp5@gaH8hBP*+Xo8_8`)GYEmEaOLY@HnJjr`2Yr=^=j&VomEpPrIJ6!7OA)Z<46gW=32Q$8;dedk$dk+qYhn=SkP&~$7 zK4|?^l*noZ$3cXYjzb7L1kEeWg8})#^Xfn}nweW(&4`So?sW|?bOBss5GQlT4l1_+ zgmo)U>d;wwO3;T6>O?Dn>9T}PvvoTIre?9Gqp|>&4!mcsz|}bjT+q!hhfdPKBu21F zsnlYP>fWyKmOW2;p7$gBX6HExX^ra1Hmwhm1>(GvL0@kcBl|n@sSoi)3x$OhWLK`dK4{aD zAGFLcjUB||;Duq4L)n>q^mSXb)Zy67*UpjhS-tMNZqI-FG%6|A`DeF$FAwOpKF2@$ zG3jWfMtTT2T}ivjh4~Wz_*{y|(smueoeUBdRGDhno$JvIDiu^4YHmWdo*u}AwR+>te^w8E~V&_kNlGn&owb^m-` zqpGiw5z9`t$UlaS`H2yAr?d#SBb$_NM=r?7sbnuUICT6N^SVFw*)*L=Xl`=xt}uO# zEIu`VvQ;X!*fbcTE^r=Wtid0nfeCk`j1~a1W2mW7H?*+Gf)=}vE21}D;A+5i-ggq_I zC%WQ#yU`_X70UbmncT98Xf$xz3aG~nywG6SKy=&dGeCgbQxkxUWu?Tm(QFut8>s5u zu2F#5)?hC_y(v)l7}ZTsi~T|!U|Z8h-jrFle1#TN`YSTZYul2_=Bf6X><_Cul5TaM zVgP1a5Eo~GZIidWk@P4uJt7|@de=xom*-~hiOuqBAk`D%*Rt^&WLU-NTP|VG1by9) z=q8kYTj2nZs6D@AQa85TMjVln;i-!37eN6Er6S^>@FE%3EqbXp^@B_?MQJm(w2`K4 zGECJnzw6$)(x5HuY`HZxN0p9z-`9w87G&juN~sT87dcOF5Me&t)M$6y#4;k07orm3 z?iCIqXBqyWGDp<_s16hekN4=yx5`h50E~+f;N{Jum8@9uo3b&Bh{Gs5gJfHa-}pyY zd5!8_*{i2NF*|t{uX4fH#=J#e$AfR-f&Dn2@f$(vD`ASgD$~B5Zevip&80sxckRxo z?vdME6n6bQscc4yTVGbUTgBQvSSNNPO;?cFee{`=>T}sx(>Ji#ITZHWge^EJp@Y=o z|K6XI0tvj)soCk1U#nBWwnrUze7@#41_?!B^Y1)U>Fz3V;AW(5|59^);>xmn>B|1L zm2Ss3IPnXJ6bbXmvPKow2T?is`(w1}E#JHY*QtvrEq%ekHzglr&S{^~Oz_L4$TgOB z2TQ(#keUnt82{ffW!#~+f}IrgVm=Fv+<4~1)GoMEu$Ipq2Pu{S7{TWz&0DZwd}JXj zu*C_VDKP9?d2+Jyt(O(pG7DfbLl<`(x>hiHhn{^55_(MCfwQt?rOLOQ)F91u*p4!^ zsMIPqp7E$cqNZn*<{9Yp9a(Q_UfisM?)R0M^w8 z;c0gvz?E`72l&>3K>$97PPqplwTp{8?TyuD&;^~f-m*(Y!cK8rMQhjH8@-p-`{RwY z&-FQeHffbLzl8G6qJ#GBAn)?N{PRTzwO#mEtHyu+;QWhj@XzgNKQGWjml54k8MTc6 z0=vFe)v%W_rDfD~(Lub^NM32T=%A$mZKwYioV1v@_OvMIqU*L^Ozqh{fbt;S6V~=# zr&8&94fVXM@U>+Xb*NWvU5u$!gkMnl1^w8*!P)>_a%;M{8Sp;|p$h3%uyk+wtaeDX zQ!h+eD>^M6x&On>W@kl?GykCT;6l38_^dAbI7r3-1z#J5=CvUZy~6ate;eUZ4D z(x;+DF~3SAMz0vl9;g<}(^I%H>5sxHVAQiy>d6)9t;$MMR^c-(A}C5=(6W*8*89b` z&gZQ6j77>+0DN)3)YG@F!nVUkQ6_`SsiFjeLJ0W+J=R8g01!Br0{gc{S_sx$mFb8! z>!3bwFq$SLytb1ScG;TKNJ8igD%|PX(YmKC78LZF5OI;3E=^pA-g^SouH0zXZ>*de zcrJ!`?PmLiQm-TgpH|UnQBY#aB7Ci991aTH)Zwf2OAT(N+c$I++7e5~@+Zt9k3lSi zGGkljd;@*zTenI3C^pTtG)p__pe2$(eo&hu3BebtR{_BBUFT@;Vz}B1&RFMPl-U~H zuJ

8(f~k0J|94>g~3w`?VRt(Lm^G7%ruOjRm#cdcTy7ya433mi_|V+^b*K(({F9 z(ZEpn*3mHmwVN&t0Dg=0R)Ct!qt+#>WDqcFQ0cuz2gNj&y7)mk7Ds!Q=6P|m4w_u< z6+GVql#U4i$-Pb}M#vi5CBVmUt)?x2YT2Sxq#I$pres>5$3YfcgTx*QrY!q(k}p>g zo_a6@1}MJLtJ?11F*TXAZPAyl*JSIu*!|Y}rIIdqFK-G^uRduJ#g6~v#CKZ_1ucsW z#aCO&NGT@Bi;yt#uwTT)&V91!dfoz#V{v(xE8Zu;j0Xip2w0<&A>FAHnHp3u6y3fe z6T>>o8?$ukRtu~F)!{vJ1NzNjzsO_CLN$!vtxaRw9sGH4WKqpr;I2iaw%9M?eohx* zNR6`5~0+|tNQvOnTH)N zlFG5Tb_45!P8y4)PMyI*MF&K?JJ>CBl&TybNLozhF?Cms43q$*-cSPN2n_BAmy*SG zdEYz>?jcJId%Kc7Fm;nkLeU2x1uI4v6IJDLy?f%bg0qS~#&f~2QDQA*F14F)zqJh7 zb@pt1dMrn21aav^lF11d)k*^Z=()nRpbl;Amb8>gmyb=q*>8E(1IOYz@q^k8MzgE+ ziDYQKml(i$F?6BN1# z9=BST34Hln`S$s{AAjPB&%WE-4mOFm_-mYKPzO>PD6p_J-QoJB1C?XU*fo|jxG*II zd<@ySA)!Ps^b?vQXmEN(87j0lA<&@PEx^MrFZ|1E`N$92(42$~S#c`u+k!I@+!YNJ z^d_LAFmasFY;8+hs2qDDTa%&IwH0v{+${yoa&=*46oSAv9nr!t2CPI<2V3&wlC092 zN(#{z&vj3{`o!apKXE^!E0ma8g|)N&7P{&&l`$4AHTc@v6$bPEyY+~(h+snW|M(_lW_o+s& zE3nq@wRMewf*Q4)k-1_*wySj77AKV>AlY+INsom}ey^h13+P!+ji6*yq8L8Uo4-Es z_-Bg}rZwFfIw;J9Ew#hs@dYqCSZq=(_9C=&RpG&>p_0C&Wp|1wSheBnAOK0UB>-M+ z(J|z;c_;Zp<3XDrr4@FYyOo)xtu3{Ntg^vvH3>K)mcqdkVu>F*7-O>?QzcesS6BN$ zu05s$f1#-sY;NG9!cYlXPEmsEI!+S0&J%kDHJWd^G3%hm7ajEK6HnAoTv(S}+{Lz3 zr4(O|V+`&W{5IIJnN*DPRp?CT7u`&0#MZb#22Zxzu&ovxj}gPH^O^s4Ece@Bq1j?`mTyFPb7~YJ+(0vVgfQ_RJ7M$k&2p zDQv2co1&rGeI{``cR{UX6LuUJ{RT7VNdqNC^lnpZfj@7kvC%ilIUx)Mk0tqFd#b`p zlR-dh66<+|_A9vehzq5^Yb9P=3RA^kLg$1G5=u9sQfoe@4ru{J;{4IoL20EBuCP0- z=pZef+1>V3(BHNIhUp4zT250{V)8)f!Ye&1(I6=|zU>O^PlgPFsSS)Q>4JL+?GpUf zJ)i7DCC^1}agKmQHr0G2Tl{m~>;}EMFi=-tgyM9oBWf*v>MS{y<^ba{m{fr78j4z| zgW3dWH^qd`*iVX~$pi_Z&mCKrxVH>l!tEam54H*lATQLrVw08z@e-jE9uG=Z+>mw9 zk<>vgEZYOTj;Zgeoo0pg>}$*hU50 zn4k%27B-^4Y|sS$&IC2A&=iQr0+w|&w6-Qwetw-$Z`KF3dC$@u&8Ao!K^w5?Qizu< zb#z#*)UMHrGoHb910Ax%#|eX&w*S+=aQ>1dkembsPoKHC{0mcyqi1 z=_|c}fKQG$!O$q$$4te@v3kHyRI+Faogbkp(~9n`Sueq6G*7HVR0mX%rOzuxw_Hfu z5(##!~Y9^?Km@iaEGJrF!-7!@KfO5wKpri3s z@Ztr1QSUZwO@LkwP;6^cFZ1HkyG+vFj3?v=@mnBqPJ)50wI)kj>FwIo2yg1GDU1M5 zy*XO68BI#8vTDRtiV)du;KiBZ3S@BAV2=ryPCm4n%OI(>aUAFsha-^@rU5C(`4f=e zY6{A9;Y5Q9Y69p~(Ef#K3N00~4y#!1Jb~1-TE!R#W_JMc-3yw>Vkl@%(>hH9I9@mC z0)GYLDQ!C3>5|ltD#ihF4`=oYuk0ry zi2;ZTrv{*18|Xu8!IaSfGr9XNrwxOe(rRv&X;HDu5+-o@0#@r~U_Ho-xKjcO9duGr zLz%NMk%Ch#Ty^kx3Q$TgH!8M2stRNVG@QJtGgbJtQ)t6vd$Fyg&Bw6Q5mi~Eitn&H zX=-+Es1&FoD0CpC)V2c~yNYhx7sg1f)r3+%n5($FuZgqrSNm$a)A+3KRUTTj?wi2_MFS?0y*%Y@7t)x16^tx+}T z?*f{kVwhJevo)$rXa#65-6!9NlcceNxgrjxTDYP01Rrd87kCk8$(DO)80vW%uF6Jqm40tW>ybf%zC7VP`dH@eOm zo#>~|sMJetSHF&!B@opwKli1NTyq`XggfWQkd=S#TZcwsgwVGXlVS)=ek{`q`H0htAd2u|V>Q*`IqPn_T z65mT*mwlN<+uRqJ4fw+fDkt^q!+ELR`$#1v9(33a*6Ty)*YKkF4vL7t*;-cpK`VjU zygYMk)^-Iopb}?|1rND|jdr6T(Z{532kPE+#uTUp=_@aEYnH04Rn+ z>&3Mur|Ze0I$yA$7pg>v0%tbZ(B4>w3?_f%SRB8t>V)>q9(1psMF*KETM?n2Y`gp} zGSEuH7QvKcI%eG#s80_s<3$X(Pnl99VDKU;FhGTettA!4-j2%dE+(-UQ z;131_Qrb(MnUI=FVLu40xR$Iq(*`p@;)!aius*b~EpBQtuJfzO?47Pgy=5#eboC@f zR~wGA@!68WTH8`f558K{_*PK09LrukN&h4^x?|S|;l9}cs+qciwSA+f&aq7Wn0!V! zg8k+QU}3qpjt-&Bs_n2MbX>xqIRfVPinHoQ@XZVkOJWVBA#jj)LLC&G6_?y2Y*B;T zp$G2=1*65lqa?JKO13~&g1f|<Vah>?Tq>pns`T5L;j9B!U^WvGNCYuHh@+iqQF@ z4Wcn&Tc(1uNeIdHZ7@yCU&|WR#69UncF$xhF7H`-AS*6(t31#Gwn7aebIX#9vx%(s zY0a!^V~$m^Q)L!`C}6D?#iow{vr{EO2V)nAX*-2TGC7DV`l-~`_mSS<*qgEdj`gJD zk`|orlc5(<()*-@U?SSCYdjZwMZ+G0vz*$_M8RrnLRV-&ksGkbTQ5uv22H00*FgX@ zpg637V4)0_u~v>?pm)i5jcR_aB##Gebl+@@W~aQYUMdSVLY0sWC?u5&Ag7Bmxr-I- zcmUL0nJVn&WSYgJq}F~3_#ATtxS9%5YAbo1`X(k+pTU>mTum_h>+++_7_j}$PM!Rn zi!f}Zx0N_3vI78B7$HGrA|lTLR2mV5oUI&%oN6Ty%^tc+Sry6^iZd;!DOJRg zZ7y|OSi@adv#x{5Z%Z>)frGEb%)S#=J1-D=pbYcGv@uam+Oss~P#lk_4wbptp#-rr zjBI%E~(@1M|iRS@Hyr2!8Wl&RGuyj(2Lgo-qWvi6I5L&d= z`tP1c=u8;^bGTR5*5xu-t8}Ajn-wmTOHExGpbZxaqfXNMdJ!O1WHyzvJh7`SmxWT= zvED=F5;rAeTQqgf`@2>acqyP(aYSK-bOm(B}+6>SH?Ne(ffS4?Griu@# zJs82*Qpv5>gGp`I1Y>U&ZP!Kw?j*3pYC6gE-CB{_Rh8#zHyWC;sHd7MOBhrj3siu+2< z73<@IdJqdWBtr(}x=@Js;B(;xbi7LuJh}_WtV$HsSFOjjNwDuYCv-JB4)i@4e;@kF zcZF}av4ITqTv~9#33R*YfXNgWiXP*$JU9C|&5B#r2Q70F+Pv#;*V>&%CR?wYX@CO> z2EA2+a%gnCRKW}u1w=eyKY-lz?Q}y*Q&;f0ueYt_B!7M{>a0i?M0@cIEkb0JhGejv5G=~pa#dUC8}G#IwAKRwei_&* zKh>?L3LuyofSN2>0{ZOD3!AHj_yz$hV9&1ED4NFL&6e7h$tMpd_umD0$!k;>CRzrB z?$Eou;XSH%nmUaHsGrXB8{S%D_;@H0*ed(2!RlG9Dj@vLwzTaossqcHi>bWZ87?$9 zD9swSIgp-$3gW813cgguROl+q3)#SyYduML6QnhD;1)>M%nM~z2CGKA25F#cTW~WF zgUei=nCoJ_4;W?z20~Zr<^ub8pb_iqpKLCKyQTf&BCWBr?+=n#T#0mU0fMnET^wX> zZAcL#2%_fjj`Qh)6*D zoEFoJ!Rbs3mjS;57_y#ZO2lX?Y<&{~RN)m|OLNW*0Hv)Rgp`z|GA4?q6zHQH!MA&Y zZ%rC(?ofan@YGaRQDr&tGNQU@pFBOA_v&fS{df=}yl@VIrH%Czll3nctdge_7-?=c8FI(t9UKqZwS%3TZSfka-DQET z>A}`?e85McDCOe!k~0utE%+5WEUtCPom93N0kqb6SY>VO0q=*hFg5XlR@L64zRFS8 zZZ&mR09e2FTDxM(w#F>r)PMr}2K3;nXbUQE*p`L?Ck30?s!SBK3`-%+LOJn*lZ%F) zOg|I`BA)~gk{qOi^70@V589v~Wah;=!-Lt@V6H3pew{p~k^+M5Ql>g9KSNPcE3&~< z9_rPvOf$ESS}wN2GRO{9U<@is!?WwGpzGW zqPfz($vBTeOPzd5EF61K&kF;_NQ&Gzb4#fKMSD=ZC}BzYXb!H(l(yDc2wbpvUh8nb zxD(zto1@t@9`uH!T3{g(x^i@v8v@v?+eAoLYb>ZvdJ7pLSuwr1LxKzD9^VhpB^Pb0 zT1Q6ce9sXaj{GX-o3Ll=Tin`mrcM(DOc#)FCtq2>Hn&!2S+R{QUC|kV{vl>pM~fmd zU_SjRI;OM%Tu)W{q4GSe<-JhD*8+3p&>h+?c)84rOT$4)4V~EaK{6)+(QWi>TLVs! zBM5|MfEe&n5fiI&bIowJVFk%nO98wL?Nm~0(Td4QaH|elXnk8tVoMKpg#a|F1mCbu z%~sTBiX*GaOEq0FaEfA4H(Km+P;7#}wK8jhT7-2(c^SqIuG-4c0%--nA7idX1=XV5 zLO5K*0$!>-ZwbPnbt%-K5>}xe_Ow2=mslL{S-PM7Al|E|-qCu_4K|xhxA=VR2(|E5 zYipo37h$v37G!cwzQ9n;wGz20ifD_I!nO%Mb;+12mxZGYNfxkF8fLn_t!3yy$hX}Z zrM9)J)|XPxhY!Mq65f&l!4*2tbV1NkH?G{_S=b@G^9x)r>VdVQO9`e@fv*FDJnNu- zl-EGsDaV6!L^Xi5vm)whEkh>9oI#!_OpfzH4WpB}S*QU3q7`M~k3e5m41i*2HO)o6 zP;Iq)5(-V`4}gB^JSVOfTq)2ZtSwWv(0z)a8hV0i~dXwBkw1q-Osg1eSZ zEMaZ6<~nvXXGI5V8w;cbq{7Li3Yc=4o86~**^4)1_KV8^eL#Z0yIsMqzf-+e-stf; zBo)K1pr4B+WLrfv*sU!qJ!g2;&8Ak0?AD@d8k3ZQCV@Xl?WW`w05y{tS}WrMLJ~St ziA8`DR9ag=gXN;0k=7~NZEIPjNg7u(RcAGn(qLI96cqY`QJ`K{zMj-0z!R9038c(k;kU@W>0?Uufq*^i1$#xV5zsVDfRK z0+XR+z{+9zF1Tt|1nz~K=HnAnN}#+ef-=~=HI?Tkb%hFv1U#|&VX8e3K3};cq^m$Y zm9wm2ZBp4Zlo4x6uTzNX=&jk#t^Ka)ISZ??d)HOB)-tW709)!(di%)|i|c8pkuJSI z^>VRSkCKHFT4_r9RvPK);H;ylRC0h9e=0Bp;KSfbLa`Vaev52-Rf6VPWQub}U8t2Z zS!fJK3{s0~3X3uLM4+$Q&a}2ICk&tto3L%gBr@#cP*WDJ^vPFbd8NWP2r`EE+73l? zD3BXE-^F}6DQZJkI|>vB*E^;48j7a6lN^gDWSV5}Q^Qi0}fqZv9O*eB3&8Af*?1`PpPh4qsR> znZ&``K3%mlC;Ld=VV9N&B`c0&aR>J%;^58dzy(bPc}}d<pt8b+vs`AQ-Y;A-}1_KV4GMUUR0$QVqV9FNV$Bx*9 zDY>7f0$#2-n658Tz2a0=`U`8an$9XPH6l$#(@Np#G_4QnX^BvNhuv0?hK~ZYKOK! zp;mx!a-*$_#<#_H2iXFo!)q>XYou05&5puUYH!5Eyjme(5ZPWQ=8VWtGSBqvM`m|ZM7(8 zpmcwS)B1i$cV64|+bEkZ+Iev@tEctQ@h3QB8X3Zf2^QEk-v|6p4mVhj)u&QpaEO^i zWEmwxwS{>(z%C6P# znpCL}8WyU}Ta`WzhrwhC2IbHL2vaM7xAlTcT$K%2>kfKKeo&s35M|HO9E;nucVR>| z@K-31>k40aGfl8JCM|ab)S#JzTgR0j8;%X0Hfk8FBkUqXbrpkQf)mi7UH6@IbVu`l z`<>qz6t-;2&9||H7$F(fEb9JV1%QaH_d|k51l8FD2i-QHhiW&ec zILz7(6@CqvXu{Ogx`5T0N{a4l@p3A{pmgbjqiuOLA%ab!B7iCFC%tLflalj333;;~ zT46WHuD|DG#Rbci##|1C#>M(kzSh{w3V$%4+s+%T*ledvwaCC<&fd;VpRgx`LmvCG z22B8L>we2-2yHWUPMw2|xd2-*-wWDwF~eOoOWBfvYvEJIOq(C0ecvjFiMD9Flqdg} zjS05t(f|Y4#9UJ$QFlx>L2wBJU>sWyR28)Jnt*g1UTTnlMMExAq=BgVLSiQ+(y{E5 zK-(nfdsKPP(j3jU2y_H675MR(s##uNc&H>iZ=AGDMQBcPrZWDd`tYN+vGX!fbVk&NCE8rjFK^FQqat`Y?2otJ3sh z{hGler!^E%;Li1;n>O$BwN87e4)27uLML8E&`K;McvfdWNm0{IwWRuZc>`Bko|;C4 zcwU^WQC-tP8Q`fXS$Ov1L!Nu}y%z7Ok8*_0ODuJ!@Wy&c0EfaIOwJZgYH&@$K9jg5 zT_--qBIDZ*T$rOS$@?}xoX@_KT_$o$lKS9MH3jRN4xOJ?C_Z$cqO^`9^2WZCZgTtR z=24fqC|5r5ZHv25iT1dTV%i4jCLJ*WyR^30O2-tk(3liK?zK>}?L>GUY+1$}3lnd@ zt_px@AlMFfGFvNI(&boO(m;K*^WyT3BeM=t)mq4T74rps6~?YLg00DnMTbsAecM@% zY>VuOecL5oZPi}*-Fncut3&6iVI|KbkP>LvhkKT2`;wSapm5N_>XgNj!hvK*tPiL_ zN+DiVi+n1{yX+VRR)kzf&KI;Mq88>=`q%hJa;$>1v9jWRvu1#?O_}RoP!&)gN`hphhm?*dcaCE5iEJmv2sLSG?Ipo5v0BoE$Tr zueT@K4iFXKks(DZnju-yhrUCB6kOW2QgmC8T4(IRnuj}CFg=j@-3^hV3D3};r70HI zZFq%UC_)1sQ~)u!grTc!kMGPZ?3GgPqaqJJx68wW0&+L3+m&Eas4mCu5uDmuOKmQX zOe8_{P}UDT_S0t9g&n1!yp)qE5tGgeV%?GJCbb;p5vR#`E>iNPPJF6X%L!EOq`+iL z^C(w&B<@nZL)PVYD0kkr-92?(joDmzUdS06TE?@r)fMc&w3a(FK;KCU<~s$p!ct`R z%jFzF5v}?`T)DV#f_BF~Yo=9KBU+oKg0q13p>sLW(h07cux}(mYYUZI0rE;2-r)v4 zYE-Ht>)=~4rC40guk!9`ubynhE#pCMl{b{dG-ldGNDYOOSwmtF1%b<+48mk3i?@Rn z!>uc`sKjsYPu8L2n1B{Rm1AH)w^^sqvQR+2{<8{$5JHOC4OSlTK@mzA9(`FPHJ zi-lM<5-J&6JA=Wz{ii&p+RehN4su2B56UWNdk5d;y^~emik8gXMsRdB8`PoCBd9f+ z)+C!cAlGWC)!U&%FhjlBu4|3h3#ir%V1?fC!WSZWr4=V*Efd{VA7#o9CzA~HhNu}o z=%cEH9GB%%b(HagB%ciVsDCBVY^($nRj|ko9#3oLvBi$}hbtzOHw8*`dt$1RoGdnS z##sTC+7`j4^?-)1PQ^eOukCoBgk@?%-t~8L3i~904gx|#+=cpMMR+i--umbZBodQP zau^{aYl}nK_STuL7M_xox`MN&uHYrTGAvqP_^7a51K*?exjmFsZ68^xI11FxBb0e= zGorvgR?(6p1&3-lGM#pWJ*F_W0!9m%;yPQ@#YL@c6}Lgt!0V7KUa{A5GNWbIy2@UL z7431)jP_ojTG1guv#Q9*vA7gWuyYb{eGs=J6fj`9*xDM1)d?6iWXglqK5$qP&!$}| zDy${ zEj*zsn2?Tw074y3Q!$0)AcPw_*ZGc4M0*Cyxt*7}ZCUL_dN)(S?;JjA8xIlxj zP{nHr9G43Af|X(xI~5u2k{X*F3h$t3kie!SZICrl+X6+M^{GOhlaQt)EN}Csx!E!& zVcB`nt!}7>MST2XU2eIIlNDiY!DW^3o>LUT5#0oZS@bHPe(mLwM4UUIejfcY;8BnYQ`~j6@EnjQRqLhMh z)qn-MYOSQz9;n!gD*vFfjP@+?)4Jbkz|~@*#PMVrjka60+uK4|Vr!gYaazBHjtWqY zRbhoLw9Rz%;Su72GqhjufwNKyGX=3KvdP8#OuEu$D6kWZ?TWLCYG| z-n_eE=ilXR+h&VxjoA$_R`*j22txk$NULyVi8d!wLQ#HM`30MZd3MwkXxx~idQ+bT zldMu{$zL8hZCPq+h5T;RKBedZ%od zMUXALDbN(i+vi&(XN;owav)o4zoR7C}Uu@Q2E;=!T-fHSw(^ z8eGD4%gr`67;)mN3pl^tXT3lRRqa=jjYi1E!$-&`_@NabqmRehd zHXX0YuD{1J9z^eMKtIS*ys$)oTDpP|LwSbiRWp|`kEIpu1w$5SBGe2hB~omubZ@~= zq3C};3E12UeG{afby`~!%Tb?yD!WVJ4_s!jPl7>$X+-PWQ1nGEukc@SBO=r!rR@=_ z!Mb3QI?b$|ox7vNqCdQSIn|6%tO5}fTz-2NTu)WiZh*8-0eRp<-m7QZ=goTj8r4B{ zkk;0^>R2~g-68!j+3Je=J(Lw(w$=Q>mDF~h&rx9x2FlbEI-m}ad6NY`tl4#I#?xep zZpEM|5Ql9JlPgf3PoAQuqJ~h#Zi&sdT0m>_uXaI2{prWKzNW#U%qJy=H5<&;9E5pW z@6E|iumw#9l}_U+Iy2?JmSS-!5GQ+<%1$F~(m_X|0;+FY^_BwK0%^&|o9Auuu?M3f z05XvLE!hWsQcNiE5``AzC-GFY?S?~Y()zD-mSyqsE8gr9>uS?9pg zPG{V@sjR4Eyw)@VN-I^fYgku%Xo|Pp=yN#aLw!aoPIau^Q)w4QZuPOCdRj|r-jGsm z-Bwf=Do0M~)PLKW9-S+dp^DrwDW0a5{#;?5**Ee27h2EofpVU$0h2R50SS_XfD+5|nJ zK&TlXFWc2wxljo9DvBx=jgbSo&!~G*X;EnqiVbh1;(#Oz-fmcFmj1RXjDtx5B2B@l ztk#3?+-fG@gUx_bRa*-T2%p%QlVuO*poL`Z62>gxWmg*LubVoE$pdm zfm`4pm>&bV6`a);$p{>`f2k$Sfh9N3o1GqtPhUKoW!zq`j6+uJ7U{ER!g>z}l>#FE;w`v5W zk3;7&LHjJDqX;StYn!|JZnQNJD}@12Eub!ULefDwm@v}&gO(WFU3`yf=q@;{0o#^O zTJtEBoyYBT{ni<8$sA?&ni-2nxg>GD8*OQ53>8iEVAMOqN_kO!PQ-~d0v1?nNTd{0 zg0jig+OAO5WGt)}SpuGWJJJ{lYX)ne?+U5<_bOX#t-M^--$tCRs+Ull7GRd5jqhlE z0rOWRHC_(gwvVz^!ZTI}4W}?36u4*tPg)oRkl+BRg~?h=SB~X^BsSG)dTEzVJhPn` znjs4O>t-(8|t({nANCl=kSWR8*=VPxd3d-KK{Ra3A6^Y-P`a0YBF2iI_ zDolqx;^4PjT?8$Iv>OyO7<3geYszc8mCdisP3fLso>l6zV0IEB0H3cgWm_yu8XPK& zNjivL-(cR|FmqCxo6W1Q*s$$9swcy}6GBkKgFg_g2}`ZzAR(#`LuaCaV1>7Et41Cu zE>$wA{WZCICB zbOBggO(?Va(h7Zsa&5m|*Qjz87UY*pm|UZ= zfZ%lxpev~1RCcG!6D$x|pM#Tryr2*GJXAauuYv1GX*<_kR&ZFpoy2JR-h^?c}n^EgQ%l3I(Bsc5H#!*G_u5Ny)5A`~#7O{Wi5q_<=5;LseZIUEA* ztClfcP()a$LLFcoe=q}?p<5#pi{5~#)OaCOLLYGBrZrsN!=asu)=sM#swzs%n9!*_ zM9Ah3tx+9&dUpfu)pJ?ihr{UHzqmR$HdtFYSumUBR2RDLaR-%BeZ1 zuR`U~D)ufitAe(o(9ZySYmg$>0TDF81A|*(5UD7bS^(2d?U>Hmba{ztdUZojGfVS+ zah>cJr%-B9f$tiNbVawrZD=<(Bha@gW>uIc1Wy*jXuehgE*JHqwj^|=b~6wJ1v+#F zvbvyL)k9$=1YEGRNwq?3avv8GK^scBiuomRpc`lw*X)AUl7H)qgBAq2Riy^bB;9VP z$)>$nkd;PTNi~Kl5Y39dYF}JXX4)qqN8-}w4)4{Y>w|b!&(u{|La5(16#LJ>(5~3@ z{u#DF*|$(^C3+o%Er4hY-L}psMIFIeoyIPx3(<;&g2sz>*<|ymQEQaJWRM8u2G{0Q zUNrzg1!AIfg%432li&_0)!D?TUt8Z2xeL&QwJ=Cq{wl~?uqVf=K^qXWQbOofRAyUt zgpO?nE-?TDZuWhS#L>GOiuFNemACgS)(>t?olYx#;9Bh;P1PVrPE7C{v)!4+(~52S>dx^0q|hHs}j!x{wA#GhUx~%l0uDY+z$%d35ko~Y z+}Y$Gbfv%Cx}ri?U?*S-r=XX+%YJdRIw-!Ft+-Cs2elj7?TUJCa>bVghPvC;3H_<1 zYq1i_JYF_Q{|Tou!j+vSD9uTd7U`)r+ut{5T6^fNXMjDZd}%>xu__3$fOYNs}V=+SH5swe7DM6M)~gtWNW{-5XmDDh;kIxbo=` zBQ>x>t$Ez?rBID z!CN2|xmXIz<~O zTl`uRB9=LweD%#$!YYdkzR1E1<03<6l$KMag?6iT2?859ach7!gTb8=cI%rW_o^sr zEB)10Zg`ufz)IKQA_2&%ip`6KGO$-El#Zl>w#-5&tb^{#i0U0Tvs6g5tqa`N(qM3A zxR(hvnCjRo2&7#(mo%k0Zg!1AP%f}e4S`9H;F{vd&_Ev$BcXFN-&zY!Oy+LQjSm$h zv;}r-;7smLwwSVIL2*^#MQ7l&?i7HSG!qn%JdO*Mi#$IZ@lbg*|D^=Rj`f@8RE!z~dm`;2{!^irZ zZ`!M}%+{7RRnnG6MdrDORRx5iYVyt_DnQhIYqo(rZLvUGO1XBnBqBK`JZqPkrL<3v z#NuR5!p6J>(nznRf;h%u80PQvH!R=FtvI9y=^lNC^fdkEghNWP+|K!za^`<3D&5RU z=JWI@1|QWzM&_)-eMRhiKC0f(NQA zLn%#4t>ZSP`}{0pBsC!pSgM>;L4*Di1|#7ory2!V$~-cZxm^jS+=PL^;hGpkX=xm_ zYHg|%ML1WyauXDs(YHl1DVfl(P|8T%B~+vM9i)*0XdD?W8IF0+#vB{f7> z^hgBg%a(%e-RR&N-7h?eww8Jc5r9|$b;zxQG^2S|N7HB?NBxX7OviiN80GfpA-SNd zDh1SF9&7o>l_C_9wOUp{8O@KhLa^=eV$zRVsX}YAU(lG*U3pzBXUop>{01(G#hng! zVPQ>7kZAKAP80_9f9JklE$DSxJ(+3;X7#OAD8u zl;7OXpA`5JJBX#5SP0|Dp~_+wv6m9hI>;JzLAYp0>x0JZ1{M2ex94uB5w+pkZWunP zwVuJ*QfnMOdDGlK<1b99fS=jyobo0=Ipb$%l2abU1(366UAeZd<X2fqx>>?TCvoVC!4EolZMST=$lLykAEbMh zp2)187Hl}uLD&zrpN5ECuui3CHhm(@X7 zNnCwi@07~#MQoZM+{`*iR+&l&HRL@@=`E@w#o~6dMs8|WakyEjU?pFvLNym6rUcI?XK=kf z;4=e>Be2qbD6^GFF62_#+_UQSSuKeJ@yy&R(RikWUt@|2I#-go^I@!qWxKRr9KXoB zr@eaiJU4sOx;Y6!8F4OX98xt+!(V`kPl{fsVy&Tr^KpY}lvOIAo9;o@cNgT!b?JSC zwvD-Jpyi%dLtTUIr?6L$TB}-Y04pgHf73$21n}{n$*)SAzhn!bsfjX+ni<|dI zxgvB7wk6R`({u7TH!5A8tyH2n&ul$6P3p6iO#b?2VZN2Z_YBIXBkQ1Y?515J33;cH zG&e5Fj*Gl!X^LiF;xPPVf(c0go-GJ__H03dktFj&2DY$zbMkb)Eu*GBEU1LO219#7j>9sq(`?nMe2HPwk`0?Wk^Q^ZAS1w(+Rr#IfG~V z12-Aqo5NsiCd(#OBflUyL%+9tvNNClthg+&=31Bf@62?wQVX4*IU-ommxX0tnw@9W z%q!h%k6YCYnUB#Aa%`~KFVhi@b1>WOldzHXK{ALPK$Ycyb!xTHk#uO`B$=jVG$A6N zZQRwf{?zr`E$vZt(w{{dzhxNKmCFAWj3P}5iPrQ)BV|M3x2n{qic(ZCHuh$Tg?!_t z{xk(H(Az9X$p8&lV?tRWB|z=Pn0dB(Uct8iVe`G#$qiwnB;-}cX3gk3QvtRjQqGFR z^nVM>$p?)G1)48`&d{=FDZf1^y+5dvd2t6jH@h`F*k&s(33%ZkfG=C9U<23Uzg_=^*&2%&R+1(f6YTf3}=Vz4`XH?B~-MoMa>J(d57q@)j&yEqEVDUG7nPq`0?m?SX@}3!< zu~+WrOpHe=bg)F?^s^VSs&Jf<l*orXZFnrqfH>$;cWbcs|x4qF7wsut(-3Z1DX-M?L~hhTxFHZGe-T>Ip0k#97fs zzT^C$GlRpMdUX?|6}S0Jn$3qOid!BNXY8_wz`F_d5Q)26&#F38Qpgvx<~XYq_^cs? zhT|dx=Pl$OhHM=44!|Qm5h_ZH7S+{aE!vis$^}X3BERQs^@cHWZarIN8b~u?Xg3?CuGThh>5 zwg4xK3)x?*1Fl``xc^}I42_Q}5!9&umcJ?xeO60vI~2=YVXiYQjH*d<5++hU&Z&`i zH|Tp*dB3=Qnqf-s@}8XX3fT`js{yqf;6QlLb0Qg!xaq+!`$T??wIK)_qwCmPXrw^( zH_KuR!m$)$$AfM?>+yc}Y&m95HM<^(q?ECRgr6fU$wav?)iYsSL0lZsLF$SJn);B72_L(tfYYt@YjxJ^s%Q8gAE&j}K#TJb?{#?dv*sKr8FTKwHa)F_$V@|oxy=0BX(O`582 zaI=a{OBG`*igFEwvd+qMT0H2Wi*0(nxM>SUGP|YDl{qw&Xrhs|R+cC^!^Bp#l}^Ih zv+L+v=>f)9R#bMD?uy2%^j@_qT=4bQ#mT@ly|4iy8D?9gSl+`7mEU2P-+ofei!(Dz zi`TpqgAvH+gB>kbJQ!sR0+f!M>kTQZq2COM(@nSTMX8mZDrqA7LC;s&$ld{FeJIRe&D12m}D;Y^7_{&6^r`xmk94B_3$C zscD9Ag~foh5<1K_((5QtL>~BP{2);!DHeBfa`McbZ)4-~jmTO7Kr+NiTqj+EC` z1L)Z`DxvY9vD2L+0x&`78h60FxLt}UoHV$&m2*x>2Sr{htxJb>jjSx$9k#lVc)p0~ z1}*Jf&S@3p7FPvthjfkk(>+-Uo|o&&THcgmD{GTu&Q5nEiXV@MQQD{3SQRmLQR^`f~wF*yE@n> z(K6dJ+(Tj3Z#rRTy!5 zCbL%Cu+Myz#)Fm!0?bJez6%_NNS}y!p{+qmEXGKZoclFm^MF%$M}P<&z(mHp5sSuh z(Lk?Uoj`=lpw;TG6|8H3mPRgl)O`x1uo1bJ_e9}~K?#;|;>AlrW^usYiyj<9UJxjEcjKd((l)Iev^Z^ksO_$yt%;p#AbmR(=mnC6DhBsU|nmi&{ zqbDYiq6|B52yVfn#b+U@D3Seoltr}}5jB^ZZO%l}A(!*0ekEn)i9Cm@y;DCGG36C=INHDBJ*| zS0vV;30ZVS(?5`zc{a+XI=T~8)rbMHHZb`^D+PFCS`DT#mdJqFL9C!w9YJ>+_ArRk zkJ88(Rm^g`qjm%O8&HB@Ay*~WB}ez?{p zUXp(kiqge$F?Fb^n z5vTsxuDDB->=PCdObAXfiu3Ao0zHxGjIuPm~|A zd^4mQ6vW5!+oO^=H#3vcoQ6jbi%cG3~+}=#fGsZg%;HP1!ue& zNJ3DPxT@Sb0w!y~%-;B;`If7ZpK;NVQevYxdxXRz380*WtBr%gG7y}mlp%`XvO-9y z-qo(E#7HtxFZe(lG_Um3inCFT5ftUmc4#n70k50+iH&%Cr2<7x$@-zAv|KVWinoo6qk{KiO^@2Qu`Q{P(fbeBXUy{w?Wq zK5e@433SxhK=nh+Hx(q#n)r=441OXao9)sF6+-lasXbB$$3e`%R9xaqG7VYba4jYP zW;PU+KIN*N|Dg1vy1U6%>KKU~NYjqFk;{kkXLUhBhLR+ljTs}6ld#51x`K&!Y_g1@ zd^y9|a4Y0lGGiMmHUk(LGA<=z?bHP^K{{e5P%>B)(BviJ9?|ZlZir$%vGfiM?T=N#;sYg$+{~IY4C9iO6g+e>Kc)TDo)= z%S1b{#O`jcM{J+$?2!2}s2~=RPF|w=3FxvC-@xdSSgpJ#x5^GCkS3}Q8gqps32u=c zq^GkP)MPuGut7<(DVUQ8Q8u~3WZ`8~D>mG4VlslG86`Va%W{sZ&2TOijiTrxSuB~a z7&rMQN#%z0d^QUOX^04oWTFZJi6h$GS#eq#7h+?QFhFV92N)^Z5urWoS<1WqTFqld zR7Yj;D3CRLdLLnNq5i~C!$3A&O!o$Idg4GDDE&gvlzbx0#{^|0&%mNI3C#!;){s4~ zu4i_R*mY?l{;+Tpo)J|9YCw!{as1Q|B5$W*>mx~60W&9C@q(k%Hp0!=pH}upb`*$Z zg+bXwV{yi1#q3as-PT05qXtqil!X1JNSGxvj7uc8%Jq@NX7jNDdyIq6>c?R1(eQ86 zNDr6~vDQeXC_jwG>{VA>eHt7n)Kjarc(})Swra|;RFwVVf{cx3RT7Rm4r5a|VTr|U z@|=VNuMcYNXp+R@q;e#L+}w0}U%r{?J|;yoWTTDFl6J}MS>kk=a%aA|#&W=0dQenQ4}FVkX^@0f-8fM9?6Z5gA4Sl<9}@7s>F-S|H&vwPIvP zhDs0t5=nq8$svTs)eg+(nJ-51!pJKc*&yYNIdg-V)U*=8!0)E8*07x;F@n{?$b{gg zp*KZpQhkSO-Wc2zU5#*!awgc6htPcTxU-Qq^E zBfxqu$=o=YCsZfDj{|M=Vc>f{=BF~1Z8=CX3JkgQQNsjEn;Mf!u7-GSIb=9SZiH}` z_)QX}B(We#I8e~2-5f>1g5-!S#d5XdK+2z-vnF4UwlJ%MVvhK++oo{@=nd>Lu)^Xn z@JnK}3(D}gh)e1kz)tMWcR^c$p=FbNNJHhpQzEHkt4Q^nEbiD3U;a2la!5)wzqI{5VJti?lR@i&Cj5lt^t%Y8Io?Lmh3roc$ot@e-{!s2CBIs&fc; zIuada)RHBGMuPNZHxMK?PLcGuHNxz8(2nLMBrOE7IDUs+S1PbnhShbpU1l^m%FjT0 zCYnqdPs3DE%a59G04!*D-%qL4FWi%`O-_yp_7-i+oM$h=V%!>C|Nrz_A@kFX6k z2>9P5BM5y>A$Cp)5*E!r|7KDKvYNWTo@<)UQLJECnIWRrs+e4w$o!xF}hhknwpoLeWQ=?nIZYd4C{8;v|twuioh zvEfmx2F6zAm}U^A zIGOP$)ei%pGAc}1)iCnw@U-q|nuNHu0a7rlHDo8QsTnI%WEw@U>9vWa3Npf0bdYX$ zK!ZEk51N^W235fi+7*6~iG_DKo@!?(iw#={C!<)@)`i3o9t}3NN?D_pWzZf-)Xu~r z5>1L^iD0Ftm5fH$+Inm12ud_k~#zF?uIDKYJ58Fc{Rw44hNfv`y5Cy;^*5A?bd(=Ms zXsovf41mH!v5E$oYvSWe>HdxOfjJ7sf)3;d>ASpnjcR9JcFaYMC=JC9i35fUqirk9 z`QtYWGs1y5M!-F!##ibZ%22aEx_*}AK#8N~7})6qeXj&5@@%jpnncP*)Eh2zlHBSp zbriWuRF_fYp2RW6s1(QwO^U{F5*u$IH9)HvKMGY}ZXs$uP;ilv1SSKrr8vAW2h?jK z(6OQorBZfG+{|e}j$l^Xs;U`TLX4SFuhA2OZjNvnV@GCz-C^;A z_B69p=OhH+Jw1SBRe*w~foT^}IsqeI#@;3K1`IkQE?FImEQ%$Pjm!kAoJES&P(T&h z<;K(~bO8gP+KM^G<#0C4=t#oVC=`R#86BiTTnG(Z!n7i*b%lQ-76tOP0YNDBf@vB# zum;oxG6pL`fh7#i$cTnI@=cCY@-Wa+Qey(z7><E9HJ&jA4cIa;Amrd>tX;Z z5D}Yh>Zqs&v=d*@ND$7=-WB6PW_6x~!lUbRqg>R-Ej74`ZxxNuTun3jR@y|-At=hS zNF^{QGl5jC0b%`hmeEmFk?$miaMS{fAh&Twv`fs4E^m2)#e}LHCZrv0KA8ij)8Ww01F6EP<7n}M_?OgCjE^W?A&w?`=wOqf^?(H$6Vim3 z!9NCJ!=)GxcZ^7m1h*2W6XwEMjmH&=7%Lh?!bF)zXvb9==bf>dQetcdJBb>FHoCDe zwFu~hdn-R1X>te<$H=oRqRwsyUkY3U%>=kmiOQWYLI=fBpV~P;qv>jKjZEo)p>;Y4Ud?(w?r;4_6Zt zr{sx(;~>f+^Gc@pk+LT%PBb4AwN7XCONiK@h57M~_*>L6nk&KZ>I}U+g_{essAu~M z-6=@|Hl#??QrwIK;vKqL$GVKSCViz_#o0O9N6Y%49u|7LSe(4O0rxAVm^P|k(TYN{ z@Q`U5Yzb(Ji}8X6MN{4ov$Z_H*hL}*JdF0*4$CWH0%$M+J2k*)JMEH!D&L_G^pXFN4fL{#<84Pk!=+D7z-5!SJg5y z^45wa8Fd0*%Z&mL1MC-vQ91F0WTTNt@36bK;f^A*e`# zK#V0a1jF>`3jL@j)P8kAaN#G^) zm7D{kjwF^l46+229B?Aw%t5jew2`UPjkdU9HIm6a_dx#P8Qz1;jaB%G8Kj~#TRSh} zi9BC4C+C$!3?vUUjRP!XXtWiqt@4~#odk@u5<#fo0n!NtvN2aQ$fDf>da4L8sc|## z`-2P*OuWcjXJ^lhw8Y{zExkYJbhhTwJM3CyKHhIcB|V5*P>rUIc0QFAykL|>g&lO5 z3Smh&LUG`H4TD32#i}<9MaPu=V%b9EKck-g85!9CZx?7ht6-@eG^eW0(J&LtOA!QP z9A0#rx7g_(c^{*9yp83 z8uFxUQd+8L8B-BCb;rY(K9HztfUr#Ribd-C63W?m4GtR`~HvBGcVL2Qb z66p}pPXlcM@|q{LLC+ULFkZ9>B0wWYMkRF2E#vvWCV$?8Y*Mju%X>iaHv?B2)DmR{8mx?JD$jSPk%svMi zRL!xt><1-l4tAc0d3DPd44q0>I0iN={+U6L;y~jXvQj-^G!Xbynot=S=m^CRP@xk! zCKv)EqDoH2{o;B-cc8jto&#WW=hz`*>3Idn+p&l?>~DcZEcj7TC}p7)Lqyu3v0y@q z>MKJ>L@|$b;x&vpN-ycK7*g3(n8=$1ZKz6JbSliG@AW4oYGk|vuGM@1{s_Gp}+04#y?;&!q|RrX0Z=Mh!o z0R@i5DO{}K0R|&!Sky$5R!PW|1XQJHG2XOVDj*f@WY1BvAishZa&8ts9WCJ4pE}JF z#W?qqjamR(`99+urWmx73|$!d07Bp>p~|iS+iNIBm4;(dex{dEdqCtn*K2n}AyX&w zxKukrR&Y~H=R2hWbMRG3Qg+})YdsFoB}T1!*~|8gNN@2>2gJr8lUzYqD}NVWP+&iZ zw;JiPCR#XXAU|kxn*5+6+^3P(7PYiKD7t1Ezd`Y#oF1gFI?n$zsidm}=lIgw0}&{$}JB>tp;^7L7PE0MrUr1vRxcK(rk?}Xc!8Vmw;^FeSmf7GF)v1 z&MA;lG^dfV=RbuJm~0`H*yjOZZphq52E z;aHrk58_wX0W%qH#}PpJ1`}V11OPO#Wq3Xgh76%#JvF-^3@l#2sKzADj5iFSzv>O+ z%1h)t%OX+>P7{s-Hriy7(!<+nfETcRqRLEnBYhyL@MN+f>ab;+8$kcO?V@fNMZbw> zc>kzz;7J8Me~sr~54`jEFz}Elk9iUzXxc(U+vCX`@JPBvdKX82C84UfG0H0(MjouC zDdAbgHn71~1m;mhu|72{jw4aSfQE@6&=3PCPmE5Cs)K?HORFE08HwH>#4}6TigSCG zax9J;psXV5fdz#%e9-6vl8#D{R*0zt2V2MZTg;T8jZuW4(}R|yj-J_F`bTq$CTV5> z&-;2{Pyo3|r{w|RJ7(~O;XH(BijRQIQ3-50ZL*qaWUh45EeufR4ZfvUq7P*{bTg_I z$Eif!$h0Uj1eSc7C1cs?omwdq40Y;;$@&RoF%z%TJ zK)o2KHOf^PPR3d+vzW+GGzc=7<57Dkp5@huSt2VXR58Ld-kT$!xUFDQ82%QEeT43% zO$iJDINw7}zfnQrRRl6OnEnAx;>1O0~|N;GM){-d~h{hRhe_QpwC| z*&2O>>2xD)f=aZ{%q_Nf!^xUP0Ax8rWzsA>o#RJ^=v;7Jz$zly#5hI#fZp-effH#k zLLp7XE|6Fphp&wWnmS&gy2Cw7X?;+7BeBjbZHrjk;B7N}c)BCkr_wQm^KU|N`PK8!3fj|W<4w@fPr?gmK1gs-$HKEMlBB)?rG^F zZom&ivJ=S<_7>lRAaum~WLk?dhXgu70~N*@z;1{iBPFV86i?EvqqKFj?PBk%VP7c8 zZ?@thMcx`s!fL>nMZz9K5rm`7t)<7xFL0<8PXBvN{jnX!#p^-T8-tV zf$7kkM22LtHenyW!S>)fat^G+RBJ^_q%}$$PFT)HZ9?**BrxCb-NwxYj}lk_yCn*4 z%aGFm(i}v&9c9x#7_lqB2pEL{+-4)4o77|HX2X7QWgwwLAW+uABm)%;1Hj9T8?6Ew zIHZko8PWlgM!s!zvbZ%?x~rw-!_QIbR8ED|28$+MX0(bKH5x>LMUx05P1Ne8Y!m~g zN$U5ZP~ww9zk*y9p#|fX>Z3tMs4{A~T8qdWde|sNyd?$jjocNZc>;PbN-sKlf|fBs z%f!}^{5?1B zcQg}ZMR;3j4JKJJ<2V{VG^zw56wp@VbTD@S&06V>juJr&dpxS(XPi4-8ikYb<{(Yh z=Bd|@MrVXu8b!k8L&Jbv#F{LQu0WlBF#?`PaI$2Yeq{QVL{cnFrBJB`Mxt`9n}x%R zTh$jIxPAKJ))|z$>E}+C=@Xtk&K!$92K z>03}~REM_CPWxqpDVJh#gVRBhHNCit-rm(2lTsRmTmwT^g*jr^5`YfYT#6PIk=#}+ z&eA&|5cxvHtKfubO%bJFGOcUnN-TrLH;4sLh0Yu0$~`MuQE6<(Xum2d3>%J(HjxN7 z7f*0)*6=Y($I2OY$#PBG_ptDC0HD>Osz7t=IDi>u!>%>9BR<4-4Ct{!pg^?Ki0v+B zE-JcU{se3SphNonBcV8d9AwjZGbe%e&4%}=@`#X{fr3WtVX%7yfoNilw!Z+i&{wQT zwc#Uni4vU1I;|*b8A3idE@cfloW!7B&WL3UAflDcK<$})g|vX_R!Gh&Q4Lmrd69h# zrdTXQ;5!Zf+xUsdBvAa8=Ix{yRf0;d5x0`H&bP{b@XV|#RjFXi4kLloq*DC3F+LTx zI@KHOcq6Wmg%K|CapEvyU864`8fbDBbYp@J2&H#M<;3wv!HGni!O;K4HVCk#jW!6-zw*^%*PmfEsuE_u<lBECzQ)_uIj*a4&VtHB_MZfOZxm&o!g;-Vm4WEh{iJx0`>IlxvUv`>P( zyCJ<#mG+AZj){^V6rI2|BqYIK(FHh=VlVl@iR4GMEAqdK9hz?jZBb*e^!D zD1RB#LPZj|ry|^ylz=YOumdFk5^XeRT9!~Ml!>S%czjAZO4 zu9Vi{DHIg7E;X0felY#aaA4t#plO|(PccFiU#j>)sSzMbCD;%8qVVOOY|@~eRB5Vm zpcp5B9|07pY=HGa#ny@F1G#rM?8y&0vH^&erv@Q?^7z(hINqQhWr(#!0JF~ERT*e^ z9)RZJ5?A03F=2sNSdhU zZ?WT8+{V1iTLR%Wnuh|-L=jkEkR||y?&jJE(}88h?L!|36N)_x1|YZ>1E>V0B5Qdg zwU4I0sMPLZQUk(B%)tN!i%d}83^Z$1oedS*BY*;GQW?q2JG8AGiP-7oql$Gcc(hIy zDqLv{6IP>(Ih)L#8cvP{~%Me=|39a%`U9M7BY{Ha4`&GAd*wy!*!_2)w)sl zSzS!Ac~^M*wG9Tr>GHDw*u^WAg>iF0}l!zJwO+Cjj zY7(fK$5lx>H#QHhSj7QEn$j$a0vub9C>hXp9Tae>-;Mbb?KRBk4UyC!mJ`p8ZU$Ad z;}Cgvo2DFDBXLiV4q~cC1=i?l)a08>vREj`i_05X_# zu8a{;2aTYE2*oh>0VNak2KtO>(|FrEc7_c!oV~pAQJC=)4GZ zO@xWS+<-+WLd$k188H3Oq_Hxh7QY{$^&-g(DaQhwK?WtFQnfMcM$<6em04@i+o&#d za1!PV4>E}r#mlI+C$|kIU|S8YW2M-9>Dz`2qu24o{4Rw|iz&i3HZ1amG)LJ}yP@Tw z1I^YX#g>xk_Suk~JSqtq@P?>~Ta&XgO0|*S05Q;e9i(Mqo6-K;0$5(dH|i?ET*FA} zjl4eYhz5ZgWQD}opfokBQipNCc#H6l#Dk2KlTI3SJV#z9+>#%J<3W4gt7q9K;jqc8 z8v<{P;ItQd|6o$8gRi86?|%pF!VU-U5r}nN&trrzIP1~802@S$DHU`A&cPKWg{*_| zb>+ZF{Q%&o$z`?L2)UiTfcBV{g7Y}BDWkS#fU1lxPeh|J12&yx1~ksGj*I}=nFM|s z`Qch%QMRty=G<}6U9qV?Vt<_WE!hWk@L4XAsnz5O6ZG3?5bFBGHr6G?Qjp^ZOwGO_Mo@sZ zg*H?sY0>D6f-w>YkjAbs(fQhiqXH>-Q^hi{i4-0D(hbsW5P%D6!$~+h@0-0__DR^w z+fO8#tuOB~FMvRjFnUtic@&+AD7Cu`pfv*>t7rrL%6(x)hv8QYNEGAgs5Xq2GG>*I z3bA<#J+Do*Q+tpv*+>u-#$`z8LP;$`iF%jOr_I2}I&(!q9}!+b7$FPBx%{Hv!OrcL za-z~S`(G-LV8*m`Dit_tK{%S^gr~wa41f>;TH3%Rf&4}JDAFgIo`cy#KsF}S>M$zU z1G|B6pQUqGRV4X6svO8Z&^zq-?I-#DLD>(2O-sd_@|?p`*bufMQq+#4L6E2rMzjP? zOj%%Ji6B?*W8DYwf&sfe79ft=HE4ZO(WBNpYV#;91{{o5z^=ibC^dj`vE@TE7Xy&1 zjZU-Mb>CKMs%NXp9avB zF8ntFg{puT^G$@T3DAitA`lw8G7sZm$pCj`bz&`CJb?)S+Ef(S#xO)$R6KIH!%fo~ z4d+1jscEM~WL25I0W(4Ffqxg|sOBQ|&`uD)Ywo7M;6=JU&( z1l=cLbL!sZZIqbN^tJ!O0tp2R+Iy2`3rGLL1wVhsBt&|BVDPth#&fXo*M7!Be%37b=Re-O+`Fj?DLRL+kcQ^qWO5`W>t=*YGdgrlZ~K(;Tie_+}7Ag zgqYYtW@i$-B%{=T z0cqU8MvY*WatKft!vZ0gc{&Op%&&qbE5|$43mV8q#e6KTb@Sq6MuM4}o!=j1_UbX( zC?c9vN=U=OrZ*8IF`Dt2Qv+zjSPK^Py^@AC!~ty*v<3u4=q%7eMir@iLQw!bqv!<% z1umJ=xJE6w&FEA`g3f3O6r5HGnXi1mF?K%=uSoqUv@FIoCIR^p&qQLKLTHrbaVTBh z&n?>x^2Xk2ALX^DFd;zw^$5*i9MD{VhG*}f#!o*y-63;hY*3v;M~~3b1~hrY>w`$oG!Z~) zTtU%bip^=o7DoHxAlgiw5owj}qeTbFbOO8kb=29}d)_xY?Kscx4?2N&dD{u5Y_h>< zx-dDLV}p^rOpVU`wi+2`cq{!_PVl5J65WpC3;<2UUb4DU9*=N_$}SEFEAYFi%~{e| zi)u$ZDFKJ56nb>@)Myf6XqlI%F5{%^MdI^Nrfff@l9lGlMIBL|r+ElAtC41)IoP~Ph^JG_STBJzvbxE7W@P0!4lMRAY>S znFqiRKwnY#$;dP?4vZ6sf>v~a#EWZ{4j5$^0gVH~Ds8m0ZPaC!Ko<+UXr!3vG44ja zqn?y19|cCrHgKW7V@6JtqziRuMqAWB7Y8oR8QciYj9nuNh<_9W*E5 zn&v(jSaPanFw2MA>p3d~i3OwBV=N8VLc_h*&X3Vpx|db1ZAXeFf*ai-At zSF$n@he76M2UsW9vLD3bLF@;~J_$6Udc+ZM=SCSrJtBPyvqKZmw1mcq3RaWDtZ&qj!r}eg5flD?!l@9CNpvYMtnw;6~Gs9z#>2ki);kN1}fBOB*9D6&IToE z-7-OYL-X5M`3yvvBlC?;l4bd8dlN_mD61_-T_fshUymhpcqJ%xbXpVgm z!;wtu$&7^WZb;VLoyJT=01MDDxN^MOYAi{kg^mH#xt(g^qvRJmR;knK0%XAv@(tz~ z@itEzjphxxoJa#Ak%JGQmlUJIdN|V#>Hq8s_;J0+MkJB(4F-W=) z31*JhP*l0O)q#%j}ERrp8SDsR{uc9spXn*o>CHEhX6r8l+m#craV3Yc21RzdxuPQEh3pgHs}))RDpkaEQYh&t1$SWA+H8jfQ+&IT$Bgnu+p*4)$Ou5X1~% z%9xvOLM}*kmg0@`b4?I_K%;ap-N&LK0)m9#WgHpAvIi0%k&1y*w7$`hAASXy}YO;VC^k+OsE*2f_P;$cmfF9pen4gP)9qC;>4slEg%lHh}G_b9EU7 zM%5T!OX(7b5k^bUH8dg#*g)|l{1Poq>ABab1!RUn93jHEnOJM1_v#{&Kr!i*$RwJG z6IuYG|8zp4I)Ekw0-#CniSlG4AUY>jO$&`AaHn(Mj7a_hMns}eyU0Be!VthC7ivT& z7zxO#TE1YN-qNZ}6paS5TVh&zpiAiqnVX$gm!|Ph-u#;Pi#sy!u;cd!otN)!fbk#} za?#;|#PD_A^PSheF+XDH$$?~@Rr zi~($O-ATylB4z$)AB`XtKoeRmsOXQtPvXN`1&jUyB11J06g`rJ(@C=E_|lJaVmKa< z=OpaN2ioWLL3uV$L%UwxX^!;O4f6KLHtlw0D2b&GK&R8Ab4*dimgOx;19YQnQw%*R zv09_lu#QGQS-xO( zV3aAUh5=CxMw_wZL{N;_c}8Y~WCBirnphB_b4xXEbKd>35%Ay zG1JtD(jr_~+m&P1j!3_N!#WP&Q7G*h#u!L7NW7D&iL+M(2B2cVi70XcI}?oxo@ETp zf=z^I(7>*#Ths~)b~G&p9<(tauG2ZfN*$o>FotG0;wW}&bFVbl1+~r9zmtqH4;_^v1X|~f6F#jY~3}Z zNd=g&7QZoyK~gyd=ykBQ%G54_e#3&K4-E>ys79C+uV~M6EG~3-lHc8+V?o8-Y+B__ z>4W1W7Reei5|OU}jeJW0g)w>&OmYf}0dS8u#icEAZS@Z8IXk**H3}Mr`P?F1(H(8^ zCdCwaH+~A4H2szRl!O zI)ZZtX`Ib7-SiJd(uAn1?N1|z+lAI8d z2K^vN7z=V5pn2$6fj=|w6fxE;18<7W`%~e(?I^TA<}IsX!Q04tRp+gKdHyDCr47TL z0%9Y3`tru7ae%?oWXd%%?;Fe`<$p!^s2yy0T0AG5eIm4_D=@_BoiwjqUMvB84VF9LPwt7))d)whwX;cV;uBmo)ITeF|PO5@h<#IF>g9K!UMWc3<#r(j6I1a3stP3V44``5Lv#Xs<>)EGR9M8?}XrBam ze^AhAbqgl}OlV_8mE$-s4W)rWR|F9OC5Y@%jfGY(EW;GnNEKcb6oPp)6o+i@VL4D3 zLs1W+3A&!Mj#8YkkF6*gmIQ$utuO#SjgV8qUuIlJByS^|R1ZA+jHj}J77)*{5rggj z*WSP5Se7f<+UV3=*@_FHQ~Nas9N0jXl)4Mvg^;5W!4CaR$m#%l5Iv|CY-MXV)}+}O z-{A7BbL!#%7Z*65k?w2F2OmZ=8)il$>18`QilGdz!GySaT`RFm4zHQ7Uxj3&v)k@` zJ8y&iGzu}n)>>pSm-?^|QWKpV)84k?g$X`kWCXszsz_sl_DKf<6iSmc+>@yrg&zC$ zFq-Xs5^kFhC#k;dSez`*8gy9Ov24DU9fnF6v|I3yEjwm8zKm^vy< zyRJdS4FJfiv3>Kv#BuhdIHB8%{6xzS#Qh1NPmT$hq;u-IV#8DV}Zv3M=A4vi=~446Bo+ z)+`D?rjMXK5lR;Vm0L6W1glNXN~a#RZ+0#F^a}_m#J4i{v>a~L?%QL!_@eXPsf?;;gz&_>jC zar8dcOv>(}yO>r^*L2$V#Z9;?k6JgohC;-^k3ni2a8B!fKX=Y#U<{U6ZAhbXaa0RsWN?89gD-+TQ=gj@%)e4FRsrI`sY(#oZ}F(8RzuqfP2gZOf>vLb)sx#P4HlP};O&+yv~2KuBd9O7R!o#V!^tr*w%AGLawNop=c|zLZzPlR z_!1Y6v4v(cgM>|Dz1Tg<)ul%$!OI)sEblM(NpL7m`(}e$gV7Pta572>ojtmNR!kiA zgNu)W3Ljzd)f6n7k1kq{R~S%E5(0+9t4i1(HJ)D?s{)o06~;5*9jRpC+b-iY;iHT& z)fZkkZCI#W4*^plppohhQlPsG(`lg((apYUm8TrL)2uoqB>9@U7>4rkXt=bBTz0Kz z4*hfCQbD{J<83)SAVe9W-;|N?5$l8gdfKb!B~}UD=LbodE%JrQno5h_voRyM$teu! z-c9p>**brZ*7uJ80j-fd;O%?@Kq!S~OajK>W1xBujHp3<%5VTVBm$7^C-^UZ20OCO zhIKPi0fRxE*&hRSvinm)oi&9;6@)<5TFbCNQ55E;p$|P~%(PlTa4i~gOS`8~DVzd7 z$7M!U-33nLwdt_jL2ywqv3UR269)bKe4x+c9Pf|bC*ke;-|f}&3M-JD?~ahHwnE(8 z5ufQ888!>d#A~OzvRrxv2UKV&C)#F-QTEc;Q+paN4@)qJZTSY32l*w`M$B|$xjR96 zMqjGiFyo{3$CpUq6f;8r*72GnlF;9@X^yPX=L~NX!cJ!hELxh$8b=>YU=ii8zbHKJ zpv|7}l*5pYunxyLQ3y5(bf+0&)Az}SYdpF0viFS8J-Pa?k2*g!_v(2K4`_?wz@a&7 z_Bkx61lAXvv<}Uw!3(47D|0T^!G$8V6?Is%Ae6z6mZb!4uuiZF=LcwcSt!_wBaP>5 zS2BKm3}jUC0u|p_V27u)_GJ=5IANyhwd^1yY*_A$MwaMPo6TUq6p@zC^Fb7_f<V5teNb=8)wRhK1A~tC=yy@nJF*`Zogx2uaTZp;cV?(`uX-DKj=O8>iLzzSMxyx z4t6M)D?*A8NXq=LWV{|ly9HcOhF*ITr%l*!Xi(t@s=9G*(Ln7Z;R)Pk+@UWAscyT3 zBS9ZvAfyVAq&`HG?e@WRv}oPIwyw#ev6A0Lo$*-5(CaX6U{~%fV1~OahI^`KN7f=A zpdqcDrY8U8;is{#9k$aZ+wnW)8FgeH_OQm^i3FiIx-rxspk73B#gY-)Y#Ko2kDZh7 z6i_RXP!#TCuT$NA&|BoiQEWPz*SXmc(^N=JENh79BXFX5%^3n|N1La}>%mB1M%xn1 zM||>44j6Js@wAbS7#xKtte?SV2UO8)`y!@F#^NoS6m&#SJszwoMi|&>0TYN8E8zHJzXobO= z`XN|9{bYI(^)!^9MwGEd^;MN60AZcoH$~x)7w7dsy;slEbn5$^7uRaX>*|{ZQW!+k zh+`&*QVs*T4%Z{pnOPgA6d-6Nk_=I6L`}^y(7qb`9*Bj00e2Jf1|Bw4r4~*s93oPy zR)V*!D!_xPt2(c$vi76C)J8imC8Rsr7Q}^@2EQ~Fsq3Qy zGSa$ky1jcVx;0ze#lX9?OC?~U#M5l+nc}HZArBm&MD^8lz?9}L@astSW52i`wZ%xE zAN1p~y8F%h#odvF*LQ4q^}^h2GCwpPx=A5QMS4W!QeP#r!x-|?5?pBwb@ly1O~`UruALb^m>IrBv#ySvPq$@M z+21^181sSFk~!UD=_5M9qFWr@L3s{?;{NS5-bju6^}g4reqdUadzKak5w(ay^6}vA zog4^pnhMfC8GrEa4xOd@Qg2W=VO<3i!fphsF0yd5J8j)5U&_r)bUUjgxTYvtmzze= zjDb@vA}Rk?Lb5SvC3S;puWIMv^zY5m)%!lpq|&y_K%0HoyxPum>RY5#Sicbai}rro zmA=i3_Y37n)xq~l-yX-V-TI^Sym}pN=`xu{JfVa@QmRlA(e}WcEMt;m!Flc0&7G5A z7$P1$c1ZaA>8u3gB<%g-{^R;Gq3%^@H(&<5_a7Fk_M#NFAI4ZD9@zxy(gqkhd4r51=L4B!7Z}O-`UR5 zqBC)`G`Hd1Quf zKq^&IKF@Xc(#tna_m?UB8lIk)V+83b7Xi-Gm=ROf;DQ%62GNuG)gDoAx%jUA;_hhn zK8bkm7Z>wEukYS)(PuZTNt*>cY{MsJ+8M-w8nI~-mUKKjEH(aTHx)8SY6)s0f?0B& zjaW-2wgyuidiUlkEph){_JWo~ z@0whe*WXmknA~f7?3F@J0$++^UoEH?a>yk*SLTWL2KsYiiABNb&@*9oERU(IpULri zk`MDh>hkuYgIl;c!(qUAu}`Fx?pWM!>+S8IwO`y{I~Mo)ZZXp2Du)rXBo?0OFpfSD z9n_yNWg#|Qq8SYcgtVsA<4+*e^VW+sx`wcaLneLImcV>cfl-Lpuej}gG8Cl2i`9?F zyWs@w*FigN`7ya;_9ZXA=X4rTw3+s$%fR^7W@)qKz+s{OFye!ZW^NA6f0!UR&XY`Z{nKs%Ugq|L=xtv)bABzA&l5X^0) z88C1SQ?P)KnAo(Q2jZMBpwV)@20OtZNRFhX!w5^$Y{@Wf*`Tot(TQ2LlMub9?l3i!tEykS}#n(00U#95zMnE?>5ceusPDt zFj3(r!~Uq7nTOIjaol|VwdaF=mM8Scjl&w%oniX-yZ+J!;*c&9Fb7L0)EzVFrWJ%A zZbFQ-c*x#g%qUBBb9Io)GuU?pnqHwdVziTBjWFW|xruQObl9>%7pg-%1Fe8~ySbRp z3UAHe3-@jj@~*ILdsNsj=MG#E30*L8>*wNno)QNtM~%S>0xb;|RD`56s-YpXaFYwP zx`hCVCXIuqN~DZW??EJO^p7X&Kit_;G1o2AsY?9t$?D&#&gr z^EXM-NdiDrHSk;msm*1T% zcgy}t#}{4Qh*5`mKo}-Gn0XSf7EKo0H6y%TP{L-3HLR5@T%B+_%}Qd0@YGn*zINh= z7Ryy`_9ypA@EX2ycjix=7>4L3#YLKD6OsLjiCk=&pF6o+N7`snVPy1=Rv+i_0ZN#Lm{*DL)6s zLTOlcA+>HfCFeEPn)c~I9~G1Pi1ULUlEj>Zj^_PxBmpf2a7I66za2be-n9c|CUQCH z))39cjOdh=)S$CsIguerA-AeItb>}gv2n9FA}d=HiRD1A(6J5ABN;H7p6}Di0x`PH ztB*yDR#AppkWgy|E3ZL0A#IPaW~;Q`Y(%@4Sl>t~4L5lyC(pUsUl9V2D9x1tX ztTi{7-V0xqI)0sy59deJ1&@*4h(G)L5r{sgRNu>x``PnBwbRHObF*KLRjz4D*tBfT z2@AAL9U%>Q%Y{&L%d#$j-CcCh2{I~fZykuy7UK5aj-H1~*@})nWE{#r{iBz+u znhsP2i9-AKg45|d#i~fm zp)b6Jxx@@@)E+HM<0_pC3Di?AjwNN7wBUK51m#i<9EbDLqzqeXP8tEP_gx5O52$7%8V z`?xyIX1{txCP_CtuPtPaPiu5xcShTtPTl!!7g)J*W;5>9D1V9h+d+wg@5L`$ zN;=o>>ORemg{-a?Tdej@tmXSGCA(fO$rMxq!m!IaOzUBbMVhercvIT|betgc{@JIf zzH6_Zx3=Qm?pWOa^Blz6eoz`HhXFj5Bgd!YA5Gg*!*6wVz-l$S$VO>PlgBJ2aHUN> z>hYo51St}&`!UcfPIw^7>mbNdf4gb*Ube_+3~+8ouPRLS@HF+2=3#FRKk8EH?^f|# z(gVEi_jayat>D?^N%`-L>@G+fZ5t@cXj;9_NALLLt*bm4EuU42P`mo&RE-jrD(nLL z3-k7ZqC&Q-}{LU91=d4}NObbF>&jAu=92!e%-?jMzpg=mp3qYL!AM@+<+ zHYSO_GEp>g6n)ik~Md#?|$H5O)LPy ziz&S6+Z~3VQYoTU?zl~Aj*Z3y-eXySooNXnfzCkF^+#CR&57+BsLeP644AHy?xC&Z zMGlTet7SiV=@G=b)=@L(W@vsK#)?Li7KYVm9Z57NjMsU##f?8#cg@M>q1c#Mhsh#i zL?}ZwBZ!AWoPMW9+3*@FObup!i>l5e)#c2EV{NnC_X{&g}Y8gEiyKIoVC+}U!$w4Tq8QC1vx z{f${9gyUi)Vd~pMJB=FukuD0+Z<4LAMw{W)>5>I&axN}KY6ut$a|mt7p-_+LD=vQHkSzZd z6tPucU(cp>eL$ctWz6$6Y5_gLLJPkRE)gqviC@%}eI_lApqe&`gt z_lhL={GizN_mvC2rT>AAgWO4!F1d!pOTdSW_%jyOZw07Vmmx%keumz1ZXYqe6M4ck z<^TlZ({sriN(l$1sl>yj3cx{0U=Lbq-8K%WjmZ|q9)g@k_nltjiUQ~H)B$C16Q=_< z8iV8BE}NDSI@Rr>!34h~8iu`i2E00ny?I6oM;UjtEV9G4jLm?C9k5p#(}D79rV&OY zxxJu0BlJk^xh3f3t@kX=HLAbr|1Cx*xN81Z>L9P`{7JfHb zq$M$J7i4Y*Skm3;+fq(v|Kv3UR<5JLTCScJ;4PK%`b7OJ4=eHecGTD_5U z5?1%?p3K9u9h%*KP|oGNzSr;ZEj*!}lkisiB*=<;jkE;E;+h#3&B|D)GC;`~;@~6u z_z=f7MZ?Il@`Zuqc7T%>n^P@V$kb1-a+xRBIm8w*%}ez#EVlu>!%Ww~Cc)}lZkzlr zimuUyOZx~C?s#W~h1XQ^T!#vYu*XUpD0;BFHgj|2baonpLA&+Q1!bVkOh@e=vecwy z%xXDfR)A3cu3kwOR1Zo-C*3TdS~Ed(F}55rzEct-9+d{l({3SQ#+~P=zP$aL>w|J} zgJW@t@6r}f1nFT+iHhwDOH^pqv;+=I$SS=Eu2Kh`ngP2Z2?aJ-=NO{HbHWdbwcam# z&(fL;daw0CAGPD+dsuO=znl?=eY0CJ9s45~T_{BuNzp zN7}x=d3nhSL%KeI+r{iKMPZ2yjNF9tY(7pcCNLb`jo_q=sI(-7un{$_dalYi8!SaL z{~HLrv()`YpItZQ8%}u*i?Rsu-*kFL1?)}i+vMoCMj|NU@0y}|jr`q*= zE;rha9BUW7`*+tlf&jG7Y$|Fv4`&GX)5Ta|9l@M(^NCEIV`y-*|gUQ(W4_J&6$3!2K*W&AKn0WK#0Fw^v(b(-7X7BDLZ#b z{X!9cXzkuLJCm)rSlgO5tXu%~q12*F5GJFnpr{&gO*inaXc_vtEmsqB=lw}76UN9* zj%|$`_!>LNiT1~l(&DJ_;>-{NPSon@)O-Kzk0Up`)~LRo(zAaK{vJm|$Oh7nK+1Y% z@x5jy&xTV3Oe}FIOd8&^Ni-dF-6vYmD^C8g|dE{Qd;bKf@m%(B+Uwd=W`aXKy4!n$O`xn>fOzo<)?`g-lEd`ll?G$gB9$R!;kR<7| z67_cS8dI%1v2XR7h@ApAdM{M#(2Hd72${i1n;7jdwLwJ^ynl@v$F5}EYgAvK0O;k$ zpju+rISE`J#GHhHu(smBiDK+(gY6H)=s=TOo#KwI{Cvy-Bt;yKDUa^4c`mS}i zrbvcHrzR#{_{->!rd<4x`2&91O4F@CvZu$JRU~VpH~E);VcdQcb*=J)dQa_Df>llJ zoS2<|J-oJN^ak9!=-L;%61RI7;5EZbxeYI_=@&ttH~;{E07*naR8oR?XNcZ_wwz;4 z2rEQeE#iG|)(hjp*z^wJWPIq_VPe+xr-*@RuBfh!1^Gb9IAiJzyO*bV(N71n-@Qh4 z$Ku}he9$+G&MS+M8{j14%=`z7T2#XGgNiWnN|Jz81D_MTp(${0G`u1C6fwEsMtKIy zON5}+1R{8yCf#B8wdx8Dru9etsD=%S26p&JRkFyOFjGeZMP*9bS$CN~mp zhAmF34QZ3+%gA1nx`7v!7=$b^wTIqAC@yZIVYx(yEXIB?3{vYq3Ep}t5VB~oiE$f^ zt$|mngD%sUQA?MjENAs}%;&`GHoTl2-ITg!XGeGbb%`(*!zm%!TbsDdyUzVrGFd6( z3QTm9I{5DQ+9aHv%Ffh^YQP=iD`kT zgq~g>^dru&`|dOBuxqf+uxtIQe2+op>((*e0FOx@#c7KSV(&a4=}^i6Eg&6~ir-44 z8Yh37l%5@GsF$W&5Oe2ITWE(Hb@Kb5tqGitkcL1EKRw#PD$o^Y4q0O5;YvZjjH!Tq z^9)EKN7BN7ogL)tMDW}?s&n4Se(dV{+9V5b^<|_;;2D!k1Od;`vRE@ZH6RmuX=H0P zI*ZRpYA`c;3xu|u=NWcAA2g41RQdDr&aS71rSPE5a{C)&*Fg;9#PQb5q?{>>^*L|K zk${jN1N75WEvEO@u^-Hn5~v|&C}FV=QYtglTFligU5dhV zS&mCJQfi`#tVoz+fMwds+%{va*ULo!Y}dhwp7IM}y4|Oy;UxzI&S0Mkn~KvKxIJP$ zgO~z`YIaaZ9XuH>=EgNYiDZE0o3O%&MRAsQ?-%#hyZ&;&xTnPKMWY-V)?J{fbNF=X zfx=ef=p=Mb_yl1KngJq^BHuFIk(Q--P!c2XFIO3UGqK>6iSh~x~YfaMBp{RK!2 zw(t;7kaMvaU^2EINMwVOYNh=?!LqS2L+T_6ri##3XGNMOPXHv#q=&C}Nw_Z24IM?k zx0_`hm^QFk=Rju5AUVk)yP73Mum*Pp#NYoA7+_ z|A5$2Z6FPi%7G2X$VYm0tV0?{sU%+vT46moI7Mj}3AyB~T(8GxPIeNc1p5^^d zoJ4&7uvJphwC2zm^Av-HPzTG8fHSE)k}BpsQ{u3N)r!!77>&c$O*30#7#Yt4BSM8s zb)j2_iDskQia*qROsR*u0dph9Hs$PV#{j|LGXNv|wS;T9uzAr1Fml1A=ZScrFhH*hBwk%m@;k>J|xL( zM_ZBM=(WgJDc!_|+zUFZ>2ZlC;XxM3nJV z=n7sM&lORNdTM)|s~eP?9ii;pFK+L8bz@MyOdNWBUvLrDAT5SjgH2952Ad9mv8+Cp zU*NTtp{IEhY8>;7>76c@D%YMapyP-ZO@VEOZ|b!*l2bSy3%a9Qyj)AV1=5ofwJi2$ zu3)!WX*HE$cI{72!`^n7#4b0s>MfzFZ(Yiz4N#|SIxRNx)>*PQjx_9Sx&$ULj7mYB zbf+vz@J*<;gxv{Bv-v_C`Rwahg4qU1Q>+EI0=u8gXuzw@vJZu__y2cp_S^U8^+5>a zl>sPBIBX*`-f4$J{RTq}1W;3>pbx%yNL}em+6zFgjFVcn*cY$X4Now3Jl>rkQ(-!sSLpq7DW^R z!q7(Cdj%7IAdZA@P~hnS65fL}0I6fDj>-a%a55=KgVz9l zs~8atM8zIZt-YUfMun%1vDnl(?f0FsAW>Ui`sIl=q%5Zw?>l8wU6V;;y8U5N z4Ypp`j9kJuoI-b3aaAFmhCQdx3BTVw(y-mM#s-YVi3KZ&VbVZjERzkf0S;;!c|{jQ)nucI=w>=Cxc!e`^D9S>dw*r{Ot$*@O+Tg2gOuU{bXYiZi9!Gtch9Y zZrZUsMl2+>D=An%fV0t61EtUS?Wc?^${p>CB*pR;N!gP6{EPZq5kqlZGNUw9XOG43$DN zVC3aPZYRYtm6&)nt65*vxPW^a-ob~VYRwm+_s9-K-4lP^rPZKu*+esj%)O&~=d!KN z%48b05P1t>rWWQXvSAXtMy!^t|zRQ3!nL|#=4#8l#)qq%)KoURa-)vnYjSDc%YIyGRY zjCfh0W4WdbUe zR1New#)h1MY^Hg#PjCf-<25*7tYKn9bBj4`ScG$BBWY|ijO%;zp%gkAN3e>ncHg2q_f;CSB3ij|w2ZjKJUVnNr zm1j5H5;VUbXE(frJ4G(D^TEaxDR_VW*--v3(AQpZyGaUcSnV%h9nO_aaS*ln^9s-H;IkYea*E4#@;gIU(9a3}AF) zh>b)eiY(1?sw$XR;NRp%7=hu%xci%cXpoUL%@2(F#wzB&c zGo|wkss@!i%fX7#fP0qzRU(~Q1~ zKQ%I#zSo_zeWB5~3W);9}T`&TD4$UI~2Ty4P zhnfG;u%ipaid>fw!_JYZmu%X4ogLZ<6F4KwSZ9$3wPZDkB4-#FK*DU@@L_@n%$DpVbaPrx2X3H{@`q@g0MoxglvEi)C*NatICk z_5A*%oP-bMB-jtC{o+FKEJPzXfrGCmc~}xAtP8AHzcc{JMKSteC9fznVw5!X+u|^f z^w7d&wEH9rj4E=rwR32GGpUq_zI%+Pu{sT#5MG~y5Q&FjhPg|kqDn+4au)_B>UJ@7 z8NhG?sld}39vw}~0bGs2ie{gK==HtF%sV=CAPzVr_)g4%_Y5iByO>=&+z97$GCG6-p<_Yr-Qrh`5@qa4x_ccu{(CK6+9k-1w}KhZ^5<>4-G&2 zm6jz9eIsFJv7KCKV2;o@!r4iqP7SB7q!j~QKrf0mSBqVwP@??hI-Jr#XNTAjJw7dD zP#xsa3RgK*przv~Be-v%%EMehOINe-&@WMxQg2p`;7x)5Xu9_rBSOAA}g*K0!!138x}$e@JScmMe50RRh#0 zNN{?l>Bxpy%y@TkZVARxe?2p!Le2?><3K#6smP;a1K z&($_(b$0XwAIWTSz2+C}aON%4iUPahE7-J&vs&YKBXbH1reavZh!7_PExsVq!2_T; zz%^oC#o-}YU|rs9_m|GB zAN#rbHrGEM?f=L9_wn%`_Y+IHsk-}*!z;FKGM``G`t}m#mrh*ADw*BNwJ)x#_O|V` zeoXRbkjTTcc6FVod7m=SvbN^z&8oG`+GgB^T+U@d;%>&!qaIY(8+_5KL#Z`$d7GO% zX-zpd^`}p2=+~|~G{IV%lJwuaKDdFRc9GK~y&vN&ja5lMZmx5YT=XSb*kyKMBl>uC zP3VKxMD3H5XoZ1q0(3mtLQ_VKmzZXd@pqsNWAU%$TVzpN21+1&le)x+RLO1*rjD4>g@le=5X;n@OJPW%2g^rv#i{&D|2V63q0AO9HWw^ecth_myX6=t*Y z(q7A>N4hRP-WwNQpLQn@p`+_iXtEbLk6BA(blBV467>)=r*-Z^sxqs|w#BV7Y`Lp4 zX4X1w9kG~kf!o)m6>zKJaOscva>MY(%FAFY;tosY(w}~P4jjIKJ$Z!6d$omVbxmK8 zMyuC%xw|dO6ECM|cdS;yRwG6a?Bzb7Etd_@CqoYOl>HRTjyccLA39dZP=F>>U$I8@ zXZ_t)-1ooE{o;-=p7t!|#C}6w>HF>f?2r9z+j0-o+0wDEBow*V!zfl_B#mr;Xjdu0 z)nQS^SG8j1QvUIf!YhpGGdivrP(qd(@$c4?*B-;NH|Ep=Gdoyw_BlSyN@KQr)Yclv zwnCa*8C?mo#%Srf3KgrjmzZJf?F)L{P~}!%t0nJlK`)I{YNLtJuir)M^)2{)27|WC zzJaYDxwf1PU7TJ%bak7jbHNABei&D8xu8KpBW9ZtH~x>Z9>zZW2)m_to~?-NFGKWc zO)Q==3Jpu%El0;ZDvY?FIJ@CzpWX1?XE*!@cU)9r>f`^IdG_eGC%@O>&DSsQ)wa`*WZ}^c`O~e2=?T!#q zpgp6IOuE^e0DLSsn58Rp;+uu`G8J^vhrO;a5iaSo_G?bY*xd-c5aJ_)}Xy-<$Yf{^GcSih}+LLmQn{9ZRC zZ9!Vwn%htOW7~NRTY{Vp-Bl4Cf<-K~jI^@J+sIv@?cRr3DsXIXff&>-oE866`UmD= z;C!xjfc6&8ZO=>(_t1LISy-`VA5;$kYXE(P{-2+NsUGDs`0yGe`R~ zOKNBK5#Pr|y>v^TTT;xsMeBf{kkl}n}(72+x*i?0vJs5rXL6RHqp%LR76u1~#QwzXElM%8|S8hCO# zv{{W99jdVckVQFgDvD@%M6XjrSztN>TqvYVrBv>{dKd<9Ou)i(=Ec3gy*%$1*I!<1 zp9C1?b2hwIOmWM{jtKO(9Z4v+XzY9UoYCFb?Hdi;tG_nj;ACs=v>Z;ULz!9CmL0Gy z2=c{k=k>bFiI5_hn~_FQTNZzpbyu-HnljB5_=T%b2lpse5#fX}ExsYVlHclsCg|^b zjAnOu*!I3c$OB>Je$?AvQG7Vz{P(XTpseO`wQ6gsegc8#eqF0&_lr^$d}H+gY(&0? z2JUgR1#X%_LwGHl-FPNc#IqXzJh;IpaDCGr3HvYiEdBWY_J;l9a+8E#y~3^qHYQIr z=H?JZrPazXRjlO;ehk1Hhp0^8oVcs4c&t$dAJ7cJK)ckQp`c4x05Z%O-k~#uW+ymw zJH*A+ycQjdnDrgsm^)ZcaTidmf^>H#hYfl<&)Lq`z6!rVaS;#jO|-v7x+%6oyplmXJ`@g7pxRvS!qV^`x6} zs8M1v4)Or4FWdO!8nH0Ddl~IB?Bvc!A>mKj{Crn@$!7pQZUf8sEg_=Wevrt3o!B2h|}Dpb|^ke>@ZPViD*m)j9x@=Lf~v z4YvPYj=VS%(Kc2x_t`W)y}rEfr=D*q1rZBUn5@y(P6S%K491f)%lFJj5FNI|JYsVJ zmA0{B1qn*58C8ZgH27phhDa$tmWG$b$Za=p+&rPV;eipFQH(7YKQtuFUVJS+O#B4a z;SpDcq%$n(;xvtl-2|x8VDA>zTGDF z8p%1`j~eIL*+(NaKyg-JhOyc<*KqpgX#hhw#>%SKv%Z@a%?rzx2LZC$$vV$`+7s z*AxsiCZ&nuPM&rR5-q|1j>Q4k<#soHz_oJDaZi<2MS(!iN+Q>IK3So?Nes;Yg@PQj*7M<-OqHIvij7gsE@>gZ=g0L`+l&0TA6gT3}d=bp~p)BKwdmvVYc zz@7$Chbk|jNqtRHZ3I6WLS|2)n~GsrtnR_1qTY#H;S!Hom2&yL(G;1=o&a*t2zc_9 zIG+Uu)8NGLjD^QwLY%{R=4Km*uvgDV`9Yo!;u&@!Jg-_|M@mUJOwH(qWhWxNR?=a` z5uCtIVi>zS(XbwO;6%;~BG0!7`3{N<-9#u^@JO!G?_w$TVqYzYe|kWd|y zGH%jRLYzbefA&+CQkZ+O&E{GedaI`|%M_fQpHoSpCA(e`G-oX=T7FNntfQttSFb(V zt?nmhS&P?Y4(NNsrPNVK^`hx}Y}jL8Zjru-ig*NRp@?lYh5>1`O?L4aNP7w;+}qB7 z_8E5fj`P>`vvLx?y@nU0xPmaD|E1FdZk35=^9R<b)a44XTXc&|vWu|zz zPd3k8w*w%DVq0zn+_M#*bm8Ff79I=;ondtrp4Ra*{BVCqO;gKqdJVy)oSRw2Rtoc_ zl$sHH$#)rZR5m#>*lgW(4RiYVA!kX|0+Mpcuy#nDXt{M_n-R8iA6SZxFxnY!$Z~IL zBJhz0;|$~3L&`w5J!T3DB9g7qcN>q{oL?PJ+eX};4Z7!rZa?U;lU z)Ser*)WvZB1D1~|tOI*{j@H+SwboxdEAyeYugW6pl|t@#3xw7v%|6MY8+#SDZiA^- ziYU>0XVBgCU0m7Y%=ALE9nI)_do{@t6snz#I!*7ZD!m)uXMJ7eIIVGM2&PdS)IQNZ zN#=*evLnSN-vOW6^EjqcVU*oV8$Rx>M#>M`JI-IV1O0!&io^Exu;RuHZ=PIY)gDm~ zgm*LJrtCEZTWhZ0wjCL;Ewm0dHPlhFAmc|<>==xq6yeK)2#JL6Cd9#PhDXk^ksbjG z*{SbZ6|Q*WJ{R2VU!ybK1!1d}*!4L_S1P_LWjJAcRWzfM&H>;^y)vk9B)*6fJzW^k znI2=ucBuQ-#vtsNC`fsIKPFVSA5=TfM{f4B^qE&+cfiD4WFfG|+m=926;o5o1hM=AK1Z_w>1@Ta;Cwil@i6kfF1& zy#ztAIJ0OkYDZ$UlCqnJ?KD{u=7OQeqHEROXa?^TZKtVU$g%E{dx_Fji-#R`<~;@Y z1WbF8WT-jB`kKuWod_j8;7?i#g@wFiDfeT~!GMa!eal7Oofnt;X1~14?vwr3dzM0< zcMyz|pOgad)*0Ugex=jVAYoQNIPmCq!yWi@FshR_9TBZ3b~WT?)t;t4B|k+^Xs2FC z$ov)(y(I_B954>Um@C#p2Uxz4pFI1|(2UOgPYKPPihW%>uUz6;`Ot%T+m{TzYSM)m zKqW#e+OVVLN~c~^4;3U-h0fisct!`~&Ia~=BeRzSiwO3M?d@C5;l~Dp2V97=j5iP_ z^G-_C!-{*=ylCWD-^Sa+gxhD><-XZIN3|WOlEV#O0WPw!EDnk;w^AMH{7{ujT#h-P zmZ6vgpDCilUA4y3#FNXQynCYGL=@5w7knrJicCK$X|TVFJr?4PaJ)_f&z3i@;E1xOWV`3NLPeP^i}qiig!)?+e%AS^Kid!bQIcaT?)5#_Ml^mcGd*ptLoZVY zbcf6r8gQxXw25e%H5S=0MEG8nQR#?{!4RRPhNX5KwNbwfJllgb(EAW&U=$cC(|^Kv z@6t^dNSru?glSd@7b>#<4&`eM_MZ?Zh*HyYSeH>Dt~4^p1bB0LOqXe>%E8ggWLa#X z2XDBRBfE`OeQHTF$U^auNku-P8ZzacW9~@8i}QL)D0)Km^W(GE2k8W^?=Nrv+>wOX zqo?E9Ibv#MZ?qD!HTtTCWCfdt_^b)y$HRl8d@up{6V}jZvBrE)X7VlYyT~e)**g|n zKa8wcolA`Y)$5j;A5tNj$qs4lpEIXtu@y&?;48~db78On8V5*Ol~(-d0BC5V6ZI#| zSKYz*Ly9m~&^TnHG2O|KVH#Hep~bx1@7jb^mKru0gv%Fq+TuyArPaX3?&&hk3<^ZVZB2qm#O3 zy%>p5Pvjp7IX(bMR}`}uIwsG#cx;hVmP?=Qf8}x-MorZ3qkc-FiZx0_O8j7jr&d#I zsASv(d!Auq_*#k#_@r$KC=iiMb|VMUgL~kuE$vL4SKIqAed$Aw%l%9k3v<{RgOnB^Kj2=s8AlP|<#z=i1Ru{6@ zXsn@PuJZI$i@Z%MoCU%U6eu<#G#)G~c7X&!l`a-Zc<_KyN1WiX+)?;(GWQOyldlm` z{DmfyW?)cT;e7x+P#53=yRC>AG+WX4dPP%46jXj|Ms^BC{u z@JQW};V;c=<;|qp4i1tpC*&v;xA-tP2KJ;`58O;8*Y-8MT}psM0;f4*O&~=}`wuGW z@Ly15@a$oyU_b!n>aep4p5ai#xm=$sZNYUlPUop_kB2)h7@D9Xdox?qSw({e!_r7; z_G*_5bRts`WXMQgTOcgtL?GL8f0rG)kALhP<9dD2TgT#F{>t@1FMOY(ZJr9mSp_C$B=ZpHyIWNyKu3`;CNDA&l**ZV@7KRgTwObwoQ%#3{1KW94YdcwKOMd(Ki`f zi~4u4e2ut#=x)hEF|h%NHhS^Jq405sy*pA3Mp}^`zch-0i#k-`WLKc+T}|(xb$km= zu;+~AIig8d@WJd5H?5Mp(o0Xb^|D~{P(i8}PJCHJp;K#yjWm07(tvxtmu)}3{y&}# z+8NqAC!x=<`(n>hN5wVV%j^&=M#cX%;X~-tT({ylaX4l6kOD@KY_z$)Fsf%l4>&!n zyeXH*=(o=5+Xs9CS3_LFuzOF$5KJBu7VbOmA;0bKnfK;2J*j)G&{uXs9$T0JRq@r@ zQIW&&#JsVnH-l5w_ySkY%0fU=(b&ClK5WN>)Cad`Csy!_aMpPN%HzS6V^9E!tiK|)W-h)q=Z0-+^tEzV@(l-(wxg3>UlD00*b z4MJUm`_U-#b{N^K9=qUAnz?$tTi9-uXPRm29ZrIheFx=Wqu*XiPw(znrcg@zfeBdzQY{8Fm%Ter?0;jK!&ir>|1FRf#A|-3i+i z@H5z7MbvDSvG+L#7!QXEhi?@%ErkSn{f9M=lZXIgBPGq6P4?Le9l&t@X(o1|>5h#+ z!U**CAJ~EsR@zyYrT05qb1yRJt#ZZDjVzw>A0;lGM}2=shBs+^NwTJ7vC_ANsY(eQ zfn>$$W6DRWE7DU}zb#E5nq9lDT7xU=b9b;2r;bfpla5nxnwcb(8U_gFa+nWu=p5Bo zMzvpSKIo@H+1fW-^FjZNQy|~tC~zlagjfs?y2J?+XhUew{7X1Vb?f|&u~5?p@qkBR zh1sl0Bg74gdS+1a=my{%s!7xpV+$K3f~VnUUkpo619@S*4m?aFR#}D`^Q#4^oQ`43 zsn0T!Uovc5Ee+Dm%lkaPsZx4nYpkGa=G=uz9L?cB6?bp@`#!WrDEH0Y5d~Ut zx#7>jdCKU620pS+l55;jYO&_R=&Zire$i6pG^>p~+<@(I7;jV+gX^nnOOf8(x-B-xxBZApyihH(QL#9AKIgbI>A;hmM?3+F zV3EP7h)2tW&6**Jaew&{L73n?8i6*Vj1!O(X(GJiP7c%=Gq`Schbg7m5K>=Rj=@8(PITAmZK|_DQROrp{7Z4B359bhCh$R!YIBSM8T@@0?DB_===Ae!s8iyoH$4)YUuNm-Dz<^_8SBv!FB7ioQ4f< z><_Vx)wC3;yuq3RmOCj9v~v1UrW}r9h{xlj-|9SP(MM@<8GY15m)$EP_*hQ^WUvmh ziSz(ew<2v2yk$MFN(b9{7ztK=O&PGoU<<*6SP<=pY)056upgRc(8i#b1P}!h%Kw2M z^zrth^+6en!wHhVKiN2<;$S>^LL(+>K%Fhz1*u?l$()<8X@mb6jTYzo!PcVG&*=OoN1FBy7KSd_423~r`g&Kg0Ye}PEs8!xh>r%jzijNNrNUuFi-p4BJD+pbk@YdANp`D8b^xdg?6k1 zR!_@(%>N&;@HAPldXo9S)9V#_K>Q5i1z*fSQ6_<)r>w$}igY|1{iX=C3lvd%RpKbx zg2OzT03@DEpo78z?qtu{s8DxyYQ-!bS`go=ly4pc0yZA4cy0sg9qiD8ns50jO0%#~ z+qqd>hY?=)J_#S=Lldice$d~X<-K2pq3$-HbM{m^p_j=nw8WVSl(eUz1aqRb#&V(O z-!D+nzyQPM$tJ;2T5jATYv$*-2P_C^gk!Nb4I<5hMPd;o)3h_oiCSz3-n^z{1sT$h zKhBs=BE*V@5rct7hii5KK<|xR6Psx-QKgQW2OXC-dh8C$#&ikS;rj$R;V(T+??L*G zR72_@DPnV-Jc5Osgfkp)FY*3{vm1DR(0Av><@O5qFEnqd+oF?omy{_P>Rb&%tHvr3 zvSWJE_6U#3v48zrqz#10EsfTXqPr`^qVk0@*o?TEVJ3HuQb)l#tiqW^`xI3a9;6$y zw`x;w+$UywEG0+_#k^meB+1rwTBqh?Afy`U+OL{>t?O6AASODbB5yHnEpw56E1Gmc z=G3h8S|L8!=KUly&)Zc>RSpLiLJO{4?`J|mn`3)%!yVGr`k;GN!#$%a40?S6p_g~} zNH&4&NeK_l)abAuULg*-D^A?#Hx6Oyx>mjfxDxZGh6chNE(Dg-L0(+a%4UQor$QUA z(mFS^cH5RT#yI+irX#b%W4`5LR;o3)xgo9VC=g1V_9WzUeKK*xR;F%@4{Wo!lpreM z_L~zATe)A7?nB_Ab*_nCYD}Q23CSpk(IYAaJ=5xfBe}#M7@))cUU+zr`;TQU3;&w$nmK?# zFnVKrTwut+(G1F^!8Z+A2VK~_qtHP0LrqGNn0h4_4_>WBG?lE3nZ}zxYg%7BkQQL9 z^9AiXHIehY*XU@a+|YA%Z^jnaz5n&2ft}y&WNVdPxv4ejy7946tg)VHGXJ`}GP)Fv ztdKedT6z?@EaNL$e_;-2rm${4O^LQJIE?TP4Eo#kK`%PV`~6*lt9cY~HigKH79Jp> zISg1U`al;L5X0;=%@gofnp4wdp@yFLga&6uUVMi$PDEO=uLngHm0G99aH@0_)B2TO zfW99}RifMT|5K|?v8#1)=Dyb#o7h^O*6hrjP!*O-k2Er!v>LDH-q>TJWvxQ4>FjTB z-re|k^{=aQtYb&-W7qC4fD^PvLR4@YEt*3|_wBSe@3CbB;T0(fJbsINmi|>)J>EC_ z75nvY&r)be{voDdCmWA__iM4AvQQ@b1M>(#K>ox9GH z3(KJSp;twFuw++|55_@f6}{%yq3jMN0Ec!guKb{vuVQhEMGzR7emymjZd2r7qZK^b zj=+FSAucy2uE%|qj0^Ikmfa?}CCft`I zf=fFEv*^Z_Q4Za1W7jU}yCumf=sUZ+Eg-rRfF$_Ci=0Hp+;4M)$sO&=KgR+pn!P=s zKR-Gv;f;Hi)>+=KUy9!Q06UVyF}@?%Y_LP@s@Utm0mBCNYlC6{bnC*CSWuBKX(G|o zY6va!9uAVbwyF=PEhB48X0$>w=9b4%KkTUg%R zeJYsfm2178fq!b#MF-l?aKef@2Z_S=L5Q`p&dby-iQ%J{rs$!rXJ+Y!w zgKEWk6~U&^JL#&y;XX5`Bk|f>R?oKm>alBf-uB{AS{MKH#qPw_2YU6o?Ct$<|Lfrd zY9tADV)%Zr&+I}<`7UJjBOM1hyRuWo4;^g^JAHSO!b?1=C;=qJ)DBw14~hxV{j+yR zi2dT;Yd+}5@4x^2`V6~{#YqP&32^h%dg>k>H0ptVKS4@{9@m3L?^kj!5|tfV;3H4i z4aih_9EA~pVU9n?YoUL0x}xEcQ({BpKM4WZgEfL&Q5G~*OS$jvbAMn&B5yjG%$b1d zK3-@`%0o9ME)I@OH(caL21l^ugxDXBK^OVBG;*?g=#(3L5_KPAO6$Xk) zPlJ7Mf5GhsmDyIZ({X`sj>LT)^Fhpud$kY=hC)WdQjzMMA`onu6mk@z0;RjfTcoic zSx0#wJIr6Uj(lN!$p(j~f55(l3QV?)Tx&+-QLMf#drT|3NFEQoUB^X_zp^ogX6&mi z3njHbVALGw1N8EKyH9Rx*LoXmVY8DqM@A{&dEJ@fvlh&)+XMZ{{)exUmU z*Q>9C!?%JT4yA%=Q@iT}#7_Md_JT0z*BMagGgKRkzW=y>yu8VZ+bit8jD){Kt=kVq ztDT*eETy>&?wp@29L!}B(N8ksz;Ja{RKL?MP(Qd%)@|Elyj-a-N_22`NXdWM;mPO&NHwE$cuZ>O1-(V>^Wr1rkBaU>5Du61%PLVLTbe{DZ# z&j)eO(pV&PpCZJ@jJ5~Pycuxf#L_A%G5b^2nJO^tIu`;|Qpa0d&$1ZYdJ1$MK-Ekr z4m{NU6SRd7!)D4Egz_*-A%4hQ(i3yj#ImaIyXiFh8jG@u3VwV_;?RINGYtJYSDsA+ zZ;}{V9g}P!Eku*kM|=u{Vb*@JV**M6raCY=m}5rysIZs=?n9*ZtQheZ9)E(|xNqhE z+~V{3vtx0MK`*h&`&Yj1V0FL`RRQ3`jMORteqM0R3{PKTf#>>}&dgrmgV1pC0s67q zJlvqrJ~ZeIi1vYUhN~eV>^(?R@Rtim-HAn>4nLfP;dU6=qCeoQ0d5>x_G%1ceRQih zZW9Tz{fILx0RHC7oT9UkpSzwNN+QSc7_?ym1){in)1070orA-ica@NQI31uwH~ao_ zNYATrXzatcZZqyv`y~AH@;R#CUKx#ZRD6;&niHln@@|9fv&^^85A9j{^ZWO&&QX0iQE1qq0}s+_ z9oQ%ZYEJ506bc1Q1kzJ-s!nr?l|nlOf%1uSYmH580U=170;DMsD5 z!hhz$oSO1)oGme*7}!v~VY%Wa$s`tjh6Y!AoVx5I!ltsJ8#aUz7d z_v)#6&|?SRFY@Agjp~oiNl@$|BM}&EX@`UTLsXFByo^69glGs+L3qtB>K}QlY3J=& zrW~i!KU;C78!{o6%JT)1jJ^UX=~6uEi9I%zx_bsEisgvf59exPgC2+%b@b@;=AGU) z2UDM&%C_;y)0eaIsde>2a`ohA9(5s3COhi@ZyExq&N_D&<5 z59&z73pQJzR|Xe^EuvnvR%x68-uRs{tq{g3Ns}+Z=rTL5nb#%BS>FKpU?oL^hz^HJ z+!hX%zGg@%84%L$1>%w{i#EuzT6FX>mttV0#CA}$li@X;5hGP!a$70W^+NB+rY%eL z(vhMqV85z`*S6oi-*)F_cj~uFFG`dIXeZJJt*UluDeb(}P6^sAo-VV?z1)rdF8B~X zMkpbKicW{M_uv)(di;%G^eX~uN-V9A!X1ly(+OPv%zd-f%C6+Ooh;FXl^hfgyS}0Iq?(=D z#=td4*WQ*w3BqUuEt1{utFQ)1@8PZFh*g_sSK4-ArFEB-u!*^j`wk#LI}LM|`RDQF z9pdv#K=i6LsyffR)(6Ge4KWqu4+H9uEzyt6F(i#kqU2lzR}bRo(XS{Z=MxY7=A`-| zo@T_whb)Q+=1Lz}a8=)ky<%A@yKe1~1nFU1L7_}0uy|@14S!HxjRIqOOJCP zxn39rK9~HGOAd(;U~i$l`m02zL~o$loh2%d^ny{bZNH)B%o8$uSK!JX9nK!@6xO|< zcJ)TxosT*scbE9xbWKsBMUj?T6MPuO%p&#g$%^aHfQ-1G^n1&9QBQdbi zMz2fPcjHvX=_9xnirK~(Wk`H25%c7;>#$>UDxh#wk5=mjR6yeAWczVHEYj%??TbAL zGd)M4*AaT8h|LUWB>L!CxM*hrHKauA+4ei)TIW$WD=uEVb{e+wy}OxLnc$W7bCtmc zsjRPE*Z{Y87WZtqt$n&jXO45NP}z`mNCcKqWYn)$Jas7^@)5=W#?RY@x2w#JgQ$sZ z2;3vsX>l)yAQcAL7s6gWA5W*BD4uuAUn8T9jI@sqJOOvcEHylP`4$Y138P#^zydPZgBLVVd&R;pQD;C z&Iu=uJyig+Kuo`Xa+*pi2|2VD6UY}QZf&YYZZn(*a5+_W-~%|6lE@`EISOixCdKK@ zSXLI~N$nGG!l&_5@>O#EEc{*Q0JvkVYm8c&q#05lR$dGhLlnaj54JhNe*?Yc>|aZZ zCaszy#thUY&!Q}SJm6h7jn-da^I^#}10Zb>s(Yz{&`0Ktvwvp52L`= z7(ybrFpswA5<94G<211LBSzwdwy78pVIXGM(FeC@p%+FVL#cU8S_yL{YH9dQpm3mS z7_}=1c{p6qBkr50jJ9I9oPsD`ptSie%apm%0MN~4UZT}+J{C*$q3Oupvvt#A(u*@2!~O*pZ}x z2v961-Uiy!U>|9AXai#M5yW$rhh|0$xDHL=HaZ1T%hV zGlhx1gW$h%K=I;!f~N>aWZJv*d}u!C?eF{`Iz#t&qeIAnp04LIh2#jeu@Xt@hNwe@iLLBFu`f#Ps`srSdfKI8|z`wTm|PZYp(zy)`? z=4nO4F~g}bGt0*c$3r9uZX|U)-o#s|*;?L`GUS=q%t9y-(TuNLGfF5Ld;}1p`=|W5 zFzCp{TeE|O2x@!;_jNPrHM-$zBJ{yO5I6`T+%Gk7MQic)q~YgrbQYJg;X-)b+-3;t zqcE%_M`79^*dM_+svxa(g{-Rpu7jm~L)#u~TtbitiK0rc{K)o2!-}O3EpYspZ0@{Ta7^yU~BS(VsIK|BCLxBvh<>)L!iq04M zz&y09PBY?25(u6vV3;Gr1P+ zCTlHgAo`o=owW!)4Nt+!PS-L+~>Y$AtjK6lA+c!>dI)_MpP?YD{}$G;tq(~i@R!&jN;vTePA>V3|Q(HvcOBtzG@2QPe<4;qwt5w$cZJT!kYsu_Y!ssCosz7n~T{4<- zUht)WQzVDUNU(I&ybX28R%hBU4l~QYf#!iwRrSgqIy~DOk-E2LymA8hf)33K| z2=fM#U8}I_Bev@vv$wIUK3vs-N(R3|505|+Po}lyd>ZDW=NEL=`xJnXh+5k4qjoNR zM{f3qce{GY7q<~8Zg^q@axDP^YQl3v(=!T(Do*ZOW?A&ympvmLLfKUuP!#LdB)<6I z)}>>%U`ujFye)tzX$puj-DJX)NO6KaHK7!ZI#ItaUwYZmm77wQhTL z&U3Kx)OiWb%Hx_!rLK$~$>{2p2@4z7+YRa^aFiLe3@bE@io+?|vqB8rTZ#BhrfW{D z6vX%|-~)!3(*dEJw+^y<(C$Ax@Z=85_4Mdtjq1;Pub!VgKj<&*lW@f1UTi?bWNy-!3Ea=C)VV1acZ_x4U&*dx+h?gjY^s+(d-!Z2|06ckI;I*O3& ziRnXF>`?71L%m^Shy8^HtItn5#k~{y#E?evo?s4BX);70!^0gGaUr%h*Q#ytBSi~6 zVbQ(#oZ5#E+!muQ9=d#Rh80!iPDjJ9^dHzD^ex3?Y-;ichA=0F#$=)p)!J&qA|gz5 z1|B86hXMBbj(rj=KH4W?KJA+wyYwX+sHc$@od)zW*)w^`a?VhlS(6j9uAiU13WyOC)sqbFuvr@ z*mh{N@zDvY{nB`H!s?AHl4DK{VWk7>Mw3dz3PJ4tr9XQX|LAE4=%Th5^CwL!Qa^dF zL7FMC8%L*(1iEpy>&WC0*#?9VwuUT_GQqgKr!nY5D}-vFg!jrxcsfV*B`1bRb=x%} zYbgg9EgZ(ycyJ_Ebl9VH$fOugg&McSUF||Xk8bk)I?9}8Sg?687tm_rGku=$i=g{# zda=rZZ;|)~Gp1U+z-{0ZaFs_tP1kxo15u~h0E|V`Xj7xWGcq!r0wSVij?6S=%e*dj~?B(t&4NIl5V8MuN<34XoFL2j@ik?x5wu&ZB+qxBbYB|{G0BSCV&AbV*4 z!S|VkV6)VysRkxIrGTFk1C|#Upo2b{>9IUYQo>C89p_ULWc!0=SLih*qaEl?muq-R zu=&`u38kSbkF`|C8kkVCoS2IpDIlG}7$Kbs)qz77yStI48R zHy;C$&0rvK9AA$rVz8oxM;`}95}}r42~g|t$_4eI)T$(X+jGF0E<@T~>CphMl>3o` zVKGmKF|Cdff0dd*tr0~Z>oJ}}J=c@d6t!updL*AX?&?=P+5>HArCI|2UMG0JII#BW z`5P}h-Z^uf1gOD$vmN3w-P?X1P4@N!W}iS9H{*!~ zYg-;{ZapAB>dXZWTcD0<7$$O93nJ(}FS~>3>(UY*)888shq3fDHZJ{&`LN};I!#2J zLJ(R(0>}`&&otJmHGwgo6aE)qDAZ1R1kT=L6bH*Gz$P#Ui zhUw;xte~_FK=WKb(WcaJXIJ$5NRbQFGJD!km|R0bu6Xih%%m_$frMI!I^64!7`8CL zMaJ0R^M9j#!tSDyAuczW_f)GgZL9%^bfXhfIo~!X`vxG_Z)}Uu ztJc1WE9mld3@~Qhq{5+4;Ru1owhukF3x%8@YYX=&sjWXEskHY==)AbcYVUt4C*cW& z-np_%0&NDeiV~5jjAKnEStI{JX;33^49$&jM1uUWCN`grA@d8(IfMLwep#b7wV$j4 zXzf799Mj7b#&_eFS2XWov6y>e=J-2zIjdqb5-ih>5aBlRys}tKQAG+ir7rx!M zx`N2V?s-%L;BMV@=f2gv?!Kij8wu+h&C9Wn+TBUxy#+Y(%WLcJF*9@sfwG0;@jXJl zIo#7@a!w3o3?O20ZNTkCc6EM`cN)o@1UW>nIzI?Mho=oZM2rCkGBRrhL49(&fa`Pv zs;uVbAkw1x4U239X#jIW)#PgOH1ks<#0XfQX)Km{Ti@6ry(iLigS4u~c4(NFwsTa~ zRSC*7HohKQujVwk-T}_sbh(eX|Lp_0*|RX{*H;@XyvJ0UH0bbz=D1|uBa!RkNC z9&PTr?8S73^EeP`7jrQN-kN??+Gwv5ZEbU@uxqyvyIQNJ$BV`g+hg}K2rv0jecdP_ z;AjwuB75!7&Lh7|Zs@Bd^AVZh5p%IxT(pr-TZS=QnJ~kg+}h;Hdh4IuHT%fTj&oEi zjNn3SIuX3VI)_yGiQ@ni@sZVgAg_c4vq7PV7am?HN|i^!Ff46A$yq+<69{D>Da73Z z8Xe~MDHMT73K0RSO3*rUaqr8AWwGxUZ1hr`&6u|0_BEw9%Q$N)Mv`=ARg2quVNj)0 zuM39P8Yn399=hRM=&B*B6Xm>XJaDE@hFBJznH%NLz0Oq!JPeBe-o-mrI!%vIMw#DY zqv@;9tr5=YoL7p_`|#e`d4ABFS2yq=W(Q<>21f-<#xcItE08Y$CC(SAJH>C{?OUItrJXU$ISo>M^v*VkFq ztiio!wQ3o5^sd+YUZ#s{SO$p-3nL-OERyN2;Wz#M@B;DqIG)T4o8la>hXtgg`c;fzf9;)H(C8l34v{|7TuY5weDc z3X+IR-KP=F5d!MZ2ZO)gwDG*=gWjLd z4{FeQ)yo}=JM*)0wuFi{%%vkv45r9|;lMW=Az|3Mq=(NX4sT*$BCe2c2wG0iBU6t< z1}XD}=CFXW#;6c2Yr=!8`c=AZ1O3Xh88we0iODCMkZyWD5z#(d1PS_@NwcVXJR~Vf zRJf?U9Y;Z+*h9ooL|cX_lX`fvpDn=F-!WB)dV}wp5VS>t%v9MKuf3%$;@HBG*ZVB* zUR?L#ytt?HgI?Yb0IFD=JDonzvZzqQh`W>R#T3*i%BgIdDYYY%&ar@Rm|w|_yxcaR z)+kJ(j{q_C`6BlpxpvdNvLiKGW`<;k@rUPev_v)%K|i~RZb5<=;KWL-JBqF+Xy`m=H0Fw%_ac#o~3R)zy{g?)2mQ8q2e%a(}Y zGJbFlnYa>|b1dQmGuz#o%CBMOL=DEmyBt#2+Ul;A_KK#f9YnbnN*9y-m*RF9S`!j% z>*j9B)7V9glZDC@if)WHGn?_6gyS5c8B4P~55Lr64-<8hF*I_Ko>>5-?e2~oiInX! z5M?{ia%oOok(>Qm7{ar>YuD^pqxz%Q2YowG=v97DOvTSY&T;e!lH)!n8J^TAXzfcG zWNY$U)6YRd#$ZR-fnw^kW;JIQ)(}gepITu zz{xV;lN-wcz$Y)|r0k6>lv+K6OLR+bWVwYxqGfs=o|y$b>}>knp(onaiNki1?Sf5c zSFk=9AqdjB0TGKsVqBc%{SYFoQT_39>{)tDDY>c4{0HG8T1CDXx*fV;KJj*s8=da- z14uM@D`vih@8Qh1Py9TW1F@rgFSZ*?I(w|Z^cHW(DU1X<0_i%!s(*HNni(y`Rsv4I z0qyoXI}%2vwKNQ>h!*u+wbSVl@Ev>Vwn)`8ql492i-L&{;Q+0PwsWbR7?BJ_jy=;0 z6$yRQ#Q-~FGU#v+k?P`gieIRS@`Jvf7L6s|+Apql8u7l_{pu@T9+v88|CtsezBrg% z60&JIJm}DPhZ#<1$>Y9AYWpg#2ww0xu@BTq+vk`Kjt+$lNws%e&xIXlt5S1}r%JjF zxvfAb)`2SOpx}#o=klEvZ2AhVKS*CQeVDQP%jK?Kd(b3YVM4$<=|J~^@#1|Zja(XW zFA~NW-aXnys&rEFX?^OmJX=8zw1JG$eIH4xvAA9TjPOFgtC~yBOkagUNO%zGyubSxMPt}9!6la z$R5=UCKyvS(pFVNx(!V{j`5Q%7ty(vmi_VtQq|cDSCleA0!WEl33_+q+CaS8u;|Sf zG{RQ{nqJ-@zxI4D6qV&iYNbBxGASG)sNn3L-`cy|A*nJ95xbyNjBXxn#(HV!?$B4g zeb>~i|EtBPCrEt^@g0$SKh~)Jm8-n5!tV8b!Sl-|l?StE{DL$bKI(}^q;*>CjNqF+ zAa0PEW7JVlnhZmd0pkOBV^71>B~W;Lk4aP8h*0mAGEcjJXG8bc?S=a*OWnS13r^)H z*S0w80B_Kca){d(nXGrgG`T5WFCv}wJ5i3vF)`naT2>qiAOlUfxydwli~UgL_H zU(MDc&;07i-d>KeT-Y_0N)B_45Z|i7>N0t%La{x_Se^u%7U57BZ?6ste6jU>#o{_I z?twwyUL%hE+Ucd{q-JKA?-3b%@@rC_$Ta2{dK&SAd6V`dC;2>3$j2&TIp|b`krSu=nOlh0^wE3?V#@F%&4<23A~@| z+V_sz-TA&arhA0pIuv!&c=0dr{)pX)9b_J7WWWAY`F99>prpJT{!gcgMQw-{bGI4@$+&oi|F%%@M~&< zaiM31*M0^PV1XMnI$`w>+?BYYPOOdvx55siY|fE!1*#km#X_^@sk9)UM9g%`xK?FE zVGPrT9VgP!51=7aXxb&uT=9{=C#gWhKEJpb3Z+Z9mA7-t5f$s*k@{>kLZ z)qadSyJX*|6HPzMq8hnTK-?9K9V_<22Ny_!+u8DGb5I7<5u{Mu3{eSKmhw#<-T+k) zz~9t#-Il2VYQ);y-bwmWy7J}Cs%Jan*!sH5Vixz(9@k8Ljz{`ltC8D&S_mk(25)0s z;_sqmU1aUO0uZU>IBcr}A=BMOkB|Wz>by8p$uM$Mr^gbAbtcmscFR!Ypw2x}aNvPI z+&jB6OSc5Q>}dAulkn*52G|zkYRt{Y%wKdRs~o&l^j%It1vZI-VAf7l(0&u_p9aeCU5IOGVSX$pmKXdIw=7HD+X z4iNP&2FWF8VGe?58>>qh6TsrS&Pmw2TzRLFZ|`6HyuQC2dK^D$0tLQ#%2>iV!x{Em z)7jIU7`jk?xF_|PQ!ZrfL!KfBiA_fxw5wYR4pOTR7~__Vy5IaOyrkM}%=A4BHzlu2 zv^CVw5rtA!yhSx9NpKo-l2ORZehwM!*9qCq#_%I8+a|r@k1iqcZH(v&U~$dt2@Qy}=Ztj7X+Oqy z1w(tBpU3A=nQ=>)h4+vSNSFspFj@C0oc3-E(jEyNi<2Kz`(_t-^}$^_N7eX}-9P{h zqqz!an#|I+vF#2Fn{nRjVM9&>Z$|o%6_HvHEej9>k*(=vAvsDIPo6sz(O@u7frkef z!SMrSU_i8?g~J;4YNG?8AV=Dr1+syWg21n*Rt6-St#TTy>qs+c`EDk0tDy!4wHdU6 ziRL96RuLQoF57EM3=@(=#CqP=$x>odh+{;PkG!=eOgAj{{{81?MdCij-o13s2le?u z)8_|0|ClhI9}nmNUoQ9Ta4JFxo05ssM^u8uSZ0S(%UsCi5diZpNn$|gS^2XaB`?j4 zu|hA79*5R(VZf)wK^bx3v{-^5lrQLn(Fx6++rxN3r&3cJpi{I5g-ut)H3{f*?~fpB z2{AueX$fvsn7!gwuhm67rQbgl#~bEuP7CsB_ZSoWsCb;LOmys@}`=Z1sHAm;@_U zNQ~pQZWzOFDn{M zS1GBGRUombfV;_NWz9Ee$vAOaIcQKu7*`AESCZjmjL;Y|)Wnx|bQxndzS;eSa!4tuytkc3p!|r@iFuZs zz@wdJ4%as<&Ow0}@J41g_$S#Wv?+!tRmOo(!*f9g5_Jfn=7iqkB;tn^w`Wve*V0)8&3X!TX=ADWyXPXuMEV%Yu1vTNi(S1tbtBa5WbLx2beM4E z1To{fldJpQPC>Xff>z#v^LU1HAetze9!0`;ZDMy#bz)3Uw$9$%Yu7kDc|2Pwa@eI& zM^YL*l;8`53Jls}@MhgV0^iEK0?1j<@d_aR^a-q_x&9fE}K`Skz!Ff_M!HTm*n73W1zb zDwWsVyNKR=c}?tbjh(9trEa5d^uC7J8yhKhSLSpNrsXuycn{Hw1iES);##=6vrzB< z7X+y=Xt_QmAQd`Zo!PAymVQMN(oV>$b^xT2w8C$p>TE0sdPR9teZ9g8b9TZnonhCp zxF2smKL{)A&SSjqUp64&4F%TDr)%rjC*a6Zi$#V8gS5(gTW*4lQGkY0PeiFtCyPZYPG0>km4YHb4sGk!EaCMYybW_n)beP65j8eguT4sUmrR@Xs-{7 z%+eR1+^{joCdddmnM*cu_aRv7aBg61Sy9rmT~OwsS13LUtQ;Rsfh_&62$Gs_A1$OG zhVl~>QgRo2*y^5!_e9aIW}>Y*4WvOlN#syRd(o>L6X@vGyJ33?HYP3W`en*AZ!TqO zE2n$TN~gB2sLbinF#>45YY1v9n{{FZlB&JrLtUk_EJ_ZIU(&k?+xo4uY!_%O#L4&c!t zmPe~wgwE3igD6wPxIFTYD4ktwYM&BLX3dPh))!y6#~lEk66V z!Uw-P68Ewb+}F={#Y#3Ea=f4^7Yu!o`ynj95`Eq~7WZRhZg#FwJ@(CJEH0$> zIru7D4CtB4J#3_fGR}!);*w*skzg|spR;RULfBX#BWRoi3iBw+MJO!XDch&g3*vmg z&z;hy_P>ij#E|=xw+M0WUn#VI3p{`-zftiZqIu*mn_KghUz|0_TiWsz2 zY?bsq4Fy$+UqqIIsnpb7e(Msv!y7$J22`+2o0K7GIw!_}@n3Lw!^=A-RDF)>KFfP< z4EpwJ6YiJYp!dZXM*m&GRcKy21yto_#L~6=9w2z2 z_%wTcQ2z9OagM}&-?ZSqso(r`|l2f18Jf!p@tR>e}KCc?}WJ*&^l9tX0L%z zpn3p^Wf^M!j8s5!$(q5N1I=If?6L)>V6B)33;T~ISb`S6jAX1pdXz7U8z3eU(L-Kx z9rIwxX&r>es_~GnX@$dRm8f${^f4#_S^&KP_F;9-2oD>^H4XR6%UU4rgnzv20M;7HTGZJ?NgL^;VY()c!DLZMMa zrAHd9g2+t{vbAQZR}yZqwX(daB(uq2n+2!?H39;TRAVR~A&w;@QdujL83ZkWA6U@yZMJ=W{wInHu= zM47eAoZks@BF}6xVsI)F8tz95Hq0$Y=vF%go-|m|Eo^jpj@>gG(v%6$B?kz~Cj?mh z7jmG#vZbz`6{?v|Jm1m}#o_+?z1iHEHV^^t>ej6CvnG40xxb+VaSYs=85`5cVOMYO z<3JO|kLIw_=Do!Knqv|{Gtuo(HKciHy(2qei1oEePf60}&(DufpJMk|qv~^1YsbX^ zt@qw=@r7WwqCty{`Sp)enI}Y_>S2NnX+e(&cfSgeV$TvyIuZKn%!F9FL<*-}^C+qk=-OudduvSj;o<$%0AA)z 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 fzd!$f{`3Cf7 literal 0 HcmV?d00001 diff --git a/html/images/e_menu.png b/html/images/e_menu.png new file mode 100644 index 0000000000000000000000000000000000000000..07d92c9b4c597cb23d535e9921e452b148bed2a0 GIT binary patch literal 10489 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 AoB#j- literal 0 HcmV?d00001 diff --git a/html/images/emareas.png b/html/images/emareas.png new file mode 100644 index 0000000000000000000000000000000000000000..a41c8a6fd7be124126100c480dd3cb9dd924eb13 GIT binary patch literal 13897 zcmb`uXCNKX^EbXqf)IotTJ%eZ-g}A8C3^4O)q5`?qJ#v|u5uGZ@4WyR|NnxH*9pU zr$@JT6>Ko=q@mIPQ2hZHW$^&K7xI$R_tJ8;_42jwumSXSX?1NpJRMwJXn8rfxh!aD zHEn!EXt{Yfd4xHI`Dj@{3bbw(URL(B+#EbFmPt620Du-yl9kr>%i7NlEGz8upWAMn zUlt-`t|n%#Z<~kfJH&FL?Q1wVz|c5KoDwA`=_BbMDZ#Z#LUk68D{`tNJv=b+ur~c>+R=2Rd~~y?S*bc)!q& zp~u!8Ha0F+KKFFIPumuH zelvU~6MYein!mcLRyPxr1O@wdv-5!@WiKun2bG9d|Md*-nAk?_{rHzxyNwG9@yq

%7~C=N}}4Z~74J^d~CPcUKCPeHhRG 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 annouh;2~X$cj*MX03|s!*$Nr+H~$Cr(=^Bc literal 0 HcmV?d00001 diff --git a/html/images/emgroup.png b/html/images/emgroup.png new file mode 100644 index 0000000000000000000000000000000000000000..840335a625c7990b9f8f3eaaaa7204bb243efb7b GIT binary patch literal 13665 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 fJT@}Zr;&GqVa+@Jmzfog&= literal 0 HcmV?d00001 diff --git a/html/images/fegroup.png b/html/images/fegroup.png new file mode 100644 index 0000000000000000000000000000000000000000..eeb1d07c3a6cfe22d117b79dc34b6a007c6052e5 GIT binary patch literal 13201 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 literal 0 HcmV?d00001 diff --git a/html/images/filefind.png b/html/images/filefind.png new file mode 100644 index 0000000000000000000000000000000000000000..48d5e50ff3d7779c73d014ba8ae99356821b87df GIT binary patch literal 11080 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

e7sxUu?| zRkub-zIA0jq%!9XHQ;{~6yT7w!TTDBiq)CkLgiAq$J7u698E$+L~lgBtWgGty=baK zFmgbf=l>ZUgT$1CC3jmG05sivEc=(vocvkqJj1%bI+j$w{49grjXMh^RpOA`9B|N! zWJywf4)>k+EKI}~ZKYL2tW^6)$YnxTdLL>oSXHF7t}V@}*t{$_9M>025h_}|pRPrq z<08=J>WT2gN#8et>0?wcC%68r<^_}+eIp%XtD)Udvb6OnQ2$!E5s@~2agVe(E!rxE zDx0nUG3$|`;f~7)$B@dybx7GP4K9u7J4aV8L6!sHGWSo)pl0OrQ7>{@wJJIb&$mnL z8@rYEr`K+0@$-596^mKX>pZVhAr`~F0Jyw^UyNfqo;&HH7#!b5|7bp6 zW;13L^R1kPhvfMHMqGMXDeK~-qqj}E5zq8R(Doe*)x952AGk?cRGTc5|Js5ePRpuG zz>zl9;fnZ!6Y8J7?*<$wWlAHHj|qG%_^e+$=y{v4y9^5QK4k-nzht~&(FEF8y<+=Y zs2|fO*FYx?f;%Nz3dU~Vrh3v)>JvUsQ;k=-oB&i!ze&S0P+er@P#g5delFGmDl5<{`}jI11p&;p(}x0j|BaT`Q|?rbClX4z7WkqCtJah_+t8k)5QO}L*#H9cAFKP{rB76$i(72q-Zgrq zcdSI>qIh&S;>&ddzvS4PSmh8w;0@z{0D1=$O-8J<{Og;%MJ&GDH?#j&Sb6`i-QfRz zu&jTHkH7#Z^=%^yt>C$jiS3>5M5T#5PMG`62k2a*=PY_=hZ+D<)NWh*Ma+Z~TRxKr s41;8iDz7O_D~WxtlztjIYLsZQE3^z(t2%^^i9>*fnyxBL`T6Vr0!d$)PXGV_ literal 0 HcmV?d00001 diff --git a/html/images/files.png b/html/images/files.png new file mode 100644 index 0000000000000000000000000000000000000000..1effd19c4e9d7415a04568e81ff2f33467cc4fd7 GIT binary patch literal 14793 zcmdseWmFtN*X9tCKp;Ty-~@uZYmnehaCdii3oyamVSwQ7I%tC1;I5hA?lS03-gkfO z-#zEsKYQk!p6Ti8>Z)5;p8M482xUbnG!#M<004j{BQ3510KAd|01!NoU%~%5pOI^a zf4#O8RS*RL>f%rzjo-k}+1(_x+*BPc+&qn4%mG>&?)D~* zlGa`f5)M}6juzzXtgKw{4;w2n$0Pti4v-NSRr3NJuX)E)4eHaJ8ESMc)YN3;F>`c)Et^b5kD*IE2!U}DUIy^c#HD#A!@g1D%E^kzjMsMGfS zz*}PO=HJqb0~bN|F^t-&W+Vl^=#Z%y&s%|VmzUC<%*^siKkbwZ_s&xqYH9;bP4k_K zk#R$F4GmmZt*}?ouQo*z`7jj9NV<|ZXB$%>I^b)Y}nX=xm}I@ zIZu1LJO4Dp(6xKGZ1(gf>SvRBax?FB080T2gZ>)%h!CXGHxawr!#I{|mYd2xQW7 zv*>?$EFc=h|Dr0v=OlAT%7b9;s`_z7Y=Ck2tY)Y>%viqz?}8&meA`dTIvezMLh4dV7Exhin zPz!1rY`N>&Ska=+_a!|g4UiPhq9YefT`L`|?BoCH2@Bqi=pmOIr*45*JG*-1TyO znvt_+&*~}7v1Tm%)R{Cx;_>3z$s*V`{$UGXvlok4rOT|ENqqjt`80 z>|z^d70kvx?}3!Fap;?K`T%lO>^g=2cq9BlADrSHAox1D9wwXia{gp{+U7svzK0)R zWCPVac^Gi?3uO3MbLDprSEONYvWMpP4l8rnYwXar>ch5dwjJ2&EnK^AVL1`M=hvRD z4R*I|7{GDG1B(#fK_A5XWsc4qpq!&>yJ5h6{es_SmSLOO?l^;oz4x6fnOA?-3r99t zfd9!Ejb}?*Tz!S3;F8EdL0VEx{1+N}6{a6>b6kKi<;Aq25qr^S%#Msvf! zMb{LX&I_3B$pET{vF+4GDEc05wI1?zow`y?>>^GaUJK@8_$h)eVZf#n$qFuR10W=h z#Rr4rkgTKQ>7Hm{3-_r4AkgMM?aC0mWHWm!LKuNS`y8kHtNDhWZK8a7tKL2agC&(i|MRb zGQm{CShs)dOJ5J`RC2>GSf|c6Y%{$*tqkyJIK9r^3^Dth?w)43dYvk8>>c3rkSVs+ zHmWtX}GM%DbK8HU?XJ+VJqzrn%dNM-#(a(aJ5_EO*Okr@7n z^xVY64FewmN6r_8_g^Z9hocPAnay4zFPAl1U8iD&o>s#+#nfcYbZKR@HeYVWH@w;QKa1QlgKW>Gd%5Iyz7L1== z4Ih%^JdX3`U?erqZ|0Y%C+=G|1RtVu1@Qw;{4Z8dyUd9seAK2Uy01-F0`^t2L>UNS z!P}>Shjy)sSFSqqqLNd%!TE2u_t9Q6%#N0sJ6hy7`7V3k6y;2?D!)^vp&4g%{(HC< zu;TuZv+IL?3GPjw;M)aZlfCcg+HKOw#LQ1vtZnR`xxhW59^1HiT=)`ku8Jt&Q)bkju z_UDnkk3D_v17mdgbB7zd2}MgR1TN%`(+GFJR5f(_o>PmW{F|{G33PW7X+wxe;gd8g z<8ZsMGqX+)`8W{Oc5Ah5g3q47veO{0$$yLop){c(s-kQ67Ks!S?XBORdvsGFQ;=)! zGnM03B)N{TZ}dFLUH(W!L{rl;MTVtudcXK672qR~9mje47-(6L6`I?- zh>h!zsAqVQ5uVQ{sfxV04WFm)!r)FXR=|~|M<3pNzfar)XqoxY!?$u%fSH0=#2%z; zaLIS;cXHRY3wOF+(R|`Un9e7#oZW|<3IB1p5u*)kVt#J({*Y_pAXIyM7$;a#58m~) z#MAT~mj`zHpU?J`xsE2TMp$h=c3M{%<>b|7HFYc>UUzDYUi-c5n_AwUu32o9YNXW8Z?gUzpzHy}PEBTvo zEc?S}`#M+ndHk3RwvS3#1Vw48HDCRdk3a71KjHdi!aUvXl`_%j=wTK{_V(7pmN$rP zoM1Cc^(KOsjY87S*xP>+T8E6aCK&T~NAzTB109kb-nL7|L~+<#)zlpLuy+nVtR~No zF?a!{;W2M?E?o;W)lMIy=?yv)-;6~xT#g=cAhM(m)x9}|qoC0iFa`;aca5jKBlPZ` z=VhY2!SvSlS>bjyD#{S1u&_a%zg^Rr+j+vXG9wVG>wjSBsa&{wb?)g9I7()KBiwT* zB`$o9WEp&2aM<@lq(HdXAH8E6W8xV$aV&2^xI(Yf^Ygt1&Cy35fqmZS9O2z-q*ao$ zJ`xsyvOX%q;aFbkA#bc$wBI-Z+W;TNkEV}&u`?7V=uDNBaT5cS(r%Z#hB{U)dIKLR zQMgYrI$-_k8@KA*G?MKtN>YKo{WKw!HXubIo;aEuXBmuQ@)gdzGv?G^9KTk2$`WC*F{rJWlTa>CJsv9TyOG zyH_9+y3EMk80HI{37hb{(ND88P)ECw{9qU0aXGlSIhYTZORNQ9p^~^GAqd?idS{yG z%nA52v^d8@Bl;X~MPQR%axnLCe(Q*I!m>jHN?_E-R8@&xGOjgx3&U-1dAHzwwU6Cr zZEfDU-A@@F15p}d5r{s{$)?WNtzKeS0)=x^`14ZackP*I+uoROcW&!gqb!_}7;4}8q3Tkk8^ zD@{+oKWcY;AM~+w`BD|_xbg&qoamcfS_K#B^+bJzagWh>Vq5gvcF$ve|2$0)AP<95 zVF9k|8ke`lP3;%tgn5pmn|OESD%Pq5NkyX_1O6UiZHo8x+PWk{=v=%@=M+wRF{ie2 z4u!AM0@ujiuiqUIkt{$#f)l$;HZ7nSQvZ{#Q@^_z!^3N&sxp$T*g-7sz5eIk!3Ulr z>+W;kftRi4>&DZJEZ-yBnnj=cQ3g%Vo0lO8&o_Fv^GQ-Kdq~xw8$m~l{n?GqJHU!7 zD;Q?`yi3O~EG2xeeOD3mccf=-D-k@axl%+H*#Fw}YCnv-lndH$^NW%?vlbCB*Vxf4 zD&AMN=92rxdEQ-b(D-}mVRX}KQ;b2&!Y+uV#@>rGj_Y}V=hlDxBby0&Nq-6&Y)5?d z*l@4cS#}>jx5egB>YB&rm-Di~yMquZ$H4w)`09FY7YXDDc%LMcD6RUwY#Kh__hM(C zSNR&8IIL}gNrV%IzQlPtwpBjGf`{SgzN?YkYtKADj-{jg=}!oY&k362^^=!8Z}YA~ z)Kks+)dfRpS{l-X&{a{t{y1k&hhDtleZta`%x=!9!)o9LK8^1# z*W_T>%g12-18 z#FYG=PRZ_8uGfE@CTyOug(*ZgwTvHu7M)>R)fH>Q*`%I{N*J)70-}}^+wPr%amNnl z!|sQu{*)BlYkkJuT)(sD>)#jKj-;-{C;c^-eA)Zme7=yR60()W#XWe0dvW*p<6d0< zHX_$=dwgMo^@RT_E6{&FV^y(=E^c|1W(h`*d?FwLmukey1TwDVEz zs*J2RL6)nSd_4?bGVRkyPnmK_D_LM6)iVc;)XlN>;KGLE`uQzJ&t+@6$MKCSyIdEC z)tTo%E6q;__#m2G;VP9AX!Tv5dp=&mhSENv;;C=s&6EZOg;YJ^#~vNiQ~#$N@{Xsd zxN#PtOGw1Arn2ueOV@PLz(goL`#f_7v;QVu1JD)`LwcU6T z@r4UP$+7&&UbI3>i~b2l+v;ulCVy2d2RF2lf7SVmVzNt~xpm0P!EWmFVVnc_`l3!u znCl^>gj)EqX>K<2U|xem?|E1ANv1 zK_f2I%?iiu-X^zAVj8w_0@y2wn1!nlN>{os6cjnF$yCx6Tsw^eSW&P^`(4dFVZVzj zmglo(0msb8Jj86Wjy6{Z`xUXld(x6YMTd3zmU%HsEe=fw$K&O{N6UZpIvcp=O`@mp z$yV+hbG@BmK%~KD{pC!MaTWKj5ESAE;OZl8=`=6-J2FhGe6n+%K~0aTICHx0dyjn^ z*Xi$Y2zlUNIC6M7<07HBFIjL4AKINApkz5HK27KiXLI@J|D4b?A=Kfq(P?O<0P$$n zpU+HpUfvWJUln^n1E9=Djd4Q7#cx=KeB~k4&HqR;IIS?dV1#lM1@1F zzt3_kAOV9&BK=O>MbgAozX|socDvlQT2U#8@Ht`JJ;=An&^P!Ql3RWGDQYG zx0eS4eHCLk*)!I9e9{ZG?3j5Cr$oxQ{8B#I+^n+$09K{Pb-7bvh=3rA>Em8!q0vR~ zVjO5fav`ERo^E?}1ux02_>@$ilrg%BjxL2&;W`?{;_(+<0Ojzr8l%d7JF_sUusaoZ zH#pupx?VhKPDU!-j#0FK8YQaGKoJ4~ZZ{_Qy5yaGz<^NcxmuyU6D~1V8(SDlPI!gr z-&(6L-3+!?@YbG=v=RKh=!v1bxP|@>??-oHyj^wTHwE)2$>A?$t=I>hhl`KEX7YP& zsmdZbZa>LHNV3-=iqwi8^ea&oYM?Epr%dMWudq*e8gEn3sIu^HxHw4A-`p=i4@xXb zcHLF)PhxHsZSYFzhm^${WN13J$C*7l;_Mx2KoZlZOAC=1$TW^pTZmQ{(DvFUS#Dj) zA7WwXq!xtBvMAgbk%aF}50C)HDB2uYCrTsrV$%axiDJR`0@^^cmeM}(G-3mjaXYa9 zL5W_B{_@V0-rdbCC-7Y5OE^jrQ)S)!`x^^^d8!|!#M)_^I#C=7!NuJ7lw~pH61uyq zy`G6Zp}Fv9jm#v6`+Led+JtbayI@uq=Omca4PQBxc4jk9FyHQ^G6T{ER)du2jY}J3 zz1SGR%FfD)mY2kCKHoB>8m`dwpl?{Qp`p&S1TC~v>$udmvtwy4E_r|5DN`be$7-&iSBU^4T-c~ z8BoOevGb})Q)DGOWho%&dG>8T0dd_?B##dXFa2{sYvU;Efqn*m4WOmO5F`Pz zenCDfftM3fNl>P|u{w~+&5b|qUZ3#I{AEtC#GWvoNIC~*MoTx>6g<76GwsnbMgN8VkJ=o!o(n&TpeAf|U{-r`*jH!`J5@z% z@d#GRtc#y#wu$8kt?J0Z_AIQpN58~Cdf26(zd&m|Q-*s_Oqij#xZc}s9Oy@q0zAk% zEQvP_TU^(B=|Yw5#Zsam z#H8TL0RaNx@K=ByqeNy^?B?jv3igS~(SpX4QY$0G{NfEu&oNkixeQVq$e8UkrZa~! zv3~GC7t|jA4&#Pek8lt!`&E?iaTeq)0kgJ*_PDCJ;r-Xq-}BMEcOSO0{D}Pp!yw72 zr|{g2gNii!_s2C^%gaViD!Nh}85+2m%ENFG*m?*P_uDNo`DnmKQ+eR`}d`EkyKxbAmI#rX;zciQZsR0Mmd z-16wZsa(kjX|@HHwaQ8AhK>vx3d9ZT@R; z*&IGeMP)9^iCMN#ydW2|Ke=3{lYff8dGi@-^zgS4Kb|lumLc2*dxzqa@7To!xvk^t zr3=UYJ$$(-nIMAK+~qx5<_;Ne?}q|bvgz;}I25iLCYL0deIxs?#8EXHz{y_+YAVd_ zskp={oi6>XHS%sXoYHY(uT;E6t5Zq1C>iyeBFkNntgM#G^}JB?v1McnU$(ZRs)^pj zL^&CYw6gLAs(f=>N1$swnhG{YK}>WkG#KC8C8wuBO==IdUg~G3*k_x5%mk0p4bvL( zxh~M+PE~6)My2A!D*X^nRl00TaJu{>m0}$*h1QE_*s4s?*5!Ap#c#*C&SYc?i8g^U zrGF+ca6wH)LhU7>N;S#*e(2P*Bja4&SxcAJ;%SZA`wn%OjiJBKw4&caq|m+;D`wVF zaHy^RJbLz4X_*>4TBdzR+&?7su{0lbMo2f!ZZa%DLteq$HAPOlXZt`(*3}h)!|qQ9 zf!H6>LS1G8sja`uwh9uyN~$1;@TQ7Wu`!U28ff;TqfKQ}z?FQ1Ad44cZ`L*SdPt!g zqXZ72gh*+2TP+po%`ZW8w4ZY_k0x<{&hJEymhY$!?c{z^Q~e%D@>O=O@*Rf)JYFY$ zfC2zNGyZ3f?>jbi!*c_T`7qg&-zVYju)8UEm(B8E;0;WFn+O;8rE3N| zD!v7LB+;PIYuw)jjf!cyCFO2Y{Ofv5|IqK`Y zjW$i5=sHU=EX?j$Ejx50TWoJeDmqmhD-*?@cTFhSJKEEZSKShSBLf4G~0A;7v`VoyWtT zYm%MV{42?ifCzMBoP_yXs2tlVsTRs_RSB}=h^O?KqN%2UzenokdT_REsT)R_GQQQT zC30;Kqi9Aw%RbqbpYj7rYoaJXvROr6w#@P_PFE;D|tMG{;wRbLU-gvA1Q^ShF8tRq8 zB|=In2?>Xml94#YlpsD60Z%|Fxh))nnqycJNd`9hi0Rt7u?tzT-uUYlDHD>n}28s8#aVbj~ zhkvDc56E|De{lM+P~CkvDN&I8Mn9}#%bdOxe|QZY0Qjy0DS90)^5r!E%zp0_Z)93p zRSRuz!|9qAcnxr=oe$&qvO*DX?O>Hjkjtc^3J%+^j6J2oW-;Prlfugw(OwKMm6hyq zpOp)r(*KC*v7@3B$xQj7j*$GQORZzjFwNzah(jy7rVtU$Y>_9gTRpQ&SYPT#aOZ?H zKi?k=Z1Mp`vg)CAbr)XFV~viz8v50jD1#o%^$w68t)qJHMlsrm1U|K^l5YCuVV`V% zV)0fxYKf}N`Zo2Fgmuw~&RrwKojtM|q;Xd{_x2~k(JizRodzXLY-T+%(+^ej4KmSQ zEnDQt@#5EEH}B!EZC=XEsl}|GG6~c9a#xy(F6D)E+N!jke84g)F>4p&`JRfStvrIV z4-U+H!~lqD#jXlUu3COI;isyR^z}{H;k3_u5h#;0j#>m!>!dg1nEqW-54K8lBzM%* zb`KjTZP0j*l0YVavd4m~Iw(N|!t*v6BFXbrSi!gn)FH& z1MA+718W;nY8gJvMI)R)Yj77hDeqM*W9{a{dT(npo%{T=L79V+=u8ShS=6fq?yWeJ zvW4_qZo;023eVGU)yQl1#)7vVQNK=z+y^lO0N}4Va@ICo0c;bi^ao7>b zfKdtroNVEEqB#21U;Nwo+N+*Sl@TcbfPnH}Er4!6kbr=2Li|*mncE8$@N)>h99Noi zeHV~r$I*M~WSzC$G-7)^bkVe~+Iiq$&noJ>U$0j&(wJ{@_yjbcM-H;B))O=qzhZSR zRR?ePeQiKRh_1cS8_{vMVoucXLft?PaRdNv7IWn?3O5MozXYRnf3<_w)@BC z3rFhZUIUtpkKuWV%n$w>`hZbG~O3T@+dl3MD#V}8J zkP+d)z0i}TWFJ>6q?Ed_B(bYV3MM4|WQhE2Dm#Sa4Z!+HIIW%$oI4)go87O@BHC0d#?bW=Q=Q? zxF77jT13?G6Q$pbMgYP1SV8YR?wug5ui(Q_bN>VdA}San8-+Fr>2Z?IGW>xL7XXMc zvSi*~T?Gavhoe~th-s^GBnqrEDVIAf0F&rPnK1!s-=GUnmu_8=XTtA`Jx(%5I+?O3 z|5QnYaxrkwvod1hR+7kAC2>0uo{4Ib70nLO+VfD9qv5VeEb0T|Ew13bX`OJjT_FP| z#km4o0QtxOK;f@;c((F0qjC)czhGl2(Qsa+qq(F@XUKwwjT<6f?_?%n2{O5%1DKiE zGn@MlVw^i50D>e-VeYNU{)qI_5+Psm5Rm}dI2ZERD^RJspIcfd)}BLXz<&~)O=^08 zq7dx0$ER(5GX5P`7bag`_yaBiF}pK7fJg$|0QNmQBtjHod*Bw6qOEndg zV8M&8WPDMN<%CaeG~XA|_bq^(pwkl-$3nb|8X%(1wVgo?w^;n%|H{hl1`Y$39xdYo zf`=jM)5(?bEz(m2R8tcGz<<{Cu97h%t)Pb!BB=nu`s+gk5TRPy?_Fx$6u2R;UKK@0 zcn2`z)bec+G0sm=x(lt^vbPZn0r_3#(Uo>Oksr^uERwh+0^y}P#+Tsa$n#&k!;~-T z{DIb4sAAT|tGME1ZdiTYwHw5`r8(4qUsm<70Nxa@_=vwlg++%pcz@j(eTFqrJ%mh% z073aZxz_oV_PB^(sr=C?c1P!1sg%%;OV zQMUr-&8cCLRp;it-n398K|?ZthN(@(2CBG-Hl`mnA{k#sv3UbSt=Ta-|2#`7My zLI|Rh81TU@6K;Vsu<`FBFFJPJWblY7IcM)lhW>Z?+LNT`zrs6%>kq(+x` zeFF(;xf^{U9Pzz*qGld3?%1p^{Z9f}u=hKZZ!4CWLu9aAZdvkG!N=oC3$-tlKn~sx zU6GWfGwM%%8m;$;eYk^7(+7#HEFC5J09?U0X_^?aV0n(KZTf=2o%T1S@#uQ&Amq3< zzeUj^P$a=VX6)Np&+uQ&4N4dv40crm7p;p&;%`Q13UJ}McJyCgBe4pTi@`?7wrylc2B+6n{5euaxy>GyQZ!=T0lmoV)6J}H~Pa`NKbc2(tJ`8+nufiXdC;?F>b2t1TK|c%r4T8+&Nr(dWi5aInesX|C_U8;+1DniJIq%uJ;CH)3nrBfs zqsw}-FjnV;&?PF{kbpAzz#69$k-Ja)eXq+HNn}F?Th8PJO66cwS@rT^N*n`2msqjI z13ze`e5oy={;jJGh_gs(KwI=RL2qMW&x9Ru7ISq<5KbDms)L$1OY=-EKJUjeqbbpx zt)9HBQPf;{Zre;7fX85Ww>oma^lt);j)mv zSI?&W$ROj6qEWur{$`{Voo9Ko$B2afqn3I$$`9+LUac;;3Ytv5|1MgpsB--ueH7`_ zf#dHDaP4^O^D0dfBuRDI>4rS1+0>P|W@{S-h7F((w8cC~#Di595fAEX{dQ?FnoB>Q zIE2;m2rNJuzi?B-eo}tKv`(9JHPl(i;6znOoY#7nTU@O8yqMY6WYp1&;ajmQ&^7fp z8YiTa2e-+_=U1fFT>aGY&o>N_O}D+)IS6!EIf1~JFyOmDBBneuV>j2EE47(R2W*0CM@V86pkBt4;jrBrUtq&#?gkG@Ya zU6QvWp$d*!aN1FPwJ&G2{9TV-&$jxOXbRCYt+QbG_zd7 zCd&((Pw|FCFO4ku!zikRKSC8Hd)*TD41Le-RgK+chz=4HbwXPjZC!e(sL=D&We8m9 zu9b{{VNCN|+q5ATEKJ()J#%YbPx8kPolxsS2t@x*if&?nDf+w)A%%({k9qj>O41&g zct?R@_SQQ)Eai1hK)mc{u5q?Tc4S!<)G{ zD-q2KgC#g*nbm5zzlt5I*a15>klkfuT7AXpC@J1M7VEHnGB%fvQn!Z0ngNe&^y~@m z9KKHpS$?Nh3tH5)`o&|DctDIki;W3)XM|PWxRu@;rSs*kyo_!OgvAl3c)yH)w26_t zl_;fG`7h>E{j$Mi#JY6xxug*a_j1p(aq=mmT728C1!^vIjvcgB&raJV9#r_T%Gt@p zt*acenGb3SKG&`XFb9N>Tmuu1CQ8$?x>~zZRL<~r{l#%}74K%K_?-B$dGgguMQuEN zW#CVkBwx(!)sDgIky)hl#>dRrbWcD56$Eu<3eRkXN5EY~QcRUK9VI4|d|Dd&L`+pI z*c$GqiZf2Z-1Kvji%HTes~={W^RGI~g{9*=;+U$yAJ9o@Qwx6$l*g8A-t4Ln3gY8E zm(d)C71n)lNEwr8Ek2JH4-Jt%$cp;_`SiQ74M#WKW5uyJTCF_he#aL)l@UZ&GBBS zu7gLo*1y9nm=#FNdA6A&$g*jINw~~7u~fxW(sb@Wm!ahzF=@u;?g<6GQ+(9mpLL1! zX3Xa2Za%)lIljfw?Dps|9F5^UD6&nE+otc;R8uv zTu4OD9JO9)J=j8$VD64!{id%tA0m@`Qls^|ewd{ zbO9_PGs&7Lk~fIM6;hMbzo9kJe-kw;o!Iu8?z2)5s->Fb3rPLB5lCa!6Fs}Yd1>!D z69AfvHzWG?tssn!8&lJZS}j}5?wB8R7A;_p<)JYQk*g8&?#8UPMW?Be1JBrj7C>hxa5Nr2Kw34n)T& zrD_r~N))$7cHi>9eD#h|H*DbLpAa7TtlBRAS?FX~QbtR7hF)v?FwyyDgGo7POIzil zv?5L-nZH@N-xxG94Ra;o$4c4c!xsxNiN$2SzAIOF;y(Kftu5Kfr224T9MZ1e$zDj} znL=tj&zUk;jVRR=D6E(1$5kI4|AUCtW!mvR={U;7L)&#K!Q2(nrWPlB-1cE0FHeet za5$Qw)_;aim%RehpO+761(?lF5MEd$s5>T{-pk8d_S_uv_!GJrW6iJ^jus*3GCTT3 z6{(tEsyWY}H&3#K#VAM-jbJ#6_;JUcH11-3sHLsUn?`R8EPRBrWKrI5^IVgl(T2sK>s^dDucnB)py2A}VJ^I~W%0&IL{%ta2}FtLSVqQQ zCflu?ue!IPcNGSq49hs^xDWIE(l^@7zb5CL%=1cir$@|Jt0EAFH0h)r8IDzKW_ZF$ zH7geKay$}}Ysr#jSG3HU`?+^qpWAh=p@0Jk-h&hmw&K4K+XnT(WG$_3eX zAW#uv>gjuaTjMJf!$BWaA((k|&q%zki)>q2@}~;oG)-4aGmL|1>AF)qX%7fLVW*Xd^MYf$gf)oUzBX?%@6UY0fEQ%O~>5CC<453%m< zps;uC{~^%|u4OK3ard#&`wh>OTZyU46rtbgH^St`=R$qhTvmS*cIf_U)WPraMiC%} zu}>dXi^80S4hl3}>7u?Lpf=~l#*hCmMu2p446uc*7zs2*BO=~~jo zCq8YVN&#z`m-f6-ZKaEWJyP_8^Nq@BwA1C16-am*HlJ{63c<;lJX_QPx?)J5ftxys z0)9!>)GIZMSlIc2xT23yPi3K~F=m>kPz3gm>!DoY&UrqWW<|{J1kkj!%7DrpaH{eB z$qmmU{(Dtb8I7*5>z5~sNW(V9pkA`~Q?Ot04}9oSv3hs-^WQ(Gl*l2M@D68G%S{Q7 zoh2iqGBkaV{U%9PT{%jB?OiN#p%k1=HZAT&+183eC7@0pdWdQpUfW<*ixeRj4VcG) zQ}0-oXtO1Bm?vhh`PzT1$9&Mulf86Yg1ti@CabHZK+VJXC-Q*)eCdIP2IXh+90}pt zAt$Orb}vQ~XT`hZb^ckZpeeOK?QcS>#N0?A`!rMEDEkN9EoC{Z$KjPLy|FrXrprB; ziThSN)p9+Q>HGY8yat4w%_VRwI!gtBlMp|hmD2!{TJYp2B|}d8dlbRshf+C!h&Zm# zAP)c#^etuoACL19C`1frX0Y#_{^`LU{4WuXJPafN022ED`-R!a=bwvVV)2NdjBj)5 zytiLBXEDGzmj6gXxoN+bM8Jcw+3a+^^Wu7&VOBc!bh@wx0}wwUfmvM-WeTEhXADmR zC`+ZwEy-ITPOo?RCiz8*EymxRh`{%EY@hXHjYUQXi-M=X zK|TyMWT^JyGkyZEp=bb`5=H-3Ee1wMr`{#J-!^r__Ev(r~Fwl-#l@oyhtf9Dsx%6>cp4Vf?2qw2D)9G+m}WyG7_Emwo8FRLJ3BfQNwM_|VIY`Xv+RpfN+pI25O-Qq zvT3mwVD0wc1SJzW<5BjzHE}Bh@<3+ukrZ7x8NB>@d(_I+;7jZ^*iv1u=r~o0RKC$! z8t@Jw^B^BNjj}^xux7dq|DxNezpj1{3pONkx3Xv>=KFaHI6QH2f$AzlO*KX<#cXXT zn$0TUP2duzF7)d!+0_D$3cO~ag`^F74#^l4MF~y`F<6HCPG9^ z*Z8`w-s*LXgsRNQ1*d5l!9MOg`1W$=RUWtTgYJ0+%Txvn)RHnx3y!}MydmAOC>F1k zwcFs_Ed9z5x7Om=QkG64h$f?Krg*)#x~UNX3!rSa!w+(Llzoz~t#uu6QBq{^veDCs zAL2nS%P!NX?%A)O+K}{3E%qpTX4JTL(Wni0Wd$#*k{IMM35+}lOaeC5Zs#Ct9&@f9 zbs`lM56Mpi=S=klS+ox?(RkaT7%nHHOBAvBxl?~qu3A{dj*toS3OsoGZODrKj+Qx>M z6$7IHP%?NiZ^LP~fLr0fH<(X1VJ|rFBqFJv+LcGB13`pxf4oRuXq4cHo(fcGzFfFC zUwHZoARhXkd_omUvhhFcSt5NX(0s-Z}TL1t6 literal 0 HcmV?d00001 diff --git a/html/images/go_to.png b/html/images/go_to.png new file mode 100644 index 0000000000000000000000000000000000000000..bf9ea1dbff88df24acc23fe0791c5f09d9926f65 GIT binary patch literal 1064 zcmW-fUuf556voe5i!nAAQC*1QCK%MYFz6p7l-6%-Yis;kJB&bLm4lfV7Ijf%cvy)W zMNolQ7iO>vITu1m-jp^XV;~H%4n#)KjRZj`&Tb-4pWpX|@ArMrd*1gs&v~AAxji*H z(6_lyLbi{#l@W^zs_ov@!RUk+BFjiktCyH zDy|YLsZuIpVkT}9CTUWHF5!|c1yqQIcu0g~NHr*y;wh1mDV1U+UJ@l)6aWkWE^&&C ziJGaoTBxO3Df!NDvoK4uYRVJ4TeziLHEc+GScGL*HRL$$X_1y`)o|sqmql5YRRaWB z*uhBDP2JT)J=IGgMNNu;3Jmu;CBr@43&E&O5FX(fUX28>Asy+NUX3D<<8+i~c{Ku| z9G6iDNsvJ_Ov5!oBQ;7p3eqd+bOU|(A}A~4_%b2q{=lhB{p3EXn%!+R2kE&V624Ni`EQE5@O>@7u$E@0-(8&o>+7e}C`X3+#2h zJTcmmrJk*01mBOh_RPHX>ye*!-Sxvzue2}!`QO2b`P-JZy+3qeeeK(Odb)3Jo|_$Q z-9EeffZsp-+`?yf-g~0G|H17;J*!JTcKzAbzT+RBy1wt>IQQz7KMo%_wY;|L>B+Mb ze+}GNS?K?G>+HxEgU2VXe6=zB-LaV+^Iw0o>F)J~ZL<6EAFJ!q)yEcRr(gf(*5H?U zB|3Aa^Q@oBqE@P6ny9>KmV#jMBC(hHwF{I*F>$!`Z2Mjn^F03g~ z5pK~-xXrrdoqe#WcuU>Y^~V>^$-TBke{V%h*qi+&+OKkF2Y61NP<)Zm@rdr>d2u2w zCui)ttoZQYmBX_uPOR)c*0n<_CwRqX3-eFs#V3TxDcpIXlL@pbti&~ zAtWQSSRt{fL;*-;<|&k9q$(7YCgo%%E2QM-CT8a8DR`%r0VO<2(=$?wbriBeybOob p%o07I5jqONsRbpexk;%-3Wk=Jre)vW&jH%N;OXk;vd$@?2>|l@a)$r_ literal 0 HcmV?d00001 diff --git a/html/images/hatch.png b/html/images/hatch.png new file mode 100644 index 0000000000000000000000000000000000000000..1fe082abf59af68dd92be0afa1dcbfcec300848b GIT binary patch literal 4866 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 bp6}m!?!n({fBx_n=*j4&vCgG0#;5-W8kGXl literal 0 HcmV?d00001 diff --git a/html/images/magic.png b/html/images/magic.png new file mode 100644 index 0000000000000000000000000000000000000000..49ba8ad8e9ba9eb9f6004813b61107e73c377a9e GIT binary patch literal 4435 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 C6$YjN literal 0 HcmV?d00001 diff --git a/html/images/mbmon1-tn.png b/html/images/mbmon1-tn.png new file mode 100644 index 0000000000000000000000000000000000000000..79e1715c3565430840a54f528259ec332fe9d5fd GIT binary patch literal 8866 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 literal 0 HcmV?d00001 diff --git a/html/images/mbmon1.png b/html/images/mbmon1.png new file mode 100644 index 0000000000000000000000000000000000000000..a87b9c2d8db85a0989a3f928582fadea4b2b1a69 GIT binary patch literal 8898 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 Te(fQ32r$qyy;FVb;miL4c$X+6 literal 0 HcmV?d00001 diff --git a/html/images/mbmon2-tn.png b/html/images/mbmon2-tn.png new file mode 100644 index 0000000000000000000000000000000000000000..f2051bf3e7c0dfbc04955ffa5e1a748bae1a04d8 GIT binary patch literal 9820 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 Ko|Znge)S*ANKpg; literal 0 HcmV?d00001 diff --git a/html/images/mbse.png b/html/images/mbse.png new file mode 100644 index 0000000000000000000000000000000000000000..e6c22c44593b5fda19cdc649d310f855ed9a21b5 GIT binary patch literal 73043 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 TW>%`!00000NkvXXu0mjfLrLm* literal 0 HcmV?d00001 diff --git a/html/images/mbsebbs.png b/html/images/mbsebbs.png new file mode 100644 index 0000000000000000000000000000000000000000..83bc0a3e5fa7dd2ba147c29bb9098ab9db2e0806 GIT binary patch literal 279940 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 O4?P_t?Q%_r@c##?EALhS literal 0 HcmV?d00001 diff --git a/html/images/mbsetup0.png b/html/images/mbsetup0.png new file mode 100644 index 0000000000000000000000000000000000000000..3a660546ecf055f176e5ded3440fe12ebfee7b51 GIT binary patch literal 8202 zcmd6M2UinawCIokMiC3e&_Q|tK|)8wAVrXXN^e0*0)#FgQp69G-aCXYLXh5-9uz47 z0%$<0C<38K7e$KX=6mBQVB$5DNWMpJ~e0+L(dTwrRetv#wX=!p6^^pP07|xSj?%~D^ zg(4sj;KT&j-llN_5C}ZH`9%-=mpDU=?u3QJC!gqjj z4}cj8ARu(zHo)vQ0Hp#D0&AElg3lw;| zy0?R&QlSI_gkDo}?_(d8k&%EvfV1y`-TVP427veg0#5*U9{`F4Abx-i1^@|A0So~M zkP^qf_~;8_^aBvsl5o$ka%X^906;j=*Jc!!AW-M^rxpOD|7>640|a&-8{}M6zxfOl+C8a&MTjDL zCJPCV)F>lzxULW$V;%bt&QPUyXK-C`+E@%cgoluDSR&KC(wl}vEAP*yscrhskVF(Q z(g_aieczxG2hyMq5jsZS;sa9Fs4R?o@}n>uJ~7e%NfJUvsu-Mfq6W^b35ViN4LAmV zZVSW6hlB-A4%-EHK)r5_8@sm?p!Pxq$Cz;V2RcAlcp9A|2nj`+zmG#wh0iY?It#L@ zP*)0f^F}EJyk7=NUkaV)*ZiGC<-ozy;8;;nk=q6x4r|$ibYlH+$Xm}&0^aQP+Y5{) zO&+YQ1e`h+y_2+QVJzU`=wfc{RK)qL^jgSc(v2B1dHmYwZP7=^+k`@!LuDGF<6nOd zRSL-7dicWDg@*xqYl{S!a>*qfDGgDU1+j@@r2MxNnuN84(;!94za$>kZjX-c=0(PN zZp|u5^YE(`%PG%1m>>$btB8|Db_L0W|C}DWQo2)dW4L9dzi+Aa z*=P7T+O)5%v}x)oSXJsxHE@q)UNSbXFGTYd_+H1rKH)4lFlWWj!*iJ49aIpI8dI~V zP9&?3qKk!isz`JpOq~E?_t(m&>PJF2`hLKUSrpFO;>8ib8j1|%=0dm8b%XwW%0UOI zIjVWqJ_^E_v@7z9@9|u?=pT2cHM=-_EPBBAqi3-7vs2t2?5KBJ z+lbTsr?S`NVsT6P_@VnFC!ra15a)>^-<2ktR~i8YOV?R@!-Lcc;uhXWUgv6Mw>q>< zPPQ4QBXcJG75VZex}0zD_E=pruCtC4=VbMm8{W+1XAl3VmDO$D^~F7Gvd~%dP70PY`ug} z6|tXgpsEMPEcp~OXb!+GMvq^Ck*87>yUG{87a$Bl%ob!pDH(4bCvApv_(m`Cp*BKtumq`FC`9&TT+S>iY)h>WL)_| zE2C6#u8k_JxPZzW6xe7=ekBa8sS%NB)7%%L2)|ZH3fY}gsEb6Z1-f;$#3C#EkUr=9 z2uvfF6z5u<=JeI;mSDom2FAM|4u5w@mAVz_X34NOwp!;RFo;fDi<8Ejw%GW%h-Sli-$slfoNvf<$#~Q~m;MFng?6gn{KT;P$;3r%pSOFGOESjPR{=%HICUFtWSjD>@X{JrEIY#_tS4oBPgby%EAFY(0X$PG_LZ1m z^@A)_aYvD9U+K#C%Tro8WZF4m>j$K(T|X1i8!DO(1&iyozWPTGTWZK=m>Rf&@Uewo3$66w^7|_c%5r~-AOQo zXMMgLiRQD5R!)qysAae0VKEy~cWFz<4#<}4^^~l)KE)_O(Vs88xE~ay?8Wy2<#O-V z)6yzOe@pe;q2=T?vu-z!k;VQFy1DSaS3J($c!t1(=GJ-s*>-y|xcwwB7W2eh)b7rH z4aqY2^3Zy~ntp1ac^-J??{CEtGr$Uat36spf9)Sum1wxT3r-!=kmU6^%4p2(kP#g_ zp}IdSqWFH$x1H2R^Ko9Zt8I;yc%)l$%n`?z&4ythDjEAL8+#ci)y}vYMA*S0YjnD% zNYar@8oS>4Ref;hEl@jp@>#n5T&3B3m~u(vrMEX(z(>x$zh#Z@-|U3nEkcTSw9c98 zpUjrVW&H`ih}eUv&WhBoq*E0

  • ;7m}ApUsoE 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 b_3$5Jm`94?xU%ZMC#8DYhFUeZ?VkS!b-)!M literal 0 HcmV?d00001 diff --git a/html/images/mbsetup1.6.S.png b/html/images/mbsetup1.6.S.png new file mode 100644 index 0000000000000000000000000000000000000000..fb0fa48521e86bac232a5ef8a72948bc85a4ee4f GIT binary patch literal 4922 zcmc&&c~leGn|(lNBF3g$(6ECG5IqTOfCnd$SJ`FW<#nfjwn)qAhLy5GI`d+$|U zJ#2qqgQUD90APdF!Tk;Zh(Z8}L?Xq6EgCxaYyl7hhi#oKg|`5-0l))v0O)N%0DypZ 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 literal 0 HcmV?d00001 diff --git a/html/images/mbsetup2.png b/html/images/mbsetup2.png new file mode 100644 index 0000000000000000000000000000000000000000..4fa4d6ac5e16b8927b25fcc17464f2432ecaa3bb GIT binary patch literal 5364 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 WzTr}cdfPw$CG~Uxoic65$bSHlcC9-A literal 0 HcmV?d00001 diff --git a/html/images/modems0.png b/html/images/modems0.png new file mode 100644 index 0000000000000000000000000000000000000000..fde8b86b61676988a6310116a141dbcc45aaa53b GIT binary patch literal 6681 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 literal 0 HcmV?d00001 diff --git a/html/images/newgroups.png b/html/images/newgroups.png new file mode 100644 index 0000000000000000000000000000000000000000..34733d06d41d6c1ed221db8380c4405fc24db36c GIT binary patch literal 5058 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 O(m@+&lw7@e|33h+vJ*4_ literal 0 HcmV?d00001 diff --git a/html/images/nodelist2.png b/html/images/nodelist2.png new file mode 100644 index 0000000000000000000000000000000000000000..8435d1a053368330f297f98a0ef71b30ee4e2eac GIT binary patch literal 5539 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 T@51)i=yuZ~=xZ0Ay%zExoLd39 literal 0 HcmV?d00001 diff --git a/html/images/nodelist3.png b/html/images/nodelist3.png new file mode 100644 index 0000000000000000000000000000000000000000..86caa6b65c0d3e5a5041538b7a2ff5bd6dded6cc GIT binary patch literal 6034 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
    +
    MBSE
    +

    MBSE BBS System Guide @VERSION@

    +
    Last update 01-Mar-2007
    + + +

    Introduction

    + +Screenshot + + +

     

    + +

    Release Notes

    + + +

     

    + +

    MBSE BBS Reference Manual

    + +
      +
    1. Running a BBS under Linux
    2. +
    3. Which distribution to use
    4. +
    5. Basic installation MBSE BBS
    6. +
    7. Upgrade MBSE BBS
    8. +
    9. Configuring the bbs with mbsetup +
        +
      1. Edit Global configuration +
      2. Edit Fido networks +
      3. Edit Archiver programs +
      4. Edit Virus scanners +
      5. Edit Modem types +
      6. Edit TTY lines info +
      7. Edit Fidonet nodes +
      8. Edit BBS setup +
          +
        1. Edit Security limits +
        2. Edit Language setup +
        3. Edit BBS menus +
        4. Edit File areas +
        5. Edit Transfer protocols +
        6. Edit Oneliners +
        +
      9. Edit Mail setup +
          +
        1. Echo mail groups +
        2. Echo mail areas +
        +
      10. Edit File echo's setup +
          +
        1. Edit Fileecho groups +
        2. Edit Fileecho areas +
        3. Edit Hatch manager +
        4. Edit Magic files +
        +
      11. Edit Newfiles groups +
      12. Edit Newfiles reports +
      13. Edit Filefind setup +
      14. Edit Files database +
      15. Edit BBS users +
      16. Edit Services +
      17. Edit Domains +
      18. Edit task manager +
      19. Edit Routing Table +
      20. Edit Internet BBS Chat +
      21. Show software information +
      22. Create site documents +
    10. +
    11. Starting and Stopping the BBS
    12. +
    13. Setup mgetty for the BBS
    14. +
    15. Programs and utilities +
        +
      1. mbaff, Announce newfiles and filefind
      2. +
      3. mball, Allfiles and newfiles list creator
      4. +
      5. mbcico, The Fidonet mailer ala ifcico
      6. +
      7. mbdiff, Nodelist difference processor
      8. +
      9. mbfido, Fidonet mail and files procesor
      10. +
      11. mbfile, Files database maintenance program
      12. +
      13. mbindex, Nodelist index compiler
      14. +
      15. mblang, Language datafile compiler
      16. +
      17. mblogin, Unix login replacement
      18. +
      19. mbmon, The monitor program
      20. +
      21. mbmsg, The messagebase utility program
      22. +
      23. mbnntp, The news server
      24. +
      25. mbout, The mailer outbound program
      26. +
      27. mbpasswd, The passwd wrapper
      28. +
      29. mbsebbs, The bbs program
      30. +
      31. mbseq, Sequence number creator
      32. +
      33. mbsetup, The setup program
      34. +
      35. mbstat, The bbs status change program
      36. +
      37. mbtask, The taskmanager for the bbs system
      38. +
      39. mbtoberep, The toberep.data lister
      40. +
      41. mbuser, The userbase maintenance program
      42. +
      43. mbuseradd, The useradd wrapper
      44. +
    16. +
    17. Netmail routing behaviour
    18. +
    19. Fido to Internet Gateway
    20. +
    21. Email Gateway - Postfix setup.
    22. +
    23. Nodediff and Nodelist processing
    24. +
    25. Using UPS semafore's
    26. +
    27. Running DOS doors on MBSE BBS
    28. +
    29. Error return codes
    30. +
    +

     

    + +

    Other Notes

    + + + +
    +BackBack  +TopTop +
    + + + diff --git a/html/intergate.html b/html/intergate.html new file mode 100644 index 00000000..02b30efb --- /dev/null +++ b/html/intergate.html @@ -0,0 +1,106 @@ + + + + + + + + + + + +MBSE BBS - Internet gateway. + + + +
    +
    Last update 10-May-2002
    +

    MBSE BBS - Internet Gateway.

    + +

    Introduction.

    +

    +Since version 0.33.14 the email gateway is build into MBSE BBS and since +version 0.33.15 the newsgateway is build into MBSE BBS. Since version 0.33.16 the +newsgateway to UUCP nodes is added. To route +email trafic to and from the internet you need a internet MTA. I stopped using +sendmail for this because it gave too much trouble setting it +up together with MBSE BBS. +Today I use Postfix, +a well documented, secure and easy to setup MTA. For the actual gate from +Postfix to the BBS you I use mbmail which you need to add to the +Postfix configuration.

    +

    +There may be two reasons to create a gateway, one is to gate internet news and +email to the Fidonet bbs users, another reason may be that you want to make +echomail as news available on your system so that users can connect to your +bbs with their favourite browser an get the mail and news using pop3 and +nntp protocols. The setup is the same for both reasons so I will make one +description for the whole setup. +

     

    + +

    Setup a newsgate node with inn.

    +

    +If you only want to gate internet news to your bbs users and not want to +make echomail available as news, and you have a permament internet connection +then you don't need your own news server. This will also work on dialup links, +once the internet connection is up, make sure that mbfido news -quiet is +started as user mbse. +To do this configure MBSE BBS to use the newsserver of your ISP in screen 1.15 +with mbsetup. +If you don't want to use the newsserver of your ISP or want to make echomail +available as news for your local users you must install your own newsserver. +You could use inn news for a newsserver. +To connect a small feed with your ISP you could use suck. +

    +In each echomail area you want to gate you need to fill in the newsgroup +name of that area and echomail received in that area will automatic be +posted to that newsgroup. The command mbfido news will check all +configured newsgroups for new newsarticles. If you set it up for the first +time you need to run mbfido news -learn to fill the dupes +database for news with all the already existing news articles. If you skip +that, you may get a lot of old articles that will be gated. Just run that +command once after you have set this up. Later when you receive fresh articles +the command mbfido news will only gate new arrived articles. +In each mail area you can set the number of articles to get in one run. If you +set this too high, mbfido will scan all headers on the newsserver for new +articles. This can cost a lot of time. The best thing to do is to set this value +about four times higher then the average number of messages per day in that +group. If you set it too low, warning messages will appear in the logfile. +

     

    + +

    Setup a newsgate with rnews.

    +

    +This is the setup if you don't want an NNTP newsserver like inn, but a simple +cnews setup for UUCP links only. In mbsetup menu 1.15 you need +to set this up. You need to fill in the path to the rnews program so that +mbfido can post articles to cnews. MORE INFO NEEDED. +

    +In each echomail area you want to gate you need to fill in the newsgroup +name of that area and echomail received in that area will automatic be +posted to that newsgroup. +

     

    + +

    Setup a newsgate via UUCP.

    +

    +With this setup you don't run a local newsserver, only your bbs users and +Fidonet links can then use news. You need to install uucp +on your system. With mbsetup menu 1.15 you need to set this +up. Suppose your ISP's nodename is xs4all the you probably need to set the +UUCP path to /var/spool/uucp/xs4all and the UUCP node to +xs4all. Your own nodename will be your system's hostname without +the domain part. +

    +In each echomail area you want to gate you need to fill in the newsgroup +name of that area and echomail received in that area will automatic be +posted to that newsgroup. +

     

    + +

    Setup a email gate.

    +

    +See Postfix (email) configuration +

    + +BackGo Back +

    + + diff --git a/html/intro.html b/html/intro.html new file mode 100644 index 00000000..873f678e --- /dev/null +++ b/html/intro.html @@ -0,0 +1,94 @@ + + + + + + + + + + + +Running a BBS under Unix. + + + +
    +
    Last update 01-Mar-2007
    +

    Introduction to MBSE BBS.

    + +

    Distribution.

    +

    +These are the only official distribution sites for the mbse bbs package. They are: +

      +
    1. http://www.mbse.eu +
    2. fidonet node 2:280/2802 binkp fido.mbse.eu +
    +If you find mbse bbs on another site it may be out of date. I have no control over these sites. +New versions of mbse bbs are announced in the fidonet area LINUX_BBS and MBSE +support echo. On the official fidonet +nodes you can request the latest version with the magic MBSEBBS. You will then get a zip file, +in this zip file is the original tar.gz file. This is to let systems who only support 8.3 +filenames to pickup the distribution package. +

     

    + +

    History.

    +

    +At the end of 1997 I was looking for several BBS systems that could run on +GNU/Linux and it must be capable to run Fidonet mail. After reviewing almost +all packages that were available at that time I found that there were no +packages that suited my needs. Some had the plain user interfaces that +my bbs users were used to but no Fidonet capabilities, others looked +awfull or were difficult to use by normal bbs users without Unix experience. +I also didn't want to run shareware anymore, one day you pay for some program, +and the next day support is over because the writer of that program decided +to stop development or simply dissapears from the Fidonet stage. With all +Y2K problems ahead the solution should be Open Software so that you have +the sources in case something goes wrong. +One package was very interesting and had the look and feel of RemoteAcces, +that package was RapidBBS. There was only one problem, it had no Fidonet +capabilities. I rewrote the data structures and created a deamon that should +control all bbs acivities. In march 1998 I started writing the mbfido program +that should handle all Fidonet mail and .tic files. In june 1998 the final +message base format became JAM using the LoraBBS sources as a guide to create +the JAM libraries. The original JAMapi was not stable enough to do all the work +that needed to be done. +

    +In Juli 1998 the first version of MBSE BBS was installed on the bbs I have, +on the second line. The first line was running McMail, GEcho and RA on a +Novell client while on the GNU/Linux box the mars_nwe emulator from Martin Stower +was running. In november 1998 mbcico was created from ifcico from Eugene M. +Crosser. In Januari 1999 it did also compile and run on a Sun Sparcstation 2 +system. +

    +In April 1999 the motherboard of the GNU/Linux server died, I replaced it with +the MOBO of one of the client machines. From that day on, MBSE BBS became the +only bbs running on my system, because I was short on serial port boards at +that time. McMail and RA became history and MBSE BBS was on its own. From that +day on, updates were almost daily, all users and up and downlinks showed that +there were plenty of bugs to solve. One month later most problems were solved. +

    +In juli 1999 Jan van de Werken started beta testing MBSE BBS on his system. +In September 1999 MBSE BBS was public released for the first time. +

     

    + +

    Is it Y2K ready?

    +

    +There have been no problems since 1 januari 2000 with MBSE BBS. I do run +pktdate by Tobias Ernst in the tosser, this solves problems with incoming +mail. Due to the internal date format, this program should run until 2038, +just as long as Unix/Linux and the internet will function without changing +the date format. +

     

    + +

    Future plans.

    +

    +Plans are to completly integrate www and chat into MBSE BBS. It +should work for browsers about the same as with ANSI character terminals. +

     

    + + +BackGo Back +

    + + diff --git a/html/invoking.html b/html/invoking.html new file mode 100644 index 00000000..5daf5f4b --- /dev/null +++ b/html/invoking.html @@ -0,0 +1,72 @@ + + + + + + + + + + + +Starting and stopping the BBS. + + + +
    +
    Last update 06-Jun-2001
    +

    Starting and Stopping the BBS.

    + +Now it is time to check the starting and stopping of the BBS. As you have +installed everything, setup the BBS etc, you must check if the shutdown and +reboot work properly. As root type shutdown -r now and +watch the console. You should see messages that the BBS is closing while +the systems shuts down. This should be one of the first things to happen. +Because Slackware up to version 7.0.0 is tricky to automatic install the shutdown scripts, +you won't see this happen on older Slackware versions. If you want, you can edit +/etc/rc.d/rc.6 and /etc/rc.d/rc.K and insert the line /opt/mbse/etc/rc.shutdown +at the proper places.

    + +When your system comes up again, one of the last messages before the login +prompt appears or just before X-windows starts, you should see messages that +the BBS is started.

    + +Login as user mbse and check the logfiles if everything looks +good. If something is wrong, reread the previous documentation and check if +you did everything right.

    + +Next logon to your BBS locally using the account "bbs". +You can do that by typing su - bbs or if you already have installed +mblogin as login replacement for telnet, then type telnet +localhost. +You will then create the first user of your BBS, this will be you, the sysop of course. +After you logout the BBS start as user +mbse the program mbsetup and edit your user record +to set your level to that of the sysop. One more thing, the unix account you +must create when you logon as new BBS user may not be mbse +as this is the normal Admin account the BBS and its utilities use.

    + +Now login with your unix account and see if everything still works. +If you have setup mgetty you may want to test if +users really can login with a modem. Also check a mailer session, can you +dialout, ie. poll other nodes and can they call you. There is a lot that can +go wrong with unix permissions if you are not precise in wat you are doing.

    + +If everything is working it is time to create poll events, and adjust other +scripts to your local needs to get your BBS full up and running.

    + +To do this you must install a crontab for user mbse. +As user mbse go to the directory ~/mbsebbs-0.33.xx. +In that directory type sh ./CRON.sh and a default crontab will be installed.

    + +To add poll events, edit the crontab with the command crontab -e + At the bottom of that file there is an example of how to do that. +Now that the crontab is installed, all maintenance will now work, automatic +dialout, scanning and tossing mail etc. In other words, the bbs is up and +running. +

    + +BackGo Back +

    + + diff --git a/html/known_bugs.html b/html/known_bugs.html new file mode 100644 index 00000000..3fe62112 --- /dev/null +++ b/html/known_bugs.html @@ -0,0 +1,45 @@ + + + + + + + + + + + +Running a BBS under Unix. + + + +
    +
    Last update 01-Mar-2007
    +

    MBSE BBS - Known bugs.

    + +There are always more bugs, but these are known.... + +
      +
    • Reading of function keys in mbsebbs doesn't work always good, especially on +slow links and over PPP. This is not a MBSE BBS problem. + +
    • Problems with D'Bridge [1a] mailers. + +
    • If you have regular sessions with a node wich only supports FTS-0001 +sessions and you use a session password you must also set a mail password +and these passwords must be the same. This is a side effect of the way FTS-0001 +handshake works, by sending a small mail packet wich contains the password. + +
    • Some Linux distributions have their glibc libraries compiled wrong, that +will cause the mbtask program to do nothing usefull. This problem seems +to have gone away. + +
    • You cannot share the JAM message bases between little-endian and big-endian +machines using networked filesystems because the storage format doesn't specify +the internal byte order for different CPU's. This is an error in the JAM spec. +
    + +BackGo Back +
    + + diff --git a/html/license/copying.html b/html/license/copying.html new file mode 100644 index 00000000..e90f332b --- /dev/null +++ b/html/license/copying.html @@ -0,0 +1,358 @@ + + + + +GNU General Public License. + + + + + + +
    +		    GNU GENERAL PUBLIC LICENSE
    +		       Version 2, June 1991
    +
    + Copyright (C) 1989, 1991 Free Software Foundation, Inc.
    +                      59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
    + Everyone is permitted to copy and distribute verbatim copies
    + of this license document, but changing it is not allowed.
    +
    +			    Preamble
    +
    +  The licenses for most software are designed to take away your
    +freedom to share and change it.  By contrast, the GNU General Public
    +License is intended to guarantee your freedom to share and change free
    +software--to make sure the software is free for all its users.  This
    +General Public License applies to most of the Free Software
    +Foundation's software and to any other program whose authors commit to
    +using it.  (Some other Free Software Foundation software is covered by
    +the GNU Library General Public License instead.)  You can apply it to
    +your programs, too.
    +
    +  When we speak of free software, we are referring to freedom, not
    +price.  Our General Public Licenses are designed to make sure that you
    +have the freedom to distribute copies of free software (and charge for
    +this service if you wish), that you receive source code or can get it
    +if you want it, that you can change the software or use pieces of it
    +in new free programs; and that you know you can do these things.
    +
    +  To protect your rights, we need to make restrictions that forbid
    +anyone to deny you these rights or to ask you to surrender the rights.
    +These restrictions translate to certain responsibilities for you if you
    +distribute copies of the software, or if you modify it.
    +
    +  For example, if you distribute copies of such a program, whether
    +gratis or for a fee, you must give the recipients all the rights that
    +you have.  You must make sure that they, too, receive or can get the
    +source code.  And you must show them these terms so they know their
    +rights.
    +
    +  We protect your rights with two steps: (1) copyright the software, and
    +(2) offer you this license which gives you legal permission to copy,
    +distribute and/or modify the software.
    +
    +  Also, for each author's protection and ours, we want to make certain
    +that everyone understands that there is no warranty for this free
    +software.  If the software is modified by someone else and passed on, we
    +want its recipients to know that what they have is not the original, so
    +that any problems introduced by others will not reflect on the original
    +authors' reputations.
    +
    +  Finally, any free program is threatened constantly by software
    +patents.  We wish to avoid the danger that redistributors of a free
    +program will individually obtain patent licenses, in effect making the
    +program proprietary.  To prevent this, we have made it clear that any
    +patent must be licensed for everyone's free use or not licensed at all.
    +
    +  The precise terms and conditions for copying, distribution and
    +modification follow.
    +
    +		    GNU GENERAL PUBLIC LICENSE
    +   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
    +
    +  0. This License applies to any program or other work which contains
    +a notice placed by the copyright holder saying it may be distributed
    +under the terms of this General Public License.  The "Program", below,
    +refers to any such program or work, and a "work based on the Program"
    +means either the Program or any derivative work under copyright law:
    +that is to say, a work containing the Program or a portion of it,
    +either verbatim or with modifications and/or translated into another
    +language.  (Hereinafter, translation is included without limitation in
    +the term "modification".)  Each licensee is addressed as "you".
    +
    +Activities other than copying, distribution and modification are not
    +covered by this License; they are outside its scope.  The act of
    +running the Program is not restricted, and the output from the Program
    +is covered only if its contents constitute a work based on the
    +Program (independent of having been made by running the Program).
    +Whether that is true depends on what the Program does.
    +
    +  1. You may copy and distribute verbatim copies of the Program's
    +source code as you receive it, in any medium, provided that you
    +conspicuously and appropriately publish on each copy an appropriate
    +copyright notice and disclaimer of warranty; keep intact all the
    +notices that refer to this License and to the absence of any warranty;
    +and give any other recipients of the Program a copy of this License
    +along with the Program.
    +
    +You may charge a fee for the physical act of transferring a copy, and
    +you may at your option offer warranty protection in exchange for a fee.
    +
    +  2. You may modify your copy or copies of the Program or any portion
    +of it, thus forming a work based on the Program, and copy and
    +distribute such modifications or work under the terms of Section 1
    +above, provided that you also meet all of these conditions:
    +
    +    a) You must cause the modified files to carry prominent notices
    +    stating that you changed the files and the date of any change.
    +
    +    b) You must cause any work that you distribute or publish, that in
    +    whole or in part contains or is derived from the Program or any
    +    part thereof, to be licensed as a whole at no charge to all third
    +    parties under the terms of this License.
    +
    +    c) If the modified program normally reads commands interactively
    +    when run, you must cause it, when started running for such
    +    interactive use in the most ordinary way, to print or display an
    +    announcement including an appropriate copyright notice and a
    +    notice that there is no warranty (or else, saying that you provide
    +    a warranty) and that users may redistribute the program under
    +    these conditions, and telling the user how to view a copy of this
    +    License.  (Exception: if the Program itself is interactive but
    +    does not normally print such an announcement, your work based on
    +    the Program is not required to print an announcement.)
    +
    +These requirements apply to the modified work as a whole.  If
    +identifiable sections of that work are not derived from the Program,
    +and can be reasonably considered independent and separate works in
    +themselves, then this License, and its terms, do not apply to those
    +sections when you distribute them as separate works.  But when you
    +distribute the same sections as part of a whole which is a work based
    +on the Program, the distribution of the whole must be on the terms of
    +this License, whose permissions for other licensees extend to the
    +entire whole, and thus to each and every part regardless of who wrote it.
    +
    +Thus, it is not the intent of this section to claim rights or contest
    +your rights to work written entirely by you; rather, the intent is to
    +exercise the right to control the distribution of derivative or
    +collective works based on the Program.
    +
    +In addition, mere aggregation of another work not based on the Program
    +with the Program (or with a work based on the Program) on a volume of
    +a storage or distribution medium does not bring the other work under
    +the scope of this License.
    +
    +  3. You may copy and distribute the Program (or a work based on it,
    +under Section 2) in object code or executable form under the terms of
    +Sections 1 and 2 above provided that you also do one of the following:
    +
    +    a) Accompany it with the complete corresponding machine-readable
    +    source code, which must be distributed under the terms of Sections
    +    1 and 2 above on a medium customarily used for software interchange; or,
    +
    +    b) Accompany it with a written offer, valid for at least three
    +    years, to give any third party, for a charge no more than your
    +    cost of physically performing source distribution, a complete
    +    machine-readable copy of the corresponding source code, to be
    +    distributed under the terms of Sections 1 and 2 above on a medium
    +    customarily used for software interchange; or,
    +
    +    c) Accompany it with the information you received as to the offer
    +    to distribute corresponding source code.  (This alternative is
    +    allowed only for noncommercial distribution and only if you
    +    received the program in object code or executable form with such
    +    an offer, in accord with Subsection b above.)
    +
    +The source code for a work means the preferred form of the work for
    +making modifications to it.  For an executable work, complete source
    +code means all the source code for all modules it contains, plus any
    +associated interface definition files, plus the scripts used to
    +control compilation and installation of the executable.  However, as a
    +special exception, the source code distributed need not include
    +anything that is normally distributed (in either source or binary
    +form) with the major components (compiler, kernel, and so on) of the
    +operating system on which the executable runs, unless that component
    +itself accompanies the executable.
    +
    +If distribution of executable or object code is made by offering
    +access to copy from a designated place, then offering equivalent
    +access to copy the source code from the same place counts as
    +distribution of the source code, even though third parties are not
    +compelled to copy the source along with the object code.
    +
    +  4. You may not copy, modify, sublicense, or distribute the Program
    +except as expressly provided under this License.  Any attempt
    +otherwise to copy, modify, sublicense or distribute the Program is
    +void, and will automatically terminate your rights under this License.
    +However, parties who have received copies, or rights, from you under
    +this License will not have their licenses terminated so long as such
    +parties remain in full compliance.
    +
    +  5. You are not required to accept this License, since you have not
    +signed it.  However, nothing else grants you permission to modify or
    +distribute the Program or its derivative works.  These actions are
    +prohibited by law if you do not accept this License.  Therefore, by
    +modifying or distributing the Program (or any work based on the
    +Program), you indicate your acceptance of this License to do so, and
    +all its terms and conditions for copying, distributing or modifying
    +the Program or works based on it.
    +
    +  6. Each time you redistribute the Program (or any work based on the
    +Program), the recipient automatically receives a license from the
    +original licensor to copy, distribute or modify the Program subject to
    +these terms and conditions.  You may not impose any further
    +restrictions on the recipients' exercise of the rights granted herein.
    +You are not responsible for enforcing compliance by third parties to
    +this License.
    +
    +  7. If, as a consequence of a court judgment or allegation of patent
    +infringement or for any other reason (not limited to patent issues),
    +conditions are imposed on you (whether by court order, agreement or
    +otherwise) that contradict the conditions of this License, they do not
    +excuse you from the conditions of this License.  If you cannot
    +distribute so as to satisfy simultaneously your obligations under this
    +License and any other pertinent obligations, then as a consequence you
    +may not distribute the Program at all.  For example, if a patent
    +license would not permit royalty-free redistribution of the Program by
    +all those who receive copies directly or indirectly through you, then
    +the only way you could satisfy both it and this License would be to
    +refrain entirely from distribution of the Program.
    +
    +If any portion of this section is held invalid or unenforceable under
    +any particular circumstance, the balance of the section is intended to
    +apply and the section as a whole is intended to apply in other
    +circumstances.
    +
    +It is not the purpose of this section to induce you to infringe any
    +patents or other property right claims or to contest validity of any
    +such claims; this section has the sole purpose of protecting the
    +integrity of the free software distribution system, which is
    +implemented by public license practices.  Many people have made
    +generous contributions to the wide range of software distributed
    +through that system in reliance on consistent application of that
    +system; it is up to the author/donor to decide if he or she is willing
    +to distribute software through any other system and a licensee cannot
    +impose that choice.
    +
    +This section is intended to make thoroughly clear what is believed to
    +be a consequence of the rest of this License.
    +
    +  8. If the distribution and/or use of the Program is restricted in
    +certain countries either by patents or by copyrighted interfaces, the
    +original copyright holder who places the Program under this License
    +may add an explicit geographical distribution limitation excluding
    +those countries, so that distribution is permitted only in or among
    +countries not thus excluded.  In such case, this License incorporates
    +the limitation as if written in the body of this License.
    +
    +  9. The Free Software Foundation may publish revised and/or new versions
    +of the General Public License from time to time.  Such new versions will
    +be similar in spirit to the present version, but may differ in detail to
    +address new problems or concerns.
    +
    +Each version is given a distinguishing version number.  If the Program
    +specifies a version number of this License which applies to it and "any
    +later version", you have the option of following the terms and conditions
    +either of that version or of any later version published by the Free
    +Software Foundation.  If the Program does not specify a version number of
    +this License, you may choose any version ever published by the Free Software
    +Foundation.
    +
    +  10. If you wish to incorporate parts of the Program into other free
    +programs whose distribution conditions are different, write to the author
    +to ask for permission.  For software which is copyrighted by the Free
    +Software Foundation, write to the Free Software Foundation; we sometimes
    +make exceptions for this.  Our decision will be guided by the two goals
    +of preserving the free status of all derivatives of our free software and
    +of promoting the sharing and reuse of software generally.
    +
    +			    NO WARRANTY
    +
    +  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
    +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
    +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
    +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
    +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
    +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
    +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
    +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
    +REPAIR OR CORRECTION.
    +
    +  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
    +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
    +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
    +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
    +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
    +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
    +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
    +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
    +POSSIBILITY OF SUCH DAMAGES.
    +
    +		     END OF TERMS AND CONDITIONS
    +
    +	    How to Apply These Terms to Your New Programs
    +
    +  If you develop a new program, and you want it to be of the greatest
    +possible use to the public, the best way to achieve this is to make it
    +free software which everyone can redistribute and change under these terms.
    +
    +  To do so, attach the following notices to the program.  It is safest
    +to attach them to the start of each source file to most effectively
    +convey the exclusion of warranty; and each file should have at least
    +the "copyright" line and a pointer to where the full notice is found.
    +
    +    <one line to give the program's name and a brief idea of what it does.>
    +    Copyright (C) 19yy  <name of author>
    +
    +    This program is free software; you can redistribute it and/or modify
    +    it under the terms of the GNU General Public License as published by
    +    the Free Software Foundation; either version 2 of the License, or
    +    (at your option) any later version.
    +
    +    This program is distributed in the hope that it will be useful,
    +    but WITHOUT ANY WARRANTY; without even the implied warranty of
    +    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    +    GNU General Public License for more details.
    +
    +    You should have received a copy of the GNU General Public License
    +    along with this program; if not, write to the Free Software
    +    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
    +
    +Also add information on how to contact you by electronic and paper mail.
    +
    +If the program is interactive, make it output a short notice like this
    +when it starts in an interactive mode:
    +
    +    Gnomovision version 69, Copyright (C) 19yy name of author
    +    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
    +    This is free software, and you are welcome to redistribute it
    +    under certain conditions; type `show c' for details.
    +
    +The hypothetical commands `show w' and `show c' should show the appropriate
    +parts of the General Public License.  Of course, the commands you use may
    +be called something other than `show w' and `show c'; they could even be
    +mouse-clicks or menu items--whatever suits your program.
    +
    +You should also get your employer (if you work as a programmer) or your
    +school, if any, to sign a "copyright disclaimer" for the program, if
    +necessary.  Here is a sample; alter the names:
    +
    +  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
    +  `Gnomovision' (which makes passes at compilers) written by James Hacker.
    +
    +  <signature of Ty Coon>, 1 April 1989
    +  Ty Coon, President of Vice
    +
    +This General Public License does not permit incorporating your program into
    +proprietary programs.  If your program is a subroutine library, you may
    +consider it more useful to permit linking proprietary applications with the
    +library.  If this is what you want to do, use the GNU Library General
    +Public License instead of this License.
    +
    + +BackGo Back + + + + diff --git a/html/license/hydracom.html b/html/license/hydracom.html new file mode 100644 index 00000000..3e728846 --- /dev/null +++ b/html/license/hydracom.html @@ -0,0 +1,118 @@ + + + + + + + +Hydracom License. + + + +
    +                              HydraCom Version 1.00
    +
    +                         A sample implementation of the
    +                   HYDRA Bi-Directional File Transfer Protocol
    +
    +                             HydraCom was written by
    +                   Arjen G. Lentz, LENTZ SOFTWARE-DEVELOPMENT
    +                  COPYRIGHT (C) 1991-1993; ALL RIGHTS RESERVED
    +
    +                       The HYDRA protocol was designed by
    +                 Arjen G. Lentz, LENTZ SOFTWARE-DEVELOPMENT and
    +                             Joaquim H. Homrighausen
    +                  COPYRIGHT (C) 1991-1993; ALL RIGHTS RESERVED
    +
    +
    +  DISCLAIMER
    +
    +  This program is provided "as is" and comes with no warranties of any
    +  kind, either expressed or implied. In no event shall the authors be
    +  liable to you or anyone else for any damages, including any lost
    +  profits, lost savings or other incidental or consequential damages
    +  arising out of the use or inability to use this software.
    +
    +
    +  HYDRACOM / SOURCE LICENSE
    +
    +  HydraCom, its associated utilities (HydraCfg) and the HydraCom
    +  sourcecode may be freely distributed, copied and used, no fee charged.
    +  All files, executables and sourcecode remain the copyrighted property
    +  of Arjen G. Lentz and LENTZ SOFTWARE-DEVELOPMENT.
    +  The distribution archives should remain intact with no files removed
    +  or modified. For special purposes, it is allowed to repack the
    +  archives using a different compression system.
    +
    +  HydraCom may be bundled up with for instance terminal or BBS packages,
    +  even commercial ones, provided the buyer/user is clearly informed
    +  about the fact that Hydra and HydraCom are free, not owned by the
    +  distributor/retailer in question, and is not included in any possible
    +  charge regarding the rest of the package. This documentation must also
    +  be present so the user can inform himself about Hydra and HydraCom.
    +  The same rules apply to inclusion in shareware and CD-ROM libraries.
    +  In all cases, the author of HydraCom must be given credit in any
    +  informational screens and literature that contain such information.
    +
    +  The Hydra/HydraCom sourcecode may also be freely used and integrated
    +  into other software or library, provided this is clearly stated in any
    +  informational screens and literature pertaining to this program, and
    +  credit is given to the original author. If the sourcecode of that
    +  program or library is released or otherwise published, the notices
    +  present at the top of every Hydra/HydraCom source file must be
    +  retained in their original unmodified form.
    +
    +  In addition to the above license, everyone using any part of the
    +  sourcecode, programs or files is fully bound by the general license of
    +  the Hydra protocol as present in the Hydra protocol description
    +  document. For easy reference, the paragraph in question is reprinted
    +  below.
    +
    +  Any use of, or operation on (including copying/distributing) any of
    +  the above mentioned files implies full and unconditional acceptance of
    +  this license and disclaimer.
    +
    +
    +  HYDRA PROTOCOL LICENSE 
    +
    +  You are granted a license to implement the HYDRA file transfer
    +  protocol, HYDRA hereafter, in your own programs and/or use the sample
    +  source code and adapt these to your particular situation and needs;
    +  subject to the following conditions:
    +
    +   -  You must refer to it as the HYDRA file transfer protocol, and you
    +      must give credit to the authors of HYDRA in any information
    +      screens or literature pertaining to your programs that contains
    +      other such information (credits, your own copyrights, etc.).
    +
    +   -  HYDRA will always remain backwards compatible with previous
    +      revisions. HYDRA allows for expansion of its features without
    +      interfering with previous revisions. It is, however, important
    +      that different people do not expand the protocol in different
    +      directions. We therefore ask you to contact us if you have any
    +      needs/ideas regarding HYDRA, so development can be synchronized
    +      and beneficial to all.
    +
    +   -  If your implementation cannot converse with past or future
    +      revisions as supplied by us, then you must refer to it as "HYDRA
    +      derived", or as "a variation of HYDRA", or words to that effect.
    +
    +
    +  Hydra protocol design and HydraCom driver:         Hydra protocol design:
    +  Arjen G. Lentz                                     Joaquim H. Homrighausen
    +  LENTZ SOFTWARE-DEVELOPMENT                         389, route d'Arlon
    +  Langegracht 7B                                     L-8011 Strassen
    +  3811 BT  Amersfoort                                Luxembourg
    +  The Netherlands
    +  FidoNet 2:283/512, AINEX-BBS +31-33-633916         FidoNet 2:270/17
    +  arjen_lentz@f512.n283.z2.fidonet.org               joho@ae.lu
    +
    +  Please feel free to contact us at any time to share your comments about our
    +  software and/or licensing policies.
    +
    + +BackGo Back + + + + diff --git a/html/license/index.htm b/html/license/index.htm new file mode 100644 index 00000000..0d108964 --- /dev/null +++ b/html/license/index.htm @@ -0,0 +1,40 @@ + + + + + + + + + + + +Licenses. + + + +
    +
    Last update 29-Jan-2001
    +

    Licenses.

    + +

    Introduction

    +

    +This is an overview of the licenses that are valid for the use of MBSE BBS or +parts of it. +
    +Michiel Broek. +

    + +

    License Documents.

    + + + +IndexBack to Index +
    + + + diff --git a/html/license/jam.html b/html/license/jam.html new file mode 100644 index 00000000..7db94c67 --- /dev/null +++ b/html/license/jam.html @@ -0,0 +1,76 @@ + + + + + + + +JAM License. + + + +
    +    ---------------------------------------------------------------------
    +                                  JAM(mbp)
    +                The Joaquim-Andrew-Mats Message Base Proposal
    +    ---------------------------------------------------------------------
    +            Copyright 1993 Joaquim Homrighausen, Andrew Milner,
    +                           Mats Birch, Mats Wallin.
    +                             ALL RIGHTS RESERVED.
    +    ---------------------------------------------------------------------
    +
    +
    +    =====================================================================
    +    LEGAL NOTICE
    +    ---------------------------------------------------------------------
    +
    +    The JAM(mbp) documentation and JAM API and information attached
    +    hereto, hereafter referred to as JAM, is protected by applicable
    +    copyright laws and international treaty provisions. JAM is provided
    +    "as is", without warranty of any kind or fitness for a particular
    +    purpose, either expressed or implied, all of are hereby explicitly
    +    disclaimed. The authors only guarantees that JAM will occupy disk
    +    space.
    +
    +    The entire risk as to the quality and performance of JAM is with you.
    +    Should JAM prove defective or incorrect, you assume the entire cost
    +    of all necessary servicing, repair, and/or correction. In no event
    +    shall the authors be liable to the you or anyone else for any damages
    +    or costs, including, but not limited to, any lost profits, lost
    +    savings, lost income, lost information, loss of the right to use JAM,
    +    or other incidental or consequential damages arising out of the use
    +    or inability to use JAM.
    +
    +    All information provided in JAM is subject to change without further
    +    notice.
    +
    +    JAM may be published and distributed to other people as long as no
    +    part of it is modified by any means, this includes translation to
    +    any other language (technical or social), and as long as no charges
    +    are applied (including but not limited to trading). This information
    +    may not be used to reverse engineer any application developed by the
    +    authors.
    +
    +    All applications that support JAM must include one of the following
    +    notices in their documentation and somewhere in the product's credit
    +    section:
    +
    +    "JAM(mbp) - Copyright 1993 Joaquim Homrighausen, Andrew Milner,
    +                               Mats Birch, Mats Wallin.
    +                               ALL RIGHTS RESERVED."
    +
    +    or
    +
    +    "This product uses the JAM(mbp) API -
    +     Copyright 1993 Joaquim Homrighausen, Andrew Milner, Mats Birch,
    +                    Mats Wallin. ALL RIGHTS RESERVED."
    +
    +    All trademarks are trademarks or registered trademarks of their
    +    respective holders.
    +
    + +BackGo Back + + + + diff --git a/html/manual.css b/html/manual.css new file mode 100644 index 00000000..b4ba975a --- /dev/null +++ b/html/manual.css @@ -0,0 +1,30 @@ +/* + * $Id: manual.css,v 1.5 2003/11/08 16:48:03 mbroek Exp $ + * + * stylesheet for the MBSE BBS manual. + */ + + +BODY { background-color: white; font: 12pt sans-serif,helvetica,arial; } + +/* + * H1 is the page header, H3 the paragraph header, H5 is topright update date. + */ +H1 { color: red; font: 16pt sans-serif,helvetica,arial; font-weight: bold } +H2 { color: red; font: 14pt sans-serif,helvetica,arial; font-weight: bold } +H3 { position: relative; left: 60px; color: black; font: 14pt sans-serif,helvetica,arial; font-weight: bold } +H5 { color: black; font: 10pt sans-serif,helvetica,arial; } + +A:link { color: blue } +A:visited { color: blue } +A:active { color: red } + +TABLE { color: black; } +TH { font-family: Arial, Helvetica; font-size: 12pt; font-weight: bold; } +TD { font-family: Arial, Helvetica; font-size: 12pt; } + +PRE { color: green; font-family: fixed; } +CODE { color: green; font-family: fixed; } +HR { border-top: solid medium navy } + + diff --git a/html/menus/control.html b/html/menus/control.html new file mode 100644 index 00000000..206d16d5 --- /dev/null +++ b/html/menus/control.html @@ -0,0 +1,134 @@ + + + + + + + + + + + +MBSE BBS Menus - Control Codes in ANSI and ASCII files. + + + +
    +
    Last update 25-Feb-2007
    +

    MBSE BBS Control Codes in ANSI and ASCII files

    +
    + + +

    Single Control characters

    +
    + Code      Description
    + ----      ---------------------------------------
    +  A        Wait for a key
    +  B        Print text above sec. level
    +  F        Control-code F
    +  K        Control-code K
    +  P        Wait one second
    +  U        Control-code U
    +
    +
    +
    +The control-B syntax is: ^B<seclevel>^B<The text to show>^B
    +For example: ^B32000^BThis is the text^B
    +

    + +

    Control-F followed by:

    +
    + Code      Description
    + ----      ---------------------------------------
    +  !        Display transfer protocol
    +  A        Number of uploads
    +  B        Number of downloads
    +  C        Downloads in Kilobytes
    +  D        Uploads in Kilobytes
    +  E        Download plus upload Kilobytes
    +  F        Download Kilobyte limit
    +  H        Current file area number
    +  I        Current file area description
    +  J        Download files limit
    +  K        Description of user limit
    +
    +
    +
    +

    + +

    Control-K followed by:

    +
    + Code      Description
    + ----      ---------------------------------------
    +  A        Print date in format DD-MM-YYYY
    +  B        Print time in HH:MM:SS
    +  C        Print date in DD-Mmm
    +  D        Print date in DD-Mmm-YYYY
    +  E        Print locked port baudrate
    +  F        Print the name of the Last caller
    +  G        Total users in userlist
    +  H        Number of system calls
    +  I        Current message area number
    +  J        Current message area description
    +  K        Print random oneliner
    +  L        Print number of messages in current area.
    +  M        Print users LastRead pointer of current message area.
    +  N        Print users current e-mail mailbox name.
    +  O        Print number of messages in current e-mail box.
    +  P        Print users LastRead pointer of current e-mail box.
    +  Q        Print the date and time of the last caller.
    +
    +
    +
    +

    + +

    Control-U followed by:

    +
    + Code      Description
    + ----      ---------------------------------------
    +  A        User's full name
    +  B        User's location
    +  C        User's voice phone
    +  D        User's data phone
    +  E        User's last login date
    +  F        User's first login date
    +  G        User's last login time
    +  H        User's security level
    +  I        User's total calls
    +  J        User's time used today
    +  K        User's connect time this session
    +  L        User's time left today
    +  M        User's screen length
    +  N        User's first name
    +  O        User's last name
    +  P        User's graphics mode allways (On).
    +  Q        User's news bulletins (On/Off)
    +  R        User's hot-keys (On/Off)
    +  S        User's daily time limit
    +  T        User's date of birth
    +  U        User's messages posted
    +  X        User's language
    +  Y        User's handle
    +  Z        User's do not disturb flag (On/Off)
    +  1        User's check for new mail (On/Off)
    +  2        User's check for new files (On/Off)
    +  3        User's fullscreen editor (On/Off)
    +  4        User's FS editor Emacs shortcuts (On/Off)
    +  5        User's first address line.
    +  6        User's Second address line.
    +  7        User's Third address line.
    +  8        User's OLR Extended Onfo (On/Off).
    +  9        User's charactewr set.
    +  0        User's current archiver.
    +
    +
    + +
    +Index +Main Index  +Back +Menus Index +
    + + + diff --git a/html/menus/index.htm b/html/menus/index.htm new file mode 100644 index 00000000..7a11ad32 --- /dev/null +++ b/html/menus/index.htm @@ -0,0 +1,181 @@ + + + + + + + + + + + +MBSE BBS Menu System. + + + +
    +
    Last update 11-Oct-2003
    +

    MBSE BBS Menu System

    + +

    Menus sections: +Global menus  +File areas  +Message areas  +User settings  +Onliners  +BBS lists  +ANSI Control Codes +

    +

    +


    + +

    Introduction.

    +

    +One of the most powerfull features of the BBS is it's menu system. You +have complete control over each individual menu item which can be restricted +according to criteria such as security levels. +

     

    + +

    ANSI Screens.

    +

    +For the menus to work properly you can draw ANSI screens, this +is what the users will see. For GNU/Linux there is "Duh DRAW" written by Ben +Fowler, see sunsite.unc.edu /pub/Lunux/docs. +If you can't find it or have no internet access, you can also use +THEDRAW. This utility can be found on many BBS'es around the world. Unfortunatly +it is a DOS program so you will need dosemu on your GNU/Linux box or a seperate +DOS computer. You can define main screens and include screens for each +menu, the include screen may for example show the keys that you have available +in every menu. See the list of control codes. +

     

    + +

    Display lines.

    +

    +It is also possible to display menu lines with the buildin display option. +The used colors are selectable, a normal color and a bright color. +The normal color is the default, you can toggle bright on and of using +the ^ in the display line. If you end a menu display line with a ; then +no newline is send after that line. If you want to output teh ^ or ; characters +you need to escape them with a backslash like this: \; or \^. The order of menu +entries is important. +

     

    + +

    Automatic commands.

    +

    +A menu function is usually executed when a user presses the hot-key +assigned to that particular menu item. But menu functions can also be executed +automatically. Each menu item contains an AutoExec field. By default this +field is set to No, but by toggling it to Yes, the menu item can be made +to execute when it is played back (displayed) by the BBS.

    +

    +As you read through the menu function types outlined in this chapter, +you may come to realize that this is a very powerfull feature. For example, +when used with the menu function that displays a text file, you can design +very elaborate, graphical text file menus that you wouldn't normally be +able to display in a line-by-line menu.

    +

    +Automatic menu execution can be used in many other instances as well. +Just to give you some ideas, it might be used to display a text file to +users who have a security level equal to or greater than a certain level. +Yet another use is to execute multiple function menus which are used to +execute several functions when a single command is entered. +

     

    + +

    Multiple languages.

    +

    +For each language you can define a set of menus. Only for the default +language all menus must exist. It makes sense to make the filenames of +your menus for each language the same and not to translate them. If a menu +is missing for a non default language, the menu from the default language +path is used instead. +

     

    + +

    Editing a menu.

    +

    +The order of the menu lines in the setup is not important except for +the autoexec menus, they must be placed in the right order from start, +ie. begin with the menu specific screen display, then the global include +display and finally show the prompt. +

    + +Menu editer +

      +
    1. Selection key. This is the key a user must press to activate +this menu. This field is ignored when AutoExec is set to Yes.
    2. + +
    3. Type nr. this is the menu type to execute. For a description +of all available types see the links at the top of this page.
    4. + +
    5. Optional data. Some menus need optional data, for example the +function goto another menu needs the name of that menu file here.
    6. + +
    7. Display. What is to be displayed to the user. You can use this instead +of ANSI screens. +
    8. + +
    9. Security. This is the minimum security level to execute this +selection. The security is a level number combined with 32 bitmapped flags. +NOTE: level 0 and no flags means +everyone can select this menu. Good for logout options and all other options +everyone must be able to execute.
    10. + +
    11. Min. age. The minumum age the user must be to execute this selection. +You may want to restrict access to certain areas to users older than 18 +years. If you leave this to 0, every one can execute this menu.
    12. + +
    13. Lo-colors. The normal display color for the display line. +
    14. + +
    15. Hi-colors. The bright display color for the display line.
    16. + +
    17. AutoExec. If this is an automatic executed selection.
    18. + +
    19. Door Name The name of the door that will be displayed to other users. +This name is also used to count the same doors running if the door only allows a +single user. It is important that you use the same name in every language menu +file for the same door. This item is only visible with menu type 7.
    20. + +
    21. Y2K style Writes the dates in the door.sys file in the new style, +with 4 digit year numbers, else the old 2 digit style is used. This item +is only visible with menu type 7.
    22. + +
    23. No door.sys Suppress writing of a door.sys file in the users +home directory. This item is only visible with menu type 7.
    24. + +
    25. Use Comport Writes COM1: with 19200 as baudrate to the door.sys file, +this is for dosemu with the vmodem patch. This item is only visible with menu +type 7.
    26. + +
    27. Run nosuid If set to Yes the door will run in non-suid mode. +Most doors need this. This item is only visible +with menu type 7.
    28. + +
    29. No Prompt If set to Yes then when the door is finished there will be +no prompt to press Enter, instead the bbs menu will show up immediatly. This +item is only visible with menu type 7.
    30. + +
    31. Single User Set to yes of the door only allows one user at the same +time. Make sure you have set a unique name that must be the same for the door in +every language file so that the bbs is able to count the instances of the door +running. This item is only visible with menu type 7.
    32. + +
    33. Hidden door Set to yes to hide the door from being visible for other +users. If someone is using that door the whoson list displays "External Door" +instead of the door name. This may be good to hide some special sysop only +doors. This item is only visible with menu type 7.
    34. + +
    +

     

    + +

    Final warning.

    +

    +If a submenu is missing, the BBS falls back to the main menu. This menu +must be called "main" (or else set another name in the global +setup) or your BBS won't start and complain. Submenus may be nested 50 +levels deep. +

    + +BackBack +

    + + diff --git a/html/menus/menu0.html b/html/menus/menu0.html new file mode 100644 index 00000000..49893cf0 --- /dev/null +++ b/html/menus/menu0.html @@ -0,0 +1,181 @@ + + + + + + + + + + + +MBSE BBS Menus - Global Menus. + + + +
    +
    Last update 01-Apr-2003
    +

    MBSE BBS Global Menus

    +
    + +
      + +
    1. Goto another menu: This will start the execution + of another menu. The current menu level is not stored on the stack.
      + Optional data: The name of the new menu.
      +

      + +

    2. Gosub another menu: This will start the execution + of another menu. The current menu level is stored on the stack. Gosub's may + be nested 50 levels deep.
      + Optional data: The name of the new menu.
      +

      + +

    3. Return from Gosub: This will go back one + gosub level. If you are already at the top level nothing happens.
      + Optional data: None.
      +

      + +

    4. Return to top menu: Return to the top (main) + menu. The name of this menu is set in the global setup. + Default is main.mnu
      + Optional data: None.
      +

      + +

    5. Display .a?? file with controlcodes: This will + display an ANSI file to the user. If the user has Graphics No set + then the ASCII version is shown. Search is done first in the users language + path and if that fails the default language path is used. + Control codes in the + file are substituted with the current values the represent.
      + Optional data: The name of the file to display. Do not + give the filename extension!
      +

      + +

    6. Show menu prompt: Display the menu prompt.
      + Optional data: The prompt to display. This string may + contain some control characters that are replaced with information. The + prompt is displayed in White on Black and is hardcoded at the moment. +
        +
      • ~ This will insert the number of minutes the user + has left. +
      • @ This will insert the name of the current file area. +
      • ^ This will insert the name of the current message area. +
      • # This will insert the current local time. +
      +

      + +

    7. Run external program: This will execute + external programs.
      + Optional data: The full path and filename of the external + program to run. There are a few switches you can give on the commandline: +
        +
      • /N will be replaced by the current nodenumber. The nodenumber is + faked by using the record number of the tty lines setup. +
      • /A will prompt for a filename to enter. The filename the user + enters is then replaced on the commandline. This is a dangerous option! +
      • /T=your prompt is an alternate prompt for entering a filename + if used together with the /A option. +
      +
      +

      + +

    8. Show product information: This will show + copyright information about MBSE BBS.
      + Optional data: None.
      +

      + +

    9. Display todays callers: This will display a + list of todays callers to the BBS.
      + Optional data: "/H" Show handles instead of real names, "/U" + show Unix names instead of real names.
      +

      + +

    10. Display userlist: Display all users in the + users database except those that are hidden.
      + Optional data: "/H" Show handles instead of real names, "/U" + show Unix names instead of real names.
      +

      + +

    11. Time statistics: Display the users time + statistics.
      + Optional data: None.
      +

      + +

    12. Page Sysop: Page sysop for a chat.
      + Optional data: A message to the user
      + The message to the user could be something like "Calling sysop, please + wait ..." or "I will see if Michiel wants to chat with you, please wait!" + As sysop you will know best what to put in that line. +

      + +

    13. Terminate call: Terminale this call and + hangup.
      + Optional data: None. +

      + +

    14. Make a log entry: This will write a line in + the logfile.
      + Optional data: The information you want in the logfile.
      +

      + +

    15. Print text to screen: Write text to the users + screen.
      + Optional data: The text that must appear on the users + screen. The @ character is replaced with a newline.
      +

      + +

    16. Who is online: Displays the who is online + list and what they are doing. Users that are hidden are not displayed.
      + Optional data: "/H" Show handles instead of real names, "/U" + show Unix names instead of real names.
      +

      + +

    17. Comment to sysop: Enter the texteditor and + let the user write a message to the sysop. The area is predefined in the + global setup.
      + Optional data: None.
      +

      + +

    18. Send online message: Send an online message + to a user on another line.
      + Optional data: "/H" Use handles instead of real names, "/U" + use Unix names instead of real names.
      +

      + +

    19. Display textfile with more: This will display + a textfile to the user. After each full screen the user is prompted with + More Y/n/=.
      + Optional data: The full path and filename to the file.
      +

      + +

    20. Display .a?? file with control codes and wait: + This will display a ANSI or ASCII file to the user with + control codes and wait for Enter when it is finished.
      + Optional data: The filename without extension of the + file to display.
      +

      + +

    21. Display line This entry does nothing except + that it displays the text on the display line. This is always displayed, + even if the display line is empty. In that case an empty line is displayed.
      + Optional data: None.
      +

      + +

    22. Chat session This connects the user to the + chatserver. The user is connected with his unix name as default name. The chat + server is a very simple IRC look alike server.
      + Optional data: None yet, maybe the channel later.
      +

      + +

    + +
    +Index + Main Index  +Back + Menus Index +
    + + + diff --git a/html/menus/menu100.html b/html/menus/menu100.html new file mode 100644 index 00000000..8cec5c46 --- /dev/null +++ b/html/menus/menu100.html @@ -0,0 +1,148 @@ + + + + + + + + + + + +MBSE BBS Menus - File Area Menus. + + + +
    +
    Last update 02-Feb-2001
    +

    MBSE BBS File Area Menus

    +
    + +
      + +
    1. Select another area: This option will show + a list of available areas and let the user select a new area. If there is + optional data the new area will be selected without user intervention.
      + Optional data: If there is an option the area is direct + selected. Current options are: F+ goto next available area. + F- goto previous available area.
      +

      + +

    2. File List: This option will display a list + of files with their dates, sizes and description. During the display of the + list the user can select (Tag) files for later download.
      + Optional data: None.
      +

      + +

    3. View File: Not yet implemented.
      + Optional data: None.
      +

      + +

    4. Download File(s): This option will start to + transmit files to the user if he has tagged files for download. Tagging files + for download can be done during File List, Keyword Scan, Filename Scan or + Newfile Scan. If a user didn't select a transfer protocol before now he will be + forced to select a file transfer protocol.
      + Optional Data: None.
      +

      + +

    5. Raw Directory: This option will display the + contents of a directory in raw format.
      + Optional data: If the option is /F the + contents of the current directory is shown. If the option is the full path + to a directory, the contents of that directory is shown.
      +

      + +

    6. Keyword Scan: This option will search for + files in the files database for a matching keyword. The search is not case + sensitive. If there are files found the user is able to select (Tag) these + files for later download.
      + Optional data: None.
      +

      + +

    7. Filename Scan: This option will search for + a filename match in the files database. The search is not case sensitive. + If there are files found the user is able to select (Tag) these files for + later download.
      + Optional data: None.
      +

      + +

    8. Newfiles Scan: This option will scan for new + files available for download since the last time the user was online. As + option the user can change that date from which to start the search. Any files + found the user may select (Tag) for later download.
      + Optional data: None.
      +

      + +

    9. Upload: This option will let the user upload + files to the bbs. If the current area has an alternate upload area, the upload + will end up in that area. If the user uses X-modem or another ancient protocol + he will first be asked for a filename. Normal modern protocols don't need this. + The filename is checked before the transfer is done to protect the bbs. Further + the files the user will upload will at first be placed under the users home + directory ~/upl. After the upload(s) the files are checked + for virusses. If all is well, the file is imported in the bbs. If the file + contains a valid FILE_ID.DIZ file inside the archive, that file will be used + for the description of the upload, if not, the uploader will have to describe + the file.
      + Optional data: None.
      +

      + +

    10. Edit Taglist: This option is for the user to + edit the list of files he has tagged for later download.
      + Optional data: None.
      +

      + +

    11. View file in homedir: Not yet implemented.
      + Optional data: None.
      +

      + +

    12. Download Direct: Download a file direct.
      + Optional data: The full path and filename to the file to + download.
      +

      + +

    13. Copy file to Homedir: This option will copy + a file from a download directory to the users home directory. It will be + checked if the user has enough room in his directory, the default Quota for + users is 10 MBytes.
      + Optional data: None.
      +

      + +

    14. List Homedir: This option will list the files + in the users home directory.
      + Optional data: None.
      +

      + +

    15. Delete in Homedir: This option will let the + user delete one or more files from his home directory.
      + Optional data: None.
      +

      + +

    16. Unpack file in Homedir: Not yet implemented.
      + Optional data: None.
      +

      + +

    17. Pack files in Homedir: Not yet implemented.
      + Optional data: None.
      +

      + +

    18. Download Homedir: This option will let the + user download from his home directory.
      + Optional data: None.
      +

      + +

    19. Upload Homedir: This option will let the user + upload files to his home directory.
      + Optional data: None.
      +
    + +
    +Index +Main Index  +Back +Menus Index +
    + + + diff --git a/html/menus/menu200.html b/html/menus/menu200.html new file mode 100644 index 00000000..aeed25f6 --- /dev/null +++ b/html/menus/menu200.html @@ -0,0 +1,153 @@ + + + + + + + + + + + +MBSE BBS Menus - Message Area Menus. + + + +
    +
    Last update 20-Feb-2003
    +

    MBSE BBS Message Area Menus

    +
    + +
      + +
    1. Select another area: This option will show + a list of all available areas and let the user select a new area. If there + is optional data the area will be selected without user intervention.
      + Optional data: If there is an option the area is direct + selected. Current options are M+ goto the next available + area. M- goto the previous available area. If you use the + U+ and U- instead, the area is changed to the + previous or next area with unread messages, areas without unread messages are + skipped.
      + Another option is the N, if this is used for area select the + areas with new unread mail are marked with a yellow star. +

      + +

    2. Post a Message: This option lets the user + post a new message.
      + Optional data: None.
      +

      + +

    3. Read Messages: This option lets the user + read messages. If he has done that before in that area he will be suggested + to start after the message he has last read. During reading of messages + the user can reply to other messages.
      + Optional data: None.
      +

      + +

    4. Check for Mail: Check for new arrived mail.
      + Optional data: None.
      +

      + +

    5. Quickscan Messages: Make a quick overview + list of all messages in that area.
      + Optional data: None.
      +

      + +

    6. Delete a Message: This option will let the + user delete a specific message. He must the the owner of that + message or have sysop rights in that area to be able to delete a message.
      + Optional data: None.
      +

      + +

    7. Mail Status: This gives a complete overview + of all available mail at the bbs.
      + Optional data: None.
      +

      + +

    8. OLR: Tag Area: This option lets + the user tag one or more areas to be included in his offline mail packet.
      + Optional data: None.
      +

      + +

    9. OLR: Untag Area: This option lets + the user untag one or more areas not to be included in his offline mail + packet.
      + Optional data: None.
      +

      + +

    10. OLR: View Tags: This option lets + the user view which areas will be included in his offline mail packet.
      + Optional data: None.
      +

      + +

    11. OLR: Restrict Date: Not yet + implemented.
      + Optional data: None.
      +

      + +

    12. OLR: Upload Mail: Let the user upload + mail or a new offline reader setup. The packet format is automatic detected. + Currently BlueWave is supported. QWK support will be added later.
      + Optional data: None.
      +

      + +

    13. OLR: Download BlueWave: Download mail in + BlueWave version 2 format.
      + Optional data: None.
      +

      + +

    14. OLR: Download QWK: Download mail in QWK + format.
      + Optional data: None.
      +

      + +

    15. OLR: Download ASCII: Download mail in flat + ASCII format. Not yet implemented.
      + Optional data: None.
      +

      + +

    16. Read Email Read users private email.
      + Optional data: None.
      +

      + +

    17. Write Email Post an email message.
      + Optional data: None.
      +

      + +

    18. Trash Email Put email in the trashcan. + Not Yet implemented.
      + Optional data: None.
      +

      + +

    19. Choose Mailbox Choose another private + mailbox. Valid boxes are: mailbox (normal in/out), archive and trash.
      + Optional data: If there is an option the area is direct + selected. Current options are M+ goto the next mailbox. + M- goto the previous mailbox.
      +

      + +

    20. Quickscan Email Make a quick overview + list of all messages in the selected e-mail area.
      + Optional data: None.
      +

      + +

    21. Show area rules Show the rules of a + echomail area if such rulefile is present in the rules directory. The file + seached for needs to have a name that is the same as the area tag, or the area + tag plus .rul, or the first eight characters of the area tag plus .rul like + the rulefiles in the elist package.
      + Optional data: None.
      +

      + +

    + +
    +Index +Main Index  +Back +Menus Index +
    + + + diff --git a/html/menus/menu300.html b/html/menus/menu300.html new file mode 100644 index 00000000..40a6ae58 --- /dev/null +++ b/html/menus/menu300.html @@ -0,0 +1,139 @@ + + + + + + + + + + + +MBSE BBS Menus - User Settings Menus. + + + +
    +
    Last update 01-Mar-2007
    +

    MBSE BBS User Settings Menus

    +
    + +
      + +
    1. Change Transfer Protocol: Let the user + select a new file transfer protocol.
      + Optional data: None.
      +

      + +

    2. Change Password: Let the user change + his FidoNet password.
      + Optional data: None.
      +

      + +

    3. Change Location: Let the user change + his location.
      + Optional data: None.
      +

      + +

    4. Obsolete: This command does not exist.
      + Optional data: None.
      +

      + +

    5. Change Voicephone: Let the user change + his voice phonenumber.
      + Optional data: None.
      +

      + +

    6. Change Dataphone: Let the user change + his data phonenumber.
      + Optional data: None.
      +

      + +

    7. Change Expertmode: This command will be + removed.
      + Optional data: None.
      +

      + +

    8. Obsolete: This command does not exist.
      + Optional data: None.
      +

      + +

    9. Change Date of Birth: Let the user set a + new date of birth. Check's are done if the date is more or less realistic. + This command should not be made available users if you use the regular + date of birth validation check.
      + Optional data: None.
      +

      + +

    10. Change Language: Let the user select a new + default language.
      + Optional data: None.
      +

      + +

    11. Change Hotkeys: Let the user toggle the + use of Hotkeys on or off..
      + Optional data: None.
      +

      + +

    12. Change Handle: Let the user select a new + handle (nickname).
      + Optional data: None.
      +

      + +

    13. Change Don't Disturb: Let the user toggle + the "do not disturb" flag.
      + Optional data: None.
      +

      + +

    14. Change check for new files: Let the user + toggle the "check for new files at logon" flag.
      + Optional data: None.
      +

      + +

    15. Change fullscreen editor: Let the user + toggle the "use fullscreen editor" flag.
      + Optional data: None.
      +

      + +

    16. Change FS edit shortcut keys: Let the user + toggle the "FS edit shortcut keys between Emacs/Wordstar" flag.
      + Optional data: None.
      +

      + +

    17. Change Address: Let the user change his + three lines home address.
      + Optional data: None.
      +

      + +

    18. Change signature: Let the user change + his mail signature file (.signature in his home directory). He is allowed + to edit at most 4 lines of 74 characters.
      + Optional data: None.
      +

      + +

    19. Change OLR Extended Info: Let the user toggle + the setting of the Offline Reader download of extended info (kludges).
      + Optional data: None.
      +

      + +

    20. Change character set: Let the user change + the default character set for messages.
      + Optional data: None.
      +

      + +

    21. Change archiver: Let the user change the + archhiver to use to build offline reader packages.
      + Optional data: None.
      +

      + +

    + +
    +Index +Main Index  +Back +Menus Index +
    + + + diff --git a/html/menus/menu400.html b/html/menus/menu400.html new file mode 100644 index 00000000..9d38cd6a --- /dev/null +++ b/html/menus/menu400.html @@ -0,0 +1,61 @@ + + + + + + + + + + + +MBSE BBS Menus - Oneliner Menus. + + + +
    +
    Last update 02-Feb-2001
    +

    MBSE BBS Oneliner Menus

    +
    + +
      + +
    1. Oneliner Add: Let the user add a new + oneliner.
      + Optional data: None.
      +

      + +

    2. Oneliner List: Let the user list all the + available oneliners.
      + Optional data: None.
      +

      + +

    3. Oneliner Show: Let the user show a + specific oneliner.
      + Optional data: None.
      +

      + +

    4. Oneliner Delete: Let the user delete a + oneliner. In order to do so he must be the owner of that oneliner or + he must have sysop access level. The oneliner is not really removed, only + marked for deletion.
      + Optional data: None.
      +

      + +

    5. Oneliner Print: Show a random chosen + oneliner on the screen. If you make this command automatic, each time that + this menu is executed a new oneliner will popup.
      + Optional data: None.
      +

      + +

    + +
    +Index +Main Index  +Back +Menus Index +
    + + + diff --git a/html/menus/menu500.html b/html/menus/menu500.html new file mode 100644 index 00000000..c82b5a7a --- /dev/null +++ b/html/menus/menu500.html @@ -0,0 +1,57 @@ + + + + + + + + + + + +MBSE BBS Menus - BBS List Menus. + + + +
    +
    Last update 02-Feb-2001
    +

    MBSE BBS BBS List Menus

    +
    + +
      + +
    1. Add a BBS: Let the user add a BBS to the + BBS advertising database.
      + Optional data: None.
      +

      + +

    2. List BBS'es: Show a list of BBS'es in the + BBS database.
      + Optional data: None.
      +

      + +

    3. Show BBS: Show a specific BBS.
      + Optional data: None.
      +

      + +

    4. Delete BBS: Delete a specific BBS. The BBS + must have been entered by the user or the user must have sysop rights to + be able to delete a BBS.
      + Optional data: None.
      +

      + +

    5. Search BBS: Search for a specific BBS.
      + Optional data: None.
      +

      + +

    + +
    +Index +Main Index  +Back +Menus Index +
    + + + diff --git a/html/mgetty.html b/html/mgetty.html new file mode 100644 index 00000000..a3e1afb4 --- /dev/null +++ b/html/mgetty.html @@ -0,0 +1,188 @@ + + + + + + + + + + + +Setup mgetty for MBSE BBS. + + + +
    +
    Last update 07-Jan-2002
    +

    Setup mgetty for MBSE BBS

    + +To handle incoming calls you can use mgetty written by +Gert Doering, (gert@greenie.muc.de). Others may work. You have to compile +mgetty with the -DFIDO flag to accept Fidonet mailer calls. +If you want incoming PPP calls as well, add the -DAUTO_PPP as well. If you want +to use ISDN, make sure you have ISDN support compiled in the kernel. +Below you can see the mgetty.config and login.config for mgetty that you may +need. +I have also included a part of my /etc/inittab to show how mgetty + will spawn from init. +

    + +


    +
    +# inittab       This is only a part of /etc/inittab!
    +#               In this example it runs in runlevel 3 and 4.
    +#
    +# Serial lines
    +s1:34:respawn:/usr/local/sbin/mgetty -i /opt/mbse/etc/issue ttyS0
    +#
    +# ISDN lines, two channels
    +I1:34:respawn:/usr/local/sbin/mgetty -i /opt/mbse/etc/issue ttyI0
    +I2:23:respawn:/usr/local/sbin/mgetty -i /opt/mbse/etc/issue ttyI1
    +#
    +# End of /etc/inittab
    +
    +
    +
    +# mgetty configuration file: mgetty.config
    +#
    +# ----- global section -----
    +#
    +# In this section, you put the global defaults, per-port stuff is below
    +#
    +# set the global debug level to "4" (default from policy.h)
    +debug 4
    +#
    +# set the local fax station id
    +fax-id ++31-255-515973
    +#
    +# access the modem(s) with 38400 bps
    +speed 38400
    +#
    +#  use these options to make the /dev/tty-device owned by "uucp.uucp" 
    +#  and mode "rw-rw-r--" (0664). *LEADING ZERO NEEDED!*
    +port-owner uucp
    +port-group uucp
    +port-mode 0664
    +#
    +#  use these options to make incoming faxes owned by "root.uucp" 
    +#  and mode "rw-r-----" (0640). *LEADING ZERO NEEDED!*
    +fax-owner root
    +fax-group uucp
    +fax-mode 0640
    +#
    +#
    +# ----- port specific section -----
    +# 
    +# Here you can put things that are valid only for one line, not the others
    +#
    +# Dynalink 1428EXTRA faxmodem at port 0 (COM1).
    +#
    +port ttyS0
    +speed 57600
    +switchbd 19200
    +modem-type cls2
    +init-chat "" \d\dAT&F&C1&D3X4W2B0M0Q0V1H0&K3S0=0 OK
    +#
    +#
    +# ISDN ports.
    +# With AT&E you set the MSN/EAZ the device should listen to.
    +# This should for an MSN be your telephone number _with_ the area
    +# code but _without_ the leading 0.  
    +# For an EAZ the last digit of your EAZ.
    +#
    +port ttyI0
    +modem-type data
    +init-chat "" ATZ OK AT&E714015437&W0 OK AT&B512 OK
    +#
    +port ttyI1
    +modem-type data
    +init-chat "" ATZ OK AT&E714017198&W0 OK AT&B512 OK
    +#
    +# end of mgetty.config
    +
    +
    +
    +# login.config
    +#
    +# This is a sample "login dispatcher" configuration file for mgetty
    +#
    +# Format:
    +#	username userid utmp_entry login_program [arguments]
    +#
    +# Meaning:
    +#       for a "username" entered at mgettys login: prompt, call
    +#	"login_program" with [arguments], with the uid set to "userid",
    +#	and a USER_PROCESS utmp entry with ut_user = "utmp_entry"
    +#
    +#
    +# Use this one for fido calls (login name /FIDO/ is handled specially)
    +#
    +#  mgetty has to be compiled with "-DFIDO", otherwise a fido call won't
    +#  be detected.
    +#
    +/FIDO/	mbse	fido	/opt/mbse/bin/mbcico @
    +#
    +#
    +# Automatic PPP startup on receipt of LCP configure request (AutoPPP).
    +#  mgetty has to be compiled with "-DAUTO_PPP" for this to work.
    +#  Warning: Case is significant, AUTOPPP or autoppp won't work!
    +#  Consult the "pppd" man page to find pppd options that work for you.
    +#  See also PPP-HOWTO on how to set this up.
    +#
    +/AutoPPP/ -	a_ppp	/etc/ppp/paplogin
    +#
    +# This is the "standard" behaviour - *dont* set a userid or utmp
    +#  entry here, otherwise /bin/login will fail!
    +#  This entry isn't really necessary: if it's missing, the built-in
    +#  default will do exactly this.
    +#  Here we replace the standard login with MBSE BBS login:
    +#
    +*	-	-	/opt/mbse/bin/mblogin @
    +#
    +#
    +# end of login.config
    +
    +
    + +

    +I have added the -i /opt/mbse/etc/issue options to the +mgetty line in /etc/inittab. +The file /opt/mbse/etc/issue is a plain textfile to give a small banner just +before the login prompt. +It could look like this:
    +

    +
    +        .--.     Welcome at MBSE BBS Development.
    +       |o_o |    --------------------------------
    +       |:_/ |
    +      //   \ \   This may or may not work today...
    +     (|     | )
    +    /'\_   _/`\
    +    \___)=(___/  
    +Powered by GNU/Linux.
    +
    +
    +There is a default /opt/mbse/etc/issue installed by the installation script. +You need to edit this to insert your bbs name in it or even completely replace +this file for a nicer one. Don't make it too big, don't put control characters +or ANSI sequences in it as this may prevent some mailers to connect to your system. +

    +I discovered that some systems don't have the right permissions on the serial +port for MBSE BBS. To fix this type the following commands: +

    +su
    +password: enter root password here
    +chmod 666 /dev/ttyS0
    +chown uucp.uucp /dev/ttyS0
    +exit
    +
    +Note that /dev/ttyS0 is for COM1, /dev/ttyS1 for COM2 etc. This is not a nice +solution. If youre system allows it, try to add the the user mbse as +a legal user of your serial ports. Most distributions have some tool for this. +

    + +BackGo Back +

    + + diff --git a/html/misc/dropfile.html b/html/misc/dropfile.html new file mode 100644 index 00000000..549b4617 --- /dev/null +++ b/html/misc/dropfile.html @@ -0,0 +1,114 @@ + + + + + + + + + + + +BBS doors dropfiles. + + + +
    +
    Last update 23-May-2003
    +

    BBS doors dropfiles.

    + +

    Dropfiles for Unix BBS systems.

    +

    +Not all options that are available under DOS or OS/2 can be used with Unix +BBS systems and must be faked. The doorfiles are written in the users +homedirectory when the user starts a door. +

     

    + +

    DOOR.SYS format.

    +

    +The door.sys format is a 52 lines ascii textfile, each line is terminated with +a cr/lf pair. In the setup it is possible to force the creation of MM-DD-YYYY +dates instead of the MM-DD-YY style. Newer doors sometimes need that. +

    +Line	Description
    +-----	-----------------------------------------------------------------
    +1	Port, 5 characters in DOS format, COM1: or COM0:
    +2	Effective Baudrate, 19200 or 0 for COM0:
    +3	Databits, always 8
    +4	Nodenumber, 1..9999
    +5	Locked baudrate, 19200 or tty portspeed for COM0:
    +6	Screen display, Y=snoop on, N=snoop off, on Unix allways Y.
    +7	Printer Y=on N=off, on Unix always N
    +8	Page Bell Y=on N=off, on Unix allways Y
    +9	Caller alarm Y=on N=off, on Unix allways Y
    +10	Users first name and lastname
    +11	Users location
    +12	Voice/Home phone
    +13	Work/Dataphone
    +14	Users password.
    +15	Security level, 0..32768
    +16	Users number of calls
    +17	Users last call date MM-DD-YY or MM-DD-YYYY
    +18	Seconds remaining this call
    +19	Time left in minutes
    +20	ANSI, "GR" is yes, otherwise "NG"
    +21	Screen length
    +22	User mode, always N
    +23	Always blank
    +24	Always blank
    +25	Subscription expire date MM-DD-YY or MM-DD-YYYY
    +26	Users record number
    +27	Default protocol
    +28	Users total number of uploads
    +29	Users total number of downloads
    +30	Users daily download kilobytes total
    +31	Daily download kilobyte limit
    +32	Users date of birth MM-DD-YY or MM-DD-YYYY
    +33	Path to users database files, cannot be used on Unix
    +34	Path to message database files, cannot be used on Unix
    +35	Sysop first and last name
    +36	Users handle
    +37	Next event starting time, "none" on Unix
    +38	Error-free connection Y=Yes or N=No, always Y
    +39	Always set to N
    +40	Always set to Y
    +41	Text color as defined in setup 7 = gray.
    +42	Always 0
    +43	Last new files scan date MM-DD-YY or MM-DD-YYYY
    +44	Time of this call HH:MM
    +45	Time of last call HH:MM
    +46	Always set to 32768
    +47	Number of files downloaded today
    +48	Total kilobytes uploaded
    +49	Total kilobytes downloaded
    +50	Comment stored in users record
    +51	Always set to 0
    +52	Total number of messages posted
    +
    +

     

    + +

    DOOR.SYS format.

    +

    +The door32.sys format is a 11 lines ascii textfile, each line is terminated with +a cr/lf pair. +

       
    +Line	Description
    +-----	-----------------------------------------------------------------
    +1	Com type: 1=serial, 2=telnet, with mbse always 1
    +2	Com port: 1 or 0 for local mode
    +3	Effective baudrate: 19200 or 0
    +4	BBS name
    +5	User record number
    +6	User's real name
    +7	User's handle
    +8	User's security level
    +9	Time left in minutes
    +10	Graphicsmode: 1 or 0
    +11	Node (line) number
    +
    + +BackGo Back +
    + + + diff --git a/html/misc/filefind.html b/html/misc/filefind.html new file mode 100644 index 00000000..069afd78 --- /dev/null +++ b/html/misc/filefind.html @@ -0,0 +1,332 @@ + + + + + + + + + + + +Implementation and Usage of FileFind Utilities. + + +
    + Document:   fsc-00xx
    + Version:    0.6
    + Date        Aug 30, 1995
    + Title:      Implementation and Usage of FileFind Utilities
    + Authors:    Robert Williamson FidoNet#1:167/104.0  robert@ecs.mtlnet.org
    +
    +  Intro
    +
    +    A portion of the document is derived from information in
    +      AllFix.DOC by Harald Harms @ 2:281/910
    +    with  additional  sections  from
    +      FQuery.DOC by Robert Williamson @ 1:167/104
    +
    +        The  MSdos program ALLFIX by Harald Harms first introduced the idea
    +    of searching for files via echomail.  The term applied to this function
    +    is  'FileFind'.   A FileFind system allows sysops, points and BBS users
    +    to  search  for  files  by  placing  a  message  to 'ALLFIX' in an echo
    +    designated  for  the purpose of finding files.  All FTN sites running a
    +    FileFind  processor which is configured to scan that echo will reply to
    +    that  user if there any files matching his query.  This system provides
    +    a  method  for  searching  many  FTN sites throughout the world, with a
    +    single message.
    +
    +        FileFind  programs  work by either scanning through defined message
    +    bases or scanning packets for defined AREA tagnames for messages to the
    +    default  name  ALLFIX.   All FileFind programs MUST respond to the name
    +    ALLFIX,  but  may also respond to the name FILEFIND and the name of the
    +    particular  FileFind  program  in  use  or  defined  for the echo.  The
    +    FileFind  program  will  process  these messages, examining the Subject
    +    field  for  search  queries.  If any valid query is found, the FileFind
    +    program  will  search  the  sites files database for files matching the
    +    users's query.
    +
    +        If the FileFind program finds any matches, it will generate a reply
    +    containing  a list of the files found, and some basic information ABOUT
    +    the  system  posting  the reply.  When the user who initially wrote the
    +    request  reads  the reply, he will then be able to decide if any of the
    +    reported  files  meet  his  needs,  and  from the ABOUT included in the
    +    reply, learn where and how he may get those files.
    +
    +
    +  FileFind Query Message Structure
    +
    +    To: name_of_FileFind program
    +
    +    The  message  must be addressed to ALLFIX so that all FileFind programs
    +    can  respond.   To  use  features  specific  to  a  particular FileFind
    +    program,  or  to  limit  the  responses  to  a particular platform, the
    +    message  should  be  addressed  to  that program's name.  Some FileFind
    +    programs  will  respond  to more than two names.
    +
    +    Subject:
    +    A  space-separated  list  of  file  specifications,  keywords or quoted
    +    strings.
    +
    +    keyword     - single word preceeded by a '/' with no intervening spaces,
    +                  must be at least 3 characters, not including the '/'.
    +                  a keyword search is in actually a substring search of the
    +                  site's filelist.
    +
    +    description - string enclosed in double-quotes,
    +                  if a single word, must be more than 3 characters.
    +
    +    filespec    - single word, no spaces, no double-quotes or preceding /,
    +                  must be at least 3 characters, not including any wildcard
    +                  or pattern matching charcaters, such as '*'.
    +                  Messages addressed to ALLFIX must not have any embedded
    +                  pattern matching characters.
    +
    +
    +        The  minimum  number  of  characters  for  description, keyword and
    +    filespec  queries  is an implementation detail of the FileFind program.
    +    These  values  should  be configurable, but should never be settable to
    +    values of less than 3.
    +
    +        Each  implementation  should  allow  the  operator  the  ability to
    +    configure a list of disallowed keywords.
    +
    +  NetMail Queries
    +
    +        Some  FileFind  programs  may also have the ability to process file
    +    search  queries  received  as  netmail and addressed to the name of the
    +    particular  FileFInd  program  with this capability.  In this case, all
    +    replies are via netmail also.
    +
    +  NetMail Commands
    +        FileFind   Netmail   commands  are  identifed  by  a  leading  '%'.
    +    Implementation  of  netmail  commands  is  optional.   If  implemented,
    +    compliant  FileFind  utilities  should be able to process the following
    +    minimum NetMail command set.
    +
    +
    +    %HELP       - netmail only, returns an extended help text for the
    +                  FileFind program, the ABOUT of the the site and a list
    +                  of MAGIC freqable names.
    +    %ABOUT      - netmail only, returns the ABOUT of the site and a full
    + or %MAGIC        list of MAGIC names.
    +
    +    %NEWFILES   - netmail only, returns the NEWFILES list of the site
    + or %NEW          via netmail.
    +
    +    Extended NetMail Commands:
    +        Implementation  of  the  following netmail commands is optional and
    +    not required for compliance with the FileFind NetMail Command set.
    +
    +    %REPORT <tagname>
    +                - sends a configuration report for echo <tagname>
    +                  this allows an echo moderator to check if a site running
    +                  a  FileFind  utility  is  compliant with the rules of the
    +                  filefind echo.
    +
    +    %REQUEST <filename>
    +                - if found, will place requested file on hold for remote
    +                  site
    +
    +    %UUREQUEST <filename>
    +                - if  found,  and  the filesize after uuencoding is less
    +                  than 60K, it will be sent as multiple netmail messages
    +
    +
    +  The Site ABOUT
    +
    +        Obviously,  a  system that neither accepts file requests nor allows
    +    users  to  download  on  their  first  call should not be responding to
    +    FileFind  messages.   If  there  are  any limitations for the caller to
    +    acquire  any  of  the  files  that  the  site  has  advertised as being
    +    available  in  it's FileFind response, these limitations MUST be listed
    +    in  the  reply.   This information should be included in the ABOUT file
    +    that the FileFind program user creates.
    +
    +        The  site  ABOUT  should  contain  the  following information.  The
    +    FileFind  program  implementor  should  instruct  his  users  on  these
    +    requirements.
    +
    +      - sitename
    +      - site operator's name
    +      - complete phonenumber
    +      - baud rate
    +      - hours during which filerequests are accepted, if at all
    +      - hours during which users can download
    +      - conditions for file requests and user downloads
    +      NOTE: the above information should be within the first 14 lines.
    +      optional:
    +      - a list a MAGIC names
    +      - an indication if magic names are also available to terminal users.
    +
    +  Searching for Files and Creating Replies
    +
    +        The  method  used by the FileFind program to search for requests is
    +    up  to  the  implementor.   However,  if searching a list, the FileFind
    +    program should confirm the actual existance of all files that match the
    +    query specification.
    +
    +        The  FileFind  program  should  only  process  description strings,
    +    filespecs  or  keywords  that  contain more than 3 valid characters and
    +    should  have configuration options to define greater minimum lengths on
    +    a per-echo basis.
    +
    +        For  filespecs,  the  wildcard  character '*' IS considered a valid
    +    specification  as  well  as the '?' wildcard, but only the '?' is to be
    +    counted  as  a  character  when  determining the length of query.  File
    +    extensions  are  not necessary and any characters AFTER a '*' are to be
    +    ignored.   The  FileFind  program should be configurable so as to allow
    +    replacement  all  of the file extensions with '.*' or '#?' dependant on
    +    platform.   This  results  in  queries being independant of the various
    +    archivers in use.
    +
    +    Replies
    +
    +        Replies  created  by  FileFind  utilities  are  expected  to  be in
    +    compliance with the following FTN specifications:
    +        FTS-0001    -  packed message format
    +        FTS-0009    -  MSGID/REPLY
    +        FSC-0046    -  PID and tear line
    +
    +        In  addition, a FileFind utility may use the FID:  control line for
    +    any  information needed that cannot be put in a PID:  without violating
    +    that specification.
    +
    +        ^AFID: ascii text CR
    +
    +    Must be less than 80 characters including ^A and terminating CR.
    +
    +    There  are three ways in which the FileFind program can create replies:
    +        - write the replies in the echo in which the query appeared.
    +        - write the replies in an echo that has been specifically
    +          designated for that purpose in the particular FTN or for
    +          a gorup of echos in that FTN.
    +        - reply via routed netmail.
    +
    +        Since each FTN site connected to a particular FileFind program area
    +    is  capable  of creating an information reply, there is much concern as
    +    to  the  amount  of  traffic  that  can  be generated, FileFind program
    +    developers  must  be sensitive to these concerns by providing the means
    +    to  their users to limit the traffic on a per-echo basis.  For example,
    +    various  FileFind  echos  have  rules  limiting  the  size or number of
    +    replies,  or  the length of the system information that may be included
    +    in a reply.
    +
    +  Limiting replies
    +
    +    It is strongly suggested that some default limitations be built-in.
    +
    +    Limiting Site Header (ABOUT):
    +
    +        If the site's ABOUT, (the text that has been configured in order to
    +    add  the  system's  information  and Magic names list to the reply), is
    +    greater  than  14  lines,  the  remainder should NOT be posted.  A line
    +    should  be  added  to  the response indicated this, and the user may be
    +    invited to either Freq or download the MAGIC name's ABOUT or MAGIC, for
    +    a  full  list of magic names.  The FileFind program may optionally send
    +    the full system information and magic name list via routed netmail.
    +
    +    Limiting Match List due to ambiguity of query:
    +
    +        If  the list of matches (note:  not the size of the message itself)
    +    is  greater than 32K, the FileFind program should post a message to the
    +    user to indicate that his query may have been too ambiguous and perhaps
    +    invite him to freq or download the MAGIC name FILES for a full list.
    +
    +    Splitting Match List into Multiple Messages:
    +
    +        If the list of matches is greater than 10K, it should be split into
    +    multiple  messages  of  no more than 8K.  Although the backbone permits
    +    messages  up  to  16K  in length, 8K is a more readable size.  Only the
    +    first  split  message  may  contain  the ABOUT information of the site.
    +    Each  message must be given both a unique Subject field (eg:  prepended
    +    by  "Part n/n") and a unique MSGID:.  This because some tossers may use
    +    either or both for dupe detection.
    +
    +    Limiting Number of Split Messages:
    +
    +        If  the  number of messages is greater than the preset limit of the
    +    echo,  and  the FileFind Program does not have an option to forward the
    +    replies  via  netmail,  the  replies  should  be discarded and the user
    +    informed that his request may have been too amibiguous.
    +
    +
    +    NetMail Reply:
    +
    +        The  FileFind program may have an option to forward all replies via
    +    routed netmail, or to do so under certain conditions as outlined above.
    +    Obviously, if the FileFind program can process netmail queries, it MUST
    +    respond via netmail.
    +
    +    User NetMail Reply Request:
    +
    +        Alternativly the user can request a netmail reply for his echomail
    +    query by preceeding the query with either "%" or "!".
    +      eg;
    +        Subject:  % /fsc /fts
    +
    +        If  the  FileFind  program  does  not support this feature, it must
    +    ignore  any  echomail  query message that has a "%" or "!" as the first
    +    WORD of the Subject field.
    +
    +    Second Reply or Extended Response Request:
    +
    +        The  FileFind  site  indicates  availablility  of  Second  Reply by
    +    placing the string 'program_name 4d_address' in the From:  field of the
    +    message.
    +        eg: FROM: FQUERY 1:167/104.0
    +
    +        When a user replies to a FileFind reply, the message will be to the
    +    FileFind  program  @  {network  address}.  When processing the FileFind
    +    conferences, the FileFind program will treat any message to itself that
    +    includes the site address as a Second Reply Request.
    +
    +        If  this feature is available, the FileFind program will include up
    +    to  a maximum of 15 files (maximum 12K match list) in it's replies.  If
    +    the  user  wants  a  more  detailed  listing,  he simply replies to the
    +    FileFind  program's  reply.   Only  the system that posted the original
    +    reply  will  respond to that new request.  This second, specific reply,
    +    will  contain  up  to  50  files (32K of matchlist) either including or
    +    SKIPPING the first 15.  These numbers may be replaced by byte limits in
    +    some implementations.
    +
    +    No Second Reply in Designated Reply Echo:
    +
    +        The Designated Reply Echo method does not allow replies to be made,
    +    because  the FileFind program may not be permitted to scan a Designated
    +    Reply  Echo.  The FileFind program should automatically report up to 50
    +    files  for any requests.  Therefore, the traffic limitaion features may
    +    be  disabled for networks that require the FileFind program to reply in
    +    a Designated Reply Echo, and disallow Second Reply in that echo.
    +
    +    Disable Local Messages:
    +
    +        The  FileFind  program must be able to to disable the processing of
    +    local  messages.  What this means is that the FileFind program will not
    +    process  any messages generated on that FTN site, including messages by
    +    the  sysop  using  an  offline  reader,  or by a site's BBS or off-line
    +    reader users.  This should NOT exclude messages from a site's points.
    +
    +
    +    Limit by Age:
    +
    +        The  FileFind program must be configurable so that the operator can
    +    limit  the  age  of an query message that is acceptable for processing.
    +    This  should  be  in  number  of  days.   The  FileFind  program may be
    +    configured  to  process all the FileFind requests regardless of how old
    +    they are.  Age should never be greater than 365 days.
    +
    +    LinkMGR Support:
    +        Implmentors  may choose to support the LinkMGR proposal for netmail
    +    queries  and  commands.   In this proposal, the queries and commands do
    +    not  appear  in  the  subject  field but rather, in the the BODY of the
    +    message.  The subject field wil contain the LinkMGR password.
    +        Use of the LinkMGR method allows the user to send multiple commands
    +    to the fIleFind program.
    +
    + +BackGo Back + + + + diff --git a/html/misc/fileid.html b/html/misc/fileid.html new file mode 100644 index 00000000..2df5a824 --- /dev/null +++ b/html/misc/fileid.html @@ -0,0 +1,388 @@ + + + + + + + + + + + +FILE_ID.DIZ Information. + + + +
    +FILEID.TXT v1.8 by Richard Holler [CIS 73567,1547]
    +Last Revision 05/05/94
    +
    +This text file was prepared at the request of the ASP (Association of 
    +Shareware Professionals), but the information contained in it may be of 
    +value to any shareware author.
    +
    +
    +FILE_ID.DIZ INFORMATION
    +-----------------------
    +Basically, the FILE_ID.DIZ file is a straight ASCII text file, distributed 
    +inside your distribution archive file along with your program files, which 
    +contains a description of your program. This file will be used by most BBS 
    +(Bulletin Board System) softwares for the online file description of your 
    +file. We recommend that the FILE_ID.DIZ file be used in all of your 
    +distribution archives. 
    +
    +This text file contains a description of the FILE_ID.DIZ file, as well as a 
    +description of the recommended distribution archive format.
    +
    +
    +WHY SHOULD YOU USE FILE_ID.DIZ?
    +-------------------------------
    +The use of this file will insure that the online description of your 
    +program will be in your own words (and who better to describe your program 
    +than yourself?), and that it will remain the same no matter how many 
    +different people upload your file to various BBS systems. 
    +
    +As more and more BBS software makes use of this file, you can be assured 
    +that your own description will replace such online descriptions as "Cool 
    +Program" or "OK utility, but needs better ..."
    +
    +Please note that the ASP Hub Network, the Author Direct FDN (File 
    +Distribution Network), and the majority of other electronic distribution 
    +services *REQUIRE* that a valid FILE_ID.DIZ file be contained in your 
    +submitted distribution archive. If your file doesn't contain a valid 
    +FILE_ID.DIZ file, then it simply won't be distributed by these services. 
    +Furthermore, most BBS sysops will not accept uploads of files which do not 
    +contain a valid FILE_ID.DIZ file, so you automatically lose out on that 
    +distribution as well.
    +
    +
    +DESCRIPTION:
    +------------
    +FILE_ID.DIZ was created by Clark Development for use with their PCBDescribe 
    +utility, as a means for BBS callers to upload a file without having to 
    +manually type in a file description. It also ensures that the online 
    +description is always the same regardless of the number of different BBS 
    +systems the file is posted on. It has since been accepted by the BBS 
    +industry more-or-less as the "standard" file description source. (The 
    +extension of "DIZ" actually stands for "Description In Zip").
    +
    +NOTE: The FILE_ID.DIZ file *MUST* be named exactly that, and *NOT* 
    +something like <filename>.DIZ. It will *ONLY* be used if it is named 
    +FILE_ID.DIZ!
    +
    +The FILE_ID.DIZ file is nothing more than a straight ASCII text file which 
    +contains the full description of the archived file containing it. It is 
    +used by most popular BBS software to describe your program, rather than 
    +using the description supplied by the person that uploaded your file. It 
    +should be placed *INSIDE* your distribution archive file.
    +
    +The BBS software will "look" inside the archive file. If a FILE_ID.DIZ file 
    +is found, it will replace any existing online file description with the 
    +text contained in FILE_ID.DIZ. It is an excellent method for making sure 
    +that your program files are described the way that "you" want them 
    +described. Even sysops who's software can't automatically make use of the 
    +FILE_ID.DIZ file have found it to be an excellent source for their manually 
    +added file descriptions.
    +
    +
    +STRUCTURE:
    +----------
    +The file consists of straight ASCII text, up to 10 lines of text, each line 
    +being no more than 45 characters long. It should *NOT* contain any blank 
    +lines, any form of centering or formatting, or any Hi-ASCII or ANSI 
    +characters. (i.e. it should ONLY contain alpha & numeric characters).
    +
    +We recommended that it consist of 5 basic parts:
    +
    +   1. the proper name of your program
    +   2. the version number
    +   3. the "ASP" identifier (optional, for ASP members)
    +   4. the description separator
    +   4. the description
    +
    +All of the above parts should be separated by a single "space".
    +
    +PROGRAM NAME: To set it apart from the rest, it is recommended that you use 
    +ALL CAPS for the program name.
    +
    +VERSION NUMBER: The version number should be in the form of "v12.34". 
    +
    +ASP IDENTIFIER: If you are an ASP author, we recommend that an "<ASP>" 
    +identifying mark be added after the version number, to identify your 
    +product as an ASP-authored product.
    +
    +DESCRIPTION SEPARATOR: To separate the actual description text, insert a 
    +simple "-" (dash/minus) character after the ASP identifier (or version 
    +number, if not using the ASP identifier), and in front of the description 
    +text.
    +
    +DESCRIPTION: You should attempt to FULLY describe your product, including 
    +its most important functions and features. Be sure to include anything 
    +which will separate your program from it's competition, and make the BBS 
    +user want to download your file. Also try to include any hardware or 
    +software requirements that your product may have.
    +
    +You should try to use the first 2 lines of the text to give a basic 
    +description of your program. This is helpful for sysops who's BBS software 
    +limits them to less than 10 lines, 45 characters. Sysops who are limited to 
    +using shorter descriptions can simply use the 1st two lines and truncate 
    +the rest. Thus, you can basically still supply your own description for BBS 
    +software which does not actually utilize the FILE_ID.DIZ feature.
    +
    +The remaining lines of text can be used to elaborate on the programs 
    +features, enhancements from the prior version, information concerning 
    +multi-file sets. Please note that older versions of some BBS software can 
    +only use 8 lines of text. It is advisable that you create your FILE_ID.DIZ 
    +file so that the file can be truncated to various line lengths without 
    +destroying it's usefulness.
    +
    +
    +EXAMPLE
    +-------
    +MY PROGRAM v1.23 <ASP> - A program which will
    +do anything for anybody. Will run in only 2k
    +of memory. Can be run from the command line,
    +or installed as a TSR. Completely menu-
    +driven. Version 1.23 reduces the previous 4k
    +memory requirements, and adds an enhanced
    +graphical user interface. Also, MY PROGRAM 
    +now contains Windows and DESQview support. 
    +Coming soon - an OS/2 version.
    +From Do-It-All Software, Inc. $15.00
    +
    +
    +MULTIPLE DISK INFO
    +------------------
    +Please note that if your distribution archive requires multiple archive 
    +files, you should create a separate, specific FILE_ID.DIZ file for each 
    +archive. This can be utilized to describe the various contents of each 
    +archive, and to identify each disk in the set. For example, the FILE_ID.DIZ 
    +file for disk #1 could contain:
    +
    +   "MY PROGRAM v1.23 <ASP> Program Executable 
    +    Files - Disk 1 of 2"
    +    [followed by detailed description text]
    +
    +while the FILE_ID.DIZ file for disk #2 could contain:
    +
    +   "MY PROGRAM v1.23 <ASP> Documentation Files - 
    +    Disk 2 of 2"
    +    [followed by more detailed description text]
    +
    +Optionally, you could also create a "complete" FILE_ID.DIZ file for the 
    +first disk, which would fully describe the program in detail, and identify 
    +it as Disk 1 of x. Then, for each remaining file in the set, simply include 
    +the Program Name, version number, ASP identifier, and the disk number (i.e. 
    +"MY PROGRAM v1.23 <ASP> Disk 2 of x").
    +
    +
    +ADDITIONAL INFO
    +---------------
    +Please don't be tempted to use fancy graphic or ANSI sequences in the 
    +FILE_ID.DIZ file, as most BBS software will not allow this, and will render 
    +your FILE_ID.DIZ file useless. Also, don't be tempted to simply copy your 
    +program description file to FILE_ID.DIZ. Attempting to "format" your 
    +FILE_ID.DIZ file (i.e line centering, right & left justification, etc) will 
    +also cause unexpected results, especially for BBS software which re-formats 
    +descriptions to other than 10line/45char.
    +
    +Fred Hill <ASP> has written a freeware utility which interactively creates 
    +a valid FILE_ID.DIZ file. The file is called DIZGEN.ZIP and can be found on 
    +CompuServe (GO IBMBBS, Library 2) as well as on many fine BBS systems. I 
    +highly recommend that you download a copy of this wonderful utility for 
    +creating your FILE_ID.DIZ files.
    +
    +==========================================================================
    +
    +The following is a recommendation for the structure and contents of 
    +distribution archives prepared for use on BBS systems.
    +
    +
    +DISTRIBUTION DISK RECOMMENDATIONS
    +---------------------------------
    +The following are recommendations for preparing your program files for 
    +distribution to Bulletin Board Systems (BBSs) via the ASP's distribution 
    +services, as well as other methods.
    +
    +Two varieties of program files are defined here:
    +
    +1) Program files which utilize an "install" utility and self-extracting 
    +program archives (later referred to as "Author-Installed Programs").
    +
    +2) Programs files which do not use install utilities or self-extracting 
    +archives (later referred to as "User-Installed Programs").
    +
    +
    +AUTHOR-INSTALLED PROGRAMS:
    +--------------------------
    +These programs require a bit more work from the author, but will eliminate 
    +many user mistakes, especially in programs which require complicated 
    +setups.
    +
    +Most "installation" utility programs will make use of program files which 
    +have been "archived" into Self-Extracting (SFX) archives. We will attempt 
    +to define which files should be contained in the Self-Extracting archives, 
    +and which files should not.
    +
    +1. Files which should be contained in the self-extracting program file
    +archive:
    +
    +        a. All program-specific executable files.
    +        b. Any required configuration and/or data files required by the
    +           program.
    +        c. Program documentation files. Optionally, these may be left
    +           outside of the self-extracting archive, in order to allow
    +           them to be viewed/read by the various archive viewing utlities.
    +        d. Any other program-specific files that are required for the
    +           operation of the program.
    +
    +2. The files described above should be compiled into a self-extracting 
    +archive file, which will then be extracted by the install utility.
    +
    +NOTE: the author is required to abide by any distribution requirements 
    +specified by the archive utility author, and to obtain any required 
    +distribution rights necessary. Please check to see if distribution rights 
    +are required for your archive utility choice.
    +
    +3. Files which should NOT be contained in the self-extracting program file 
    +archive:
    +
    +        a. The install utility itself (obviously).
    +        b. The FILE_ID.DIZ file. (described in detail in the section
    +           preceding this one)
    +        c. Any distribution/information files, such as VENDOR.TXT,
    +           SYSOP.TXT, etc.
    +        d. Any description or information file, such as DESCRIBE.TXT.
    +        e. A user file (such as README.1ST), which should explain how
    +           to use the install utility, what the user should expect
    +           during the installation, and any preparation that the user
    +           should make prior to the installation. This file might also
    +           contain a brief description of your program, in case the user
    +           is able to read the documentation files in the distribution
    +           archive prior to downloading (many BBS systems offer this
    +           ability to the user).
    +
    +4. The actual distribution archive file (described below) should then 
    +contain the install utility, the self-extracting program archive, and the 
    +files described in #3 above.
    +
    +
    +USER-INSTALLED PROGRAMS:
    +------------------------
    +This type of distribution archive is much simpler than the Author-Installed 
    +variety. It should simply be an archive file, containing all of the files 
    +for the program described above.
    +
    +Since this type of program requires the user to do all of the installation 
    +manually, it should contain very specific and detailed information 
    +regarding the installation requirements (such as INSTALL.TXT).
    +
    +
    +THE DISTRIBUTION ARCHIVE FILE:
    +------------------------------
    +The actual distribution archive file should merely be an archive file 
    +containing the files described above. For BBS distribution, this archive 
    +should be of the standard archive format, and -NOT- a self-extracting 
    +archive.  Many sysops will not allow self-extracting archives, and most BBS 
    +software will not allow self-extracting archives to be uploaded.
    +
    +There are many popular archive utilities available, such as PKZIP, LHA, 
    +LHARC, ARJ, etc. Most BBS systems are capable of handling archives in 
    +virtually any format. However, you should be aware that most BBS systems 
    +will convert your archive format to the format of choice by the sysop. By 
    +following the methods described above, this conversion process should not 
    +affect your program, or any self-extracting files which are contained 
    +within your distribution archive file.
    +
    +You should also retain the default archive file extension defined by the 
    +archive utility. For example, PKZIP uses a ".ZIP", LHARC uses "LZH", etc. 
    +Changing the file extension may cause the BBS software to delete your file 
    +because it doesn't recognize the format.
    +
    +For the actual filename for your distribution archive, it is recommended 
    +that the program filename be limited to 6 characters to represent the 
    +program's name (i.e. MYPROG could represent "My Program"). This should be 
    +followed by 2 numeric digits which will represent the version number of 
    +your release. Even if this is your initial release it should include the 
    +version number in the filename (i.e. MYPROG10.ZIP would indicate the 
    +program called "My Program" version 1.0).
    +
    +Please note that CompuServe limits filenames to only 6 characters. By 
    +limiting the file "name" to 6 characters, you will easily be able to rename 
    +the archive for CompuServe uploading by simply removing the 2-digit version 
    +identifier, to make the file compatible with CompuServe libraries.
    +
    +By including the 2-digit version number in the archive filename, it will be 
    +very easy for both the user and the sysop (and yourself) to identify older 
    +versions of your program.
    +
    +
    +MULTIPLE DISTRIBUTION ARCHIVES
    +------------------------------
    +At one time, it was recommended that your final distribution archive not be 
    +larger than 350k, so that it would fit on a single 360k floppy disk and 
    +still leave room for any distribution files necessary for Disk Vendors. 
    +(i.e. Disk Vendors will often include their own GO.BAT file, or other 
    +various small files to help their customers install the software). This 
    +limitation is slowly falling by the wayside as more and more computer 
    +systems have 3.5" floppy disk drives as standard.
    +
    +If your program is large enough to require more than one distribution 
    +archive, it is recommended that your filename be limited to 5 characters 
    +rather than 6 as described above. Following the 5-character name should be 
    +the same 2-digit version number. Then, append a single "letter" to identify 
    +the disk (i.e. MYPGM10A.ZIP, MYPGM10B.ZIP, etc.). For uploading to 
    +CompuServe, these filenames may then be shortened to 6 characters by 
    +removing the version identifiers (i.e. MYPGMA.ZIP, MYPGMB.ZIP). However, 
    +for CompuServe it is recommended that you simply create a single 
    +distibution file, and eliminate the multi-part file set.
    +
    +If your program requires multiple distribution archives, -BE SURE- to 
    +create separate FILE_ID.DIZ files for each distribution archive. Also, each 
    +FILE_ID.DIZ file should contain disk number information pertaining to each 
    +individual archive (i.e. Disk 1 of 3, Disk 2 of 3, etc.).
    +
    +
    +THE DISTRIBUTION DISK
    +---------------------
    +It is recommended that your distribution disk simply contain a ZIPd version 
    +of your product. However, If you choose to supply "unarchived" files on a 
    +distribution disk for Disk Vendor use, it is _VERY_ important that you 
    +specify in your documentation a suggested archive filename, so that BBS 
    +sysops can create archived files with the proper author-specified 
    +filenames. This information should be contained in your SYSOP.TXT (or 
    +VENDOR.TXT) file. If you don't supply a suggested archive file name, the 
    +sysops will be forced to create the name themselves, thus you may end up 
    +with thousands of versions of your products on BBS systems all over the 
    +world, but all with different filenames.
    +
    +Please note that the ASP Hub Network, and nearly every other electronic 
    +distribution service *REQUIRE* that your files be submitted as an archived 
    +file, using the ZIP format. Also note that many BBS sysops will not go to 
    +the trouble of ZIPing your unarchived files for you. If you don't supply 
    +them with an archived distribution version of your product, it might not 
    +get distributed by BBSs.
    +
    +If you supply your own disk labels, it is recommended that the ASP logo, or 
    +at least the initials "ASP" be included on the label, so that anyone can 
    +immediately identify your disk as an ASP member's software.
    +
    +
    +SUMMARY
    +-------
    +Your distribution disk should now be ready to submit to the various BBSs, 
    +distribution services, and Disk Vendors.
    +
    +You may choose to create a separate distribution disk for use by BBSs and 
    +Disk Vendors. However, if you follow the above steps in preparing your 
    +distribution archive file, a separate "Disk Vendor" disk is probably not 
    +necessary. The majority of disk vendors will be able to accept your 
    +distribution file/disk if it is prepared in the above described format.
    +
    +
    + +BackGo Back + + + + diff --git a/html/misc/ftpserver.html b/html/misc/ftpserver.html new file mode 100644 index 00000000..96285add --- /dev/null +++ b/html/misc/ftpserver.html @@ -0,0 +1,108 @@ + + + + + + + + + + + +Howto setup an FTP server to work with MBSE BBS. + + + +
    +
    Last update 03-Sep-2005
    +

    How to setup an FTP server to work with MBSE BBS.

    + +In order to let MBSE BBS and your FTP server to both function together you must +organize a special file structure. Note that even if you don't setup an FTP +server you must still create a structure like this for the fidonet mailer, +if you don't, mail and files will get lost! +This description is written for ProFTPD, +on your distribution there may be another ftpd installed. +Read the section for the webserver as well. +

    +

    The filestructure I used is as follows:

    +
    +/opt/mbse/ftp/pub/dos_util/dos_4dos	- Public download areas
    +         |   |   |        /dos_disk
    +         |   |   |        /dos_file
    +         |   |   /virnet/mcafee
    +         |   |   |      /win16
    +         |   |   |      /win32
    +	 |   |   /css/files.css         - Stylesheet for http download
    +         |   /incoming			- FTP public upload.
    +         /var/bso/outbound		- Your default outbound
    +             |   /outbound.009		- Outbound Zone 9
    +             /inbound		        - Inbound directory
    +             /private/upload		- Non-public download areas
    +             |       /sysop
    +             |       /logfiles
    +             /tic_queue			- Queue for .tic files.
    +
    +
    +To let this work you need to change the default anonymous directory of the +ftp server to /opt/mbse/pub. As root, edit /etc/passwd with the vipw +command. Look for the entry of the ftp user and change his homedirectory to +/opt/mbse/ftp. You may also use the command usermod -d /opt/mbse/ftp ftp +to do the same. For a start the default configuration file for ProFTPD will do +fine. If you want to let users upload into the incoming directory, you need to +change /etc/proftpd.conf file to allow that. + +

    +If another DOS/Windows style mailer has access to your MBSE outbound you must +set the DOS path and Unix path in mbsetup (1.4.12 and 1.4.13) to +"m:" and "/opt/mbse". Note that to get +forwarding of .tic files to work the tic_queue must be a +subdirectory of "/opt/mbse" too. You could actually use any drive letter for +the DOS path.
    +This means that a fidonet file attach from the dos_4dos public download +directory shall get the subject "M:\FTP\PUB\DOS_UTIL\DOS_4DOS\COMMAND.ZIP". +Only use this if you need it! +

    + +As you can see, anonymous ftp users can't get to the mail, non-public +downloads etc. Normally, your BBS users have unix accounts and will be able +to do a ftp login and access any directory on your system. Because the bbs +users have mbsebbs as their shell and this shell is not in the file +/etc/shells the ftp daemon will not let the bbs users in. So even +your own bbs users must login as anonymous to get files from the ftp server. +

    +The following is a list of file permissions when using ProFTPD: +

    + +

    +Directory               	owner group mode perms
    +------------------------------- ----- ----- ---- ----------
    +/opt/mbse			mbse  bbs   0775 drwxrxxr-x
    +/opt/mbse/ftp			root  root  0755 drxxr-xr-x
    +/opt/mbse/ftp/pub		mbse  bbs   0755 drwxr-xr-x
    +/opt/mbse/ftp/incoming   	ftp   ftp   0755 drwxr-xr-x
    +
    +
    +Note that all subdirectories under ../pub also must be owned by mbse + and group bbs and have at least mode 755 as long +as it are real bbs subdirectories. The bbs will maintain these directories +automatic and must have the rights to do so. + +

    +In the /opt/mbse/ftp/etc/group file, add the group bbs so that your directory +listings give the proper groupname instead of a number. +

    + +If you want to increase the download counters when files are downloaded via ftp +you must make sure that the ftp daemon logs the downloads to a xferlog +file, for example /var/log/xferlog. This logfile must be readable by user mbse. +Then in mbsetup menu 1.13.5 enter full filename and path to this logfile. +The mball program will parse this file and increase the download counters +for the files that are downloaded from the bbs. +

    + +BackGo Back +

    + + + diff --git a/html/misc/index.htm b/html/misc/index.htm new file mode 100644 index 00000000..7fd0f041 --- /dev/null +++ b/html/misc/index.htm @@ -0,0 +1,46 @@ + + + + + + + + + + + +Miscellaneous Documents + + + +
    +
    Last update 10-Feb-2001
    +

    Miscellaneous Documents

    + +

    Introduction

    +

    +This is an overview of used unofficial documents for the development of the +MBSE BBS package. +

    +


    +

    Documents

    + + +
    + +IndexBack to Index +
    + + + diff --git a/html/misc/ipmailer.html b/html/misc/ipmailer.html new file mode 100644 index 00000000..e4075d35 --- /dev/null +++ b/html/misc/ipmailer.html @@ -0,0 +1,174 @@ + + + + + + + + + + + +Integration of IP-Nodes in the nodelist. + + + +
    +Publication:    FSP-????
    +Revision:       1
    +Title:          Integration of IP-Nodes in the nodelist (FTS-0005)
    +Author:         Lothar Behet, 2:2446/301
    +Revision Date:  25 October 1998
    +Expiry Date:
    +----------------------------------------------------------------------
    +
    +Contents:
    +1. Required fields according to FTS-0005, basic flags for ip-nodes
    +2. Optional extensions
    +3. Addendum
    +----------------------------------------------------------------------
    +
    +1.  Description of the nodelist format
    +--------------------------------------
    +
    +Every node entry contains the following 8 fields:
    +
    +keyword,node_number,node_name,location,sysop_name,
    +phone_number,baud_rate,flags
    +
    +Certain fields have defined values according to FTS-0005.
    +
    +1.1.	Implementation for IP-connectivity
    +	Because of the limited characterset in the phone_field and
    +	to avoid any misinterpretion by conventional dialing, the
    +	ip-specific address-information is entered in another field
    +	and there are additional flags required.
    +
    +1.1.1.  Field #1 (keyword) is PVT for an ip-only node without
    +	conventional phone number related connectivity. In this
    +	case, the phone field contains "-Unpublished-" according
    +	to FTS-0005.
    +
    +1.1.2.  Field #2 (node_number) contains the node number within his
    +	net and zone.
    +
    +1.1.3.  Field #3 (node_name) is used for the FQDN (Fully Qualified
    +	Domain Name) or the ip-address.
    +
    +1.1.4.  Field #4 (location) contains the geographical location of
    +	the node. While some nets/regions cannot supply their
    +	ip-only nodes with a adequate link, these nodes may be
    +	collected in a seperate net or region, until their original
    +	net/region support additional ip-connectivity. This special
    +	net/region is definitely a temporary solution for routing
    +	within a region or zone!
    +
    +1.1.5.  Field #5 (sysop_name) represants the name of the system
    +	operator.
    +
    +1.1.6.  Field #6 (phone_number) contains the phone_number for
    +	conventional connectivity. In case of an ip-only node
    +	it must contain "-Unpublished-".
    +
    +1.1.7.  Field #7 (baud_rate) contains the maximum baud rate for
    +	conventional connectivity or 300 in case of an ip_only node.
    +
    +1.1.8.  Field #8 (flags) represents operational definitions for the
    +	node.
    +	Note that these are user flags.
    +	The ip-flags consist of two parts:
    +	A basic transport and an optional non-standard port,
    +	seperated by a colon.
    +	The default port may be omitted, but is listed as optional
    +	parameter in this document. In some cases, two flag names
    +	are mentioned:
    +	The second one is supported by some software nowadays, but
    +	these values may conflict with other programs, which not
    +	completely decode the length of each individual flag (i.e.
    +	TELN conflicts with the T-flag for online-time)
    +	Additional flags for ip-nodes are:
    +
    +1.1.8.1.  IBN[:24554] (Argus: BND[:24554])
    +	BinkP protocol
    +
    +1.1.8.2.  IFC[:60179]
    +	Raw protocol as used by ifcico
    +
    +1.1.8.3.  ITN[:23] (Argus: TEL[:23])
    +	Telnet protocol. Some variants of ifcico support Telnet
    +	on port 60177, which should be added as additional flag
    +	ITN:60177.
    +
    +1.1.8.4.  IVM[:3141]
    +	Vmodem protocol
    +
    +1.1.8.5.  IP
    +	General flag for special protocol specifications, if the
    +	flags conforming to 1.1.8.1. to 1.1.8.4. are not relevant.
    +
    +1.1.9.  Comments on the proposed nodelist flags
    +	The additional flagnames in () are supported at this moment
    +	by Argus, based on the use in z2r50. But the TEL[NET]-flag
    +	stays in conflict with the generally in all zones and
    +	regions used T-flag (online time according to FSC-0062).
    +
    +
    +2.  Optional extensions for future use
    +--------------------------------------
    +
    +While the above mentioned flags (1.1.8.1 to 1.1.8.4) define a
    +minimum set of operational flags for ip-nodes, several additions
    +are already foreseeable at this moment.
    +
    +2.1.	Additional sessions_handshake parameters
    +	There is at least one program, which supports several
    +	transport protocols according to chapter 1.1.8. on a
    +	single port. If other programs should imitate this habit,
    +	then the following extension to the flag suite 1.1.8.
    +	(transport[:port[:handshake]])is advised:
    +
    +2.1.1.  FTS-0001 session handshake:   1
    +2.1.2.  Yoohoo session handshake  :   Y
    +2.1.3.  EMSI sessions handshake   :   E
    +2.1.4.  BinkP sessions handshake  :   B
    +
    +2.2.	Non-handshaking protocols
    +	While the definitions until this chapter describe direct
    +	handshaking sessions with optional password authentification,
    +	there are several other methods for the tunneling of fidonet
    +	data via the internet available.
    +	The setup of these connections does not rely on the nodelist
    +	(at this moment of writing), but we can think of standard
    +	setup procedures to use the nodelist for configuration of
    +	this additional transport methods.
    +	Therefore the following flags 2.2.1. to 2.2.4. are advised
    +	for at least informational purpose.
    +
    +2.2.1.  IFT
    +	FTP (File Transfer Protocol)
    +
    +2.2.2.  ITX
    +	TransX, an Email based variant
    +
    +2.2.3.  IUC
    +	Uuencoded packet (one packet per message)
    +
    +2.2.4.  IEM
    +	Email based (generally, without exact specification at
    +	this moment)
    +
    +
    +3.  Addendum
    +------------
    +
    +This proposal is based on a maximum compatibility to generally used
    +definitions and standards within the Fidonet community.
    +Future developments might make additions necessary, if they can not
    +be expressed with the existing set of flags as defined by this FSP.
    +
    + +BackGo Back + + + + diff --git a/html/misc/jam.html b/html/misc/jam.html new file mode 100644 index 00000000..0ad4d724 --- /dev/null +++ b/html/misc/jam.html @@ -0,0 +1,640 @@ + + + + + + + + + + + +JAM Message Base Proposal. + + + +
    +Filename....: JAM-001
    +Rev.........: 001
    +Dated.......: 93-07-01
    +Status .....: Released
    +Subject.....: JAM message base proposal
    +Author......: Joaquim Homrighausen
    +Co-Authors..: Andrew Milner, Mats Birch, Mats Wallin
    +
    +    ---------------------------------------------------------------------
    +                                  JAM(mbp)
    +                The Joaquim-Andrew-Mats Message Base Proposal
    +    ---------------------------------------------------------------------
    +            Copyright 1993 Joaquim Homrighausen, Andrew Milner,
    +                           Mats Birch, Mats Wallin.
    +                             ALL RIGHTS RESERVED.
    +    ---------------------------------------------------------------------
    +
    +
    +    =====================================================================
    +    Restrictions
    +    ---------------------------------------------------------------------
    +    JAM may be used by any developer as long as these specifications are
    +    followed exactly. JAM may be used free-of-charge by any developer
    +    for any purpose, commercially or otherwise.
    +
    +    This document may be freely copied and distributed, but must NEVER be
    +    distributed in a modified form. If you have an enhancement request,
    +    please contact the author of this document; do not change it
    +    yourself.
    +
    +    All applications that support JAM must include one of the following
    +    notices in their documentation and somewhere in the product's credit
    +    section:
    +
    +    "JAM(mbp) - Copyright 1993 Joaquim Homrighausen, Andrew Milner,
    +                               Mats Birch, Mats Wallin.
    +                               ALL RIGHTS RESERVED."
    +
    +    or
    +
    +    "This product uses the JAM(mbp) API -
    +     Copyright 1993 Joaquim Homrighausen, Andrew Milner, Mats Birch,
    +                    Mats Wallin. ALL RIGHTS RESERVED."
    +
    +    No organization, company, person, entity, or other being may impose
    +    any fees for any reason for providing this document or the
    +    accompanying API. This document and the accompanying API may not be
    +    sold or otherwise transferred for personal or company gain under any
    +    circumstances.
    +
    +    =====================================================================
    +    Definitions and general notes
    +    ---------------------------------------------------------------------
    +    CURRENTREV                1
    +
    +    JAM                       The JAM message base format.
    +
    +    CRC                       Cyclic Redundancy Check. All CRC values
    +                              calculated on strings must assume that the
    +                              data within the string has been converted
    +                              to lowercase (A-Z = a-z).
    +
    +    CRC-32                    32-bit CRC (as used in the Zmodem file
    +                              transfer protocol) value. The polynom for
    +                              a CRC-32 is edb88320H and the CRC-32 seed
    +                              is -1L (ffffffffH).
    +
    +    uchar                     Unsigned 8-bit value
    +
    +    ushort                    Unsigned 16-bit value
    +
    +    ulong                     Unsigned 32-bit value
    +
    +    UNIX date                 An ulong representing the number of seconds
    +                              since midnight, January 1, 1970. UNIX-style
    +                              dates is the only form of time stamps used
    +                              in JAM (1).
    +
    +    Message #                 The physical record number within the index
    +                              file is used as a message number. The
    +                              lowest message number is one (1) and the
    +                              highest message number is 4294967295
    +                              (ffffffffH).
    +
    +    FTN                       FidoNet Technology Network
    +
    +    FTS                       FidoNet Technical Standard
    +
    +    (1) All timestamps created locally (i.e. those not imported from
    +        other systems) are stored in local time.
    +
    +    =====================================================================
    +    Files
    +    ---------------------------------------------------------------------
    +    Each conference is made up from four files. How and where these files
    +    are stored and named is implementation dependant. The only file with
    +    a fixed minimum size is the .JHR (header data) file. It has a 1024-
    +    byte block used to hold information about a specific message area as
    +    described later.
    +
    +    filename.JHR - Message header data
    +    filename.JDT - Message text data
    +    filename.JDX - Message index
    +    filename.JLR - Lastread information
    +
    +    A future revision of JAM may also include a file that holds the
    +    following three items:
    +
    +      - The highest assigned user number
    +      - The last generated message ID
    +      - A global conference list with the conference name, description,
    +        and physical location of the message base.
    +
    +    =====================================================================
    +    .JHR file header
    +    ---------------------------------------------------------------------
    +    Below is the format of the 1024-byte record at the beginning of all
    +    .JHR files. The first actual message header starts at offset 1024 in
    +    the .JHR file.
    +
    +    FixedHeaderInfoStruct:
    +        ulong   Signature;       // <J><A><M> followed by <NUL>
    +        ulong   datecreated;     // Creation date
    +        ulong   modcounter;      // Update counter
    +        ulong   activemsgs;      // Number of active (not deleted) msgs
    +        ulong   passwordcrc;     // CRC-32 of password to access
    +        ulong   basemsgnum;      // Lowest message number in index file
    +        uchar   RESERVED[1000];  // Reserved space
    +    end;
    +
    +    MODCOUNTER must be incremented and updated on disk each time an
    +    application modifies the contents of the message base. When it
    +    reaches ffffffffH, it wraps to zero.
    +
    +    ---------------------------------------------------------------------
    +    BaseMsgNum                        Lowest message number in index file
    +    ---------------------------------------------------------------------
    +    This field determines the lowest message number in the index file.
    +    The value for this field is one (1) when a message area is first
    +    created. By using this field, a message area can be packed (deleted
    +    messages are removed) without renumbering it. If BaseMsgNum contains
    +    500, the first index record points to message number 500.
    +
    +    BaseMsgNum has to be taken into account when an application
    +    calculates the next available message number (for creating new
    +    messages) as well as the highest and lowest message number in a
    +    message area.
    +
    +    ---------------------------------------------------------------------
    +    ????????.JHR                                          Message headers
    +    ---------------------------------------------------------------------
    +    The .JHR file contains none or more Header records. Each record
    +    define one message and contains information about the message and its
    +    text (if any). The Header record is of variable length. The layout of
    +    the Header record follows.
    +
    +    MessageHeader:
    +        MessageFixedHeader:
    +            ulong  Signature;    // <J><A><M> followed by <NUL>
    +            ushort Revision;     // Revision level of header          (1)
    +            ushort ReservedWord; // Reserved for future use
    +            ulong  SubfieldLen;  // Length of subfields               (2)
    +            ulong  TimesRead;    // Number of times message read
    +            ulong  MSGIDcrc;     // CRC-32 of MSGID line              (3)
    +            ulong  REPLYcrc;     // CRC-32 of REPLY line              (3)
    +            ulong  ReplyTo;      // This msg is a reply to..
    +            ulong  Reply1st;     // First reply to this msg
    +            ulong  Replynext;    // Next msg in reply chain
    +            ulong  DateWritten;  // When msg was written
    +            ulong  DateReceived; // When msg was read by recipient
    +            ulong  DateProcessed;// When msg was processed by tosser/
    +                                 // scanner
    +            ulong  MessageNumber;// Message number (1-based)
    +            ulong  Attribute;    // Msg attribute, see "Msg Attributes"
    +            ulong  Attribute2;   // Reserved for future use
    +            ulong  Offset;       // Offset of text in ????????.JDT file
    +            ulong  TxtLen;       // Length of message text
    +            ulong  PasswordCRC;  // CRC-32 of password to access message
    +            ulong  Cost;         // Cost of message
    +        end;
    +        SubField1                // Extra fields as defined below
    +        .
    +        .
    +        SubFieldXX
    +    end;
    +
    +    (1) This field is intended for future revisions of the specifications
    +        to allow the use of a different fixed-length binary message
    +        header. The current revision level is one (1).
    +
    +    (2) The SubfieldLen field is set to zero (0) if the header does not
    +        have any subfield data. I.e. the length of the binary header is
    +        not included in this field.
    +
    +    (3) When calculating the CRC-32 of the MSGID and REPLY lines, the
    +        text ^aMSGID: and ^aREPLY: should be removed as well as all
    +        leading and trailing white space characters.
    +
    +
    +    The SubField structure is made up of an ID, a length specifier, and
    +    a block of data. Zero or more subfields may follow the fixed-length
    +    binary header. SubFields are not stored in any specific order and
    +    are not terminated by any specific character unless otherwise
    +    specified.
    +
    +    SubField:
    +        ushort  LoID;            // Field ID, 0-65535
    +        ushort  HiID;            // Reserved for future use
    +        ulong   datlen;          // Length of buffer that follows
    +        uchar   Buffer[datlen];  // DATLEN bytes of data
    +    end;
    +
    +    ---------------------------------------------------------------------
    +    Defined LoID codes
    +    ---------------------------------------------------------------------
    +
    +    ID=0, Name=OADDRESS
    +
    +    A network address. This is used to specify the originating address.
    +    More than one OADDRESS field may exist. DATLEN must not exceed 100
    +    characters. For a FidoNet-style address, this field must follow the
    +    ZONE:NET/NODE.POINT@DOMAIN format where .POINT is excluded if zero
    +    and @DOMAIN is excluded if unknown.
    +
    +
    +    ID=1, Name=DADDRESS
    +
    +    A network address. This is used to specify the destination address.
    +    More than one DADDRESS field may exist (e.g. carbon copies). DATLEN
    +    must not exceed 100 characters. For a FidoNet-style address, this
    +    field must follow the ZONE:NET/NODE.POINT@DOMAIN format where .POINT
    +    is excluded if zero and @DOMAIN is excluded if unknown.
    +
    +
    +    ID=2, Name=SENDERNAME
    +
    +    The sender (author) of the message. DATLEN must not exceed 100
    +    characters.
    +
    +
    +    ID=3, Name=RECEIVERNAME
    +
    +    The recipient of the message. DATLEN must not exceed 100 characters.
    +
    +
    +    ID=4, Name=MSGID
    +
    +    Used to store the message identification data. All data not relevant
    +    to the actual ID string, including leading and trailing white space
    +    characters should be removed. DATLEN must not exceed 100 characters.
    +
    +
    +    ID=5, Name=REPLYID
    +
    +    Used to store the message reply data. All data not relevant to the
    +    actual reply string, including leading and trailing white space
    +    characters should be removed. DATLEN must not exceed 100 characters.
    +
    +
    +    ID=6, Name=SUBJECT
    +
    +    The subject of the message. DATLEN must not exceed 100 characters.
    +    Note that this field may not be used for FidoNet-style file attaches
    +    or file requests.
    +
    +
    +    ID=7, Name=PID
    +
    +    Used to store the FTN PID kludge line. Only the actual PID data is
    +    stored and ^aPID: is stripped along with any leading and trailing
    +    white space characters. DATLEN must not exceed 40 characters.
    +
    +
    +    ID=8, Name=TRACE
    +
    +    This is also referred to as ^aVia information in FTNs. It contains
    +    information about a system which the message has travelled through.
    +    The format of the field is <YYYYMMDDHHMMSS><Network address> where:
    +
    +       YYYY is the year (1992-9999)
    +         MM is the month (01-12)
    +         DD is the day (01-31)
    +         HH is the hour (00-23)
    +         MM is the minute (00-59)
    +         SS is the second (00-59)
    +
    +    The timestamp is stored in ASCII (0-9) characters. The network
    +    address is the address of the system. It is expressed in ASCII
    +    notation in the native format of the forwarding system.
    +
    +
    +    ID=9, Name=ENCLOSEDFILE
    +
    +    A file attached to the message. Only one filename may be specified
    +    per subfield. No wildcard characters are allowed. If this subfield
    +    is present in a message header, the ATTRIBUTE must include the
    +    MSG_FILEATTACH bit.
    +
    +
    +    ID=10, Name=ENCLOSEDFILEWALIAS
    +
    +    Identical to ENCLOSEDFILE with the exception that the filename is
    +    followed by a <NUL> (00H) and an alias filename to be transmited to
    +    the remote system in place of the local name of the file.
    +
    +
    +    ID=11, Name=ENCLOSEDFREQ
    +
    +    A request for one or more files. Only one filemask may be specified
    +    per subfield. If the filemask contains a complete path, it is to be
    +    regarded as an update file request. If this subfield is present in a
    +    message header, the ATTRIBUTE must include the MSG_FILEREQUEST bit.
    +    To indicate that a password is to be transmitted along with the
    +    request, a <NUL> (00H) character followed by the password is
    +    appended. E.g. SECRET*.*<NUL>MYPASSWORD.
    +
    +
    +    ID=12, Name=ENCLOSEDFILEWCARD
    +
    +    One or more files attached to the message. Only one filename may be
    +    specified per subfield. Wildcard characters are allowed. If this
    +    subfield is present in a message header, the ATTRIBUTE must include
    +    the MSG_FILEATTACH bit.
    +
    +
    +    ID=13, Name=ENCLOSEDINDIRECTFILE
    +
    +    One or more files attached to the message. The filename points to an
    +    ASCII file with one filename entry per line. If alias filenames are
    +    to be used, they are specified after the actual filename and
    +    separated by a <NUL> (00H) character, e.g. C:\MYFILE.LZH<NUL>NEWS.
    +    Wildcard characters are not allowed.
    +
    +
    +    ID=1000, Name=EMBINDAT
    +
    +    Reserved for future use.
    +
    +
    +    ID=2000, Name=FTSKLUDGE
    +
    +    An FTS-compliant "kludge" line not otherwise represented here. All
    +    data not relevant to the actual kludge line, including leading and
    +    trailing white space and ^A (01H) characters should be removed.
    +    DATLEN must not exceed 255 characters. The FTS kludges INTL, TOPT,
    +    and FMPT must never be stored as separate SubFields. Their data must
    +    be extracted and used for the address SubFields.
    +
    +
    +    ID=2001, Name=SEENBY2D
    +
    +    Used to store two-dimensional (net/node) SEEN-BY information often
    +    used in FTN conference environments. Only the actual SEEN-BY data is
    +    stored and ^aSEEN-BY: or SEEN-BY: is stripped along with any leading
    +    and trailing white space characters.
    +
    +
    +    ID=2002, Name=PATH2D
    +
    +    Used to store two-dimensional (net/node) PATH information often used
    +    in FTN conference environments. Only the actual PATH data is stored
    +    and ^aPATH: is stripped along with any leading and trailing white
    +    space characters.
    +
    +
    +    ID=2003, Name=FLAGS
    +
    +    Used to store the FTN FLAGS kludge information. Note that all FLAG
    +    options that have binary representation in the JAM message header
    +    must be removed from the FLAGS string prior to storing it. Only
    +    the actual flags option string is stored and ^aFLAGS is stripped
    +    along with any leading and trailing white space characters.
    +
    +
    +    ID=2004, Name=TZUTCINFO
    +
    +    Time zone information. This subfield consists of four mandatory
    +    bytes and one optional. The first character may be a plus (+) or a
    +    minus (-) character to indicate a location east (plus) or west
    +    (minus) of UTC 0000. The plus character is implied unless the first
    +    character is a minus character. The following four bytes must be
    +    digits in the range zero through nine and indicates the offset in
    +    hours and minutes. E.g. 0100 indicates an offset of one hour east of
    +    UTC.
    +
    +    ---------------------------------------------------------------------
    +    Message attributes
    +    ---------------------------------------------------------------------
    +    MSG_LOCAL       (0x00000001L)   // Msg created locally
    +    MSG_INTRANSIT   (0x00000002L)   // Msg is in-transit
    +    MSG_PRIVATE     (0x00000004L)   // Private
    +    MSG_READ        (0x00000008L)   // Read by addressee
    +    MSG_SENT        (0x00000010L)   // Sent to remote
    +    MSG_KILLSENT    (0x00000020L)   // Kill when sent
    +    MSG_ARCHIVESENT (0x00000040L)   // Archive when sent
    +    MSG_HOLD        (0x00000080L)   // Hold for pick-up
    +    MSG_CRASH       (0x00000100L)   // Crash
    +    MSG_IMMEDIATE   (0x00000200L)   // Send Msg now, ignore restrictions
    +    MSG_DIRECT      (0x00000400L)   // Send directly to destination
    +    MSG_GATE        (0x00000800L)   // Send via gateway
    +    MSG_FILEREQUEST (0x00001000L)   // File request
    +    MSG_FILEATTACH  (0x00002000L)   // File(s) attached to Msg
    +    MSG_TRUNCFILE   (0x00004000L)   // Truncate file(s) when sent
    +    MSG_KILLFILE    (0x00008000L)   // Delete file(s) when sent
    +    MSG_RECEIPTREQ  (0x00010000L)   // Return receipt requested
    +    MSG_CONFIRMREQ  (0x00020000L)   // Confirmation receipt requested
    +    MSG_ORPHAN      (0x00040000L)   // Unknown destination
    +    MSG_ENCRYPT     (0x00080000L)   // Msg text is encrypted          (1)
    +    MSG_COMPRESS    (0x00100000L)   // Msg text is compressed         (1)
    +    MSG_ESCAPED     (0x00200000L)   // Msg text is seven bit ASCII    (1)
    +    MSG_FPU         (0x00400000L)   // Force pickup
    +    MSG_TYPELOCAL   (0x00800000L)   // Msg is for local use only
    +    MSG_TYPEECHO    (0x01000000L)   // Msg is for conference distribution
    +    MSG_TYPENET     (0x02000000L)   // Msg is direct network mail
    +    MSG_NODISP      (0x20000000L)   // Msg may not be displayed to user
    +    MSG_LOCKED      (0x40000000L)   // Msg is locked, no editing possible
    +    MSG_DELETED     (0x80000000L)   // Msg is deleted
    +
    +    (1) This revision of JAM does not include compression, encryption, or
    +        escaping. The bits are reserved for future use.
    +
    +    =====================================================================
    +    ????????.JDT                                             Message text
    +    ---------------------------------------------------------------------
    +    The .JDT file contains the text of messages. The text is stored as an
    +    stream of seven or eight bit ASCII data. Allowed characters in the
    +    text are 00H through ffH unless the header ATTRIBUTE field has the
    +    MSG_ESCAPED bit enabled, in which case the legal range of data is 20H
    +    through 7eH.
    +
    +    An escaped character is stored as \<hex> where <hex> is the two digit
    +    hexadecimal ASCII value of the character. A single \ is stored as \\
    +    or \5C. The case of the hexadecimal ASCII value is irrelevant, i.e.
    +    5c is treated as 5C.
    +
    +    =====================================================================
    +    ????????.JDX                                            Message index
    +    ---------------------------------------------------------------------
    +    The .JDX file is used to quickly locate messages for any given user
    +    name or to locate a message with a specific number. Each record in
    +    the file consists of two ulongs. The first ulong holds the CRC-32 of
    +    the recipient's name (lowercase), the second ulong holds the
    +    physical offset of the message header in the .JHR (header) file.
    +
    +    The record number (+BaseMsgNum) within the .JDX file determines a
    +    message's number.
    +
    +    If both ulongs are -1 (ffffffffH), there is no corresponding message
    +    header.
    +
    +    =====================================================================
    +    ????????.JLR                                         Lastread storage
    +    ---------------------------------------------------------------------
    +    The .JLR file is used to maintain a user's position within a message
    +    area. The layout of the "lastread" record follows. One record per
    +    user is required.
    +
    +    LastRead:
    +        ulong   UserCRC;         // CRC-32 of user name (lowercase)   (1)
    +        ulong   UserID;          // Unique UserID
    +        ulong   LastReadMsg;     // Last read message number
    +        ulong   HighReadMsg;     // Highest read message number
    +    end;
    +
    +    (1) The functions to convert a string to lowercase characters that
    +        are provided in the API will only convert characters A-Z (into
    +        a-z). It is required that this convention is followed by all
    +        applications.
    +
    +    The UserID field is a unique number for each user. If the "lastread"
    +    record is deleted, UserCRC and UserID are both set to -1
    +    (ffffffffH). An application may not depend on any specific order in
    +    the .JLR file. A user's "lastread" record may appear anywhere in the
    +    file and must be searched for when retrieving it and when storing an
    +    updated record.
    +
    +    =====================================================================
    +    Updating message headers
    +    ---------------------------------------------------------------------
    +    If a header record grows after is has been retrieved from the .JHR
    +    file, it must be appended to the end of the .JHR file since it would
    +    overwrite the following header otherwise. The .JDX file must be
    +    properly updated to indicate the new location of the header record.
    +    The old header record must be changed to indicate that it has been
    +    deleted by setting the MSG_DELETED bit in the Attribute field and the
    +    TextLen field to zero (to prevent a maintenance program from removing
    +    the message text that is now pointed to by another header).
    +
    +    =====================================================================
    +    Message base sharing and locking
    +    ---------------------------------------------------------------------
    +    To allow several programs to access the message base at any given
    +    time, region locking is used to protect the message base from being
    +    corrupted during updates.
    +
    +    When an application needs to write to any of the message base files,
    +    it must first attempt to lock the first byte of the .JHR (header)
    +    file. If the lock call fails, the application must either fail or
    +    attempt to lock the file again. The message base files may under no
    +    circumstances be updated if the application cannot successfully lock
    +    the .JHR file.
    +
    +    Note that data acquired (read) from the message base may not be used
    +    when writing data to the message base, unless the application has
    +    maintained a lock of the message base from the time the data was
    +    acquired or the MODCOUNTER field is the same as when the data was
    +    acquired.
    +
    +    The application must open the files in shareable (DENYNONE) read/
    +    write or readonly mode. The only exception to this is an application
    +    that requires exclusive access to the message base, such as a message
    +    base maintenance utility, it should open the files in non-shareable
    +    (DENYALL) read/write mode.
    +
    +    =====================================================================
    +    Reply threads and linking
    +    ---------------------------------------------------------------------
    +    JAM introduces a new reply link pointer, not commonly used today.
    +    This section is an attempt to describe how reply threads, reply
    +    linking, and this new reply link pointer is implemented in JAM.
    +
    +    One of the major differences is that reply threads in JAM are not
    +    based on similar or identical subjects of messages since this method
    +    does not allow for proper reply threads.
    +
    +    The method used in JAM is based on the immediate relation between any
    +    given message and direct replies to it. This is supported by many
    +    message editors by using the MSGID and REPLY FTS kludge fields. These
    +    are common, although expressed differently, in messages not based on
    +    FidoNet technology, such as RFC-822. The obvious advantages include
    +    allowing a program to easily find the original message to a reply,
    +    and to find all replies to any given message.
    +
    +    The reply thread information consists of three fields: ReplyTo,
    +    Reply1st, and ReplyNext. The reason for three fields, as opposed to
    +    just two, is that with two fields, it is only possible to keep track
    +    of the original message of a reply (which is sufficient) and one
    +    reply to any given message (which is not sufficient). With three
    +    fields, it is possible to maintain a thread of any number of replies
    +    to any given message.
    +
    +    In the description of the different fields below, the following
    +    messages and message numbers will be referred to:
    +
    +      1 -> 2 -> 4 -> 5
    +      :    :
    +      :    +--> 8
    +      :
    +      +--> 3 -> 7
    +      :
    +      +--> 6
    +
    +    Message number two, three, and six are replies to message number one.
    +    Message number four and eight are replies to message number two.
    +    Message number seven is a reply to message number three.
    +    Message number five is a reply to message number four.
    +
    +    ---------------------------------------------------------------------
    +    ReplyTo
    +    ---------------------------------------------------------------------
    +    This field holds the number of the message that this message is a
    +    reply to. In the example above, the ReplyTo field would contain the
    +    following values:
    +
    +    Message number one would contain zero; message number two, three, and
    +    six, would contain one; message number four and eight would contain
    +    two; message number seven would contain three, and message number
    +    five would contain four.
    +
    +    ---------------------------------------------------------------------
    +    Reply1st
    +    ---------------------------------------------------------------------
    +    This field holds the number of the first message that is a reply to
    +    this message. In the example above, the Reply1st field would contain
    +    the following values:
    +
    +    Message number one would contain two, message number three would
    +    contain seven, and message number four would contain five. All other
    +    messages would contain zero.
    +
    +    ---------------------------------------------------------------------
    +    ReplyNext
    +    ---------------------------------------------------------------------
    +    This field is used to create the actual message thread or chain. In
    +    the event that there is more than one reply to any given message, it
    +    is necessary to maintain a thread of all the replies; this is due to
    +    the fact that the original message can only hold information about
    +    the first reply (the Reply1st field) to it.
    +
    +    The first reply (which the original message's Reply1st field holds),
    +    has its ReplyNext field pointing to the second reply, the second
    +    reply's ReplyNext field poinst to the third reply, and so on.
    +
    +    In the example above, the ReplyNext field would contain the following
    +    values:
    +
    +    Message number two would contain three, message number three would
    +    contain six, and message number four would contain eight. All other
    +    messages would contain zero.
    +
    +    =====================================================================
    +    Contacts
    +    ---------------------------------------------------------------------
    +    Joaquim Homrighausen                            Telefax: +352 316 702
    +    389, route d'Arlon                                Modem: +352 316 702
    +    L-8011 Strassen                               eMail: 2:270/17@fidonet
    +    Luxembourg                                                joho@abs.lu
    +
    +    Andrew Milner                                   Telefax: +352 251 621
    +    9a, Boulevard Joseph II                           Modem: +352 251 621
    +    L-1840 Belair                                 eMail: 2:270/18@fidonet
    +    Luxembourg                                             andrew@fido.lu
    +
    +    Mats Wallin                                    Telefax: +46 8 6453285
    +    F”rskottsv„gen 11                                Modem: +46 8 6453882
    +    S-126 44 H„gersten                           eMail: 2:201/329@fidonet
    +    Sweden                                                     mw@fido.lu
    +
    + +BackGo Back + + + + diff --git a/html/misc/outbound.html b/html/misc/outbound.html new file mode 100644 index 00000000..d3f1cb0c --- /dev/null +++ b/html/misc/outbound.html @@ -0,0 +1,103 @@ + + + + + + + + + + + +Binkley style outbound with MBSE BBS. + + + +
    +
    Last update 11-Jul-2004
    +

    Binkly style outbound documentation for MBSE BBS.

    + +The MBSE BBS outbound directory structure is BinkleyTerm compatible, with +domains and point subdirectories (full 5d). There are separate "protected" and +"unknown" inbound directories for incoming sessions. Files received during +outbound sessions are always placed in the "protected" inbound directory. Only +the "protected" inbound directory is processed automatic. +

    +

    +
    +.pol	Poll flag, is handled as crash immediate, the length is always 0 bytes.
    +
    +	Flow files are files with the full pathnames to the files to send
    +	on disk. Names are translated by MBSE BBS to full DOS filenames and
    +	paths depending on your setup. 
    +	If you use it then it is importand that you think about the directory
    +	structure to use. See also the documentation about the setup of the
    +	ftp server
    +	The filenames may be prepended with a special character:
    +	#	= Truncate file after sent.
    +	- or ^	= Kill file after sent.
    +	@	= Leave file after sent, this is the default. Upto version
    +                  0.61.1 this was empty.
    +
    +.flo	Normal flow file (contains complete filenames to send).
    +.clo	Crash flow file.
    +.hlo	Hold flow file.
    +.dlo	Direct flow file, overrides CM flag.
    +
    +	The following are .pkt files, during the mail session they will be
    +	renamed to nnnnnnnn.pkt with an unique name and added to the spool
    +	file. Messages can allways be added to the outbound as long as the
    +	node isn't locked.
    +
    +.out	Normal .pkt file.
    +.cut	Crash .pkt file.
    +.hut	Hold .pkt file.
    +.dut	Immediate .pkt file.
    +
    +.req	Request file. Contains filenames in ascii with <cr><lf>.
    +
    +.su0	Arcmail bundles, the last digit may be any digit or letter.
    +.mo0
    +.tu0
    +.we0
    +.th0
    +.fr0
    +.sa0
    +
    +.sts	Node status file created by mbcico. These are data files containing
    +	three values: 
    +	1. 'time', this is the time when a new call to this node is allowed.
    +	    (in time_t format).
    +	2. 'retries', is the number of retries to try to connect that node. This
    +   	    field is zeroed when the call succeeds or when that node calls in.
    +	    It is also zeroed when a new poll is created. Currently, mbcico stops
    +	    calling a node if the counter is higher then 30.
    +	3. 'code', is the return code of the last attempt.
    +	0      - Successfull call
    +	1      - No dialout port available
    +	2      - No CONNECT or TCP connect failed
    + 	3      - Could not reset the modem
    +	4      - System is locked
    +	5      - Retry time not reached?
    +	6      - Fatal error in nodelist lookup
    +	7      - Call prohibited by config options
    +	8      - Phone number unavailable
    +	9      - No free matching port
    +	10     - Unused
    +	11..29 - Session (handshake) errors.
    +	This file is not compatible with the .sts files created by ifcico.
    + +
    +.spl	Spool file, created by mbcico.
    +
    +.bsy	Busy file, for locking nodes. The 'pid' of the process who locked that
    +	node is inserted into this file. All programs of the MBSE BBS package
    +	(and ifcico package) check if the pid exists if a .bsy file is found.
    +	If there is no pid found, the lock is a stale lock and is removed.
    +
    + +BackGo Back +
    + + + diff --git a/html/misc/semafore.html b/html/misc/semafore.html new file mode 100644 index 00000000..b2356cf6 --- /dev/null +++ b/html/misc/semafore.html @@ -0,0 +1,75 @@ + + + + + + + + + + + +Semafore files with MBSE BBS. + + + +
    +
    Last update 14-Sep-2004
    +

    Semafore files with MBSE BBS.

    + + +The directory $MBSE_ROOT/var/sema is the hardcoded semafore directory where all +semafore's must be created, tested and removed. When the system is booting, +the init script will erase all semafore's just before the BBS is started. +This description is valid from MBSE BBS v0.33.19 and newer. + +
    +zmh		Purpose: to mark the state of Zone Mail Hour. 
    +		Created by "mbtask" at the start of Zone Mail Hour.
    +		Removed by "mbtask" at the end of Zone Mail Hour.
    +
    +upsalarm	Purpose: Signal that the system is running on battery power.
    +		Created and removed by UPS software.
    +		Checked by mbtask to suspend processing.
    +		Checked by mbfido to stop processing.
    +
    +upsdown		Purpose: Signal that the system will go down on low battery.
    +		Created and removed by UPS software.
    +		Checked by mbtask to go down.
    +		Checked by several scripts and "mbstat wait".
    +
    +newnews		Purpose: Signal that there are new articles on the news server.
    +		Checked by mbtask to start news processing.
    +		Removed by mbtask as soon as it is detected.
    +
    +mailout		Purpose: Signal that there is mail posted in the message base.
    +		Checked by mbtask to start scan the message base.
    +		Removed by mbtask as soon as it is detected.
    +
    +mailin		Purpose: Signal that there is new mail in the inbound.
    +		Checked by mbtask to start the tosser.
    +		Removed by mbtask as soon as it is detected.
    +
    +scanout		Purpose: Signal that the outbound must be rescanned.
    +		Checked by mbtask to check the outbound.
    +		Removed by mbtask as soon as it is detected.
    +
    +do_inet		Purpose: Signal that there are node(s) to be called via the
    +		internet. Usefull for dialup systems to check whether a
    +		connection to the internet is needed.
    +		Created and removed by mbtask.
    +
    +is_inet		Purpose: Signal that the internet is available. Usefull for
    +		dialup systems to check when the internet connection is up
    +		or down after starting or stopping ppp.
    +		Created and removed by mbtask.
    +
    +mbtask.last	Purpose: A timestamp created and touched by "mbtask" every
    +		minute so you can check it is running.
    +
    + +BackGo Back +
    + + + diff --git a/html/misc/usleep.html b/html/misc/usleep.html new file mode 100644 index 00000000..334303ba --- /dev/null +++ b/html/misc/usleep.html @@ -0,0 +1,70 @@ + + + + + + + + + + + +System load and the usleep() call. + + + +
    +
    Last update 23-Jan-2004
    +

    System load and the usleep() call.

    + +At some time when developping MBSE BBS I decided that background utilities +did't need full speed to do their jobs. BBS utilities under DOS needed +to run as fast as possible because you needed to bring the bbs down to run +these programs and users couldn't login during that time. +

    +Starting with mball, the allfiles creator, I inserted code that does usleep(1) +after each 5 processed files. The 1 microsecond is not really the time the +program pauses, it's probably a lot longer. I think this depends on the +hardware type, (Intel, Sparc, Alpha etc) how long GNU/Linux will really suspends +executing the utility. +

    +The program speed downgrade at the development machine that mball needed was +3 times the original exection time, while system loading stayed under 30%. +At that time the development machine is an 486DX2-66 with a Seagate ST32151N +SCSI harddisk. +

    +The extra usleep code is only active if you run these utils with the -quiet +switch and when this is set in mbsetup. See menu 1->5. +With this switch, the program is mostly run by cron. If you onmit +this switch, this is probably when you start the program manually, it will +then always run at full speed, no matter what the setting in mbsetup is. +

    +If you have a fast system or don't care that the performance of your system +drops because of background processing, you can turn this future off with +mbsetup in the global section. (menu 1->5). +

    +Remember, if you have a PII-400 MMX or so with IDE disks, you may still have +performance problems and need to set that switch to yes. There is only one +way to find out if you need it. +

    +Well, actually, I tested this on a Dell Latitude PII-266, setting the switch to +yes gave better performance then no. Why? The CPU has more time for the slow +IDE disk. With the slow switch on programs runs even faster then with the switch +off. Modern hardware (PIII and later) may run fine with the slow switch turned +off. +

    +In januari 2004 the usleep code is replaced by a milliseconds timer written +around the nanosleep system call. This call conforms to POSIX.1b and is written +so that if the timer is interrupted it will resume with the time left to do. +The real minimum time the timer runs is 10 ms on Intel systems, see also man +nanosleep All usleep(1) calls are now msleep(1) calls, in practice these are +pauses of 10 ms. +

    +Michiel. +

    + +BackGo Back +

    + + + diff --git a/html/misc/webserver.html b/html/misc/webserver.html new file mode 100644 index 00000000..09d249aa --- /dev/null +++ b/html/misc/webserver.html @@ -0,0 +1,121 @@ + + + + + + + + + + +Howto setup an webserver to work with MBSE BBS. + + + +
    +
    Last update 03-Jan-2006
    +

    How to setup an webserver to work with MBSE BBS.

    + +

    Introduction

    +

    +To let a webserver work with MBSE BBS you must organize a special file +structure. +Note that even if you don't setup a webserver you must still create a +structure like this for the fidonet mailer, if you don't, +mail and files will get lost! +This description is written for Apache, +this is installed on most GNU/Linux and xxxBSD distributions. +For the directory structure, read the setup for +the FTP server. +

     

    + +

    Important settings in mbsetup.

    +

    +Screen 1.18: +

    +1.  Base path      /opt/mbse/ftp/pub
    +
    +Screen 1.19: +
    +1.  Docs root      /var/www/htdocs
    +2.  Link to ftp    files
    +3.  URL name       http://www.mbse.ym
    +
    +The base ftp path is the default which mbse bbs installs. The Docs root for the +apache httpd server is different on each distribution, in this example it is set +for Slackware 8.0. Because the directory +/var/www/htdocs has nothing to do with /opt/mbse/ftp/pub we make an alias link +named files. For the URL name you must fill in the real internet name how +your bbs is reached. If someone types this in, he must get the index.html from +the directory /var/www/htdocs, the docs root. I just assume you have your http +server up and running. +

    +Now you can run the command mbfile index, this will create a main index +in the directory /opt/mbse/ftp/pub and additional index.html files in all your +download areas. +

     

    + +

    Change Apache server configuration.

    +

    +As root edit your httpd.conf file, it is possible that you find it in +/etc/apache, but that depends on your distribution. In the section between +<IfModule mod_alias.c> and </IfModule> insert the following lines: +

    +    #
    +    # Alias for MBSE BBS download areas.
    +    #
    +    Alias /files/ /opt/mbse/ftp/pub/
    +    <Directory "/opt/mbse/ftp/pub">
    +        Options Indexes MultiViews FollowSymLinks
    +        AllowOverride None
    +        Order allow,deny
    +        Allow from all
    +    </Directory>
    +
    +    #
    +    # Alias to access the MBSE BBS documenatation
    +    #
    +    Alias /mbseman/ /opt/mbse/html/
    +    <Directory "/opt/mbse/html">
    +        Options Indexes MultiViews
    +        AllowOverride None
    +        Order allow,deny
    +        Allow from all
    +    </Directory>
    +
    +Then restart Apache with the command apachectl restart Now if you access +your webserver with for example http://www.mybbs.com/files/ you must be able to +browse the filelists. If you use http://www.mybbs.com/mbseman/ you must be able +to browse this documentation online. +

     

    + +

    Example views

    +

    +This are some snapshots of how this will look like, click to enlarge: + + + + + + +
    dreamlandbbsdreamlandbbsdreamlandbbs
    +

     

    + +

    Counting downloads

    +

    +If you want to increase the download counters when files are downloaded via www +you must make sure that the web logs the downloads to a access_log +file, for example /var/log/apache/access_log. +This logfile must be readable by user mbse and must be in combined +format. You can set this in your apache configuration file. +Then in mbsetup menu 1.13.4 enter full filename and path to this logfile. +The mball program will parse this file and increase the download counters +for the files that are downloaded from the webserver. +

    + +

    +BackGo Back +

    + + + diff --git a/html/nodelist.html b/html/nodelist.html new file mode 100644 index 00000000..e1cf4120 --- /dev/null +++ b/html/nodelist.html @@ -0,0 +1,133 @@ + + + + + + + + + + + +Nodelist and Nidediff processing. + + + +
    +
    Last update 22-Jan-2002
    +

    Nodelist and Nodediff processing

    + +

    Introduction

    +

    +A received a lot of questions about nodelist and nodediff processing, so +I will describe here the setup of the development system for the Fidonet +nodelist. First of all, it is very important that you +use three separate directories to do the nodelist processing. This is to +make sure that all stages are independent of each other, and if something +goes wrong, you still have a working system. The three directories are:
    +

      +
    1. /opt/mbse/ftp/pub/fido/nodelist, this is the public +download area, the received diff's are stored here as well as the final +compressed nodelists for download. +
    2. /opt/mbse/tmp/nlwork, this is the working directory +to apply diffs to the previous nodelist. This directory should allways +contain the latest uncompressed nodelist. +
    3. /opt/mbse/var/nodelist, this is the systems nodelist +directory defined in mbsetup, menu 1.4.4 +
    +In short the steps to process the nodediff's is as follows: +
      +
    1. Receive the nodediff and store it for download. +
    2. Apply the diff to the latest nodelist. +
    3. Hatch the new compressed nodelist. +
    4. Store the new nodelist for download. +
    5. Unpack the new nodelist in the nodelist compiler directory. +
    6. Set the compile semafore. +
    7. Compile the nodelists. +
    +Next I will describe these steps in detail. +

     

    + +

    The download area

    +

    +First define the download area for the bbs. In my case, this is area 20. From +here users can download the nodelists and nodediffs, files to the downlinks +are send from here. Below is the example of my system. +

    +BBS download area 20 +

     

    + +

    The NODEDIFF tic area

    +

    +From your uplinks you usually receive NODEDIFF or NODEDIZZ files. Create a tic area for +that purpose. I have keep# set to 5, this means the last 5 diff's are stored +in the download directory, older ones are removed. Now you can receive +nodediff files, store them for download, and send them to other nodes. +

    +NODEDIZZ tic area +

     

    + +

    Apply the diff

    +

    +We do this with the tic magic processor. In this example +I have NODELIST.007 in the /opt/mbse/tmp/nlwork directory. +Note that this filename is uppercase, they are usually stored and distributed +as uppercase names. As I receive the diff files as zip, the filemask on +my system is nodediff.z##. +This means that the file with the name nodediff.z14 in the area NODEDIZZ +is a match. The command that is executed expands to +mbdiff /opt/mbse/tmp/nlwork/NODELIST /var/spool/mbse/ftp/pub/fido/nodelist/nodediff.z14 -quiet +if the received nodediff is +nodediff.z14.
    The mbdiff program applies +nodediff.z14 against NODELIST.007 in the +/opt/mbse/tmp/nlwork directory. If this is successfull, a +new NODELIST.014 is created there, a compressed +nodelist.z14 is created there and NODELIST.007 is +removed.
    If this operation fails, only NODELIST.007 will stay +in that directory. +Because the ARC program for GNU/Linux isn't good for files, I +left the Arc files command empty in the archiver setup. As a fallback the +mbdiff program uses zip to create the compressed archive.
    +If creating the new nodelist fails for some reason, a missed diff or so, +the whole processing stops here. The previous nodelist is still here and +you can manually correct the situation. So, if you missed a diff, see that +you get it and manually give the mbdiff commands as user +mbse until you are up to date. Or, place the latest +uncompressed nodelist in the directory /opt/mbse/tmp/nlwork. +

    +Magic to apply the nodelist diff file +

     

    + +

    Processing the new nodelist

    +

    +Now that we have created the new compressed nodelist, it has to go somewhere. +The file nodelist.z14 is in the directory +/opt/mbse/tmp/nlwork. The example for the hatch manager +is shown below. The hatch manager runs automatic with the comand +mbfido tic. This setup will hatch the new nodelist in the +tic area NODELIST The two screens below show the hatch and +tic setup for this area. +

    +Hatch new nodelist +TIC area for new nodelist +

    +Now that we have hatched the new nodelist and processed it the new nodelist +is stored in in the download area, and maybe send some copies to downlinks. +We now have to feed it to the nodelist compiler for our own system. +We use a tic magic command to do +that. In this case we unpack the nodelist in /opt/mbse/var/nodelist +and set the compile semafore so that the mbindex + will compile the new nodelist. Don't be afraid that the unpacked +nodelists will acumulate in the nodelist directory, mbindex +will handle that, only the latest two nodelists are kept there. The +mbindex program is started by the taskmanager +mbtask. +

    +Magic copy nodelist and trigger compiler +

     

    + +BackGo Back +
    + + + diff --git a/html/postfix.html b/html/postfix.html new file mode 100644 index 00000000..66a55912 --- /dev/null +++ b/html/postfix.html @@ -0,0 +1,160 @@ + + + + + + + + + + + +MBSE BBS - Internet Gateway - Postfix setup. + + + +
    +
    Last update 25-Aug-2001
    +

    MBSE BBS - Internet Gateway - Postfix setup.

    + + +Of course you need to make all these changes as root. +Add the mbmail program as service to the postfix system by +adding two lines to master.cf. +
    +
    +#
    +# Postfix master process configuration file.  Each line describes how
    +# a mailer component program should be run. The fields that make up
    +# each line are described below. A "-" field value requests that a
    +# default value be used for that field.
    +#
    +# Service: any name that is valid for the specified transport type
    +# (the next field).  With INET transports, a service is specified as
    +# host:port.  The host part (and colon) may be omitted. Either host
    +# or port may be given in symbolic form or in numeric form. Examples
    +# for the SMTP server:  localhost:smtp receives mail via the loopback
    +# interface only; 10025 receives mail on port 10025.
    +#
    +# Transport type: "inet" for Internet sockets, "unix" for UNIX-domain
    +# sockets, "fifo" for named pipes.
    +#
    +# Private: whether or not access is restricted to the mail system.
    +# Default is private service.  Internet (inet) sockets can't be private.
    +#
    +# Unprivileged: whether the service runs with root privileges or as
    +# the owner of the Postfix system (the owner name is controlled by the
    +# mail_owner configuration variable in the main.cf file).
    +#
    +# Chroot: whether or not the service runs chrooted to the mail queue
    +# directory (pathname is controlled by the queue_directory configuration
    +# variable in the main.cf file). Presently, all Postfix daemons can run
    +# chrooted, except for the pipe and local daemons. The files in the
    +# examples/chroot-setup subdirectory describe how to set up a Postfix
    +# chroot environment for your type of machine.
    +#
    +# Wakeup time: automatically wake up the named service after the
    +# specified number of seconds.  Specify 0 for no wakeup. Presently,
    +# only the local pickup and queue manager daemons need a wakeup timer.
    +#
    +# Max procs: the maximum number of processes that may execute this
    +# service simultaneously. Default is to use a globally configurable
    +# limit (the default_process_limit configuration parameter in main.cf).
    +#
    +# Command + args: the command to be executed. The command name is
    +# relative to the Postfix program directory (pathname is controlled by
    +# the program_directory configuration variable). Adding one or more
    +# -v options turns on verbose logging for that service; adding a -D
    +# option enables symbolic debugging (see the debugger_command variable
    +# in the main.cf configuration file).
    +#
    +# In order to use the "uucp" message tranport below, set up entries
    +# in the transport table.
    +#
    +# In order to use the "cyrus" message transport below, configure it
    +# in main.cf as the mailbox_transport.
    +#
    +# SPECIFY ONLY PROGRAMS THAT ARE WRITTEN TO RUN AS POSTFIX DAEMONS.
    +# ALL DAEMONS SPECIFIED HERE MUST SPEAK A POSTFIX-INTERNAL PROTOCOL.
    +#
    +# ==========================================================================
    +# service type	private	unpriv	chroot	wakeup	maxproc	command + args
    +# 		(yes)	(yes)	(yes)	(never)	(50)
    +# ==========================================================================
    +smtp	  inet	n	-	n	-	-	smtpd
    +pickup	  fifo	n	n	n	60	1	pickup
    +cleanup	  unix	-	-	n	-	0	cleanup
    +qmgr	  fifo	n	-	n	300	1	qmgr
    +rewrite	  unix	-	-	n	-	-	trivial-rewrite
    +bounce	  unix	-	-	n	-	0	bounce
    +defer	  unix	-	-	n	-	0	bounce
    +smtp	  unix	-	-	n	-	-	smtp
    +showq     unix	n	-	n	-	-	showq
    +error     unix	-	-	n	-	-	error
    +local	  unix	-	n	n	-	-	local
    +cyrus	  unix	-	n	n	-	-	pipe
    +    flags=R user=cyrus argv=/cyrus/bin/deliver -e -m ${extension} ${user}
    +uucp	  unix	-	n	n	-	-	pipe
    +    flags=F user=uucp argv=uux -r -n -z -a$sender - $nexthop!rmail ($recipient)
    +ifmail    unix  -       n       n       -       1       pipe
    +    flags=F user=fido argv=/usr/local/bin/ifmail -r $nexthop ($recipient)
    +mbmail    unix  -       n       n       -       1       pipe
    +    flags=F user=mbse argv=/opt/mbse/bin/mbmail ($recipient)
    +bsmtp     unix  -       n       n       -       -       pipe
    +    flags=F. user=foo argv=/usr/local/sbin/bsmtp -f $sender $nexthop $recipient
    +
    +
    +In main.cf change or add the line:
    +
    +relay_domains = $mydestination, f2802.n280.z2.fidonet.org
    +
    +The fidonet address will be your fidonet address of course. If you have more +fidonet aka's, add them as well seperated with commas. +

    + +Next you need to add mbmail to the +transport file. +


    +
    +# /etc/postfix/transport
    +#
    +# execute "postmap /etc/postfix/transport" after changing this file
    +#
    +# Local destinations
    +#
    +seaport.mbse.nl		local:
    +www.mbse.nl		local:
    +news.mbse.nl		local:
    +#
    +# Fidonet mailers at this machine. Test on several strings to make sure
    +# it will catches everything.
    +#
    +z1                      mbmail:f2802.n280.z2.fidonet
    +.z1                     mbmail:f2802.n280.z2.fidonet
    +z2                      mbmail:f2802.n280.z2.fidonet
    +.z2                     mbmail:f2802.n280.z2.fidonet
    +z3                      mbmail:f2802.n280.z2.fidonet
    +.z3                     mbmail:f2802.n280.z2.fidonet
    +z4                      mbmail:f2802.n280.z2.fidonet
    +.z4                     mbmail:f2802.n280.z2.fidonet
    +z5                      mbmail:f2802.n280.z2.fidonet
    +.z5                     mbmail:f2802.n280.z2.fidonet
    +z6			mbmail:f2802.n280.z2.fidonet
    +.z6			mbmail:f2802.n280.z2.fidonet
    +fidonet			mbmail:f2802.n280.z2.fidonet
    +.fidonet		mbmail:f2802.n280.z2.fidonet
    +fidonet.org		mbmail:f2802.n280.z2.fidonet
    +.fidonet.org		mbmail:f2802.n280.z2.fidonet
    +
    +
    +Don't forget to run postmap /etc/postfix/transport. Now all +files are changed, run postfix reload to activate the +changes. + +

    + +BackGo back  +HomeGo to main +

    + + diff --git a/html/programs/index.htm b/html/programs/index.htm new file mode 100644 index 00000000..72716ab2 --- /dev/null +++ b/html/programs/index.htm @@ -0,0 +1,50 @@ + + + + + + + + + + + +MBSE BBS Programs. + + + +
    +
    Last update 13-Feb-2004
    +

    MBSE BBS Programs.

    + + +
      +
    1. mbaff, Announce newfiles and filefind +
    2. mball, Allfiles and newfiles list creator +
    3. mbcico, The Fidonet mailer ala ifcico +
    4. mbdiff, Nodelist difference processor +
    5. mbfido, Fidonet mail and files procesor +
    6. mbfile, Files database maintenance program +
    7. mbindex, Nodelist index compiler +
    8. mblang, Language datafile compiler +
    9. mblogin, Unix login replacement +
    10. mbmon, The monitor program +
    11. mbmsg, The messagebase utility program +
    12. mbnntp, The news server +
    13. mbout, The mailer outbound program +
    14. mbpasswd, The passwd wrapper +
    15. mbsebbs, The bbs program +
    16. mbseq, Sequence number creator +
    17. mbsetup, The setup program +
    18. mbstat, The bbs status change program +
    19. mbtoberep, The toberep.data lister +
    20. mbuser, The userbase maintenance program +
    21. mbuseradd, The adduser wrapper +
    + + +MainBack to Main index +
    + + + diff --git a/html/programs/mbaff.html b/html/programs/mbaff.html new file mode 100644 index 00000000..676aa38d --- /dev/null +++ b/html/programs/mbaff.html @@ -0,0 +1,99 @@ + + + + + + + + + + + +MBSE BBS Programs - mbaff - Announce new files and Filefind processor. + + + +
    +
    Last update 30-Jan-2001
    +

    mbaff - Announce new files and FileFind processor.

    + +

    Synopsis.

    +mbaff [command] <options> +

      + +

    Description.

    +

    +mbaff +is the new files report generator and filefind server for mbsebbs. +In order to run mbaff +you must first start mbsed, +this is the deamon which controls all bbs activities. +

    +When mbaff +is run with the commandline command announce +the first thing it does is to scan all the file databases for files +from which the announced flag is not yet set, and that area has a valid +newfiles groupname. These files are uploads for example. +If such a file is found the announced flag is set and +the file is added to the +toberep.data +file. This file may already contain +new files who were received as .tic files and processed by the +mbfido program. +After this is done the toberep.data +file is compared against the newfiles +reports to see if there is anything to report. If that's the case the +creation of reports begins in the echomail areas specified. After that the +toberep.data +file is erased and the mailout semafore set.
    +The files to announce are divided into groups, the names of the groups are +set in the file download areas. If you plan this well, you can make seperate +announcements for several networks, announce files bij groups of file, ie. HAM +or .jpg pictures, GNU/Linux etc. +

    +When +mbaff +is run with the commandline command +filefind +it will search each echomail area for unreceived messages addressed to +allfix or filefind. +It will read the message header and mark the message as received. The +search options are set on the subject line. All file areas for which the +filefind flag is set to true will be searched for the requested search +patterns. If there are files found a reply will be generated for the +user who wrote the request. If the reply area is different from the scan +area, the reply is placed in the reply area. If it's not set, the reply +goes into the same area. If the netmail option is set, the reply will +be sent by netmail. To prevent echomail overflow the replies in the same +area are limited to 15 found files, replies in the other echomail area +are limited to 50 files. Netmail replies will contain up to 100 files. +

     

    + +

    Environment.

    +

    +In order to run mbaff you need to set one global environment variable +$MBSE_ROOT. +This variable must point to the root of the bbs directoy structure. The +main configuration file +config.data +must be present in the ~/etc subdirectory. +

     

    + +

    Commands.

    +

    +mbaff announce - Announce new files.
    +mbaff filefind - Process filefind requests. +

     

    + +

    OPTIONS

    +

    +mbaff [command] -quiet - Quiet mode, no screen output. +Use this switch if you run mbaff from the crontab. +

    + +BackBack to index  +IndexBack to main index +

    + + + diff --git a/html/programs/mball.html b/html/programs/mball.html new file mode 100644 index 00000000..ac7dd03d --- /dev/null +++ b/html/programs/mball.html @@ -0,0 +1,75 @@ + + + + + + + + + + + +MBSE BBS Programs - Allfile listing generator. + + + +
    +
    Last update 11-Aug-2005
    +

    mball - Allfiles listing generator

    + +

    Synopsis.

    +

    +mball [commands] <options> +

     

    + +

    Description.

    +

    +mball is the allfiles and newfiles listing generator that +can be made available on your bbs for your users to get a complete listing +of wat is available for download. When used with the -zip +option it can also produce complessed versions of these two listings. The +resulting files are created in the current directory. After the creation of +these files you can hatch them into your bbs with the programs +mbfido tic when you properly setup a .tic file area for this purpose +and create records for the hatch manager. +

    +Just before the reports are created, and if you defined WWW and FTP logfiles +with mbsetup in menu 1.13, the logfiles are analysed and and files +downloaded from the bbs are counted as valid downloads. To make sure downloads +are only counted once, a status file is created in ~/var, this marks the date +the last time the logfiles are checked. For the best results make sure you run +mball before any WWW and FTP logfiles are rotated, else you might miss +some downloads. +

     

    + +

    Environment.

    +

    +In order to run mball you need to set the global variable +$MBSE_ROOT. This variable must point to the root of the bbs +directory structure. The main configuration file config.data +must be present in the ~/etc directory. +

     

    + +

    Commands.

    +

    +mball list - Create allfiles.txt and newfiles.txt files. +

     

    + +

    Options.

    +

    +mball [command] -quiet - Quiet mode, supress screen output.
    +mball list -zip - Create zipped listings as well. +

      + +

    Setup.

    +

    +In mbsetup menu 1.13 you need to set the days to include in newfiles listings and the maximum security level. +Also define valid paths to logfiles that are created by your web and ftp server. +

    + +IndexBack to index  +MainBack to Main index +

    + + + diff --git a/html/programs/mbcico.html b/html/programs/mbcico.html new file mode 100644 index 00000000..2c532b94 --- /dev/null +++ b/html/programs/mbcico.html @@ -0,0 +1,295 @@ + + + + + + + + + + + +MBSE BBS Programs - mbcico - The Fidonet mailer. + + + +
    +
    Last update 19-Jun-2005
    +

    mbcico - The Fidonet mailer.

    + +This is work in progress.... +

    + +

    Synopsis.

    +

    +-a<inetaddr> -l<ttydevice> <node> ...
    +-n<phone>     forced phone number
    +-l<ttydevice> forced tty device
    +-t<tcpmode>   telnet TCP/IP mode, must be one of ifc|itn|ibn, forces TCP/IP
    +-a<inetaddr>  supply internet hostname if not in nodelist
    + <node>        should be in domain form, e.g. f11.n22.z3
    +-h            show this help message
    +
    + or: mbcico tsync|yoohoo|**EMSI_INQC816|-t ibn|-t ifc|-t itn (this is answer mode) +

     

    + +

    Description.

    +

    +mbcico stands for MBse "Internet - Fidonet Copy In /Copy Out", +this is a FidoNet(r) compatible transport agent. It is based on +ifcico written by Eugene G. Crosser, <crosser@average.org>, +2:5020/230@FidoNet. I changed the name of the program to make the difference +between ifcico and mbcico. Nowadays it is +quite different then ifcico. +

    +Currently it supports FTS-0001, YooHoo/2U2 and EMSI handshake protocols, +Xmodem, Telink, Modem7, Hydra with zlib compression extension (FSP-xxxx), +SEAlink with and without overdrive and crash recovery, +Bark file and update requests, WaZoo protocols: DietIFNA, +plain Zmodem (aka ZedZip, EMSI flag "ZMO") and ZedZap, WaZoo file and +update requests (nodelist flag should be XA). WaZoo file and update requests +do also work with FTS-0001 sessions, this is supported by several well known DOS +mailers also. +Password protected requests and update requests are implemented. +

    +There is also a special protocol optimized to use over TCP/IP connections, +contributed by Stanislav Voronyi <stas@uanet.kharkov.ua>, it is +identified by EMSI proto code TCP (not registered) and nodelist flag IFC. +The default port is 60179. A telnet variant is installed at port 60177, the +nodelist flag is ITN:60177. The port number is needed because the default port +in the nodelist is port 23. +

    +There is also a Binkp/1.1 implementation, this is a +bi-directional TCP/IP protocol. +This protocol is prefferred over the IFC protocol because it is +more efficient. Nodelist flag is IBN, the default port is 24554, and the +nodelist request flag is XX. This binkp implementation uses zlib packet +compression opt PLZ (FSP-1032) to increase the transfer speed and to lower +the network bandwith usage. There is also support for the stream compression +modes GZ and BZ2 (compatible with binkd). +

    +Outbound directory structure is BinkleyTerm compatible, with domains and +point subdirectories (full 5d). There are separate "protected" and +"unprotected" inbound directories for the incoming sessions with the nodes +that are in your setup. Files received during outbound sessions are always +stored in the "protected" inbound. +

    +"Magic" file request processors are executable files placed in the "magic" +directory. If a request is made for a file with matching name, the +executable from the "magic" directory is run, and its stdout output is mailed +to the requestor. Full requestor's address, in the form of "John Smith of +1:234/56/7" is passed to the executable in the command line. An example of +such file is on my system, the filename in the magic directory is STATUS. +

    +echo "    Hello $1 $2,"
    +echo ""
    +echo "               Status report for MBSE BBS Development"
    +echo "               --------------------------------------"
    +echo ""
    +echo "Date  : `date`"
    +echo "System: `uname -mrs`"
    +echo "Uptime: `uptime`"
    +echo ""
    +echo "`df -T`"
    +echo ""
    +echo "`free`"
    +echo ""
    +echo "Gtx, Michiel Broek"
    +
    +If you file request STATUS from my system you will get something like: +
    +    Hello John Doe,
    +
    +                   Status report for MBSE BBS Development
    +		   --------------------------------------
    +
    +Date  : Sat Nov  8 17:29:07 CET 2003
    +System: Linux 2.4.20 i586
    +Uptime:  17:29:07 up 88 days, 20:02,  1 user, load average: 0.00, 0.00, 0.00
    +
    +Filesystem    Type   1k-blocks      Used Available Use% Mounted on
    +/dev/hda2     ext3     5921096   3405184   2210276  61% /
    +/dev/hdb1     ext3     6198404   5133056    750476  88% /opt
    +
    +             total       used       free     shared    buffers     cached
    +Mem:         94280      91360       2920          0      13152      46276
    +-/+ buffers/cache:      31932      62348
    +Swap:       136512      32380     104132
    +
    +Gtx, Michiel Broek
    +
    + +Non-executable +files in the magic directory contain the full names to magic filenames. The +magic NODELIST can thus point to the full path and filename of your latest +nodelist. These magic names are automatic maintained by the mbfido +program when the magic name is set in the .tic file that you receive. +

    +To run mbcico in master mode, you need to make dialout +devices read/writeable for mbcico, and do the same for +the directory where your uucp locks are created (usually /var/locks). +

     

    + +

    Answer Mode.

    +

    +To make mbcico work in answer mode, you need +mgetty written by Gert Doering. mbcico must be +started with one of the following parameters: +

    +FTS-0001 call:       "/opt/mbse/bin/mbcico tsync"
    +FTS-0006 call:       "/opt/mbse/bin/mbcico yoohoo"
    +EMSI call:           "/opt/mbse/bin/mbcico **EMSI_....."
    +

    +In the latter case the received EMSI packet should be passed whitout trailing +CR). To make this work mgetty must be compiled with the +-DFIDO option. Other getty programs might work. +

    +To answer TCP/IP calls the following lines should be added to /etc/inetd.conf: +

    +binkd   stream  tcp     nowait  mbse    /opt/mbse/bin/mbcico    mbcico -t ibn
    +fido    stream  tcp     nowait  mbse    /opt/mbse/bin/mbcico    mbcico -t ifc
    +tfido   stream  tcp     nowait  mbse    /opt/mbse/bin/mbcico    mbcico -t itn	
    +

    +If your system uses xinetd the file /etc/xinetd.d/mbsebbs could be: +

    +#:MBSE BBS services are defined here.
    +
    +service binkp
    +{
    +	socket_type     = stream
    +	protocol        = tcp
    +	wait            = no
    +	user            = mbse
    +	instances       = 10
    +	server          = /opt/mbse/bin/mbcico
    +	server_args     = -t ibn
    +}
    +
    +service tfido
    +{
    +	socket_type     = stream
    +	protocol        = tcp
    +	wait            = no
    +	user            = mbse
    +	instances       = 10
    +	server          = /opt/mbse/bin/mbcico
    +	server_args     = -t itn
    +}
    +
    +service fido
    +{
    +	socket_type     = stream
    +	protocol        = tcp
    +	wait            = no
    +	user            = mbse
    +	instances       = 10
    +	server          = /opt/mbse/bin/mbcico
    +	server_args     = -t ifc
    +}
    +

    +In the file /etc/services the following lines must be present: +

    +binkd           24554/tcp               # mbcico IBN mode
    +fido            60179/tcp               # mbcico IFC mode
    +tfido           60177/tcp               # mbcico ITN mode
    +
    +

     

    + + +

    Calling Mode.

    +

    +You never need to call nodes with mbcico by hand, mbtask will +start mbcico with the right commandline.
    +Note: you should not call nodes with mbcico directly, let +mbtask do the calling. +If you want to call a node make a poll command. +

     

    + +

    Environment.

    +

    +In order to run the mbcico you need to set one global environment variable +$MBSE_ROOT +This variable must point to the root of the bbs directoy structure. +

     

    + +

    Return Codes.

    +

    +

    +0        - No errors
    +1..32    - OS errors, SIGHUP, SIGKILL, etc.
    +100      - Commandline error.
    +101      - Configuration error.
    +103      - Disk full.
    +108      - File transfer error.
    +111      - Node not in nodelist.
    +112      - Node may not be called (Hold, Down, not ZMH).
    +113      - Could not make connection.
    +114      - Cannot open tty port.
    +115      - Node is locked.
    +116      - No IP address.
    +117      - Unknown session type.
    +118      - Not Zone Mail Hour.
    +119      - Modem error.
    +120      - Not port available.
    +121      - Session error.
    +122      - EMSI session error.
    +123      - FTSC session error.
    +124      - Wazoo session error.
    +125      - YooHoo session error.
    +126      - Outbound scan error.
    +127      - Cannot poll.
    +
    +These codes are also stored in status files for nodes, with the extension +of ".sts". These are small datafiles containing three decimal numbers. +
      +
    1. Time retry code, this is the next call attempt time. This is an unsigned + long representing the number of seconds since the epoch. Before this time + the node may not be called. This is set after a failed call, a random time + in the near future is selected. +
    2. Retries, this is the number of consequtive call attempts made that returned + "call failed" or other errors. This field is zeroed when the call succeeds and + when a new "poll" is created. If the value is 30, the node won't be called + anymore. +
    3. Code, this is the return code of the last attempt. +
    +

     

    + +

    Configuration.

    +

    +The behaviour of mbcico can be configured with mbsetup, +section 1.14 If something doesn't do what you want, set the debug on for +that problem. This will produce huge logfiles, but also a lot of information. +Important flags are Device IO, EMSI debug, File forward, Locking, Outboundscan +and Session. +

     

    + +

    Bugs.

    +

    +Incoming calls from McMail mailers, McMail is quite hasty +to establish an EMSI session, and times out in less than a second. So +if your system is heavy loaded, or not too fast, McMail cannot connect +with your system. This is a known problem with McMail 1.0 and older, +later versions are ok. +

     

    + +

    Authors.

    +

    +

    +Eugene G. Crosser <crosser@average.org>   Orginal ifcico.
    +Stanislav Voronyi <stas@uanet.kharkov.ua> TCP/IP code.
    +Martin Junius                             Rewrite of opentcp().
    +Omen Technology Inc                       Zmodem protocol.
    +Arjen G. Lentz, Joaquim H. Homrighausen   Hydra transfer protocol.
    +Cristof Meerwald                          Implementation of Hydra in ifcico.
    +P. Saratxaga                              Tty driver code, yoohoo extensions.
    +Dima Maloff                               Binkp protocol.
    +Michiel Broek                             Rewrite for MBSE BBS.
    +
    +

    + +IndexBack to index  +MainBack to Main index +

    + + + diff --git a/html/programs/mbdiff.html b/html/programs/mbdiff.html new file mode 100644 index 00000000..20a71e17 --- /dev/null +++ b/html/programs/mbdiff.html @@ -0,0 +1,64 @@ + + + + + + + + + + + +MBSE BBS Programs - mbdiff - Nodelist difference file processor. + + + +
    +
    Last update 30-Jan-2001
    +

    mbdiff - Nodelist difference file processor.

    + +

    Synopsis.

    +

    +mbdiff [nodelist] [nodediff] <options> +

     

    + +

    Description.

    +

    +mbdiff applies a (compressed) nodediff file against the +nodelist of the week before to create a new nodelist. The result is a new +plain nodelist and a nodelist compressed with zip. +

     

    + +

    Environmet.

    +

    +In order to run mbdiff you must set the global variable +$MBSE_ROOT. This variable must point to the root directory +of the bbs structure. The main configuration file config.data +must be present in the ~/etc directory. +

     

    + +

    Commands.

    +

    +mbdiff [nodelist] [nodediff] The nodelist must be the full +path and filename without the dot and daynumber extension. The nodediff is +the full path and filename to the (compressed) nodediff file fitting on the +latest nodelist. It is adviced to make a seperate working directory where +you keep the nodelists. Don't do this in your normal nodelist directory. +When the operation is successfull, the new nodelist is in the working directory +and the old list is removed. A compressed version of the nodelist is also +placed in the working directory. From here you can hatch the new compressed +nodelist with the mbfido program. +

     

    + +

    Options.

    +

    +-quiet - supress screen output, this switch is needed when +mbdiff runs on the background. +

    + +IndexBack to index  +MainBack to Main index +

    + + + diff --git a/html/programs/mbfido.html b/html/programs/mbfido.html new file mode 100644 index 00000000..e32e47c2 --- /dev/null +++ b/html/programs/mbfido.html @@ -0,0 +1,277 @@ + + + + + + + + + + + +MBSE BBS Programs - mbfido - The Fidonet mail and files processor. + + + +
    +
    Last update 26-Aug-2005
    +

    mbfido, the fidonet mail and files processor.

    + +

    Synopsis.

    +

    +mbfido [command(s)] <options> +

     

    + +

    Description.

    +

    +mbfido +is the program to process fidonet mail and files. In order to run mbfido +you must first start mbtask, +this is the deamon which controls all bbs activities. To prevent that +mbfido will run more than once at the same time a lock +is placed in the protected inbound with the pid of the running +mbfido program. The gateway to and from internet is also +handled by mbfido. +

     

    + +

    Specifications.

    +

    +The recognized mail packets are type 2+ following the FSC-0039 standard with +a fallback to the old stone age packets. +Can handle messages of maximum 429467295 bytes, or less if you have less +memory available, the practical limit is about 1 Meg. Note that most mailprocessors +are only guaranteed to work to maximum 16 KBytes. +Recent experiments in the LINUX echo show that this is still true, +although most tossers seem to process mail up to 32 KBytes. +

     

    + +

    Tossing Mail.

    +

    +First make sure you have the necessary message areas in your setup. At least +you need the badmail and dupemail areas and a netmail area for each network +you participate in. If you don't create badmail and dupemail areas then +bad (unknown area etc) and dupes are lost and you cannot check the reason why. +If you don't create the netmail areas for each network, then netmail to your +system will dissapear. It is not possible to "retoss" the badmail yet after +you have created any missing echomail areas. +

    +To prevent .pkt name collision the toss of incoming mail is done in parts. +The first run is to process all uncompressed mailpackets and add mail to the +outbound. Then each compressed ARCmail archive will be uncompressed and +processed and mail will be imported and forwarded as necessary. During all +these passes all filenames are sorted by date and time, the oldest files are +processed first. +

    +The recognized mail packets are type 2+ following the FSC-0039 standard with +a fallback to the old stone age packets. The packets are checked for being +addressed to one of your own aka's and for a correct password. The +password check may be switched off in the nodes setup. After all the packet +header checks the messages will be extracted from the packet file. +

    +When messages are extracted from the packets, the date format is checked for +Year2000 bugs from other tossers. Several checks are done by ideas of Tobias +Ernst of 2:2476/418. It is also possible to run the pktdate +utility before each packet will be processed. Whatever date format us used in +the original message, mbfido will always rewrite the date +field in the right FTS-0001 format. +

    +If the message is a netmail the message is checked for DOMAIN, INTL, FMPT and +TOPT kludges so that full 4d or 5d addressing will be possible. Then a check +is done if this netmail is addressed to one of our aka's. If it's addressed to +"sysop" or "postmaster" the name is replaced with the sysop's name. If the +message is addressed to one of the names defined in the service setup, that +mail will be handled by the service manager, ie. given to areamgr, filemgr or +send further as email to your local system. +
    +Then the message is checked if it is addressed to an existing bbs user, and if +so it will be imported into the netmail area of the main zone of the bbs. +If it's not addressed to a bbs user, the message will be readdressed to the +sysop. If the message is not for one of our aka's the message will be put in the +mailqueue for further routing. +

    +If the message is a echomail message it will be checked for being a duplicate by +storing the CRC32 value of the AREA: line, message subject, origin line, +message date and msgid kludge and testing if that CRC32 value exists in the +echomail duplicate database. If there is no msgid in the message, the whole +message body will be include to complete the CRC32 dupe check. +Also the existance of the echomail area is checked and the node must be linked to that area. +If the message is not in a passthru area and is not a duplicate it +is finally imported in the message base. +After that is the message will be forwarded to downlinks +by adding the message to the mailqueue. +

     

    + +

    Adding mail and files to the outbound.

    +

    +Adding mail and file to the outbound is done in two passes. The first pass is to put all +outgoing mail into the ~/var/queue/z.n.n.p directory, the last letters are +replaced by the digits of the nodenumber. +The extension can be qqq for packed mail, nnn for normal unpacked mail, hhh for +hold unpacked mail and ccc for crash unpacked mail. Adding mail and files to +this directory can allways be done, even if one of the nodes you are adding mail +for is having a mail session with your system. This is a safe operation.
    +In the second pass, these temp files are really added to the outbound, but +only if the destination node is not locked, ie. there is no current mailsession +with that node. If there is a mail session going, these temp files will stay in +the temp directory and are added to the outbound in a later run of +mbfido. If adding the mail to the outbound succeeds +the temporary files and directory is removed. +

     

    + +

    Alias file.

    +

    +If the file /opt/mbse/etc/aliases exists, mbfido will try to fetch ftn-style +aliases from there. +If "from" address of a message from FidoNet matches right side +of some entry in alias file, then the Reply-To: header is created +in the RFC message with the name part taken from the left side of the +sysalis entry and domain part taken from myfqdn (below). E.g., if a +fidonet message comes from "John Smith of 1:234/567.89@fidonet" and +there is an entry in the sysalias file: +

    +"jsmith:      John.Smith@p89.f567.n234.z1.fidonet.org"
    +
    +and Domain name value is "mbse.nl", then the resulting message will +contain a line: "Reply-To: jsmith@mbse.nl". +

     

    + +

    Commands.

    +

    +mbfido areas +This command will check all file and mail groups if areas files are defined and +if the setting Auto change is set to Yes. Then the areafile is read and +the areas in that file are compared with the defined areas. Missing areas are +created and areas not in the areafile are removed or blocked depending if there +are files or messages present in these areas. This is also a good command to +create large bulks of new areas on your system. + +

    +mbfido mail <recipient> +This command is used by your MTA to deliver email addressed to for example +Michiel_Broek@f2802.n280.z2.fidonet.org + +

    +mbmail <recipient> +This is the same as above. + +

    +mbfido notify <nodes> +This command will send notify messages to all nodes in your setup which +have the notify option set to on. If you enter nodes as option you may use +wilcards, ie 2:*/* to send messages to all nodes in zone 2. If you specify +exactly one node, messages will be generated even if that node has the +notify function off. From cron you should not specify any nodes, this will +just send to all your links the information about their setup. Each node +will receive a status report for files and mail, and area list for all +file areas and mail areas to each aka a node has, and a flow report for +mail for each aka. +

    +mbfido roll +This command will only do something if a new week or month has begun. +If this is true the statistic records in several databases are updated. +You should run this command each midnight from cron to be sure that this when it is +time to do so. This command is always executed before one of the scan, toss or tic commands so +if you don't do this in cron, it will still happen. +

    +mbfido scan +Scan for new messages entered at the bbs or by other utilities. If the file +~/tmp/echomail.jam or ~/tmp/netmail.jam exists, +mbfido will only scan the messages in areas which are +pointed at in this file. This is a lot faster then a full mailscan. +If it is not present, all messagebases are scanned +to see if there is a new message. If you specify +-full on the commandline a full messagebase scan is forced. +It is wise to do this sometimes, on my bbs I run this once a day. +

    +mbfido tag +The command will create tag- and areas files in the doc directory for each group of +mail and files. +

    +mbfido test <node> +This is for testing of the mail routing. The node on the commandline must be in +the format f28.n280.z2 etc. The results are printed on the tty. If you have +debug logging on in menu 1.5.16 items 17 and 18, then all needed debug +information is written to the logfile. You can use this to debug your routing. +

    +mbfido tic +Process incoming files accompanied with .tic control files. Several actions can +take place on the incoming file before they are imported in the BBS areas. +Options are rearchiving, replacing banners (with your add), check for DOS +viruses, running scripts for certain filename patterns, send these files to +other nodes etc. All options can be defined for each area. If as a result from +one of the actions there are new files hatched, for example after processing +a nodelist difference file which created a new nodelist, the .tic processing +will start again, until there is really nothing more to do. +

    +mbfido toss +Toss incoming fidonet netmail and or echomail. By default mail in the protected +inbound directory will be processed, uncompressed .pkt files and compressed +arcmail bundles are recognized, filename case doesn't matter. +

    +mbfido news Scan all defined newsgroups for new newsarticles. +New articles are fetched from the newsserver and stored in your messagebase and +send to your up- and downlinks. This is for use with an NNTP gateway. +

    +mbfido uucp +This will read a standard a newsbatch from stdin and gate the articles +to Fidonet and the local message base. This is for use with an UUCP gateway, this +mode should be called by uuxqt. The newsbatch may be compressed or uncompressed or +a single news article. +

    +mbnews +This is an alternative to mbfido uucp -quiet. +

     

    + +

    Options.

    +

    +mbfido [command] -nocrc +Disable CRC checking of incoming TIC files. Only use this if you know what +you are doing. +

    +mbfido scan -full +Force scanning of all message bases for new entered mail. You need this if +mail in entered with other editors then from mbse. Also, running it once a +day is adviced to catch any missed messages. +

    +mbfido news -learn +Scan the newsserver for news articles, and update the news dupes database only. +Use this switch if you start using mbfido to gate news articles for the first time. +Articles will not be gated with this switch, mbfido will just learn which articles +already exist. Normally you only need to use this switch once. +

    +mbfido [command] -nodupe +Disable checking for duplicate's. Normally you should not use this switch. +This switch doesn't work with the news command, only for echomail and tic files. +

    +mbfido [command] -quiet +Quiet mode, all output to the current tty is supressed. Use this flag if +you toss mail from a script (started by cron) after mail is received. +

    +mbfido toss -unsecure +Toss mail without checking if the echomail is for your own system en without +checking if the sending node is connected to your system. Nodes who are +excluded from a certain echo, can stil not enter messages in that echo. +

    +mbfido [command] -unprotect +Toss from the unprotected inbound directory. The default is to toss from the +protected inbound directory. +

     

    + +

    Environment.

    +

    +In order to run the bbs you need to set one global environment variable +$MBSE_ROOT +This variable must point to the root of the bbs directoy structure. +

     

    + +

    Bugs.

    +

    +There are still bugs, this program is under development. +

    + +IndexBack to index  +MainBack to Main index +

    + + + diff --git a/html/programs/mbfile.html b/html/programs/mbfile.html new file mode 100644 index 00000000..4332a848 --- /dev/null +++ b/html/programs/mbfile.html @@ -0,0 +1,192 @@ + + + + +MBSE BBS Programs - mbfile - File database maintenance program. + + + + + + + + + + +
    +
    Last update 08-Jun-2007
    +

    mbfile - File database maintenance program.

    + +

    Synopsys.

    +mbfile [commands] <options> +

     

    + +

    Description.

    +

    +mbfile +is the filedatabase maintenance program for mbsebbs. In order to run mbfile you +must have started mbsed, +this is the deamon which controls all bbs activities. +

    +The main purpose of mbfile +to do automatic maintenance on the downloadable files on the bbs, such as +removing or moving old files, checking the database and packing the database. +The best way to do the maintenance is to run mbfile +from the crontab. example: +

    +30 05 * * * export MBSE_ROOT=/opt/mbse; /opt/mbse/bin/mbfile kill pack index -quiet
    +
    +Other functions in mbfile are meant to do manual maintenance such as +adding, deleting or moving files. +

     

    + +

    Environment.

    +

    +In order to run the bbs you need to set one global environment variable +$MBSE_ROOT +This variable must point to the root of the bbs directoy structure. The +main configuration file config.data +must exist in the subdirectory ~/etc. +

     

    + +

    Commands.

    +

    +mbfile adopt <area> <file> "[description]" +Adopt a file to the filebase. The description is optional, but if present it +should be enclosed in quotes. The optional description may be at most 255 characters. +Default mbfile will try to use the FILE_ID.DIZ if this is present. The file to +adopt needs to be in your current directory and will be copied to the new area. +If you have virus scanners defined, the file will be checked for virusses. + +

    +mbfile check [area] +Check the database integrity. All files in the filedatabase must exist on +disk and all files on disk must exist in the filedatabase. There are some +exceptions, files.bbs, files.bak, 00index, index*.html, header, readme and +files that start with a dot. +Of all files the date and time is checked, the size and the crc +value of the file. If there is something wrong, the error is corrected or the +file is removed. If the area is a CD-rom area, the check that files on disk +must exist in the filedatabase is skipped. +If no area number is given, all areas are checked. +

    + +mbfile delete <area> "<filemask>" +Mark file(s) in an area for later deletion. You can use wildcards, and if you do +surround them with quotes to prevent shell expansion. +The file is not removed until you run mbfile pack. +

    + +mbfile import <area> +Import files to the given area using files.bbs descriptions. There are two +possibilities, import from CD-rom or just from a temporary directory. +

      +
    • Import from a temporary directory: Put the files to import there including the +files.bbs file. +
    • Import from CD-rom: Go into the directory on the CD +where the files are. If the files.bbs is not in the same directory, +you must enter the full filename and path where the files.bbs is with +mbsetup 8.4.area.6. +
    +To start the import, type mbfile import area where area is the +number of the destination filearea. +The files are not checked for FILE_ID.DIZ inside the +archives. If you have virus scanners defined, the files are checked for +virusses before they are added the the bbs. If you don't want these fresh files +to be announced, add the -announce option on the commandline. This +may be a good idea if you migrate from another bbs system. +

    + +mbfile index +Create fast filerequest index for the mbcico filerequest +processor. In each directory with the downloadable files is also a +files.bbs file written in msdos cr/lf format. This includes a +download counter. +Also, if defined, in each available download area for ftp/http, 00index +and index.html files are +created, starting at the ftp pub directory. If the area contains gif or jpg +images, thumbnails are created using the convert program if you have that +installed. The thumbnails have the same filenames as the original images, only +they start with a dot. The convert command is defined with mbsetup menu +1.19.8, if you don't have it or don't want thumbnails, make that entry empty. +The index command only rebuilds area index files (files.bbs, index.html and +00index) when there was a change in the area. +

    + +mbfile kill +Mark files to delete or move files in areas that have the download age +set or the filedate age set. A setting of 0 is ignored. +Areas on CD-rom are always skipped. +If the Move to Area option is set the files are moved to the given area. The +upload date and download date are reset to the current date and time. +So if you set in the destination area aging of 14 days, files will stay +there for 14 days after the move. This is good for automatic "last chance" areas. +

    + +mbfile list [area] +List all defined file areas, the number of files, the total size of the files +and the primary group. If and area is given on the commandline, the files in +that area are listed. +

    + +mbfile move <from> <to> <file> +This command will move a file from one area to another. No actions on the file +are performed. +

    + +mbfile pack +This command will actualy remove the records of files that are marked for +deletion. If the file is still on disk, it will be removed also. So when +you delete files with mbsetup or with mbfile, they are still in your database and on disk +until you run mbfile pack. +

    + +mbfile rearc <area> "<filemask>"; +Re-archive file(s) in an file area to the archiver that must be set in the +file area setup. +

    + +mbfile sort <area> +Sort the files in area on the long filenames. The sort is case insensitive. When +the sort is completed, the command mbfile index will automatic +run to rebuild all indexes. +

    + +mbfile toberep +Shows which files are to be reported. This lists only the files that are +received during .tic processing, new uploaded files are not displayed. This list +is automatic removed after newfiles are announced. +See also mbtoberep. +

    + +mbfile undelete <area> "<filemask>" +Mark a file that is marked for deletion to be available again, ie. undo the deletion +mark. You can use wildcards, and if you do +surround them with quotes to prevent shell expansion. +

     

    + +

    Options.

    +

    +mbfile [command] -quiet +Quiet mode, no screen output. Use this switch if you run mbfile from the crontab. +

    +mbfile [command] -announce +Announce mode, use this switch with the adopt and import commands to prevent +that the added file(s) will be announced. This can be usefull if you add lots of +files that you don't want to announce these as new files. +

    +mbfile [command] -force +With the adopt, import and move commands files that already exist in the +destination area are not overwritten. With this switch you can force to +overwrite the existing file. +

    +mbfile [command] -virus +Supress virus scanning of files during adopt or import. Use with care. +

    + +IndexBack to index  +MainBack to Main index +

    + + + diff --git a/html/programs/mbindex.html b/html/programs/mbindex.html new file mode 100644 index 00000000..b54c5b6f --- /dev/null +++ b/html/programs/mbindex.html @@ -0,0 +1,68 @@ + + + + + + + + + + + +MBSE BBS Programs - mbindex - Nodelist Index Compiler. + + + +
    +
    Last update 30-Jan-2001
    +

    mbindex - Nodelist Index Compiler.

    + +

    Synopsis.

    +

    +mbindex <options> +

     

    + + +

    Description.

    +

    +mbindex is the nodelist index compiler. It will create +an index file containing the sorted fidonet addresses as index file to the +raw nodelists in the defined nodelist directory. Several other programs +use this index file for fast retreival of data from the nodelists. Compiling +new nodelist indexes can always be done, while compiling the result +is stored in temporary index files and only after successfull compilation the +original indexes are renamed and the temporary files get the normal names. +The renamed (old) indexes stay on disk including the previous version of the +old raw nodelist. They stay there in case some program had the nodelist or +index still open. So in the nodelist directory there are current nodelists, +previous +nodelists, current indexes and previous indexes, and during compiling the +temporary indexes. There is no need to manually remove (and not wise to do so) +files from the nodelist directory. +

    +The nodelists in the nodelist directory are the normal uncompressed nodelists +in MS-DOS format (with CR/LF). The filename extensions must be two or 3 digits. +So if you have a private pointlist named bestbbs.pts you +will have to rename that to bestbbs.999 to make it work. +

     

    + +

    Environment.

    +

    +In order to run mbindex you must set the global variable +$MBSE_ROOT. This variable must point to the root directory +of the bbs structure. The main configuration file config.data +must be present in the ~/etc directory. +

     

    + +

    Options.

    +

    +mbindex -quiet Quiet mode, no screen output. Use the switch +if you run mbindex from a shellscript or from the crontab. +

     

    + +IndexBack to index  +MainBack to Main index +

    + + + diff --git a/html/programs/mblang.html b/html/programs/mblang.html new file mode 100644 index 00000000..805cdf53 --- /dev/null +++ b/html/programs/mblang.html @@ -0,0 +1,38 @@ + + + + + + + + + + + +MBSE BBS Programs - mblang - Language Data Compiler. + + + +
    +
    Last update 30-Jan-2001
    +

    mblang - Language Data Compiler

    + +

    Synopsis.

    +

    +mblang [language data file] [language source text] +

     

    + +

    Description.

    +

    +mblang compiles the source textfile to language datafile +which is used by the mbsebbs program. You only need to +use this program if you install a new language file. When you build the +complete mbse bbs package, this command is run automatic for you. +

    + +IndexBack to index  +MainBack to Main index +

    + + + diff --git a/html/programs/mblogin.html b/html/programs/mblogin.html new file mode 100644 index 00000000..4885020a --- /dev/null +++ b/html/programs/mblogin.html @@ -0,0 +1,122 @@ + + + + + + + + + + + +MBSE BBS Programs - mblogin - Unix login replacement for MBSE BBS. + + + +
    +
    Last update 25-Aug-2007
    +

    mblogin - Unix login replacement for MBSE BBS.

    + +

    Synopsis.

    +

    +mblogin [-p] [-h hostname] [user] +

     

    + +

    Description.

    +

    +mblogin replaces the standard Unix login program for MBSE BBS. +You can use this program from mgetty for modem/ISDN access, +or from inetd to allow telnet access. +This program logs in the systems syslog facility because the normal login +program does this too. It uses the file /opt/mbse/etc/login.defs +for the behaviour you prefere. All options in this file are well commented. It uses +the bbs user database to see who are allowed to login. Users can use their +Fidonet name, Unix name or Handle. If the name is found in the userbase, the +name is replaced with the real Unix name to do the password check and to start +the mbsebbs program. If the user is not found in the user base, +the user is asked if he wants to register as a new user. This behaviour can be +turned off. If the user uses the name bbs he will start the +mbnewusr program directly. All other users are not allowed to +login, not even root. If you change it in the file +/opt/mbse/etc/login.defs you may allow user mbse +to login. I advice against it, you should use ssh if you want +remote access to do maintenance. +

     

    + +

    How to use from inetd.

    +

    +If your system is connected to the internet you may want to let users login +using telnet. The changes you need to make are different for each operating +system mbse supports. The right lines for your distribution should already +be present, but they are not set active, in other words, you still need to +make changes to allow telnet login to work. +I will describe how to use it from inetd. +When you make changes to your system to +change the telnet login, make sure you are already logged into your system as root +from another terminal. If you make a mistake and can't login anymore you will be +glad that you are still logged in on another terminal. Here are the tested +setups: +

      +
    • GNU/Linux: edit the telnet line in /etc/inetd.conf:
      + telnet stream tcp nowait root /usr/sbin/tcpd in.telnetd -L /opt/mbse/bin/mblogin
      + After changing this file do a kill -HUP pid where pid is the pid of the + inetd process. +
    • FreeBSD: edit the telnet line in /etc/inetd.conf:
      + telnet stream tcp nowait root /usr/libexec/telnetd telnetd -p /opt/mbse/bin/mblogin
      + After changing this file do a kill -HUP pid where pid is the pid of the + inetd process. +
    • NetBSD: append a line in /etc/gettytab just below the line with the default + entry:
      + mbsebbs:cd:ck:np:lo=/opt/mbse/bin/mblogin:sp#38400:
      + The speed entry 38400 doesn't seem to be important. + Then edit the telnet line in /etc/inetd.conf:
      + telnetd stream tcp nowait root /usr/libexec/telnetd telnetd -g mbsebbs
      + After changing this file do a kill -HUP pid where pid is the pid of the + inetd process. +
    +Now you can test it with telnet localhost or from another machine +with telnet your.machine.com. Check if you can still do other +logins such as ssh, rlogin and login on local consoles. +

     

    + +

    How to use from xinetd.

    +

    +This is how to use xinetd, Read the section above also. +Here is a tested setups: +This has to be done as root. You have to create a service under /etc/xinetd.d +named telnet if you dont have it yet installed, if it is already installed just +modify the server_args line to match this: +

    +server_args = -L /opt/mbse/bin/mblogin
    +
    +Your /etc/xinetd.d/telnet file should look something like this: +
    +service telnet
    +{
    +        flags = REUSE
    +        log_on_failure += USERID
    +        socket_type = stream
    +        user = root
    +        server = /usr/sbin/telnetd
    +        server_args = -L /opt/mbse/bin/mblogin
    +        wait = no
    +}
    +
    +This will replace the standard login program on xinetd systems to the mblogin +program, so that next time someone logs into your bbs they will be presented the +issue file on /opt/mbse/etc file and the login prompt for the BBS instead of the +standard login prompt. +

     

    + + +

    How to use from mgetty

    +

    +This is described with the setup for mgetty. +

    + +IndexBack to index  +MainBack to Main index +

    + + + diff --git a/html/programs/mbmon.html b/html/programs/mbmon.html new file mode 100644 index 00000000..e7bee5f8 --- /dev/null +++ b/html/programs/mbmon.html @@ -0,0 +1,119 @@ + + + + + + + + + + + +MBSE BBS Programs - mbmon - MBSE BBS Monitor. + + + +
    +
    Last update 28-Aug-2003
    +

    mbmon - MBSE BBS Monitor

    + +

    Sysnopsis.

    +

    +mbmon +

     

    + +

    Description.

    +

    +mbmon is the monitor program so that you can see what is +happening on your bbs. It can show all processes and actions of all programs, +show system statitistics, disk useage, and the last callers list. +mbmon must run on the same system where the bbs is. When +started it will also report that the sysop is present on the system for chat so +that users of your bbs can page you for a chat. If a user pages you, this will +be shown in every screen of mbmon and a beep will sound every +few seconds.
    + + + + + +
    + +A user is paging
    +
    Main menu, a user is paging.
    +
    + +chat with a user
    +
    Chat with a user.
    +
    + +

     

    + +

    Environment.

    +

    +In order to run mbmon you must set the global variable +$MBSE_ROOT. This variable must point to the root directory +of the bbs structure. +

     

    + +

    Menu 1.

    +

    +This screen shows the running bbs programs and what they are doing. +

     

    + +

    Menu 2.

    +

    +This screen displays the actual mbtask server status and some internal +variables. The left side of the screen are more statistics and counters, the +right side displays the actual bbs open status, Zone Mail Hour status, if +Internet is alive, if internet is needed, if mbtask is internal running and the +system load average. Consult this screen if you think mbse doesn't run. +

     

    + +

    Menu 3.

    +

    +This screen displays the filesystem usage. Removeable filesystems such as CD's are not displayed, +only filesystems that the bbs could use. +

     

    + +

    Menu 4.

    +

    +This screen shows some bbs information. +

     

    + +

    Menu 5.

    +

    +This menus shows the lastcallers of the bbs. It shows the username, location, +userlevel, the device they logged in from, the starttime, the duration, the +number of calls, the linespeed and the actions they have done. +The action fields mean: +Hidden, Download, Upload, Read messages, Post +messages, Chat, Offline reader, External door. +

     

    + +

    Menu 6.

    +

    +Chat with any user. Using this menu you enter the chatserver and you can chat in +any channel just as the users of your bbs can do. The chatserver works just like +an IRC server. Type /HELP for help. +

     

    + +

    Menu 7.

    +

    +Respond to a sysop page. This is actually the same as chat with any user, the +only difference is that you will join channel #sysop immediatly. If the user is +not yet connected after his page, he will also be connected to the channel as +soon as possible. +

     

    + +

    Menu 8.

    +

    +This shows the software information. +

    + +IndexBack to index  +MainBack to Main index +

    + + + diff --git a/html/programs/mbmsg.html b/html/programs/mbmsg.html new file mode 100644 index 00000000..682bdeff --- /dev/null +++ b/html/programs/mbmsg.html @@ -0,0 +1,93 @@ + + + + + + + + + + + +MBSE BBS Programs - mbmsg - Message Base Utility. + + + +
    +
    Last update 30-Jan-2001
    +

    mbmsg - Message Base Utility

    + +

    Sysnopsis.

    +

    +mbmsg [commands] <options> +

     

    + +

    Description.

    +

    +mbmsg +is the message base utility program for mbsebbs. In order to run mbmsg you +must have started mbsed, +this is the deamon which controls all bbs activities. +

    +The main purpose of mbmsg +is to link messages after tossing mail, and to maintain the size of the message +bases and the age of the messages. The best way to do the maintenance is to +run mbmsg +from the crontab. example: +

    +30 05 * * * export MBSE_ROOT=/bbs; /bbs/bin/mbmsg kill pack link -quiet
    +
    +Another purpose is to automatic post messages in message areas. Echomail and +netmail is possible. +

     

    + +

    Environment.

    +

    +In order to run mbmsg you must set the global variable +$MBSE_ROOT. This variable must point to the root directory +of the bbs structure. The main configuration file config.data +must be present in the ~/etc directory. +

     

    + +

    Commands.

    +

    +mbmsg link Link all messages by subject ignoring +Re: in the subject lines. You should run this after tossing or scanning mail. +

    +mbmsg kill Kill messages in areas that have the +age set or the maximum messages set. +A setting of 0 is ignored. The messages are not removed from the message base, +they are only marked as deleted. +

    +mbmsg pack This command actualy removes the +messages who have the deleted flag set. +The lastread pointers are updated and the messages renumbered. After this +command there is no way you can recover your messages, except from backups. +

    +mbmsg post <to> <#> <subj> <file> <flavor> + This command posts a message in numbered area. If a field +consists of more then one word it must be surounded with quotes. +The to field can be "Michiel Broek" for a full name or +"Michiel_Broek@f16.n2801.z2.fidonet" for netmail addressing. Look out: +you need underscore between the firstname and lastname, no spaces. +Flavor can be one or more of the characters "c", "i", "h" or "p" to set the Crash, +Immediate, Hold or Private flags. +If no flavor is needed, use the - (minus sign) as a placeholder. +

     

    + +

    Options.

    +

    +mbmsg [command] -area <#> +Process only one area <#> number. +

    +mbmsg [command] -quiet Quiet mode, +no screen output. Use this switch if you run mbmsg +from the crontab. +

    + +IndexBack to index  +MainBack to Main index +

    + + + diff --git a/html/programs/mbnntp.html b/html/programs/mbnntp.html new file mode 100644 index 00000000..b46648bb --- /dev/null +++ b/html/programs/mbnntp.html @@ -0,0 +1,68 @@ + + + + + + + + + + + +MBSE BBS Programs - mbnntp - News server. + + + +
    +
    Last update 26-Aug-2005
    +

    mbnntp - News server

    + +

    Synopsis.

    +

    +mbnntp You should not run this from the +commandline, instead it should be run by inetd or xinetd. +

     

    + +

    Description.

    +

    +mbnntp is a RFC977 and RFC2980 compatible news server. +The purpose is to make echomail available to newsreader clients so that bbs +users can use their favourite newsreader to participate in echomail. It will +not make your newsgroups available if you have any, the bbs user can get these +directly from the internet. The bbs echomail areas are only made available if +they have a valid newsgroup name set in the area setup. If this is not alread +set, invent your own newsgroup name. For example the WWB echomail area MBSE +could be set as fido.wwb.mbse, but you can use anything as long as it doesn't +conflict with real newsgroups. +

    +To use the server, the user must login in the +news server with his bbs unix name and password, thus the user must exist on the +bbs. The access to the areas is the same as if the user would be logged into the +bbs. +

     

    + +

    Installation.

    +

    +If installed from inetd add the following line to +/etc/inetd.conf: +

    +nntp    stream  tcp     nowait  mbse    /opt/mbse/bin/mbnntp    mbnntp
    +
    +

     

    + +

    Building.

    +

    +If you did run ./configure --enable-newsgate when you compiled the +mbse package, mbnntp will be build as a not working program. This is +intended to prevent loops between real news and echomail. With normal builds +without --enable-newsgate (recommended) mbnntp will function +as newsserver. +

    + + +IndexBack to index  +MainBack to Main index +

    + + + diff --git a/html/programs/mbout.html b/html/programs/mbout.html new file mode 100644 index 00000000..884fcdb1 --- /dev/null +++ b/html/programs/mbout.html @@ -0,0 +1,110 @@ + + + + + + + + + + + +MBSE BBS Programs - mbout - The Outbound Manager. + + + +
    +
    Last update 17-Mar-2001
    +

    mbout - The Outbound Manager

    + +

    Synopsis.

    +

    +mbout [command] <params> <options> +

     

    + +

    Description.

    +

    +mbout is the outbound manager for MBSE BBS. It can ask +information from the nodelists, create and remove polls, request and send files and +display the outbound status. Most of the tasks such as create and remove +polls should be done from the crontab. +

     

    + +

    Environment.

    +

    +In order to run mbout you must set the global variable +$MBSE_ROOT. This variable must point to the root directory +of the bbs structure. The main configuration file config.data +must be present in the ~/etc directory. +

     

    + +

    Commands.

    +

    +mbout att <node> <flavor> <file> will attach +the specified file to the specified node. The node should be in the format +f2802.n280.z2, flavor should be crash, immediate, normal or hold. Only the first +letter of the flavor parameter is needed. +If the node is not in the nodelist, the status is Down or Hold, then this command fails. +To non-CM nodes you mus use the Immediate flavor if you want to send the file direct. +The flavors Hold and Normal are still allowed. The file must be in the directory range +from where file attaches are allowed. +

    +mbout poll [node..node] creates poll requests in the outbound +for one or more nodes. The node should be in the format f2802.n280.z2. The semafore +scanout is created so that the mailer will start calling. +The mailer will handle the poll request as if it should deliver immediate mail, +so the node will be called as long as the poll request exists, even to nodes which are not CM. +The error counter for the node to poll will be reset to zero, so a node that was +previous marked undialable will be called again. +If a call to a node is successfull, the poll file will be removed by mbcico. +If a node is not in the nodelist or has the status Down or Hold, no poll will be created for that node. +

    +mbout stop [node..node] removes poll requests that are +leftover when polling nodes didn't succeed. There is no check if the node is +in the nodelist or has the status Down or Hold, the poll is always removed. +

    +mbout req <node> <file> [file..file] creates +filerequests to a node. One or more filenames may be given including wildcards. +It is not possible to do update or password protected uploads yet. If there +is already a requestlist for that node, the new requests will be added. This +command does not call a node, you need to create a poll request to make the +actual call. This is also practical if you want some files from your uplink, +just make the requests and the actual request is send when your normal +scheduled poll to your uplink is processed. +

    +mbout reset [node..node] resets the nodes "try" +counter to zero. So if a node is undiable, the counter is 30 or more, then by +resetting this counter that node will be called again. The outbound is rescanned +after this command so that calling will start immediatly. +

    +mbout stat shows the status of the mailer outbound. +This status is also written to the logfile. +

    +mbout node <node> will show the nodelist information for +a certain node. +

     

    + +

    Options.

    +

    +mbout [commands] -quiet will suppress screen output. This is +usefull if you run mbout from the crontab or from background +scripts. +

     

    + +

    Examples.

    +

    +This is an example of crontab entries that writes the outbound status to the +logfile and creates and stops polling of 2 nodes.
    +

    +00 00 * * * export MBSE_ROOT=/opt/mbse; $MBSE_ROOT/bin/mbout stat -quiet
    +00 01 * * * export MBSE_ROOT=/opt/mbse; $MBSE_ROOT/bin/mbout poll f98.n100.z92 f0.n100.z92 -quiet
    +00 02 * * * export MBSE_ROOT=/opt/mbse; $MBSE_ROOT/bin/mbout stop f98.n100.z92 f0.n100.z92 -quiet
    +
    +

    + +IndexBack to index  +MainBack to Main index +

    + + + diff --git a/html/programs/mbpasswd.html b/html/programs/mbpasswd.html new file mode 100644 index 00000000..74d85bdd --- /dev/null +++ b/html/programs/mbpasswd.html @@ -0,0 +1,55 @@ + + + + + + + + + + + +MBSE BBS Programs - mbuseradd - The useradd wrapper. + + + +
    +
    Last update 27-Aug-2005
    +

    mbpasswd - The password wrapper.

    + +

    Description.

    +

    +mbpasswd is the wrapper for the passwd program +is present on all GNU/Linux systems. To use passwd to change the password of +another user is only allowed by root. The mbpasswd program overcomes this limitation. +The wrapper mbpasswd is run from the bbs by user mbse when a new +user is being registered to set his password. It can also be started from the +bbs when an existing user changes his password. If you as sysop use +mbsetup to change a users password it will be used too. +His password under Unix is then always the same as his password in the bbs program. +This is necessary for the user to be able to get his email using the pop3 protocol.

    +You never need to run mbpasswd by hand, in fact it is protected so that +it can only be started by the bbs or mbsetup. +

     

    + +

    Environment.

    +

    +mbpasswd must be installed setuid root and setgid root, ls -la looks like this:
    +

    +-rws--s--x   1 root     root         6644 Jun 26 21:23 /opt/mbse/bin/mbpasswd*
    +
    +

     

    + +

    Commands.

    +

    +Not mentioned here because mbpasswd is only called by other programs, +running manually is not supported. +

    + + +IndexBack to index  +MainBack to Main index +

    + + + diff --git a/html/programs/mbsebbs.html b/html/programs/mbsebbs.html new file mode 100644 index 00000000..5fe2d88b --- /dev/null +++ b/html/programs/mbsebbs.html @@ -0,0 +1,147 @@ + + + + + + + + + + + +MBSE BBS Programs - mbsebbs - The main BBS program. + + + +
    +
    Last update 03-Sep-2005
    +

    mbsebbs - The main BBS program

    + +

    Synopsis.

    +

    +mbsebbs +

     

    + +

    Description.

    +

    +mbsebbs is the main bbs program for the users. +To be able to use the bbs, the bbs mustbe set open with mbstat open +or users may not login. This is normally done at system boot. +Also Zone Mail Hour is honored if the user logs in +on a tty that has the honor ZMH flag set to true. If it +is ZMH and the ZMH flag is true, the user will be kicked out of the bbs. You +should only set this flag on the modem lines where you need to be available +for ZMH if your "Fidonet" network requires that. +

    +The first visible action is to show the logo.ans file. Because it is not +known who is trying to login, you only need to place this file in the +default language directory. +

    +The next check is to see if the user is allowed to login on the tty he +currently is on. +If this tty is not available or is not in your setup, the user is kicked +out. If he is allowed to login, a message is shown at which port he is on, +unless you have turned this feature off in the setup. +

    +If the user login is successfull, his favourite language will be loaded. +Then it is checked if the user is the Sysop, if so, the Sysop flag is set. +If the users Date of Birth is invalid, he is forced to enter the right +Date of Birth. +The next check is to see if the user has passed the expiry date, this is a +usefull feature for systems with donating users. +Finally the access limits are set for the user and time remaining for today and +download limits are set. +

    +After successfull login the user can be presented with a bunch of advertising +screens. I will only name the screens without filename extension, as these +screens are searched for in the following order;
    +

      +
    1. filename.ans in the users favourite language directory. +
    2. filename.ans in the default language directory. +
    3. filename.asc in the users favourite language directory. +
    4. filename.asc in the default language directory. +
    5. If nothing is found, nothing is displayed. +
    +Here is the list of displayed screens: +
      +
    1. mainlogo. Here you can put a logo or something. +
    2. welcome. This screen can contain information about the session +the user has, his download limits, time left etc. +
    3. welcome1 is shown if the user has show bulletins set to true. +
    4. welcome2 is shown if the user has show bulletins set to true. +
    5. welcome3 is shown if the user has show bulletins set to true. +
    6. welcome4 is shown if the user has show bulletins set to true. +
    7. welcome5 is shown if the user has show bulletins set to true. +
    8. welcome6 is shown if the user has show bulletins set to true. +
    9. welcome7 is shown if the user has show bulletins set to true. +
    10. welcome8 is shown if the user has show bulletins set to true. +
    11. welcome9 is shown if the user has show bulletins set to true. +
    12. birthday is shown if the user logs in at his birthday and if he +has show bullentins set to true. +
    13. dd-mm is shown if dd is the date of today and +mm is the current month and if the user has show bulletins +set to true. +
    14. sec20 is shown if the user has the security level in the +filename, level 20 in this example. Als the display bulletins must be set to +true. +
    15. news is shown if the user has the display bulletins set to +true. +
    16. onceonly is shown only if the user has never seen this screen, +the test is to compare the users last login date against the date of this file. +
    +

    +After all these screens the users Offline Reader areas are checked to see if +you as sysop didn't change the message areas. If you made changes, the users +setup is adjusted and he will be notified. This means he sees a list +with deleted areas and new areas. +

    +Next if the user has newmail scan set to true all message bases are checked to +see if the user has new mail. This includes a check to see if he has Unix mail. +If there is Unix mail, those mails are retrieved from the POP3 server and stored +in his private mailbox. +If there is new mail for the user, the user sees a list of areas with the messages +in it and he is offered to read and reply these messages. +

    +Then if the user has show newfiles set to true and he is not a new bbs user +he will see a list of new files you have on your bbs. During this display +he can tag files for later download. +

    +The final setup is to set the users "do not disturb" flag and then the menu +system is started. The menu system will run forever, until the user chooses +to logoff, the connection is lost or his daily timelimit is reached. For the +possibilities and setup of the menus see +MBSE BBS Menu System +

     

    + +

    Environment.

    +

    +In order to run mbsebbs you must set the global variable +$MBSE_ROOT. This variable must point to the root directory +of the bbs structure. The main configuration file config.data +must be present in the ~/etc directory. +

    +If the environment variable CONNECT is present, a log entry +will be made with the connect speed. +

    +If the environment variable CALLER_ID is present, a log entry +will be made with the caller id. +

    +The environment variable LOGNAME must contain the unix +username. This is set by the mblogin program. +

    +If the environment variable REMOTEHOST is present, a log entry +will be made with the name or IP address of the remote host. +

    +If the environment variable TERM is present, a log entry +will be made with the terminal type of the remote user. +

    + +

     

    + + +IndexBack to index  +MainBack to Main index +

    + + + diff --git a/html/programs/mbseq.html b/html/programs/mbseq.html new file mode 100644 index 00000000..3e645d6a --- /dev/null +++ b/html/programs/mbseq.html @@ -0,0 +1,49 @@ + + + + + + + + + + + +MBSE BBS Programs - mbseq - Sequence number creator. + + + +
    +
    Last update 31-Jan-2001
    +

    mbseq - Sequence number creator

    + +

    Synopsis.

    +

    +mbseq +

     

    + +

    Description.

    +

    +mbseq writes a eight character hexadecimal unique sequence +number to the stdout. This number is received from mbsed +which keeps track of the generated sequence numbers. This written number can +be used in shell scripts to create unique filenames for Fidonet .pkt files, +for example: +

    + +cp temp.pkt `mbseq`.pkt + +

     

    + +

    Bugs.

    +

    +Nah, it's only 50 lines code, what could go wrong? +

    + + +IndexBack to index  +MainBack to Main index +

    + + + diff --git a/html/programs/mbsetup.html b/html/programs/mbsetup.html new file mode 100644 index 00000000..da5181af --- /dev/null +++ b/html/programs/mbsetup.html @@ -0,0 +1,62 @@ + + + + + + + + + + + +MBSE BBS Programs - mbsetup - The Setup Program. + + + +
    +
    Last update 05-May-2002
    +

    mbsetup - The Setup Program

    + +

    Synopsis.

    +

    +mbsetup [init] +

     

    + +

    Description.

    +

    +mbsetup is the setup program for MBSE BBS. It should be run +only by user mbse and it fails to start if you are not. +If it is started with the optional paramater init only the databases are +initialized. This is automagic done by mbtask when you start the system +for the very first time. You should never need to use this switch. +When mbsetup is started without arguments the databases will be checked +and initialized before the main screen is displayed. +Both methods are being used to make sure all needed databases excist. +For a detailed description of all setup options see +MBSE BBS Setup Guide
    +mbsetup uses locking to protect the system databases. Some setup menus +can only be entered if the bbs is free, ie. no users logged on, no mailer +sessions, not tossing mail etc. If the bbs is free, then these menus can be +entered and the bbs will be closed. No users can login, tossers do not run etc. +Only mailer calls are still accepted. So be carefull not to stay too long in +these menus, you are blocking normal bbs use. In the top status bar this +situation is displayed. +

     

    + +

    Environment.

    +

    +In order to run mbsetup you must set the global variable +$MBSE_ROOT. This variable must point to the root directory +of the bbs structure. The main configuration file config.data +must be present in the ~/etc directory. If it is not present, ie you run +mbsetup for the first time, a default +config.data will be created. This will also happen with +several other databases. +

    + +IndexBack to index  +MainBack to Main index +

    + + + diff --git a/html/programs/mbstat.html b/html/programs/mbstat.html new file mode 100644 index 00000000..3130a60a --- /dev/null +++ b/html/programs/mbstat.html @@ -0,0 +1,79 @@ + + + + + + + + + + + +MBSE BBS Programs - mbstat - MBSE BBS Status Changer. + + + +
    +
    Last update 07-Jul-2001
    +

    mbstat - MBSE BBS Status Changer

    + +

    Synopsis.

    +

    +mbstat [commands] <options> +

     

    + +

    Description.

    +

    +mbstat changes the bbs status between open and close, can wait +for all users to logoff and wait for critical utilities to stop their actions. +

     

    + +

    Environment.

    +

    +In order to run mbstat you must set the global variable +$MBSE_ROOT. This variable must point to the root directory +of the bbs structure. The main configuration file config.data +must be present in the ~/etc directory. +

     

    + +

    Commands.

    +

    +mbstat semafore scanout will set the internal +semafore scanout in the mbtask daemon. The following semafore's +are valid: scanout, mailout, mailin, mbindex, reqindex, msglink. +

    +mbstat close will close the bbs for users. +Users that are just logging in to the bbs will be thrown out after a short message. +Users already logged in will be thrown out when they pass by a menu prompt. +So users who are doing file transfers can finish their transfers before being disconnected. +

    +mbstat open opens the bbs for users. +This should be run from one of the system startup scripts right after you started +mbsed. If you installed everything as it should this +command is already executed at system startup. +

    +mbstat wait will +wait for the bbs to become free. This includes a check for utilities that +do critical actions so they can finish their job without corrupting the bbs +databases. The default is to wait 60 minutes. If the semafore +upsdown exists it will wait only 30 seconds. +

    +You should run mbstat close wait in your system shutdown script so +that the system shutdown will wait for a clean shutdown of the bbs before +the rest of your system goes down. If you installed everything as it should +be then these commands are already installed in your system shutdown scripts. +

    + +

    Options.

    +

    +mbstat [command] -quiet will supress screen output. +This is good for using mbstat in scripts. +

    + + +IndexBack to index  +MainBack to Main index +

    + + + diff --git a/html/programs/mbtask.html b/html/programs/mbtask.html new file mode 100644 index 00000000..65108ad4 --- /dev/null +++ b/html/programs/mbtask.html @@ -0,0 +1,432 @@ + + + + + + + + + + + +MBSE BBS Programs - mbtask - MBSE BBS Taskmanager. + + + +
    +
    Last update 10-Feb-2008
    +

    mbtask - MBSE BBS Taskmanager

    + +

    Sysopsis.

    +

    +mbtask [-nd] +

     

    + +

    Description.

    +

    +mbtask is the taskmanager for the whole MBSE BBS system. +This deamon keeps track of all client actions, +does the logging for the clients, does database locking, authorizes clients, +set/resets users "do not disturb flags", sends and receives chat messages, +keeps track of Zone Mail Hour, the status of the mail and files in the outbound, +and the BBS open/close status. +Communication between mbsed and the client programs is done via Unix +Datagram sockets. The protocol used to communicate between mbtask +and the clients is explained later. +This daemon also watches the semafore directory for some special files. +It also starts programs when they are needed. +The very first time mbtask is started it creates a default config.data and task.data, +the main configuration and task configuration files. +Then it calls mbsetup init to build the default databases. +mbtask should be started at system boot so the bbs system will start working. +The init script that is installed on your system will do that. +

    +After startup and initalization mbtask runs internally once per second forever. +If there is nothing to do then this time will slowly increase upto 5 seconds. This time will be reset +to one second as soon as there is work to be done. The actual work is to check a number of external and +internal semafore's and act on these. +But before any program is started a number of things are checked: +

      +
    1. Check the system's load average. If it is too busy the processing of background + tasks is suspended until your system load drops. + The default setup is set at 1.50 but you can change that with mbsetup. Experience + will learn what the best value will be and I need some feedback on that.
      +
    2. The UPS semafore upsalarm will be checked. This means that the system is running on + battery power and no new jobs are started. +
    3. The UPS semafore upsdown will be checked. This is the fatal one, if + this one exists mbtask will try to stop all current running jobs. + If there are no jobs left running then mbtask will stop itself. + The upsdown semafore means that the system + will shutdown and power off, that's why it's fatal and there is no way back.
      +
    4. The status of the bbs will be checked, is it open or closed. If it is closed, no + jobs will be started. +
    5. The Zone Mail Hour is checked. If ZMH begins the semafore's zmh is + created. + If ZMH ends the semafore zmh is removed. +
    6. Each twenty seconds a ping is send to the IP addresses defined with mbsetup to + check if the internet can be reached. If both ping addresses fail, it is assumed that + the internet can't be reached. After a status change, the outbound will be + scanned. +
    7. Scan the mailer outbound for work. This builds a list of nodes with mail + in the outbound and sets the necessary flags on nodes who may be called. + If a node needs to be called, mbtask will spawn mbcico to + call this node. The number of free modem and ISDN ports and the maximum + number of TCP/IP sessions and already registered sessions, determine + howmany sessions will be started. The sessions will be started at + intervals of 20 seconds. + It will also set a time when something will change for a node, ie. a zone + mail hour is reached, or a mail window for a node with Txx flags is + reached. Internally this scheduler runs at the UTC clock because Fidonet + has all times defined in UTC. +
    +Each new minute the timestamp of semafore mbtask.last is updated so that you can check that +mbtask is running. Also each minute is checked if the system configuration files are +changed, is so they are reloaded. There is no need to stop and start mbtask if you made +changes to the system configuration. +Then all kind of internal semafore's will be checked. The commands that are executed have default +values, but they can be changed wit mbsetup. The commands can be scripts as well. +The checks and actions are: +

    + + + + + + + + + + + + + + + +
    SemaforeSpeedTasktypeDepends onJob to run
    mailoutFastmbfidoMax. 1 mbfido taskmbfido scan web -quiet
    mailinFastmbfidoMax. 1 mbfido taskmbfido tic toss web -quiet
    newnewsFastmbfidoMax. 1 mbfido taskmbfido news web -quiet
    mbindexFastmbindexNo other tasksmbindex -quiet and if exist: goldnode
    msglinkFastmbfidoNo other tasksmbmsg link -quiet
    reqindexFastmbfileNo other tasksmbfile index -quiet
    scanoutSlowcallOnly 1 call taskmbcico -r1
    +

    +The Fast and Slow values mean: Fast is each second, Slow is check each 20 seconds. +As you can see, the system will not do too much at the same time. Jobs like compiling +new nodelists or create file request indexes have a very low priority. Because this +daemon checks the semafore's each second it responds much better that the old scripts +running on the cron daemon. The system will be expanded so that more outgoing calls +will be done at the same time, ie. ISDN and analogue calls, and if they are present +internet calls, will be made at the same time. +

    +The mbtask program keeps also track of a unique number generator, this is +just a simple counter that is increased each time it is asked for a new number. +It will take years for the numbers to repeat. Even if the status file is lost +the chance that numbers are repeated on your system are almost zero. The first +time the counter is initialized it is set to the current unix time in seconds +since 1 januari 1970. This counter is used by several programs to create unique +.pkt filenames, msgid numbers etc. +

    +The commandline option -nd is only for debugging, it allows to start +without becoming a daemon, mbtask will run in the foreground. This +option is only usefull for developers. +

     

    + +

    Environment.

    +

    +In order to run mbtask you must set the global variable +$MBSE_ROOT. This variable must point to the root directory +of the bbs structure. +

     

    + + +

    Security.

    +

    +mbtask is installed setuid root. This is needed to initialize +a raw socket for the ping function. After that is done the privilege drops to +user mbse before the child process is created and the rest +of the initialisation is done. +The child process can never get root privileges because it is spawned by user mbse. +

     

    + + +

    Communications.

    +

    +Communication between the server and the clients is established by +Unix datagram sockets. There can be only 1 server running. +The server will accept connections from clients on your local machine only. +The limit for the amount of clients that can connect to the server is set to 100. +

    +The server creates a Unix datagram socket at startup and waits for connections. +The name of this this socket is /opt/mbse/tmp/mbtask. +When a client connects it creates a Unix datagram socket in /opt/mbse/tmp, the name is +the name of the program, added with the pid of the program. So if mbcico is started +with pid 2312 the socket will be /opt/mbse/tmp/mbcico2312. +

    +All commands are 4 capital letters followed by a colon, a number indicating +how much data fields will follow. If that number is higher than zero, the +data fields are seperated with commas. The command is terminated +with a ; character. Examples are:
    +

    +GCLO:0;                 Zero datafields command.
    +DOPE:1,dbname;          One datafield command.
    +
    +All commands will receive a reply as soon as possible. If a +resource is temporary not available, a reply will follow too, telling +this condition. Replies can also contain optional data. Examples:
    +
    +100:0;                  Response 100, no data.
    +200:1,Syntax error;     One datafield.
    +
    +Because data fields in commands and replies are separated and terminated by +, and ; characters these characters need to be escaped. Also characters outside +the us-ascii range must be escaped. This is done by translating the character +to a backslash followed by the hexadecimal number of the character. +The server has a 10 minute timeout for receiving data when a connection +is established. The clients need to "ping" the server at regular intervals +to prevent a disconnect. All official MBSE BBS programs do that. The pid +send with most commands is the pid of the calling program. Since this number +is unique, it is used to keep track of the connected clients. +

    +The commands are divided in 26 catagories, most unused at this time. +

    +

    +Catagories:
    +
    +Cat.    Description
    +----    -------------------------------------------
    +Axxx    Accounting, system monitor info etc.
    +Cxxx    Chatting
    +Dxxx    Disk watch
    +Gxxx    Global commands.
    +Mxxx    MIB commands.
    +Sxxx    Status commands.
    +
    +
    +
    +         Group A, Accounting.
    +
    +Command: AINI:5,pid,tty,uid,prg,city;   Initialize connection, and who am I.
    +Reply:   100:1,line;                    Ok, linen is a logical linennumber for the bbs.
    +         200:1,Syntax Error;            Error.
    +
    +Command: ADOI:2,pid,doing;              What am I doing right now.
    +Reply:   100:0;                         Ok.
    +         200:1,Syntax Error;            Error.
    +
    +Command: ACLO:1,pid;                    Close my connection.
    +Reply:   107:0;                         Connection closed.
    +         200:1,Syntax Error;            Error, connection is still open.
    +
    +Command: ALOG:5,fil,prg,pid,grade,txt;  Write a line of text in logfile with grade.
    +Reply:   100:0;                         Ok.
    +         201:1,errno;                   Error, number in errno.
    +
    +Command: ATCP:1,pid;			Registrate this session as TCP/IP session.
    +Reply:   100:0;				Ok.
    +         200:1,Syntax Error;		Error.
    +
    +Command: AUSR:3,pid,uid,city;           Set username and city
    +Reply:   100:0;                         Ok.
    +         200:1,Syntax Error;            Error.
    +
    +Command: ADIS:2,pid,flag;               Set Do Not Disturb flag.
    +Reply:   100:0;                         Ok.
    +         200:1,Syntax Error;            Error.
    +
    +Command: ATIM:1,time;                   Set new Client/Server timer in seconds.
    +Reply:   100:0;                         Ok.
    +         200:1,Syntax Error;            Error.
    +
    +Command: ADEF:0;                        Set Client/Server timer to default (10 minutes).
    +Reply:   100:0;                         Ok.
    +         200:1,Syntax Error;            Error.
    +
    +Command: ATTY:2,pid,tty;                Set new tty name.
    +Reply:   100:0;                         Ok.
    +         200:1,Syntax Error;            Error.
    +
    +
    +         Group C, Chatting
    +
    +Command: CIPM:1,pid;                    Is Personal Message present.
    +Reply:   100:2,fromname,message;        Yes, from .. with message text.
    +         100:0;                         No.
    +
    +Command: CSPM:3,fromuser,touser,txt;    Send personal message to user.
    +Reply:   100:1,n;                       n: 0=Ok, 1=Do not disturb, 2=Buffer full, 3=Error.
    +         100:0;                         Impossible.
    +
    +Command: CSYS:2,pid,1;                  Sysop available for chat (from mbmon).
    +         CSYS:2,pid,0;                  Sysop goes away (from mbmon).
    +Reply:   100:0;                         Always Ok.
    +
    +Command: CPAG:2,pid,reason;             Page sysop for a chat.
    +Reply:   100:1,n;                       1=busy, 2=sysop not available, 3=error.
    +         100:0;                         Ok
    +
    +Command: CCAN:1,pid;                    Cancel sysop page.
    +Reply:   100:0;                         Always Ok.
    +
    +Command: CCKP:0;                        Check sysop page (from mbmon).
    +Reply:   100:3,pid,1,reason;            Page is active.
    +         100:3,pid,0,reason;            Page is cancelled, user still online.
    +         100:0;                         No page active.
    +
    +Command: CISC:1,pid;                    Check sysop in chatmode.
    +Reply:   100:1,1;                       Yes and drop into chatmode.
    +         100:1,0;                       No.
    +
    +Command: CCON:4,pid,username,unixname,n; Connect to chatserver with username. n=1 user is sysop.
    +Reply:   100:1,error;                   Error with message.
    +         100:0;                         Ok.
    +
    +Command: CCLO:1,pid;                    Close chat session.
    +Reply:   100:1,error;                   Error.
    +         100:0;                         Ok.
    +
    +Command: CPUT:2,pid,message;            Put message on chatserver.
    +Reply:   100:2,0,error;                 Error, not fatal and continue.
    +         100:2,1,error;                 Error, fatal and disconnect chat.
    +	 100:0;                         Ok.
    +
    +Command: CGET:1,pid;                    Get message from chatserver.
    +         100:2,0,message;               If message present.
    +	 100:2,1,error;                 Error and disconnect chat.
    +	 100:0;                         No new message.
    +
    +
    +         Group D, Disk watch command.
    +
    +Command: DRES:0;                        Reset and reread disk tables.
    +Reply:   100:0;                         Always Ok.
    +
    +Command: DSPC:0;                        Enough free diskspace.
    +Reply:   100:1;n;                       0=No, 1=Yes, 2=Unknown, 3=Error.
    +
    +Command: DGFS:0;                        Get filesystem status (see note below).
    +         100:n,data1, ..., data10;      Maximum 10 filesystems datalines.
    +
    +
    +         Group G, Global commands.
    +
    +Command: GNOP:0;                        No OPerations.
    +Reply:   100:0;                         Ok.
    +
    +Command: GPNG:1,data;                   Ping, echo data.
    +Reply:   100:1,data;                    Ping reply.
    +
    +Command: GVER:0;                        Give server version.
    +Reply:   100:1,Version ....;            Version reply.
    +
    +Command: GSTA:0;                        Get complete mbsed status record. (13 fields)
    +Reply:   100:19,start,laststart,daily,startups,clients,tot_clients,tot_peak,syntax_errs,
    +                com_errs,today_clients,today_peak,today_syntax,today_comerr,bbsopen,
    +                is_zmh,do_inet,processing,system_load,sequence;
    +
    +Command: GMON:1,n;                      Get registration info line, 1=First, 0=Next line.
    +Reply:   100:7,pid,tty,user,program,city,isdoing,starttime;
    +         100:0;                         No more lines.
    +
    +Command: GSYS:0;                        Get bbs statistics.
    +         100:7,calls,pots_calls,isdn_calls,network_calls,local_calls,startdate,lastcaller;
    +
    +Command: GLCC:0;                        Get Lastcallers count
    +         100,1,n;                       Return counter value.
    +
    +Command: GLCR:1,recno;                  Get Lastcaller record
    +         100:9,user,location,level,tty,time,minsmcalls,speed,cations;
    +         201:1,16;                      Not available.
    +
    +
    +         Group M, MIB commands.
    +
    +Command: MSMS:6,kbrcvd,kbsent,direction,state,itype,freqs; Set Mailer Session
    +Reply:   100,0;
    +
    +Command: MGMS:0;			Get Mailer Session
    +Reply:	 100:12,kbrcvd,kbsent,sessin,sessout,sess_sec,sess_unseq,sess_bad,ftsc,yoohoo,emsi,binkp,freqs;
    +
    +Command: MSTN:3,in,out,bad;		Set Tosser Netmail
    +Reply:   100,0;
    +
    +Command: MGTN:0;			Get Tosser Netmail
    +Reply:	 100:3,in,out,bad;
    +
    +Command: MSTI:3,in,out,bad;		Set Tosser Internet-email
    +Reply:   100,0;
    +
    +Command: MGTI:0;			Get Tosser Internet-email
    +Reply:   100:3,in,out,bad;
    +
    +Command: MSTE:4,in,out,bad,dupe;	Set Tosser Echomail
    +Reply:   100:0;
    +
    +Command: MGTE:0;			Get Tosser Echomail
    +Reply:   100:4,in,out,bad,dupe;
    +
    +Command: MSTR:4,in,out,bad,dupe;	Set Tosser RFC-news
    +Reply:   100:0;
    +
    +Command: MGTR:0;			Get Tosser RFC-news
    +Reply:   100:4,in,out,bad,dupe;
    +
    +Command: MGTT:0;			Get Tosser Totals
    +Reply:	 100:4,in,out,bad,dupe;
    +
    +Command: MSFF:6,in,out,bad,dupe,magics,hatched;	Set Tosser Files
    +Reply:   100:0;
    +
    +Command: MGFF:0;			Get Tosser Files
    +Reply:   100:6,in,out,bad,dupe,magics,hatched;
    +
    +Command: MSBB:9,sessions,minutes,posted,uploads,kbupload,downloads,kbdownload,chats,chatminutes; Set BBS
    +Reply:   100:0;
    +
    +Command: MGBB:0;			Get BBS
    +Reply:	 100:9,sessions,minutes,posted,uploads,kbupload,downloads,kbdownload,chats,chatminutes
    +
    +Command: MGOB:0;			Get Outbound Size
    +Reply:   100:1,size;
    +
    +
    +         Group S, Status commands.
    +
    +Command: SBBS:0;                        Get BBS Status (open, zmh, shutdown).
    +Reply:   100:2,0,The system is open for use;
    +         100:2,1,The system is closed right now!;
    +         100:2,2,The system is closed for Zone Mail Hour!;
    +
    +Command: SOPE:0;                        Open the BBS.
    +Reply:   100:0;                         Ok.
    +
    +Command: SCLO:1,mesage;                 Close the BBS with reason.
    +Reply:   100:0;                         Ok.
    +
    +Command: SFRE:0;                        Is the BBS Free.
    +Reply:   100:1,Running utilities: n  Active users: n;
    +         100:0;                         It's free.
    +
    +Command: SSEQ:0;                        Get next unique sequence number.
    +Reply:   100:1,number;                  Next unique sequence number.
    +
    +Command: SEST:1,semafore;               Get status of internal semafore.
    +Reply:   100:1,n;                       1 = set, 0 = not set.
    +         200:1,16;                      Semafore not known.
    +
    +Command: SECR:1,semafore;               Set semafore
    +Reply:   100:0;                         Ok.
    +         200:1,16;                      Error.
    +
    +Command: SERM:1,semafore;               Remove semafore
    +Reply:   100:0;                         Ok (also if there was no semafore).
    +         200:1,16;                      Semafore not known.
    +
    +Note: in reply of DGFS the reply is 100:n,size free mountpoint fstype,..... +where n = 1 for 1 filesystem, and 10 for a total of 10 filesystems. There +will never be a reply for more then 10 filesystems. The reported filesystems +are collected by a thread process of mbtask that only includes the filesystems +actually used by mbse. +This is used by the mbmon program to get a "live" view of your filesystems. +The GSPC command is used by utilities to check if enough space is available to +continue to work safely. +

     

    + +IndexBack to index  +MainBack to Main index +

    + + diff --git a/html/programs/mbtoberep.html b/html/programs/mbtoberep.html new file mode 100644 index 00000000..088f0bed --- /dev/null +++ b/html/programs/mbtoberep.html @@ -0,0 +1,47 @@ + + + + + + + + + + + +MBSE BBS Programs - mbtoberep - List newfiles to report. + + + +
    +
    Last update 31-Jan-2001
    +

    mbtoberep - List newfiles to report

    + +

    Synopsis.

    +

    +mbtoberep +

     

    + +

    Description.

    +

    +mbtoberep is a small utility to list the file +~/etc/toberep.data which contains the newfiles found on your system before +mbaff announce is run. This program is intended for system +development but I decided to leave it in the distribution for now. If you +pipe the output thru more or less you are able to inspect the records. +

     

    + +

    Environment.

    +

    +In order to run mbtoberep you must set the global variable +$MBSE_ROOT. This variable must point to the root directory +of the bbs structure. The main configuration file config.data +must be present in the ~/etc directory. +

    + +IndexBack to index  +MainBack to Main index +

    + + + diff --git a/html/programs/mbuser.html b/html/programs/mbuser.html new file mode 100644 index 00000000..08f23a6f --- /dev/null +++ b/html/programs/mbuser.html @@ -0,0 +1,71 @@ + + + + + + + + + + + +MBSE BBS Programs - mbuser - User Database Maintenance. + + + +
    +
    Last update 02-Feb-2001
    +

    mbuser - User Database Maintenance

    + +

    Sysnopsis.

    +

    +mbuser [commands] <options> +

     

    + +

    Description.

    +

    +mbuser is the user database maintenance program. It can delete +users upto a certain level who have not called for a number of days. It can +also pack the user database. This is not really a pack of the database, the +deleted records are zeroed but the database is never shrinked. Every user +once in this database will keep his record forever. This is to be sure that +all LastRead Pointers will be correct. Records that are zeroed can be +reused for new users. mbuser must run setuid root and +setgid root because it executes /usr/sbin/userdel to delete the Unix account +of the user that is removed from the bbs. +

     

    + +

    Environment.

    +

    +In order to run mbuser you must set the global variable +$MBSE_ROOT. This variable must point to the root directory +of the bbs structure. The main configuration file config.data +must be present in the ~/etc directory. mbuser must be +installed setuid root and setgid root, ls -la looks like this:
    +

    +-rws--s--x   1 root     root        23560 Jun 19 19:50 /opt/mbse/bin/mbuser*
    +
    +

     

    + +

    Commands.

    +

    +mbuser kill [n] [l] will mark users to delete who have not +called in n days upto and including level l. +

    +mbuser pack will delete (zero) the users marked for deletion. +You should also run this command if you marked users to delete with +mbsetup. +

     

    + +

    Options.

    +

    +mbuser [command] -quiet will suppress screen output, this is +for running mbuser in the background or from the crontab. +

    + +IndexBack to index  +MainBack to Main index +

    + + + diff --git a/html/programs/mbuseradd.html b/html/programs/mbuseradd.html new file mode 100644 index 00000000..12d1c908 --- /dev/null +++ b/html/programs/mbuseradd.html @@ -0,0 +1,71 @@ + + + + + + + + + + + +MBSE BBS Programs - mbuseradd - The useradd wrapper. + + + +
    +
    Last update 27-Aug-2005
    +

    mbuseradd - The useradd wrapper.

    + +

    Sysnopsis.

    +

    +mbuseradd [gid] [username] [comment] [userdir] +

     

    + +

    Description.

    +

    +mbuseradd is the wrapper for the useradd +program that should be present on most GNU/Linux systems. useradd +may only be executed by root and there are some other minor +things that need to be done as root to create a new Unix +account that can be used with MBSE BBS. The solution for these problems is +mbuseradd, this little program runs setuid root and setgid +root. If it fails to do that it aborts. mbuseradd is called +by mbnewusr and checks if it's called like that. +If it is successfull the user will +have an entry in /etc/passwd, the comment is his Fidonet name, and his shell +is $MBSE_ROOT/bin/mbsebbs. +

    +If all this is successfull until now, the homedirectory for this user is +created and the right ownership and permissions are set. In his homedirectory +the empty file .hushlogin is placed to prevent check for +new mail when he logs into your system. This is the Unix mailcheck that is +skipped and has nothing todo with the check for new mail in the bbs. All +other directories that are needed for the bbs are created by mbsebbs. +

     

    + +

    Environment.

    +

    +In order to run mbuseradd you must set the global variable +$MBSE_ROOT. This variable must point to the root directory +of the bbs structure. The main configuration file config.data +must be present in the ~/etc directory. mbuseradd must be +installed setuid root and setgid root, ls -la looks like this:
    +

    +-rws--s--x   1 root     root         6644 Jun 26 21:23 /opt/mbse/bin/mbuseradd*
    +
    +

     

    + +

    Commands.

    +

    +Not mentioned here because mbuseradd is only called by mbnewusr, +running manually is not supported. + +

    + +IndexBack to index  +MainBack to Main index +

    + + + diff --git a/html/routing.html b/html/routing.html new file mode 100644 index 00000000..3fb2cac6 --- /dev/null +++ b/html/routing.html @@ -0,0 +1,211 @@ + + + + + + + + + + + +Netmail routing behaviour. + + + +
    +
    Last update 22-Oct-2001
    +

    MBSE BBS Netmail routing behaviour

    + +

    Introduction

    +

    +The mbfido program that is responsible for unpacking, +importing, exporting and routing of netmail has a build in default routing +plan. In general this is quite simple, if we know the destination node or +his uplink, (that node or uplink is in our setup), then we will route via +that node in our setup. If the node or his uplink is not in our setup, then +the nodelist is used and normal fidonet routing is used. This means, if you +are a node, everything goes to your hub, if you are a hub, then mail for +your downlinks will go direct to the downlinks because they are in your setup, +everything else goes to the host. +If you are a host, then your own downlinks will get the mail direct, +the downlinks of the hubs in your net well be routed via the hubs below you. +If it is for a node in your region but outside your net, mail will be routed via +the other hosts in your region. Mail to outside your region will go to the +region coordinators system. +

     

    + +

    Tracking and bouncing

    +

    +At this moment there is no bouncing of undeliverable mail. I will built this +in, but it will only work inside your own net. I will never include code for +bouncing mail outside your net, because nodelists are always not uptodate. +

     

    + +

    Special routing

    +

    +What if you need special routing. The solution is simple, add the routing +nodes to your setup and fill in the "route via" field. If you don't have a +session password with that node, leave the password fields blank. This node +will never know that he is in your setup as long as you have the notify +settings for that node switched off. To figure +out such solutions yourself, I have included the flow diagrams for the tracking +module. +

     

    + +

    Main tracking routine:

    +
    +
    +	+=============================+
    +	|     Trackmail to dest.      |
    +	+--------------+--------------+
    +		       |
    +	++-------------+-------------++
    +	||   rc = GetRoute to dest   || (See next diagram).
    +	++-------------+-------------++
    +		       |
    +	+--------------+--------------+  yes
    +	|       rc = R_NOROUTE        +-----------------+
    +	+--------------+--------------+		+-------+--------+
    +		       | no			| res: R_NOROUTE |
    +		       |			+================+
    +	+--------------+--------------+  yes
    +	|       rc = R_UNLISTED       +-----------------+
    +	+--------------+--------------+		+-------+--------+
    +		       |			| res: R_UNLISTED|
    +		       |			+----------------+
    +	+--------------+--------------+  yes
    +	|        rc = R_LOCAL         +-----------------+
    +	+--------------+--------------+		+-------+--------+
    +		       | no			| result: R_LOCAL|
    +		       |			+================+
    +	+--------------+--------------+  no
    +	|   routing node in setup ?   +-----------------+
    +	+--------------+--------------+		+-------+--------+
    +		       | yes			|   result:  rc  |
    +		       |			+================+
    +	+--------------+--------------+  no
    +	|   "Route via" filled in ?   +-----------------+
    +	+--------------+--------------+		+-------+--------+
    +		       | yes			|  res: R_ROUTE  |
    +		       |			+================+
    +	+--------------+--------------+
    +	|   Change route to address   |
    +	|       result = R_ROUTE      |
    +	+=============================+
    +
    +
    +

    Sub function GetRoute:

    +
    +
    +	+=============================+
    +	|          GetRoute           |
    +	+--------------+--------------+
    +		       |   
    +	+--------------+--------------+
    +	|      Add domain name	      |
    +	+--------------+--------------+
    +		       |
    +	+--------------+--------------+ yes
    +	|  Is dest our own address ?  +------------------+
    +	+--------------+--------------+		+--------+-------+
    +		       | no			|   rc = R_LOCAL |
    +		       |			+================+
    +	+--------------+--------------+ yes
    +	| Is dest our point address ? +------------------+
    +	+--------------+--------------+		+--------+-------+
    +		       | no			|  rc = R_DIRECT |
    +		       |			+================+
    +	+--------------+--------------+ yes (route to boss)
    +	|    Are we a point system    +------------------+
    +	+--------------+--------------+		+--------+-------+
    +		       | no			| dest is my Boss|
    +		       |                        |  res: R_DIRECT |
    +		       |			+----------------+
    +	+--------------+--------------+ yes
    +	| Dest. addr. in nodes setup? +------------------+
    +	+--------------+--------------+		+--------+-------+
    +		       | no			|  rc = R_DIRECT |
    +		       |			+================+
    +	+--------------+--------------+ yes
    +	| Boss of point dest in setup +------------------+
    +	+--------------+--------------+		+--------+-------+
    +		       | no			|  rc = R_DIRECT |
    +		       |			|   dest = Boss  |
    +		       |			+================+
    +	+--------------+--------------+ 
    +	| Is node listed and do we    | yes
    +        | know his uplink in setup ?  +------------------+
    +	+--------------+--------------+		+--------+-------+
    +		       | no			| dest is uplink |
    +		       |			|  rc = R_DIRECT |
    +		       |			+================+
    +	+--------------+--------------+ yes
    +	|   Are we host in network ?  +------------------+
    +	+--------------+--------------+		+--------+-------+
    +		       | no			| Set host addr. |
    +		       |			+--------+-------+
    +		       |				 +----------+
    +	+--------------+--------------+ yes			    |
    +	|    Are we hub in domain ?   +------------------+	    |
    +	+--------------+--------------+		+--------+-------+  |
    +		       | no			|  Set hub addr. |  v
    +		       |			+--------+-------+  |
    +		       |				 |	    |
    +		       +---------------<-----------------+-----<----+
    +		       |
    +	+--------------+--------------+
    +	|    Set our region number    |
    +	+--------------+--------------+
    +		       |
    +		       |
    +	+--------------+--------------+ no
    +	|       Host address set ?    +-----------------------------+
    +	+--------------+--------------+				    |
    +		       | yes					    |
    +		       |					    |
    +	+--------------+--------------+ 
    +        |  Dest region <> our region  | yes			    |
    +	|  or Dest zone <> our zone   +------------------+	    |
    +	+--------------+--------------+		+--------+-------+  |
    +		       | no			|   Dest to RC   |  |
    +		       |			|  rc = R_ROUTE  |  |
    +		       |			+================+  |
    +	+--------------+--------------+ yes			    |
    +	|     Dest net <> our net     +------------------+	    |
    +	+--------------+--------------+		+--------+-------+  |
    +		       | no			| to host destnet|  |
    +		       |			|  rc = R_ROUTE  |  |
    +		       |			+================+  |
    +	+--------------+--------------+ yes			    |
    +	|       Has node a hub        +------------------+	    |
    +	+--------------+--------------+		+--------+-------+  |
    +		       | yes			| to node's hub  |  |
    +		+------+--------+		|  rc = R_ROUTE  |  |
    +		| dest is direct|		+================+  |
    +		|  rc = R_ROUTE |				    |
    +		+===============+				    |
    +								    |
    +		       +------------------------<-------------------+
    +	+--------------+--------------+ no
    +	|       Hub address set ?     +-----------------+
    +	+--------------+--------------+		+-------+--------+
    +		       | yes			|  via our hub   |
    +		       |			|  rc = R_ROUTE  |
    +		       |			+================+
    +	+--------------+--------------+ yes
    +	|  Dest node of our hub addr  +-----------------+
    +	+--------------+--------------+		+-------+--------+
    +		       | no			|  rc = R_DIRECT |
    +		       |			+================+
    +		+------+-------+
    +		| dest is host |
    +		| rc = R_ROUTE |
    +		+==============+
    +
    +
    + +BackGo Back +
    + + diff --git a/html/setup/archiver.html b/html/setup/archiver.html new file mode 100644 index 00000000..ab0316c2 --- /dev/null +++ b/html/setup/archiver.html @@ -0,0 +1,57 @@ + + + + + + + + + + + +MBSE BBS Setup - Archiver programs. + + + +
    +
    Last update 09-Nov-2003
    +

    MBSE BBS Setup - archiver programs

    + +To process mail, files and test new uploads you need archivers to process those +files. For each (un)archiver you must setup the full path and filename and +commandline switches. Archivers and unarchivers may be different programs such +as zip and unzip.

    +There is a little +difference in processing mail and files, mail will always work on the same +directory, while for ticfile processing the archives can contain subdirectories. +So it is obvious that for rearchiving a file you need the recursive +switches to keep the directory structure within an archive as it was.

    +There is also a special command to replace a banner in an archive. This is when +you receive files with the banner of your uplink in it and you want to replace +it with the add of your own bbs and you don't want to mess with the files in +the archive.

    +The last option is to extract the file FILE_ID.DIZ from the +archive, this can be used for file description when the file is imported in +your bbs. To make life a little more easy, during the first bbs setup the most +common archivers already configured. You only need to make sure that they are +really present on your system. +

    +When you configured the sources and build mbse, the configure script searched +for excisting archivers. When mbsetup was run the first time, when mbtask was +started, the archivers found on your system are already configured with the +right paths and enabled. +If you want the refresh the archivers configuration again after you added new +archiver programs, then remove /opt/mbse/etc/archiver.data. Compile the whole +bbs again, start with make clean and ./configure. +After you reinstalled the binaries, run mbsetup and the new archivers are +automagic added to the setup. Of course, you can also add new archivers +manually. Archivers that were not originally found but are known, are present in +the setup but are disabled. +

    + +BackBack to index  +HomeBack to main index +

    + + + diff --git a/html/setup/bbs.html b/html/setup/bbs.html new file mode 100644 index 00000000..6fb211a8 --- /dev/null +++ b/html/setup/bbs.html @@ -0,0 +1,40 @@ + + + + + + + + + + + +MBSE BBS Setup - Edit BBS Setup. + + + +
    +
    Last update 02-Mar-2003
    +

    MBSE BBS Setup - Edit BBS Setup.

    + +

    Edit BBS Setup.

    +

    +The BBS setup is split in the following sections: +

    + +

      +
    1. Security limits +
    2. Language setup +
    3. BBS menus +
    4. File areas +
    5. Transfer protocols +
    6. BBS List data +
    7. Oneliners +
    + +BackBack to index  +HomeBack to main index +
    + + + diff --git a/html/setup/chat.html b/html/setup/chat.html new file mode 100644 index 00000000..41033a81 --- /dev/null +++ b/html/setup/chat.html @@ -0,0 +1,46 @@ + + + + + + + + + + + +MBSE BBS Setup - Internet BBS Chat. + + + +
    +
    Last update 16-Nov-2005
    +

    MBSE BBS Setup - Internet BBS Chat

    + +

    Introduction.

    +

    +MBSE BBS has the chat system that can be linked via internet, Internet BBS +Chat (IBC) using the protocol described in FSP-9999.999. With this setup you can +define other BBS systems to link with. To use IBC with other systems you need to +make sure that UDP port 60179 is open on your firewall. +

     

    + +

    Edit systems

    +

    +

    +Comment   The remote BBS name or a comment.
    +Server    The Full Qualified Domain Name of the remote.
    +Dyn. DNS  Yes if the remote uses a dyndns name.
    +Myname    My FQDN (default copied from 1.2.10).
    +Password  The password for the link.
    +Active    Is the link active.
    +Deleted   If this records must be deleted.
    +Compress  Use zlib compression on the link (Not yet).
    +
    +

    + +BackBack to index  +HomeBack to main index +

    + + diff --git a/html/setup/domains.html b/html/setup/domains.html new file mode 100644 index 00000000..83801de7 --- /dev/null +++ b/html/setup/domains.html @@ -0,0 +1,47 @@ + + + + + + + + + + + +MBSE BBS Setup - Edit Domains. + + + +
    +
    Last update 25-Oct-2001
    +

    MBSE BBS Setup - Edit Domains.

    + +

    Introduction.

    +

    +The domains table is used to translate Fidonet domains to internet domains +and back for the Fidonet <-> Internet gateway. When you add entries to +this table make sure that the entry .fidonet and +.ftn is always the last entry. This is the default entry. +New added domains can be moved in place with the Move +command. +

     

    + +

    Edit Domains.

    +

    +

    +Fidonet   The Fidonet domain to match.
    +Internet  The internet domain to match.
    +Active    If this domain is active.
    +Deleted   If this domain must be deleted.
    +
    +

    +Next is an example table. +

    +Domains example +

    +BackBack to index  +HomeBack to main index +

    + + diff --git a/html/setup/emareas.html b/html/setup/emareas.html new file mode 100644 index 00000000..95c1be3a --- /dev/null +++ b/html/setup/emareas.html @@ -0,0 +1,134 @@ + + + + + + + + + + + +MBSE BBS Setup - Mail Setup - Mail Areas. + + + +
    +
    Last update 14-Oct-2007
    +

    MBSE BBS Setup - Mail Setup -> Mail Areas.

    + +

    Introduction.

    +

    +Mail areas have fixed area numbers, just like file areas. But if you want you +can move areas. +Some offline readers don't like changing the area numbers. All areas can +be of the following types: local, netmail, echomail and news. If you gate +news and echomail in the same area, then select echomail +if this area is a Fidonet area, select news if this area is a Usenet news area. +

    +There is a global setup tool, if you are in the main message area setup screen then +you can choose the Global command. This will allow you to do bulk changes on areas +selected by the mail groups. Options are delete connection, add new connection, +replace connection, change connection status, change days old for purge, change +maximum messages for purge, change user security, change aka to use, change origin line, +change netmail reply board and delete message area. +

     

    + +

    Message Area Setup.

    +

    +

    +Area Name   The description of the area.
    +Area Tag    The echomail area tag.
    +Group       The name of the echomail group.
    +Newsgroup   The newsgroup name if you are gating this area.
    +JAM base    The path and name of the JAM message base without extension.
    +Origin      The origin line to add to echomail messages.
    +Fido Aka    The Fidonet aka for this area.
    +QWK name    The name of the area for OffLine Readers.
    +Distrib.    Leave this blank for now!
    +Area Type   Local, Netmail, Echomail or News.
    +Msg Kinds   Private/Public, Private, Public, Read Only.
    +Charset     Default characterset for the area
    +Active      If this area is active.
    +Days Old    The maximum age of the messages before purging.
    +Max. Msgs   The maximum messages in this area.
    +Articles    The maximum news headers to fetch.
    +Netreply    Netmail reply area if this is echomail.
    +Read Sec.   The security level to read messages.
    +Write Sec.  The security level to write messages.
    +Sysop Sec.  The security level to do sysop actions.
    +User Del.   Users may delete their own messages.
    +Aliases     Allow the use of an Alias.
    +Quotes      Add a random quote under new messages (Oneliner database).
    +Mandatory   If this area is mandatory for downlinks.
    +UnSecure    Don't check link address during toss (Dangerous!).
    +OLR Default Switch area default on for OLR users.
    +OLR Forced  Area is always on for OLR users.
    +Connections This will take you to the screen to edit up and downlinks.
    +Security    The security flags for downlinks to access this area.
    +
    +

    + +Mail areas setup +

     

    + +

    Edit connection

    +

    +

    +Aka         The network address.
    +Send to     Export mail to this node.
    +Recv from   Import mail form this node.
    +Pause       The node is temporary disconnected.
    +Excluded    The node is disconnected by the sysop.
    +Delete      Delete this connection.
    +
    +

    +A note about the excluded switch. This can be used to disconnect a node +from the area by moderator request. AreaMgr requests from that node +for this area are not processed anymore, he cannot disconnect this area +and reconnect. +If you want to block access to the area in a certain group for a node who has +access to the group you should use the Security flags and also set the correct +security flags for the node. +

     

    + + +

    Global Commands.

    +

    +From menu 9.2 you can enter the global commands menu. In this menu you can: +

      +
    1. Delete connection +
    2. Add new connection +
    3. Replace connection +
    4. Change connection status +
    5. Change days old +
    6. Change max. messages +
    7. Change max. articles +
    8. Change bbs security +
    9. Change link security +
    10. Change aka to use +
    11. Change origin line +
    12. Change netmail reply +
    13. Delete message area +
    +After you have selected the action you want and added the items to do, you will see +a screen were you can select message area groups. You can then tag one or more +groups and press enter when you are done. Then you have one chance to perform the +actions or to bail out. All areas matching in that group are affected by your +changes. If you are not happy with the result, don't save the database and no +harm is done. The file mbsetup.log shows all affected areas. +

     

    + + +

    Automatic area creation.

    +

    +If you want to use the automatic area creation you have to define this in the +message area groups. This has been changed since MBSE BBS version 0.33.19. +

    + +BackBack to Mail Setup  +BackBack to index  +HomeBack to main index +

    + + diff --git a/html/setup/emgroup.html b/html/setup/emgroup.html new file mode 100644 index 00000000..5e73d16e --- /dev/null +++ b/html/setup/emgroup.html @@ -0,0 +1,70 @@ + + + + + + + + + + + +MBSE BBS Setup - Mail Setup - Message Groups. + + + +
    +
    Last update 27-Mar-2006
    +

    MBSE BBS Setup - Mail Setup - Message Groups.

    + +

    Introduction.

    +

    +Message Groups are to logically divide your echomail areas in groups for +different mail networks. It makes sense to select the groups by uplink, and +areas file that is available for each network. When you have defined a Areas +file and a message is received while you have no area for it, the area will be +created with the defaults that are set in the message area group. This will only +work if you receive a message from the uplink defined in this group, not from +any downlinks. +A note about the Start at area you can define, this may be higher then +your number of areas currently is. As soon as a area is created in this group +the areas database will be expanded so that it fits. Select these values +carefully, make sure you have room for all possible areas in that group and +skip a number of extra areas for future expansion. +

     

    + +

    Message Group Setup.

    +

    +

    +Name        The name of the group.
    +Comment     The description of the group.
    +Base path   The base for the JAM path without the area name.
    +Read sec    The read security for bbs users for auto created areas.
    +Write sec   The write security for bbs users for auto created areas.
    +Sysop sec   The sysop security for bbs users for auto created areas.
    +Link sec    The link security to copy to new created areas.
    +Start at    Start area number (lowest) to create new areas.
    +Net reply   Netmail reply board for auto created areas.
    +Users del   User may delete for auto created areas.
    +Aliases     Are aliases allowed in auto created areas.
    +Quotes      Append a quote when user writes in auto created areas.
    +Active      If this group is active.
    +Deleted     If this group must be deleted.
    +Auto change Change areas when running mbfido areas.
    +User change Create/delete areas when users connect/disconnect.
    +Use Aka     The Fidonet aka to use.
    +Uplink      The Fidonet aka of your uplink.
    +Areas       Areas file in the path defined in 1.4.6 screen 2.
    +Charset     Default character set to use.
    +GoldED grp  Groupnumber for GoldED include file.
    +
    +

    +Mail groups setup +

    + +BackBack to Mail Setup  +BackBack to index  +HomeBack to main index +

    + + diff --git a/html/setup/fdb.html b/html/setup/fdb.html new file mode 100644 index 00000000..93a45b98 --- /dev/null +++ b/html/setup/fdb.html @@ -0,0 +1,54 @@ + + + + + + + + + + + +MBSE BBS Setup - Files Database. + + + +
    +
    Last update 08-Mar-2004
    +

    MBSE BBS Setup - Files Database.

    + +

    Introduction.

    +

    +This option allows you to manually edit the files in the files database. +The option to edit the file description is not present at this moment, but +will be when I have the time. The basic file entries can't be changed. +

     

    + +

    Edit File.

    +

    +

    +FileName  The 8.3 filename of the file.
    +Long fn   The long filename of the file.
    +FileSize  The size of the file in bytes.
    +FileDate  The real date of the file.
    +Last DL.  The date of the last download of the file.
    +Upl.Date  The upload date.
    +TIC Area  The name of the tic area the file was received in.
    +Magic     The magic name to download/freq this file.
    +Uploader  The name of the uploader.
    +Times DL  The number of times downloaded from the BBS.
    +Password  The password to access this file.
    +Deleted   If this file should be deleted.
    +No Kill   Don't delete this file with mbfile
    +Announced If this file is ever announced as new.
    +
    +

    + +File database setup +

    + +BackBack to index  +HomeBack to main index +

    + + diff --git a/html/setup/fegroup.html b/html/setup/fegroup.html new file mode 100644 index 00000000..62e3f04c --- /dev/null +++ b/html/setup/fegroup.html @@ -0,0 +1,81 @@ + + + + + + + + + + + +MBSE BBS Setup - File Echo's Setup - File Groups. + + + +
    +
    Last update 08-Mar-2003
    +

    MBSE BBS Setup - File Echo's Setup - File Groups.

    + +

    Introduction.

    +

    +File echo groups are to logically divide your file echo's for different +file distribution networks. +This screen also has a lot of fields that are needed for the auto area create. +When a new area is created a bbs download area is made and a new tic area record +is made. +It makes sense to select the groups by uplink and +area file that is available for that file distribution network. By doing that +downlinks can connect areas that are not yet connected at your bbs but are +available from your uplink. If you are connected to the filegate then there is +one area file for all distribution groups. You must then create a file group for +each distribution group, ie. Fidonet, SDS etc. The name of that group must +exactly match the comment field in the group in this setup. +

     

    + +

    File Group Setup.

    +

    +

    +Name      File Echo Group name.
    +Comment   The description of that group.
    +Base path The base path for new created areas.
    +Active    If this group is active.
    +Use Aka   The Fidonet aka to use for this group
    +Uplink    The Fidonet aka of the uplink.
    +Areas     The name of the areas file (in ~/var/arealists).
    +Filegate  Is area file in filegate.zxx format or not.
    +Banner    Banner file to add to archives.
    +Convert   Archiver to convert archive to.
    +BBS group BBS group name.
    +New group New files announce group.
    +Active    If this group is active.
    +Deleted   If this group must be deleted.
    +Start at  New created areas must start at area nr.
    +Auto chng Auto change when running mbfido areas
    +User chng Auto create areas on downlinks requests.
    +Replace   Set replace option in new areas.
    +Dupecheck Set Dupecheck option in new areas.
    +Secure    Set secure option in new areas.
    +Touch     Set Touch filedate option in new areas.
    +Virscan   Set virus scanner option in new areas.
    +Announce  Set announce files option in new areas.
    +Upd magic Set update magicname option in new areas.
    +File ID   Set File ID option in new areas.
    +Conv. all Set convert all option in new areas.
    +Send orig Set send original option in new areas.
    +DL sec    Set download security in new areas.
    +UP sec    Set upload security in new areas.
    +LT sec    Set list security in new areas.
    +Upl. area Set upload area number in new areas.
    +Link sec  Set link security to copy to new areas.
    +
    +

    +File echo groups setup +

    + +BackBack to File Echo's Setup  +BackBack to index  +HomeBack to main index +

    + + diff --git a/html/setup/fidonet.html b/html/setup/fidonet.html new file mode 100644 index 00000000..c73af6e2 --- /dev/null +++ b/html/setup/fidonet.html @@ -0,0 +1,41 @@ + + + + + + + + + + + +MBSE BBS Setup - Fidonet Networks. + + + +
    +
    Last update 29-Jan-2001
    +

    MBSE BBS Setup - fidonet Networks

    + +Each fidonet network can have maximum 6 zones. The main zone (where you are) +must be the first zone, the others will follow. You can add 6 additional +nodelists to merge with the main nodelist. These additional nodelists are +normally more recent that the main nodelist, so entries in the additional +nodelists will replace entries from the main nodelist when you compile the +nodelists. In the shown example you can see that I have a regional nodelist +and a pointlist added for my region. For each additional list you must +specify the RC address because that information is normally not present in these +nodelists. Watch out! Nodelist names are case sensitive. If you receive a +nodelist and automatic put them in place with the mbfido +program, and the resulting file is uppercase, you must use uppercase names +here also. You don't need to give the extension of the nodelist name, the +mbindex will figure that out. +

    +Fidonet networks setup +

    + +BackBack to index  +HomeBack to main index +

    + + diff --git a/html/setup/fileecho.html b/html/setup/fileecho.html new file mode 100644 index 00000000..47ff72dd --- /dev/null +++ b/html/setup/fileecho.html @@ -0,0 +1,96 @@ + + + + + + + + + + + +MBSE BBS Setup - File Echo's Setup - TIC Areas. + + + +
    +
    Last update 12-Aug-2005
    +

    MBSE BBS Setup - File Echo's Setup - TIC Areas.

    + +

    Introduction.

    +

    +In this setup you can define the File Echo's or TIC areas. Files received or +send from this areas are bound together with a *.tic file with information +about the file and where to store that file. Each file echo must belong to a +group, in this grouprecord is the information about costsharing and some +other details. When a file is received at your system you can do several +things with that file before it is stored in your download areas such as; +scanning the file for virusses, extracting the FILE_ID.DIZ file to use as +description, allow update of magic alias, convert to another compression +format, replace the file archive comment with an add of your own bbs and limit +the number of files (nodelists). +

     

    + +

    TIC Area Setup.

    +

    +

    +Comment    A description for this area.
    +Area tag   The tag for this area.
    +Security   The security access flags for downlinks.
    +BBS area   The BBS download area number, 0 means passthru.
    +Message    Not in use yet.
    +Group      The group where this area belongs to.
    +Keep #     The number of files to keep, the name must match.
    +Fido aka   The Fidonet aka to use for this area.
    +Convert    The archiver to convert to, leave blank for none.
    +Banner     The bannerfile (in ~/etc) to replace in the archive.
    +Replace    Honor the "Replace" command in the .tic file.
    +Dupecheck  Check for duplicates in this area.
    +Secure     Check if the sending system is connected.
    +Touch      Touch rearchived files to the original date.
    +Virus sc.  Try to scan for virusses.
    +Announce   Files may be announced in this area.
    +Upd magic  Allow update magic request name.
    +File_id    Try to use the FILE_ID.DIZ file for description.
    +Conv.all   Convert archive even if it is already right.
    +Send org.  Send original received file instead of the file from the BBS.
    +Mandatory  Downlinks can't disconnect from this area.
    +Notified   Not in use yet.
    +Upl discon Not in use yet.
    +Deleted    If this area must be deleted.
    +Active     If this area is active.
    +New SR     Give new node links the status SR instead of S.
    +Systems    To the screen with connected systems.
    +
    +

    +TIC area setup +

    + + +

    Global Commands.

    +

    +From menu 10.2 you can enter the global commands menu. In this menu you can: +

      +
    1. Delete connection +
    2. Add new connection +
    3. Replace connection +
    4. Change connection status +
    5. Change aka to use +
    6. Change security flags +
    7. Delete TIC area +
    +After you have selected the action you want and added the items to do, you will see +a screen were you can select TIC file area groups. You can then tag one or more +groups and press enter when you are done. Then you have one chance to perform the +actions or to bail out. All areas matching in that group are affected by your +changes. If you are not happy with the result, don't save the database and no +harm is done. The file mbsetup.log shows all affected areas. +

    + + +BackBack to File Echo's Setup  +BackBack to index  +HomeBack to main index +

    + + diff --git a/html/setup/filefind.html b/html/setup/filefind.html new file mode 100644 index 00000000..82f7bf39 --- /dev/null +++ b/html/setup/filefind.html @@ -0,0 +1,57 @@ + + + + + + + + + + + +MBSE BBS Setup - Filefind Areas. + + + +
    +
    Last update 05-Mar-2007
    +

    MBSE BBS Setup - Filefind Areas.

    + +

    Introduction.

    +

    +The filefind idea on Fidonet came from the program Allfix written by Harald +Harms. The idea is +that a user writes a mail in a filefind area addressed to "Allfix" with in the +subject line the items to search for. On all BBS'es with a filefind utility +those programs try to find the requested files and then produce a reply of +which files they have found. That reply can be in the same area, in a special +reply echo or can be sent by netmail. Usually the user gets a lot of replies +from which he can see if someone has the file(s) available he was searching +for. +

     

    + +

    Filefind Setup.

    +

    +

    +Comment     The comment for this area.
    +Origin      The origin line to use for the reply.
    +Aka to use  The Fidonet aka to use in this area.
    +Scan area   The JAM area in which to scan for requests.
    +Reply area  The JAM area to put the replies in, leave blank if in the same area.
    +Language    The language to use for the reply.
    +Template    The name of the macro template file.
    +Active      If this area is active.
    +Deleted     If this area must be deleted.
    +Net. reply  If the reply will be sent by netmail.
    +CHRS kludge The CHRS kludge and encoding to use.
    +Keywrd len  The minimum keyword length allowed in search.
    +
    +

    +Filefind setup +

    + +BackBack to index  +HomeBack to main index +

    + + diff --git a/html/setup/files.html b/html/setup/files.html new file mode 100644 index 00000000..89d8f3e8 --- /dev/null +++ b/html/setup/files.html @@ -0,0 +1,78 @@ + + + + + + + + + + + +MBSE BBS Setup - BBS Setup - File Areas. + + + +
    +
    Last update 11-Aug-2005
    +

    MBSE BBS Setup - BBS Setup - File Areas.

    + +

    File Areas introduction.

    +

    +This is the setup for the file areas in which users can up and download files. +This database has fixed area numbers, the database can't be packed. +Extending the database is allways possible. One important note, +before you can set this up, you need to define the +newfiles groups. +

    +If you change the path in an existing area, all files in that area are automatic +moved to the new location. +

     

    + +

    File Areas Setup.

    +

    +

    +Area Name  The area name.
    +Path       The full path to the file area.
    +Down Sec.  The download security level.
    +Upl. Sec.  The upload security level.
    +List Sec.  The security level to list the files in this area.
    +Available  If this area is available. If you make an available
    +           area unavailable the area is checked if there are 
    +	   downloadable files in that area. If so, you can't remove 
    +	   the area. If there are none you will be asked if you are 
    +	   sure. After the area is made unavailable, the record is 
    +	   filled with reasonable default values.
    +Check New  Check this area for new files if a user logs in.
    +Dupecheck  Check this area for duplicates if a user uploads a file.
    +Free area  If all files in this area are free.
    +Direct DL  Allow direct download from this area.
    +Pwd upl.   Allow users to password protect their uploads.
    +Filefind   Search in this area for filefind requests.
    +Add alpha  Add .tic files alphabetic sorted or at the bottom of the list.
    +File req.  Allow File Request from this area.
    +BBS group  Not in use yet.
    +New group  New files announce group. See Newfiles groups for more info.
    +Min. age   Minimum user age to access this area.
    +Password   The password for this area. If blank, no password is needed.
    +DL days    How long must a file not been downloaded to (re)move it.
    +FD days    How old must a file be to be (re)moved.
    +Move area  The area to move the file to, if zero it is deleted.
    +Archiver   The archiver to use to repack the files with.
    +Upload     Alternate upload area. If a user uploads a file in this
    +           area, it will be placed in the alternate area. If the
    +           value is zero, the file will be placed in the current
    +           file area. On CD-rom areas you must not leave this zero
    +           unless you set the upload security level so high that
    +           nobody can upload in this area.
    +
    +

    +File areas setup +

    + +BackBack to BBS index  +BackBack to index  +HomeBack to main index +

    + + diff --git a/html/setup/global.html b/html/setup/global.html new file mode 100644 index 00000000..96ffac6a --- /dev/null +++ b/html/setup/global.html @@ -0,0 +1,439 @@ + + + + + + + + + + + +MBSE BBS Setup - Global Setup. + + + +
    +
    Last update 01-Mar-2007
    +

    MBSE BBS Setup - Global Setup

    + +In this setup you can edit all global settings for MBSE BBS. All sections will +be discussed below. +

    + +

    1.1. Fidonet Aka's.

    +

    +Here you can enter 40 fidonet addresses. These are 5d addresses. Make sure you +group the different zone's together, strange things will happen if you don't +group them. +

    + +

    1.2. Edit Registration Info.

    +

    +

    +BBS Name   The name of your BBS
    +Maildomain Your internet mail domain name (or system host.domain.com 
    +             if you don't have a maildomain).
    +Sysop uid  The Unix name of your Sysop account
    +Sysop Fido The Fidonet name of your Sysop account
    +Location   The Location of your BBS
    +OLR id     The packet name for Offline mail downloads.
    +Comment    A comment line for your BBS
    +Origin     The default origin line for echomail
    +Newuser    The default username "bbs" for new users.
    +My FQDN    My real internet Full Qualified Domain Name.
    +
    +A note abou the last item, My FQDN. This MUST be the name that is +returned with nslookup 1.2.3.4 (use your internet IP adress there) +if you have a fixed IP address. Systems that are on a dynamic IP address and use +some sort of dyndns service may put that dyndns FQDN in there. Using this will +cause the other system to do twice as much dns resolve actions, so use this only +when needed. Another note, what you put in here has nothing to do with mail or +mail domains, that needs to be in the second option of this screen. The My FQDN +field is used by the Internet BBS Chatserver (IBC) to allow bbs systems to build +a chat network. +

    + +

    1.3. Edit Global Filenames.

    +

    +

    +System logfile    The name of the main logfile
    +Error logfile     The name of the errors logfile
    +Debug logfile     The name of the debug logfile
    +Mgr logfile       The name of the area-/filemgr logfile
    +Default menu      The name of the default main menu
    +Chat logfile      The name of the logfile for chatting
    +Welcome logo      The name of the BBS logo ANSI file
    +
    +

    + +

    1.4. Edit Global Paths

    +

    +

    +Home dirs         The path to the users home directories
    +FTP base          The FTP base path, ie. /opt/mbse/ftp/pub
    +Arealists         The path where area lists and filebone lists are stored
    +Ext. edit         The full path and filename to the external editor
    +Rules dir         The path to the directory to store area rules
    +Magic's           Where the magic filerequests are kept
    +DOS path          The DOS drive and path
    +Unix path         The Translated DOS path in real
    +LeaveCase         Leave outbound .flo filenames as is, No forces to uppercase
    +
    +Nodelists         The path to the nodelist directory
    +Inbound           The unprotected fidonet inbound
    +Prot inb.         The (password) protected fidonet inbound
    +Outbound          The outbound for the main aka
    +Out queue         The outbound queue for temporary files
    +*.msgs            A netmail directory from where *.msg mails are tossed
    +                  These are *.msg files can be created by several doors. (Not in use yet)
    +Bad TIC's         Where bad TIC files are saved
    +TIC queue         Where TIC files for downlinks are kept
    +TMail DOS         The T-Mail 8.3 (short) base path (empty = disable)
    +TMail Win         The T-Mail long filename base path (empty = disable)
    +
    +If you fill in the DOS path then the DOS path and Unix path are translated +to DOS paths in the flo files for outbound mail sessions. You only need this if +another mailer uses the outbound that doesn't understand Unix paths. +The DOS path is a fake, but it must match the other mailer. +Note that the TIC queue must be somewere in the Unix path, otherwise it is +impossible to create a DOS path from the path to the TIC files in that +directory. To set this up correctly is also important if you use other mailers +as well, for example binkd, or even a DOS binkly-style mailer running from +a network. All those mailer must "see" the same file attaches in the .flo +files. +

    + +

    1.5. Edit BBS Configuration

    +

    +

    +Private system    Set to true when only pre-registered users are allowed
    +Exclude Sysop     True is Sysop will be invisible
    +Show connect      Show connection info at logon
    +Ask protocols     Ask protocol before each up/download
    +Sysop level       The Sysop security level
    +Password Length   The minimum password length, should be 6.
    +Password Char.    The password hiding character
    +Idle timeout      The idle timeout in minutes
    +Login Enters      Maximum times for only enter <Enter>
    +Login Attempts    Maximum login attempts
    +Homedir Quota     Maximum size in MBytes for each user
    +Location length   The minimum length of the location (3 in Holland!)
    +Show new msgarea  Show new available message areas at logon (for OLR users)
    +OLR Max. msgs.    Maximum messages to download, 0 is no limit.
    +OLR Newfile days  The maximum age for newfiles in the OLR packet
    +OLR Max Filereq   Maximum filerequests allowed for OLR users
    +BBS Log Level     What will be logged or not the BBS program
    +Utils Log Level   What will be logged or not for utilities
    +Utils slowly      Should utilities release timeslices
    +CrashMail level   Minimum level to allow sending netmail crash
    +FileAttach level  Minimum level to allow attach files to netmail
    +Min diskspace MB  At which low diskspace level utilities should stop working.
    +Simult. logins    Maximum simultaneous logins allowed, 0 is unlimited, 1 is adviced.
    +Child priority    Subproces nice priority, 0=high, 15=low CPU load.
    +Filesystem sync   Call sync before and after execute.
    +Default language  Default language (English).
    +
    +The minimum diskspace setting is to prevent that files get corrupted if your filesystem +is full. All drives are checked except CD-roms and floppies and the /boot directory if that +one is on a separate filesystem. Ext2, ext3, reiserfs, msdos and vfat partitions +are checked. The lowest free diskspace found counts. Default is 10 MB. +

    +The Child priority sets the nice value for example zip/unzip, virus scanners +etc. Modern fast hardware will do fine with a low setting, older (pre PII) +hardware may need 15 to prevent a too heavy CPU load. +

    +The filesystem sync setting is to call sync before and after the execute call, +such as when unzip is called. Almost all GNU/Linux systems need this because GNU/Linux +uses asynchronous directory changes. Since Linux 2.5.19 it should be possible to +mount filesystems synchronous. If this setting is No on asynchronous filesystems +mail and files can get corrupted. XxxxBSD systems use synchronous directory +updates and don't need this switch. If you don't know what all this is about, +leave this to the default setting. +

    +Choice of default language. English is the best choice because that is the only +language that is complete in the default installation. In the user setup another +language may be used, the language set here is then used as a backup. +

    + +

    1.6. User flag Descriptions.

    +

    +In this menu you can give the 32 users flags a meaningfull description. +

    + +

    1.7. New users defaults.

    +

    +

    +Access level      The access level and flags after registration
    +Cap. Username     Capitalize the username
    +Ask Sex           Ask for Male/Female
    +Ask Voicephone    Ask for voice phonenumber
    +Ask Dataphone     Ask for data phonenumber
    +Telephone scan    Scan for duplicate numbers
    +Ask Handle        Ask for handle (nickname)
    +Ask Birth date    Ask for birthdate (needed for checks)
    +Ask Location      Ask for users location
    +Ask Hot-Keys      Ask for hot-keyed menus (default is yes)
    +One word names    Allow one word names
    +Ask address       Ask user for his/her home address
    +Give email        Give new users email access (default is yes)
    +Ask Screenlen     Ask new users to set their screen length
    +Do newmail check  Yes/No or Ask new user if for newmail check at logon
    +Do newfiles check Yes/No or Ask new user if for newfiles check at logon
    +
    +

    + +

    1.8. Text Colors.

    +

    +Several prompts use different colors. They can be changed with the following +menu. +

    +Colors setup +Colors setup +

    + +

    1.9. Sysop paging

    +

    +For sysop chat a protocol is used to communicate with the mbtask daemon which +has a very simple IRC like chatserver. For sysop/user chat a forced channel +with the name #sysop is used. +

    +Page length       The length of a page in seconds
    +Page times        Maximum number of times a user may page the sysop
    +Sysop area        Message from user to Sysop area number
    +Ask reason        Ask reason for chat, this will be logged
    +Log Chat          Log the chat conversation
    +Prompt Chk.       Check at menu prompts for Sysop breaking in
    +Freeze Time       Freeze users time during chat
    +

    + +

    1.10. Fileecho Processing.

    +

    +A note, when you change the number of Systems or Groups, the databases affected +will be updated automatic. +

    +Keep days         How long TIC files should be kept on hold
    +Hatch pwd         The internal hatch password. Make this weird.
    +Drv space         The minimal free space on your disk in kilobytes
    +Systems           The maximum number of connected nodes
    +Groups            The maximum number of fileecho groups
    +Max. dupes        The maximum number of entries in dupe database
    +Keep date         Keep original filedate
    +Keep netm         Keep sent netmails
    +Loc resp          Respond to local created filefind messages
    +Plus all          Allow filemgr +all command
    +Notify            Allow filemgr notify=on/off command
    +Passwd            Allow filemgr/areamgr passwd command
    +Message           Allow filemgr message=on/off command
    +Tic on/off        Allow filemgr tic=on/off command
    +Pause             Allow filemgr pause/resume commands
    +

    +When you change one of the Allow filemgr settings, you also need to edit +the file /opt/mbse/english/macro/filemgr.help to reflect the new settings. +Default all these switches are set to Yes. + +

    +

    1.11. Edit Fidonet mail and echomail processing.

    +

    +Note that the first 2 mailboards must also exist in the normal mail areas if +you want to see what is in them. Here they are defined for quick access of the +tosser. For the Max. systems and groups see 1.12. If you use MBSE BBS together +with a DOS based BBS (using DOSEMU or mars netware emulator), you can set the +behaviour of the outbound to 4d. addressing instead of 5d. This option may +dissapear in the future.
    +Another option is present, this is the pktdate option. This +is the full path and filename to an external program that can inspect and +correct the mail .pkt files. Originally I put this in to run pktname of Tobias +Ernst of 2:2476/418 to fix y2k problems in the incoming mail. At this time +most y2k fixes are build in, but in case you need it it's there. To make it +clear; the y2ktools written by Tobias are static compiled for GNU/Linux and they +should run on all GNU/Linux i386 versions. Until now, I still use pktdate because +it is necessary.
    + +

    +Badboard          The path and filename of the bad messages
    +Dupeboard         The path and filename of the duplicate messages
    +Pktdate           Full path and filename of a .pkt preprocessor
    +Max pkts.         Maximum Kb. of mail packets before a new one is created.
    +Max arcs.         Maximum size in Kilobytes of an arcmail file
    +Keep days         How many day should we keep ARCmail on hold
    +Echo dupes        Maximum number of entries in the echomail dupe database
    +Reject old        Reject echomail messages older then n days
    +Max msgs          Default maximum number of messages in each area
    +Days old          Default number of days old to keep messages
    +Max systems       Maximum number of nodes to connect to echomail
    +Max groups        Maximum number of echomail groups
    +4d address        Use 4d. addressing (not needed you only use MBSE BBS)
    +Split at          Gently split messages after n KBytes (12..60)
    +Force at          Force split of messages after n KBytes (16..63)
    +Plus all          Allow areamgr +all command 
    +Notify            Allow areamgr notify=on/off command
    +Passwd            Allow areamgr/filemgr passwd command
    +Pause             Allow areamgr pause/resume commands
    +

    +When you change one of the Allow areamgr settings, you also need to edit +the file /opt/mbse/english/macro/areamgr.help to reflect the new settings. +Default all these switches are set to Yes. +

    +A note about the splitting of messages. Some tossers can't handle +messages greater than 16 KBytes, these tossers are rare these days. Most +tossers can handle messages of 32 KBytes. To set these values on the safe +side set "Split at" to 27 and "Force at" to 31. This means that a long +newfile report will be split after 27 KBytes when a new group of files +should start in the report. If it can't find that point because a large +number of files is in the group that is just being processed, the message +split will be forced right after the file that passes the 31 KBytes limit. +I use values of 1 KBytes below maximum for overhead such as SEEN-BY and +PATH lines. Values larger then 32 KBytes is not a good idea, recent tests +in May 1999 have shown that your messages will not reach all systems +if they are larger then 32 KBytes. Splitting is used for newfiles reports +and gated news articles to Fidonet. +

    + +

    1.12. Edit Internet mail and news processing.

    +

    +Email and news is setup here. There are three possible configurations which you +can set with 1.12.11: +

      +
    • No internet. If you don't have any connection to the internet + use this setting. Email will come from the default Fidonet UUCP gate and will be send out + via the UUCP gate. Users have email addresses like + user@f2802.n280.z2.fidonet.org Note, the username is their + Unix name when sending email. +
    • No maildomain. If have internet but don't have your own + maildomain (most dialup systems) you should use this mode. + Email will be sent via your local SMTP port, then through your + own sendmail (or whatever you use) to your ISP. + As soon as you are connected to the internet + the mail will be sent to your ISP's mailer. In your sendmail you should + define the mailer of your ISP as Smarthost. Incoming email will still come + from the UUCP gate. Users have email addresses like + user@f2802.n280.z2.fidonet.org Incoming email comes from + the default Fidonet UUCP gate. + Note, the username is their Unix name. + If you have your own maildomain, don't use this option, use the next option: +
    • Own maildomain. If you are permanent connected to the internet + either with a static or dynamic IP address use this option. Use this option + also if you have an UUCP domain and have a dialup UUCP connection. Also + you can use this for dialup if you have your own maildomain without UUCP, + you will then fetch the mail from a multidrop mailbox (POP or IMAP) and + send the mail using SMTP via the SMTP mailer of your provider.
      + If you have a dynamic IP address you can still get a DNS name from for + example dynip.com + Incoming email will come directly from the internet, but if someone sends + email via the UUCP gate it is also accepted. Users have email addresses like + user@yourbbs.domain.org. Note, the username is their + Unix name and yourbbs.domain.org must be an existing internet domain. +
    +A word of wisdom from my side, configuration of the internet, ppp, sendmail etc. is not discussed +here, see the HOWTO's and other documentation that exists at +www.linuxdoc.org, it's all there. + +
    +POP3 node         The POP3 node to use, should be localhost
    +POP3 user@domain  Use user@domain to login in the POP3 server
    +SMTP node         The SMTP node to use, should be localhost
    +NNTP node         The NNTP node to use, should be localhost
    +NNTP m.r.         If the NNTP server needs the Mode Reader command
    +NNTP user         The username for the NNTP server if needed
    +NNTP pass         The password for the NNTP server if needed
    +News dupes        The number of entries for the news dupes database.
    +Email aka         The Fidonet aka to use for the fidonet.org UUCP gate
    +UUCP aka          The default Fidonet UUCP gate, 2:292/875@fidonet
    +Emailmode         The email mode, discussed above
    +News mode         Newsfeed mode, INN, rnews or UUCP.
    +Articles          The default maximum newsarticles to fetch per group.
    +Split at          Gently split newfiles reports after n KBytes (12..60)
    +Force at          Force split of newfiles reports after n KBytes (16..63)
    +Control ok        Allow news control messages to be gated
    +No regate         Don't regate already gated messages
    +
    +In rnews mode the NNTP entries are replaced by:
    +
    +Path rnews        The full path and filename to the rnews binary.
    +
    +In UUCP mode the NNTP entries are replaced by:
    +
    +UUCP path         The full path to the uucppublic directory.
    +UUCP node         The UUCP nodename of your ISP.
    +

    + + +

    +

    1.13. Allfiles and Newfiles lists.

    +

    +These are the settings that affect the generation of newfiles and allfiles reports. +

    +New days          The number of days old files are "newfiles"
    +Security          The highest security level to include files in the reports
    +Groups            The number of newfile groups the newfiles database can hold
    +

    + +

    1.14. Mailer Setup.

    +

    +Note that you can't disable FTS-0001 sessions as that is a mandatory session +protocol in Fidonet. There are 40 phonenumber translations present, this is for +countries with lots of telephone operators with all kind of prefixes for +carrier select functions. The setting of TCP/IP flags is important too, this +gives the information what this system will do. If you only enter IBN as TCP/IP +flags then the system will only call IBN nodes (binkp). The default is +XX,CM and TCP/IP systems (internet) should use the XX,CM,IBN,IFC flags. +If you cannot do TCP/IP connections, leave TCP/IP "phone" empty. The three +TCP/IP fields are used to give your system information via EMSI or binkp to +the other nodes. +

    +Mailer logl.      The logging level for mailer sessions
    +TCP/IP "phone"    The TCP/IP "phone" number (IP address or domain name)
    +TCP/IP flags      The TCP/IP capability flags for TCP/IP sessions
    +TCP/IP speed      The TCP/IP linespeed
    +Timeout reset     The timout for normal modem commands
    +Timeout connect   The timeout for waiting for connect
    +Dial delay        The maximum delay between calls, minimum is 10 seconds.
    +No Filerquests    Disable filerequests
    +No callout        Disable callout
    +No EMSI session   Disable EMSI
    +No YooHoo/2U2     Disable FTS-0006 sessions
    +No Zmodem         Disable zmodem protocol
    +No Zedzap         Disable zedzap protocol
    +No Hydra          Disable Hydra protocol
    +No MD5            Disable binkp MD5 passwords
    +Zero Locks OK     Allow zero byte lockfiles from another OS
    +Phonetrans 1..40  Maximum 40 phone number translations
    +Max. files        Maximum files to request, 0 is unlimited 
    +Max. MBytes       Maximum MBytes to request, 0 is unlimited
    +
    + +

    1.15. Edit HTML pages setup.

    +

    +Here you setup the HTML pages that can be created with the +mbfile web command. These are HTML pages of your download +areas and indexes of all areas. If there are pictures in these areas +thumbnails are created if you have the convert +command available. The document root is the same as defined in your +web server. The link to ftp must be created from that directory to +your ftp base directory. To do that become root, cd to the document root +and type ln -s /var/spool/mbse/ftp files In this case the link +is called files. Note that all download areas are accesible, +there is no user authentication yet available. +

    +Docs root         The path to the httpd documents root.
    +Link to ftp       The link to the ftp directory.
    +URL name          The URL of your webserver.
    +Charset           The default character set, ISO-8859-1.
    +Author name       The author name you want in the HTTP headers.
    +Convert command   The graphics convert command. (ImageMagick needed).
    +Files/page        The number of files to display per web page.
    +Hist. limit       Limit the number of mailhistory.html lines, 0 is unlimited.
    +
    +

    + +

    1.16. Manager flag Descriptions.

    +

    +In this menu you can give the 32 area-/filemgr flags a meaningfull description. +

    + +BackBack to index +HomeBack to main index +

    + + diff --git a/html/setup/hatch.html b/html/setup/hatch.html new file mode 100644 index 00000000..2027da7c --- /dev/null +++ b/html/setup/hatch.html @@ -0,0 +1,65 @@ + + + + + + + + + + + +MBSE BBS Setup - File Echo's Setup - Hatch Manager. + + + +
    +
    Last update 10-May-2002
    +

    MBSE BBS Setup - File Echo's Setup - Hatch Manager.

    + +

    Introduction.

    +

    +Hatch files is nothing more than entering a new file into a file echo. That +file is searched for on your system in a specific directory with a certain +filemask. This can be for example a new created nodelist or an allfiles listing. +Everytime mbfido tic is run it will scan for files defined +in this setup. If such a file is found, a special .tic file is written and +stored in the mailers inbound directory. When the mbfido +starts processing .tic files, that new hatched file will be processed as if +it was received form another system. To let this work, you obviously need +an existing TIC area.

    +The filenames to hatch may be long filenames as long as there are no spaces in +it. In the TIC file a short filename will be created for the old style tic +processors. The long filename is inserted in the TIC file as well. The short +filenames are created in the same way as windows does. +

     

    + +

    Hatch Manager Setup.

    +

    +

    +Mask    The path and filename mask to search for. 
    +        "?" matches any character, "#" matches digits and "@" matches
    +        upper or lowercase letters. Except for the "@" the test is
    +	case sensitive.
    +Area    The area to hatch this file in.
    +Replace The filename to replace, ie. "nodelist.z*"
    +Magic   The filerequest magic name, ie. "nodelist"
    +Desc    The description of the file, %12 in the description
    +        means copy the 12th character of the name in place.
    +Dupe    Check for duplicates.
    +Active  If this area is active.
    +Deleted If this area must be deleted.
    +Days    The days in the week to scan for this file.
    +Month   The dates in the month to scan for this file.
    +
    +

    + +Hatch manager setup +

    + +BackBack to File Echo's Setup  +BackBack to index  +HomeBack to main index +

    + + diff --git a/html/setup/index.htm b/html/setup/index.htm new file mode 100644 index 00000000..03c149e6 --- /dev/null +++ b/html/setup/index.htm @@ -0,0 +1,79 @@ + + + + + + + + + + + +MBSE BBS setup. + + + +
    +
    Last update 01-Mar-2007
    +

    MBSE BBS Setup Guide

    +

    + +

    Invoking mbsetup

    +

    +As user mbse type mbsetup to start the setup +program. This version is not yet finished. There are a few items you can't +setup yet. +When you start mbsetup you will see the following screen: +

    +mbsetup +

     

    + +

    mbsetup main options

    +

    +

      +
    1. Edit Global configuration +
    2. Edit Fido networks +
    3. Edit Archiver programs +
    4. Edit Virus scanners +
    5. Edit Modem types +
    6. Edit TTY lines info +
    7. Edit Fidonet nodes +
    8. Edit BBS setup +
        +
      1. Edit Security limits +
      2. Edit Language setup +
      3. Edit BBS menus +
      4. Edit File areas +
      5. Edit Transfer protocols +
      6. Edit Oneliners +
      +
    9. Edit Mail setup +
        +
      1. Echo mail groups +
      2. Echo mail areas +
      +
    10. Edit File echo's setup +
        +
      1. Edit Fileecho groups +
      2. Edit Fileecho areas +
      3. Edit Hatch manager +
      4. Edit Magic files +
      +
    11. Edit Newfiles groups +
    12. Edit Newfiles reports +
    13. Edit Filefind setup +
    14. Edit Files database +
    15. Edit BBS users +
    16. Edit Services +
    17. Edit Domains +
    18. Edit Task Manager +
    19. Edit Routing Table +
    20. Edit Internet BBS Chat +
    21. Show software information +
    22. Create site documents +
    + +BackBack to index +
    + + diff --git a/html/setup/language.html b/html/setup/language.html new file mode 100644 index 00000000..659c63f3 --- /dev/null +++ b/html/setup/language.html @@ -0,0 +1,66 @@ + + + + + + + + + + + +MBSE BBS Setup - BBS Setup - Language Setup. + + + +
    +
    Last update 17-Feb-2007
    +

    MBSE BBS Setup - BBS Setup - Language Setup.

    + +

    Language introduction.

    +

    +You need to define at least one language, this is the default language. +The ISO language code of the dfeault language needs to be the same as in the +global setup 1.5.24 and should be set to en. +I did this so you can make your +own local languages next to the default languages. If something is not +present in your local language, the BBS will fall back to the default +language. It is therefore wise to name all menus, macro templates and +textfiles the same for all languages used. +When you setup the languages for the first time, entries for English, Dutch, +Spanish, Galego, German, French and Chinese languages are created. +

    +And important note about the ISO code, don't change this. And if you do, +then you must change the directory name under /opt/mbse/share/int +to the same name as the code here. For example for the en code the system +expects the following paths and files: +

    +

    +/opt/mbse/share/int/language.en
    +/opt/mbse/share/int/menus/en/*.mnu
    +/opt/mbse/share/int/txtfiles/en/*.ans
    +/opt/mbse/share/int/txtfiles/en/*.asc
    +/opt/mbse/share/int/macro/en/*
    +
    +

     

    + +

    Language setup.

    +

    +

    +Select      The letter to select this language.
    +Name        The name of this language.
    +ISO code    The 2 letter ISO code of the language.
    +Available   If this language is available.
    +Security    The minimum security level to select this language.
    +Deleted     If this language must be deleted.
    +
    +

    +Language setup +

    + +BackBack to BBS index  +BackBack to index  +HomeBack to main index +

    + + diff --git a/html/setup/magic.html b/html/setup/magic.html new file mode 100644 index 00000000..679d1db1 --- /dev/null +++ b/html/setup/magic.html @@ -0,0 +1,76 @@ + + + + + + + + + + + +MBSE BBS Setup - File Echo's Setup - Magic Files Setup. + + + +
    +
    Last update 10-May-2002
    +

    MBSE BBS Setup - File Echo's Setup - Magics Files Setup.

    + +

    Introduction.

    +

    +Magics are special actions that you can perform on files received in a .tic +area. The actions are: copy file to a directory, unpack file in a directory, +set number of files to keep, move file to another .tic area, update magic +request alias, adopt file into another area, store in another path, +delete file (don't process it further) and execute a command. The edit screen +is different for all kinds of actions you select. More than one magic record +may exist for each area. With all these actions you can for example can setup +processing of nodediff's and unpacking nodelists in the nodelist directory. +If you use the execute command, you can only execute commands that are in the +directory $MBSE_ROOT/bin, ie. /opt/mbse/bin. +

     

    + +

    Magics Setup.

    +

    +

    +Magic     The action to perform, select with the spacebar.
    +Filemask  The filemask to scan for. "?" Matches all characters,
    +          "#" matches any digit and "@" any upper or lowercase letter.
    +	  Except for the "@" the test is case sensitive.
    +Active    If this magic is active.
    +Deleted   If this magic must be deleted.
    +Area      The area in which this magic is found.
    +To path   The destination path. (Copy, Other path and Unpack).
    +To area   The destination area. (Adopt and Move).
    +Command   The command to execute. (Execute).
    +Keep #    The number of files to keep. (Keep).
    +Compile   Trigger "compile nodelists". (Copy, Unpack and Execute).
    +
    +

     

    + +

    Macro's

    +

    +In the commandline for the magic execute command you may use macro's to replace +parts of the commandline. The following macro's are defined: +

    +%F   Replaced by the full path and filename of the file.
    +%P   Replaced by the full path to the file.
    +%N   Replaced by the filename without dot and extension.
    +%E   Replaced by the extension of the filename.
    +%L   The last 2 characters of the filename extension.
    +%D   The day number of the year, 3 digits.
    +%C   The last 2 digits of the day number of the year.
    +%A   The .tic area name.
    +
    + +

    +Magic setup +

    + +BackBack to File Echo's Setup  +BackBack to index  +HomeBack to main index +

    + + diff --git a/html/setup/mail.html b/html/setup/mail.html new file mode 100644 index 00000000..203ac77e --- /dev/null +++ b/html/setup/mail.html @@ -0,0 +1,34 @@ + + + + + + + + + + + +MBSE BBS Setup - Mail Setup. + + + +
    +
    Last update 29-Jan-2001
    +

    MBSE BBS Setup - Mail Setup.

    + +

    Edit Mail Setup.

    +

    +The Mail Setup is split in the following sections: +

    + +

      +
    1. Echo mail groups +
    2. Echo mail areas +
    + +BackBack to index  +HomeBack to main index +
    + + diff --git a/html/setup/modems.html b/html/setup/modems.html new file mode 100644 index 00000000..47a8849f --- /dev/null +++ b/html/setup/modems.html @@ -0,0 +1,88 @@ + + + + + + + + + + + +MBSE BBS Setup - Modem types. + + + +
    +
    Last update 29-Jan-2001
    +

    MBSE BBS Setup - Modem types

    + +In the setup screen you can define all kinds of modems you use. This includes +ISDN modems. +This is not the setup of individual lines, that is in the next section, so +if you own a bbs with 5 analogue lines with only two brands and types of +modems connected, you need only to define those two types of modems here. Some +defaults are installed during initial bbs setup. +

     

    + +

    Setup a modem.

    +

    +

    +Type             The description of this modem.
    +Init 1           The first modem init string.
    +Init 2           The second init string (if needed).
    +Init 3           The third init string (if needed).
    +Reset            Not in use
    +Hangup           Only needed if drop DTR doesn't work.
    +Dial             The dial command.
    +Info             Command to get caller-id (not tested).
    +Ok               The modem "OK" response.
    +Offset           The answer/connect time offset.
    +Speed            The maximum modem linespeed, ie 28800.
    +Available        If this modem is available.
    +Deleted          If this modem must be deleted.
    +Stripdash        Strip dashes from the dial command.
    +Connect strings  Here you can define 20 connect strings.
    +Error strings    Here you can define 10 non-connect strings.
    +
    +

     

    + +

    Special characters

    +

    +

    +\\               Send one backslash.
    +\r               Send the CR character.
    +\n               Send the LF character.
    +\t               Send the TAB character.
    +\b               Send the BS character.
    +\s               Send a space character.
    +\d               Wait one second.
    +\p               Wait 0,25 second.
    +\D               Send untranslated phone number.
    +\T               Send translated phone number.
    +
    +

     

    + +

    The Hangup field

    +

    +This is only needed if your modem doesn't hangup by dropping the DTR line for +one second. Most modems do that if &D2 or &D3 is in the init string. +

     

    + +

    The Offset field.

    +

    +The Offset field is to calculate the cost for outgoing calls. +Analogue modems need time to establish the connection, 6 seconds is quite +common. So when you see the CONNECT BLABLA message, the phone connection +is there already 6 seconds and you are already paying for 6 seconds. This +offset is thus added to the total calculated connect time for cost +calculations. For ISDN modems this can be 1 or 0. +

     

    +Modems setup +

    + +BackBack to index  +HomeBack to main index +

    + + diff --git a/html/setup/newfiles.html b/html/setup/newfiles.html new file mode 100644 index 00000000..e68b9df6 --- /dev/null +++ b/html/setup/newfiles.html @@ -0,0 +1,53 @@ + + + + + + + + + + + +MBSE BBS Setup - Newfiles Reports. + + + +
    +
    Last update 05-Mar-2007
    +

    MBSE BBS Setup - Newfiles Reports.

    + +

    Introduction.

    +

    +For each network you can define one or more newfiles reports to announce the +newfiles that arrived on your BBS. The files to include in the reports are +specified by the newfiles groups you can include or exclude for announcement. +

     

    + +

    Reports Setup.

    +

    +

    +Comment     The comment for this report.
    +Msg area    The JAM message base to write the report in.
    +Origin line The origin line to use.
    +From name   The name to use in the "From:" field.
    +To name     The name to use in the "To  :" field.
    +Subject     The text to use in the "Subj:" field.
    +Language    Not in use yet, but DO select! 
    +Template    Not in use yet.
    +Aka to use  The Fidonet aka to use in this area.
    +Active      If this report is active.
    +Deleted     If this report must be deleted.
    +New groups  The screen to define the groups to include.
    +CHRS kludge The CHRS kludge an encoding to use.
    +
    +

    + +Newfiles reports +

    + +BackBack to index  +HomeBack to main index +

    + + diff --git a/html/setup/newgroups.html b/html/setup/newgroups.html new file mode 100644 index 00000000..5225cf3a --- /dev/null +++ b/html/setup/newgroups.html @@ -0,0 +1,48 @@ + + + + + + + + + + + +MBSE BBS Setup - Newfiles Groups. + + + +
    +
    Last update 30-Jan-2001
    +

    MBSE BBS Setup - Newfiles Groups.

    + +

    Introduction

    +

    +The newfiles groups are there to create separate newfiles announcements for +several networks and areas. Even if you don't want to make different +announcements you still need to define at least 2 groups. One is a group +where you don't announce files in and one where you do. These groups are +linked to the BBS file areas and must be defined before you define the BBS +file areas. As you can see in the example picture I seperated the groups +in subjects. +

     

    + +

    Newfiles Groups Setup.

    +

    +

    +Name    The tag name of the group.
    +Comment The comment for this group.
    +Active  If this group is active.
    +Deleted If this group must be deleted.
    +
    +

    + +Newfiles groups setup +

    + +BackBack to index  +HomeBack to main index +

    + + diff --git a/html/setup/nodes.html b/html/setup/nodes.html new file mode 100644 index 00000000..38bf2f46 --- /dev/null +++ b/html/setup/nodes.html @@ -0,0 +1,415 @@ + + + + + + + + + + + +MBSE BBS Setup - Fidonet nodes. + + + +
    +
    Last update 21-Aug-2005
    +

    MBSE BBS Setup - Fidonet nodes.

    +

    + +

    Introduction

    +

    +Unlike many other bbs packages, for each node you need only one record. If you +have a relation with a node for one network with costsharing, and other +networks without costsharing you need two records for that node. For each node +you can setup the aka's, mail, files and session handshake. There are ten +screens for each node. +

     

    + +

    1. Edit general setup

    +

    +This screen has the general information for the node. The contact info fields are +just for private use, these fields are only used in this screen. The Outbox dir is for +files to sent to the node, all file you put in there will be sent to the remote if +user mbse has read/write access to the file. Only real files are allowed, not symlinks etc. +

    + + + + + + + + + + + + + + + +
    Sysop nameThe name of the system +operator. The name entered here is used in Areamgr and Filemgr messages etc.
    Outbox dirPrivate extra outbound +directory for this node. Any file dropped into this directory will be sent to +the node and removed after it is sent.
    Pvt. phoneContact info, node private +phone.
    Pvt. faxContact info, node private +fax.
    Pvt. cellphoneContact info, node +cellphone (GSM).
    Pvt. e-mailContact info, node e-mail +address.
    Pvt. remarkContact info, node +remark.
    Route viaA route via Fido address. All +mail for this node will be send via this Aka, even mail and files for other +networks. This can be usefull if this node has internet access so you can send +everything to this node over the internet. Note that to force calling this node +via internetr, ISDN or pots can also be done by using nodelist flags override. See +section 3. This setting is more usefull to force routing via another node or +aka.
    Netmail directSet "direct" flag in +netmail to this node.
    Netmail crashSend netmail always "crash" +to this node.
    Netmail holdPut mail on "hold" for this +node.
    Pack mailShould net- and echomail be packed in +arcmail archives.
    Send notifySend automatic generated +notify messages.
    LanguageThe language to use for areamgr +msgs.
    DeletedIf this node must be +deleted.
    +

    +Nodes setup +

     

    + +

    2. Edit nodes aka's

    +

    +In this screen you can setup 20 aka's for the node. +

    +Nodes aka's setup +

     

    + +

    3. Edit node session

    +

    +In this screen you can setup the session defaults. +

    + + + + + + + + + + + + + + + + + + + + + +
    Session passwdThis is the mailer +session password.
    Dial commandYou can put an +override here for the normal dial command. If you leave this empty the command +from the modem setup is used.
    Phone number 1An alternative phone +number to dial.
    Phone number 2An alternative phone +number to dial. Use these above commands if the node has another +phone number as mentioned in the nodelist.
    Nodelist flagsOverride for the +nodelist flags, the nodelist flags are completly ignored if you enter something +here so make sure all flags you need are here. All aka's of this node will use +the same flags. This can be usefull to force calling this node via the +internet and to force a certain protocol.
    Inet hostnameThe FQDN hostname or +IP address of this node. This replaces the original system name from the +nodelist and this is then used to make the internet TCP/IP connection. This can +be usefull if the FQDN is not present in the nodelist.
    Outbound sess.Outbound session +method, choices are Direct and Directory. Direct means normal +classic mailer connections. Directory means that everything is put in a +directory from which the other node can fetch the mail and files using ftp +protocol.
    Inbound sess.Inbound session +method, choices are Direct and Directory. Direct means normal +classic mailer connections. Directory means that inbound mail and files are +expected in a directory were it is stored by the node using ftp +protocol.
    No EMSIDisable EMSI +handshake.
    No YooHoo/2U2Disable FTSC-0006 +handshake.
    No FilerequestDisable filerequest +from this node.
    Don't callDo not call this +node.
    8.3 namesSet this if the node only +accepts 8.3 filenames.
    No PLZDisable PLZ compression on +outgoing calls with the binkp protocol.
    No GZ/BZ2Disable GZ and BZ2 +compression on outgoing calls with the binkp protocol.
    No ZmodemDisable Zmodem +protocol.
    No ZedzapDisable Zedzap +protocol.
    No HydraDisable Hydra +protocol.
    Binkp CRC32Enable CRC32 file +transfer checks.
    Binkp old escSome systems followed +the wrong character escape method as published in FSP-1011 revision 3. For these +systems turn this flag on or you won't be able to send long filenames with +spaces in the name or other special characters. Such known systems are Argus and +Irex upto 2.29. Others may exist, even some older mbse versions. +
    No binkp/1.1Irex from version 2.24 +at least upto 2.29 have a buggy binkp/1.1 implementation. Set this to Yes for +nodes that use one of these Irex versions and the binkp session will fall back +to the binkp/1.0 protocol.
    Ign. HoldIgnore the nodelist flags +Hold or Down. Set this only if you want to call a node that is Down or Hold and +you know that you can connect it.
    +

    +Nodes session setup +

     

    + + +

    4. Edit node - mail processing

    +

    +

    + + + + + +
    PKT passwordThe password to insert +in .pkt files.
    Check PKT pwdCheck password in +received .pkt files. If not, errors or missing passwords are only logged. If +set, errors or missing password are refused and the .pkt files are renamed to +.bad
    Mail forwardNot in use +yet.
    ARCmail comp.Use ARCmail 0.60 file +naming convention for out of zone mail.
    ARCmail a..zAllow a..z last +character for ARCmail filenames.
    +

    +Nodes mail setup +

     

    + +

    5. Edit mail groups

    +

    +Here you can tag which mail groups are available for this node. Note that all +groups are visible here, even for networks this node has no aka's in. Be +carefull not to allow a node to connect areas from networks he has no aka in. +

    +Nodes mail groups +

     

    + +

    6. File setup

    +

    +

    + + + + + + + +
    Files passwordThe password for +.tic files.
    Incl. messageSend a netmail +message for each file to send.
    Send TIC fileSend .tic file to +this node.
    Advanced TICSend advanced or +standard .tic files.
    Advanced SBSend advanced Seen-By +lines, some systems can't handle this!
    To line in TICSend the To line in +the ticfile. Some braindead systems will forward this line instead of processing +it and then the next system in the line will fail.
    File forwardForward TIC files for +this node (not yet).
    +

    +Nodes files setup +

     

    + +

    7. File groups

    +

    +The same story as for mail groups is true for the file groups. +

    +Nodes files groups +

     

    + +

    8. Directory session

    +

    +Setup in this screen is needed if you selected Inbound and or Outbound session +as Directory session. The node is then getting and bringing mail using the ftp +protocol and no normal mailer connects are being used anymore. +This may be a good solution for points, they only need a simple mailreader and a +tosser. The mail is transferred by the mbfido program, during the toss or +tic command after the normal inbound is processed mbfido will look for nodes inbound +directories to process. When mail is added to the outbound, mail for nodes with +directory sessions is not stored in the normal Binley Style Outbound but in the +session outbound directory.
    +You need to setup a ftp account for this node and the best thing is to +set this up so that the other node is forced in a chroot environment, ie. make +it so that the node only sees his own directories and cannot leave that. The ftp +account needs to be a member of group bbs because mbfido needs access to the +files as well as the node. The nodes account needs also to be a member of group +bbsftp for the chroot environment. +The node needs umask 002 so that files that he puts +there will have group read/write access. During toss mbfido also stores the +files with group read/write access so that the node can remove the files when he +has fetched all files. Directory locking is supported and is compatible with +other mailers that support ftp. Here is a small sample of protftp.conf for use +with directory sessions: +

    +# This is /etc/proftpd.conf for use with mbsebbs ftp mail
    +# sessions and anonymous ftp access.
    +# It assumes that you have a user/group "nobody" and "ftp" 
    +# for normal/anonymous operation.
    +# It also assumes you have a group bbsftp were ftp mail users
    +# must be a member of.
    +#
    +ServerName			"Seaport ProFTPD server"
    +ServerType			inetd
    +DefaultServer			on
    +#
    +# Port 21 is the standard FTP port.
    +Port				21
    +# Umask 002 is to force new dirs and files to be group writable.
    +Umask				002
    +#
    +# To prevent DoS attacks, set the maximum number of child processes
    +# to 30.
    +MaxInstances			30
    +#
    +# Set the user and group that the server normally runs at.
    +User				nobody
    +Group				nogroup
    +#
    +SystemLog			/var/log/proftpd
    +TransferLog			/var/log/xferlog
    +#
    +# Anonymous ftp and members of group bbsftp have a chroot environment.
    +DefaultRoot	~ bbsftp
    +#
    +# Normally, we want files to be overwriteable.
    +<Directory /*>
    +  AllowOverwrite		on
    +</Directory>
    +#
    +# A basic anonymous FTP server configuration.
    +# To enable this, remove the user ftp from /etc/ftpusers.
    +<Anonymous ~ftp>
    +  RequireValidShell		off
    +  User				ftp
    +  Group				ftp
    +  # We want clients to be able to login with "anonymous" as well as "ftp"
    +  UserAlias			anonymous ftp
    +  #
    +  # Limit the maximum number of anonymous logins
    +  MaxClients			50
    +  #
    +  # We want 'welcome.msg' displayed at login, and '.message' displayed
    +  # in each newly chdired directory.
    +  DisplayLogin			welcome.msg
    +  DisplayFirstChDir		.welcome
    +  DisplayReadme			README
    +  #
    +  # Display .dotfiles and .dirs
    +  LsDefaultOptions		"-a"
    +  #
    +  # Limit WRITE everywhere in the anonymous chroot
    +  <Limit WRITE>
    +    DenyAll
    +  </Limit>
    +  #
    +  # An upload directory that allows storing files but not retrieving
    +  # or creating directories.
    +  <Directory incoming/*>
    +     <Limit READ>
    +       DenyAll
    +     </Limit>
    +
    +     <Limit STOR>
    +       AllowAll
    +     </Limit>
    +  </Directory>
    +  #
    +</Anonymous>
    +
    +Here are some examples to create an account, first create the extra group +bbsftp: +
    +groupadd bbsftp
    +
    +Then create accounts like this: +
    +useradd -g bbs -G bbsftp -d /opt/mbse/var/bbsftp/irex -s /bin/bash -c "FTP Mail account" irex
    +
    +Then give the node a password for the ftp login. Note that this account has a +shell, proftpd needs a valid shell to allow access. If the node tries to telnet +to your bbs he can't login with this account if you use mblogin, this is +because the node is not in the bbs userfile. If you system allows it, the node +can access the shell using rlogin or ssh.
    +Now the items to setup for the directory sessions: +

    + + + + + + + + + + + + +
    Outbound settings
    Files pathThe path were to store +the outbound mail and files.
    Check for lockIf we need to check +for a lockfile before adding files.
    Wait clear lockWait for the lock +to clear if present or not. If set to yes and there is a lock created by the +node then mbfido will wait for maximum 10 minutes for the lock to disappear. If +set to no, mbfido skips this node and will add mail and files at a later time. +
    Check lockfileThe full filename +and path of the lockfile to check for.
    Create lockIf mbfido should create +a lock during the time it will add mail and files.
    Create lockfileThe full filename +and path of the lockfile to create.
    Inbound settings
    Files pathThe path from were to +get the inbound mail and files.
    Check for lockIf we need to check +for a lockfile before getting files.
    Wait clear lockWait for the lock +to clear if present or not. If set to yes and there is a lock created by the +node then mbfido will wait for maximum 10 minutes for the lock to disappear. If +set to no, mbfido skips this node and will scan this directory at a later time. +
    Check lockfileThe full filename +and path of the lockfile to check for.
    Create lockIf mbfido should create +a lock during the time it will get mail and files.
    Create lockfileThe full filename +and path of the lockfile to create.
    +

    +Nodes directory setup +

     

    + +

    9. Security

    +

    +This will set the security bits for the node. These bits can be used to give +access or deny access to certain echomail areas or tic file areas. Default bit 1 +is set for each node. +

    +Nodes security setup +

    + +

    10. Area and File managers

    +

    +This screen sets names and passwords of the uplink managers, also our own +password is set here. +

    + + + + + + + +
    Uplink AreaMgr programThe name of the +Areamgr program of this node. This could be AreaFix, AreaMgr etc.
    Uplink AreaMgr passowrdThe password for the +Areamgr of this node.
    Uplink AreaMgr is BBBSIf the uplink uses BBBS software set this +to Yes.
    Uplink FilMgr programThe name of the +Filemgr progrom of this node. This could be FileMgr, Allfix, Raid etc.
    Uplink FileMgr passwordThe password of the +Filemgr if this node.
    Uplink FileMgr is BBBSIf the plink +uses BBBS set this to Yes.
    Our Area/Filemgr passwdOur own +Area/Filemgr password for this node to send to our node.
    +

    +Nodes managers setup +

    + +

    11. Statistics

    +

    +In this statistics screen you can see the mail and files flow with this +node. Values are stored for the current week, the previous week, the +current month and previous month and the overall total since you defined +this node. There are actual 12 months of statistics stored in the nodes +record, only 2 are visible. +

    +Nodes statistics +

    + +BackBack to index  +HomeBack to main index +

    + + diff --git a/html/setup/oneliner.html b/html/setup/oneliner.html new file mode 100644 index 00000000..c496c627 --- /dev/null +++ b/html/setup/oneliner.html @@ -0,0 +1,36 @@ + + + + + + + + + + + +MBSE BBS Setup - BBS Setup - Oneliners. + + + +
    +
    Last update 29-Jan-2001
    +

    MBSE BBS Setup - BBS Setup - Oneliners.

    + +

    Oneliners.

    +

    +Oneliners are small quotes that can be random selected and displayed to +your users. From the same database oneliners can be selected and inserted +at the bottom of messages. With the oneliners setup you can edit, add, +delete and import oneliners. Import is done from plain ASCII textfiles, +one quote on each line. The lines should be maximum 70 characters long. +

    +oneliners setup +

    + +BackBack to BBS index  +BackBack to index  +HomeBack to main index +

    + + diff --git a/html/setup/protocol.html b/html/setup/protocol.html new file mode 100644 index 00000000..5c91fa3a --- /dev/null +++ b/html/setup/protocol.html @@ -0,0 +1,75 @@ + + + + + + + + + + + +MBSE BBS Setup - BBS Setup - Transfer Protocols. + + + +
    +
    Last update 28-Nov-2004
    +

    MBSE BBS Setup - BBS Setup - File Transfer Protocols.

    + +

    Introduction.

    +

    +MBSE BBS has Xmodem, Ymodem, Ymodem-1K, Ymodem-G, Zmodem and Zmodem-8K (aka +ZedZap) build in. In addition some external protocols are added to the setup but +they are disabled by default. When the bbs is started the first time, a set of +default protocols is created. The code used is based on the code from lrzsz +package wich is based in the original code written by Chuck Forsberg. +

    +Ymodem is receiver driven. That means if the user has selected plain Ymodem at +the bbs and +his local client is using Ymodem-G and when the user starts a download, the files are +sent with Ymodem-G and not with plain Ymodem. With the same configuation an +upload will be sent with plain Ymodem. With downloads, the Ymodem at the bbs +will use what the client wants: 128 or 1K data blocks, crc of checksum, normal or +streaming Ymodem-G. +

    +Zmodem is transmitter driven. That means if the user has selected Zmodem-8K at +the bbs and his local client is using normal Zmodem and when the user starts a +download, the download is sent with Zmodem-8K. With the same configuration an +upload will be sent with plain Zmodem. With uploads, the Zmodem at the bbs +doesn't care what is being used, it will adapt to the client program. +

    +These days (2004) nobody should use Xmodem anymore but when I wrote Ymodem you +also get Xmodem because they are the same. Only with Xmodem the user has to +type in the filename to both sides. If you enable it you are on your own and you +may need to change the sources to make it really work because I didn't add +typing in the filename at the bbs. Also, Xmodem is restricted to 8.3 filenames +and the bbs uses long filenames. +

     

    + +

    Transfer Protocols Setup.

    +

    +

    +Select Key  The key the user has to press to select this protocol.
    +Name        The name of this protocol.
    +Upload      The full path and filename and parameters to upload files.
    +Download    The full path and filename and parameters to download files.
    +Available   If this protocol is available.
    +Internal    If this is internal or external protocol.
    +Advice      A small advice to the user shown before the transfer starts.
    +Efficiency  The efficiency in percent. Has no real meaning.
    +Deleted     If this protocol must be deleted.
    +Sec. level  The security level a user must have to select this protocol.
    +
    +Some fields cannot be changed when this is an internal protocol, they are +hardcoded. +

    +File transfer protocols +

    + +BackBack to BBS index  +BackBack to index  +HomeBack to main index +

    + + diff --git a/html/setup/route.html b/html/setup/route.html new file mode 100644 index 00000000..a7c3ea24 --- /dev/null +++ b/html/setup/route.html @@ -0,0 +1,71 @@ + + + + + + + + + + + +MBSE BBS Setup - Edit Routing Table. + + + +
    +
    Last update 25-Oct-2001
    +

    MBSE BBS Setup - Edit Routing Table.

    + +

    Introduction.

    +

    +First an important note: normal nodes, hubs and hosts should not need this to +setup. MBSE is smart enough to do normal netmail routing using the nodelist. +There are cases when you might need this, for example if you are a RC or if you +have special routing arrangements via internet nodes. Think at least twice +before adding entries here. You can always use the mbfido test command to +check if the standard routing is enough. You should also check to see what you have +done with mbfido test if the entries in this table do what you expect +them to do. +During route tests it is wise to temporary switch on extra debug logging +with mbsetup menu 1.5.16.17 and check the information in the logfile, there is a +lot of information about the descisions that are made. +

    +When you edit a route table, the entries you add might not be in the right +order, this will be done after you leave the editor. Sorting is done in order of +zone, exact nodes first, then globals. If you end the routing table with a global +route, ie. to All zones, then the standard routing isn't used anymore and only +the table is consulted. This might not be needed, most likely is that you only +need to add the routes to the non-standard nodes. The table is processed from +the first entry to the last and stops when an entry matches. If there was no +match, the default routing will be used. +

     

    + +

    Edit Routing Table.

    +

    +When you open the table you see something like this:

    +Routing table +

    +The edit screen looks like this:

    +Routing editor +

    +Mask      The destination mask to test for.
    +Action    Route to, Direct or Default.
    +Dest addr The destination node in case of Route to.
    +Active    If this rule is active.
    +Deleted   If this rule must be deleted.
    +
    +

    +If the Action is Route to then all mail matching the Mask will be routed +to the node setup in Dest addr. This node must be present in your setup. +If the Mask is Direct then mail to node node(s) matching the Mask will be +sent direct, not routed. If the action is Default then the nodes matching +the Mask will use the standard default routing. More actions will be added +later. +

    + +BackBack to index  +HomeBack to main index +

    + + diff --git a/html/setup/security.html b/html/setup/security.html new file mode 100644 index 00000000..ec9d5358 --- /dev/null +++ b/html/setup/security.html @@ -0,0 +1,57 @@ + + + + + + + + + + + +MBSE BBS Setup - BBS Setup - Security Limits. + + + +
    +
    Last update 09-Feb-2002
    +

    MBSE BBS Setup - BBS Setup - Security Limits.

    + +

    Security limits, introduction.

    +

    +Every BBS needs several security limits to make a difference between several +user groups. These are the twits, regular users and (co-)sysops. If you have +a donation system you will probably have more different levels. Every level a +user can have must have a record in this file. To operate MBSE BBS you need at +least 3 levels, twit with level 0, new users with the level as setup in 1.7.1, +and the sysop level as setup in 1.5.4 As said, for special usergroups you can +add more levels as you need. If a user logs in and has a level in the userbase +you didn't define here, he won't be able to login. Even the twit level needs +some access to be able to throw him out in a nice but friendly way, give him +5 minutes, 1 file to download and no more then 1 Kb so he will understand he +is not wanted. Some defaults are installed during first bbs setup. +

     

    + +

    Limits setup

    +

    +

    +Access level    The access level value.
    +Maximum time    The maximum time each day. If set to zero, the user gets 24 hours a day.
    +Download Kb.    Maximum Kilobytes download each day, zero is unlimited.
    +Download Files  Maximum files to download each day, zero is unlimited.
    +Description     The description for this level.
    +Available       If this level is available.
    +Deleted         If this level must be deleted.
    +
    +So if you completly want to disable a users ratio's, set Maximum time, Download +Kb and Download files to zero. A users session is still limited to 24 hours. +

    +Security setup +

    + +BackBack to BBS index  +BackBack to index  +HomeBack to main index +

    + + diff --git a/html/setup/services.html b/html/setup/services.html new file mode 100644 index 00000000..c1dac842 --- /dev/null +++ b/html/setup/services.html @@ -0,0 +1,59 @@ + + + + + + + + + + + +MBSE BBS Setup - Edit Services. + + + +
    +
    Last update 25-Oct-2001
    +

    MBSE BBS Setup - Edit Services.

    + +

    Introduction.

    +

    +Services are special mail accounts. Netmail addressed to one of these names +will be handled according to the action that is selected. Current implemented +actions are AreaMgr, FileMgr and Email. So if you name a service +Areamgr and set the action to AreaMgr then an incoming +netmail will be directed to the Areamgr function. If you define a service +listserv and set the action to Email then +and incoming netmail will be converted to email and send to the listserv +account at your host.
    +

     

    + +

    Edit Services.

    +

    +

    +Name      The name of the Service.
    +Type      Toggle the service type with the spacebar.
    +Active    If this service is active.
    +Deleted   If this service must be deleted.
    +
    +

    +Here are some example services: +

    +

    +UUCP		Email
    +allfix          FileMgr
    +areamgr         AreaMgr                                                  
    +fmail           AreaMgr                                                  
    +gecho           AreaMgr                                                  
    +mbtic           FileMgr                                                  
    +raid            FileMgr
    +
    +Note: the UUCP services is needed if you are gating email! +

    + +BackBack to index  +HomeBack to main index +

    + + diff --git a/html/setup/sitedoc.html b/html/setup/sitedoc.html new file mode 100644 index 00000000..84167f59 --- /dev/null +++ b/html/setup/sitedoc.html @@ -0,0 +1,36 @@ + + + + + + + + + + + +MBSE BBS Setup - Create Sitedocs. + + + +
    +
    Last update 09-Apr-2004
    +

    MBSE BBS Setup - Create Sitedocs.

    + + +

    Create Sitedocs

    +

    +This option creates everal documents in the share/doc and share/doc/html +directories under the home directory of MBSE BBS. In the first directory is a +file called site.doc that is formatted to print. In the html directory are +a lot of html pages with cross reference links. Since these pages contain +confidentional information of your users and links, you should not make these +html pages public available, but you can browse these with a browser with open +file and point to /opt/mbse/share/html/index.html. +

    + +BackBack to index  +HomeBack to main index +

    + + diff --git a/html/setup/softinfo.html b/html/setup/softinfo.html new file mode 100644 index 00000000..ec2177e4 --- /dev/null +++ b/html/setup/softinfo.html @@ -0,0 +1,30 @@ + + + + + + + + + + + +MBSE BBS Setup - Show Software Information. + + + +
    +
    Last update 30-Jan-2001
    +

    MBSE BBS Setup - Show Software Information.

    + +

    Introduction

    +

    +This screen shows the information about the MBSE BBS software, copyright and +release policy. +

    + +BackBack to index  +HomeBack to main index +

    + + diff --git a/html/setup/taskmgr.html b/html/setup/taskmgr.html new file mode 100644 index 00000000..c50f172e --- /dev/null +++ b/html/setup/taskmgr.html @@ -0,0 +1,68 @@ + + + + + + + + + + + +MBSE BBS Setup - Task Manager. + + + +
    +
    Last update 19-May-2004
    +

    MBSE BBS Setup - Task Manager.

    + +

    Introduction

    +

    +The task manager is the daemon which controls the MBSE BBS. It watches semafore's and spawns +programs in the background. It also watches the outbound to see if there are +nodes to call. +The behaviour is setup in this screen. +

    + +

    Edit Task Manager

    +

    +

    +Mailout   Action for semafore mailout.
    +Mailin    Action for semafore mailin.
    +Newnews   Action for semafore newnews.
    +Index 1   Nodelist compiler 1 for semafore mbindex.
    +Index 2   Nodelist compiler 2 for semafore mbindex.
    +Index 3   Nodelist compiler 3 for semafore mbindex.
    +Msglink   Action for semafore msglink.
    +Reqindex  Action for semafore reqindex.
    +Ping #1   IP address of node to ping to check the internet.
    +Ping #2   IP address of second node to ping to check the internet.
    +Max TCP   Maximum simultaneous outgoing calls over the internet.
    +Max Load  Max system load until processing is suspended.
    +ZMH start Start of Zone Mail Hour in UTC time.
    +ZMH end   End of Zone Mail Hour in UTC time.
    +
    +

    +Default are the original MBSE commands filled in, but you could also call +shell scripts. +

    +The two IP addresses to ping need to be IP addresses, not hostnames. This is the +most reliable way to check the connection. You should enter the IP addresses of +the nameservers of your own ISP here. One of these will always be up, so if one +of these can be reached, the internet connection is assumed to be alive. The +status of the internet connection is used to decide if it is allowed (and +possible) to call TCP/IP nodes. Calling these nodes is not depending on ZMH +unless the destination is not a CM node.
    +The max load setting decides at which system load point processing of background +tasks will be suspended. The default value should be allright for machines slower then 200 +MHz or with low ram. On faster machines you may set this value higher. +

    +Taskmanager setup +

    + +BackBack to index  +HomeBack to main index +

    + + diff --git a/html/setup/tic.html b/html/setup/tic.html new file mode 100644 index 00000000..c187db84 --- /dev/null +++ b/html/setup/tic.html @@ -0,0 +1,36 @@ + + + + + + + + + + + +MBSE BBS Setup - File Echo's Setup. + + + +
    +
    Last update 29-Jan-2001
    +

    MBSE BBS Setup - File Echo's Setup.

    + +

    File Echo's Setup.

    +

    +The File Echo's Setup is split in the following sections: +

    + +

      +
    1. File echo groups +
    2. File echo areas +
    3. Hatch manager +
    4. Magic files +
    + +BackBack to index  +HomeBack to main index +
    + + diff --git a/html/setup/ttyinfo.html b/html/setup/ttyinfo.html new file mode 100644 index 00000000..1438d48e --- /dev/null +++ b/html/setup/ttyinfo.html @@ -0,0 +1,68 @@ + + + + + + + + + + + +MBSE BBS Setup - TTY Lines. + + + +
    +
    Last update 08-Oct-2005
    +

    MBSE BBS Setup - TTY Lines.

    + +

    Introduction.

    +

    +For each modem or ISDN line your bbs has you must setup a tty line. +This also includes console lines (for local login). Since version 0.81.0 +you don't need to setup network lines anymore, these are now buildin. +If a call comes in over a (modem or ISDN) tty you didn't define, that call is refused. +

    +One thing about the portspeed, this is only needed for devices connected to +serial ports such as modems and external ISDN adapters. +For internal ISDN cards this should be set to zero. If you set it to some other value, +things still work but you will get error messages in the logs. +

    +A note about the EMSI flags, this must match your modem capabilities, if +not dialout will not work correct. It is used to see which line to use to call +a certain node. If you add the X75 flag on an analogue line, your system will try to +call ISDN nodes using an analogue modem. So these are not your nodelist flags as they +may represent combined ISDN and analogue flags but the flags that belong to a modem. +

     

    + +

    Setup a line.

    +

    +

    +Comment      A description for this line.
    +TTY device   The tty device name without /dev/
    +Phone nr.    The phone number on this line.
    +Line Speed   The maximum line speed for this line.
    +Fido Flags   The EMSI flags for this line, include your modem flags here!
    +Line Type    Can be POTS, ISDN, Network and Local.
    +Available    Is this line available for use.
    +Honor ZMH    Deny users during ZMH on this line.
    +Deleted      If this line must be deleted.
    +Callout      Allow calling other systems from this line.
    +Portspeed    The "locked" modemspeed, 0 to 4000000 baud, only for serial ports.
    +Modemtype    The modem connected to this line.
    +EMSI name    The EMSI name presented for this (modem) line.
    +
    +

     

    + +

    Some examples.

    +

    +Overview of tty ports

    +A analogue modem port at COM1

    +A ISDN channel

    + +BackBack to index  +HomeBack to main index +

    + + diff --git a/html/setup/users.html b/html/setup/users.html new file mode 100644 index 00000000..9e468640 --- /dev/null +++ b/html/setup/users.html @@ -0,0 +1,106 @@ + + + + + + + + + + + +MBSE BBS Setup - BBS Users. + + + +
    +
    Last update 08-Nov-2005
    +

    MBSE BBS Setup - BBS Users.

    + +

    Introduction.

    +

    +This screen lets you edit some settings of the BBS users. Note that the users +database will never be packed and users will always keep their record number. +If a user is deleted the record will be blanked. New users will get a blank +record if it exists, otherwise the database will be expanded. The reason for +this is the LastRead pointers of the message areas, BBS systems who do it +in another method mostly can't keep track of LastRead pointers and records, +and they mix all users LastRead pointers. +Fields that can be changed by the users themselves are in the second screen. +

     

    + +

    Edit User

    +

    +

    +Full Name    The full (Fidonet) name of the user.
    +Security     The security level of the user.
    +Expirydate   The expiry date of the user DD-MM-YYYY.
    +Expiry Sec   The security level the user gets after expiry.
    +Unix uid     Displays the unix name of the user.
    +1st login    Displays the date of the first login.
    +Last login   Displays the date of the last login.
    +Pwdchange    Displays the date of the last password change.
    +Credit       The users credit.
    +Hidden       If the user is hidden from listings etc.
    +Deleted      User must be deleted.
    +No Kill      User can never be deleted.
    +Comment      The comment about this user.
    +Locked       Locked out of the BBS.
    +Guest        Is this a "guest" account on/off.
    +Ext Info     Send ^aKLUDGES with BlueWave downloads.
    +Email        If this user has an email address.
    +Calls        Displays the number of calls.
    +Downlds      Displays the number of downloads.
    +Down Kb      Displays the number of Kilobytes downloaded.
    +Uploads      Displays the number of uploads.
    +Upload Kb    Displays the number of Kilobytes uploaded.
    +Posted       Displays the number of messages posted.
    +Time left    Show the time left in minuts and reset the time.
    +Screen 2     Go to next setup screen.
    +
    +Watch out when changing the unix userid of the user, you need to change the +system password file and the users home directory manually. +

    +User editor +

    + +

    Edit User Private Settings

    +

    +

    +Handle       The nickname of the user.
    +Location     The location of the user.
    +Address 1    The address of the user line 1.
    +Address 2    The address of the user line 2.
    +Address 3    The address of the user line 3.
    +Voicephone   The voice phonenumber of the user.
    +dataphone    The data phonenumber of the user.
    +Birthdate    The birthdate of the user DD-MM-YYYY.
    +Password     Change password for this user.
    +Sex          Users sex, male or female.
    +Protocol     The selected file transfer protocol.
    +Archiver     The selected archiver.
    +Charset      The users preffered character set.
    +Screenlen    The length (lines) of the users screen.
    +Language     The language the user uses.
    +Hotkeys      Hotkeys on/off.
    +Color        Color on/off.
    +Fs Chat      Fullscreen Chat on/off.
    +Silent       Do not disturb on/off.
    +CLS          Sent clearscreen codes on/off.
    +More         More prompt on/off.
    +Editor       Select message editor.
    +MailScan     Scan for new mail at logon on/off.
    +ShowNews     Show "news" screens on/off.
    +NewFiles     New files scan at logon on/off.
    +Emacs        Use Emacs (or Wordstar) FS edit shortcut keys.
    +
    +

    + +User editor +

    + +BackBack to index  +HomeBack to main index +

    + + diff --git a/html/setup/virscan.html b/html/setup/virscan.html new file mode 100644 index 00000000..3e914905 --- /dev/null +++ b/html/setup/virscan.html @@ -0,0 +1,105 @@ + + + + + + + + + + + +MBSE BBS Setup - Virus scanners. + + + +
    +
    Last update 17-Feb-2008
    +

    MBSE BBS Setup - virus scanners

    + +Once upon a time there was no DOS and no computer virusses. But since DOS was +invented as a small OS which was easily extensible, virus writers saw their +chance to easy spread their hacks. Although running a GNU/Linux system is +relative safe, most of the files that you have available on your bbs +are DOS/Windows based programs. And before you put them available for download, they +should be checked for virusses. Macro virusses are a relative new danger, +this can also hurt Unix/Linux users.

    +There are several scanners for GNU/Linux available. Default only four of them +are setup. You may consult +http://www.openantivirus.org for more scanners mentioned in a mini-FAQ +maintained by Rainer Link. +

    +When you configured the sources and build mbse, the configure script searched +for excisting scanners. When mbsetup was run the first time, when mbtask was +started, the scanners found on your system are already configured with the +right paths and enabled. +

    +The following scanners are default installed in the setup: +

    + +

      +
    • NAI Virus Scan (uvscan) for Unix (GNU/Linux) made by +Network Associates, USA. +Not free for personal use. Uses the same DAT files as for Windows and DOS. +
    • AntiVir/Linux made by +H+BEDV Datentechnik GmbH. +Can also be installed in sendmail or Postfix to scan incoming +and outgoing email. This may be a good idea if you run a email gateway. +This version can be registered for personal use. +
    • F-PROT available from http://www.frisk.is. There is a free version for personal use. +
    • Clam AntiVirus is a GNU licensed virus scanner for Unix. It +is available from www.clamav.net. It has one +slight disadvantage over other scanners (or just the opposite), when it tests a +file with the Eicar testvirus signature it will report that and triggers the +virus detection. This happens with NAI DAT files. +
    +

    +As soon as you have made one scanner available in the setup and you receive files +in tic areas where the scan flag is set, then these files will be checked. +As soon as one of the scanners detects a virus the received file will not be imported. +Uploads from users will be checked with the installed virus scanners as well. +

     

    + +

    Stream scanners

    +

    +A new feature is stream scanning. In this setup you need a virus scanner loaded as a daemon and it +must listen to a TCP/IP port to receive commands and data to scan. Currently this is only implemented +for ClamAV, but F-Prot may follow. First you need a machine where clamd is running, this +can be a remote machine but of course also the bbs machine itself. ClamAV needs to be configured +so that it listens to a TCP/IP port, and depending on other things on the local socket too. +Recent versions of ClamAV can do both together. Change your /etc/clamav/clamd.conf to +contain the following lines: +

    +# Path to a local socket file the daemon will listen on.
    +# Default: disabled (must be specified by a user)
    +LocalSocket /var/run/clamav/clamd
    +
    +# Remove stale socket after unclean shutdown.
    +# Default: no
    +#FixStaleSocket yes
    +
    +# TCP port address.
    +# Default: no
    +TCPSocket 3310
    +
    +# TCP address.
    +# By default we bind to INADDR_ANY, probably not wise.
    +# Enable the following to provide some degree of protection
    +# from the outside world.
    +# Default: no
    +#TCPAddr 127.0.0.1
    +
    +I left the comment for the TCPaddr, but it's up to you to protect the clamd server. After you +restart clamd test the connection with telnet host.where.clamd.runs 3310, +type VERSION followed by a return and you should see the ClamAV version. If that works, you can enable +the ClamAV stream scanner in mbsetup and disable the old commandline scanner.
    +So why would you use this. It's about 10 times faster then the commandline scanner. +

    + + +BackBack to index  +HomeBack to main index +

    + + diff --git a/html/upgrade.html.in b/html/upgrade.html.in new file mode 100644 index 00000000..771cbd30 --- /dev/null +++ b/html/upgrade.html.in @@ -0,0 +1,96 @@ + + + + + + + + + + + +Upgrade MBSE BBS. + + + +
    +
    Last update 02-Sep-2007
    +

    Upgrade MBSE BBS

    + +

    Introduction.

    +

    +First of all, if you upgrade from a previous version of MBSE BBS, +read all the ChangeLog entries from the version you are currently +running upto the new @VERSION@ version you are installing. +Then make a backup of at least all files in /opt/mbse/bin and /opt/mbse/etc. +

     

    + + +

    Install the source.

    +

    +Login as user mbse. Yes, very important, login as user mbse. +While in mbse's home directory (/opt/mbse) unpack the distribution archives: +

    +tar xfvj /path/to/mbsebbs-@VERSION@.tar.bz2
    +
    +You now have the subdirectory with sources in the right place. +Next build the binaries and install them using the following commands: +
    +cd ~/mbsebbs-@VERSION@
    +make clean
    +./configure
    +make
    +su        important, do not use "su -"
    +password: enter root password here
    +make install
    +
    +Ubuntu users should do: +
    +cd ~/mbsebbs-@VERSION@
    +make clean
    +./configure
    +make
    +sudo make install
    +
    +The last part of the installation procedure shows you the location of the bbs +startup script that is added to your system. Remember this one for a moment. +

    +Now restart the bbs (still as root) by executing the startup +script you just saw on the screen followed by a space and the word reload or restart, +this depends on the distribution you use. There are also distributions that must use the startup +script twice, once with stop and then start as parameter. +For example: +

    +/etc/rc.d/init.d/mbsed reload
    +exit
    +
    +Ubuntu users do: +
    +sudo /etc/init.d/mbsebbs restart
    +
    +This will close the bbs, kill mbtask, start the new mbtask and open +the bbs again for use. At this point you may need to update some configuration settings +with mbsetup. Read the ChangeLog for the details. The ChangeLog may also describe a +different restart procedure if this is needed. +

     

    + +

    Other updates

    +

    +Not everything is updated during the upgrade, only the binaries. Normally this is enough. +However it may be that the example menus, macro templates are updated in the distribution. +Because these files may have some very personal changes, these files are not overwritten. +You can force that, in the subdirectory ~/mbsebbs-@VERSION@/examples type +

    +make help
    +
    +to see what you can force to update. But carefully taking over the changes may be better. +
    +In the directory /opt/mbse/bin and /opt/mbse/etc are new scripts installed. They have the +extension .new and you need to examine these to see if you can simply copy these over +your current ones. +

    +Back to IndexBack to Index + +

    + + diff --git a/html/ups.html b/html/ups.html new file mode 100644 index 00000000..dbba42a7 --- /dev/null +++ b/html/ups.html @@ -0,0 +1,45 @@ + + + + + + + + + + + +Using UPS semafore's. + + + +
    +
    Last update 08-Jun-2001
    +

    MBSE BBS - Using UPS semafore's.

    + +If you have a UPS and you are able to let your UPS software create semafore's when powerfail conditions +occur then read on. The MBSE BBS taskmanager and a lot of utilities will act on two special semafore's, +they are: + +
      +
    1. upsalarm, this semafore should be set when there is no mains power, but there is enough + power left to operate your system. All background tasks will be suspended as long as this condition + is true. If the power comes back, the UPS software should remove this semafore. +
    2. upsdown, this semafore should be set when the UPS sofware signals your system to go down. + This is a fatal condition and there is no way back. Even if the power comes back your system should + shutdown and the UPS will disconnect the power to your system. After a while it will turn the power on + again and your system boots. MBSE BBS will if this semafore is seen kick users out of the bbs, and the + system shutdown script will try to close MBSE BBS as quick as possible. Normal the close timeout is + one hour to let users normal finnish what they were doing, now it is only 30 seconds and if they were + not logged out, they will be disconnected anyway. +
    +I know not all UPS software can do this but most UPS software is open source so you can change it to create +these semafore's. It is not a problem that UPS semafore's still exist if the systems boots, the MBSE BBS +startup scripts will remove them before the bbs is started. +

     

    + + +BackGo Back +

    + + diff --git a/lang/.cvsignore b/lang/.cvsignore new file mode 100644 index 00000000..256af178 --- /dev/null +++ b/lang/.cvsignore @@ -0,0 +1 @@ +language.nl language.en filelist language.gl language.de language.es language.fr language.zh diff --git a/lang/Language.xref b/lang/Language.xref new file mode 100644 index 00000000..7291b9bb --- /dev/null +++ b/lang/Language.xref @@ -0,0 +1,480 @@ +0 user.c newuser.c |Please enter your First and Last name: +1 user.c |Please enter your Last name: +2 user.c |Disconnecting user ... +3 user.c |Scanning User File ... +4 user.c YN|Did you spell your name correctly? [Y/n] +5 newuser.c |You need to login again with the name: +6 user.c |This is a PRIVATE System. Type "off" to leave +7 filesub.c |Mark file number or press to stop +8 user.c filesub.c |Password: +9 user.c |Maximum login attempts have been exceeded ... +10 user.c |Either your NAME or PASSWORD is incorrect +11 mail.c email.c HR|Export to (H)ome or (R)ules directory: +12 mail.c email.c |Message exported to rules directory as +13 dispfile.c |No rules found for this area +14 mail.c |You are not allowed to delete that message +15 change.c |Offline Reader: Extended Info turned ON +16 change.c |Offline Reader: Extended Info turned OFF +17 file.c |This is not a plain textfile. +18 user.c |You may only login +19 user.c |times at the same time +20 door.c |The door is in use by another user, try again later +21 mail.c YN| Is this correct [y/N]: +22 mail.c |Could not parse +23 change.c |Select your preferred character set +24 change.c |Select character set (Enter to Quit): +25 change.c |Character set now set to: +26 newuser.c YN|Check for new mail at login [Y/n]: +27 newuser.c YN|Check for new files at login [Y/n]: +28 page.c |Enter a short reason for chat +29 chat.c |The Sysop cannot use the bbs to chat! Use mbmon to chat +30 chat.c |Sorry, the chatserver is not available +31 mbsebbs.c |line +32 .c | +33 .c | +34 .c | +35 .c |In use for internationalization +36 .c |In use for internationalization +37 newuser.c |MBSE Bulletin Board System - NEW USER REGISTRATION +38 newuser.c |Use this name: +39 newuser.c |Please enter new password : +40 newuser.c user.c |Please enter password again : +41 newuser.c user.c |Your passwords do not match! Try again. +42 newuser.c change.c user.c |Your password must contain at least +43 newuser.c change.c user.c |characters! Try again. +44 | +45 newuser.c change.c |Please enter you Voice Number +46 mail.c |Message exported to your private directory as: +47 newuser.c change.c |Please enter a proper phone number +48 newuser.c change.c |Please enter you Data Number +49 newuser.c change.c |Please enter your location: +50 newuser.c |Please enter a longer location +51 newuser.c MF|What is your sex? (M)ale or (F)emale: +52 newuser.c |Male +53 newuser.c |Female +54 newuser.c |Please answer M or F +55 newuser.c |Unknown +56 newuser.c change.c |Please enter your Date of Birth DD-MM-YYYY: +57 newuser.c |Sorry you entered this year by mistake. +58 newuser.c |Please enter the correct date format +59 chat.c |*** Sysop is starting chat *** +60 chat.c |*** Sysop has terminated chat *** +61 mail.c misc.c file.c YN=|More (Y/n/=) +62 newuser.c YN|Would you like Hot-Keyed menus? [Y/n]: +63 newuser.c |Please answer Y or N +64 | +65 newuser.c |None +66 offline.c |Tag Offline Reader message areas +67 newuser.c |Your user account has been created: +68 newuser.c |Login Name : +69 newuser.c |Password : +70 newuser.c |not displayed +71 newuser.c |New user registration completed. +72 misc.c |Could not find +73 change.c |Old Location: +74 change.c |Please enter a longer location (min +75 | +76 | +77 mail.c |Message doesn't exist +78 change.c |News bulletins turned ON +79 change.c |News bulletins turned OFF +80 | +81 | +82 mail.c |Private message, not owner +83 change.c |Please enter the correct date format +84 misc.c |Todays Callers to +85 misc.c |# User Name Device TimeOn Calls Location +86 change.c |Can't open archiver file. +87 change.c |Select your preferred archiver +88 change.c |Select Archiver (Enter to Quit): +89 change.c |Archiver now set to: +90 .c | +91 .c | +92 .c | +93 .c | +94 .c | +95 .c | +96 .c | +97 .c | +98 .c | +99 .c | +100 .c | +101 .c | +102 .c | +103 .c | +104 .c | +105 .c | +106 .c | +107 signature.c |Edit message signature +108 .c |The FROM, TO and SUBJECT fields are optional. +109 .c | From: +110 .c | To: +111 .c |Subject: +112 .c | Type up to 4 lines 74 Characters per line +113 signature.c |Functions available: +114 signature.c LREAS|(L)ist, (R)eplace text, (E)dit line, (A)bort, (S)ave +115 signature.c |Select: +116 signature.c file.c |Aborting... +117 signature.c |Returning to +118 signature.c |Edit which line: +119 signature.c |Line does not exist. +120 change.c |Old Password: +121 change.c |New password: +122 change.c |Confirm new password: +123 change.c |Passwords do not match! +124 change.c |Password Change Successful +125 change.c |Old password incorrect! +126 funcs.c |User List +127 funcs.c |Enter Username search string or (Enter) for all users: +128 funcs.c |Name Location Last On Calls +129 funcs.c |Could not find search string ... +130 timecheck.c |Time limit exceeded ... disconnecting! +131 filesub.c YN=M|More (Y/n/=) M=Mark +132 filesub.c |Scanning +133 filesub.c |with +134 funcs.c |TIME STATISTICS for +135 funcs.c mbsebbs.c |on +136 funcs.c |Current Time : +137 funcs.c |Current Date : +138 funcs.c |Connect time : +139 funcs.c |Time used today : +140 funcs.c |Time remaining today : +141 funcs.c |Daily time limit : +142 mail.c |You have +143 mail.c YN|messages, read your mail now? [Y/n]: +144 mail.c |You have no new mail in your mail box ... +145 change.c |Hotkeys are now ON +146 change.c |Hotkeys are now OFF +147 funcs.c |On +148 funcs.c |Off +149 newuser.c |User name already exists +150 mail.c |Checking your mail box ... +151 page.c |MBSE BBS Chat +152 page.c |The SysOp is currently speaking to somebody else. +153 page.c |Try paging him again in a few minutes ... +154 page.c |You have paged the Sysop the maximum times allowed. +155 page.c |Sysop currently is not available ... please leave a comment +156 mail.c |Posting message in area: +157 mail.c |From : +158 mail.c |To : +159 mail.c |Verifying user ... +160 mail.c |User not found. Try again, or (Enter) to quit +161 mail.c |Subject : +162 mail.c YN|Abort Message [y/N] ?: +163 mail.c YN|Private [y/N]: +164 lineedit.c |Begin your message now, Blank line to end +165 lineedit.c |Maximum of 60 lines, 73 characters per line +166 lineedit.c |Maximum message length exceeded +167 lineedit.c |Functions available: (Current Message: +168 lineedit.c |Lines) +169 lineedit.c |L - List message S - Save message C - Continue message +170 lineedit.c |Q - Quit message D - Delete line I - Insert line +171 lineedit.c |T - Text edit E - Edit line R - Replace line +172 lineedit.c LSCQDITERZ|Z - Center line +173 lineedit.c |Select +174 lineedit.c |Continue +175 lineedit.c file.c |Delete +176 lineedit.c |Delete starting at line +177 lineedit.c |Aborted. +178 lineedit.c |Please enter a number in the range of +179 lineedit.c |Delete ending at line +180 lineedit.c |Edit +181 lineedit.c |Enter line # to edit +182 lineedit.c |Insert +183 lineedit.c |Enter line # to insert text before +184 lineedit.c |List +185 lineedit.c |Enter line # to replace +186 lineedit.c signature.c |Line reads: +187 lineedit.c |Unchanged. +188 lineedit.c |Line now reads: +189 lineedit.c mail.c |Quit +190 lineedit.c YN|Are you sure [y/N]: +191 lineedit.c |Message aborted. +192 lineedit.c |No +193 lineedit.c |Text Edit +194 lineedit.c |Enter line # to edit +195 lineedit.c signature.c |Text to replace : +196 lineedit.c signature.c |Replacement text : +197 lineedit.c |Line now reads: +198 lineedit.c |Save +199 filesub.c |Possible VIRUS found! +200 filesub.c offline.c |Ok +201 filesub.c offline.c |Unpacking archive +202 mail.c |Saving message to disk +203 lineedit.c |Enter line # to center +204 lineedit.c |Line is maximum length and cannot be centered +205 mail.c |There are no messages in this area. +206 mail.c |Date : +207 mail.c file.c YN=|More (Y/n/=/Area #): +208 mail.c |To : +209 mail.c |From : +210 mail.c |Subject : +211 mail.c |Next reply: +212 mail.c |Reply to: +213 mail.c |messages in +214 mail.c ANLREQDX|(A)gain, (N)ext, (L)ast, (R)eply, (E)nter, (D)elete, (Q)uit, e(X)port +215 mail.c |(A)gain, (N)ext, (L)ast, (R)eply, (E)nter, (Q)uit, e(X)port +216 mail.c |Next +217 filesub.c offline.c |ERROR +218 mail.c RNQ|(R)eply, (N)ext, (Q)uit: +219 mail.c |Enter to keep Subject. +220 mail.c |# From To Subject +221 mail.c |Message area +222 mail.c |contains +223 mail.c |messages. +224 mail.c |Please enter a message between +225 mail.c |Message number [ +226 mail.c |Area Type description Messages Personal +227 mail.c |thread +228 offline.c |Enter the name of the conference, or ? for a list: +229 offline.c |Conference Area Msgs Description +230 mail.c |Deleting message +231 mail.c | Message Areas +232 file.c mail.c |Select Area: +233 file.c mail.c |Invalid area specified - Please try again ... +234 file.c mail.c |Password is incorrect +235 file.c mail.c |Password is correct +236 file.c |You don't have enough security to list this area +237 filesub.c |Can't open file database for this area +238 filesub.c file.c |Uploaded by: +239 file.c |D E L E T E D +240 | +241 mail.c YN|Node not known, continue anayway [y/N]: +242 file.c |Total Files: +243 filesub.c |FATAL: Unable to open areas database +244 filesub.c |You do not have enough access to download from this area. +245 file.c mail.c |Please enter filename: +246 file.c |No filename entered, Aborting. +247 file.c offline.c |Illegal Filename! +248 file.c |Sorry that file is unavailable for download +249 file.c filesub.c |You have +250 file.c filesub.c |extra download KBytes. +251 filesub.c |You do not have enough time to download that file. +252 filesub.c |You do not have enough bytes to download " +253 filesub.c |You must upload before you can download. +254 filesub.c |Kilobytes currently available: +255 file.c |Checking your marked downloads, please wait... +256 offline.c |Untag Offline Reader message areas +257 filesub.c |Found FILEID.DIZ in +258 file.c |No files marked for download. +259 .c | +260 offline.c |You have selected the following Conference(s): +261 file.c |Filename Size Date +262 change.c |Protocol: Can't open protocol file. +263 change.c |Select your preferred file transfer protcol +264 change.c |Select Protocol (Enter to Quit): +265 change.c |Invalid selection, please try again! +266 change.c |Protocol now set to: +267 file.c |Enter keyword to use for Search: +268 file.c |File Search by Keyword +269 file.c |Accepts wildcards such as : *.zip, *.gz, *.* +270 | : *.zip is the same as .zip +271 file.c |Enter filename to search for : +272 file.c |File Search by Filename +273 file.c YN|Search for new since your last call [Y/n]: +274 file.c |Enter new date to search for [DD-MM-YYYY]: +275 file.c |File Search by Date +276 .c | +277 offline.c |Offline Reader Download +278 file.c |You do not have enough access to upload to this area. +279 file.c |You have not enough diskspace free to copy this file +280 file.c |files( +281 file.c |bytes) marked for download. +282 file.c |The file already exists on the system +283 file.c offline.c |Please start your upload now ... +284 filesub.c |Upload was unsuccessful for: +285 filesub.c YN|Do you want to password protect your upload ? [y/N]: +286 filesub.c |REMEMBER: Passwords are "CaSe SeNsITiVe!" +287 filesub.c |Please enter description of file +288 filesub.c |Your upload time has been returned to you. Thank you for your upload! +289 file.c |Start copy: +290 file.c |Can't open directory for listing: +291 file.c |Home directory listing for +292 file.c |Please enter filename to delete: +293 file.c |Sorry you may not delete hidden files ... +294 file.c |Unable to delete file ... +295 file.c |Invalid filename, please try again ... +296 file.c |File does not exist, please try again ... +297 offline.c |Forum Description Msgs. Pers. +298 file.c | File Areas +299 file.c |Please enter Area Password: +300 bbslist.c |Adding BBS +301 bbslist.c |BBS Name: +302 bbslist.c |Response needed ... +303 bbslist.c |Phone Number: +304 bbslist.c |Sysop Name: +305 bbslist.c |BBS Software: +306 bbslist.c |Storage (GigaByte): +307 bbslist.c |Speeds: +308 bbslist.c YN|Would you like to add a extended discription? [Y/n]: +309 bbslist.c |Please a enter discription for +310 bbslist.c |BBS Listing +311 bbslist.c |# BBS Name Number Software GigaByte Speed +312 bbslist.c |Search for a BBS +313 bbslist.c |Please enter 3 letters of BBS to search for: +314 bbslist.c |I need at least 3 letters ... +315 bbslist.c YN|View this BBS? [Y/n]: +316 bbslist.c |Could not find the BBS Listed ... +317 bbslist.c |Show a BBS +318 bbslist.c |Please enter number to list: +319 bbslist.c oneline.c |Record does not exist +320 bbslist.c | Record : +321 bbslist.c | BBS Name : +322 bbslist.c | Number : +323 bbslist.c | Software : +324 bbslist.c | GigaByte : +325 bbslist.c | Speeds : +326 bbslist.c | Sysop Name : +327 bbslist.c | Available : +328 bbslist.c | Date of Entry : +329 bbslist.c | Entry Name : +330 bbslist.c |Delete BBS +331 bbslist.c oneline.c mail.c |Please enter number to delete: +332 bbslist.c oneline.c |Record +333 bbslist.c oneline.c |does not belong to you. +334 bbslist.c oneline.c |already marked for deletion +335 bbslist.c |marked for deletion +336 bbslist.c |The Sysop will purge the list once he has +337 bbslist.c |seen you have marked a record for deletion. +338 offline.c |Total messages found: +339 menu.c |Unknown Menu Command! +340 signature.c |Saving... +341 oneline.c |MBSE BBS Oneliners will randomly appear on the main menu. +342 oneline.c |Obscene or libellous oneliners will be deleted!! +343 oneline.c |Please enter your oneliner below. You have 75 characters. +344 oneline.c |Oneliner added +345 oneline.c | # A Date User Description +346 oneline.c | # Description +347 oneline.c |Please enter number to list: +348 mbsebbs.c |Connected from +349 file.c |File(s) : +350 file.c |Size : +351 file.c |Protocol : +352 file.c |Updating download counter, please wait ... +353 file.c |Failed! +354 file.c |Bytes +355 file.c | # Area Active Size Cost File +356 file.c lineedit.c |Yes +357 file.c |No +358 file.c TE|(T)oggle active, (E)rase all, (ENTER) to continue: +359 file.c |Enter file number, 1.. +360 filesub.c |Marked: +361 file.c |No files tagged. +362 lineedit.c |Replace +363 newuser.c |Loading BBS, please wait ... +364 offline.c |New or deleted mail areas at +365 offline.c |Area State Type Description +366 change.c |New Mail check is now ON +367 change.c |New Mail check is now OFF +368 file.c |Delete file: +369 file.c YN|Are you Sure? [Y/n]: +370 change.c |New Files check is now ON +371 change.c |New Files check is now OFF +372 change.c |Now using the +373 change.c 12|Select: 1) Fullscreen editor, 2) External editor +374 offline.c |No messages found to download! +375 funcs4.c |Press (Enter) to continue: +376 lineedit.c |Center +377 offline.c |Too much messages. Only the first +378 change.c |Select your preferred language +379 change.c |Select Language: +380 change.c |Language now set to: +381 funcs4.c |The system will now ask you for a "Unix Account" +382 funcs4.c |Your "Unix Account" is created, you may use it the next time you call. +383 funcs4.c |Please enter a login name (Maximum 8 characters) +384 funcs4.c |ie. John Doe, login = jdoe +385 funcs4.c |login > +386 funcs4.c |That login name already exists, please choose another one. +387 change.c |Line +388 change.c |Fullscreen +389 change.c |External +390 change.c |Editor +391 offline.c |New +392 offline.c |Local +393 offline.c |Netmail +394 offline.c |Echomail +395 offline.c |News +396 offline.c |E-Mail +397 offline.c |Del +398 funcs4.c |Jan +399 funcs4.c |Feb +400 funcs4.c |Mar +401 funcs4.c |Apr +402 funcs4.c |May +403 funcs4.c |Jun +404 funcs4.c |Jul +405 funcs4.c |Aug +406 funcs4.c |Sep +407 funcs4.c |Oct +408 funcs4.c |Nov +409 funcs4.c |Dec +410 newuser.c timeout.c |Autologout: idletime reached. +411 offline.c |will be packed! +412 newuser.c change.c |Enter your handle (Enter for none): +413 user.c |You are now ready to use the bbs +414 exitinfo.c |Callers On-Line to +415 exitinfo.c |Name Device Status Location +416 change.c |Do not disturb turned OFF +417 change.c |Do not disturb turned ON +418 exitinfo.c |Browsing +419 exitinfo.c |Downloading +420 exitinfo.c |Uploading +421 exitinfo.c |Msg Section +422 exitinfo.c |External Door +423 exitinfo.c |Chatting +424 exitinfo.c |Listing Files +425 offline.c YN|Do you want to download these messages [Y/n]? +426 exitinfo.c |Banking Door +427 exitinfo.c |Safe Door +428 exitinfo.c |WhosOn List +429 exitinfo.c |Offline Reader +430 exitinfo.c |Please enter username to send message to: +431 exitinfo.c |Sorry, there is no user on +432 exitinfo.c |doesn't wish to be disturbed +433 exitinfo.c |Please enter in message to send (Max 76 Characters) +434 misc.c |** Message ** from +435 user.c |Your password is expired, new password : +436 funcs.c |Press ENTER to continue +437 mail.c |Posting not allowed, this area is Read Only! +438 change.c 1|Select: 1) Fullscreen editer +439 offline.c |Offline Reader Upload +440 offline.c |Invalid packet received +441 offline.c |Unknown compression type +442 offline.c file.c |Archiver not available +443 offline.c |Unknown type mailpacket +444 offline.c |BlueWave Offline download +445 offline.c |Preparing packet +446 offline.c |Packing with +447 offline.c |Download failed +448 offline.c |Download successfull +449 offline.c |Updating lastread pointers +450 offline.c |Processing BlueWave reply packet +451 offline.c |ERROR in packet +452 offline.c |Import messages +453 offline.c mail.c |No Write access to area +454 offline.c |Messages imported +455 offline.c |Processing Offline Configuration +456 offline.c |Message areas selected +457 offline.c |Processing file requests +458 offline.c |QWK Offline Download +459 offline.c |Processing QWK reply packet +460 offline.c |ASCII Offline Download +461 mail.c YN|Crash [y/N]: +462 mail.c YN|Warning: node is not CM, send immediate [y/N]: +463 mail.c YN|Attach file [y/N]: +464 mail.c |File +465 mail.c |will be attached +466 mail.c |File not within +467 email.c |mailbox - Incoming and outgoing email +468 email.c |archive - Archive of your email +469 email.c |trash - Trashcan, your old email +470 email.c |Area # +471 funcs.c |minutes. +472 change.c |Fullscreen Editor shortcut keys set to Emacs +473 change.c |Fullscreen Editor shortcut keys set to Wordstar +474 newuser.c change.c |Your address, maximum 3 lines (only visible for the sysop): +475 newuser.c change.c |You need to enter your address here +476 change.c |Old address: +477 mail.c |Use your alias ( +478 mail.c YN|) to post this message [Y/n]: +479 mail.c |No more areas with unread messages diff --git a/lang/Makefile b/lang/Makefile new file mode 100644 index 00000000..ca71378f --- /dev/null +++ b/lang/Makefile @@ -0,0 +1,48 @@ +# Makefile for MBSE BBS under Linux +# Copyright (c) 1998, 2000 by M. Broek. +# $Id: Makefile,v 1.10 2007/02/17 12:14:20 mbse Exp $ + +include ../Makefile.global + +OTHER = Makefile README Language.xref germandu.txt +SDAT = source.en source.nl source.es source.gl source.de source.fr source.zh +LDAT = language.en language.nl language.es language.gl language.de language.fr language.zh + + +all: ${LDAT} + +clean: + rm -f core filelist Makefile.bak language.* + +install: ${LDAT} + ${INSTALL} -c -o ${OWNER} -g ${GROUP} -m 0444 ${LDAT} ${INTDIR} + +language.en: source.en + ../mbutils/mblang language.en source.en + +language.nl: source.nl + ../mbutils/mblang language.nl source.nl + +language.es: source.es + ../mbutils/mblang language.es source.es + +language.gl: source.gl + ../mbutils/mblang language.gl source.gl + +language.de: source.de + ../mbutils/mblang language.de source.de + +language.fr: source.fr + ../mbutils/mblang language.fr source.fr + +language.zh: source.zh + ../mbutils/mblang language.zh source.zh + + +filelist: Makefile + BASE=`pwd`; \ + BASE=`basename $${BASE}`; \ + (for f in ${SDAT} ${OTHER} ;do echo ${PACKAGE}-${VERSION}/$${BASE}/$$f; done) >filelist + +depend: + diff --git a/lang/README b/lang/README new file mode 100644 index 00000000..ba8c68e6 --- /dev/null +++ b/lang/README @@ -0,0 +1,43 @@ +$Id: README,v 1.5 2007/02/17 12:14:20 mbse Exp $ + + LANGUAGE SOURCES FOR MBSE BBS. + ============================== + + +This directory contains the language sources for MBSE BBS. The file +Language.xref is only a reference file with linenumbers and source +references. The files source.en, source.nl and source.de are the +real language sources. The resulting files language.nl, language.en +and language.de are placed in the ~/share/int directory where the bbs +will expect them to be. + +If you make your own language files, use Language.xref as a guide. +The syntax for each language line is: + +KEYS|Language line + +The keys are the keys that the users must press for the right response. +Order is important. The "|" character is a seperator, the rest of the +language line is the line shown to the user. Trailing spaces are important! + +If you do create language sources then I would like that you make them +public available and send them to me so I can include them in the +source distribution. + +Michiel. + + +Current language maintainters: + +en Michiel Broek +nl Michiel Broek +es Redy Rodriguez +gl Redy Rodriguez +de Harald Wuensch +germandu Malte Tychsen <2:240/9350@fidonet> (alternative german). +fr Francois Thunus <2:270/24@fidonet> + +If you want to use the germandu language instead of the default german +language then run "mblang germandu.txt language.de" and install the +file laguage.de in /opt/mbse/share/int. + diff --git a/lang/germandu.txt b/lang/germandu.txt new file mode 100644 index 00000000..00e33905 --- /dev/null +++ b/lang/germandu.txt @@ -0,0 +1,480 @@ +|Bitte Vor- und Nachnamen eingeben: +|Bitte gib Deinen Nachnamen ein: +|Abmelden des Benutzers ... +|Pruefen der Datei ... +JN|Hast Du Deinen Namen korrekt eingegeben? [a/ein] +|Bitte melde Dich nun mit folgendem Namen erneut an: +|Dies ist ein PRIVATES System. Gib zum Verlassen "off" ein +|Gib bitte die Nummer ein - beenden mit : +|Passwort: +|Die maximale Anzahl von Login-Versuchen wurde ueberschritten ... +|Entweder Dein NAME oder Dein PASSWORT wurden falsch eingegeben +HR|Export in ome oder ules Verzeichnis: +|Message exportiert in das Rules Verzeichnis als +|Keine Rules gefunden fuer diese Area +|Keine Berechtigung zum loeschen der Message +|Offline Reader: Erweiterte Info _AN_gestellt +|Offline Reader: Erweiterte Info _AUS_gestellt +|Dies ist keine Textdatei. +|Du darfst nur +|mal gleichzeitig eingewaehlt sein +|Dieses Program ist von jemand anderem in Benutzung, versuchs spaeter nochmal +JN| Ist dies richtig richtig? [a/ein]: +|Could not parse +|Waehle Deinen bevorzugten Zeichensatz +|Waehle Zeichensatz (beenden mit ): +|Zeichensatz ist jetzt: +YN|Check for new mail at login [Y/n]: +YN|Check for new files at login [Y/n]: +|Enter a short reason for chat +|The Sysop cannot use the bbs to chat! Use mbmon to chat +|Sorry, the chatserver is not available +|line +| +| +| +| +| +|MBSE Bulletin Board System - Anlegen eines neuen Benutzerkontos +|Diesen Namen verwenden: +|Bitte das neue Passwort eingeben : +|Bitte das neue Passwort wiederholen : +|Die Passwoerter stimmen nicht ueberein! Bitte wiederholen. +|Dein Passwort muss mindestens +|Zeichen enthalten! Bitte wiederholen. +| +|Bitte gib Deine Telefonnummer an: +|Die Mitteilung wurde in Dein privates Verzeichnis gespeichert als: +|Bitte gib Deine vollstaendige Telefonnummer an: +|Bitte gib Deine Daten-Telefonnummer an: +|Bitte gib Deinen Ihren Wohnort an: +|Der Name des Wohnortes ist zu kurz +MW|Bist Du aennlich oder eiblich ? : +|Maennlich +|Weiblich +|Bitte druecke "M" oder "W" +|Unbekannt +|Bitte gib Dein Geburtsdatum an [TT-MM-JJJJ]: +|Du hast versehentlich dieses Jahr eingegeben. +|Bitte verwende das vorgegebene Datumsformat +|*** Der Sysop beginnt den Chat *** +|*** Der Sysop hat den Chat beendet *** +JN=|Weiter (a/ein/<=>) +JN|Moechtest Du Menues mit "Hot-Keys" verwenden? [a/ein]: +|Bitte druecke "J" oder "N" +| +|Keine(r) +|Mitteilungsbereiche fuer den Offline Reader markieren +|Dein Benutzeraccount wurde wie folgt eingerichtet: +|Login Name : +|Passwort : +| * * * * * +|Die Registrierung des neuen Benutzeraccounts ist abgeschlossen. +|Unbekannt +|Bisheriger Ort: +|Bitte gib eine laengere Bezeichung fuer den Ort ein (min +| +| +|Die Mitteilung existiert nicht +|System-Mitteilungen sind jetzt EIN +|System-Mitteilungen sind jetzt AUS +| +| +|Private Mitteilung - Du bist weder Absender noch Empfaenger +|Bitte verwende das vorgegebene Datumsformat +|Logins heute bis +|# User Name Leitg. TimeOn Calls Ort +|Can't open archiver file. +|Select your preferred archiver +|Select Archiver (Enter to Quit): +|Archiver now set to: +|Bitte gib Deine Kombination ein. +|1. Zahl: +|Bitte versuche es erneut! Verwende Zahlen groesser 0 und kleiner +|2. Zahl: +|3. Zahl: +| Links: +|Rechts: +JN|Moechtest Du den Safe mit dieser Kombination oeffnen [a/ein]: +|Du hast folgendes gewonnen... +|Du hast den Safe leider nicht geoeffnet ! +|Der Safe Code war: +JN|Moechtest Du es noch einmal versuchen ? [a/ein]: +JN|Moechtest Du den Safe oeffnen ? [a/ein]: +|DER SAFE IST ZUR ZEIT VERSCHLOSSEN +|hat den Safe geknackt. +|Der Safe bleibt verschlossen bis der Sysop den Preis vergeben hat.. +|Maximale Versuche pro Tag ueberschritten ! +|Message fuer das "Nextuser Door" +|Die VON, AN und Betreff Felder sind optional. +| Von: +| An: +|Betreff: +| Bitte bis zu 10 Zeilen mit je 74 Zeichen eingeben +|Verfuegbare Funktionen: +LEBAS|isten, rsetze Text, earbeite Zeile, bbrechen, peichern +|Auswaehlen: +|Abbruch... +|Rueckkehr zu +|Welche Zeile bearbeiten: +|Diese Zeile existiert nicht. +|Bisheriges Passwort: +|Neues Password: +|Neues Passwort wiederholen: +|Passwort-Eingaben stimmen nicht ueberein ! +|Passwort-Aenderung erfolgreich +|Bisheriges Passwort wurde nicht richtig eingegeben ! +|Benutzerliste +|Suchzeichenkette eingeben oder fuer alle Benutzer: +|Name Ort Zuletzt hier Logins +|Die Suchzeichenkette wurde nicht gefunden ... +|Zeitlimit erreicht ... Verbindung wird getrennt! +JN=M|Weiter (a/ein/<=>) arkieren +|Suche +|mit +|Zeit Statistik fuer +|on +|Aktuelle Zeit : +|Aktuelles Datum : +|Verbindungszeit : +|Zeit fuer Heute : +|Verbleibende Zeit Heute : +|Taegl. Zeitlimit : +|Sie haben +JN|Mitteilungen, moechtest Du jetzt Deine Post lesen? [a/ein]: +|Es liegen keine neuen Mitteilungen fuer Dich vor. +|Hotkeys sind jetzt EIN +|Hotkeys sind jetzt AUS +|Ein +|Aus +|Dieser Benutzername existiert bereits +|Suchen nach persoenlichen Mitteilungen, bitte warten ... +|MBSE BBS Chat +|Der SysOp spricht gerade mit einem anderen User. +|Bitte versuche es in einigen Minuten nochmals ... +|Ihre maximale Anzahl von Sysop-Anrufen ist erreicht. +|Sysop ist zurzeit nicht erreichbar. Bitte hinterlasse eine Mitteilung... +|Versenden einer Mitteilung im Bereich: +|Von : +|An : +|Suche Adressaten ... +|Adressat nicht gefunden. Bitte nochmals eingeben oder beenden mit +|Betreff : +JN|Mitteilung verwerfen [a/ein] ?: +JN|Privat [a/ein]: +|Schreibe die Mitteilung jetzt. Beenden: eine leere Zeile eingeben +|Maximal 60 Zeilen, 73 Zeichen pro Zeile +|Maximale Zeilenanzahl erreicht +|Verfuegbare Funktionen: (Aktuelle Mitteilung: +|Zeilen) +|A - Anzeigen S - Speichern W - Weiterschreiben +|B - Beenden L - Zeile loeschen E - Zeile einfuegen +|T - Text bearbeiten X - Zeile bearbeiten R - Zeile ersetzen +ASWBLETXRZ|Z - Zeile zentrieren +|Auswaehlen +|Fortfahren +|Loeschen +|Loeschen ab Zeile +|Abgebrochen. +|Bitte gib eine Zahl ein im Bereich +|Loeschen bis Zeile +|Bearbeiten +|Gib die zu bearbeitende Zeile an +|Einfuegen +|Gib die Zeile an, vor der eingefuegt werden soll +|Listen +|Gib die zu ersetzende Zeile an +|Zeile: +|Unveraendert. +|Zeile jetzt: +|Beenden +JN|Bist Du sicher [a/ein]: +|Mitteilung wurde verworfen. +|Nein +|Text bearbeiten +|Gib die zu bearbeitende Zeile an +|Gib den zu ersetzenden Text an : +|Ersatztext : +|Zeile jetzt: +|Speichern +|Moeglicherweise Virus entdeckt ! +|Ok +|Auspacken des Archivs +|Mitteilung speichern +|Gib die zu zentrierende Zeile an +|Die Zeile kann nicht zentriert werden, da sie maximale Laenge hat. +|Es liegen keine Mitteilungen in diesem Bereich vor. +|Datum : +JN=|Weiter (a/ein/<=>/Bereich-Nr.): +|An : +|Von : +|Betreff : +|Naechste Antwort: +|Antwort auf: +|Mitteilungen in +WNLAUEHX|iederh. aechste etzte ntwort ne loescen nde eport +|Wiederh. aechste etzte ntwort ne loescen nde eport +|Naechste +|FEHLER +ANE|ntwort, aechste, nde: +|Enter um Betreff zu uebernehmen. +|# Von An Betreff +|Bereich +|enthaelt +|Mitteilung(en). +|Eingabe einer Zahl von +|Mitteilung Nummer [ +|Nr. Typ Beschreibung Insges. Pers. +|Thema +|Name des Bereichs eingeben oder ? fuer eine Liste: +|Bereich Nr. Anz. Beschreibung +|Loesche Mitteilung +| Mitteilungsbereiche +|Auswahl Bereich: +|Die angegebene Bereichsnummer existiert nicht. +|Das Passwort ist ungueltig +|Das Passwort ist korrekt +|Du hast nicht ausreichend Rechte um diesen Mitteilungsbereich aufzulisten +|Die Datei-Datenbank fuer diesen Bereich kann nicht geoeffnet werden +|Heraufgeladen von: +|G E L O E S C H T +| +JN|Adresse unbekannt, dennoch fortfahren [a/ein]: +|Dateien insgesamt: +|FATAL: die Datenbank der Dateibereiche kann nicht geoeffnet werden +|Du hast nicht ausreichend Rechte zum Herunterladen aus diesem Bereich +|Bitte den Dateinamen angeben: +|Kein Dateiname angegeben, Abbruch. +|Ungueltiger Dateiname! +|Dieses Datei ist fuer das Herunterladen leider nicht verfuegbar +|Du hast +|zusaetzliche Download-KBytes. +|Deine Restzeit reicht nicht fuer das Herunterladen dieser Datei. +|Dein Download-Limit reicht nicht fuer das Herunterladen " +|Du musst etwas heraufladen bevor Du herunterladen kannst. +|Kilobytes verfuegbar: +|Pruefe die markierten Downloads, bitte warten ... +|Mitteilungsbereiche fuer den "Offline Reader" abwaehlen +|FILEID.DIZ gefunden in +|Es sind keine Dateien zum Herunterladen markiert. +| +|Du hast folgende Bereiche fuer den "Offline Reader" markiert: +|Dateiname Groesse Datum +|Protokoll: Protokolldatei kann nicht geoeffnet werden. +|Auswahl des bevorzugten Protokolls +|Bitte Protokoll auswaehlen (frei lassen um abzubrechen): +|Ungueltige Auswahl, bitte nochmals eingeben! +|Standardprotokoll ist jetzt: +|Bitte den Suchbegriff eingeben: +|Dateisuche nach Schluesselwort +|Akzeptiert Platzhalter wie: *.zip, *.gz, *.* +| *.zip entspricht .zip +|Gib den zu suchenden Dateinamen an: +|Dateisuche nach Dateinamen +JN|Neue Dateien seit Deinem letzten Login suchen [a/ein]: +|Gib das Suchdatum an [TT-MM-JJJJ]: +|Dateisuche nach Datum +| +|Mitteilungen fuer "Offline Reader" herunterladen +|Deine Zugriffsberechtigung reicht nicht fuer das Heraufladen. +|Dein Plattenplatz reicht nicht fuer das Kopieren der Datei +|Dateien( +|Bytes) zum Herunterladen markiert. +|Diese Datei ist schon vorhanden +|Bitte starte das Heraufladen jetzt ... +|Folgendes konnte nicht heraufgeladen werden: +JN|Moechtest Du das Heraufgeladene mit einem Passwort schuetzen ? [a/ein]: +|Beachte: Passwoerter sind "CaSe SeNsITiVe!" +|Bitte gib die Beschreibung der Datei ein +|Danke! Die Zeit fuer das Heraufladen wurde Dir gutgeschrieben. +|Kopieren beginnen: +|Das Verzeichnis kann nicht aufgelistet werden: +|Home-Verzeichnis von +|Gib den Dateinamen zum Loeschen an: +|Versteckte Dateien koennen nicht geloescht werden ... +|Datei kann nicht geloescht werden ... +|Ungueltiger Dateiname, bitte erneut eingeben ... +|Die Datei existiert nicht, bitte erneut eingeben ... +|Forum Beschreibung Msgs. Pers. +| Dateibereiche +|Passwort fuer den Dateibereich: +|BBS hinzufuegen +|Name des BBS: +|Eingabe erforderlich ... +|Telefon-Nummer: +|Name des Sysop: +|BBS Software: +|Speicherplatz (GigaByte): +|Zugangsgeschwindigkeiten: +JN|Moechtest Du eine erweiterte Beschreibung hinzufuegen ? [a/ein]: +|Bitte geben Sie eine Beschreibung ein fuer +|BBS Liste +|# BBS Name Nummer Software GigaByte Speed +|Nach BBS suchen +|Bitte 3 Buchstaben des zu suchenden Namens eingeben: +|Mindestens 3 Zeichen muessen eingegeben werden... +JN|BBS-Details anzeigen ? [a/ein]: +|BBS in der Liste kann nicht gefunden werden ... +|BBS-Details anzeigen +|Bitte eine aufzulistende Nummer angeben: +|Datensatz nicht vorhanden +| Satz : +| BBS Name : +| Nummer : +| Software : +| GigaBytes : +| Speeds : +| Name des Sysop : +| Offen : +| Eintrag vom : +| Eintrag von : +|BBS loeschen +|Bitte die zu loeschende Nummer eingeben: +|Datensatz +|wurde nicht von Dir angelegt. +|ist schon zum Loeschen markiert +|zum Loeschen markiert +|Der Sysop wird die Liste endgueltig loeschen +|wenn Datensaetze zum Loeschen markiert sind. +|Mitteilungen insgesamt: +|Unbekannter Menubefehl! +|Speichern... +|MBSE BBS "Einzeiler" werden zufallsgesteuert im Hauptmenue erscheinen. +|Obszoene oder unanstaendige "Einzeiler" werden geloescht!! +|Bitte gib Deinen "Einzeiler" ein, max. 75 Zeichen. +|"Einzeiler" hinzugefuegt +| # A Datum User Beschreibung +| # Beschreibung +|Bitte aufzulistende Nummer eingeben: +|Verbunden von +|Datei(en) : +|Groesse : +|Protokoll : +|Download-Zaehler werden aktualisiert, bitte warten ... +|Fehlgeschlagen! +|Bytes +| # Area Aktiv Datei Gr. Kosten +|Ja +|Nein +UA|Aufgelistete mschalten, alle bwaehlen, um fortzufahren: +|Datei-Nummer eingeben, 1.. +|Markiert: +|Zurzeit sind keine Dateien markiert. +|Replace +|BBS wird geladen, bitte warten ... +|Neue oder geloeschte mail areas bei +|Area State Typ Beschreibung +|Check auf neue Mail ist jetzt AN +|Check auf neue Mail ist jetzt AUS +|Datei loeschen: +JN|Bist Du sicher? [a/ein]: +|Check auf neue Dateien ist jetzt AN +|Check auf neue Dateien ist jetzt AUS +|Du verwendest jetzt den +12|Auswahl: <1> Vollbild-Editor, <3> Externer Editor +|Es liegen keine Mitteilungen zum Herunterladen vor! +|Weiter mit ... +|Zentrieren +|Zu viele Mitteilungen. Nur die ersten +|Waehle Deine bevorzugte Sprache aus +|Sprache auswaehlen ( um abzubrechen): +|Sprache ist jetzt eingestellt auf: +|Das System wird jetzt einem Unix-Account fuer Dich anlegen +|Dein Unix-Account wurde angelegt, bitte verwenden ihn ab jetzt zum Login. +|Bitte gib einen Anmeldenamen ein (Max. 8 Zeichen) +|Beispiel: "Gerhard Schroeder", login = gschroed +|Dein gewuenschter Anmeldename: +|Dieser Anmeldename existiert bereits, bitte waehle einen anderen. +|Zeilen- +|Vollbild- +|Externen +|Editor +|Neu +|Local +|Netmail +|Echomail +|News +|E-Mail +|Del +|Jan +|Feb +|Mar +|Apr +|Mai +|Jun +|Jul +|Aug +|Sep +|Okt +|Nov +|Dez +|Autologout: Verbindung wird wegen Zeitablauf getrennt. +|Wird gepackt! +|Gib den Alias ein ( fuer "keinen"): +|Du kannst das BBS ab jetzt benutzen +|Benutzer On-Line in +|Name Leitg. Status Location +|"Nicht stoeren" ist jetzt AUS +|"Nicht stoeren" ist jetzt AN +|Im Menue +|Herunterladen +|Heraufladen +|Mitteilungen +|Ext. Programm +|Im Chat +|Dateibereich +JN|Moechtest Du diese Mitteilungen herunterladen [a/ein]? +|Bank Programm +|Sich. ext. Programm +|Liste Online +|Offline Reader +|Name an den die Nachricht geschickt werden soll: +|Der angegebene Benutzer ist nicht online: +|moechte nicht gestoert werden +|Bitte gib die Nachricht ein (Max 76 Zeichen) +|** Nachricht ** von +|Dein Passwort ist abgelaufen, neues Passwort: +|Drueck um fortzufahren +|Kein Senden moeglich, diese Area ist "Nur lesen"! +1|Auswahl: <1> Vollbild-Editor +|"Offline Reader" Paket heraufladen +|Kein oder fehlerhaftes Paket erhalten +|Unbekannter Datenkompressionstyp +|Archivprogramm nicht verfuegbar +|Unbekanter Typ von Mailpaket +|Herunterladen von BlueWave Offline +|Zusammenstellen des Pakets +|Packen mit +|Herunterladen fehlgeschlagen +|Herunterladen erfolgreich +|Aktualisieren der Lesezeichen +|Verarbeiten des BlueWave Antwort-Pakets +|Fehler im Paket +|Import der Mitteilungen +|Lein Schreibzugriff auf Area +|Mitteilungen importiert +|Verarbeiten der Offline Konfiguration +|Mitteilungsbereiche ausgewaehlt +|Verarbeiten der Datei-Anforderungen +|Herunterladen von QWK Offline +|Verarbeiten des QWK Antwort-Pakets +|Herunterladen ASCII Offline +JN|Crash-Mail [a/ein]: +JN|Warnung: Station ist nicht CM, sofort senden [a/ein]: +JN|Datei anhaengen [a/ein]: +|Datei +|wird angehaengt +|Datei nicht in +|mailbox - ein- und ausgehende E-mail +|archiv - Archiv Ihrer E-mails +|trash - Papierkorb, Ihre alte E-mail +|Bereich # +|Minuten. +|Tastenbelegung Vollbild-Editor im "Emacs" - Stil +|Tastenbelegung Vollbild-Editor im "Wordstar" - Stil +|Deine Adresse (max. 3 Zeilen, nur fuer den Sysop sichtbar): +|Du musst Deine Adresse hier angeben +|Alte Adresse: +|Moechtest Du Deinen Aliasnamen ( +JN|) als Absender verwenden [a/ein] +|Keine weitere Bereiche mit ungelesenen Nachrichten diff --git a/lang/source.de b/lang/source.de new file mode 100644 index 00000000..f5e5dec3 --- /dev/null +++ b/lang/source.de @@ -0,0 +1,480 @@ +|Bitte geben Sie Ihren Vor- und Nachnamen ein: +|Bitte geben Sie Ihren Nachnamen ein: +|Abmelden des Benutzers ... +|Pruefen der Datei ... +JN|Haben Sie Ihren Namen korrekt eingegeben? [J/n] +|Bitte melden Sie sich nun mit folgendem Namen erneut an: +|Dies ist ein PRIVATES System. Geben Sie zum Verlassen "off" ein +|Geben Sie bitte die Nummer ein - beenden mit : +|Passwort: +|Die maximale Anzahl von Login-Versuchen wurde ueberschritten ... +|Entweder Ihr NAME oder Ihr PASSWORT wurden falsch eingegeben +HR|Export in (H)ome oder (R)egeln Verzeichnis: +|Message exportiert in das Regeln Verzeichnis als +|Keine Regeln fuer diesen Bereich gefunden +|Keine Berechtigung zum Loeschen der Mitteilung +|Offline Reader: Erweiterte Info ANgestellt +|Offline Reader: Erweiterte Info AUSgestellt +|Dies ist keine reine Textdatei. +|Sie duerfen nur +|Verbindungen gleichzeitig belegen +|Ein anderer Benutzer verwendet das externe Programm. Bitte spaeter versuchen. +JN| Ist das korrekt [j/N]: +|Nicht erkannt: +|Bitte waehlen Sie Ihren bevorzugten Zeichensatz +|Auswahl des Zeichensatzes (Beenden: RETURN): +|Der Default-Zeichensatz wurde eingestellt auf: +JN|Beim Login nach neuen Mitteilungen suchen [J/n]: +JN|Beim Login nach neuen Dateien suchen [J/n]: +|Geben Sie bitte eine kurze Betreff-Zeile an +|Der Sysop kann MBSEBBS nicht zum Chat benutzen. Verwenden Sie "mbmon". +|Der Chat-Server ist zurzeit leider nicht verfuegbar +|Zeile +| +| +| +| +| +|MBSE Bulletin Board System - Anlegen eines neuen Benutzerkontos +|Diesen Namen verwenden: +|Bitte das neue Passwort eingeben : +|Bitte das neue Passwort wiederholen : +|Die Passwoerter stimmen nicht ueberein! Bitte wiederholen. +|Ihr Passwort muss mindestens +|Zeichen enthalten! Bitte wiederholen. +| +|Bitte geben Sie Ihre Telefonnummer an: +|Die Mitteilung wurde in Ihr privates Verzeichnis gespeichert als: +|Bitte geben Sie eine vollstaendige Telefonnummer an: +|Bitte geben Sie Ihre Daten-Telefonnummer an: +|Bitte geben Sie Ihren Wohnort an: +|Der Name des Wohnortes ist zu kurz +MW|Sind Sie (m)aennlich oder (w)eiblich ? : +|Maennlich +|Weiblich +|Bitte druecken Sie "M" oder "W" +|Unbekannt +|Bitte geben Sie Ihr Geburtsdatum an (TT-MM-JJJJ): +|Sie haben versehentlich -dieses Jahr- eingegeben. +|Bitte verwenden Sie das vorgegebene Datumsformat +|*** Der Sysop beginnt den Online-Dialog *** +|*** Der Sysop hat den Online-Dialog beendet *** +JN=|Weiter (J/n/=) +JN|Moechten Sie in den Menues "Hot-Keys" verwenden? [J/n]: +|Bitte druecken Sie J oder N +| +|Keine(r) +|Mitteilungsbereiche fuer den Offline Reader markieren +|Ihr Benutzeraccount wurde wie folgt eingerichtet: +|Login Name : +|Passwort : +| * * * * * +|Die Einrichtung des neuen Benutzeraccounts ist abgeschlossen. +|Unbekannt +|Bisheriger Ort: +|Bitte geben Sie eine laengere Bezeichung fuer den Ort ein (min +| +| +|Die Mitteilung existiert nicht +|System-Mitteilungen sind jetzt EIN +|System-Mitteilungen sind jetzt AUS +| +| +|Private Mitteilung - Sie sind weder Absender noch Empfaenger +|Bitte verwenden Sie das vorgegebene Datumsformat +|Logins heute bis +|# Benutzername Leitg. TimeOn Anrufe Ort +|Can't open archiver file. +|Select your preferred archiver +|Select Archiver (Enter to Quit): +|Archiver now set to: +|Bitte geben Sie drei Kombinationen ein. +|1. Zahl: +|Bitte versuchen Sie es erneut! Verwenden Sie Zahlen groesser 0 und kleiner +|2. Zahl: +|3. Zahl: +| Links: +|Rechts: +JN|Moechten Sie den Safe mit dieser Kombination oeffnen [J/n]: +|Sie haben folgendes gewonnen... +|Sie haben den Safe leider nicht geoeffnet ! +|Der Safe Code war: +JN|Moechten Sie es noch einmal versuchen ? [J/n]: +JN|Moechten Sie den Safe oeffnen ? [J/n]: +|DER SAFE IST ZUR ZEIT VERSCHLOSSEN +|hat den Safe geknackt. +|Der Safe bleibt verschlossen bis der Sysop den Preis vergeben hat.. +|Maximale Versuche pro Tag ueberschritten ! +|Mitteilungs-Signatur bearbeiten +|Die VON, AN und Betreff Felder sind optional. +| Von: +| An: +|Betreff: +| Bitte bis zu 10 Zeilen mit je 74 Zeichen eingeben +|Verfuegbare Funktionen: +LEBAS|(L)isten, (E)rsetze Text, (B)earbeite Zeile, (A)bbrechen, (S)peichern +|Auswaehlen: +|Abbruch... +|Rueckkehr zu +|Welche Zeile bearbeiten: +|Diese Zeile existiert nicht. +|Bisheriges Passwort: +|Neues Password: +|Neues Passwort wiederholen: +|Die Passwort-Eingaben stimmen nicht ueberein ! +|Die Passwort-Aenderung erfolgreich +|Das bisherige Passwort wurde nicht richtig eingegeben ! +|Benutzerliste +|Suchzeichenkette eingeben oder (Enter) fuer alle Benutzer: +|Name Ort Zuletzt hier Logins +|Die Suchzeichenkette wurde nicht gefunden ... +|Zeitlimit erreicht ... Verbindung wird getrennt! +JN=M|Weiter (J/n/=) M=Markieren +|Suche +|mit +|Zeit Statistik fuer +|on +|Aktuelle Zeit : +|Aktuelles Datum : +|Verbindungszeit : +|Zeit fuer heute : +|Verbleibende Zeit heute : +|Taegl. Zeitlimit : +|Sie haben +JN|Mitteilungen, moechten Sie jetzt Ihre Post lesen? [J/n]: +|Es liegen keine neuen Mitteilungen fuer Sie vor. +|Hot-Keys sind jetzt EIN +|Hot-Keys sind jetzt AUS +|Ein +|Aus +|Dieser Benutzername ist bereits anderweitig vergeben +|Suchen nach persoenlichen Mitteilungen, bitte warten ... +| MBSE BBS Online Dialog +|Der SysOp ist gerade mit einem anderen Benutzer im Online-Dialog. +|Bitte versuchen Sie es in einigen Minuten nochmals ... +|Ihre maximale Anzahl von Sysop-Anrufen ist erreicht. +|Sysop ist zurzeit nicht erreichbar. Bitte hinterlassen Sie eine Mitteilung... +|Versenden einer Mitteilung im Bereich: +|Von : +|An : +|Suche Adressaten ... +|Adressat nicht gefunden. Bitte nochmals eingeben oder beenden mit +|Betreff : +JN|Mitteilung verwerfen [j/N] ?: +JN|Privat [j/N]: +|Schreiben Sie nun die Mitteilung. Beenden: eine leere Zeile eingeben +|Maximal 60 Zeilen, 73 Zeichen pro Zeile +|Maximale Zeilenanzahl erreicht +|Verfuegbare Funktionen: (Aktuelle Mitteilung: +|Zeilen) +|A - Anzeigen S - Speichern W - Weiterschreiben +|B - Beenden L - Zeile loeschen E - Zeile einfuegen +|T - Text bearbeiten X - Zeile bearbeiten R - Zeile ersetzen +ASWBLETXRZ|Z - Zeile zentrieren +|Auswaehlen +|Fortfahren +|Loeschen +|Loeschen ab Zeile +|Abgebrochen. +|Bitte geben Sie eine Zahl ein im Bereich +|Loeschen bis Zeile +|Bearbeiten +|Geben Sie die Nummer der zu bearbeitenden Zeile an +|Einfuegen +|Geben Sie Nummer der Zeile an, vor der eingefuegt werden soll +|Auflisten +|Geben Sie die Nummer der zu ersetzenden Zeile an +|Zeile: +|Unveraendert. +|Zeile jetzt: +|Beenden +JN|Sind Sie sicher [j/N]: +|Mitteilung wurde verworfen. +|Nein +|Text bearbeiten +|Geben Sie die Nummer der zu bearbeitenden Zeile an +|Geben Sie den zu ersetzenden Text an : +|Ersatztext : +|Zeile jetzt: +|Speichern +|Ein moeglicher Computer-Virus wurde gefunden ! +|Ok +|Auspacken des Archivs +|Mitteilung speichern +|Geben Sie die zu zentrierende Zeile an +|Die Zeile kann nicht zentriert werden, da sie maximale Laenge hat. +|Es liegen keine Mitteilungen in diesem Bereich vor. +|Datum : +JN=|Weiter (J/n/=/Bereich-Nr.): +|An : +|Von : +|Betreff : +|Naechste Antwort: +|Antwort auf: +|Mitteilungen in +WNLAUEHX|Wiederh. Naechste Letzte Antwort neU loescHen Ende eXport +|Wiederh. Naechste Letzte Antwort neU loescHen Ende eXport +|Naechste +|FEHLER +ANE|(A)ntwort, (N)aechste, (E)nde: +|Enter um Betreff zu uebernehmen. +|# Von An Betreff +|Bereich +|enthaelt +|Mitteilung(en). +|Eingabe einer Zahl von +|Mitteilung Nummer [ +|Nr. Typ Beschreibung Insges. Pers. +|Thema +|Name des Bereichs eingeben oder ? fuer eine Liste: +|Bereich Nr. Anz. Beschreibung +|Loesche Mitteilung +| Mitteilungsbereiche +|Auswahl Bereich: +|Die angegebene Bereichsnummer existiert nicht. +|Das Passwort ist ungueltig +|Das Passwort ist korrekt +|Sie haben nicht ausreichend Rechte um diesen Mitteilungsbereich aufzulisten +|Die Datei-Datenbank fuer diesen Bereich kann nicht geoeffnet werden +|Heraufgeladen von: +|G E L O E S C H T +| +JN|Adresse unbekannt, dennoch fortfahren [j/N]: +|Dateien insgesamt: +|Systemfehler: die Datenbank der Dateibereiche kann nicht geoeffnet werden +|Sie haben nicht ausreichend Rechte zum Herunterladen aus diesem Bereich +|Bitte den Dateinamen angeben: +|Kein Dateiname angegeben, Abbruch. +|Ungueltiger Dateiname ! +|Diese Datei ist fuer das Herunterladen leider nicht verfuegbar +|Sie haben +|zusaetzliche Download-KBytes. +|Ihre Restzeit reicht nicht um diese Datei herunterzuladen. +|Ihr Download-Limit reicht nicht fuer das Herunterladen " +|Sie muessen etwas heraufladen bevor Sie herunterladen koennen. +|Kilobytes verfuegbar: +|Pruefe die markierten Downloads, bitte warten ... +|Mitteilungsbereiche fuer den "Offline Reader" abwaehlen +|FILEID.DIZ gefunden in +|Es sind keine Dateien zum Herunterladen markiert. +| +|Sie haben folgende Bereiche fuer den "Offline Reader" markiert: +|Dateiname Groesse Datum +|Protokoll: Protokolldatei kann nicht geoeffnet werden +|Auswahl des bevorzugten Protokolls +|Bitte Protokoll auswaehlen (frei lassen um abzubrechen): +|Ungueltige Auswahl, bitte nochmals eingeben! +|Standardprotokoll ist jetzt: +|Bitte den Suchbegriff eingeben: +|Dateisuche nach Schluesselwort +|Akzeptiert Platzhalter wie: *.zip, *.gz, *.* +| *.zip entspricht .zip +|Geben Sie den zu suchenden Dateinamen an: +|Dateisuche nach Dateinamen +JN|Neue Dateien seit Ihrem letzten Login suchen [J/n]: +|Geben Sie das Suchdatum an [TT-MM-JJJJ]: +|Dateisuche nach Datum +| +|Mitteilungen fuer "Offline Reader" herunterladen +|Ihre Zugriffsberechtigung reicht nicht fuer das Heraufladen. +|Ihr Plattenplatz reicht nicht fuer das Kopieren der Datei +|Dateien( +|Bytes) zum Herunterladen markiert. +|Diese Datei ist schon vorhanden +|Bitte starten Sie das Heraufladen jetzt ... +|Folgendes konnte nicht heraufgeladen werden: +JN|Moechten Sie das Heraufgeladene mit einem Passwort schuetzen ? [j/N]: +|Beachten Sie: Passwoerter sind "CaSe SeNsITiVe!" +|Bitte geben Sie die Beschreibung der Datei ein +|Danke! Die Zeit fuer das Heraufladen wurde Ihnen gutgeschrieben. +|Kopieren beginnen: +|Das Verzeichnis kann nicht aufgelistet werden: +|Home-Verzeichnis von +|Geben Sie den Dateinamen zum Loeschen an: +|Versteckte Dateien koennen nicht geloescht werden ... +|Datei kann nicht geloescht werden ... +|Ungueltiger Dateiname, bitte erneut eingeben ... +|Die Datei existiert nicht, bitte erneut eingeben ... +|Forum Beschreibung Msgs. Pers. +| Dateibereiche +|Passwort fuer den Dateibereich: +|BBS hinzufuegen +|Name des BBS: +|Eingabe erforderlich ... +|Telefon-Nummer: +|Name des Sysop: +|BBS Software: +|Speicherplatz (GigaByte): +|Zugangsgeschwindigkeiten: +JN|Moechten Sie eine erweiterte Beschreibung hinzufuegen ? [J/n]: +|Bitte geben Sie eine Beschreibung ein fuer +|BBS Liste +|# BBS Name Nummer Software GigaByte Speed +|Nach BBS suchen +|Bitte 3 Buchstaben des zu suchenden Namens eingeben: +|Mindestens 3 Zeichen muessen eingegeben werden... +JN|BBS-Details anzeigen ? [J/n]: +|BBS in der Liste kann nicht gefunden werden ... +|BBS-Details anzeigen +|Bitte eine aufzulistende Nummer angeben: +|Datensatz nicht vorhanden +| Satz : +| BBS Name : +| Nummer : +| Software : +| GigaBytes : +| Speeds : +| Name des Sysop : +| Offen : +| Eintrag vom : +| Eintrag von : +|BBS loeschen +|Bitte die zu loeschende Nummer eingeben: +|Datensatz +|wurde nicht von Ihnen angelegt. +|ist schon zum Loeschen markiert +|zum Loeschen markiert +|Der Sysop wird die Liste endgueltig loeschen +|wenn Datensaetze zum Loeschen markiert sind. +|Mitteilungen insgesamt: +|Unbekannter Menubefehl! +|Speichern... +|MBSE BBS "Einzeiler" werden zufallsgesteuert im Hauptmenue erscheinen. +|Obszoene oder unanstaendige "Einzeiler" werden vom Sysop geloescht!! +|Bitte geben Sie Ihren "Einzeiler" ein, max. 75 Zeichen. +|"Einzeiler" hinzugefuegt +| # A Datum User Beschreibung +| # Beschreibung +|Bitte aufzulistende Nummer eingeben: +|Verbunden an Port +|Datei(en) : +|Groesse : +|Protokoll : +|Download-Zaehler werden aktualisiert, bitte warten ... +|Fehlgeschlagen! +|Bytes +| # Area Aktiv Gr. Kost Datei +|Ja +|Nein +UA|Aufgelistete (U)mschalten, alle (A)bwaehlen, um fortzufahren: +|Datei-Nummer eingeben, 1.. +|Markiert: +|Zurzeit sind keine Dateien markiert. +|Replace +|BBS wird geladen, bitte warten ... +|Neue oder geloeschte mail areas bei +|Area Status Typ Beschreibung +|Neue Mail suchen ist jetzt AN +|Neue Mail suchen ist jetzt AUS +|Datei loeschen: +JN|Sind Sie sicher? [J/n]: +|Neue Dateien suchen ist jetzt AN +|Neue Dateien suchen ist jetzt AUS +|Sie verwenden jetzt den +12|Auswahl: 1) Vollbild-Editor, 2) Externer Editor +|Es liegen keine Mitteilungen zum Herunterladen vor! +|Weiter mit ... +|Zentrieren +|Zu viele Mitteilungen. Nur die ersten +|Waehlen Sie Ihre bevorzugte Sprache aus +|Sprache auswaehlen ( um abzubrechen): +|Sprache ist jetzt eingestellt auf: +|Das System wird jetzt einem Unix-Account fuer Sie anlegen +|Ihr Unix-Account wurde angelegt, bitte verwenden Sie ihn ab jetzt zum Login. +|Bitte geben Sie einen Anmeldenamen ein (Max. 8 Zeichen) +|Beispiel: "Hans Schluckauf", login = hschluck +|Ihr gewuenschter Anmeldename: +|Dieser Anmeldename existiert bereits, bitte waehlen Sie einen anderen. +|Zeilen- +|Vollbild- +|Externen +|Editor +|Neu +|Local +|Netmail +|Echomail +|News +|E-Mail +|Del +|Jan +|Feb +|Mar +|Apr +|Mai +|Jun +|Jul +|Aug +|Sep +|Okt +|Nov +|Dez +|Autologout: Verbindung wird wegen Inaktivitaet getrennt. +|Wird gepackt! +|Geben Sie den Alias ein ( fuer "keinen"): +|Sie koennen das BBS ab jetzt benutzen +|Benutzer On-Line in +|Name Leitg. Status Ort +|"Nicht stoeren" ist jetzt AUS +|"Nicht stoeren" ist jetzt AN +|Im Menue +|Herunterladen +|Heraufladen +|Mitteilungen +|Ext. Programm +|Online-Dialog +|Dateibereich +JN|Moechten Sie diese Mitteilungen herunterladen [J/n]? +|Bank Programm +|Sich. ext. Programm +|Benutzerliste +|Offline Reader +|Name an den die Nachricht geschickt werden soll: +|Der angegebene Benutzer ist nicht online: +|moechte nicht gestoert werden +|Bitte geben Sie die Nachricht ein (Max 76 Zeichen) +|** Nachricht ** von +|Ihr Passwort ist abgelaufen, neues Passwort: +|Druecken Sie um fortzufahren +|Kein Senden moeglich, dieser Bereich ist schreibgeschuetzt ! +1|Auswahl: 1) Vollbild-Editor +|"Offline Reader" Paket heraufladen +|Kein oder fehlerhaftes Paket erhalten +|Unbekannter Datenkompressionstyp +|Archivprogramm nicht verfuegbar +|Unbekannter Mailpaket-Typ +|Herunterladen von BlueWave Offline +|Zusammenstellen des Pakets +|Packen mit +|Herunterladen fehlgeschlagen +|Herunterladen erfolgreich +|Aktualisieren der Lesezeichen +|Verarbeiten des BlueWave Antwort-Pakets +|Fehler im Paket +|Import der Mitteilungen +|Kein Schreibzugriff auf Bereich +|Mitteilungen importiert +|Verarbeiten der Offline-Konfiguration +|Mitteilungsbereiche ausgewaehlt +|Verarbeiten der Datei-Anforderungen +|Herunterladen von QWK Offline +|Verarbeiten des QWK Antwort-Pakets +|Herunterladen ASCII Offline +JN|Crash-Mail [j/N]: +JN|Warnung: Station ist nicht CM, sofort senden [j/N]: +JN|Datei anhaengen [j/N]: +|Datei +|wird angehaengt +|Datei nicht in +|mailbox - ein- und ausgehende E-mail +|archiv - Archiv Ihrer E-mails +|trash - Papierkorb, Ihre alte E-mail +|Bereich # +|Minuten. +|Tastenbelegung Vollbild-Editor im "EMACS" - Stil +|Tastenbelegung Vollbild-Editor im "WordStar" - Stil +|Ihre Adresse (max. 3 Zeilen, nur fuer den Sysop sichtbar): +|Sie muessen Ihre Adresse hier angeben +|Alte Adresse: +|Moechten Sie Ihren Aliasnamen ( +JN|) als Absender verwenden [J/n] +|Keine weitere Bereiche mit ungelesenen Nachrichten diff --git a/lang/source.en b/lang/source.en new file mode 100644 index 00000000..9fdbb463 --- /dev/null +++ b/lang/source.en @@ -0,0 +1,480 @@ +|Please enter your First and Last name: +|Please enter your Last name: +|Disconnecting user ... +|Scanning User File ... +YN|Did you spell your name correctly? [Y/n] +|You need to login again with the name: +|This is a PRIVATE System. Type "off" to leave +|Mark file number or press to stop +|Password: +|Maximum login attempts have been exceeded ... +|Either your NAME or PASSWORD is incorrect +HR|Export to (H)ome or (R)ules directory: +|Message exported to rules directory as +|No rules found for this area +|You are not allowed to delete that message +|Offline Reader: Extended Info turned ON +|Offline Reader: Extended Info turned OFF +|This is not a plain textfile. +|You may only login +|times at the same time +|The door is in use by another user, try again later +YN| Is this correct [y/N]: +|Could not parse +|Select your preferred character set +|Select character set (Enter to Quit): +|Character set now set to: +YN|Check for new mail at login [Y/n]: +YN|Check for new files at login [Y/n]: +|Enter a short reason for chat +|The Sysop cannot use the bbs to chat! Use mbmon to chat +|Sorry, the chatserver is not available +|line +| +| +| +| +| +|MBSE Bulletin Board System - NEW USER REGISTRATION +|Use this name: +|Please enter new password : +|Please enter password again : +|Your passwords do not match! Try again. +|Your password must contain at least +|characters! Try again. +| +|Please enter you Voice Number +|Message exported to your private directory as: +|Please enter a proper phone number +|Please enter you Data Number +|Please enter your location: +|Please enter a longer location +MF|What is your sex? (M)ale or (F)emale: +|Male +|Female +|Please answer M or F +|Unknown +|Please enter your Date of Birth DD-MM-YYYY: +|Sorry you entered this year by mistake. +|Please enter the correct date format +|*** Sysop is starting chat *** +|*** Sysop has terminated chat *** +YN=|More (Y/n/=) +YN|Would you like Hot-Keyed menus? [Y/n]: +|Please answer Y or N +| +|None +|Tag Offline Reader message areas +|Your user account has been created: +|Login Name : +|Password : +|not displayed +|New user registration completed. +|Could not find +|Old Location: +|Please enter a longer location (min +| +| +|Message doesn't exist +|News bulletins turned ON +|News bulletins turned OFF +| +| +|Private message, not owner +|Please enter the correct date format +|Todays Callers to +|# User Name Device TimeOn Calls Location +|Can't open archiver file. +|Select your preferred archiver +|Select Archiver (Enter to Quit): +|Archiver now set to: +|Please enter three combinations. +|1st digit: +|Please try again! You must input a number greater than Zero and less than +|2nd digit: +|3rd digit: +| Left: +|Right: +YN|Attempt to open safe with this combination [Y/n]: +|You have won the following... +|Sorry - You didn't open the safe! +|The safe code was: +YN|Do you want to try again ? [Y/n]: +YN|Do you want to open the safe ? [Y/n]: +|THE SAFE IS CURRENTLY LOCKED +|has cracked the safe. +|The safe will remain locked until the sysop rewards the user. +|Maximum trys per day Exceeded! +|Edit message signature +|The FROM, TO and SUBJECT fields are optional. +| From: +| To: +|Subject: +| Type up to 10 lines 74 Characters per line +|Functions available: +LREAS|(L)ist, (R)eplace text, (E)dit line, (A)bort, (S)ave +|Select: +|Aborting... +|Returning to +|Edit which line: +|Line does not exist. +|Old Password: +|New password: +|Confirm new password: +|Passwords do not match! +|Password Change Successful +|Old password incorrect! +|User List +|Enter Username search string or (Enter) for all users: +|Name Location Last On Calls +|Could not find search string ... +|Time limit exceeded ... disconnecting! +YN=M|More (Y/n/=) M=Mark +|Scanning +|with +|TIME STATISTICS for +|on +|Current Time : +|Current Date : +|Connect time : +|Time used today : +|Time remaining today : +|Daily time limit : +|You have +YN|messages, read your mail now? [Y/n]: +|You have no new mail in your mail box ... +|Hotkeys are now ON +|Hotkeys are now OFF +|On +|Off +|User name already exists +|Checking your mail box ... +|MBSE BBS Chat +|The SysOp is currently speaking to somebody else. +|Try paging him again in a few minutes ... +|You have paged the Sysop the maximum times allowed. +|Sysop currently is not available ... please leave a comment +|Posting message in area: +|From : +| To : +|Verifying user ... +|User not found. Try again, or (Enter) to quit +|Subj : +YN|Abort Message [y/N] ?: +YN|Private [y/N]: +|Begin your message now, Blank line to end +|Maximum of 60 lines, 73 characters per line +|Maximum message length exceeded +|Functions available: (Current Message: +|Lines) +|L - List message S - Save message C - Continue message +|Q - Quit message D - Delete line I - Insert line +|T - Text edit E - Edit line R - Replace line +LSCQDITERZ|Z - Center line +|Select +|Continue +|Delete +|Delete starting at line +|Aborted. +|Please enter a number in the range of +|Delete ending at line +|Edit +|Enter line # to edit +|Insert +|Enter line # to insert text before +|List +|Enter line # to replace +|Line reads: +|Unchanged. +|Line now reads: +|Quit +YN|Are you sure [y/N]: +|Message aborted. +|No +|Text Edit +|Enter line # to edit +|Text to replace : +|Replacement text : +|Line now reads: +|Save +|Possible VIRUS found! +|Ok +|Unpacking archive +|Saving message to disk +|Enter line # to center +|Line is maximum length and cannot be centered +|There are no messages in this area. +|Date : +YN=|More (Y/n/=/Area #): +|To : +|From : +|Subject : +|Next reply: +|Reply to: +|messages in +ANLREQDX|(A)gain, (N)ext, (L)ast, (R)eply, (E)nter, (D)el, (Q)uit, e(X)port +|(A)gain, (N)ext, (L)ast, (R)eply, (E)nter, (Q)uit, e(X)port +|Next +|ERROR +RNQ|(R)eply, (N)ext, (Q)uit: +|Enter to keep Subject. +|# From To Subject +|Message area +|contains +|messages. +|Please enter a message between +|Message number [ +|Area Type Description Messages Personal +|thread +|Enter the name of the conference, or ? for a list: +|Conference Area Msgs Description +|Deleting message +| Message Areas +|Select Area: +|Invalid area specified - Please try again ... +|Password is incorrect +|Password is correct +|You don't have enough security to list this area +|Can't open file database for this area +|Uploaded by: +|D E L E T E D +| +YN|Node not known, continue anyway [y/N]: +|Total Files: +|FATAL: Unable to open areas database +|You do not have enough access to download from this area. +|Please enter filename: +|No filename entered, Aborting. +|Illegal Filename! +|Sorry that file is unavailable for download +|You have +|extra download KBytes. +|You do not have enough time to download that file. +|You do not have enough bytes to download " +|You must upload before you can download. +|Kilobytes currently available: +|Checking your marked downloads, please wait... +|Untag Offline Reader message areas +|Found FILEID.DIZ in +|No files marked for download. +| +|You have selected the following Conference(s): +|Filename Size Date +|Protocol: Can't open protocol file. +|Select your preferred file transfer protcol +|Select Protocol (Enter to Quit): +|Ivalid selection, please try again! +|Protocol now set to: +|Enter keyword to use for Search: +|File Search by Keyword +|Accepts wildcards such as : *.zip, *.gz, *.* +| : *.zip is the same as .zip +|Enter filename to search for : +|File Search by Filename +YN|Search for new since your last call [Y/n]: +|Enter new date to search for [DD-MM-YYYY]: +|File Search by Date +| +|Offline Reader Download +|You do not have enough access to upload to this area. +|You have not enough diskspace free to copy this file +|files( +|bytes) marked for download. +|The file already exists on the system +|Please start your upload now ... +|Upload was unsuccessful for: +YN|Do you want to password protect your upload ? [y/N]: +|REMEMBER: Passwords are "CaSe SeNsITiVe!" +|Please enter description of file +|Your upload time has been returned to you. Thank you for your upload! +|Start copy: +|Can't open directory for listing: +|Home directory listing for +|Please enter filename to delete: +|Sorry you may not delete hidden files ... +|Unable to delete file ... +|Invalid filename, please try again ... +|File does not exist, please try again ... +|Forum Description Msgs. Pers. +| File Areas +|Please enter Area Password: +|Adding BBS +|BBS Name: +|Response needed ... +|Phone Number: +|Sysop Name: +|BBS Software: +|Storage (GigaByte): +|Speeds: +YN|Would you like to add a extended discription? [Y/n]: +|Please a enter discription for +|BBS Listing +|# BBS Name Number Software GigaByte Speed +|Search for a BBS +|Please enter 3 letters of BBS to search for: +|I need at least 3 letters ... +YN|View this BBS? [Y/n]: +|Could not find the BBS Listed ... +|Show a BBS +|Please enter number to list: +|Record does not exist +| Record : +| BBS Name : +| Number : +| Software : +| GigaBytes : +| Speeds : +| Sysop Name : +| Available : +| Date of Entry : +| Entry Name : +|Delete BBS +|Please enter number to delete: +|Record +|does not belong to you. +|already marked for deletion +|marked for deletion +|The Sysop will purge the list once he has +|seen you have marked a record for deletion. +|Total messages found: +|Unknown Menu Command! +|Saving... +|MBSE BBS Oneliners will randomly appear on the main menu. +|Obscene or libellous oneliners will be deleted!! +|Please enter your oneliner below. You have 75 characters. +|Oneliner added +| # A Date User Description +| # Description +|Please enter number to list: +|Connected from +|File(s) : +|Size : +|Protocol : +|Updating download counters, please wait ... +|Failed! +|Bytes +| # Area Active Size Cost File +|Yes +|No +TE|(T)oggle active, (E)rase all, (ENTER) to continue: +|Enter file number, 1.. +|Marked: +|No files tagged. +|Replace +|Loading BBS, please wait ... +|New or deleted mail areas at +|Area State Type Description +|New Mail check is now ON +|New Mail check is now OFF +|Delete file: +YN|Are you Sure? [Y/n]: +|New Files check is now ON +|New Files check is now OFF +|Now using the +12|Select: 1) Fullscreen editor, 2) External editor +|No messages found to download! +|Press (Enter) to continue: +|Center +|Too much messages. Only the first +|Select your preferred language +|Select Language: +|Language now set to: +|The system will now ask you for a "Unix Account" +|Your "Unix Account" is created, you may use it the next time you call. +|Please enter a login name (Maximum 8 characters) +|ie. John Doe, login = jdoe +|login > +|That login name already exists, please choose another one. +|Line +|Fullscreen +|External +|Editor +|New +|Local +|Netmail +|Echomail +|News +|E-Mail +|Del +|Jan +|Feb +|Mar +|Apr +|May +|Jun +|Jul +|Aug +|Sep +|Oct +|Nov +|Dec +|Autologout: idletime reached. +|Will be packed! +|Enter your handle (Enter for none): +|You are now ready to use the bbs +|Callers On-Line to +|Name Device Status Location +|Do not disturb turned OFF +|Do not disturb turned ON +|Browsing +|Downloading +|Uploading +|Msg Section +|External Door +|Chatting +|Listing Files +YN|Do you want to download these messages [Y/n]? +|Banking Door +|Safe Door +|WhosOn List +|Offline Reader +|Please enter username to send message to: +|Sorry, there is no user on +|doesn't wish to be disturbed +|Please enter in message to send (Max 76 Characters) +|** Message ** from +|Your password is expired, new password : +|Press ENTER to continue +|Posting not allowed, this area is Read Only! +1|Select: 1) Fullscreen editor +|Offline Reader Upload +|Invalid packet received +|Unknown compression type +|Archiver not available +|Unknown type mailpacket +|BlueWave Offline download +|Preparing packet +|Packing with +|Download failed +|Download successfull +|Updating lastread pointers +|Processing BlueWave reply packet +|ERROR in packet +|Import messages +|No Write access to area +|Messages imported +|Processing Offline Configuration +|Message areas selected +|Processing file requests +|QWK Offline Download +|Processing QWK reply packet +|ASCII Offline Download +YN|Crash [y/N]: +YN|Warning: node is not CM, send immediate [y/N]: +YN|Attach file [y/N]: +|File +|will be attached +|File not within +|mailbox - Incoming and outgoing email +|archive - Archive of your email +|trash - Trashcan, your old email +|Area # +|minutes. +|Fullscreen Editor shortcut keys set to Emacs +|Fullscreen Editor shortcut keys set to Wordstar +|Your address, maximum 3 lines (only visible for the sysop): +|You need to enter your address here +|Old address: +|Use your alias ( +YN|) to post this message [Y/n]: +|No more areas with unread messages diff --git a/lang/source.es b/lang/source.es new file mode 100644 index 00000000..1f720643 --- /dev/null +++ b/lang/source.es @@ -0,0 +1,480 @@ +|Por favor teclee su nombre y apellidos: +|Por favor teclee sus apellidos: +|Desconectando usuario ... +|Explorando fichero de usuarios ... +SN|¨Has escrito correctamente tu nombre? [S/n] +|Tienes que entrar otra vez con este nombre: +|Este es un sistema PRIVADO. Teclea "off" para salir +|Teclee n£mero de fichero o para terminar : +|Password: +|El n£mero de errores permitidos se ha sobrepasado ... +|Tu nombre o tu PASSWORD son incorrectos +PR|Exportar al directorio (P)ersonal o de (R)eglas: +|Mensaje exportado al directorio de reglas como +|No se encuentran reglas para este  rea. +|No puedes borrar este Mensaje. +|Lector Offline: Informaci¢n extendida ACTIVADA +|Lector Offline: Informaci¢n extendida DESACTIVADA +|Este no es un fichero de texto plano. +|S¢lo puedes hacer login +|veces al mismo tiempo +|Otro usuario est  usando esa door, int‚ntalo m s tarde. +SN| Es correcto [s/N]: +|No puedo iterpretar +|Select your preferred character set +|Select character set (Enter to Quit): +|Character set now set to: +YN|Check for new mail at login [Y/n]: +YN|Check for new files at login [Y/n]: +|Enter a short reason for chat +|The Sysop cannot use the bbs to chat! Use mbmon to chat +|Sorry, the chatserver is not available +|line +| +| +| +|áéíóúüÜñÑçÇ¿¡ºª ‚¡¢£š¤¥‡€¨­§¦ +| ‚¡¢£š¤¥‡€¨­§¦ +|MBSEBBS - REGISTRO DE NUEVO USUARIO +|Use este nombre: +|Por favor teclee el nuevo password : +|Por favor tecleelo de nuevo...... : +|­No coinciden! Vuelta a empezar... +|El password debe tener como m¡nimo +|caracteres. Vuelta a empezar... +| +|Teclea tu n£mero de tel‚fono de VOZ +|Mensaje exportado a tu directorio privado como: +|N£mero de tel‚fono incorrecto. Repite... +|Teclea tu n£mero de tel‚fono de MODEM +|¨Donde vives? (Ciudad): +|El nombre de tu ciudad es demasiado corto. Repite por favor +HM|¨Tu que eres (H)ombre o (M)ujer: +|Hombre +|Mujer +|Responde solo H o M +|Desconocido +|Fecha de nacimiento (DD-MM-AAAA): +|Has tecleado este a¤o por error. +|Teclea la fecha en formato correcto (DD-MM-AAAA) +|*** Atenci¢n: Te habla el SysOp *** +|*** Fin de la charla. Que tengas un buen d¡a *** +SN=|M s (S/n/=) +SN|¨Quieres men£s r pidos? [S/n]: +|Por favor contesta S ¢ N +| +|Nada +|Marcar  reas para lectura Off-Line +|Tu cuenta de usuario ha sido creada: +|Nombre de Login : +|Password : +|no visualizable +|Registro de novo usuario completo. +|No encuentro +|Localidad anterior : +|Localidad demasiado corta: (min. +| +| +|No existe el mensaje +|Noticias activadas +|Noticias desactivadas +| +| +|Mensaje privado, y no es tuyo +|Teclee el formato de fecha correcto +|Hoy llamaron a +|# Usr. Nombre Puerto Tiempo Llams Localidad +|Can't open archiver file. +|Select your preferred archiver +|Select Archiver (Enter to Quit): +|Archiver now set to: +|Teclee tres combinaciones. +|1er digito: +|­Repita! Debe ser un n£mero mayor que cero y menor que +|2do digito : +|3er digito: +|Izquierda : +| Derecha : +SN|Intento abrir con esta combinaci¢n [S/n]: +|Has ganado ... +|­Ohhh! - No se abre... +|La combinaci¢n era: +SN|¨Quieres volver a intentarlo? [S/n]: +SN|¨Quieres intentar abrir la caja? [S/n]: +|LA CAJA ESTA BLOQUEADA. +|ha abierto la caja. +|la caja permanecer  bloqueada hasta que el SysOp recompense al usuario. +|­Has excedido el m ximo n£mero de intentos diarios! +|Mensaje al siguiente usuario: +|Los campos De, Para y Asunto son opcionales. +| De: +| Para: +| Asunto: +| Teclea hasta 10 lineas de 74 Caracteres por linea +|Funciones disponibles: +LCEAG|(L)istar, (C)ambiar texto, (E)ditar linea, (A)bandonar (G)uardar +|Elija: +|Abandonando... +|Volviendo a +|Editar la linea n§: +|Esa no existe. +|Password viejo: +|Password nuevo: +|Repite el nuevo: +|­No coinciden! +|Password cambiado. No lo olvides... +|­Password viejo incorrecto! +|Lista de usuarios +|Buscar un nombre (Enter para listar todos): +|Nombre Localidad U.Llamada Llamadas +|No lo encuentro ... +|Limite de tiempo sobrepasado ... desconectando! +SN=M|M s (S/n/=) M=Marcar +|Buscando +|con +|Estad¡sticas de TIEMPO de +|en +|Hora Actual : +|Fecha Actual : +|Tiempo de conexion : +|Tiempo usado hoy : +|Tiempo que queda : +|L¡mite diario : +|Tienes +SN|mensajes, ¨Quieres leerlos ahora? [S/n]: +|No tienes correo nuevo a tu nombre ... +|Men£s r pidos activados +|Men£s r pidos desactivados +|Act +|Des +|El nombre ya existe +|Buscando correo nuevo ... +|Charla de mbsebbs +|El Sysop est  hablando con otro usuario. +|Intenta llamarlo de nuevo dentro de un rato ... +|Ya has llamado muchas veces. +|El SysOp no est  ... ¨por que no le dejas un mensaje? +|Poniendo mensaje en el  rea: +|De : +|Para : +|Verificando usuario... +|Usuario no existe. Repite, o (Enter) para salir +|Asunto : +SN|¨ Cancelar Mensaje [s/N] ?: +SN|Privado [s/N]: +|Comienza a escribir tu mensaje. (Enter) en una nueva linea para salir. +|M ximo 60 lineas, 73 caracteres por linea +|Longitud m xima sobrepasada +|Funciones disponibles: (Mensaje Actual: +|Lineas) +|L - Listar mensaje G - Guardar mensaje C - Continuar escribiendo +|A - Abandonar B - Borrar l¡neas I - Insertar linea +|T - editar Texto E - Editar l¡nea S - Sustituir linea +LGCABITESZ|Z - Centrar linea +|Elija +|Continuar +|Borrar +|Borrar desde la l¡nea +|Abandonar. +|Teclee un n£mero comprendido entre +|Borrar hasta la l¡nea +|Editar +|N§ de linea a editar +|Insertar +|Insertar antes de la l¡nea n§ +|Listar +|N§ de Linea a sustituir +|La linea dice: +|No modificada. +|La linea ahora dice: +|Abandonar. +SN|¨Est s seguro? [s/N]: +|Mensaje anulado. +|No +|Editar texto +|N§ de l¡nea a editar +|Texto a cambiar : +|Texto nuevo : +|La l¡nea ahora dice: +|Guardar +|­Posible VIRUS encontrado! +|Ok +|Descomprimiendo +|Guardando mensaje en disco +|N§ de linea # a centrar +|La linea es demasiado larga y no se puede centrar +|No hay mensajes en esta  rea. +|Fecha : +SN=|M s (S/n/=/n§  rea): +|Para : +|De : +|Asunto : +|Sig. resp.: +|Resp. a : +|mensajes en +OSARETBX|(O)tra vez (S)ig. (A)nt. (R)esp. (E)ntrar (B)orrar (T)erminar e(X)port. +|(O)tra vez (S)ig. (A)nt. (R)esponder (E)ntrar (T)erminar e(X)portar +|Siguiente +|ERROR +RST|(R)esponder, (S)iguiente, (T)erminar: +|Enter para mantener el mismo asunto +|n§ De Para Asunto +|El  rea +|tiene +|mensajes. +|Teclee un mensaje entre +|N£mero de mensaje [ +|Area Tipo Descripci¢n Mensajes Personal +|hilo +|Teclee N§ ¢ TAG del  rea, ? para ver lista: +|TAG Area Msjs Descripci¢n +|Borrando mensaje +| Areas de Mensajes +|Elija un  rea: +| rea elegida no v lida - Elija otra ... +|Password incorrecto +|Password correcto +|No tienes permiso para listar esta  rea +|No puedo abrir la base de ficheros de esta  rea +|Enviado por: +|B O R R A D O +| +SN|Nodo desconocido. ¨Continuar? [s/N]: +|Total Fichs: +|FATAL: Imposible abrir base de  reas +|No tienes permiso para descargar ficheros de esta  rea. +|Nombre del fichero: +|Nombre vac¡o, cancelando. +|­Nombre de fichero no v lido! +|Ese fichero no est  disponible para descargar +|Tienes +|KBytes extra para descargar. +|No tienes tiempo suficiente para descargar ese fichero. +|No tienes suficiente cr‚dito para descargar " +|Debes enviar algo antes de descargar. +|Kilobytes disponibles: +|Verificando ficheros marcados, espera un poco... +|Desmarcar  reas para lectura Off-Line +|Encontrado FILEID.DIZ en +|No hay ficheros marcados. +| +|Has seleccionado las siguientes  reas: +|Fichero Tama¤o Fecha +|Protocolo: No puedo abrir fichero de protocolos. +|Elija el protocolo de transferencia predeterminado +|Elija Protocolo (Enter para salir): +|Ese no vale, ­Elija otro! +|Protocolo predeterminado: +|Palabra a buscar: +|Buscar fichero por una palabra +|Se aceptan comodines como : *.zip, *.gz, *.* +| : *.zip es lo mismo que .zip +|Nombre de fichero a buscar: +|Buscar fichero por nombre +SN|Buscar nuevos ficheros desde tu £ltima llamada [S/n]: +|Fecha desde la que buscar [DD-MM-YYYY]: +|Buscar ficheros por fecha +| +|Descargar Correo para lectura OFF-LINE +|No tienes permiso para enviar ficheros a esta  rea. +|No hay suficiente espacio libre para copiar este fichero +|ficheros( +|bytes) marcados para descargar. +|El fichero ya existe en este sistema +|Comienza a enviar ahora ... +|Env¡o no completado por: +SN|¨Quieres proteger con password el fichero enviado? [s/N]: +|­RECUERDA! La password es "CaSe SeNsITiVe!" +|Teclee la descripci¢n del fichero +|El tiempo del env¡o se te devuelve. ­Gracias por tu fichero! +|Copiando a directorio personal : +|No puedo abrir directorio para listar: +|Listado del directorio personal de +|Nombre del fichero a borrar: +|No puedes borrar ficheros ocultos ... +|Imposible borrar fichero ... +|Nombre no v lido, prueba otra vez ... +|El fichero no existe, prueba otra vez ... +|Area Descripci¢n Msgs. Pers. +| Areas de ficheros +|Teclee password del  rea: +|A¤adiendo BBS +|Nombre de la BBS: +|Respuesta obligatoria ... +|N£mero de tel‚fono: +|Nombre del SysOp: +|Software de BBS: +|Almacenamiento (GigaBytes): +|Velocidades: +SN|¨Quieres a¤adir una descripcion? [S/n]: +|Teclea la descripci¢n de +|Listado de BBSs +|n§ Nombre BBS N£mero Software GigaByte Veloc. +|Buscar una BBS +|Teclee 3 letras de la BBS que quiere buscar: +|Necesito al menos 3 letras ... +SN|¨Ver esta BBS? [S/n]: +|No puedo encontrar BBS ... +|Mostrar +|N£mero a listar: +|Registro inexistente +| Registro : +| Nombre BBS : +| N£mero : +| Software : +| GigaBytes : +| Velocidades : +| SysOp : +| Disponible : +| Fecha entrada : +| Entrada por : +|Borrar BBS +|Teclee n£mero de BBS a borrar: +|El Registro +|no te pertenece. +|ya estaba marcado para borrar +|queda marcado para borrar +|El SysOp eliminar  de la lista un d¡a de estos +|todos los registros marcados para borrar. +|Total de mensajes encontrados: +|­Comando desconocido! +|Guardando... +|Oneliners: Aparecer n de forma aleatoria en el men£ de la BBS. +|Los textos obscenos u ofensivos ser n borrados +|Teclee su 'oneliner' abajo. M x 75 caracteres. +|Oneliner a¤adida +|n§ A Fecha Usuario Descripci¢n +| # Descripci¢n +|Teclee n£mero a listar: +|Connected from +|Ficheros : +|Tama¤o : +|Protocolo : +|Actualizando contadores de descarga... +|­FALLO! +|Bytes +| n§ Area Activa Tam. Coste Fichero +|Si +|No +AT|(A)ctivar/desactivar, desactivar (T)odos, (ENTER) para seguir: +|N£mero de fichero, 1.. +|Marcado: +|No hay ficheros marcados. +|Remplazar +|Cargando BBS, espere por favor ... +|Areas de correo nuevas o borradas en +|Area Estado Tipo Descripci¢n +|Comprobar correo nuevo ACTIVADO +|Comprobar correo nuevo DESACTIVADO +|Borrar fichero: +SN|¨Est s seguro? [S/n]: +|Comprobar ficheros nuevos ACTIVADO +|Comprobar ficheros nuevos DESACTIVADO +|Est s usando el editor +12|Elige: 1) E. Pantalla completa, 2) Editor externo +|¡No hay mensajes! +|Pulsa (Enter) para seguir: +|Centrar +|Demasiados mensajes, Solo los primeros +|Elija su Idioma / Escolla idioma / Select language +|Elija Idioma: +|Idioma: +|El sistema va a crear tu cuenta UNIX. Se te preguntar n unos datos: +|Tu "Cuenta UNIX" ha sido creada. Puedes usarla para entrar en el 'Login'. +|Teclea un nombre de login (M ximo 8 caracteres) por ejemplo si te llamas +|'Elena Nito del Bosque ' puedes usar 'enitob', 'elenanb' o 'enbosque' +|login > +|Ese nombre de LOGIN ya existe. Elije otro... +|de l¡neas +|de Pantalla completa +|externo +| +|Nuevo +|Local +|Netmail +|Echomail +|News +|E-Mail +|Del +|Ene +|Feb +|Mar +|Abr +|May +|Jun +|Jul +|Ago +|Sep +|Oct +|Nov +|Dic +|Autodesconeccion: ¨Te has dormido o es que se ha cortado? +|se empaquetar n. +|Alias (Enter si no quieres ninguno): +|Hala, Ya puedes usar la BBS +|Usuarios conectados a +|Nombre Puerto Estado Localidad +|'No molesten' DESACTIVADO +|'No molesten' ACTIVADO +|Navegando +|Descargando +|Enviando +|S. Mensajes +|Door Externa +|Charlando +|Lst. Ficheros +SN|¨Quieres descargar estos mensajes [S/N]? +|En el Banco +|Door de la Caja Fuerte +|L. Conectados +|Lector Off-line +|Teclea usuario al que enviar un aviso: +|No hay usuario en +|No quiere ser molestado +|Teclea texto del aviso (Max 76 Caracteres) +|** Mensaje ** de +|Tu password ha caducado, nuevo password : +|Pulsa ENTER para seguir +|No puedes escribir, ­esta  rea es de Solo Lectura! +1|Elige: 1) Editor de pantalla completa +|Upload de correo Off-Line +|El paquete recibido no es v lido +|Comprimido con un compresor desconocido +|El compresor no est  disponible +|Paquete de correo de tipo desconocido +|Descarga de BlueWave +|Preparando paquete +|Comprimiendo con +|Descarga fallida +|Descarga completa +|Actualizando punteros de lectura +|Procesando paquete de respuestas BlueWave +|ERROR en el paquete +|Importando mensajes +|Imposible escribir en  rea +|Mensajes importados +|Procesando Configuraci¢n Off-Line +|Areas seleccionadas +|Procesando peticiones de ficheros +|Descarga de QWK +|Procesando paquete de respuestas QWK +|Descarga ASCII +SN|Crash [s/N]: +SN|Aviso: el nodo no es CM, enviar immediato [s/N]: +YN|Adjuntar fichero [s/N]: +|Fichero +|adjuntado +|El fichero no esta en +|buz¢n - Email entrante/saliente +|archivo - Email Archivado +|papelera - Papelera, Email borrado +|Area # +|minutos. +|Teclas del editor en modo Emacs +|Teclas del editor en modo Wordstar +|Tu direccci¢n, m ximo 3 l¡neas (S¢lo visible por el SysOp): +|Debes teclear tu direcci¢n ahora. +|Direcci¢n antigua: +|Usar tu alias ( +SN|) para este mensaje [S/n]: +|No hay mas areas con mensajes no leidos diff --git a/lang/source.fr b/lang/source.fr new file mode 100644 index 00000000..5bb70fde --- /dev/null +++ b/lang/source.fr @@ -0,0 +1,480 @@ +|Entrez votre prénom et nom: +|Entrez votre nom: +|Utilisateur déconnecté ... +|Recherche dans fichier utilisateurs ... +ON|Votre nom est-il écrit correctement? [O/n] +|Vous devez vous reconnecter avec le nom: +|Ceci est un système PRIVE. Tapez "off" pour sortir +|Marquez le numéro du fichier ou pressez pour sortir +|Mot de passe: +|Nombre maximum de tentatives dépassé ... +|Votre nom ou votre mot de passe est incorrect +HR|Exporter vers le répertoire (H)ome ou (R)ègles: +|Message exporté vers répertoire règles sous +|Pas de règles pour cette conférence +|Vous n'avez pas le droit d'effacer ce message +|Offline Reader: Infos étendues ON +|Offline Reader: Infos étendues OFF +|Ceci n'est pas un simple fichier texte. +|Vous ne pouvez vous connecter que +|fois simultanément. +|The door is in use by another user, try again later +YN| Is this correct [y/N]: +|Could not parse +|Select your preferred character set +|Select character set (Enter to Quit): +|Character set now set to: +YN|Check for new mail at login [Y/n]: +YN|Check for new files at login [Y/n]: +|Enter a short reason for chat +|The Sysop cannot use the bbs to chat! Use mbmon to chat +|Sorry, the chatserver is not available +|line +| +| +| +| +| +|MBSE Bulletin Board System - ENREGISTREMENT NOUVEL UTILISATEUR +|Utiliser ce nom: +|Entrez le nouveau mot de passe : +|Entrez encore le mot de passe : +|Vos mots de passe ne sont pas identiques. Essayez encore. +|Votre mot de passe doit contenir au moins +|caractères! Essayez encore. +| +|Veuillez entrer votre numéro "voix" +|Message exporté dans votre répertoire perso sous le nom: +|Veuillez entrer un numéro de téléphone valable: +|Veuillez entrer votre numéro "données": +|Veuillez entrer votre ville: +|Le nom de ville doit être plus long +HF|(H)omme ou (F)emme ? : +|Homme +|Femme +|Veuillez répondre H ou F +|Inconnu +|Entrez votre date de naissance JJ-MM-AAAA: +|Cette date semble erronée. +|Veuillez entrer une date correcte +|*** Sysop commence le chat *** +|*** Sysop a terminé le chat *** +ON=|Plus (O/n/=) +ON|Voulez vous les menus Hot-Keyed ? [O/n]: +|Veuillez répondre O ou N +| +|Aucun +|Tag Offline Reader message areas +|Votre compte utilisateur a été créé: +|Login : +|Mot de passe : +|non affiché +|Enregistrement nouvel utilisateur terminé. +|Ne peut pas trouver +|Ancienne ville : +|veuillez entrer un nom plus long (min +| +| +|Message n'existe pas +|News bulletins est ON +|News bulletins est OFF +| +| +|Message privé, pas le propriétaire +|Veuillez entrer la date au format correct +|Appels d'aujourd'hui pour +|# User Name Device TimeOn Calls Location +|Can't open archiver file. +|Select your preferred archiver +|Select Archiver (Enter to Quit): +|Archiver now set to: +|Entrez trois combinaisons. +|1er chiffre: +|Essayez encore! Le chiffre doit être compris entre zéro et +|2ème chiffre: +|3ème chiffre: +| gauche: +|droite: +ON|Essayer d'ouvrir le coffre avec cette combinaison [O/n]: +|Vous avez gagné...: +|Désolé, vous n'avez pas ouvert le coffre! +|Le code du coffre était: +ON|Voulez-vous ré-essayer ? [O/n]: +ON|Voulez-vous ouvrir le coffre ? [O/n]: +|LE COFFRE EST VERROUILLE +|a ouvert le coffre. +|Le coffre restera fermé jusqu'à ce que le sysop ait récompensé l'utilisateur. +|Nombre d'essais maximum par jour dépassé! +|Changer la signature des messages +|Les champs DE, A et SUJET sont optionels. +| De: +| A: +| Sujet: +| Maximum 10 lignes de 74 caractères +|Fonctions disponibles: +LREAS|(L)iste, (R)emplacer texte, (E)diter ligne, (A)rrêt, (S)auver +|Choisir: +|Annulation... +|Retour à +|Editer quelle ligne: +|Ligne n'existe pas. +|Ancien mot de passe: +|Nouveau mot de passe: +|Confirmer le nouveau mot de passe: +|Les mots de passe ne sont pas identiques! +|Mot de passe changé +|Ancien mot de passe incorrect! +|Liste des Utilisateurs +|Entrez un morceau du nom de l'utilisateur à rechercher ou enter pour tous: +|Nom Endroit Dernier Appels +|Chaîne non trouvée ... +|Temps dépassé ... Déconnection! +ON=M|Plus (O/n/=) M=Marquer +|Scanning +|avec +|STATISTIQUES temporelles pour +|on +|Heure : +|Date : +|Connection : +|Temps pour aujourd'hui : +|Temps restant : +|Limite quotidienne : +|Vous avez +ON|messages, les lire maintenant? [O/n]: +|Pas de nouveau courrier dans la boîte ... +|Hotkeys sont ACTIVES +|Hotkeys sont INACTIVES +|Actif +|Inactif +|Ce nom existe déjà +|Vérification de la BAL ... +|MBSE BBS Chat +|Le SysOp parle a quelqu'un d'autre. +|Essayez de le rappeller dans quelques minutes ... +|Vous avez appellé le Sysop le maximum de fois permises. +|Le Sysop n'est pas disponible ... Laissez un message +|Message inscrit dans la conférence: +| De : +| A : +|Vérification de l'utilisateur... +|Utilisateur non trouvé. Ré-essayez, ou (Enter) pour quitter +| Suj : +ON|Annuler Message [o/N] ?: +ON|Privé [o/N]: +|Ecrivez le message et terminez par une ligne vide. +|Maximum 60 lignes, 73 caractères par ligne +|Longueur maximum du message dépassée +|Fonctions disponibles: (Message actuel: +|Lignes) +|L - Liste des messages S - Sauver le message C - Continuer le message +|Q - Quitter le message F - eFface ligne I - Insérer une ligne +|T - changer le Texte E - Editer une ligne R - Remplacer une ligne +LSCQFITERZ|Z - Centrer la ligne +|Selectionner +|Continuer +|eFfacer +|eFfacer en commençant à la ligne +|Annulé. +|Please enter a number in the range of +|Delete ending at line +|Editer +|Entrer le numéro de ligne à changer +|Inserer +|Entrer le numéro de la ligne AVANT laquelle insérer +|Liste +|Entrer le numéro de la ligne à remplacer +|Ligne lues: +|Inchangé. +|Ligne lues maintenant: +|Quitter +ON|Etes vous sûr [o/N]: +|Message abandonné. +|Non +|Text Edit +|Entrer le numéro de la ligne à changer +|Text à remplacer : +|Texte de remplacement : +|La ligne est maintenant : +|Sauver +|VIRUS possible trouvé! +|Ok +|Décompresse archive +|Sauve message +|Entrer la ligne à centrer +|La ligne ne peut être centrée +|Pas de message dans cette conference. +|Date : +ON=|More (O/n/=/Area #): +|A : +|De : +|Sujet : +|Rép. suivante: +|Rép. à : +|messages dans +ANLREQDX|(A)gain, (N)ext, (L)ast, (R)épondre, (E)ntrer, (D)el, (Q)uitter, e(X)porter +|(A)gain, (N)ext, (L)ast, (R)eply, (E)nter, (Q)uit, e(X)port +|Next +|ERREUR +RNQ|(R)épondre, (N)ext, (Q)uitter: +|Entrer pour garder le sujet. +|# De A Sujet +|Message area +|contient +|messages. +|Entrer un message entre +|Message numéro [ +|Area Type Description Messages Personal +|thread +|Entrer le nom de la conference, ou ? pour la liste: +|Conference Area Msgs Description +|Deleting message +| Message Areas +|Selectionner Area: +|Conférence non valable - Réessayez ... +|Le mot de passe est incorrect +|Le mot de passe est correct +|Niveau trop bas pour cette conférence +|Ne paut pas ouvrir la base pour cette conférence +|Télécharrgé par: +|F A C +| +ON|Node inconnu, continue quand même [o/N]: +|Total Fichiers: +|FATAL: Impossible d'ouvrir la conférence +|Accès trop bas pour télécharger ici. +|Entrer le nom du fichier: +|Pas de fichier, abandon. +|Nom de fichier illegal! +|Ce fichier n'est pas disponible pour le téléchargement +|Vous avez +|extra download KBytes. +|You do not have enough time to download that file. +|You do not have enough bytes to download " +|You must upload before you can download. +|Kilobytes currently available: +|Checking your marked downloads, please wait... +|Untag Offline Reader message areas +|Found FILEID.DIZ in +|No files marked for download. +| +|You have selected the following Conference(s): +|Filename Size Date +|Protocol: Can't open protocol file. +|Select your preferred file transfer protcol +|Select Protocol (Enter to Quit): +|Ivalid selection, please try again! +|Protocol now set to: +|Enter keyword to use for Search: +|File Search by Keyword +|Accepts wildcards such as : *.zip, *.gz, *.* +| : *.zip is the same as .zip +|Enter filename to search for : +|File Search by Filename +YN|Search for new since your last call [Y/n]: +|Enter new date to search for [DD-MM-YYYY]: +|File Search by Date +| +|Offline Reader Download +|You do not have enough access to upload to this area. +|You have not enough diskspace free to copy this file +|files( +|bytes) marked for download. +|The file already exists on the system +|Please start your upload now ... +|Upload was unsuccessful for: +YN|Do you want to password protect your upload ? [y/N]: +|REMEMBER: Passwords are "CaSe SeNsITiVe!" +|Please enter description of file +|Your upload time has been returned to you. Thank you for your upload! +|Start copy: +|Can't open directory for listing: +|Home directory listing for +|Please enter filename to delete: +|Sorry you may not delete hidden files ... +|Unable to delete file ... +|Invalid filename, please try again ... +|File does not exist, please try again ... +|Forum Description Msgs. Pers. +| File Areas +|Please enter Area Password: +|Adding BBS +|BBS Name: +|Response needed ... +|Phone Number: +|Sysop Name: +|BBS Software: +|Storage (GigaByte): +|Speeds: +YN|Would you like to add a extended discription? [Y/n]: +|Please a enter discription for +|BBS Listing +|# BBS Name Number Software GigaByte Speed +|Search for a BBS +|Please enter 3 letters of BBS to search for: +|I need at least 3 letters ... +YN|View this BBS? [Y/n]: +|Could not find the BBS Listed ... +|Show a BBS +|Please enter number to list: +|Record does not exist +| Record : +| BBS Name : +| Number : +| Software : +| GigaBytes : +| Speeds : +| Sysop Name : +| Available : +| Date of Entry : +| Entry Name : +|Delete BBS +|Please enter number to delete: +|Record +|does not belong to you. +|already marked for deletion +|marked for deletion +|The Sysop will purge the list once he has +|seen you have marked a record for deletion. +|Total messages found: +|Unknown Menu Command! +|Saving... +|MBSE BBS Oneliners will randomly appear on the main menu. +|Obscene or libellous oneliners will be deleted!! +|Please enter your oneliner below. You have 75 characters. +|Oneliner added +| # A Date User Description +| # Description +|Please enter number to list: +|Connected from +|File(s) : +|Size : +|Protocol : +|Updating download counters, please wait ... +|Failed! +|Bytes +| # Area Active Size Cost File +|Yes +|No +TE|(T)oggle active, (E)rase all, (ENTER) to continue: +|Enter file number, 1.. +|Marked: +|No files tagged. +|Replace +|Loading BBS, please wait ... +|New or deleted mail areas at +|Area State Type Description +|New Mail check is now ON +|New Mail check is now OFF +|Delete file: +YN|Are you Sure? [Y/n]: +|New Files check is now ON +|New Files check is now OFF +|Now using the +12|Select: 1) Fullscreen editor, 2) External editor +|No messages found to download! +|Press (Enter) to continue: +|Center +|Too much messages. Only the first +|Select your preferred language +|Select Language: +|Language now set to: +|The system will now ask you for a "Unix Account" +|Your "Unix Account" is created, you may use it the next time you call. +|Please enter a login name (Maximum 8 characters) +|ie. John Doe, login = jdoe +|login > +|That login name already exists, please choose another one. +|Line +|Fullscreen +|External +|Editor +|New +|Local +|Netmail +|Echomail +|News +|E-Mail +|Del +|Jan +|Feb +|Mar +|Apr +|May +|Jun +|Jul +|Aug +|Sep +|Oct +|Nov +|Dec +|Autologout: idletime reached. +|Will be packed! +|Enter your handle (Enter for none): +|You are now ready to use the bbs +|Callers On-Line to +|Name Device Status Location +|Do not disturb turned OFF +|Do not disturb turned ON +|Browsing +|Downloading +|Uploading +|Msg Section +|External Door +|Chatting +|Listing Files +YN|Do you want to download these messages [Y/n]? +|Banking Door +|Safe Door +|WhosOn List +|Offline Reader +|Please enter username to send message to: +|Sorry, there is no user on +|doesn't wish to be disturbed +|Please enter in message to send (Max 76 Characters) +|** Message ** from +|Your password is expired, new password : +|Press ENTER to continue +|Posting not allowed, this area is Read Only! +1|Select: 1) Fullscreen editor +|Offline Reader Upload +|Invalid packet received +|Unknown compression type +|Archiver not available +|Unknown type mailpacket +|BlueWave Offline download +|Preparing packet +|Packing with +|Download failed +|Download successfull +|Updating lastread pointers +|Processing BlueWave reply packet +|ERROR in packet +|Import messages +|No Write access to area +|Messages imported +|Processing Offline Configuration +|Message areas selected +|Processing file requests +|QWK Offline Download +|Processing QWK reply packet +|ASCII Offline Download +YN|Crash [y/N]: +YN|Warning: node is not CM, send immediate [y/N]: +YN|Attach file [y/N]: +|File +|will be attached +|File not within +|mailbox - Incoming and outgoing email +|archive - Archive of your email +|trash - Trashcan, your old email +|Area # +|minutes. +|Fullscreen Editor shortcut keys set to Emacs +|Fullscreen Editor shortcut keys set to Wordstar +|Your address, maximum 3 lines (only visible for the sysop): +|You need to enter your address here +|Old address: +|Use your alias ( +YN|) to post this message [Y/n]: +|No more areas with unread messages diff --git a/lang/source.gl b/lang/source.gl new file mode 100644 index 00000000..7f639425 --- /dev/null +++ b/lang/source.gl @@ -0,0 +1,480 @@ +|Por favor teclee o seu nome e apelidos: +|Por favor teclee os seus apelidos: +|Desconectando usuario ... +|Explorando ficheiro de usuarios ... +SN|¨Escribiche-lo teu nome correctamente? [S/n] +|Tes que acceder de novo con este nome: +|Este ‚ un sistema PRIVADO. Teclea "off" para salir +|Teclea n£mero de ficheiro ou para rematar : +|Password: +|Sobrepasouse o n£mero m ximo de erros permitido... +|O teu nome ou a tua PASSWORD son incorrectos +HR|Exportar ¢ directrio (P)ersoal ou ¢ de (R)egras: +|Mesaxe exportada ¢ directorio de regras coma +|Non se atopan regras pra esta  rea +|No podes borrar esta mensaxe. +|Lector Offline: Informaci¢n extendida ACTIVADA +|Lector Offline: Informaci¢n extendida DESACTIVADA +|Este non ‚ un ficheiro de texto plano. +|Solo podes facer login +|veces ¢ mesmo tempo +|Outro usuario est  a usar esa door, proba mais tarde +SN| ‚ correcto [s/N]: +|Non podo interpretar +|Select your preferred character set +|Select character set (Enter to Quit): +|Character set now set to: +YN|Check for new mail at login [Y/n]: +YN|Check for new files at login [Y/n]: +|Enter a short reason for chat +|The Sysop cannot use the bbs to chat! Use mbmon to chat +|Sorry, the chatserver is not available +|line +| +| +| +|áéíóúüÜñÑçÇ¿¡ºª ‚¡¢£š¤¥‡€¨­§¦ +| ‚¡¢£š¤¥‡€¨­§¦ +|MBSE BBS - REXISTRO DE NOVO USUARIO +|Use este nome: +|Por favor teclee o novo password : +|Por favor repita o password outra vez...... : +|­Non coinciden! Volta a empezar... +|A password debe ter como m¡nimo +|caracteres. Volta a empezar... +| +|Teclea o teu n£mero de tel‚fono de VOZ +|Mensaxe exportado ¢ teu directorio privado como: +|N£mero de tel‚fono incorrecto. Repite... +|Teclea o n£mero de tel‚fono do teu MODEM +|¨Onde vives? (Cidade): +|O nome da t£a cidade ‚ demasiado curto. Repiteo por favor +HM|¨Tu que eres (H)ome ou (M)uller: +|Home +|Muller +|Contesta s¢ H o M +|Desco¤ecido +|Data de nacemento (DD-MM-AAAA): +|Tecleaches ‚ste ano por error. +|Teclea a fecha en formato correcto (DD-MM-AAAA) +|*** Atenci¢n: F lache o SysOp *** +|*** Fin da parola. Que te¤as un b¢ d¡a *** +SN=|M is (S/n/=) +SN|¨Queres men£s r pidos? [S/n]: +|Por favor contesta S ou N +| +|Nada +|Marcar  reas para lectura Off-Line +|Creouse a t£a conta de usuario: +|Nome de Login : +|Password : +|non visualizable +|Rexistro de novo usuario completo. +|Non topo +|Localidade anterior : +|Localidade demasiado curta: (min. +| +| +|Non existe a mensaxe +|Novas activadas +|Novas desactivadas +| +| +|Mensaxe privada, e non ‚ tua +|Teclea o formato de data correcto +|Hoxe chamaron a +|# Usr. Nombre Puerto Tiempo Llams Localidad +|Can't open archiver file. +|Select your preferred archiver +|Select Archiver (Enter to Quit): +|Archiver now set to: +|Teclea tres combinaci¢ns. +|1§ dixito: +|­Repite! Debe ser un n£mero maior que cero e menor que +|2§ dixito : +|3§ dixito: +| Esquerda : +| Dereita : +SN|Probo a abrir con esta combinaci¢n [S/n]: +|Ganaches ... +|­Ohhh! - Non se abre... +|A combinaci¢n era: +SN|¨Queres volver probar? [S/n]: +SN|¨Queres probar a abri-la caixa? [S/n]: +|A CAIXA ESTA BLOQUEADA. +| abriu a caixa. +|A caixa queda bloqueada ata que o SysOp recompense ¢ usuario. +|­Excedeche-lo m ximo n£mero de intentos diarios! +|Mensaxe ¢ seguinte usuario: +|Os campos De, Para e Asunto son opcionais. +| De: +| Para: +| Asunto: +| Teclea ata 10 li¤as de ata 74 Caracteres por linea +|Funci¢ns dispo¤ibles: +LCEAG|(L)istar, (C)ambiar texto, (E)ditar li¤a, (A)bandonar (G)ardar +|Escolle: +|Abandonando... +|Volvendo a +|Edita-la li¤a n§: +|Esa non existe. +|Password vella: +|Password nova: +|Repite a nova: +|­Non coinciden! +|Password cambiada. Non a esquezas... +|­Password vella incorrecta! +|Lista de usuarios +|Buscar un nome (Enter para listar todos): +|Nome Localidade U.Chamada Chamadas +|Non o atopo... +|L¡mite de tempo sobrepasado ... desconectando! +SN=M|M is (S/n/=) M=Marcar +|Buscando +|con +|Estad¡sticas de TEMPO de +|en +|Hora Actual : +|Data Actual : +|Tempo de conexion : +|Tempo usado hoxe : +|Tempo que queda : +|L¡mite diario : +|Tes +SN|mensaxes, ¨Queres lelas agora? [S/n]: +|Non hai correo novo pra ti ... +|Men£s r pidos activados +|Men£s r pidos desactivados +|Act +|Des +|O nome xa existe +|Buscando correo novo ... +|Charla de MBSE BBS +|O Sysop est  falando con outro usuario. +|Intenta chamalo de novo dentro de un pouco ... +|Xa chamacves moitas veces. +|O SysOp non est  ... ¨por que non lle deixas unha mensaxe? +|Po¤endo mensaxe na  rea: +|De : +|Para : +|Verificando usuario... +|Usuario non existe. Repite, ou (Enter) para sair +|Asunto : +SN|¨ Cancelar Mensaxe [s/N] ?: +SN|Privado [s/N]: +|Empeza a escribi-la tua mensaxe. (Enter) nunha li¤a vac¡a para sair. +|M ximo 60 li¤as, 73 caracteres por li¤a +|Lonxitud m xima sobrepasada +|Funcions dispo¤ibles: (Mensaxe Actual: +|Li¤as) +|L - Listar mensaxe G - Gardar mensaxe C - Continuar escribindo +|A - Abandonar B - Borrar li¤as I - Insertar li¤a +|T - editar Texto E - Editar li¤a S - Sustituir li¤a +LGCABITESZ|Z - Centrar li¤a +|Escolle +|Continuar +|Borrar +|Borrar dende a li¤a +|Abandonar. +|Teclea un n£mero entre +|Borrar ata a li¤a +|Editar +|N§ de li¤a a editar +|Insertar +|Insertar antes da li¤a n§ +|Listar +|N§ de Li¤a a sustituir +|A li¤a di: +|Non se cambiou: +|La li¤a agora di: +|Abandonar. +SN|¨Est s seguro? [s/N]: +|Mensaxe anulada. +|No +|Editar texto +|N§ de l¡¤a a editar +|Texto a cambiar : +|Texto novo : +|La l¡¤a agora di: +|Gardar +|­Posible VIRUS atopado! +|Ok +|Descomprimindo +|Gardando mensaxe no disco +|N§ de li¤a a centrar +|A li¤a ‚ demasiado longa e non se pode centrar +|Non hai mensaxes nesta  rea. +|Data : +SN=|M is (S/n/=/n§  rea): +|Para : +|De : +|Asunto : +|Seg. resp.: +|Resp. a: +|mensaxes en +OSACNRBX|(O)utra vez (S)eg. (A)nt. (C)ontes. (N)ova (B)orrar (R)ematar e(X)port. +|(O)utra vez (S)eg (A)nt. (C)ontes. (N)ova (R)ematar e(X)portar +|Seguinte +|ERROR +CSR|(C)ontestar, (S)eguinte, (R)ematar: +|Enter para mante-lo mesmo asunto +|n§ De Para Asunto +|A  rea +|ten +|mensaxes. +|Teclea unnha mensaxe entre +|N£mero de mensaxe [ +|Area Tipo Descripci¢n Mensaxes Persoais +|f¡o +|Teclee N§ ou TAG da  rea, ? para ve-la lista: +|TAG Area Msxs Descripci¢n +|Borrando mensaxe +| Areas de Mensaxes +|Escolle unha  rea: +| rea escollida non v lida - Escolla outra ... +|Password incorrecto +|Password correcto +|Non tes permiso para listar esta  rea +|Non podo abri-la base de ficheiros desta  rea +|Enviado por: +|B O R R A D O +| +SN|Nodo desco¤ecido. ¨Continuar? [s/N]: +|Total Fichs: +|FATAL: Imposible abrir base de  reas +|Non tes permiso para descargar ficheiros desta  rea. +|Nome do ficheiro: +|Nome vac¡o, cancelando. +|­Nome de ficheiro non v lido! +|Ese ficheiro non est  dispo¤ible para descargar +|Tes +|KBytes extra para descargar. +|Non tes tempo dabondo para descargar ese ficheiro. +|Non tes suficiente cr‚dito para descargar " +|Tes que enviar algo antes de descargar. +|Kilobytes dispo¤ibles: +|Verificando ficheiros marcados, agarda un pouco... +|Desmarcar  reas para lectura Off-Line +|Atopado FILEID.DIZ en +|Non hai ficheiros marcados. +| +|Escolleche-las seguintes  reas: +|Ficheiro Tama¤o Fecha +|Protocolo: Non podo abrir ficheiro de protocolos. +|Escolle o protocolo de transferencia predeterminado +|Escolle Protocolo (Enter para sair): +|Ese non vale, ­Escolle outro! +|Protocolo predeterminado: +|Palabra a buscar: +|Buscar ficheiro por unha palabra +|Aceptanse comodins coma : *.zip, *.gz, *.* +| : *.zip es lo mismo que .zip +|Nome do ficheiro a buscar: +|Buscar ficheiro por nome +SN|Buscar novos ficheiros dende a tua £ltima chamada [S/n]: +|Buscar novos dende fecha [DD-MM-YYYY]: +|Buscar ficheiros por fecha +| +|Descargar Correo para lectura OFF-LINE +|Non tes permiso para enviar ficheiros a esta  rea. +|Non hai espacio dabondo para copiar este ficheiro +|ficheiros( +|bytes) marcados para descargar. +|O ficheiro xa existe neste sistema +|Empeza a enviar agora ... +|Env¡o non rematado por: +SN|¨Queres protexer con password o ficheiro enviado? [s/N]: +|­LEMBRA! A password ‚ "CaSe SeNsITiVe!" +|Teclea a descripci¢n do ficheiro +|Dev¢lvechese o tempo do env¡o. ­Gracias polo ficheiro! +|Copiando a directorio persoal : +|Non podo abrir directorio para listar: +|Listado do directorio persoal de +|Nome do ficheiro a borrar: +|Non podes borrar ficheiros ocultos ... +|Imposible borrar ficheiro ... +|Nome non v lido, proba outra vez ... +|O ficheiro non existe, proba outra vez ... +|Area Descripci¢n Msxs. Pers. +| Areas de ficheiros +|Teclee password da  rea: +|A¤adindo BBS +|Nome da BBS: +|Resposta obligatoria ... +|N£mero de tel‚fono: +|Nome do SysOp: +|Software de BBS: +|Espacio (GigaBytes): +|Velocidades: +SN|¨Queres a¤adir unha descripcion? [S/n]: +|Teclea a descripci¢n de +|Listado de BBSs +|n§ Nome da BBS N£mero Software GigaByte Veloc. +|Buscar unha BBS +|Teclee 3 letras da BBS que quere buscar: +|Necesito lo menos 3 letras ... +SN| BBS? [S/n]: +|Non podo topa-la BBS ... +|Amosar una BBS +|N£mero a listar: +|Rexistro inexistente +| Rexistro : +| Nome BBS : +| N£mero : +| Software : +| GigaBytes : +| Velocidades : +| SysOp : +| Dispo¤ible : +| Fecha entrada : +| Entrada por : +|Borrar BBS +|Teclee n£mero da BBS a borrar: +|O Rexistro +|non ‚ teu. +|xa estaba marcado para borrar +|queda marcado para borrar +|O SysOp eliminar o da lista cando lle pareza +|todo-los rexistros marcados para borrar. +|Total de mensaxes topados: +|­Comando desco¤ecido! +|Gardando... +|Oneliners: Aparecer n de forma aleatoria no men£ da BBS. +|Os textos obscenos ou ofensivos ser n borrados +|Teclea a tua 'oneliner'. Máx 75 caracteres. +|Oneliner a¤adida +|n§ A Fecha Usuario Descripci¢n +| # Descripci¢n +|Teclee n£mero a listar: +|Connected from +|Ficheiros : +|Tama¤o : +|Protocolo : +|Actualizando contadores de descarga... +|­FALLO! +|Bytes +| n§ Area Activa Tam. Coste Fichero +|Si +|No +AT|(A)ctivar/desactivar, desactivar (T)odos, (ENTER) para seguir: +|N£mero de ficheiro, 1.. +|Marcado: +|Non hai ficheiros marcados. +|Replace +|Cargando BBS, agarde por favor ... +|Areas de correo novas ou borradas en +|Area Estado Tipo Descripci¢n +|Comprobar correo novo ACTIVADO +|Comprobar correo novo DESACTIVADO +|Borrar ficheiro: +SN|¨Est s seguro? [S/n]: +|Comprobar ficheiros novos ACTIVADO +|Comprobar ficheios novos DESACTIVADO +|Est s usando o editor +12|Escolle: 1) E. pantalla completa, 2) Editor externo +|¡Non hai mensaxes! +|Pulsa (Enter) para seguir: +|Centrar +|Demasiadas mensaxes, S¢ as primeiras +|Elija su Idioma / Escolla idioma / Select language +|Escolla Idioma: +|Idioma: +|O sistema vai crea-la tua conta UNIX. Preguntar che unhos datos: +|Creouse a tua "Conta UNIX". P¢dela usar para entrar no 'Login'. +|Teclea un nome de login (M ximo 8 caracteres) por exemplo se te chamas +|'Elena Nito del Bosque ' podes usar 'enitob', 'elenanb' ou 'enbosque' +|login > +|Ese nome de LOGIN xa existe. Escolle outro... +|de li¤as +|de pantalla completa +|externo +| +|New +|Local +|Netmail +|Echomail +|News +|E-Mail +|Del +|Xan +|Feb +|Mar +|Abr +|Mai +|Xun +|Xul +|Ago +|Sep +|Out +|Nov +|Dec +|Autologout: ¨Quedaches dormido o cortouse a li¤a? +|empaquetar nse. +|Alias (Enter se non queres ningun): +|Hala, Xa podes usa-la BBS +|Usuarios conectados a +|Nomme Porto Estado Localidade +|'Non molesten' DESACTIVADO +|'Non molesten' ACTIVADO +|Navegando +|Descargando +|Enviando +|S. Mensaxes +|Door Externa +|Charlando +|Ls. Ficheiros +SN|¨Queres descargar estas mensaxes [S/N]? +|No Banco +|Safe Door +|L. Conectados +|Offline Reader +|Teclea usuario ¢ que queres dar recado: +|Non hai usuario en +|Non quere que o molesten +|Teclea texto do recado (Max 76 Caracteres) +|** Mensaxe ** de +|A tua password caducou, nova password : +|Pulsa ENTER para seguir +|Non podes escribir, ­esta  rea es S¢ Lectura! +1|Escolle: 1) Editor de pantalla completa +|Upload de correo Off-Line +|O paquete recibido non ‚ v lido +|Comprimido con un compresor desco¤ecido +|O compresor non est  dispo¤ible +|Paquete de correo de tipo desco¤ecido +|Descarga de BlueWave +|Preparando paquete +|Comprimindo con +|Descarga fallida +|Descarga completa +|Actualizando punteiros de lectura +|Procesando paquete de respostas BlueWave +|ERRO no paquete +|Importando mensaxes +|Imposible escribir na  rea +|Mensaxes importadas +|Procesando Configuraci¢n Off-Line +|Areas seleccionadas +|Procesando peticions de ficheiros +|Descarga de QWK +|Procesando paquete de respostas QWK +|Descarga ASCII +SN|Crash [s/N]: +SN|Aviso: o nodo non ‚ CM, enviar immediato [s/N]: +YN|Adxuntar ficheiro [s/N]: +|Ficheiro +|adxuntado +|O ficheiro non esta en +|buzon - Email entrante/sainte +|archivo - Email Archivado +|papeleira - Papeleira, Email borrado +|Area # +|minutos. +|O editor funcionar  cas teclas de Emacs +|O editor funcionar  cas teclas de Wordstar +|Enderezo, m ximo 3 li¤as (solo o ver  o SysOp): +|Tes que po¤e-lo teu enderezo +|Enderezo vello: +|¨Queres usa-lo alias ( +SN|) nesta mensaxe? [S/n]: +|Non hai mais  reas con mensaxes sen ler. diff --git a/lang/source.nl b/lang/source.nl new file mode 100644 index 00000000..8d8ac1f6 --- /dev/null +++ b/lang/source.nl @@ -0,0 +1,480 @@ +|Geef Voor en Achternaam: +|Geef Achternaam: +|Verbreken gebruiker ... +|Doorzoeken gebruikers bestand ... +JN|Is Uw naam juist gespeld? [J/n] +|Log nu opnieuw in met de naam: +|Dit is een PRIVE Systeem. Tik "off" om eruit te gaan +|Markeer bestand nummer of toets voor stop +|Wachtwoord: +|Maximum aantal inlog pogingen overschreden ... +|Of Uw NAAM of Uw WACHTWOORD is fout +HR|Exporteer naar (H)ome of (R)egels directory: +|Bericht geexporteerd naar rules directory als +|Geen regels gevonden voor dit gebied +|Je mag dit bericht niet verwijderen +|Offline Reader: Uitgebreide Informatie is nu AAN +|Offline Reader: Uitgebreide Informatie is nu UIT +|Dit is geen normaal tekst bestand +|U mag maar +|keer tegelijk inloggen +|De door is in gebruik door een andere gebruiker, probeer het later nog eens +JN| Is dit juist [j/N]: +|Niet te verwerken +|Kies Uw karakter set +|Kies karakter set (Enter is Stop): +|Karakter set is nu: +JN|Kijk voor nieuwe post tijdens login [J/n]: +JN|Kijk voor nieuwe bestanden tijdens login [J/n]: +|Geef een korte reden om te kletsen +|De sysop kan niet kletsen via het bbs! Gebruik mbmon +|Sorry, de chatserver is niet beschikbaar +|lijn +| +| +| +| +| +|MBSE Bulletin Board Systeem - NIEUWE GEBRUIKER REGISTRATIE +|Gebruik deze naam: +|Geef een nieuw wachtwoord : +|Geef het wachtwoord opnieuw : +|De wachtwoorden zijn niet gelijk! Opnieuw. +|Uw wachtwoord moet minstens +|karakters bevatten! Opnieuw. +| +|Geef Uw Spraak Telefoonnummer +|Bericht weggeschreven naar Uw prive directory als: +|Geef het nummer in een goed formaat +|Geef Uw Data Telefoonnummer +|Geef Uw woonplaats: +|Geef een langere woonplaats naam +MV|Wat is Uw geslacht? (M)an of (V)rouw: +|Man +|Vrouw +|Antwoord met M of V +|Onbekend +|Geef Uw geboorte datum DD-MM-YYYY: +|Sorry maar dat is dit jaar. +|Gebruik het juiste datum formaat +|*** De Sysop komt erin om te kletsen *** +|*** De Sysop stopt met kletsen *** +JN=|Meer (J/n/=) +JN|Wilt U sneltoets menus? [J/n]: +|Antwoord met J of N +| +|Geen +|Selecteer Offline Reader berichten gebieden +|Uw gebruikers account is gemaakt: +|Inlog naam : +|Wachtwoord : +|onzichtbaar +|Nieuwe gebruiker registratie is klaar. +|Niet gevonden +|Oude woonplaats: +|Geef een langere woonplaats naam (minimaal +| +| +|Bericht bestaat niet +|News berichten staan nu AAN +|News berichten staan nu UIT +| +| +|Prive bericht, niet van U +|Geef het juiste datum formaat +|Bellers vandaag bij +|# Gebruiker Poort Tijd Keren Woonplaats +|Kan archiver file niet openenen. +|Kies je favourite archiver +|Kies archiver (Enter is Stop): +|Archiver is nu: +| +| +| +| +| +| +| +| +| +| +| +| +| +| +| +| +| +|Wijzig berichten handtekening +|De VAN, AAN en ONDERWERP velden zijn opties. +| Van: +| Aan: +|Onderwerp: +| Type maximaal 10 regels van 74 karakters per regel +|Beschikbare functies: +LVWAB|(L)ijst, (V)ervang tekst, (W)ijzig regel, (A)fbreken, (B)ewaar +|Kies: +|Afbreken ... +|Terug naar +|Wijzig welke regel: +|Regel bestaat niet. +|Oud wachtwoord: +|Nieuw wachtwoord: +|Bevestig nieuw wachtwoord: +|Wachtwoorden zijn niet gelijk! +|Het wachtwoord is gewijzigd +|Oude wachtwoord is fout! +|gebruikers lijst +|Geef gebruikersnaam zoekfragment of (Enter) voor alle gebruikers: +|Naam Woonplaats Laatst hier Hoevaak +|Zoekargument niet gevonden ... +|Tijd limiet overschreden ... verbreken! +JN=M|Meer (J/n/=) M=Markeer +|Scannen +|met +|TIJD STATISTIEK voor +|op +|Huidige tijd : +|Huidige datum : +|Verbindings tijd : +|Tijd gebruikt vandaag : +|Tijd over vandaag : +|Dagelijkse tijdslimiet : +|U heeft +JN|berichten, nu de post lezen? [J/n]: +|Er zijn geen nieuwe berichten in Uw postbus ... +|Sneltoetsen staan nu AAN +|Sneltoetsen staan nu UIT +|Aan +|Uit +|Gebruikersnaam bestaat al +|Even in Uw postbus kijken ... +|MBSE BBS Kletsen +|De Sysop is nu even met iemand anders in gesprek. +|Probeer het opnieuw in enkele minuten ... +|U heeft de Sysop meer dan het maximaal aantal keren geroepen. +|De Sysop is niet aanwezig ... laat een bericht achter +|Nieuw bericht in gebied: +|Van : +|Aan : +|Kontroleren gebruiker ... +|Gebruiker niet gevonden. Opnieuw proberen of (Enter) voor stop +|Onderwerp: +JN|Afbreken bericht [j/N] ?: +JN|Prive [j/N]: +|Begin nu met het bericht, Een lege regel is stoppen +|Maximaal 60 regels, 73 karakters per regel +|maximale berichtlengte overschreden +|Functies beschikbaar: (Huidig bericht: +|Regels) +|L - Lijst bericht B - Bewaar bericht D - Doorgaan bericht +|A - Afbreken W - Wissen regel I - Invoegen regel +|T - Tekst wijzigen R - Regel wijzigen V - Vervang regel +LBDADITRVC|C - Centreer regel +|Kies +|Doorgaan +|Wis +|Wis vanaf regel +|Afgebroken. +|Geef een nummer in het bereik van +|Wissen eindigt met regel +|Wijzig +|Geef regel # te wijzigen +|Invoegen +|Geef het regel # waarvoor in te voegen +|Lijst +|Geef regel # te vervangen +|De regel is: +|Onveranderd. +|De regel is nu: +|Stop +JN|Wet U het zeker [j/N]: +|Bericht afgebroken. +|Nee +|Tekst wijzigen +|Geef regel # te wijzigen +|Oude tekst : +|Nieuwe tekst: +|De regel is nu: +|Bewaar +|Een mogelijk VIRUS gevonden! +|Ok +|Uitpakken archief +|Opslaan bericht op disk +|Geef regel # te centreren +|De regel is op maximale breedte en kan niet worden gecentreerd. +|Er zijn geen berichten in dit gebied. +|Datum : +JN=|Meer (J/n/=/Gebied #): +|Aan : +|Van : +|Onderwerp: +|Reactie: +|Antwoord op: +|berichten in +OVLAPSWX|(O)pnieuw, (V)olgend, (L)aatst, (A)ntwoord, (P)laats, (W)is, (S)top, e(X)port +|(O)pnieuw, (V)olgend, (L)aatst, (A)ntwoord, (P)laats, (S)top, e(X)port +|Volgende +|FOUT +AVS|(A)ntwoord, (V)olgende, (S)top: +|Enter is zelfde onderwerp. +|# Van Aan Onderwerp +|Berichten gebied +|bevat +|berichten. +|Geef een bericht tussen +|Bericht nummer [ +|Nr. Soort Omschrijving Aantal Persoonlijk +|draad +|Geef de naam van de confrentie, of ? voor een lijst: +|Conferentie Gebied Tot. Omschrijving +|Wissen bericht +| Berichten gebieden +|Kies gebied: +|Ongeldig nummer opgegeven - Probeer het opnieuw ... +|Wachtwoord is fout +|Wachtwoord is goed +|U heeft niet genoeg autorisatie voor de lijst in dit gebied +|Kan de database niet openen voor dit gebied +|Upload door: +|GEWIST +| +JN|Node onbekend, toch doorgaan [j/N]: +|Aantal bestanden: +|FATAAL: kan de bestanden database niet openen +|U heeft niet genoeg autorisatie om uit dit gebied te downloaden. +|Geef de bestandsnaam: +|Geen bestandsnaam, Afgebroken. +|Ongeldige bestandsnaam! +|Sorry maar dat bestand is niet beschikbaar voor download +|U heeft +|extra download KBytes. +|U heeft niet genoeg tijd om dat bestand te downloaden. +|U heeft niet genoeg bytes over om te downloaden " +|U moet uploaden voordat U kunt downloaden. +|Kilobytes op dit moment beschikbaar: +|Kontroleren gemarkeerde bestanden, een ogenblik ... +|Verwijder selectie Offline Reader berichten gebieden +|FILEID.DIZ gevonden in +|Geen bestanden gemarkeerd voor download. +| +|De volgende conferentie(s) zijn geselecteerd: +|Bestand Grootte Datum +|Protocol: Kan protocollen bestand niet openen. +|Kies Uw favourite overdracht protocol +|Kies Protocol (Enter is Stop): +|Ongeldige keuze, Probeer het opnieuw! +|Het protocol is nu: +|Geef sleutelwoord om op te zoeken : +|Bestanden zoeken op sleutelwoord +|Accepteerd jokers zoals : *.zip, *.gz, *.* +| : *.zip is hetzelfde als .zip +|Geef bestandsnaam om naar te zoeken : +|Bestanden zoeken op naam +JN|Zoeken naar nieuwe bestanden sinds de laatste keer? [J/n]: +|Geef nieuwe datum om vanaf te zoeken [DD-MM-JJJJ]: +|Bestanden zoeken op datum +| +|Offline Reader Download +|U heeft niet genoeg rechten om in dit gebied te uploaden. +|U heeft niet genoeg vrije diskruimte om dit bestand te kopieren +|bestanden( +|bytes) gemarkeerd voor download. +|Dat bestand bestaat al op het systeem +|Begin u met Uw upload ... +|Upload is mislukt voor : +JN|Wilt U Uw upload beschermen met een wachtwoord ? [j/N]: +|ONTHOUDT: Wachtwoorden zijn "HoOfDLEtTer GeVoElIg!" +|Geef een omschrijving van bestand +|Uw upload tijd is terruggegeven. Bedankt voor de upload! +|Start kopieren: +|Kan de directory niet openen voor de lijst: +|Prive directory lijst voor +|Geef bestandsnaam om te wissen: +|Spijtig, maar verborgen bestanden mag U niet wissen ... +|Kan bestand niet wissen ... +|Ongeldige bestandsnaam, Probeer het opnieuw ... +|Bestand bestaat niet, Probeer het opnieuw ... +|Conferentie Omschrijving Aant. Pers. +| Bestanden gebieden +|Geef gebieds wachtwoord: +|Toevoegen BBS +|BBS Naam: +|Invoer is nodig ... +|Telefoon nummer: +|Sysop Naam: +|BBS Software: +|Diskruimte (GigaByte): +|Snelheden: +JN|Wilt U het BBS uitgebreider omschrijven? [J/n]: +|Geef een omschrijving voor +|BBS Lijst +|# BBS Naam Nummer Software GigaByte Snelheid +|Zoek een BBS +|Geef 3 letters van het BBS om op te zoeken: +|Ik heb minstens 3 letters nodig ... +JN|Bekijk dit BBS? [J/n]: +|Ik kon dat BBS niet vinden ... +|Toon een BBS +|Geef het nummer om te bekijken: +|Record bestaat niet +| Record : +| BBS Naam : +| Nummer : +| Software : +| GigaBytes : +| Snelheden : +| Sysop Naam : +| Beschikbaar : +| Invoer datum : +| Invoer naam : +|Verwijder BBS +|Geef het nummer om te verwijderen: +|Record +|is niet van U. +|is al gemarkeerd om te verwijderen +|gemarkeerd om te verwijderen +|De Sysop zal dit BBS verwijderen zodra hij +|heeft gezien dat er een record gemarkeerd is. +|Totaal aantal berichten gevonden: +|Onbekend menu kommando! +|Bewaren ... +|MBSE BBS Spreuken kunnen willekeurig verschijnen. +|Obscene en racistische opmerkingen worden verwijderd!! +|Geef hieronder Uw spreuk. U heeft 75 karakters. +|Spreuk toegevoegd +| # A Datum Gebruiker Omschrijving +| # Omschrijving +|Geef nummer om te bekijken: +|Verbonden vanaf +|Bestand(en): +|Grootte : +|Protocol : +|Bijwerken download tellers, een ogenblik ... +|Mislukt! +|Bytes +| # Geb. Aktief Grootte Prijs Bestand +|Ja +|Nee +SV|(S)chakel aktief, (V)erwijder alles, (ENTER) voor doorgaan: +|Geef bestand nummer, 1.. +|Gemarkeerd: +|Geen bestanden gemarkeerd. +|Vervang +|Het BBS wordt geladen, een moment ... +|Nieuwe of verwijderde berichten gebieden bij +|Geb. Status Soort Omschrijving +|Tonen nieuwe Post is nu AAN +|Tonen nieuwe Post is nu UIT +|Verwijder bestand: +JN|Zeker weten? [J/n]: +|Tonen nieuwe Bestanden is nu AAN +|Tonen nieuwe Bestanden is nu UIT +|U gebruikt nu de +12|Kies: 1) Volle scherm editer, 2) Externe editer +|Geen berichten gevonden voor download! +|Geef (Enter) voor doorgaan: +|Centreer +|Teveel berichten. Alleen de eerste +|Kies Uw favourite taal +|Kies taal: +|De taal is nu: +|Het systeem zal nu een "Unix gebruikersnaam" vragen +|Uw "Unix gebruikersnaam" is gemaakt, U kunt dit de volgende keer gebruiken. +|Geef een inlog naam (Maximaal 8 karakters, kleine letters) +|bv. Piet Snot, login = psnot +|login > +|Die login naam bestaat al, kies iets anders. +|Regel +|Volle scherm +|Externe +|Textverwerker +|Nieuw +|Lokaal +|Netmail +|Echomail +|Nieuws +|E-Mail +|Gewist +|Jan +|Feb +|Mrt +|Apr +|Mei +|Jun +|Jul +|Aug +|Sep +|Okt +|Nov +|Dec +|Autologuit: non-aktief tijd bereikt. +|worden ingepakt! +|Geef Uw Alias (Enter voor geen): +|Je kunt het bbs nu gaan gebruiken +|Gebruikers aanwezig bij +|Naam Poort Bezig met Woonplaats +|Niet storen staat nu UIT +|Niet storen staat nu AAN +|Rondkijken +|Downloaden +|Uploaden +|Berichten +|Extern Prog. +|Kletsen +|Bestanden +JN|Wilt U deze berichten downloaden [J/n]? +|Tijd Bank +|Kluis kraken +|Wie is hier +|Offline Reader +|Geef de gebruikersnaam waar het bericht heen moet: +|Sorry, er is niemand op +|wil niet gestoord worden +|Geef te versturen bericht (Maximaal 76 karakters) +|** Bericht ** van +|Uw wachtwoord is verlopen, geef nieuw wachtwoord: +|Toets ENTER voor doorgaan +|Plaatsen berichten niet toegestaan, dit gebied is alleen lezen! +1|Kies: 1) Volle scherm editer +|Offline Reader Upload +|Ongeldig pakket ontvangen +|Onbekende compressie methode +|Compressie programma niet beschikbaar +|Onbekend type mail pakket +|BlueWave Offline download +|Voorbereiden pakket +|Comprimeren met +|Download mislukt +|Download is gelukt +|Bijwerken laatstgelezen wijzers +|Verwerken BlueWave antwoord pakket +|FOUT in pakket +|Inlezen berichten +|Geen schrijftoegang in gebied +|Berichten ingelezen +|Verwerken Offline Configuratie +|Berichten gebieden gelecteerd +|Verwerken bestands verzoeken +|QWK Offline Download +|Verwerken QWK antwoord pakket +|ASCII Offline Download +JN|Direct [j/N]: +JN|Let op: node is niet CM, onmiddelijk sturen [j/N]: +JN|Bestand meesturen [j/N]: +|Bestand +|wordt meegestuurd +|Bestand niet binnen +|mailbox - Inkomende en uitgaande post +|archive - Het archief van Uw email +|trash - De vuilnisbak, oude email. +|Gebied # +|minuten. +|Schermgestuurde Tekstverwerker sneltoetsen ingesteld als Emacs +|Schermgestuurde Tekstverwerker sneltoetsen ingesteld als Wordstar +|Geef adres, maximaal 3 regels (alleen zichtbaar voor de sysop): +|U moet hier Uw adres opgeven +|Oude adres: +|Use your alias ( +YN|) to post this message [Y/n]: +|Geen gebieden meer met ongelezen berichten diff --git a/lang/source.zh b/lang/source.zh new file mode 100644 index 00000000..8498fe8b --- /dev/null +++ b/lang/source.zh @@ -0,0 +1,480 @@ +|ÇëÊäÈëÃûºÍÐÕ(Æ´Òô): +|ÇëÊäÈëÐÕ: +|Disconnecting user ... +|ËÑË÷Óû§Îļþ ... +YN|Did you spell your name correctly? [Y/n] +|You need to login again with the name: +|This is a PRIVATE System. Type "off" to leave +|Mark file number or press to stop +|ÃÜÂë: +|Maximum login attempts have been exceeded ... +|Either your NAME or PASSWORD is incorrect +HR|Export to (H)ome or (R)ules directory: +|Message exported to rules directory as +|No rules found for this area +|You are not allowed to delete that message +|Offline Reader: Extended Info turned ON +|Offline Reader: Extended Info turned OFF +|This is not a plain textfile. +|You may only login +|times at the same time +|The door is in use by another user, try again later +YN| Is this correct [y/N]: +|Could not parse +|Select your preferred character set +|Select character set (Enter to Quit): +|Character set now set to: +YN|Check for new mail at login [Y/n]: +YN|Check for new files at login [Y/n]: +|Enter a short reason for chat +|The Sysop cannot use the bbs to chat! Use mbmon to chat +|Sorry, the chatserver is not available +|line +| +|‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄ +|‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄ +|ÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþ +|ÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþ +|MBSE Bulletin Board System - NEW USER REGISTRATION +|Use this name: +|ÇëÊäÈëÐÂÃÜÂë : +|ÇëÔÙ´ÎÊäÈëÐÂÃÜÂë : +|Á½´ÎÊäÈëµÄÃÜÂ벻ͬ! ÖØÊÔ. +|ÄãµÄÃÜÂ볤¶È²»ÄÜÉÙÓÚ +|¸ö×Ö·û! ÖØÊÔ. +| +|Please enter you Voice Number +|Message exported to your private directory as: +|Please enter a proper phone number +|Please enter you Data Number +|Please enter your location: +|Please enter a longer location +MF|What is your sex? (M)ale or (F)emale: +|Male +|Female +|Please answer M or F +|Unknown +|Please enter your Date of Birth DD-MM-YYYY: +|Sorry you entered this year by mistake. +|Please enter the correct date format +|*** Sysop is starting chat *** +|*** Sysop has terminated chat *** +YN=|More (Y/n/=) +YN|Would you like Hot-Keyed menus? [Y/n]: +|Please answer Y or N +| +|None +|Tag Offline Reader message areas +|Your user account has been created: +|Login Name : +|Password : +|not displayed +|New user registration completed. +|Could not find +|Old Location: +|Please enter a longer location (min +| +| +|Message doesn't exist +|News bulletins turned ON +|News bulletins turned OFF +| +| +|Private message, not owner +|Please enter the correct date format +|Todays Callers to +|# User Name Device TimeOn Calls Location +|Can't open archiver file. +|Select your preferred archiver +|Select Archiver (Enter to Quit): +|Archiver now set to: +| +| +| +| +| +| +| +| +| +| +| +| +| +| +| +| +| +|Edit message signature +|The FROM, TO and SUBJECT fields are optional. +| From: +| To: +|Subject: +| Type up to 10 lines 74 Characters per line +|Functions available: +LREAS|(L)ist, (R)eplace text, (E)dit line, (A)bort, (S)ave +|Select: +|Aborting... +|Returning to +|Edit which line: +|Line does not exist. +|Old Password: +|New password: +|Confirm new password: +|Passwords do not match! +|Password Change Successful +|Old password incorrect! +|User List +|Enter Username search string or (Enter) for all users: +|Name Location Last On Calls +|Could not find search string ... +|Time limit exceeded ... disconnecting! +YN=M|More (Y/n/=) M=Mark +|Scanning +|with +|TIME STATISTICS for +|on +|Current Time : +|Current Date : +|Connect time : +|Time used today : +|Time remaining today : +|Daily time limit : +|You have +YN|messages, read your mail now? [Y/n]: +|You have no new mail in your mail box ... +|Hotkeys are now ON +|Hotkeys are now OFF +|On +|Off +|User name already exists +|Checking your mail box ... +|MBSE BBS Chat +|The SysOp is currently speaking to somebody else. +|Try paging him again in a few minutes ... +|You have paged the Sysop the maximum times allowed. +|Sysop currently is not available ... please leave a comment +|Posting message in area: +|From : +| To : +|Verifying user ... +|User not found. Try again, or (Enter) to quit +|Subj : +YN|Abort Message [y/N] ?: +YN|Private [y/N]: +|Begin your message now, Blank line to end +|Maximum of 60 lines, 73 characters per line +|Maximum message length exceeded +|Functions available: (Current Message: +|Lines) +|L - List message S - Save message C - Continue message +|Q - Quit message D - Delete line I - Insert line +|T - Text edit E - Edit line R - Replace line +LSCQDITERZ|Z - Center line +|Select +|Continue +|Delete +|Delete starting at line +|Aborted. +|Please enter a number in the range of +|Delete ending at line +|Edit +|Enter line # to edit +|Insert +|Enter line # to insert text before +|List +|Enter line # to replace +|Line reads: +|Unchanged. +|Line now reads: +|Quit +YN|Are you sure [y/N]: +|Message aborted. +|No +|Text Edit +|Enter line # to edit +|Text to replace : +|Replacement text : +|Line now reads: +|Save +|Possible VIRUS found! +|Ok +|Unpacking archive +|Saving message to disk +|Enter line # to center +|Line is maximum length and cannot be centered +|There are no messages in this area. +|Date : +YN=|More (Y/n/=/Area #): +|To : +|From : +|Subject : +|Next reply: +|Reply to: +|messages in +ANLREQDX|(A)gain, (N)ext, (L)ast, (R)eply, (E)nter, (D)el, (Q)uit, e(X)port +|(A)gain, (N)ext, (L)ast, (R)eply, (E)nter, (Q)uit, e(X)port +|Next +|ERROR +RNQ|(R)eply, (N)ext, (Q)uit: +|Enter to keep Subject. +|# From To Subject +|Message area +|contains +|messages. +|Please enter a message between +|Message number [ +|Area Type Description Messages Personal +|thread +|Enter the name of the conference, or ? for a list: +|Conference Area Msgs Description +|Deleting message +| Message Areas +|Select Area: +|Invalid area specified - Please try again ... +|Password is incorrect +|Password is correct +|You don't have enough security to list this area +|Can't open file database for this area +|Uploaded by: +|D E L E T E D +| +YN|Node not known, continue anyway [y/N]: +|Total Files: +|FATAL: Unable to open areas database +|You do not have enough access to download from this area. +|Please enter filename: +|No filename entered, Aborting. +|Illegal Filename! +|Sorry that file is unavailable for download +|You have +|extra download KBytes. +|You do not have enough time to download that file. +|You do not have enough bytes to download " +|You must upload before you can download. +|Kilobytes currently available: +|Checking your marked downloads, please wait... +|Untag Offline Reader message areas +|Found FILEID.DIZ in +|No files marked for download. +| +|You have selected the following Conference(s): +|Filename Size Date +|Protocol: Can't open protocol file. +|Select your preferred file transfer protcol +|Select Protocol (Enter to Quit): +|Ivalid selection, please try again! +|Protocol now set to: +|Enter keyword to use for Search: +|File Search by Keyword +|Accepts wildcards such as : *.zip, *.gz, *.* +| : *.zip is the same as .zip +|Enter filename to search for : +|File Search by Filename +YN|Search for new since your last call [Y/n]: +|Enter new date to search for [DD-MM-YYYY]: +|File Search by Date +| +|Offline Reader Download +|You do not have enough access to upload to this area. +|You have not enough diskspace free to copy this file +|files( +|bytes) marked for download. +|The file already exists on the system +|Please start your upload now ... +|Upload was unsuccessful for: +YN|Do you want to password protect your upload ? [y/N]: +|REMEMBER: Passwords are "CaSe SeNsITiVe!" +|Please enter description of file +|Your upload time has been returned to you. Thank you for your upload! +|Start copy: +|Can't open directory for listing: +|Home directory listing for +|Please enter filename to delete: +|Sorry you may not delete hidden files ... +|Unable to delete file ... +|Invalid filename, please try again ... +|File does not exist, please try again ... +|Forum Description Msgs. Pers. +| File Areas +|Please enter Area Password: +|Adding BBS +|BBS Name: +|Response needed ... +|Phone Number: +|Sysop Name: +|BBS Software: +|Storage (GigaByte): +|Speeds: +YN|Would you like to add a extended discription? [Y/n]: +|Please a enter discription for +|BBS Listing +|# BBS Name Number Software GigaByte Speed +|Search for a BBS +|Please enter 3 letters of BBS to search for: +|I need at least 3 letters ... +YN|View this BBS? [Y/n]: +|Could not find the BBS Listed ... +|Show a BBS +|Please enter number to list: +|Record does not exist +| Record : +| BBS Name : +| Number : +| Software : +| GigaBytes : +| Speeds : +| Sysop Name : +| Available : +| Date of Entry : +| Entry Name : +|Delete BBS +|Please enter number to delete: +|Record +|does not belong to you. +|already marked for deletion +|marked for deletion +|The Sysop will purge the list once he has +|seen you have marked a record for deletion. +|Total messages found: +|Unknown Menu Command! +|Saving... +|MBSE BBS Oneliners will randomly appear on the main menu. +|Obscene or libellous oneliners will be deleted!! +|Please enter your oneliner below. You have 75 characters. +|Oneliner added +| # A Date User Description +| # Description +|Please enter number to list: +|Connected from +|File(s) : +|Size : +|Protocol : +|Updating download counters, please wait ... +|Failed! +|Bytes +| # Area Active Size Cost File +|Yes +|No +TE|(T)oggle active, (E)rase all, (ENTER) to continue: +|Enter file number, 1.. +|Marked: +|No files tagged. +|Replace +|Loading BBS, please wait ... +|New or deleted mail areas at +|Area State Type Description +|New Mail check is now ON +|New Mail check is now OFF +|Delete file: +YN|Are you Sure? [Y/n]: +|New Files check is now ON +|New Files check is now OFF +|Now using the +12|Select: 1) Fullscreen editor, 2) External editor +|No messages found to download! +|Press (Enter) to continue: +|Center +|Too much messages. Only the first +|Select your preferred language +|Select Language: +|Language now set to: +|The system will now ask you for a "Unix Account" +|Your "Unix Account" is created, you may use it the next time you call. +|Please enter a login name (Maximum 8 characters) +|ie. John Doe, login = jdoe +|login > +|That login name already exists, please choose another one. +|Line +|Fullscreen +|External +|Editor +|New +|Local +|Netmail +|Echomail +|News +|E-Mail +|Del +|Jan +|Feb +|Mar +|Apr +|May +|Jun +|Jul +|Aug +|Sep +|Oct +|Nov +|Dec +|Autologout: idletime reached. +|Will be packed! +|Enter your handle (Enter for none): +|You are now ready to use the bbs +|Callers On-Line to +|Name Device Status Location +|Do not disturb turned OFF +|Do not disturb turned ON +|Browsing +|Downloading +|Uploading +|Msg Section +|External Door +|Chatting +|Listing Files +YN|Do you want to download these messages [Y/n]? +|Banking Door +|Safe Door +|WhosOn List +|Offline Reader +|Please enter username to send message to: +|Sorry, there is no user on +|doesn't wish to be disturbed +|Please enter in message to send (Max 76 Characters) +|** Message ** from +|Your password is expired, new password : +|Press ENTER to continue +|Posting not allowed, this area is Read Only! +1|Select: 1) Fullscreen editor +|Offline Reader Upload +|Invalid packet received +|Unknown compression type +|Archiver not available +|Unknown type mailpacket +|BlueWave Offline download +|Preparing packet +|Packing with +|Download failed +|Download successfull +|Updating lastread pointers +|Processing BlueWave reply packet +|ERROR in packet +|Import messages +|No Write access to area +|Messages imported +|Processing Offline Configuration +|Message areas selected +|Processing file requests +|QWK Offline Download +|Processing QWK reply packet +|ASCII Offline Download +YN|Crash [y/N]: +YN|Warning: node is not CM, send immediate [y/N]: +YN|Attach file [y/N]: +|File +|will be attached +|File not within +|mailbox - Incoming and outgoing email +|archive - Archive of your email +|trash - Trashcan, your old email +|Area # +|minutes. +|Fullscreen Editor shortcut keys set to Emacs +|Fullscreen Editor shortcut keys set to Wordstar +|Your address, maximum 3 lines (only visible for the sysop): +|You need to enter your address here +|Old address: +|Use your alias ( +YN|) to post this message [Y/n]: +|No more areas with unread messages diff --git a/lib/.cvsignore b/lib/.cvsignore new file mode 100644 index 00000000..3866a77d --- /dev/null +++ b/lib/.cvsignore @@ -0,0 +1 @@ +filelist ftscprod.c diff --git a/lib/Diesel.doc b/lib/Diesel.doc new file mode 100644 index 00000000..8a59093b --- /dev/null +++ b/lib/Diesel.doc @@ -0,0 +1,294 @@ + + T U R B O D I E S E L + Template-based Uncomplicated Report-Building Oriented Dumb + Interpretively Evaluated String Expression Language + +This is a modified version of diesel language. Diesel is a interpreted +macro language, used in AutoCAD and released to public domain by AutoDesk. + +Modified version by Redy Rodriguez, for use in mbsebbs. Original diesel +language can be found at http://www.fourmilab.ch/diesel. + +This "Dumb Interpretively Executed String Expression Language" is the +kernel of a macro language you can customise by adding C code and +embedding it into your program. + +It is short, written in portable C, and is readily integrated into any +program. It is useful primarily to programs which need a very rudimentary +macro expansion facility without the complexity of a full language such as +Lisp or FORTH. + +DIESEL copies its input directly to the output until a macro character, +"@" or quoted string is encountered. Quoted strings may be used to +suppress evaluation of sequences of characters which would otherwise be +interpreted as macros. Quote marks may be included in quoted strings by +two adjacent quote marks. For example: + + "@(if,1,True,False)="""@(if,1,True,False)"""" + +Status retrieval, computation, and display are performed by DIESEL +functions. The available functions are as follows. User-defined +functions are not implemented; what you see is all you've got. Naturally, +if you embed DIESEL in your application, you'll add functions that provide +access to information and actions within your own program. DIESEL's +arithmetic functions accept either floating point or integer arguments, +and perform all calculations in floating point. + +TURBODIESEL facilities +---------------------- + +If a line begin with # then will be not evaluated, and any output is done. + +If a line begin with @! any output is done, but evaluation is performed. + +If a line begin with @{} produces output only if expression is +TRUE (Any non-zero numeric value). + +To easily format output, you can use one-char variable names as follow: + + @A will be replaced by result of evaluate @(GETVAR,A). + + @A_____ will be replaced by result of evaluate @(GETVAR,A) truncated or +padded with spaces to complete same lenght of '@A_____' (7 in that case). + + You can use > or < to especify alignement rigth or left: + + @A_____> @A_____< + + +TURBODIESEL String Functions +---------------------------- + + @(+,,,...) + The sum of the numbers , , ... is returned. + + @(-,,,...) + The result of subtracting the numbers through from + is returned. + + @(*,,,...) + The result of multiplying the numbers ,,... is + returned. + + @(/,,,...) + The result of dividing the number by ,... is + returned. + + @(=,,) + If the numbers and are equal 1 is returned, + otherwise 0 is returned. + + @(<,,) + If the number is less than 1 is returned, otherwise + 0 is returned. + + @(>,,) + If the number is greater than 1 is returned, + otherwise 0 is returned. + + @(!=,,) + If the numbers and are not equal 1 is returned, + otherwise 0 is returned. + + @(<=,,) + If the number is less than or equal to 1 is + returned, otherwise 0 is returned. + + @(>=,,) + If the number is greater than or equal to 1 is + returned, otherwise 0 is returned. + + @(AND,,,...) + The bitwise logical AND of the integers through is + returned. + + @(EQ,,) + If the strings and are identical 1 is returned, + otherwise 0. + + @(EVAL,) + The string is passed to the DIESEL evaluator and the result + of evaluating it is returned. + + @(FIX,) + The real number is truncated to an integer by discarding + any fractional part. + + @(IF,,,) + If is nonzero, is evaluated and returned. + Otherwise, is evaluated and returned. Note that the + branch not chosen by is not evaluated. + + @(INDEX,,) + is assumed to contain one or more values delimited by the + macro argument separator character, comma. selects one of + these values to be extracted, with the first item numbered zero. + +* @(LOWER,) + The is returned converted to lower case according to the + rules of the current locale. + + @(NTH,,,,) + Evaluates and returns the argument selected by . If + is 0, is returned, and so on. Note the difference + between @(NTH) and @(INDEX); @(NTH) returns one of a series of + arguments to the function while @(INDEX) extracts a value from a + comma-delimited string passed as a single argument. Arguments not + selected by are not evaluated. + + @(OR,,,...) + The bitwise logical OR of the integers through is + returned. + +* @(STRCMP,,) + Compare strings and returns -1 if is less than , 0 if + both are equals, or 1 if is greater than . + + @(STRFILL,,) + Returns the result of concatenating of . + + @(STRLEN,) + Returns the length of in characters. + +* @(STRSTR,,) + Find first apparition of in , and return the position + or 0 if not found. + + @(SUBSTR,,,) + Returns the substring of starting at character + and extending for characters. Characters in the string + are numbered from 1. If is omitted, the entire remaining + length of the string is returned. + + @(UPPER,) + The is returned converted to upper case according to the + rules of the current locale. + + @(XOR,,,...) + The bitwise logical XOR of the integers through is + returned. + +Variable Extensions +------------------- + +The base-line DIESEL includes no user-defined variables. This allows +DIESEL to avoid allocating any local memory and renders it totally +reentrant. If you compile DIESEL with the tag VARIABLES defined, the +following additional functions are included which provide variable +definition and access. Note that these functions call malloc() and +strdup() and thus consume heap storage. + +Variable names are case sensitive. + +If you want easily format output you must use one-char variable names +then you can format output as @V_____, @X_____< or @k___>. See above. + + @(GETVAR,varname) + Returns the value stored in . If no variable with + the name exists, a bad argument error is reported. + + @(SETVAR,varname,value) + Stores the string into . If no variable + called exists, a new variable is created. + +* @(CLEAR) + Clear all variables. + +Unix Extensions +--------------- + +If you compile DIESEL with the tag UNIXTENSIONS defined, the following +additional functions will be available: + +@(GETENV,varname) + Returns the variable from the environment. If no such + variable is defined, returns the null string. + +@(TIME) + Returns the current time in Unix fashion, as the number of seconds + elapsed since 00:00:00 GMT January 1, 1970. + +@(EDTIME,

    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 H;T8LDuTr<1 literal 0 HcmV?d00001 diff --git a/html/images/nodes1.png b/html/images/nodes1.png new file mode 100644 index 0000000000000000000000000000000000000000..ec4803b617d0466bbc0397b31ce2412d993c0b8b GIT binary patch literal 15314 zcmcJ$Wk6Nm);GGOq@*N7x)C-Z0)nJSr!+_-A=2UAbco2N1tcUD1Qcl`Hyu&}e?Yoh zq(MOXoq*>&=REJd_uKV@%3|*|=bCfOF@7;t$YWKx8@RV|AqcvmATO-}L1@Ylbj<-9 z4O}@1{f8g?gJJzpDj>u^iF1OPoL4><>tFHNye=JLG+M<^g}K8l=VrIJgQM2 zx-B~E*9&hRMIR96Qyq4q#`Ip_;0zPc!QLTSzRONhPwI2$NyGZ1Ff{HVNq;m0e#vW@ z*l5ij+vzV-TCo3NwAt18U3TXU{hh}mcZuvX+~eYO^vC=6LUrpF42_}_{H$Kz^AXaO zYd&ndmvUY+O^9J8lp?&0&tvT?YTc8fscC#jA+7ag@Ojy7V&cBJHb1Ze&|r>Gq^6hI zS*8Rd;{bmcHyH#;+USQK1B`irCWwx3(#-FeCo+&d|@p#YTc~d}8sRJ0oty3*-`K^P_f4Q?qL4ztv<&%Ipo8y&!1Bp*TYpPIa@-PSERky`p}WkjSMo}CCA{Dh-65>@17VSL&%Vp(0Gk`^(8zx6?(v_F-GMln1n=w#vH~T~?-@w@l7Ue=cLZiD@Xz zIM1J)G^+FV^z0l?NlV+QV2nQ^D(fKg2t+`WAYd%JJl|*DnpZ zF;$Baq&;17Jj<4vmEh&-+G$gcPMYXFuSm!CRfcR1`|9h6_sP%WH#RqK_C4b_??Rza zcJFkUZklXPeJd4Hi_Kryl(isMk9FN_H7OCW>8{BRlO%2u?-m4N?gxPyhYczdMn&`Z~d7j$y?9A z;WAucG_PN@h@`)N3%|e!^-U@jr4_(p_PLl#Okp-W@B}l>8TNdl)@#^A0QXDEWUbdh z#Qmw6JJfV^!S>WTF=)?So{0vWjGmuJys9H3Z6F{d4EdQEB_2A$YA&3?%2pEd6jMl4 zvb}mK9mN%3+5dc2^9e;pMny3Ro*mbpA2+TC0Vd?% z#j5k8-Qnp$SE1kOYRk)s=3qk1SdeW#y>j&3O(vZ*#DSp4Hn_xtt1lE{U|r^^Lf0TD zch&KH-_gWpPrE#i2qX=Vsa~6rKH-2Me>YLj-$*WY=>?&l!$Xgk^a!>r4e$+S=Vav4 zt_Nz;s*r_IgH&eVYw~?Za(!O#4gQHr=gd*N63ZZ@mbNyj<@^Hma`%&Uqh6&pkAd0< zuRy&!jx~G}hv$k$wpzAJ`qW;KHR9fb#8P{wn5NOtJ&SY`UlNj8LmT5Rx7@rF! z_ohn>zwinC${qT9j$@{N?X}UfP!gRVKW_e}7OCGjmLMvRsV8GFM?{BnD4rlmeA@$1 zx@)_6lOBhKDSzUA_)Ov(z8l{NzZfm6ePb?2%{_6$d~31t`cM6yImfqKyv?KK-GM1m z($xi}1o2cKwbd6-#p=kmwsjf_sVXn$}BW-qq#U99+c`QesHa>!W_ z)#T32$(9yBMHE$|DCen-gU-%RE6HfmlaYlG@F2(aZ+Rf%0JF z{u_&frZ3J_q^9EOyYx9keeR;F#<5|4JT?mSKI$baXf(OGQV8#tq1rmzQ?uP=S2*?y zDI3r8Ijg0GIeMc``CQw6=pFE&SF~6gi>Inui>H@bh9E~`XCh>of@?Bu?+KIA7q}J1 zRJ|}J>S(9Iet=hjjkK@H7DHG@F<)!(g$~ZT&Kqj5jijI+mT2u^S5W$OSwHE}FxK_xWx$|SZ!u$? z5aWHA>noSoU3W{EJgvK^GoFQUYbW@hM#HGd4J&khk;q3)skE40y455m zE2PV6@Y1w5j5O!c1-8WxybIRNZbg5VA0~~>E(Y2z+;jyXMNGPfx`}yra{>N)P zTZ|;mmc%tbr4N`F95LZl;i~`CqO5D>>Ds&DgyVealTXQ}>iLE=mluv7wVeJu@oQsF z*JyegH7iJ5dobk%{?wn2*Q>zVPrIj2R4T>=RCXzRXDQ5C+ei<;;7WYG2F(PGOaCT3 z-y*#D?4CirOkR~n%*QAB-#9ElCW$LYp+s&+jFd=8pZfaoz5B7cC#6)z@MD%<6Tv=j z-DO-EF)I50xr>MhnoJ5`bwQyhoAr2k2K&ipG$+@TacM0)M+##U$RP^~+JkY$oHT9D z)NCEiGm)#}WH(eFu$Rq_%SMuoO`ZOcR=UB{gr!alC_it(zPE4CrV;r0_o$yRxB z0afk<%tPr@uF{{q?Ol!=x3ddv&L_uOI}x@#_nmllyGvq-@#Tt5EJv+S?HLZowe%N z=2RM4tjs`TGMq8PrLFV}Y~atl_rwd6LhYWz2C>}NZMxbFlVmVxbDY;`l$?lPLzlGu zxHSW|x32dAlB-psx`9guP9d?skglOuEY^iHfZx_Mo{afoj~74ifG-*;AHQf^2+AYw z9Th`HiX#%mRmRAnzL+l2@T{!w0lZQZyU$A7;s?e~T{wArR;qn{eS6}`7^{6xj{>g~ z8hfpmEhxy{Z^0~oTva&cEu6u{nb8`x{?ie@yPUSAn(TKvCfoIDk8Jx>JnvcSq*(q8 z&GwBC?>99@6cLS`Tblj?PwQ6lK5tpJo=YY#=id-#jLt4XTHHKSC(#j-zDicSmpcmawrq49$GD8FPDJ*+oK}nvwz|$J5rn5A!057OW^6mW$>( zy~}5ZK#&#n4>oo?uv;Y!e;eUJ@9kXZ&dqv$^8NFN7-#No7)F|RGn_E5NY-)1vH7<( zMX}|?(`m`j1G(L%r-`O}s@`3a11oNp;#G~NPEJmbwKhBTXzojED5c3e{3$LpqGZ=` zd>j5zFPT8D};T)F>@$r#%#%&6fnu_O#Ra9Jfnz_5}niSjo0VN})`p>D>(n`B@BRF5d zy6he@G75GOM0qJ->pT=axxc(Kig=n#lWqE-97yK0YqW z7pV4KzI9XbmqH;4^LYvmATiFWFf*3GR@c_-iuFjJ~~uSAO-y zuuCy2b}nfD^+Z;qrrdZbRQ?^4A=bpHqKnn|zM`vTz7AD{Y=y(*7)-cVj2Z5OW7vUF z@cZBs>B7cqNik=i{-!#VP)THPZS z){H^icc_e|HY$$8E)KIvR& z8yn)FrdxvuW^hYd2=dp6wtR;WRY!j6dnOLNv4oGm<#L&l+xv zon+#39Wp9Cyy2=jn$JFim88E`R4fbi^z^7+T@HYCaW;E$B`7Jx{LvDzlN$Va4uZr+r;Z^X_$Fb;;e`qNzOorcFpvtP$17wk-wD+vnK|Z(AAL?{(E`Ri?;~FH{ zO8L6aq2l7el#b@`yDZv%N1C5D zO8w%I*8f>?)4_UXrS`IP6hSl#L8i8bqWC>>l8vqx^RUUb*@5mH=zvsVffrqAQGy@x=NOxuq=}HV(`U@^ zt#?dfO*ZGAOft;Zxj8E2acte)THBvmd2CciU8zA$h{Je|CoiSA-w@^15}(E|X8DMd zAF{h{G^|UDRbg+SPC8`x?ntbvOdwFXFyCzOeMGAw$KC`wi?UzfKLpTYtK8fjIV^5k z1}Ey^*4nSnUFH&04K0{vny*1f5IJ=);=YxYl~^`4z@F}`CmA~2cTb@x>0$ryYLRqW z%t@&ZE8r$no@jRK5Vs^Sz|m$dAAiYM|y)044JI4C`e2wVJiVX&|Umv1WfJP#@jtcpb-$zq+C)X5fY z{3?oG;#EZ(gtisLY%#54;TUwGdZ-%x4MwU$6<7P^w?DZu5!azlZw|eC(iz_%+e`9F zOYenW26IEXy^cMTxXmxX`=1JCB3K|uE6MEEYqKJNM%|1y5034~t`1nOG0*#X9IssZ z$%}x8gkvo|7R|O~GZ_>}HozHbAWu|g&3nYMt&jb>+03CAT!Jiub;psI!i*Z)aRRy- zmq!o2*clf`tY$YZh@UyILUeg+XHfF03`@X(q%!K-d!wb+uac<2JSMicw=MY0x+n+( zOUGTVt{K)(n|R#vc697@PDxFrk-AI=s_~1SwLJjFJmF4=VJ`j*zY23r?H5_|3YmRQ zQ65p3H%zceD!0FY*;b|R3Rc(tW{whAp(y^;^D=&wRXFNu6uMPQDOfuV4UIsu%Fryy z<>~l3YWMBi79;sW^(41n#O3{-d>Nc;_Pitg!=Ykz&$D#&Bg~4S(lyv&x@Sq!P~S;^ zxoln3&+tG=Cot-4K+cY-#A_nFQp?vpB!LL({9Xbh??YmO)FezB)!W;9XD=y5a^LXTWNY^xXcUK4&7BmCv>gSK(GWlI#QM&%P`e1>`v0Mq{ND_IH4FZV1oi`kg z>IU(X)NNJvgzNNOBVLFTY@q0uk!f?bAIo@JVU*CDA}%IA^Km&x{jUwvch81I53B-K zPdR1a(~_ox0|WnXl=K@3zOwND<@x(3vB6_xyK~C!t}FRMe?41*0PWKuS!6>y1u?;- z^E3ODn+map#18B6S<3`Z(y$&y>$D&z=i?ijW35bO`>GP^Q^_I5@5`>nv8co#$xE87 zA>*YxRp&#@o8fq^`itRLZuZdYROj)7I9g_Nf?VW-q#e5|cVQonaU=&PE1jQa&4+j; z7XBJssBCzxcrN&Iu9w9TQ{l+tBuSi3XwF2`%YImHbW0Sq8E533h6D3|{Yaj5yX*4QBHB z&f|$uVZRGV@5G!>{$$j~DBRvk@Yv`rb7Gsk1FuiLa|NXR?*D03M7Az31L%mDKL z@*MMD?)EO+sN>v{Lq|5veuq-(!7_DN`SxNZ$MAN4yyiz!;&CLMu8qVs=*hYw{4RXa zyjb4DYHI>3FL$S14}#u2Xmj4*-ybQFmTsOc8dxd1v(%s0@$h|Uiz!=RUw(=Fy^3%b zPVbnBn~{Y&Kep_kl^EubG8K|99SSiEv?YS6NruGLwzs_a9Ze$P1#5o{PbGj{tN=1{`N z!^7g#^LChFH7KLL+9?xv+y~!bXVk?Q@i*Up$8Vlti^`hfg+Q^}Jb-CaZ=FSANGdAb&ZpM}^;XMz9n2+zA5dNb74{S?7 z@jzG@_gCgmUrv-hwx|&~I@@SSq7(h>KM7`4a&DWjhz8F`dSP@`1+8hnkjF7J>J&IN z@4fo*zl%9#xo5SNdc8vO%Y-t=99zjTli;<6y=~oqWcv8+AEcHnCd~^SY);eRW2GNY zEQ4Ufuys+W-!K>ouaaq*mnJu0)#`aY^b5qbI%0E5n{-iR`jDV_sq>N@HGH${VQNxW z;Jgb#MVJp#BLQd8XUH%v9A1Zetjei66DTU2@Fcg!<5)(k7n{6Dc?KoVJ_Kc4HuIr$ zwoU({w<^GrP&l4b zZ7XQXW%lJ8RIsCpIq$72MCoHg&K4_^6sVG&PgAW8GKwzk-gS6n6lY&vwQSNC=VO>%IS z-&dSz$$2S*yJ|#Ptp5anCI3X<`g%UR#`(4=>(X~NNrm-iM~kUJruNZ_dR7p$<#B#` zu)KRncQ#8$Vq0K%QLruhQGCicnKC$G7!b7mIX9P`Vv>Ug>)BGps7p1Qt_<=e1ZkTl zW!sNm9FkGH?9~S#jWghE@0ei~9YvH`v-mjk|)a@lJw1wjdQ5J_PNQl$JJ= zlQKSd@L+6w{3#9hy$~n;E?0}ZhP%}Ok@H)Xj&{N@CLIt!fE&Iu9XmcJUzFd52@w4y zqhKKhjACkf+PXV#+*Pf|C~zUF(Sy9d6M4RCz3vC-fPM)qOa)yvuc~C!F0ySNR87T$ zG{ezcXPjh8bn9P@{D3#HJk^iSwz&w-QM;jM{3A~Bad{n!_nyg{YK75Kjn#_*sPz4+ ziu1e#kU31?-k&3(gyq)S5q)el119wAgaG*){--c4jOVh_o7kC9vE#DoSnxYwaHfI1=L0u)DtbT!4N(2~N*6CKT#8>-c)buHLaZ*YFKs%{o zbdeX)|GuA8X0|)_QePi0A7#Q29t2DWDrsc8T^z{5+PzM?#JR z(ewP@MT*qc#b8?T8)4C_VErb>YtVws@LpVSqy1HtS^9x;F|cMBp^wg!!2R(Hnu$@@ zeqq_K1ysT|1rIByUUak1_=oAC5kO)S%_wTdU+bW(^o#5^255((65RAZpFf9$ByTIa~}2ayoSTFZrpYGS1~y*YfS!xJ*5>I*=h$iu)2n z1at*&-(WO%<|*@XF}P{B6VQtb(X;FxrrdCp%44V1duR7Un(oprQ!vEyH(o$Plg8I4a8Muw))5%uBzUE#dQo6$5sjV+dR1 zuiKF1zJ>mhj~prEbN<^g%vqx86FQ0{u+#210E_}UESj>fv5Dg~IthjEr5N@z+BL#3 zkQxw_)$+x@<++RW$6OBEf)*IYDq?|0W(RkCGFBjezgT&Sm=u~Rsdib!t!L8(`?Yzt zu}Lbka&Qb>!)6#*-^Vtf941&EQceHCDqd2QQP`4YY;JprdwXqkWQpSiutoo@!o&cfs&sFQ9i$HYe^DtgzhZ)f6$v)o zv@W+MeQb7SC)r-EA~^X=q*-3qZr?RXtIbZ(;9b!B@%5hNUDcdNWceM7f_M*OTIPFH z{jsk@MbSE6%J}khFC`wk{vW@WW4mS*Q^#Q#0q;T&KI@|vv24(w29B;0J!vNLg{1B! zcTsT(iJZ`(g;17T51)2Ry{WMz0~=5R11dqecONPS2tX_Q1*GZM=$YR2NYTewNhRK; zhUmqcdB@fT4Rnyt1d~Az1IQDE7YQ^&bDl?R^R+!Cr_YaN2%2-hAWNTwBX_5~HdS&o zn|XZ~b$v1aX3Rm8Q*G4b*#@Fs2_zSl0f(s?g~W>`<=FTZLB&a<2E4+zVWXO^xtCP= z(eMlLykVKm&P%n3_(J9CE?gj>WW1{Ey$-z*kx_Tw z{U{|3bc1qx!MhKWh`B3>b9qV0A*iO|fAa5l{4~~A29W#_ELZZ0B=cw5cl z06Q(G{%$ka+YRm{_VIPW)v%b3pWpRO{^3-A#9`kEFjbgM5_rJ2c zDhszDR%{KPApv*>T^$Xw=%x9<{jIUQMat=)mQZkE{Q?(yodwE zbF2+RRU=p0R27hH0We{U4S{u~AAYyy-n=+;MPwV3C~JN4NnnX3F^~x3jIF=2l_9Gxa{NkgOc@N4PMPw)ce8atY}A}2(5TJX?kXDJ^24Q~emY^^R%Y`u@5!bK z7W4_%Xc!RxQ9!W%oqgXP!7xsy;Rsj@mn`Jp{||qJgcLn-Uq?rWc`;G|ZW-Nr&?WrR zinw2qoK@+74GSU?OjXr=y>}ZQ3*@<~{etfgXJ8l`6(<9jf0l`yHfbw2tz>rAHh7|z zqwA22A#_%J8%4SiJODcBq^h>@cZX3#&QDaiF8}PnxyX43f@$pSBzO7-gy+0JY*9q2gN%CDI6T+OdwzDSqS zEpx`5Old`a!e3jnyvBJ}(F#@kO3^;*uJH*fqC?1cy~_YUfZ($DSC;<)PI9c@Svhm( zfF^5^CE&hNBjw%6oII>5KvD$qf5s0lU2=AXjm4C^?=4a_fwWOB)O;(||k^AW0d}*CF_bqd3X1a2V)2unkK-yoaW*y8Ot| zdJWPh&?~mF*DBdZlJD9Pyt)BjPPTVSq%!kEoXulx6GENJ@rwz=oNdnFfY*YU>?$$# z*&F2F?2uuvxqA}?`VT_CKg|vm$0GH+A}vXr_T#h!!Iy`;+@D#&?zWTp!${B*VA&lP zN4*UqZ6@dfh7+q@!f;R}$Fhmlz*UVT)ts)y7$C@gWDm{F?M)NQggtlp96rjE=BsVR zATNXU&fFl?uM z$si?}&B&=jp7qO8D4dAUZDW6Kx6$jYzSEQG{VDgk{!lAko3roHK)Sg5*34{k@Y^{U zhGC0)jEz9)n@w+|fM~r}LK*6MHc`2YJtHDUMTn@jG8|dIRlXz(rUwtju^!{(+EVvqW&kbLYM5cjaP+St_;v$^ zAw2#PWPdhl`4=C#{Y}&AsD7$r4z_r{16~C%CIC{*Yqr#8N-=q1&46sDNp15lIYfJv zRYfz+|LT{Lm0)uIcd35>icBK?D!y<+7#Z7~(?mUXW*UK$ zO8c0+mb3MP!Zmu~6glM&wVWUH4mKu_SJeDEJ#{&x`IEbEM__s7zHj$(VL2Yfe5@c8 zl_*6e@m}w>+1GLVa&O{==Vedw-ZiTCVfmLlGDWq}ig~t>b7v0&r(}Ex1r9NH)}eP@ zKT1QL^s4+FewP9}d(YWmD%P4ta9_Imuz*I8k?Pjl4YSAl zRmK`6N4M7ry9A4!z`C_@tatT9@UBg>I??(!Y}WW46meY}QU~(%+lzcD3ZnP)V7eZ$ zNoy&F_waXTx4Z1!gBsxHy328GofjDiie!k~y>1f4Uf#~tpiPt1i zBzcR6VhQTsZ%PoOZT5%cP?jHC=I%d~<)+12W_theJSC-aq4=XzDG_tDQpcBV%_Wz) zfvg>~x0ARh=5pWlIW%&A-ckGF)g-l{Jg@+at_y|niggi`5=kSRl~?cE;DGSgR`pB5 zk@HZ)%FLm-GeiOF@K`w1ILr}2P7Rw-;hpqjWmmxwxfb~ZJ~3e>J2oPbyYqDCe|l0y z2!x?JP8PS__{DR|--9Hs9tU4d8{Y(z{NY_-`6J3>e3Z*A* zYMy+lYz%p`9OysV;GqT6)&`=o1Q#w+X^P9HE>6}P8LeH{>wRS_ z^Ix!8vTerPMKAo$)U-5lkDZ0Btv3LvKrLhkD`v`tBpv6XQjii3NIkb+H%fR1A^%0t zO45SpdtC*N4oe%Fq)k-N=oWF5?;YtkcxQ{qQ>Fd6qdbG4uc$-LQMQT^i`w84Bx*Pd zMeTf8J?e@Yb55Cc`cu2JIP`PkO9~u&_RioQxLLf8P9f zp=|~Wv7>Pwp+7{I57N(%&Z9DgHgbXZIZ=+z{~(DLgDAeo)fJRO<;!_o$|S8D1aCgW zdYHVI8J=F?4;9dVr+!tL9kh9xLM(`VG`5egC&%Fq&`9>|tc5bBsgoO^*@Z@YQ_e$J zX7?vQLb-J}GT*Vkh2th=V{~_!B+eG^hAOEj~t&%ga=+XhmA!tt29<=UF zBfc`%{_1v00Bw<@xa6+-^zF!;I`6HQ3(laAGHg!`+YyG>xqY|gJ5#;C>;CJQ=h|cepUgL!3%Ls z=gVMdIwkN9>2E~Qikah4lvQ+Cyqp4@y$BP8f^9N0V5r$P_Z_F0e=LBz%{fd|Hj1RN ze|_+s;vzdpX025B1n+4eKaJX@rKOb&Bb_cddAWTdhOp5vP`&b|;*hT3l4@wi){;UH z^4DIq{dm0P-=!AKAf|i&u1)OHcK`o0?k^3>eCNK=S5f{iFBdiGzbMnIskk@FrY!Y3 zD5jK#_1~RnP{LagDI@%UYV=@we;Wh-y7-(IEL*Y<1KvvK8^n}{ zCa<$rcs`iQ2H1EG$x*A%1O(etmV43rlJ+HEgGiPB-S-CkdcNt{%=ceJ^RdXvsfq1Q zcurAm9BR_!#8h&2cZ_?G6JlhA$VyHc>`B>K5qI1(yEk=qQl3^f`P~xVLta zwvv*^S-eWaC!D{G#BBL6&83{%Tx)C8yav7D1d_bH!2hIDMUz;iXX{2;G1qH;*gGY2 zRkH@a!GeMYUih%I8`b-s0z6b$yMH^bjy2)&lMj}*)uuDWKw1+|$_Bjtf{9)du*ceQ z%P4+7;e&PD5%Ug1^iR>)Lb8lLlSfdoXIX|l(W zxt&w({w7Icb`Hg&RiDaspo zwqD1U(1PVd%)`*A=$j93^E)WeK?N3bUZbxflsNgPeBIG|o(c#~b}=;M2Sl??%!S}B z6G?)l-KtBynX#(`bm=5@v)X%YcD^DS86r6|o*)<_85Dx#1MJ6Zs&>r#fAl?T`DQ13 z*=uqSznK>wJZ^Ns>Zxyf{#fV5(Q)$leMO;`IxoGI(H4x$B$Cxp@}2W30AIInD8!g| zv*}uFgS^(H!g_P)L(E^JLT64G&~N`|HDj`{cH-#V+`Ov4Zu)-{p(`KX;Xx{Qg3`tK z|MDWPx_Csy#nY5of%p%eXT)Ck>ca)oo4~iP``d{`aMe1)*5y)bYz<27Wit|BDpxc8 zoLk+${ju-aRww0EGXp5e01dKSSmvOcdHCPYLx-h{{51I7CTVCLZj-5xy+P^%^l#|P zA1&6r1RP+|_VuZkj#|)gtH*NI-=|sbo-hc%X?2wS$ngOuUI$QPu>ouzxn&Ht3t0ETu~F8>>Z%%7%|u!dJgM}`xTp`;Y)Yo!f8QH zsXccS%gMIviMJk45OQoC4jw5s+ktv^MEG&f>dX*!m=n&;-*_i@@w`3TI|;d3&|}#D z(!AKdJz3r+jnq_DI0cX#vXjosP2N)U;ep${*h*cqOn#Mn@?Pbe_FP zEM%_bJhjgJWAkpj@Q1k{LBe_4pP}Ihjkn7Qf(j{|vo_do?tq@9*Lzpp_ts2amcT|& zZt5kz?r^8hi(IC&$*QWYT0f?bjdCO)V}!8ODWELlYX+v8=wUwJwu|wO1iRg}@p6wh znn?NKJ%nb ze&QeC_h`Erf&@xnLf7KA+KVp4&SsjASGpf;CW_OXaLW#p24Zx zoKqsKv4B^|P6+%AAhqS>_Yx8i zU|+TX38@U|&@u>J!rjo>A7t$4z9(GwZZY-4Q=-UJ{FZuYI`QP8M0PFKx|oR^Q` zf2T|;V-^B{nyBB|L`j}%&TeV?sqzJ{9$ViZ$Wc4k--mU9Cwsn9Zk}p z$!^ek2xKX;RAW(9&>tn68EumUw1~cEpaCAFZ}2zx?>amLY2QE&+TP}c*x1Rm zfL|S-6unjQ?qht?W|Qz(-<_O=TcNkTmLd*Yz}r-Pa&(7b&gxmme!xg|JWud* zJwH1I=hc$`_BQPupfEhi2Sb47IZz63zrLH^3p7=4aj+Z!v4&;<{h`e{sXP036ChUG zu2qJ>%xg6V@9`Mq$HTh9T3=4?qkzeR_am%z4lLTBt_hG4%boy19jNR7ni+bl6U98I z$zkVtEAr{zspZ{b^W$YPLFv~($hEpbuE_kJ%fQTc3HW2 zGe~$`Qd@gpr*u?{6wLX>gH+)B4lyjAoJ^Fj%Vq)}C1=1a7&L8y-dbWYpQE=y&j$EG z^jepWg08l~FS@IH4{SwGM|*wYd%v{*Yf51zCv$~zd@2K);q_;$^{g4ge%lFTj7Mya z-iPNCr$b=7^^u?+p8B4HRypr#C;fPlRMm>{RMi}?{lUS(ps_Vbf4rQl3-se?OM(9B z%)U3wHpO~+@s_torp9EO%bG* z&|7Gs1p+zw|8wsd_r9L{a31bc#`-e$+GFkc&AI0Htrh!RSB;$HAqfBgz`jH1OOfZ8p_X%0wAdQ;B=Qkz(YSp_)%KSQbIyXixpPAW6bfCm z@`V=^75!-{ZLMhC@31;EwVHntxp^M|BptLj+A}Ga7sRaRpAZ038>I2>GngJ7-zG)W z#SXmLZlFr-M|18TGptDr02olyXw7+@Umz)yt;E}`s!bvLd4Iw~j|RAs6B1Bn1N!WVwI?B||-??TqReq+OY<#LH_+lr$$d-;}#b|wt@ zVXd!XfJG9lyVuutdR|SjAB?o3-jl&~$mVa%Hx+se#@cLeO7W!6=CDt)ML}fBM_&(Vp}ibnZ(fHo7^NuW0epMm1VZove;Iuwb#TlVux1Fh?a?StM07 zd?x49@1jzVE>q@GIhq7sfL(qKpza0L^7W!(Y-&cFCB|Jv;hv*C_>aCRX` z3&D(qx;P{i1ZUSKm1X4#L`t4{w-qb%aEzqN=lHBw3T4gJ_p^J4rRnWXwRw!&bh>uk zDZp$-8glu{TrCes!v{K0L0TX#=fCSe&;RjEfY(k&y8 z!;e+ph2)imZ>G?R=gWR;DJm)oUS8^BI;($U$sc*J5OCBnpUWJudvG2|7lYQ48Fgte z->`1z4#ylbiIg0P(RK#Up`}&HL^g!3(uGVz?3Ot;^d$H7{7F~^WcDKkt^Ag|cZgYV zC!676`*$X-g^}xRi)Jl$7o*|6OCHQ~@Zf5u6b@kAB|vhXu@8wvPS-i`;p*LH8=H?D zM)R4jp~nW`RS1MDx*Mmuc(k=)y*1SleD?kO_wg>A@A-)h6Z4$cUL>yWG~23Zz5s2W zpDusyUo1Kre36uWEkBAbT*DozQ2%|Bdsrn1*^Na)1@oKTrxWBadt!Gohba|@a;IDH zo3EumyIymeyuR*H zgUesN_0UEITJ(=Wx#YbrkApqrP!ewjGcIroQc812(;5^ZueaA&@|y$uQ+kramm))n z)#$EXPWt1%;QlOzoK&++?ZhI7XJcU4%^sRXNYDxmm#|}(lSe{Yt9Kj>q8KyYt37rV?#jP6Z<@(w7 zyD&)0iTNE#zmw5h^oq8$gyK^Y94@SV5DuM?+Nc|isq^*u0KbZVvC-)}H)eBe6MC3V z=YKc+NU+HU^LxP5My4cu>0tEQX(`gH3Mv4>h8Ii;MxOtK7o4BKLs9!I4{tk%1YC8w zwZ()7;PS&e-I6w9V|B zw@F#RcW2?}G1bvp!QL*58uREE|FYTd)tRAxObnld+YEaorDFRP%7aeLZLayZO#m{A zt{B;`lPit^y_e}~Wsq<;TF)Y(Fuk{G3Q4=%&dXKq`MDS4z;w>y!N}(<;|(`Y|L%F-f!_5X|AbC>0SuO%=~p|x=X^E-?`$J>rZAC z(yc{tJwdBH>mgljv2FPgo}qvPc~lA--_utv#P`V`nUlPL4V)G#OLqt-q*t( z4B<0kF&u?vVp@)6$;Zq!c4@iKu^C?+GkGvD(JWr~?iEzcNK5+chRhnuhgqn_G_Sn9 zHqi?4L-If;QMj~{*(>?P9p_MR*XoWy-pp^-kq*t8Ea0;nDs0;Usq5YyO&)du+JI26 zzJP~yzz>cF1-0`2Mw2sOALC8ZNEazBlu;lnPB;A~!8$5$s*hFuI(j26^yt#vsx?VY`2?nldbtR4^K;a92lJjoU2fGF875XSTf!54xy zlh&$v&ZvOzS%KQZIsNV2I+*1tU+}_*9NfF?b9eU-vRh zQI2?@X6R|)us^UPg4pnStba!+HYSLZiTPwCNBWvV&hse6hc)sbQsU_1`@#3??#a;b zLEpv2+SPr(InRy8N8L*Yn>FCb0~tXxW~P&3aB=t`3krVRr(@HM>fLB$x)>rV6R-i7 z7F_>GQljqn_eliJQ9Wj2vURjG3V6(yh3(rAka0twD&bDx@PMtv+)Viy7J=^Z=`Ypw`u2XJKaE+uFLrb$WcBV$55B@vOV-=3A z+UN`(ZXXeVn+g9Wx?^&b(R~@fF-n=6ki+xSCf4M@A(ppDGjzMwe>{t!*AK0 zR*HG)Fzgfz2AhBX$6ES?La9j;G$JA&noPM|$;X^QRg%siCwrDgS{iz`;MTMVzZ#=} zgrOZ4W}3E!`QV2`g<6Y8<;mLN=@a5H!G7S*X zLN+;2W!W;;&Moh?hR8s|H3d12KrOMvIF$SlLlC&1$I3AHoiZ|!Oc(S0uY_)nw7 z+?`3R_9*bwcNsF{+1dQ{-5$5MwsW zrj-i`Px*SqY_BdYZ*D`>iCc`^LIBBZ)L; znHlYhq5e|a?h9A@1YoQ|6p)mLD5c-$6NY*7ZAhmuXY?$$gk z`T9Ds`YYJLxQy(caAiJ7ugGk22|}{7dK^P_rJfVUC@2Y52`{D-7RZr|bCi=SU9H}e zm|(d%xJb;crEZY|4v!O+W_Q0YG&8-rIN(G?RGR2GzjMDNMRe`9@yytA9FSPcvoExaZIpqHV!)+TV4T4E^UzJ-<$`U1EdxRLPwTyLHLF8&1Si&Ov z9183Ol)*iC-HaC}Z5I5%H1r03HR)FR^*dA*?v)Rnq(@vi)TpVGbECOdml2ga#}*y? zrK;;p24l));^T5kuinOmYkaqy$fDdV%D%Lm+0!Mdz>CC-b=`Wjrf=Qs};ce#M=FY!|1}9~+A^ z0uvt!eg@sgu+s@1kRZq2pbhd^NlyglzL_Sbrk<7U@A<(%`ZPY?KGl8X&=byU_x z8#e4Zv%S3UQx9req})MI4E}tfs)8ujLk$&NeFEKm4rA{8q2ZWpkE9VpUm9Au@QZ2W zfKtucFxv=7&V-1BoLlz#kbhqBM@WNfu-0v_{fGNnS`s06+Svt@JnJ}vt$rgK7uc}B zqo9usHa$HR*u!&8UN0%wl<=pP2r0|gtP_73)@Y^jz4*EDc6K_8Yf%cRMscI*CZ&M` zJ|*_7mxG0WX;IVhJ!C*c>wW5hsN^GW&Fg0ylO@$EY5jI5%|nP`NZmO45|k!f)WA2G zz^Qtvuj3nS-^UR>_Gs=vnlkTlv&zF)v={mx>8(r5k0lS!{H@vJZD*u8_WOOe+HAf;x__e>qWB`9 zX8AleDVAoUImlACyDf*uR6=ju_1&E{uHtr5 zKkfof)w{@oYdE#_LFDNWl3b?yAKahbD9LL;PFeNB*)7Lb0!!{XnS16ztgcMV*B^s( ze2W+*eI4X18ZbZJXZ|hc5Bf>J7s=EgTCQ@z27&Wak6{D9Oa`5*Ej&^Pl#BxJei zh63KS`QaX`1>!HrMb7a67^GtqE6>s zE+lt4Z=dJp1nDSWd5VnXv~z>Zs1{bfUGr(p(*XLcO+!vq2cw51dPCvCi0FN z6vU2ikT*`yGS%>KHIIGUS11q&075!C;@|65U8~;(B2u~EnC2XNH`L>Oh|z~t02pCQ zy#YwZXqLRnZ(5P8^OJ{taBkijEh1GOG+5~~<$Iui@=!CG7!f^x* zT8BO2sLI&r&jQuq8ng+ueeZst8X6B5qH;RNDI1~Zb!eY zN~rStDzfB~SOGaF!$l`&8!hNWauyY9!D=PVkx^RC?XV(-GBWw%>OkMXr_qpAqlEa_ zoL00I4ZY!b|8iu&sgNL)Stlr(mx@%hK>Lf$h)FPWptGK~(a8QUj}Msba$dx@>~*(W zzbGMT_;eaf@dg8c^1T590HVT940zK1>(-RpUByokUKXj#qvgSFM7jNU(2T8lf2DPfsLm8~8Js9u%MWW2uoBIx{hNXH$$d{kSHX zA#x~uA!ncN`F*yQ)~Hc)8jCldj54f zFfHC@Q1tFj%$l+OLgavJ@5Lmq(Tmsm4WW@uTdX)^aiXd$) zOroR`Jg~gjjCBuq?csW!$b3X&ArFnUp`4bOw@>dICfK@RqC^4 zzHc3025&xis{+#WY@j6z{MY>srvYIJ*vGF#_J(C5EnRP;63STr);j?4eOL2!60;}G zk*gDHca_^`CipW2CjNGR4gh%LnrpSSh%K!Cm3zqN^1Iz=ebmp%JX*w>$UPt!0;KhN zygBw`XMe~^m}qazKIwlfj*VJOkmt%*1b{?43w8&(e8ra;2M*HbLTZH?Y`@G*hGCWd znu;@|KMPHd8c>F}4a9f^gj!w0vhxnxXc@b@S-?~}RBzwZ`uW+{oOL0dJK5eSJj{G^ zGL%dG#PCIJps!b==;Eo24&tw_SIB5txhxN%Ngp?R4m;tn-2|v*Cd22oZ8x(nXp0jk za+7TTi+v~RHw59Uvp2+6&1_wEIptg1!0vRn~)~)Y1ye-|Urwq1-)3{@FLC z+j?V0&x17(xlgmJ%({h!WW+SBtZY_aEZFZ-zbPSf>#I=L4P;EeHu~v-YZg(u$PPw6 z6SptaD2Yn=&5^$|rY;?8v+%JDglmJtI{&nn3i*E1xSQHp-SMt>N&JzOUR7$uca zKFSY_ya^;aZ0sV;>qn7tqnVAP)`Tx_!2Z<>{98bQUy9=l=9Adn{bKRl7XR{<^k;el zowU8Yg%fE1x@ErzqIk5FmVeJg&Hf==TA65T@rgya<+P8?{YoIMs#0Qufs8Amn zcx^%-v(i&%l5>6RH8Q4) zHM&AZN>O7M_pcA{b_ySRDxB~qtn#-mHP!mf)GAd@I5%wL+=w5^NPq=jBRudU_j$0ky z4*AN_T&xYeb-=IpM2Pco+WJJV*jUJH2B;_&!I?b?n`SHb*XBX{F6JMiN!~$z*9FP! z0o=4HmJdOfrfFd%?K9rAx!Zk+Kobf6y81;a`;hjNjn$bmQlj)xJUWGSUhBNMhx#v7 zIDAi?Og&cZvK2?n{-6j{YM!K$vP{lxqIrY469Rio#td)ARmnOOw=P>^lEtry|%!Y*L|GN3Glmsq}%0v!tR;jef4Y{ z&&_BkU#^{X+qJ_prqE&xnxuWj!)KvK@ct6j|Dxc}K!$WkaJj7e52`&<9a}k|{2vsd zXFNAihh#VN^@)x8DyB0|z{e5Lj}BVs{gTtEQPep(;r4gK+jw_a>+Dx@t&8n7DGsEc z{MG{&w)4x8G4fn^a6*#R}vzmj}$F zE?_A_qwuJ7)L^7%ChgR~^Cm_3PYqFxn>hoG(-}_tb2j{F=|j?dMM`tskfjJYp$Xb8 z7rhyM#Dgg1H096Pl{r=~Eb0!&v%PmaF?o zZ;JnFJKhxRmAm$-y`{0=bj)aoA=WyHogTl2-d32$GvD;;+>WU5y=#eyUFwt3M81qd zrFa8qFL19rJ9kr}u&2pTb$M?=nV+TFqUEA)m*g%Ia4tLi=BWRBB4ggT!W%p$qo*^{ zbNXwP0M)m`b5n;K&I(?*RiblB6>$qc{@}pON}#YJ^q)LLyEW;L&HnFdATXN@F4daNVV|JvfbKYEi z1!Par4oq;Pi0sB9UM+8Dw|RDJ9UhxrN6m6t8Pi_N!wzG05KrU2&atk?uG4Vb@eg*p zKoVE>f?Cr5OGFiFixcYd9b>-6ctUL7f0-dC4JmcWQS*Z5Tf zCTG&DI;sE7Lv$Nk$y6v=Zl5szA-h$6vvUYRK1Q1f;)@L7P?n#(ln6g1Z~nn~!%q{r%cTPYs! zl!3B=uJX;5p1FH(fdd1qqofO{SS7^wbH~4&P zcz4A;)8;nXB2K;8@nJ+;Wd|Om!LSnDuduLQSe{AM|LI;-z$XUL{-A2!cnd3#Sq1$w zvE3tlo%jg*?VV%VdRe&jvun3xtpouE_%q~NNh(8*|8yk^ML(J$X9-C#*p^O)3(w%O zMxZvEx{k{4eC@@CPxT_`#@u~M`)Wod`l65jFq=BX(tW)n=jgUen3jh3$u;5AYS|pa z7T9jLoMF z*h>S@?-~<(HXxF6K+NFyD-%;5wDz>wHPGFwym(rBt!G@(0eb7d_-8-6t9ezP#hd&4 zV=E%bg}TWnENO%0!JcY4bY~}ChrdDItI4Zz!Fc>DRy&>>=g z{3UW%^QQB@>5=H?)4m&yH}ELq%V@lSrSdv8z)%wex z@Y}sQzC2^s0#W>-oFh9qK<@B@oo-F-LD%7=d@ZryRn(Fvi<~ww2yYvC<2n=gL}nDb zjQ-<#p`Ii_u25t~JFsSCG`T!bg>tJIO6wtEBR|qI8eD52ae;YPFqc?Hd=yi}SodMQK{p zv*p$5zq$#&Wo-oFdzwMPbeDtCxF&}3YVez$TC;qIl3Xo1|BAHy{G#Ov*}b}+Iwhes(`q)4}r$yx^Z@Cp3<6^{PL#Uk%t zd4bNM={h#0=?|>_Hrc$;s^_*>p?8j*z3F|iElgn!a~mMVc=OVC=Em-D!eD_b%0q3{ zIJTaueCH_}xPFPrO|#-pJFB93&zIktWgBKc*i+7U?}|u0vDYl2p<>{fEidm_c-y=l z4Qs_QUO(<($uEfOBRGFW&~j76Id&ravFsMLSK&vdXEb4(+K zgPENEX;@hNiB)Ve$|x9>xw50)6!sO$uNIyTq<^tN!} z%0$}U$jHd!-u-->QFfs8ES6kFntMsAWl5U;I*yk*V+MJOqUqJxxZ9N`zG$h^q{n-xC^GxK(a4iQ~y(bqBfWc5jPr ztv9&vk|f)g%&V-&lFMMTLtJZp$zq{pnxp8$5ls0YCQ)k^_)ap{HYQA?eVMd_d^m+B zh_J>VVI0FoxlO0%wJk9Mz8(T@q!9uC3dNzF=l^>f_I?Tki30%9Ij_;Q9h8-&sWbp^ z&!y4CafmaqQ;Eb7*g5A-xkcr2S2Bj#iWkn`*%xZ zcuN^kxA{-2*!d2pF(F`CkH2B4_#x0&;sy}09GHKGBPeS+wz&7634ak2e^RTVqe47> Yn~aKzoKq_JBR&LZsOT!g6kopk4>`);D*ylh literal 0 HcmV?d00001 diff --git a/html/images/nodes11.png b/html/images/nodes11.png new file mode 100644 index 0000000000000000000000000000000000000000..5f249ba76bcab801752cccbe68e13ec93704ed25 GIT binary patch literal 10199 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 literal 0 HcmV?d00001 diff --git a/html/images/nodes2.png b/html/images/nodes2.png new file mode 100644 index 0000000000000000000000000000000000000000..e2fd2f15f6e4cfc65cb4f09412f25e7c6ab9a601 GIT binary patch literal 13840 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 literal 0 HcmV?d00001 diff --git a/html/images/nodes3.png b/html/images/nodes3.png new file mode 100644 index 0000000000000000000000000000000000000000..dee0b83c7c2fcd4c8039bce3a7f405024853afa7 GIT binary patch literal 14113 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 literal 0 HcmV?d00001 diff --git a/html/images/nodes4.png b/html/images/nodes4.png new file mode 100644 index 0000000000000000000000000000000000000000..3a7b4eb9181c75d6ec4d30ce616649c9d9c634a5 GIT binary patch literal 9147 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 literal 0 HcmV?d00001 diff --git a/html/images/nodes5.png b/html/images/nodes5.png new file mode 100644 index 0000000000000000000000000000000000000000..8a635513b8988cb313bb3ad49c9780487e3fa721 GIT binary patch literal 6360 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 literal 0 HcmV?d00001 diff --git a/html/images/nodes6.png b/html/images/nodes6.png new file mode 100644 index 0000000000000000000000000000000000000000..e64709ed24d932c85998aec705ad97ee3c545d58 GIT binary patch literal 9549 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 bl8Ia7_o!}DTQ88|h5&VCZKZNWtC0Tz^2{^Y literal 0 HcmV?d00001 diff --git a/html/images/nodes7.png b/html/images/nodes7.png new file mode 100644 index 0000000000000000000000000000000000000000..04cc1b2c7d598fd3b53a2ec6b00079668586c378 GIT binary patch literal 11456 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 QX&byL67s7f2LodN2P!ZP^8f$< literal 0 HcmV?d00001 diff --git a/html/images/nodes8.png b/html/images/nodes8.png new file mode 100644 index 0000000000000000000000000000000000000000..52fd69782e0a7f9dabc265e5c080056bd0c62f9b GIT binary patch literal 12545 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 literal 0 HcmV?d00001 diff --git a/html/images/nodes9.png b/html/images/nodes9.png new file mode 100644 index 0000000000000000000000000000000000000000..dacace137431ca7bc66fc03d597254975e488961 GIT binary patch literal 9987 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 P3NbxxajNX3W5mA!gs4b@ literal 0 HcmV?d00001 diff --git a/html/images/protocol.png b/html/images/protocol.png new file mode 100644 index 0000000000000000000000000000000000000000..c3cf40df43763315ed9aef6b7b9b1485d0247af1 GIT binary patch literal 11815 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 literal 0 HcmV?d00001 diff --git a/html/images/route1.png b/html/images/route1.png new file mode 100644 index 0000000000000000000000000000000000000000..1ac0eb38e2b4e17728fd8b35ff14bf78d2bbcd8f GIT binary patch literal 9396 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 literal 0 HcmV?d00001 diff --git a/html/images/security.png b/html/images/security.png new file mode 100644 index 0000000000000000000000000000000000000000..3ea7669ceaf2679ceb5126a4d35fb3599dae27e6 GIT binary patch literal 5252 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 Pw*apd)L)g$n}7IUV8RSR literal 0 HcmV?d00001 diff --git a/html/images/tdream1.png b/html/images/tdream1.png new file mode 100644 index 0000000000000000000000000000000000000000..5495cf88dc1252aa459839db87e2376e15797740 GIT binary patch literal 7891 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 rHzku_1{LtQ;TbmGJF=TDqC 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 IM6N<$f}jf@TmS$7 literal 0 HcmV?d00001 diff --git a/html/images/tdream3.png b/html/images/tdream3.png new file mode 100644 index 0000000000000000000000000000000000000000..8af2de3c4bfb3b7f40fbddc4024d64f31ff030f8 GIT binary patch literal 7842 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 literal 0 HcmV?d00001 diff --git a/html/images/tty1.png b/html/images/tty1.png new file mode 100644 index 0000000000000000000000000000000000000000..6b0dc3e0b5d45af7f1be3f956e830cc6e1abd72e GIT binary patch literal 12090 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 Raic|mlAOA1rL_5{{{fKkt6Ts8 literal 0 HcmV?d00001 diff --git a/html/images/tty2.png b/html/images/tty2.png new file mode 100644 index 0000000000000000000000000000000000000000..f2f874d1c5c0ed8cc7602ff45b49163c16ce2904 GIT binary patch literal 11771 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 literal 0 HcmV?d00001 diff --git a/html/images/uarrow.png b/html/images/uarrow.png new file mode 100644 index 0000000000000000000000000000000000000000..98d9077a3fbb66b27a3ad5c32ccec90743ab21ed GIT binary patch literal 1022 zcmW-fU5M6I5XMJT5OLM+L@_on6K2VXgsv2G{aCFLSrbI)LN8QCM9fbx!q^s+HrR{l_nrg)_q=mv&NI(E&)K)Oe`VLy*;7TN zt8Z2B0Q<{)3#Lru_x|+@-69iZ?Yrxi6MFl+ZBFEVnRV~-ncqiEBt((|6;pAQP)U_i z5fd|UlQ2n>B6JCtbSa=hEW|@1Btxp9Sc<1aN~Tnbm3T>%WYGXH0JuaI851>AbG1-Q zwNmn(Zx7|DSFZbRA9K*X&LV6UZ_TIg765>@M;pkhIFK7dNoBLM|G5Ec{PDhj>{;7B*-8d zrr{c)ks75P1(_9erhz_u5fm0QqZ{zx0YIJuRz_5lo5`ULUcqNM}VgGcXOW zFb6kqKr~I$HA6EsOECeB5fv4Y4V^mXApnDc&SZ=Ncc{UIW^@A{Jj%&)z^djnqN73( zR8}*9H^QUf6^NE;xmIYURw>To2TpcKV;BBl3#ua@GXR8s2!L$b?S_BpI25=ZDZ#j>+Qp5W<;l*MdbW(dw&K#}d9$va z9Pj#J_of}c%$T`x=CdK$G^b~9?9m@@{`bak{ImPY@YpdK`e@;zJs&>UesIV4uU~w= zZ1BXco&`r=JRNv-0934`_nt0e)m84qYC2y literal 0 HcmV?d00001 diff --git a/html/images/users.png b/html/images/users.png new file mode 100644 index 0000000000000000000000000000000000000000..50bfd0fb44833b82b44711896b42d55111ca3635 GIT binary patch literal 13574 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 Gq5lJFz3p89 literal 0 HcmV?d00001 diff --git a/html/index.htm.in b/html/index.htm.in new file mode 100644 index 00000000..0edc83ad --- /dev/null +++ b/html/index.htm.in @@ -0,0 +1,140 @@ + + + + + + + + + + + +Running a BBS under Linux. + + + +