]> git.donarmstrong.com Git - infobot.git/commitdiff
* Rebranding from blootbot to infobot
authordjmcgrath <djmcgrath@c11ca15a-4712-0410-83d8-924469b57eb5>
Tue, 16 Oct 2007 04:36:43 +0000 (04:36 +0000)
committerdjmcgrath <djmcgrath@c11ca15a-4712-0410-83d8-924469b57eb5>
Tue, 16 Oct 2007 04:36:43 +0000 (04:36 +0000)
* Initial release of 1.5.0
* Fresh start on Changelog

git-svn-id: https://svn.code.sf.net/p/infobot/code/branches/rebranding@1551 c11ca15a-4712-0410-83d8-924469b57eb5

38 files changed:
AUTHORS
ChangeLog
INSTALL
INSTALL.mysql
INSTALL.pgsql
INSTALL.sqlite
README
TODO
blootbot [deleted file]
infobot [new file with mode: 0755]
scripts/backup_table-master.sh
scripts/botchk.sh
scripts/dbm2mysql.pl
scripts/fixbadchars.pl
scripts/insertDB.pl
scripts/irclog2html.pl
scripts/mysql2txt.pl
scripts/output_stats.sh
scripts/txt2mysql.pl
setup/README
setup/mysql/connections.sql
setup/pgsql/connections.sql
setup/setup.pl
setup/sqlite/connections.sql
setup/sqlite2/connections.sql
src/CLI/Support.pl
src/CommandStubs.pl
src/DynaConfig.pl
src/Files.pl
src/IRC/IrcHooks.pl
src/IRC/Schedulers.pl
src/Misc.pl
src/Modules/News.pl
src/Modules/Units.pl
src/Modules/Wingate.pl
src/Modules/pager.pl
src/Modules/wikipedia.pl
src/core.pl

diff --git a/AUTHORS b/AUTHORS
index 5efe7784f1fd9abd6aaf1e28acf2f9a944428245..65c82c28c61812ea194ac7f4f5327ab9e77bd575 100644 (file)
--- a/AUTHORS
+++ b/AUTHORS
@@ -1,3 +1,17 @@
+Infobot (rebranded blootbot):
+    License: Artistic
+    Main Author:
+       - Tim Rike <Tim@Rikers.org>
+    Other Contributors:
+       - David Sobon <dms@users.sourceforge.net>
+       - Danny Jabbour [GmLB] <danny@opticaldelusion.org>
+       - Danny McGrath <djmcgrath@users.sourceforge.net>
+
+Infobot (original):
+    License: As perl (GPL & Artistic)
+       - Kevin A. Lenzo [oznoid] <lenzo@cs.cmu.edu>
+       - Patrick Cole [ltd] <???>
+
 Blootbot:
     License: Artistic
     Main Author:
@@ -15,16 +29,8 @@ Module-Units:
     License: GPL
        - M-J. Dominus <mjd-perl-units-id-iut+buobvys+@plover.com>
 
-Infobot:
-    License: As perl (GPL & Artistic)
-       - Kevin A. Lenzo [oznoid] <lenzo@cs.cmu.edu>
-       - Patrick Cole [ltd] <???>
-
 OnJoin:
        - Corey Edwards <tensai@zmonkey.org>
 
-Patches:
-       - ...
-
-Quotes file (files/blootbot.randtext):
+Quotes file (files/infobot.randtext):
        - ??? Ask netgod/larne/is for dpkg's tcl
index 92811a24b820e2764cdff539e9ccb692e32cd727..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
-2007-03-13     troubled
-
-       * files/sample/blootbot.chan: Change the #debian-bots channel to
-         #blootbot for publicity sake ;)
-       * TODO: Minor edits
-       * README: Mention IRC channel
-       * src/IRC/IrcHelpers.pl: Fixed bug in "+sed" that caused the bot
-         to flood itself off the network when passed large s///g;. A
-         temporary limit of 255 charaters on the output has been enabled.
-
-2007-03-11 22:00  troubled
-
-       * src/{Process.pl,UserExtra.pl}: Fixed bug with karma stats. It
-         wasnt supplying the channel and causing a dupe pkey issue and
-         also resulted in global stats instead of per channel. Stats
-         are now per channel again. As a result, you should probably:
-         DELETE FROM stats WHERE channel = 'PRIVATE' AND "type" = 'karma';
-         to clean up since they will never match now, or be pointless to
-         keep track of because karma can only be done in channel.
-
-2007-03-08 00:00  troubled
-
-       * files/sample/blootbot.config: set tempDir changed to /tmp and
-         changed pgsql to SUPPORTED!
-       * src/dbi.pl: Fixed SQL comments (--) bug that prevented tables
-         from being created during startup.
-       * src/Modules/Factoids.pl: Typo for "factstats locked in selColHash
-         was preventing it from finding the func. Also addressed a !WARN!
-         issue about sorting a scalar.
-       * src/dbi.pl: Altered checkTables() to pass $dbtype when creating
-         tables. Table sql now called from setup/<$dbtype>/$table.sql
-       * src/Modules/Topic.pl: Fixed topicAuthor when no topic existed
-         and cleaned up original if statement to remove redundancy
-       * Reorganized the setup/ dir. Put schema SQL for each db type
-         into its own dir to allow customization. See the README file
-       * src/dbi.pl: Simplified the pgsql "SHOW TABLES" SQL
-
-2007-03-07 14:06  troubled
-
-       * setup/pgsql/: Added pgsql specific dir. To be completed later
-       * setup/pgsql/pgsql-schema.sql: Import this file into an precreated
-         database as per blootbot.config and pgsql should be good to go
-       * INSTALL.pgsql: Changes to reflect semi-function pgsql progress
-
-2007-03-06 00:00  troubled
-
-       * src/Process.pl: sqlReplace switched to sqlSet to fix pgsql.
-         sqlReplace should be removed since its not pg friendly. 
-         There is no matching REPLACE INTO in pgsql.
-       * src/Factoids/DBCommon.pl: &setFactInfo during ~unlock set
-         time to NULL which Pgsql wants "0" since NOT NULL
-       * src/Factoids/Update.pl: see Process.pl change
-       * src/Misc.pl: see Process.pl change
-       * src/dbi.pl: Added working PostgreSQL support! yay! ;)
-       * src/Modules/botmail.pl: &sqlReplace -> &sqlSet; removed 
-         &sqlQuote (data already quoted and broke 1 msg only)
-       * src/IRC/IrcHooks.pl: see Process.pl change
-       * src/IRC/Schedulers.pl: see Process.pl change
-
-2005-02-18 00:00  timriker
-
-       * CMD: is now cmd:
-
-2005-02-18 00:00  timriker
-
-       * src/Factoids/Question.pl: minVolunteerLength now per channel
-       * src/core.pl: getChanConf checks _default too
-       * src/: "s/hasParam/IsChanConfOrWarn/"
-       * src/: add handling for channel specific factoids:
-         "#botpark logs" -> http://ibot.rikers.org/botpark
-         factoidSearch is a space delimited list of prefixes to try
-       * src/: kill %myModules - loadMyModule expects the CORRECT CASE basename
-       * .: a ton of other crap that TimRiker never documented here
-
-2001-04-28 22:04  dms
-
-       * src/IRC/: IrcHelpers.pl, IrcHooks.pl, Schedulers.pl: hookMode:
-       change chan to nick.  if deopped by chanserv, check it dont change
-       channel limits during netsplit.
-
-2001-04-26 22:37  dms
-
-       * src/: DynaConfig.pl, Process.pl, UserExtra.pl, core.pl,
-       Factoids/Statement.pl, IRC/Irc.pl, IRC/IrcHelpers.pl,
-       IRC/IrcHooks.pl, IRC/Schedulers.pl, Modules/News.pl: "~forget blah"
-       now works. thanks to ElectricElf documented user flags
-       public/private/notice send limit now configurable. thanks to EE
-       added "countrystats" command.
-       "blootbot: are you fixed now? :)" -- fixed. found by greycat
-       use hasParam instead of IsParam in UserExtra.pl/userCommands()
-       command "ord" handling fixed.
-
-2001-04-24 20:58  dms
-
-       * src/: logger.pl, IRC/Irc.pl, IRC/IrcHelpers.pl, IRC/IrcHooks.pl,
-       IRC/Schedulers.pl: fix more warnings
-       set $ident in nick()
-
-2001-04-23 20:14  dms
-
-       * src/: Process.pl, UserExtra.pl, logger.pl, IRC/Irc.pl,
-       IRC/IrcHooks.pl, IRC/Schedulers.pl: allow join to join irrelevent of being on chan
-       chanstats: count stats if exist - make perl happy
-       misc cleanup of status()
-       add time taken to join all channels, useless stats.
-       disable notify code
-       leakCheck: show stats on hash chanstats
-       mkBackup: show age of file.
-
-2001-04-22 22:58  dms
-
-       * src/IRC/IrcHooks.pl: fix on_targettoofast once and for all, hopefully.
-
-2001-04-22 22:01  dms
-
-       * src/: UserExtra.pl, logger.pl: make sure chanstats don't flood
-       don't throttle if it's a perl warn message
-
-2001-04-22 21:52  dms
-
-       * src/Factoids/Reply.pl: woops... forgot this aswell
-
-2001-04-22 21:48  dms
-
-       * src/Factoids/Reply.pl: disabled literal if factoid is requested via /msg by author; use literal
-       instead
-
-2001-04-22 20:25  dms
-
-       * src/IRC/: Irc.pl, IrcHooks.pl, Schedulers.pl: don't call chanservcheck in joinnextchan
-       call chanservcheck in on_endofnames
-       ircCheck "resets" itself if it thinks so
-
-2001-04-22 20:17  dms
-
-       * src/: Factoids/Question.pl, Factoids/Reply.pl, IRC/Irc.pl,
-       Modules/UserDCC.pl: part now warns if we're on a channel - allow it anyway.
-       added "reset" to DCC CHAT
-
-2001-04-21 22:37  dms
-
-       * TODO: todo list, for those who want to know what "new" features will be coming
-
-2001-04-20 21:27  dms
-
-       * src/: Process.pl, IRC/Schedulers.pl: we didn't set modified_time for deleted factoids - fixed
-       also... if final delete factoid list is >50... don't do it!
-
-2001-04-20 21:16  dms
-
-       * src/: UserExtra.pl, IRC/Irc.pl: chagned notice lines/sec to 3
-       made connectivity percentage 5 significant decimal places.
-
-2001-04-20 20:54  dms
-
-       * src/: CommandStubs.pl, DynaConfig.pl, Misc.pl, Process.pl,
-       UserExtra.pl, Factoids/Question.pl, Factoids/Reply.pl,
-       Factoids/Statement.pl, IRC/Irc.pl, IRC/IrcHelpers.pl,
-       IRC/IrcHooks.pl, IRC/Schedulers.pl, Modules/Debian.pl,
-       Modules/DebianExtra.pl, Modules/Factoids.pl, Modules/Topic.pl,
-       Modules/Units.pl, Modules/Uptime.pl, Modules/UserDCC.pl: converted %{$blah{$blah}} to %{ $blah{$blah} }
-       added IRC hooks to catch failed channel joins
-       chanserv function moved to joinNextChan
-       created chanserv function for "common" use, chanServCheck
-       changed cache{chanlimitChange} hash a little
-       chanserv check removed from on_endofnames
-       typo on on_invite - fixed.
-       chanserv/ops removed from ircCheck()
-       joinNextChan removed from ircCheck()
-       added preliminary debian BTS frontend support
-
-2001-04-19 20:11  dms
-
-       * src/Modules/News.pl: news: don't list new items if they don't have Text.
-
-2001-04-18 23:07  dms
-
-       * src/: CommandStubs.pl, IRC/Irc.pl, IRC/IrcHooks.pl,
-       IRC/Schedulers.pl: fixed seen ""
-       added where debugging messages came from (functions)
-       fixed reversed use of % in if statement, stupid me :)
-       changed backup times for files again
-
-2001-04-18 22:51  dms
-
-       * src/IRC/Irc.pl: forgot this one
-
-2001-04-18 22:50  dms
-
-       * src/: UserExtra.pl, core.pl, IRC/Irc.pl, IRC/Schedulers.pl: added flood protection for notice()
-       added connectivity percentage to ircstats.
-       other changes forgotten
-
-2001-04-18 22:41  dms
-
-       * src/IRC/IrcHooks.pl: fixed the following bugs:
-       [57419] on_ttf: X1 Target change too fast. Please wait 50 seconds.
-       [57604] !WARN! IsChanConf: lowercased chan. (Read error to
-               boren-[adsl-63-197-68-132.dsl.snfc21.pacbell.net]: EOF from client)
-
-2001-04-18 22:30  dms
-
-       * src/: core.pl, IRC/IrcHelpers.pl, IRC/Schedulers.pl,
-       Modules/W3Search.pl: fix chanlimitChange time
-       w3search => "blah for blah" fails - fixed.
-
-2001-04-17 23:56  dms
-
-       * src/IRC/IrcHelpers.pl: ok... use "" around hashes that use _ bare.
-
-2001-04-17 23:34  dms
-
-       * src/: core.pl, Modules/News.pl: ...
-
-2001-04-17 22:03  dms
-
-       * src/Modules/News.pl: forgot to use \d+ for read shortcut
-       other changes that the last commit missed or something
-
-2001-04-17 20:35  dms
-
-       * src/core.pl: another round of useless changes
-
-2001-04-16 21:45  dms
-
-       * src/: CommandStubs.pl, DynaConfig.pl, core.pl, IRC/Irc.pl,
-       IRC/IrcHooks.pl, IRC/Schedulers.pl, Modules/News.pl: chanset: fixed the following problem.
-               .chanset #debian +babeflish
-               .chanset #debian -babeflish
-               -chanunset #debian babelflish
-       - yet another minor bug, use !msgType for dcc chat aswell.
-       - selfflood proteciton for /msg
-               - like 4/sec or 1k/sec
-               - msgcount, msgbyte, msgtime
-               - pubcount, pubbyte, pubtime
-       - fixed other bugs.... weeeeeeee....
-
-2001-04-14 22:48  dms
-
-       * src/IRC/: IrcHelpers.pl, Schedulers.pl: prevent erratic (multiple) changes of chan limit in short space of time.
-       this would be a major problem in chanlimitVerify@IrcHelpers.pl since
-       it's called for every join.  Better safe than sorry.
-
-2001-04-14 20:17  dms
-
-       * src/: Process.pl, core.pl, IRC/Irc.pl, IRC/IrcHooks.pl,
-       IRC/Schedulers.pl, Modules/News.pl: IRC/IrcHooks.pl
-               - forgot to reset msgType/who/chan
-                 after hookMsg in on_msg and on_public.
-               - on_join: if bot joins, don't do wingate/bans
-                 and other useless stuff
-               - on_join: set msgType for ICC.
-               - on_part: set msgType/chan/who
-               - on_quit: set msgType/chan/who
-               - on_public: make chan global for ICC
-               => should fix all bugs.
-               => I have no idea how this worked so brokenly.
-       News.pl - more more changes
-
-2001-04-14 00:45  dms
-
-       * src/: core.pl, IRC/IrcHelpers.pl, IRC/IrcHooks.pl,
-       IRC/Schedulers.pl, Modules/News.pl: another round of changes, damn it was hard to figure out why news wasn't
-       appearing properly - I think we still have that problem but it's semi
-       rare.
-       - Also fixed netsplit problems, forgot a next line.
-       - don't run all funky commands in on_join if netsplit is enabled.
-       - other tiny things not worth mentioning.
-
-2001-04-13 23:23  dms
-
-       * src/: IRC/IrcHelpers.pl, IRC/IrcHooks.pl, IRC/Schedulers.pl,
-       Modules/Factoids.pl, Modules/News.pl: news: can make news compulsory (chanset +newsNotifyAll)
-             and opt-out (news unnotify)
-       irchooks: splitted into IrcHelpers.pl so we can reload it on the fly.
-       factoids: added debugging for short factoids that may be botched up
-             references
-
-2001-04-12 21:12  dms
-
-       * src/: UserExtra.pl, db_mysql.pl, IRC/Schedulers.pl,
-       Modules/News.pl, Modules/UserDCC.pl: news: added news->factoid redirection
-       ton load of minor changes or bug fixes that cannot really be summarized
-
-2001-04-11 22:34  dms
-
-       * src/: Process.pl, UserExtra.pl, db_mysql.pl, modules.pl,
-       IRC/IrcHooks.pl, IRC/Schedulers.pl, Modules/Debian.pl,
-       Modules/News.pl: A round of fixes:
-               - added dbReplace but it's broken
-               - debian infopackages shows dist
-               - news user cache now works properly
-               - "+" now works for all commands, not only for factoids
-
-2001-04-07 23:59  dms
-
-       * src/Misc.pl: isStale is basically used by Debian.pl and we were using age in terms of
-       seconds but the actual function was assuming it was in days - fixed.
-
-2001-04-07 20:07  dms
-
-       * src/: modules.pl, IRC/Schedulers.pl: - now backup news file just in case.
-       - Other changes we've not documented or small enough not to mention
-
-2001-04-07 20:07  dms
-
-       * src/Modules/News.pl: - load file if we enabled option on the fly before re-run.
-
-2001-04-07 20:06  dms
-
-       * src/CommandStubs.pl: - we now check if CODEREF exists.
-
-2001-04-07 20:06  dms
-
-       * src/UserExtra.pl: - forgot Module for news.
-
-2001-04-07 20:05  dms
-
-       * src/core.pl: - write opened files on shutdown/hup
-
-2001-04-06 22:05  dms
-
-       * src/Modules/News.pl: When we did a symlink to all the set commands, the string was made
-       static (set to "Text") so it was broken.
-       also added link from Desc to Text
-
-2001-04-06 21:56  dms
-
-       * src/Modules/News.pl: Just some more minor changes, to make some people happy, heh.
-
-2001-04-03 20:06  dms
-
-       * src/: DynaConfig.pl, modules.pl, IRC/IrcHooks.pl,
-       IRC/Schedulers.pl, Modules/News.pl: More clean ups, forgotten what they were, heh.
-
-2001-04-01 23:25  dms
-
-       * src/Modules/News.pl: forgot to add this file, heh.
-
-2001-04-01 23:16  dms
-
-       * src/modules.pl: finally nailed this "random" bug noticed by asuffield.
-
-2001-04-01 23:00  dms
-
-       * files/blootbot.help: added help for news
-
-2001-04-01 23:00  dms
-
-       * src/: Misc.pl, IRC/IrcHooks.pl: Second round of News changes and bug fixes, kudos to greycat
-
-2001-03-31 22:19  dms
-
-       * src/: CommandStubs.pl, DynaConfig.pl, Process.pl, UserExtra.pl,
-       core.pl, modules.pl, Factoids/Statement.pl, Factoids/Update.pl,
-       IRC/Irc.pl, IRC/IrcHooks.pl, IRC/Schedulers.pl, Modules/UserDCC.pl: Many changes, basically added and integrated News, and bug fixes.
-       Some more notes:
-         CommandStubs.pl     - fixed "kernel blah"
-         Modules/UserDCC.pl  - dont print $user when undefined.
-         modules.pl          - added News.pl
-         Modules/News.pl     - new feature.
-         Process.pl          - "blootbot: ok is <reply> :)" -- FIXED.
-
-2001-02-28 20:17  dms
-
-       * src/IRC/Irc.pl: removed msg/say repeating code.
-
-2001-02-28 20:17  dms
-
-       * src/Process.pl: don't backup #DEL# factoids. asuffield.
-
-2001-02-28 20:17  dms
-
-       * src/Factoids/Question.pl: fix for endless loop. asuffield.
-
-2001-02-28 20:12  dms
-
-       * src/IRC/IrcHooks.pl: msgtime updated in on_msg
-
-2001-02-28 20:10  dms
-
-       * src/IRC/Schedulers.pl: make dead-connect detection better.
-
-2001-02-23 20:26  dms
-
-       * src/CommandStubs.pl: strip trailing whitespaces, force use of quotes to enable trailing
-       whitespace. requested by asuffield and \broken?.
-
-2001-02-23 20:25  dms
-
-       * src/Process.pl: now use "or" instead of "and" operator for "rename".
-
-2001-02-23 20:24  dms
-
-       * src/IRC/Irc.pl: closedcc debug
-
-2001-02-23 20:24  dms
-
-       * src/IRC/Schedulers.pl: downlink check update?
-
-2001-02-20 21:01  dms
-
-       * src/Factoids/Question.pl: - recursive factoid linking added.
-
-2001-02-20 21:01  dms
-
-       * src/IRC/IrcHooks.pl: - lobotomy check in hookMsg
-
-2001-02-20 21:00  dms
-
-       * src/Factoids/Update.pl: - reformatted totally
-       - added preliminary append-to-linked-factoid support.
-       - all return calls now return appropriately.
-
-2001-02-20 21:00  dms
-
-       * src/: Misc.pl, UserExtra.pl: - added mkcrypt, fixed up "crypt" cmd.
-
-2001-02-20 20:59  dms
-
-       * src/: CommandStubs.pl, core.pl, modules.pl: minor updates, warn fixes, removed comments
-
-2001-02-20 20:59  dms
-
-       * src/IRC/Schedulers.pl: - lobotomy cache flush.
-       - disable uptime if not loaded.
-       - minor output update.
-
-2001-02-20 20:58  dms
-
-       * src/Process.pl: - lobotomy warning now cached
-       - use &mkcrypt()
-
-2001-02-20 20:58  dms
-
-       * src/DynaConfig.pl: - preliminary check of masks in chan for matches.
-       - ckpasswd, clean up.
-
-2001-02-20 20:58  dms
-
-       * src/Modules/UserDCC.pl: - changed "m" to "n". asu.
-       - flush lobotomy cache on "unlobotomy"
-       - now use &mkcrypt()
-
-2001-02-17 21:42  dms
-
-       * src/IRC/Schedulers.pl: - minor output update.
-
-2001-02-17 21:41  dms
-
-       * src/UserExtra.pl: - removed '' from returns
-       - preliminary stats for on/off-line time
-
-2001-02-17 21:41  dms
-
-       * src/Modules/UserDCC.pl: - ".op" fixed. found by Rev
-       - ".-ban" now removes the ban from the chan.
-
-2001-02-17 21:40  dms
-
-       * src/IRC/Irc.pl: - sub "op" fixed.
-       - added sub "unban"
-
-2001-02-17 21:40  dms
-
-       * src/IRC/IrcHooks.pl: - added first time run checks.
-       - on/off-line time stats
-       - on_join ban now kicks with custom reason.
-
-2001-02-17 21:40  dms
-
-       * src/Factoids/Reply.pl: literal update
-
-2001-02-17 21:39  dms
-
-       * src/Process.pl: - typo in if statement for "forget" when users
-         don't have +r flag. found by Rev
-       - added "pass" cmd.
-       - added "literal" factoid ask.
-
-2001-02-17 21:36  dms
-
-       * src/core.pl: memusage support for open/free/net bsd added. patch from Kuma/Rev
-
-2001-02-13 23:50  dms
-
-       * src/core.pl: update version of bot
-
-2001-02-13 23:47  dms
-
-       * src/IRC/IrcHooks.pl: make nickserv work on more servers. requested by asuffield
-
-2001-02-13 23:35  dms
-
-       * src/IRC/IrcHooks.pl: on-ban reason does not work... added debugging
-
-2001-02-13 23:28  dms
-
-       * files/blootbot.help: updates from asuffield@OPN
-
-2001-02-13 23:18  dms
-
-       * src/Modules/babel.pl: main:: fixes
-
-2001-02-13 23:04  dms
-
-       * src/UserExtra.pl: - 'ascii' updates.
-       - hex now honours "allowConv"
-       - found by asuffield.
-       - redir of a redir fixed.
-
-2001-02-13 22:30  dms
-
-       * src/IRC/IrcHooks.pl: added reason on ban.
-
-2001-02-13 22:18  dms
-
-       * src/Process.pl: safe delete did not run delFactoid, hah! found by asuffield
-
-2001-02-13 22:07  dms
-
-       * src/IRC/Irc.pl: ban fixes.
-
-2001-02-13 22:06  dms
-
-       * src/Modules/UserDCC.pl: - moved read-only stuff from DynaConfig to here.
-       - added newpass
-       - .chpass didn't use arg[0] for user.
-
-2001-02-13 22:03  dms
-
-       * src/DynaConfig.pl: - now prevent ".chanset +blah 10"
-       - recoded it a bit.
-
-2001-02-13 22:02  dms
-
-       * src/IRC/IrcHooks.pl: - use "right way" to get keys from hash by checking if the hash ref
-         even exists... perl automatically "creates" this and causes problems
-         later on. (perldoc -f exists or defined)
-       - anti-repeat should not apply to /msg
-       - option to do kick on repeat... preliminary support.
-       - casing fixes to DCC CHAT. (reported by Revenge@OPN)
-
-2001-02-13 22:01  dms
-
-       * src/IRC/Schedulers.pl: errors from Schedulers (chanlimitcheck) are cached and shown only once.
-
-2001-02-13 22:00  dms
-
-       * src/Modules/Factoids.pl: - added support to factstats (requested,requesters) of "total" value.
-
-2001-02-13 21:59  dms
-
-       * src/Modules/babel.pl: debugging added
-
-2001-02-13 21:58  dms
-
-       * src/Misc.pl: added debian-specific debug to isStale
-
-2001-02-11 22:25  dms
-
-       * src/: CommandStubs.pl, Misc.pl, modules.pl, IRC/Schedulers.pl,
-       Modules/Debian.pl: remaining stuff... should fix factoids problem I hope
-
-2001-02-10 00:47  dms
-
-       * src/Modules/babel.pl: typo
-
-2001-02-10 00:29  dms
-
-       * src/core.pl: slight change to ChanConfList to make schedulers work again
-
-2001-02-09 23:02  dms
-
-       * src/: IRC/IrcHooks.pl, Process.pl: fixed up ignore code. discovered by debian@OPN
-
-2001-02-09 22:51  dms
-
-       * src/IRC/Irc.pl: woops, use while instead of foreach for ircloop
-
-2001-02-09 22:48  dms
-
-       * src/: Files.pl, core.pl: use static value for ircservers file
-
-2001-02-09 22:18  dms
-
-       * src/core.pl: don't write user/chan file on HUP/restart. confirmed by asuffield
-
-2001-02-09 21:44  dms
-
-       * src/Modules/UserDCC.pl: we did a sort() when we should not have for '.sched'
-
-2001-02-09 21:40  dms
-
-       * src/CommandStubs.pl: changed FlatArg to ArrayArgs to make more sense. by default, we use flat-args
-
-2001-02-09 21:37  dms
-
-       * src/IRC/IrcHooks.pl: forgot to set nuh for on_join; fixed up ban check on join.
-
-2001-02-09 21:23  dms
-
-       * src/Process.pl: moved nick lock checking to lock only. detected by irq@OPN
-
-2001-02-09 21:18  dms
-
-       * src/IRC/Irc.pl: added debugging info to ircloop... if irc() does not return ever, we'll have to take another approach to do connect-next-server-if-cant-connect
-
-2001-02-09 21:10  dms
-
-       * src/UserExtra.pl: substitute the right vars in getReply when used in tell. found by asuffield
-
-2001-02-09 00:02  dms
-
-       * src/IRC/IrcHooks.pl: this should fix ignores on global channels. found by 'debian'@OPN
-
-2001-02-08 23:51  dms
-
-       * src/IRC/Schedulers.pl: divide by zero fix. thought I fixed it 2 weeks ago
-
-2001-02-08 23:50  dms
-
-       * src/IRC/IrcHooks.pl: - pointless regex in on_dcc_chat_open that I was going to deal with on
-         failed WHOIS (nuh) lookups... now we just compare against "GETTING-NOW"
-       - on_quit debug info much cleaner now.
-
-2001-02-08 22:09  dms
-
-       * src/CommandStubs.pl: we did not use flat args for forkers. found by asuffield.
-
-2001-02-08 22:00  dms
-
-       * src/CommandStubs.pl: fix delayed task mechanism to verstats... we have to cache chan/nick/msgType.
-
-2001-02-08 21:57  dms
-
-       * src/Shm.pl: possible fix for fork crashing and not detecting a crash from parent. warning included
-
-2001-02-08 21:52  dms
-
-       * src/IRC/: IrcHooks.pl, Schedulers.pl: chan limit check code should now be disabled/re-enabled in relation to netsplits. discovered by asuffield
-
-2001-02-07 22:12  dms
-
-       * src/Modules/UserDCC.pl: - list all schedulers and their respective time-of-next-run
-
-2001-02-07 22:11  dms
-
-       * src/IRC/Schedulers.pl: - use CORE::system
-
-2001-02-07 22:11  dms
-
-       * src/: Modules/Debian.pl, CommandStubs.pl: - finally (about three times) fixed search for "*bin*ssh*" for example,
-         kudos to bod@OPN
-       - also make searchDesc return list of packages and searchDescFE to output it.
-       - use searchDescFE
-
-2001-02-06 21:10  dms
-
-       * src/Modules/Debian.pl: Fixed by swapping dists hash around.
-
-2001-02-06 20:42  dms
-
-       * src/Modules/Debian.pl: debugging added.
-
-2001-02-06 20:42  dms
-
-       * src/Modules/Topic.pl:  ok from "topic -mod" => /msg only!
-
-2001-02-06 20:42  dms
-
-       * src/IRC/Schedulers.pl: - added auto backup of user/chan files
-       - factoidCheck updates.
-       - nick-in-use timer update.
-
-2001-02-06 20:41  dms
-
-       * src/: Process.pl, core.pl: - converted %joinverb to %cache
-
-2001-02-06 20:41  dms
-
-       * src/UserExtra.pl: - added 'unique user count' to chanstats.
-       - wantnick updates
-
-2001-02-06 20:27  dms
-
-       * src/IRC/IrcHooks.pl: - on_chat, forgot to set '$who'
-       - clean up aswell.
-       - converted %jointime to %cache
-       - we check limit on each on_join now.
-
-2001-02-06 20:23  dms
-
-       * src/DynaConfig.pl: split off chanset from UserDCC to here to do multiple chans
-       - look at 1.19->1.20 to see changes
-
-2001-02-06 20:22  dms
-
-       * src/Modules/UserDCC.pl: - Moved most of chanset to DynaConfig
-       - Should be able to do multiple chans now, like ".chanset #chan1 #chan2
-         #chan3 +autojoin"
-       - if _default has option and ".chanunset #blah blah" or ".-chan #blah
-         blah", set vars on all other channels but remove on the channel
-         specific.
-       - if '.-chan blah' is done and does not exist on _default, remove
-         option from all channels.
-       - command to list which chans have option defined/set for.
-       - with respective values.
-       - ".chanset <value>"
-
-2001-02-06 00:09  dms
-
-       * src/Process.pl: final cruft from old static configuration file fixed... found by irq
-
-2001-02-06 00:04  dms
-
-       * src/CommandStubs.pl: ok, that failed. lets now set $chan aswell
-
-2001-02-06 00:00  dms
-
-       * src/CommandStubs.pl: verstats was using dynamic chan var...
-
-2001-02-05 23:45  dms
-
-       * src/IRC/IrcHooks.pl: dont overwrite nuh{} if it already exists.
-
-2001-02-05 23:43  dms
-
-       * src/Factoids/: Norm.pl, Question.pl: - remove front/rear whitespaces
-       - trailing symbols should work now.
-
-2001-02-05 23:30  dms
-
-       * src/IRC/IrcHooks.pl: - endofnames: chanserv ops should work now.
-       - store topic irrevelent of setting.
-       - call ->whois() if nuh is not found.
-
-2001-02-05 23:29  dms
-
-       * src/Modules/UserDCC.pl: - prevent dupe uses of ".+chan"
-       - when adding new chan, set autojoin.
-
-2001-02-05 23:29  dms
-
-       * src/IRC/Schedulers.pl: - ircCheck => 120 interval.
-       - dccStatus now only shows chan info where the dcc chat user is on
-         _only_
-       - added checking of %dcc hash for nuh hash checking.
-
-2001-02-05 22:32  dms
-
-       * src/IRC/Schedulers.pl:  defer leakCheck, increase interval.
-
-2001-02-05 22:31  dms
-
-       * src/core.pl: comment out debugging
-
-2001-02-05 22:31  dms
-
-       * src/IRC/IrcHooks.pl: - fixed when chan (msgType = private) is undefined.
-
-2001-02-04 20:23  dms
-
-       * src/IRC/Irc.pl: reconnect if join fails
-
-2001-02-04 20:17  dms
-
-       * src/IRC/Irc.pl: - output update
-
-2001-02-04 20:16  dms
-
-       * src/IRC/IrcHooks.pl: - if in private, "is addressing" => "is /msg'ing".
-       - dccStatus fix ups.
-       - use ScheduleThis where possible.
-
-2001-02-04 20:14  dms
-
-       * src/IRC/Schedulers.pl: typo for dccStatus fix :)
-
-2001-02-04 20:14  dms
-
-       * src/Shm.pl: delForked: warn if name is source file.
-
-2001-02-04 20:13  dms
-
-       * src/IRC/Schedulers.pl: - output update.
-       - prevent "unknown msg" for shm.
-       - typo for dcc hash. fixed.
-       - forgot about users,chops,bans define in dccStatus. fixed.
-
-2001-02-04 20:13  dms
-
-       * src/CommandStubs.pl: if more than 1/4 users from channel gave version replies, verstats is active.
-
-2001-02-04 20:12  dms
-
-       * src/core.pl: remove mem increase from DCC CHAT - annoying.
-
-2001-02-04 00:01  dms
-
-       * src/: IRC/Schedulers.pl, Modules/Slashdot3.pl: more configuration crud and not-thinking-correctly design errors
-
-2001-02-03 23:51  dms
-
-       * src/UserExtra.pl: added support for old Modules() for telling.
-
-2001-02-03 23:48  dms
-
-       * src/Misc.pl: added IsParam back to hasParam together with isChanConf
-
-2001-02-03 23:33  dms
-
-       * src/Factoids/Statement.pl: minor typo when fixing this before
-
-2001-02-03 23:21  dms
-
-       * src/Modules/Debian.pl: validPackage or indirectly generateIndex should work now for the time being
-
-2001-02-03 23:09  dms
-
-       * src/Modules/Debian.pl: woops forgot a few old config vars; converted to new format
-
-2001-02-03 23:06  dms
-
-       * src/Modules/Debian.pl: converted to new gCCD
-
-2001-02-03 22:46  dms
-
-       * src/Modules/UserDCC.pl: more fixups.
-
-2001-02-03 22:35  dms
-
-       * src/Modules/UserDCC.pl: now use delete in place of undef
-
-2001-02-03 22:23  dms
-
-       * src/IRC/IrcHooks.pl: looks like the final touches to fully exploit dynamic configuration have been made
-
-2001-02-03 22:10  dms
-
-       * src/IRC/IrcHooks.pl: debugging info
-
-2001-02-03 22:06  dms
-
-       * src/Process.pl: move identify code before outsider checking
-
-2001-02-03 22:03  dms
-
-       * src/: IRC/Irc.pl, IRC/IrcHooks.pl, Misc.pl: - $nuh{} fix up.
-       - created on_dcc_open_chat for whois reply to get nuh.
-       - getRandomInt - allow decimal.
-
-2001-02-03 20:52  dms
-
-       * src/: Shm.pl, IRC/Schedulers.pl: - time stamping added.
-       - dead/stale shm removal now works more intelligently.
-         However, older code will attempt to hijack and remove it anyway.
-       - check debian files with gzip -t.
-       - all schedulers should be deferred now.
-
-2001-02-03 20:51  dms
-
-       * src/IRC/IrcHooks.pl: don't allow those without HOSTS in the user file to DCC CHAT.
-
-2001-02-03 20:51  dms
-
-       * src/Modules/UserDCC.pl: fixed '.chanset' code.
-
-2001-02-03 20:50  dms
-
-       * src/IRC/Irc.pl: added _default to chan mask.
-
-2001-02-02 22:03  dms
-
-       * src/IRC/Schedulers.pl: I think this is the set of missed old->dynamic config changes that had to be done
-
-2001-02-02 22:03  dms
-
-       * src/Modules/UserDCC.pl: compress config params as muc has possible per line
-
-2001-02-02 21:42  dms
-
-       * src/core.pl: forgot to initialize counter for Moron
-
-2001-02-02 21:42  dms
-
-       * src/Misc.pl: check if int is defined for fixPlural
-
-2001-02-02 21:38  dms
-
-       * src/: DynaConfig.pl, Misc.pl, core.pl, modules.pl,
-       Factoids/Norm.pl, Factoids/Question.pl, Factoids/Reply.pl,
-       Factoids/Update.pl: tiny changes that I've missed
-
-2001-02-02 21:36  dms
-
-       * src/IRC/: IrcHooks.pl, Schedulers.pl: temporary ignores can be removed automatically once expired
-
-2001-02-02 21:21  dms
-
-       * src/Process.pl: typo for ckpasswd
-
-2001-02-02 21:12  dms
-
-       * src/Shm.pl: - if shmRead fails, try openSHM.
-
-2001-02-02 21:12  dms
-
-       * src/Process.pl: - fixup for question handling.
-
-2001-02-02 21:12  dms
-
-       * src/UserExtra.pl: - tell: command redirection added.
-
-2001-02-02 21:12  dms
-
-       * src/Modules/UserDCC.pl: - fix undefined for '.chanset'
-       - minor output update to '.bans'
-
-2001-02-02 21:11  dms
-
-       * src/DynaConfig.pl: - undefining vars in wrong subs; fixed.
-       - fixes reading user/chan files finally, again.
-
-2001-02-02 21:10  dms
-
-       * src/: CommandStubs.pl, Modules/babel.pl: - fixes for babelfish
-       - typo of IsChanConf for wwwsearch.
-       - parseCmdHooks return vals fixed.
-       - babel.pl: regex fixed -- works!!!
-
-2001-02-02 21:09  dms
-
-       * src/: Modules/RootWarn.pl, Modules/Wingate.pl, IRC/Irc.pl,
-       IRC/IrcHooks.pl, IRC/Schedulers.pl: - more fixes to new-style config, should be 99% of it.
-       - convert IsParam() to IsChanConf()
-       - IRC/IrcHooks.pl: minor output update
-       - IRC/Schedulers.pl:
-               - minor update.
-               - make getChanConfDefault(PARAM,VALUE,CHAN) instead for convenience.
-               - temp ignore removal checking loop fixed.
-
-2001-02-01 22:21  dms
-
-       * src/core.pl: - write user/chan file in 'shutdown'
-
-2001-02-01 22:18  dms
-
-       * src/Modules/UserDCC.pl: - wrong order in .+ignore
-       - ".chanset #chan" fixup.
-
-2001-02-01 22:17  dms
-
-       * src/IRC/Irc.pl: - getJoinChans, don't add _default
-       - joinNextChan() - check nickServ_pass
-
-2001-02-01 22:15  dms
-
-       * src/DynaConfig.pl: - prevent /^[+-]/ options being loaded.
-       - ignore/ban lists now saved properly.
-       - forgot about \+ :-)
-       - verifyUser does caching now!
-
-2001-02-01 22:13  dms
-
-       * src/IRC/Schedulers.pl: - SC for uptimeCycle
-       - renamed *Cycle to *Loop
-
-2001-02-01 22:11  dms
-
-       * src/IRC/IrcHooks.pl: - minor output (debug) removed.
-       - new config conversion for rootWarn
-
-2001-02-01 22:06  dms
-
-       * src/Process.pl: now use pass auth for 'identify'.
-
-2001-02-01 22:05  dms
-
-       * src/Modules/Debian.pl: regex support for 'query' in &searchDesc()
-
-2001-01-31 22:53  dms
-
-       * src/CommandStubs.pl: nickometer: there could be multiple results with the same version
-       percentage - fixed. Also don't merge same percentages together like in
-       other list (formListReply) statements.
-
-2001-01-31 22:31  dms
-
-       * src/CommandStubs.pl: nickometer and verstats: sort descendingly
-       nickometer: fix undefined warning
-
-2001-01-31 21:31  dms
-
-       * src/Modules/Debian.pl: make $refresh global in this file... removed all duplicates of getting
-       debianRefreshInterval config var.
-
-2001-01-31 21:28  dms
-
-       * src/IRC/: Irc.pl, IrcHooks.pl: make $nickserv global and set to zero in Irc.pl
-
-2001-01-31 21:26  dms
-
-       * src/Misc.pl: check if $age is NULL in &isStale()
-
-2001-01-31 21:18  dms
-
-       * src/core.pl: &ChanConfList() typos
-
-2001-01-31 21:18  dms
-
-       * src/Process.pl: added 'identify <PASS> [nick]'
-
-2001-01-31 21:18  dms
-
-       * src/IRC/Irc.pl: added retval to &ban()
-
-2001-01-31 21:17  dms
-
-       * src/Modules/UserDCC.pl: minor fix for ignoreAdd()
-
-2001-01-31 21:17  dms
-
-       * src/DynaConfig.pl: prevent repetion in verifyUser.
-
-2001-01-31 21:17  dms
-
-       * src/Modules/Freshmeat.pl: - now use gCCD
-
-2001-01-31 21:17  dms
-
-       * src/IRC/IrcHooks.pl: - ignore code cleaned up.
-       - ban on join added.
-       - added 'b' to &hookMode()'s stats keeping.
-
-2001-01-31 21:16  dms
-
-       * src/IRC/Schedulers.pl: - forgot about interval for floodCycle.
-       - added nuh{} check to &leakCheck()
-       - added chanserv checking to &ircCheck()
-
-2001-01-30 21:19  dms
-
-       * src/Modules/Debian.pl: support for new dynamic configuration infrastructure
-
-2001-01-30 20:47  dms
-
-       * src/IRC/Schedulers.pl: - typo for already-run check. should work now.
-
-2001-01-30 20:46  dms
-
-       * src/Modules/UserDCC.pl: - added '.sched'
-
-2001-01-30 20:46  dms
-
-       * src/Misc.pl: - pSReply hack for &help().
-
-2001-01-30 20:46  dms
-
-       * src/Process.pl: - typo for return val of &Modules()
-
-2001-01-30 20:46  dms
-
-       * src/DynaConfig.pl: - added removal of possible duplicate configuration entries when bot
-         exits.
-
-2001-01-30 20:45  dms
-
-       * src/: Shm.pl, core.pl, modules.pl, Modules/Uptime.pl: - minor update (output and redundant vars)
-
-2001-01-30 20:44  dms
-
-       * src/IRC/IrcHooks.pl: prevent dupes in verstats collection.
-
-2001-01-30 20:44  dms
-
-       * src/CommandStubs.pl: - added 'unknown/cloaked' stats item to verstats.
-       - nickometer chan code cleanup.
-
-2001-01-29 23:04  dms
-
-       * src/CommandStubs.pl: added 'verstats'
-
-2001-01-29 23:03  dms
-
-       * src/Misc.pl: - strip ^chars update.
-
-2001-01-29 23:03  dms
-
-       * src/IRC/Schedulers.pl: - fixed undefined stuff.
-       - put return's in wrong position; fixed.
-
-2001-01-28 22:34  dms
-
-       * src/core.pl: removed obsoleted old dyn code
-
-2001-01-28 22:03  dms
-
-       * files/sample/sample.config.proposed: - obsoleted... why was it even added in the first place.
-
-2001-01-28 22:02  dms
-
-       * ChangeLog, ChangeLog.old: - finally generated ChangeLog from CVS
-       - moved old changelog to ChangeLog.old
-
-2001-01-28 22:00  dms
-
-       * patches/: Connection.pm, Net::IRC.patch: - removed obsoleted files: it's now done in the bot code.
-
-2001-01-28 21:35  dms
-
-       * files/: infobot.help, infobot.ignore, infobot.lang, infobot.lart,
-       infobot.randtext, infobot.users, sample.config, sample.countdown,
-       sample.insert: - obsoleted files removed
-
-2001-01-28 21:32  dms
-
-       * src/: Misc.pl, Process.pl, Shm.pl, db_mysql.pl,
-       Factoids/Question.pl, Factoids/Reply.pl, Factoids/Statement.pl,
-       Factoids/Update.pl, IRC/Irc.pl, Modules/Debian.pl,
-       Modules/DebianExtra.pl, Modules/Dict.pl, Modules/Factoids.pl,
-       Modules/Freshmeat.pl, Modules/Kernel.pl, Modules/Quote.pl,
-       Modules/Search.pl, Modules/Slashdot3.pl, Modules/Topic.pl,
-       Modules/Units.pl, Modules/Uptime.pl, Modules/W3Search.pl,
-       Modules/Wingate.pl, Modules/babel.pl, Modules/insult.pl,
-       Modules/nickometer.pl: - Remaining files that were changed due to removal of $noreply or
-         indirectly caused by the change over to dynamic configuration
-
-2001-01-28 21:15  dms
-
-       * src/IRC/Schedulers.pl: - added dccStatus
-
-2001-01-28 21:14  dms
-
-       * src/UserExtra.pl: - if - is used before -about, don't tell us about what was told.
-       - ignorelist removed.
-
-2001-01-28 21:14  dms
-
-       * src/modules.pl: - if core moduels fail to load, exit out properly.
-
-2001-01-28 21:14  dms
-
-       * files/blootbot.help: - removed FIXME entries.
-       - added several new entries for UserDCC. still incomplete.
-
-2001-01-28 21:13  dms
-
-       * files/blootbot.ignore: -REMOVED
-
-2001-01-28 21:12  dms
-
-       * src/IRC/IrcHooks.pl: - when someone attempts dcc chat, if verbosity > 1,
-               show all info regarding that person.
-
-2001-01-28 21:12  dms
-
-       * src/logger.pl: pre-config fix.
-
-2001-01-28 21:11  dms
-
-       * src/Modules/UserDCC.pl: - added frontend to dynamic user/chan.
-
-       - remove 99% of $noreply.               WORKS
-       - change 'main::' to '::'               WORKS
-
-       - ".set" and ".unset" obsoleted.        WORKS
-       - ".save"                               WORKS
-       - ".chanset #chan +bool"        WORKS
-       - ".chanset #chan -bool"        WORKS
-       - ".chanset #chan"              WORKS
-       - ".chanunset #chan"            WORKS
-       - ".chanunset #chan WHAT"       WORKS
-       - ".chpass <user> [pass]"       WORKS
-       - ".chattr [user] +flag-flag"   WORKS
-       - ".chnick [user] [new-user]"   WORKS
-       - ".+host [user] [new mask]"    WORKS
-       - ".-host [user] [del mask]"    WORKS
-       - ".+ban [mask] [chan] [time] [reason]" WORKS
-       - ".-ban [mask]"                WORKS
-       - ".whois [user]"               WORKS
-       - ".bans [chan]" (BOT)          WORKS
-       - ".banlist" (CHAN)             DONE,TODO
-       - ".+ignore <mask> [#channel] [time] <comment>" WORKS
-       - ".-ignore <mask>"             WORKS
-       - ".ignore [chan]"              WORKS,
-       - ".adduser <nick>"             DONE,TODO
-       - ".deluser <nick>"             DONE,TODO
-       - ".+user <nick> <hostmask>"    WORKS
-       - ".-user <nick>"               WORKS
-       - ".chatset [channel] <setting>"        DONE
-       - ".+chan <#chan>"                      WORKS
-       - ".-chan <#chan>"                      WORKS
-       - ".chaninfo"                           WORKS
-
-2001-01-28 21:08  dms
-
-       * files/sample/: sample.chan, sample.config, sample.config.example,
-       sample.config.proposed, sample.countdown, sample.insert,
-       sample.users: - new directory for sample configuration
-
-2001-01-28 21:04  dms
-
-       * files/: blootbot.chan, blootbot.users: - NEW style config file.
-
-2001-01-28 21:02  dms
-
-       * src/core.pl: - NEW dynamic user/chan stuff.
-       - prevent doExit running twice.
-       - loadMyModulesNow after chanfile!
-       - added IsChanConf() and getChanConfList
-
-2001-01-28 21:00  dms
-
-       * src/DynaConfig.pl: - NEW dynamic user/chan stuff.
-
-2001-01-28 20:50  dms
-
-       * src/: User.pl, UserFile.pl: - REMOVED FILES.
-
-2001-01-28 20:50  dms
-
-       * src/Files.pl: - removed userfile code.
-       - removed ignore code.
-
-2001-01-28 20:49  dms
-
-       * src/CommandStubs.pl: - aCH: don't remake hook hash.
-       - pCH: warn if multiple matches are found.
-       - added nickometer for channel.
-
-2001-01-18 21:46  dms
-
-       * src/Modules/Debian.pl: ca.d.o does not do non-US any more
-
-2001-01-17 20:22  dms
-
-       * src/Modules/Factoids.pl: used \* instead of / for days, founded by fooz
-
-2001-01-15 21:11  dms
-
-       * src/Factoids/Update.pl: added checking of NULL rhs just in case.
-
-2001-01-15 21:10  dms
-
-       * src/Modules/Factoids.pl: - fix for null factoids in factinfo.
-       - added 'factstats nullfactoids'.
-
-2001-01-14 21:04  dms
-
-       * src/Modules/Topic.pl: topic info now includes length
-
-2001-01-10 22:57  dms
-
-       * src/IRC/Irc.pl: - cosmetic (useless) update.
-
-2001-01-10 22:56  dms
-
-       * src/UserExtra.pl: - update to 'cpustats'.
-
-2001-01-10 22:55  dms
-
-       * src/Misc.pl: - forgot [] around gettimeofday.
-       - select() added before first fork msg.
-
-2001-01-10 22:55  dms
-
-       * src/Shm.pl: - minor mods to addForked wrt time.
-       - proper detection of dead forks.
-
-2001-01-10 22:54  dms
-
-       * src/Modules/Debian.pl: quote typo@18,default==unstable
-
-2001-01-10 22:54  dms
-
-       * src/modules.pl: - AUTOLOAD to ignore __
-       - use eval on 'require'.
-
-2001-01-06 20:55  dms
-
-       * src/Factoids/Reply.pl: - added smart_replace, finally fixed SARs for sure.
-         still need to move numeric range replacement into the loop.
-
-2001-01-06 20:54  dms
-
-       * src/: Net.pl, Modules/Debian.pl, Modules/Factoids.pl,
-       Modules/Freshmeat.pl, Modules/Search.pl: - new time delta function
-       - Debian.pl: \Q\E in validPackage
-
-2001-01-06 20:53  dms
-
-       * src/IRC/Irc.pl:  clearIRCVars update
-
-2001-01-06 20:53  dms
-
-       * src/modules.pl: DNS.pl removed.
-
-2001-01-06 20:52  dms
-
-       * src/Modules/DNS.pl: Removed this file.
-
-2001-01-06 20:52  dms
-
-       * src/: CommandStubs.pl, UserExtra.pl: - more updates.
-       - UserExtra.pl: added cpustats
-       - CommandStubs: added UserFlag support
-
-2001-01-06 20:51  dms
-
-       * src/: Misc.pl, Shm.pl, IRC/IrcHooks.pl: - forker (POSIX::_exit) fixes.
-       - Misc.pl: added timedelta(renamed from gettimeofday),timeget.
-
-2001-01-03 21:44  dms
-
-       * src/Net.pl: - &system typo.
-
-2001-01-03 21:43  dms
-
-       * src/modules.pl: - DESTROY code removed.
-
-2001-01-03 21:42  dms
-
-       * src/Misc.pl: - topic minor fix.
-       - POSIX::_exit(0) added: fixes fork problem.
-
-2001-01-03 21:42  dms
-
-       * src/Factoids/Update.pl: - allow SARing of factoids on _long_ factoids providing the new string
-         is shorter than the subst string.
-
-2001-01-03 21:37  dms
-
-       * files/blootbot.lang: - moron reply added.
-
-2001-01-03 21:37  dms
-
-       * src/Factoids/Reply.pl: - Finally added proper recursive SARs
-
-2001-01-03 21:36  dms
-
-       * src/Modules/Factoids.pl: - add 'days' to created_time output.
-
-2001-01-03 21:35  dms
-
-       * src/Modules/Debian.pl: - "testing" changes (broken)
-       - make search packages case insensitive.
-       - non-US fixed... about time.
-
-2001-01-03 21:34  dms
-
-       * src/Process.pl: - unified hook changes.
-       - ignore >64 questions.
-       - support moron language.
-
-2001-01-03 21:33  dms
-
-       * src/UserExtra.pl: - start using hooks.
-       - added moron counter to 'status'.
-
-2001-01-03 21:32  dms
-
-       * src/CommandStubs.pl: - unified for global command hooks
-
-2001-01-03 21:31  dms
-
-       * src/IRC/: Irc.pl, IrcHooks.pl: - floodjoinCheck.
-       - note on endofmotd.
-       - Moved ircstats from Irc.pl to on_endofmotd#IrcHooks.pl
-
-2000-12-29 22:46  dms
-
-       * src/Process.pl: for join, ignore whether on a channel if we have power
-
-2000-12-29 22:05  dms
-
-       * src/IRC/IrcHooks.pl: lowercase chan in on_kick, found by xsdg!
-
-2000-12-19 21:06  dms
-
-       * src/Factoids/Reply.pl: forgot about int() in randnick - found by lunartear
-
-2000-12-18 21:40  dms
-
-       * src/core.pl: debug to restart
-
-2000-12-18 21:38  dms
-
-       * src/Net.pl: Remove &ERROR() since it's done by WARN.
-
-2000-12-18 21:35  dms
-
-       * src/Modules/Debian.pl: stop searching if found>100
-
-2000-12-18 21:33  dms
-
-       * src/Process.pl: ignore long unparseable messages.
-
-2000-12-16 20:32  dms
-
-       * src/core.pl: hrm
-
-2000-12-16 20:31  dms
-
-       * src/modules.pl: minor fix to loadmymodules
-
-2000-12-16 20:31  dms
-
-       * LICENSE: - new file for license.
-
-2000-12-16 20:30  dms
-
-       * src/Files.pl: userlist display now verbosity>1
-
-2000-12-16 20:30  dms
-
-       * src/IRC/IrcHooks.pl: - use dccsay
-       - show flags on dcc chat connection.
-       - set type on on_dcc*
-
-2000-12-16 20:29  dms
-
-       * src/IRC/Irc.pl: - &dccsay() added.
-       - &dcc_close() added.
-       - use dccsay in performStrictReply()
-
-2000-12-15 23:36  dms
-
-       * src/Misc.pl: very nice typo for regex, Angel indirectly found this :)
-
-2000-12-15 22:39  dms
-
-       * src/User.pl: forgot to reset userHandle
-
-2000-12-15 22:28  dms
-
-       * src/core.pl: forgot about / in tempDir
-
-2000-12-15 22:25  dms
-
-       * src/Modules/UserDCC.pl: added '.mode' for Netsnipe
-
-2000-12-12 23:12  dms
-
-       * src/core.pl: change ~ to ENV{HOME}
-
-2000-12-11 20:26  dms
-
-       * src/IRC/Schedulers.pl: chanlimitcheck: removed netsplit check
-
-2000-12-11 20:24  dms
-
-       * src/IRC/IrcHooks.pl: netsplit timer added
-
-2000-12-10 20:55  dms
-
-       * src/Shm.pl: &showProc in delForked()
-
-2000-12-10 20:54  dms
-
-       * src/IRC/IrcHooks.pl: userHandle now global var
-
-2000-12-10 20:53  dms
-
-       * src/User.pl: verifyUser finally fixed
-
-2000-12-10 20:52  dms
-
-       * src/core.pl: tempdir fix
-
-2000-12-10 20:51  dms
-
-       * src/Modules/: Freshmeat.pl, Kernel.pl, Slashdot3.pl: temp dir unified
-
-2000-12-10 20:49  dms
-
-       * src/Modules/Debian.pl: - 'find *bin*ssh*' should work.
-       - temp dir unified.
-
-2000-12-10 20:48  dms
-
-       * src/Modules/Factoids.pl: - 'seefix' checks for self-redirects and removes if successful.
-       - 'deadredir' reject long vals.
-       - 'listfix' added.
-
-2000-12-09 21:26  dms
-
-       * src/Modules/Topic.pl: removed/convert debug messages
-
-2000-12-09 21:04  dms
-
-       * src/IRC/IrcHooks.pl: changed debug to status line
-
-2000-12-09 21:01  dms
-
-       * src/IRC/Schedulers.pl: forgot to return for limitcheck + netsplit
-
-2000-12-08 21:09  dms
-
-       * src/IRC/Schedulers.pl: renamed limitCheck to chanlimitCheck
-
-2000-12-04 21:31  dms
-
-       * src/IRC/Schedulers.pl: Typos galore for logCycle, should be fixed
-
-2000-12-03 21:52  dms
-
-       * src/IRC/Schedulers.pl: output cleanup
-
-2000-12-03 21:51  dms
-
-       * src/Modules/Debian.pl: fallback on * properly
-
-2000-12-03 21:50  dms
-
-       * src/Modules/W3Search.pl: Moved w3 regex here
-
-2000-12-03 21:48  dms
-
-       * src/CommandStubs.pl: typo fixed
-
-2000-12-03 21:47  dms
-
-       * src/CommandStubs.pl: Removed W3 regex
-
-2000-12-03 21:46  dms
-
-       * src/Modules/Factoids.pl: Added 'factstats seefix'
-
-2000-12-03 21:46  dms
-
-       * src/Misc.pl: validFactoid.
-
-2000-11-24 22:26  dms
-
-       * src/Modules/Debian.pl: Contents for non-US is broken!
-
-2000-11-24 22:02  dms
-
-       * src/Modules/Debian.pl: typo
-
-2000-11-24 20:23  dms
-
-       * src/Misc.pl: - validFactoid.
-       - fixString
-
-2000-11-24 20:17  dms
-
-       * src/Modules/Freshmeat.pl: - prevent dupe errors.
-       - support bz2/gz for appindex.
-
-2000-11-24 20:10  dms
-
-       * src/Shm.pl: if name undefined, bail out
-
-2000-11-24 20:07  dms
-
-       * src/modules.pl: use modulebase instead of modulefile for delForked()
-
-2000-11-23 23:10  dms
-
-       * src/CommandStubs.pl: made freshmeat fork always
-
-2000-11-23 22:53  dms
-
-       * src/Modules/Freshmeat.pl: changed core to www
-
-2000-11-23 22:22  dms
-
-       * src/CommandStubs.pl: @args changed to flat
-
-2000-11-23 22:21  dms
-
-       * src/: Misc.pl, Net.pl: debug messages removed
-
-2000-11-23 22:21  dms
-
-       * src/Modules/Debian.pl: more cleanups. ^blah and blah$ workspico Debian.pl!
-
-2000-11-19 22:56  dms
-
-       * src/Modules/Debian.pl: debug
-
-2000-11-19 22:56  dms
-
-       * src/modules.pl: use AUTOLOAD to prevent crashes
-
-2000-11-19 22:55  dms
-
-       * src/Net.pl: Reduced timeout by 10x
-
-2000-11-19 22:54  dms
-
-       * src/UserExtra.pl: Fixed up tell to allow target == 'us'.
-
-2000-11-19 22:49  dms
-
-       * src/IRC/IrcHooks.pl: Exit process if on_public hook is activated under fork
-
-2000-11-01 21:59  dms
-
-       * src/UserExtra.pl: - fixed up tell.
-       - 'cycle' changed a bit.
-
-2000-11-01 21:55  dms
-
-       * src/IRC/Irc.pl: debug msg for mixed-case chan
-
-2000-11-01 21:54  dms
-
-       * src/IRC/Schedulers.pl: - make sure we reschedule everything unless it's a non-recoverable error.
-       - disable limit if split active in limitcheck.
-       - enabled 'unlink' in logcycle.
-
-2000-10-04 00:08  dms
-
-       * src/CommandStubs.pl: - we shifted args before using args[0]. fixed.
-       - fixed broken 'convert' cmd.
-
-2000-10-03 01:33  dms
-
-       * src/core.pl: version update
-
-2000-10-03 01:29  dms
-
-       * src/modules.pl: minor change to reloadModule
-
-2000-10-03 01:26  dms
-
-       * src/db_mysql.pl: added sth->finish in an attempt to prevent leaks
-
-2000-10-03 01:26  dms
-
-       * src/CommandStubs.pl: alias to fm for freshmeat forgotten
-
-2000-10-03 01:23  dms
-
-       * src/db_dbm.pl: minor update
-
-2000-10-03 01:20  dms
-
-       * src/Modules/Freshmeat.pl: cleanup of comments
-
-2000-10-03 01:19  dms
-
-       * src/IRC/Irc.pl: change timeout value for scheduler interval
-
-2000-10-03 01:12  dms
-
-       * src/IRC/IrcHooks.pl: fixed - typo for join()
-
-2000-09-29 23:39  dms
-
-       * src/CommandStubs.pl: tiny cleanup
-
-2000-09-29 23:10  dms
-
-       * src/Modules/UserDCC.pl: Minor cleanup
-
-2000-09-29 23:03  dms
-
-       * src/IRC/IrcHooks.pl: DCC fixed
-
-2000-09-25 20:08  dms
-
-       * src/IRC/Irc.pl: fixed up performReply to be more intelligent
-       when doing random stuff.
-
-2000-09-25 20:07  dms
-
-       * src/Factoids/Question.pl: notfound uses @query now; removed origQuery
-
-2000-09-25 00:20  dms
-
-       * src/logger.pl: close log then statuspico logger.pl!
-
-2000-09-24 19:53  dms
-
-       * src/CommandStubs.pl: more changes
-
-2000-09-24 19:51  dms
-
-       * src/Modules/Dict.pl: moved a few lines from CommandStubs.pl here
-
-2000-09-24 19:50  dms
-
-       * src/Factoids/Question.pl: added 'debianForFactoid'.
-       fixed question 'you suck'. found by cerb.
-
-2000-09-24 19:49  dms
-
-       * src/core.pl: forgot 'next' in dir check
-
-2000-09-23 22:18  dms
-
-       * scripts/setup_sql.pl: closed 114944 -- karma can't be a negative int
-
-2000-09-23 22:15  dms
-
-       * src/core.pl: added check for dirs on startup
-
-2000-09-23 22:12  dms
-
-       * src/Modules/Slashdot3.pl: moved temp dir check to core.pl
-
-2000-09-23 20:46  dms
-
-       * src/Modules/Freshmeat.pl: removed some debug lines
-
-2000-09-23 20:45  dms
-
-       * src/modules.pl: fixed up return vals for loadMyModule()
-
-2000-09-23 20:45  dms
-
-       * src/Modules/RootWarn.pl: non-mysql stub
-
-2000-09-23 20:44  dms
-
-       * src/CommandStubs.pl: more conversion to new code
-
-2000-09-23 20:43  dms
-
-       * src/IRC/Schedulers.pl: one too many parens for seen stats; cleanup.
-
-2000-09-23 20:30  dms
-
-       * src/logger.pl: repeat throttling added
-
-2000-09-22 19:56  dms
-
-       * src/Modules/Debian.pl: minor update
-
-2000-09-22 19:56  dms
-
-       * src/CommandStubs.pl: moved more functions to new hook scheme
-
-2000-09-22 19:55  dms
-
-       * src/Shm.pl: forgot shmFlush() in closeSHM()
-
-2000-09-22 18:51  dms
-
-       * files/sample.config: 'undelete' option
-
-2000-09-22 18:50  dms
-
-       * src/IRC/Schedulers.pl: periodically check to delete deleted factoids
-
-2000-09-22 18:49  dms
-
-       * src/Process.pl: added undelete command
-
-2000-09-22 18:49  dms
-
-       * src/Files.pl: removed some verbosity.
-
-2000-09-22 18:48  dms
-
-       * src/modules.pl: verbose on reload (time ago, delta time)
-
-2000-09-18 21:37  dms
-
-       * src/IRC/Irc.pl: op (mode) does not work?
-
-2000-09-18 20:01  dms
-
-       * src/Modules/Debian.pl: typo for searchDesc list element
-
-2000-09-18 19:47  dms
-
-       * src/Misc.pl: minor text cleanup.
-       removed checkPing.
-
-2000-09-18 19:47  dms
-
-       * src/CommandStubs.pl: minor cleanup.
-       Preliminary command hooks (event handlers) working!
-
-2000-09-18 19:46  dms
-
-       * src/IRC/Schedulers.pl: Chanserv 2nd stage fail protection
-       Added seen stats.
-
-2000-09-18 19:45  dms
-
-       * src/Modules/Debian.pl: Added NULL check for &search*();
-       Added stubs for archived revisions.
-
-2000-09-18 19:44  dms
-
-       * src/Factoids/Question.pl: Trailing symbols (.!) ignored on question
-       Founded by Flugh
-
-2000-09-18 19:43  dms
-
-       * src/db_mysql.pl: sqldebug clean up; forgot a return line for GetCol
-
-2000-09-18 19:37  dms
-
-       * src/IRC/Irc.pl: chanserv update to &joinNextChan()
-
-2000-09-18 19:36  dms
-
-       * src/IRC/IrcHooks.pl: minor update
-
-2000-09-18 19:34  dms
-
-       * src/User.pl: removed repetitive debug line
-
-2000-09-18 19:30  dms
-
-       * src/Process.pl: removed feedback addressing. Issue raised by Flugh
-
-2000-09-16 22:12  dms
-
-       * src/CommandStubs.pl: added ddesc for desc search
-
-2000-09-16 22:11  dms
-
-       * src/Modules/Debian.pl: added &searchDesc() if &searchContents() fails
-
-2000-09-16 22:10  dms
-
-       * src/IRC/Schedulers.pl: added NULL irc channel check
-
-2000-09-16 22:09  dms
-
-       * src/core.pl: removed loggingstatus
-
-2000-09-16 21:57  dms
-
-       * src/logger.pl: &status() changes. removed loggingstatus in favour of fileno().
-
-2000-09-16 21:23  dms
-
-       * scripts/setup_sql.pl: another attempt for a fix
-
-2000-09-14 21:29  dms
-
-       * scripts/: setup_sql.pl, setup_tables.pl, setup_users.pl: script merge, doc update
-
-2000-09-14 20:13  dms
-
-       * src/: Files.pl, UserFile.pl, Modules/UserDCC.pl: status() -> &status()
-
-2000-09-14 20:12  dms
-
-       * src/IRC/IrcHooks.pl: minor text fixup for umode
-
-2000-09-14 20:11  dms
-
-       * src/IRC/Schedulers.pl: Added miscCheck(), now does reloadAllModules()
-
-2000-09-14 20:07  dms
-
-       * src/modules.pl: ability to reload extra modules automatically
-
-2000-09-14 00:39  dms
-
-       * src/Modules/Debian.pl: another installed-size prob fix
-
-2000-09-13 22:18  dms
-
-       * src/Factoids/Reply.pl: Removed FIXME
-
-2000-09-13 22:07  dms
-
-       * src/Misc.pl: stat used wrong time, [8] instead of [9]
-
-2000-09-13 22:03  dms
-
-       * src/Misc.pl: changed some text, more debugging
-
-2000-09-13 22:02  dms
-
-       * src/Modules/Debian.pl: hopefully last time it will be fixed
-
-2000-09-13 21:39  dms
-
-       * src/Modules/Freshmeat.pl: forgot about blootbot_pid
-
-2000-09-13 21:38  dms
-
-       * src/Modules/Debian.pl: non-us fixed!
-
-2000-09-13 21:36  dms
-
-       * src/modules.pl: removed two debugging lines or so
-
-2000-09-13 21:19  dms
-
-       * src/Modules/Debian.pl: Removed fixNonUS; added a hack for no contents file for woody non-US i386 at least.
-
-2000-09-13 21:03  dms
-
-       * src/core.pl: bot: spit out memory change messages in DCC CHAT. TODO: DCCBroadcast should allow userflag arg.
-
-2000-09-12 23:33  dms
-
-       * src/Modules/Topic.pl: Another regex topic fix
-
-2000-09-12 23:12  dms
-
-       * src/db_mysql.pl: Fixed up stub dbGetRowInfo
-
-2000-09-10 22:40  dms
-
-       * src/logger.pl: was opening sql debug file for read, not write. typo
-
-2000-09-10 01:09  dms
-
-       * src/IRC/Schedulers.pl: changed verb level from 2 to 1 for seenFlush
-
-2000-09-10 00:36  dms
-
-       * src/IRC/Schedulers.pl: debug for seenflush
-
-2000-09-10 00:30  dms
-
-       * files/sample.config: SQLDebug line
-
-2000-09-10 00:28  dms
-
-       * src/modules.pl: forgot to set module age if successfully loaded. split reloadModules into reloadAllModules and reloadModule. &reloadModule() now called by loadMyModule()
-
-2000-09-10 00:24  dms
-
-       * src/logger.pl: supressed subroutine redefined warning. Added sql debug support (open/close)
-
-2000-09-10 00:19  dms
-
-       * src/db_mysql.pl: Added sql debug support (print)
-
-2000-09-10 00:16  dms
-
-       * src/Modules/UserDCC.pl: fixed/added global factoid SAR
-
-2000-09-09 22:41  dms
-
-       * src/Modules/Topic.pl: fixed regex line, founded by Flugh
-
-2000-09-06 23:00  dms
-
-       * src/Factoids/Update.pl: minor change
-
-2000-09-06 22:59  dms
-
-       * src/logger.pl: 'use strict' issue
-
-2000-09-06 22:57  dms
-
-       * src/Modules/UserDCC.pl: global SAR. only avail to +n and DCC.
-
-2000-09-06 22:56  dms
-
-       * src/core.pl: fixed due to changes. (re: Flugh)
-
-2000-09-05 23:47  dms
-
-       * scripts/: dbm2mysql.pl, mysql2txt.pl, setup_tables.pl,
-       setup_users.pl, txt2mysql.pl: forgot to update these files in the root dir overhaul
-
-2000-09-05 01:55  dms
-
-       * scripts/setup_users.pl: fixed up a bit
-
-2000-09-05 01:28  dms
-
-       * src/logger.pl: stupid typo (carelessness) on my behalf
-
-2000-09-01 22:21  dms
-
-       * src/UserExtra.pl: debug info for ircstats hash list
-
-2000-09-01 22:19  dms
-
-       * src/IRC/IrcHooks.pl: added disconnect and connect stats, just debug info for now
-
-2000-09-01 21:18  dms
-
-       * src/Modules/Topic.pl: prevent dupes to be added; added debugging info if bot is not permitted to add topics (+t/-o).
-
-2000-09-01 20:58  dms
-
-       * src/IRC/Schedulers.pl: ircCheck now checks @joinchan for chans left to join, but should never happen.
-
-2000-09-01 20:56  dms
-
-       * src/Modules/Debian.pl: debian: fixed broken files for woody's non-US
-
-2000-08-31 22:45  dms
-
-       * src/CommandStubs.pl: lame warning fix for babel
-
-2000-08-31 22:41  dms
-
-       * src/logger.pl: forgot a )
-
-2000-08-30 21:33  dms
-
-       * src/Modules/Uptime.pl: Added catch just in case if forked
-
-2000-08-30 21:14  dms
-
-       * src/Shm.pl: changes due to Debian.pl
-
-2000-08-30 21:12  dms
-
-       * src/Modules/Debian.pl: minor changes, removed 'slink', changed 'stable' for 'potato'
-
-2000-08-30 21:09  dms
-
-       * src/Factoids/Update.pl: added debugging info for '.,' and '.,' problems
-
-2000-08-30 20:42  dms
-
-       * src/logger.pl: added $forkedtime, for debugging
-
-2000-08-30 20:19  dms
-
-       * src/CommandStubs.pl: preliminary command hook support added
-
-2000-08-20 22:17  dms
-
-       * src/Modules/UserDCC.pl: closed 17554 -- re-add part/leave to DCC CHAT only
-
-2000-08-20 21:58  dms
-
-       * src/Modules/Debian.pl: we don't stop if debianDownload fails unless none of the files exist locally
-
-2000-08-20 21:46  dms
-
-       * src/Modules/Debian.pl: shouldn't recursively call sP
-
-2000-08-20 21:33  dms
-
-       * src/Misc.pl: double fork -> VERB(2), minor cosmetics
-
-2000-08-20 21:28  dms
-
-       * src/IRC/IrcHooks.pl: if statement of seen swapped.   DCC CHAT close ignored if forked.
-
-2000-08-20 21:25  dms
-
-       * src/Factoids/Reply.pl: added randnick
-
-2000-08-20 21:24  dms
-
-       * src/Modules/Debian.pl: check for stality in sP()
-
-2000-08-19 20:10  dms
-
-       * files/sample.config: closed 17225 -- result of fixed bug
-
-2000-08-19 19:24  dms
-
-       * src/: User.pl, IRC/IrcHooks.pl: closed 17225 -- seen only stores addressed messages. Also moved seen code from User.pl to IrcHooks.pl
-
-2000-08-19 18:44  dms
-
-       * src/Modules/Topic.pl: closed 17447 -- 'topic info' should give more info
-
-2000-08-15 19:27  dms
-
-       * src/Misc.pl: warning (typo) fixed
-
-2000-08-15 19:26  dms
-
-       * files/sample.config: deprecated weather option/feature removed
-
-2000-08-15 19:24  dms
-
-       * src/IRC/Schedulers.pl: ircCheck(): added full path for ipcs,ipcrm
-
-2000-08-15 19:21  dms
-
-       * src/IRC/IrcHooks.pl: on_disconnect schedules ircCheck*( for 1800s
-
-2000-08-12 20:45  dms
-
-       * src/UserExtra.pl: don't prevent wantnick from working in any case
-
-2000-08-12 20:43  dms
-
-       * src/IRC/Schedulers.pl: Added getNickInUse()
-
-2000-08-12 20:42  dms
-
-       * src/IRC/IrcHooks.pl: on_nick_taken calls getNickInUse() now
-
-2000-08-12 20:41  dms
-
-       * src/logger.pl: use getPath() for create logdir for openLog()
-
-2000-08-12 20:38  dms
-
-       * src/Misc.pl: typo for file in loadHelp() ... added getPath() for openLog()
-
-2000-08-11 21:28  dms
-
-       * src/Factoids/Update.pl: closed 17031 -- Fix up appending to factoids
-
-2000-08-11 21:21  dms
-
-       * src/Factoids/: Reply.pl, Update.pl: closed 17187 -- <factoid> are also <info>' doesn't work...   also removed mailto:
-
-2000-08-11 21:10  dms
-
-       * src/Modules/Math.pl: closed 17344 -- Maths.pl is borked in a way
-
-2000-08-11 20:53  dms
-
-       * src/IRC/IrcHooks.pl: close 17091 completely... fix up on_nick IRC hook
-
-2000-08-11 20:48  dms
-
-       * src/IRC/Schedulers.pl: closed 17091 -- chaninfo stats inconsistent after time
-
-2000-08-11 20:11  dms
-
-       * src/modules.pl: Fixed problem with loadMyModules() caused by delForked()
-
-2000-08-11 20:10  dms
-
-       * src/Modules/W3Search.pl: closed 17379 -- W3Search.pl gives duplicate output
-
-2000-08-04 23:19  dms
-
-       * src/Factoids/Statement.pl: at -> mailto remnants from stock infobot removed
-
-2000-08-03 22:19  dms
-
-       * src/logger.pl: status did not print output if config file was not loaded. Fixed by initializing VERBOSITY to 1
-
-2000-08-03 22:11  gmlb
-
-       * INSTALL.patches: Readme update.
-
-2000-08-03 21:53  dms
-
-       * src/Modules/Kernel.pl: forgot about blootbot -> bot
-
-2000-08-03 01:04  gmlb
-
-       * INSTALL.mysql, INSTALL: Fixed some documentation typOs. (in the install docs)
-
-2000-08-01 21:41  dms
-
-       * src/CommandStubs.pl: userinfo had wrong argument # set
-
-2000-07-31 22:57  gmlb
-
-       * infobot:
-       Removed old infobot. We are now using blootbot as the main script
-
-2000-07-31 22:37  dms
-
-       * src/: IRC/Irc.pl, IRC/IrcHooks.pl, IRC/Schedulers.pl,
-       Modules/Countdown.pl, Modules/Factoids.pl, Modules/Freshmeat.pl,
-       Modules/Kernel.pl, Modules/Units.pl, Modules/Uptime.pl,
-       Modules/Wingate.pl, Modules/babel.pl: cvs commit borked, continuing
-
-2000-07-31 22:31  dms
-
-       * AUTHORS, INSTALL, README, blootbot, doc/old/TODO,
-       files/blootbot.help, files/blootbot.ignore, files/blootbot.lang,
-       files/blootbot.lart, files/blootbot.randtext, files/blootbot.users,
-       files/ircII.servers, files/sample.config, scripts/botchk.sh,
-       scripts/dbm2mysql.pl, scripts/insertDB.pl, scripts/mysql2txt.pl,
-       scripts/setup_tables.pl, scripts/setup_users.pl,
-       scripts/txt2mysql.pl, src/Misc.pl, src/Process.pl, src/core.pl,
-       src/modules.pl, src/Factoids/Question.pl, src/Factoids/Reply.pl,
-       src/Factoids/Statement.pl, src/Factoids/Update.pl: Changed $infobot_ to $bot_
-       Changed infobot to blootbot where needed
-       Renamed *infobot* to *blootbot*
-
-2000-07-31 20:47  dms
-
-       * src/logger.pl: Added functionality to cycle all logs if exceeds specified size
-
-2000-07-31 20:33  dms
-
-       * src/: CommandStubs.pl, UserExtra.pl, Modules/Topic.pl: changed NOREPLY to dollar noreply
-
-2000-07-31 20:10  dms
-
-       * src/Modules/UserDCC.pl: send DCC message when using 'op'
-
-2000-07-30 08:33  gmlb
-
-       * doc/README_TODO: Added README_TODO. It contains important info on the TODO list. READ!
-
-2000-07-30 08:01  gmlb
-
-       * doc/: BUGS, Connection.pm, EXAMPLES, FAQ, Google.pm, TODO, USAGE,
-       mysql.txt, notes.txt, pgsql.txt: Removing old doucments in /doc. They are archived in /doc/old. The newest documents will be on the website. See /doc/README_NOW for more information.
-
-2000-07-30 07:56  gmlb
-
-       * doc/old/: BUGS, Connection.pm, EXAMPLES, FAQ, Google.pm, TODO,
-       USAGE, mysql.txt, notes.txt, pgsql.txt: Moving documentation to /doc/old
-
-2000-07-30 07:51  gmlb
-
-       * doc/README_NOW: Adding README_NOW. Please read it, as it contains very important DOC information
-
-2000-07-30 07:02  blootbot
-
-       * AUTHORS: Updated personal info in AUTHORS file. Must talk to XK about title :)
-
-2000-07-30 00:11  dms
-
-       * AUTHORS, patches/Connection.pm, patches/Google.pm: new/moved files
-
-2000-07-30 00:09  dms
-
-       * INSTALL.patches, README, doc/USAGE, doc/modules.txt,
-       files/sample.config, scripts/backup_table-slave.pl, src/Files.pl,
-       src/Misc.pl, src/Net.pl, src/Shm.pl, src/UserExtra.pl, src/core.pl,
-       src/db_dbm.pl, src/db_mysql.pl, src/db_pgsql.pl, src/logger.pl,
-       src/modules.pl, src/Factoids/DBCommon.pl, src/Factoids/Update.pl,
-       src/IRC/Irc.pl, src/IRC/IrcHooks.pl, src/IRC/Schedulers.pl,
-       src/Modules/Countdown.pl, src/Modules/Debian.pl,
-       src/Modules/DebianExtra.pl, src/Modules/Dict.pl,
-       src/Modules/DumpVars.pl, src/Modules/Factoids.pl,
-       src/Modules/Freshmeat.pl, src/Modules/Kernel.pl,
-       src/Modules/RootWarn.pl, src/Modules/Slashdot3.pl,
-       src/Modules/Topic.pl, src/Modules/Uptime.pl,
-       src/Modules/UserDCC.pl, src/Modules/UserInfo.pl,
-       src/Modules/Wingate.pl: changed email address
-
-2000-07-28 23:26  dms
-
-       * files/infobot.config, files/sample.config, src/core.pl: loadConfig to spurt out correct message when infobot.config does not exist on fresh install
-
-2000-07-28 23:11  dms
-
-       * MrInfo.uptime: delete stale files not needed for fresh installation
-
-2000-07-28 00:59  blootbot
-
-       * ChangeLog: Added a line to ChangeLog. I hope to keep this more uptodate and start documentatio. -GmLB
-
-2000-07-28 00:10  blootbot
-
-       * INSTALL, INSTALL.dbm, INSTALL.mysql, INSTALL.patches,
-       INSTALL.pgsql, README, infobot, ChangeLog, MrInfo.uptime, doc/BUGS,
-       doc/Connection.pm, doc/EXAMPLES, doc/FAQ, doc/Google.pm, doc/TODO,
-       doc/USAGE, doc/modules.txt, doc/mysql.txt, doc/notes.txt,
-       doc/pgsql.txt, files/infobot.config, files/infobot.help,
-       files/infobot.ignore, files/infobot.lart, files/infobot.users,
-       files/ircII.servers, files/sample.countdown,
-       patches/Net::IRC.patch, patches/WWW::Search.patch,
-       scripts/backup_table-master.sh, scripts/backup_table-slave.pl,
-       scripts/botchk.sh, scripts/dbm2mysql.pl, scripts/dbm2txt.pl,
-       scripts/fixbadchars.pl, scripts/insertDB.pl, scripts/makepasswd,
-       scripts/mysql2txt.pl, scripts/oreilly_dumpvar.pl,
-       scripts/oreilly_prettyp.pl, scripts/parse_warn.pl,
-       scripts/setup_tables.pl, scripts/setup_users.pl,
-       scripts/showvars.pl, scripts/txt2mysql.pl, scripts/vartree.pl,
-       scripts/webbackup.pl, files/infobot.randtext, files/infobot.lang,
-       files/sample.config, files/sample.insert, files/unittab,
-       src/CommandStubs.pl, src/Files.pl, src/Misc.pl, src/Net.pl,
-       src/Process.pl, src/Shm.pl, src/User.pl, src/UserExtra.pl,
-       src/core.pl, src/db_dbm.pl, src/db_mysql.pl, src/db_pgsql.pl,
-       src/interface.pl, src/logger.pl, src/modules.pl, src/IRC/Irc.pl,
-       src/IRC/IrcHooks.pl, src/IRC/Schedulers.pl,
-       src/Modules/Countdown.pl, src/Modules/DNS.pl,
-       src/Modules/Debian.pl, src/Modules/Dict.pl,
-       src/Modules/Freshmeat.pl, src/Modules/Kernel.pl,
-       src/Modules/Quote.pl, src/Modules/RootWarn.pl,
-       src/Modules/Search.pl, src/Modules/Slashdot3.pl,
-       src/Modules/Topic.pl, src/Modules/Units.pl, src/Modules/Uptime.pl,
-       src/Modules/UserInfo.pl, src/Modules/W3Search.pl,
-       src/Factoids/DBCommon.pl, src/Factoids/Norm.pl,
-       src/Factoids/Question.pl, src/Factoids/Reply.pl,
-       src/Factoids/Statement.pl, src/Factoids/Update.pl,
-       src/Modules/DebianExtra.pl, src/Modules/DumpVars.pl,
-       src/Modules/Factoids.pl, src/Modules/Math.pl,
-       src/Modules/UserDCC.pl, src/Modules/Wingate.pl,
-       src/Modules/babel.pl, src/Modules/insult.pl,
-       src/Modules/nickometer.pl:
-       Trying to add 1.0.0. I hope it works. --GmLB
-
-2000-07-28 00:10  blootbot
-
-       * INSTALL, INSTALL.dbm, INSTALL.mysql, INSTALL.patches,
-       INSTALL.pgsql, README, infobot, ChangeLog, MrInfo.uptime, doc/BUGS,
-       doc/Connection.pm, doc/EXAMPLES, doc/FAQ, doc/Google.pm, doc/TODO,
-       doc/USAGE, doc/modules.txt, doc/mysql.txt, doc/notes.txt,
-       doc/pgsql.txt, files/infobot.config, files/infobot.help,
-       files/infobot.ignore, files/infobot.lart, files/infobot.users,
-       files/ircII.servers, files/sample.countdown,
-       patches/Net::IRC.patch, patches/WWW::Search.patch,
-       scripts/backup_table-master.sh, scripts/backup_table-slave.pl,
-       scripts/botchk.sh, scripts/dbm2mysql.pl, scripts/dbm2txt.pl,
-       scripts/fixbadchars.pl, scripts/insertDB.pl, scripts/makepasswd,
-       scripts/mysql2txt.pl, scripts/oreilly_dumpvar.pl,
-       scripts/oreilly_prettyp.pl, scripts/parse_warn.pl,
-       scripts/setup_tables.pl, scripts/setup_users.pl,
-       scripts/showvars.pl, scripts/txt2mysql.pl, scripts/vartree.pl,
-       scripts/webbackup.pl, files/infobot.randtext, files/infobot.lang,
-       files/sample.config, files/sample.insert, files/unittab,
-       src/CommandStubs.pl, src/Files.pl, src/Misc.pl, src/Net.pl,
-       src/Process.pl, src/Shm.pl, src/User.pl, src/UserExtra.pl,
-       src/core.pl, src/db_dbm.pl, src/db_mysql.pl, src/db_pgsql.pl,
-       src/interface.pl, src/logger.pl, src/modules.pl, src/IRC/Irc.pl,
-       src/IRC/IrcHooks.pl, src/IRC/Schedulers.pl,
-       src/Modules/Countdown.pl, src/Modules/DNS.pl,
-       src/Modules/Debian.pl, src/Modules/Dict.pl,
-       src/Modules/Freshmeat.pl, src/Modules/Kernel.pl,
-       src/Modules/Quote.pl, src/Modules/RootWarn.pl,
-       src/Modules/Search.pl, src/Modules/Slashdot3.pl,
-       src/Modules/Topic.pl, src/Modules/Units.pl, src/Modules/Uptime.pl,
-       src/Modules/UserInfo.pl, src/Modules/W3Search.pl,
-       src/Factoids/DBCommon.pl, src/Factoids/Norm.pl,
-       src/Factoids/Question.pl, src/Factoids/Reply.pl,
-       src/Factoids/Statement.pl, src/Factoids/Update.pl,
-       src/Modules/DebianExtra.pl, src/Modules/DumpVars.pl,
-       src/Modules/Factoids.pl, src/Modules/Math.pl,
-       src/Modules/UserDCC.pl, src/Modules/Wingate.pl,
-       src/Modules/babel.pl, src/Modules/insult.pl,
-       src/Modules/nickometer.pl: Initial revision
-
-v1.0.0 (20000725): bug fixes mainly.
-       - GmLB found that scripts/setup_*.pl didn't work. Fixed.
-       - Fixed warning in Modules/Uptime.pl for clean install.
-       - More fixes for scripts/*mysql*.pl from GmLB.
-       - Added command 'hex'.
-       - GmLB fixed mysql2txt.pl and txt2mysql.pl. You can now import and
-         export to inforbot 'factpacks'.-
-
-v1.0.0RC3 (20000720): bug fixes mainly.
-       - Debian.pl's infoPackages() now checks for incoming
-         automatically and shows the new file.
-       - irq/dan found the bot wouldn't run if a stale (invalid) pid
-         file exists. Fixed.
-       - Created &closeDCC(), &closePID()
-       - Added factoid SAR of (3-123) => 53
-
-v1.0.0RC2 (20000707):
-       - Ported back Berkerley DBM support. 95% of it works :)
-       - Also added pgSQL support.  Will not work out-of-the-box.
-       - Updated README.
-       - Fixed up 'modules.pl' a bit so if anything fails, it exits
-         gracefully.  Module reloading should work better now.
-       - DCC CHAT commands now must have '.' prepended otherwise all text
-         will me broadcasted to the dcc chat arena.
-       - Removed command 'part'.  Use 'kick' instead :)
-       - 'random|cookie' now takes argument to narrow down randomness.
-       - Merged 90% of MbM's@OPN modifications. Thanks.
-               => bug fixes here and there
-               => 'tell' fixed.
-               => checks for owner of factoids for delete/modify factoids
-       - Moved Factoids/db* to .
-       - Misc stuff here and there.
-
-v1.0.0RC1 (20000701):
-       - Added several hacks (run away fork) due to bot misbehaving.
-       - Added deop.
-       - Added ability to disable factoid support.
-       - Reorganized source tree to be more modular.
-               - Created dirs: IRC, Factoids.
-               - moved partial core.pl and PerlMod.pl to modules.pl
-               - renamed Modules.pl to CommandStubs.pl
-       - Added command 'cycle'.
-       - hardguy/max noted that insult was borked.  It wasn't converted
-         to the new fork format. Fixed but untested.
-       - Added 'ircstats' command. forgot about DisconnectReason
-       - Added to-expire-time on 'ignorelist'
-       - Forgot to clear %ignoreList on loading the list.
-       - moved 'ignorelist' from DCC-only to public/private msg.
-
-v1.0.0pre11 (20000601):
-       - we call &ircloop() if we want to reconnect. Any harm to perl?
-       - Wingate fixed yet again. maximum time for response is 6secs in
-         order to cache maximum number of hosts.
-       - Added ban() for Wingate.
-       - Forgot about virtual host support when changed over to Net::IRC
-       - process() still calls shmCycle() just in case.
-       - Added limit to how many random things we can have in a factoid
-         to prevent endless loops from occurring.
-       - All debian stuff now fully forks -- good.
-       - Failure on &loadMyModule() now deletes $forked{$label}.
-       - if instructed to join a channel "manually", tell who did it on
-         join.
-       - Debian module now searches woody's non-US properly. Misc fixes
-         here and there.
-       - Removed non-working mysql table locking code.
-       - Freshmeat.pl now uses LWP::Simple's getstore. How to load the
-         file on-the-fly?
-       - Looked at Modules-Reload and implemented idea in the bot.
-       - Forgot about flushing uptime in scheduler.
-       - Added unit conversion feature to bot, based on Units-Convert
-         package (at CPAN).
-       - Converted several scalars to hashes.
-       - Added slashdot,freshmeat and kernel announcements of new stuff.
-       - merged chanstats into one line, added top msg stats.
-       - Wingate now does intelligent on-the-fly caching and flushing to
-         a wingate file to prevent dupes. UNTESTED
-       - "find pident potato" now works after few mods/hacks :)
-       - ...
-
-v1.0.0pre10 (20000523):
-       - Fixed minor problems in Debian.pl, I hope.
-         => DebianDownload now calls generateIndex() if a download is
-               successful.
-         => More clean ups.
-         => generateIncoming() forgot about checking stale of idxfile.
-       - Modules in Modules/* now dynamically loaded. Using about ~200k
-         less ram now.
-       - Added support of user modes with param{ircUMODE}. Requested by
-         Flugh.
-       - hookMsg modified, we don't check ignore list if we're not
-         addressed or minvollength is defined. flooding is now
-         configurable by repeated message and total message, expire time
-         and count, like eggdrop.
-       - nickometer didn't reset the score. noticed by greycat+others.
-       - &setupScheduler() scheduler is only called once.
-       - UIS now supports proper locking and lock check.
-       - verifyUser didn't set userHandle to 'default' if not found.
-       - Added factoid reply support of '(blah1|blah2)?'
-       - Added 'FAQ'.
-       - Added DebianExtra.pl module to list bugs. a hack and ugly!
-       - Finally fixed list of old topics in Topic.pl, courtesy of mux
-         and nicholas_.
-       - Removed usage of quotemeta, replaced with \Q\E pair for regex.
-       - Included patches to modify stock-brokeness of perl modules.
-         'cd /usr/lib/perl5; cat *.patch| patch -p0'
-       - Setup option whether to cache user online stats. Disabling will,
-         for sure, won't bloat the bot by 2-4megs (but why that much?).
-
-v1.0.0pre9 (20000512):
-       - Typo for outsider checking. Noticed when #debian flooder came
-         back yet again :)
-       - seenCycle was in minutes instead of days. fixed.
-       - Added User Information Services module. requested by Flugh.
-               => 'uinfo <nick>'
-               => 'uinfo set <type> <what>'
-               => 'uinfo unset <type>'
-       - Added &IsNickInAnyChan($nick);
-       - Added &DCCBroadcast($txt) to broadcast messages to all members
-         of DCC CHAT.
-       - &say() now changes '0' to 'zero' due to Net::IRC bug.
-       - Added &GetNickInChans($nick);
-       - Merged fooz's wingate scanner.
-       - Added 'ignoreAutoExpire' to differentiate time for ignore due to
-         flooding instead of 'ignore' through DCC CHAT.
-         => remove time for 'ignore' through DCC CHAT?
-       - Added &debianCheck() to check state of gzip'd files.
-       - ...
-
-v1.0.0pre8 (20000505):
-       - usual backlash from upgrade.
-       - added 'useStrict' option to infobot.config.
-       - added 'reload', to reload Core and Extras Modules. Does it
-         reload only if the file has changed?
-       - added preliminary (debug) code for ftpGet() for truncated
-         downloads. regetting will be added soon afterwards.
-       - minor fix for Debian.pl where a package exists but an
-         incomplete Packages file may not have info on that package.
-       - Modified on-the-fly ignore to be temporary. temporary ignore
-         requested by jCommons.
-       - added 'factstats requester'.
-       - preliminary use of scheduler for &checkPing() in &on_init().
-               no event hook on 'pong' :(((
-       - Timers now use Net::IRC's scheduler, woohoo. Nice change over.
-         Moved ProcessExtras.pl to Schedulers.pl.
-       - Added 'factstats deadredir'.
-       - Don't prevent auto-reconnecting due to disconnection.
-       - Forgot initialization before any new IRC connection.
-       - Added scheduler for checking IRC connection.
-       - Fixed problem in Freshmeat module, if forked to download, would
-         not continue with query. => now it does, nice hack.
-       - Debian module should generate incoming index if does not exist.
-       - Chatting can be done through DCC CHAT.
-       - ...
-
-v1.0.0pre7 (20000426):
-       - INSTALL and README updated.
-       - auto-request for ops after joining all channels instead of after
-         each channel join.
-       - If factoid is requested by someone, show literally (no
-         evaluation) if owner of factoid matches aswell as if requested
-         privately(good idea?)
-       - on_notice fixed and debugging info removed.
-       - Added reconnect on HUP if we're not connected. I hope that it is
-         set to 0 otherwise this solution is dead.
-       - ';' added as address char.
-       - maths bug found by NoNix4.
-               eg: 6000.0/9.000 - 6.000/9.000 - 666.00001
-       - nickometer bug (pi not defined) found by ddent. 'strict' cleanup.
-       - Preliminary CLI code included. Good for local use.
-       - typo in Topic.pl, found by jCommons. Fix for NULL topic.
-       - minor Debian.pl update to deal with 'missing files' on download.
-       - multi-shmwrite support added. looks like it doesn't "refresh"
-         the value properly if written many times.
-       - &verifyUser() only used if addressed.
-       - Applied 'use strict' to all code. Also used 'use vars qw()'.
-       - Added 'backlog #' to DCC CHAT. requested by jCommons.
-       - ctcp version reply wrong; FIXED. found by fooz.
-
-v1.0.0pre6 (20000407):
-       - README updated.
-       - Added retry on failure to reconnect through on_disconnect();
-         REMOVED -- this spun an endless loop.
-       - Found why Googling didn't work. See README for fix.
-       - Forgot about channel casing bugs (on_{join|part}) after
-         changeover to Net::IRC.
-       - Changed addForked() to cycle through fork list and delete stale
-         forks in case a forked child dies unexpectedly.
-       - Renamed allowOutsiders to disallowOutsiders just in case if the
-         option is removed from the configuration.
-
-v1.0.0pre5 (20000331):
-       - setup_users.pl. DBI*() => sql*().
-       - 'topic add BLAH' on empty topic would bork. Why didn't I pick
-         this up before?
-       - Somehow I removed (or it wasn't there) 'my @results' from
-         searchTable();
-       - nickometer now uses loadPerlModule()... another 500 kB saved :)
-       - repeat flood detection prevention added.
-       - Added el-cheapo hash key counter... possible leak detector.
-       - Added 'factstats lame' for short and most probably stupid
-         factoids.
-       - Weather module removed
-       - Renamed 'join' to 'joinchan' to due warning//conflict raised
-         with perl 5.005 (on potato not slink).
-       - Disabled syscall (removes 300 kB on slink, 3megs on potato)
-
-v1.0.0pre4 (20000323): pseudo AutoLoader support.
-       - 'infobot' now first loads core.pl and logger.pl.
-       - timerExpire() fixed.
-       - Added unique maintainer count to 'dstats'.
-       - Added demand-on-load of external perl modules. Now we need
-         dynamic(on demand) loading of 'Modules/*.pl' modules ;)
-
-v1.0.0pre3 (20000319):
-       - Fixed Freshmeat.pl not to show duplicate packages found by
-         'name' and 'oneliner' search. Made showPackage() function.
-       - Debian modules now does multi distro. (woody's non-us appears to
-         be different structure so does not work :(, very crude hack...
-         may not even work).
-       - Added subfactoid randomising. eg: '(one|two|three)'.
-       - 'dauthor' now works!
-       - karma fixed... used the wrong var name.
-       - Fixed doubling of text when message from 'nick' is ignored.
-       - Added 'redir' to designate one factoid as master and duplicates
-         as redirectors//slaves.
-       - Added addressing recognition character(s) support. eg "!status".
-       - Seen info now cached and flushed at intervals or upon exiting.
-       - Added 'EXAMPLES' file to doc/.
-       - Removed ancient '&channel()'.
-       - Bug fixes after offshore installation of bot.
-       - Debian output of 'info' fixed. looks like 'fm', heh.
-       - Debian distro stats added. I'm competing with larne and his mods
-         to dpkg@OPN#debian :) so far so good.
-       - Forgot to close shm upon exit, heh :) However this does not
-         prevent leakage when the bot crashes.
-       - Parameter 'forking' now works, courtesy of generic &Forker()
-         function, woohoo! Now we use &Forker() for _everything_.
-         I had this in the todo list, removed it and decided to implement
-         it once and for all.
-       - More bug fixes when moved changes to 'apt'. Several "bug
-         reports" sent from #debian, thanks!
-       - Moved infobot communications _after_ ignore checking code.
-       - babelfish changed format? disabled for the time being.
-       - ...
-
-v1.0.0pre2 (20000310): BETA TEST RELEASE
-       - Hacked multiple mysql connection support in.
-       - Renamed DBI to SQL, including functions.
-       - Added $ishost.
-       - Added backup scripts to create and mirror tables.
-       - listauth fixed.
-       - Added parse_warn.pl to decipher warn messages from logs.
-       - shm* now works. no more fork floods ;)
-       - Applied fork protection on all forking modules.
-       - Dict feature now supports specific retrival of definition,
-         however, default is still random.
-       - Debian feature now supports multiple sub distributions. This can
-         be further extended to architecture (perhaps easily).
-       - Added (but commented) larne's regex for debian search.
-       - Added &hasParam() to include notification that a feature
-         (command) requested is disabled in configuration.
-       - Added dumping of memory stats.
-       - Fixed broken timerExpire().
-       - Added auto shutdown of bot if too much ram is used.
-       - Modified seen feature, set to off by default.
-               - UPDATE: fixed, about time.
-       - Improved parse_warn.pl to be like "diff".
-       - Dollar variable addition?? suggestions by ddent.
-       - 'factstats dupe' now ignores '<REPLY> see'.
-               - UPDATE: fixed.
-       - Added random factoid timer.
-       - Don't redownload file via getFTP() if local and remote sizes are
-         the same.
-       - Added $count{'Dunno'} for unanswered questions.
-       - Fixed 'blah is also or' since we didn't allow 'or'.
-       - Added 'factstats redir' to display factoid redirections.
-       - Grep nick from list of nicks in IsNickInChan(). Bug found by
-         Mercury.
-       - Time taken and final xfer rate displayed in FTP.
-       - Fixed bug where 'or' is eval'd in Math.pl. Return '' if eval()
-         is not done. Bug found by dent.
-       - Added 'factstats redir' to list working and non-working
-         redirected (symlink) factoids.
-       - cmdstats now sorted by highest->lowest usage.
-       - ...
-
-v1.0.0pre1 (20000130):
-       - Mostly converted to Net::IRC, quite nice, like the dbm to mysql
-         change over :)
-       - Removed IrcHooks.pl and CTCP.pl.
-       - Moved hooks stuff to IrcHooks.pl.
-       - Moved IrcExtras.pl to Irc.pl.
-       - Removed ansi_control option. colors can be stripped within
-         &status() anyway, like for logging.
-       - Added DCC CHAT and DCC SEND support base.
-               - DCC SEND: null file. due to fork()? Fixed anyway.
-               - DCC CHAT: person's responsibility to close DCC CHAT.
-
-v0.99pre12 (20000125):
-       - Added intelligent flood protection and removed factoid
-         repetition prevention.
-       - Modified Math.pl...
-       - Unified tell code in Process.pl.
-       - Moved variable fix and addresing code to IrcHooks.pl
-       - Moved tell code from Question.pl to UserExtra.pl.
-       - Found that % and \ were double backslashed; added it to invalid
-         factoids. May have been caused by whoever unbacked up 'apt',
-         cerb? :) May want to add a function to automatically fix badly
-         formed factoids.
-       - Added 'factstats profanity', with &hasProfanity($str).
-       - Added functions for shared memory usage.
-         Uses: prevent exploitation of forked processes.
-       - Added 'factstats unrequested'.
-       - stale variables (vhost_name) forgotten in changeover.
-       - UPDATE:
-       - Fixed major leak with cycling of flood messages, typo :)
-
-v0.99pre11 (20000123):
-       - Fixes here and there...
-       - Debian find now searches Package names. Fallback automatically
-         to contents file search.
-       - Fixed typo related to log cycling.
-       - Added netsplit detection code.
-       - Started DCC support... very early stages.
-       - Replaced several 'foreach' statements with 'if' for efficiency.
-         About 5 instances of code...
-       - Debian contents search ignores man pages (unless search string
-         obvious for man page). Suggested by sgore.
-       - 'factstats locked' returns list instead of only count.
-       - &DoModes() bug found by larne.
-       - Used '$nick' instead of 'lc $nick' for $channels.
-         Found by larne.
-
-v0.99pre10 (20000119):
-       - Fixed bugs found when moved code to 'apt':
-               - added '^' and '|' to $isnick.
-               - removed 'local' and 'my' for some global vars.
-               - Typos of some variable names.
-               - More typos.
-       - Debian.pl contents search is better now.
-               - UPDATE: made changes suggested by greycat.
-               - Added Packages query now...
-       - Added &getRandomLineFromFile()
-       - Added LART, random text, Channel limit adjuster.
-               TODO => Wingate checker (NOT COMPLETED)...
-       - Added &iseq() and &isne().
-       - Help info is not cached any more => loaded each time help() is
-         called.
-       - Added %timer hash, timestamp when something was last done. The
-         hash name is incorrectly named, eh?
-       - Moved parts of Process.pl to ProcessExtra.pl.
-       - Moved parts of User.pl to UserExtra.pl.
-       - Moved myRoutines.pl to UserExtra.pl.
-       - Moved Extras.pl to Modules.pl.
-       - Removed fortran math due to poor code style.
-       - Moved parts of Question.pl to UserExtra.pl.
-
-v0.99pre9 (20000115):
-       - Added messagecount column for 'seen'. Not used as yet. It
-         appears to be pointless, yes?
-       - Cleaned up DBI.pl: made use of $dbh->quote(); added
-         &DBIRawReturn(), &DBIInsert(), &DBIUpdate().
-       - Forgot to clear $tell_obj after successful 'tell'. Founded by
-         solomon.
-       - Extra modules loaded only if enabled in config, may save some
-         ram.
-       - Math.pl cleaned up.
-       - Added DumpVars.pl, now we know where things are being leaked.
-               - Removed duplicate 'use IO::Socket'.
-       - Typo in "disabled" locking code which didn't work :) Founded by
-         washort.
-
-v0.99pre8 (20000110):
-       - Bailout if critical configuration variables are not found.
-       - Dict.pl works well now.
-       - Topic.pl now uses %topic or @topic. Added 'topic info' which
-         contains who and time info. How does @{$hash{$key}} work?
-       - Used 'use diagnostics;'. Fixed most warnings.
-       - Added &WARN().
-       - Minor typo in &IsInvalid() on last statement, heh.
-       - Fixed (DAILY) logging, finally. Was broken too many times.
-       - Added &getLineFromFile() for debugging purposes. BROKEN
-       - Added Debian search-engine frontend => Debian.pl.
-         UPDATE: forget mysql, takes too long.
-       - Added Countdown => Countdown.pl.
-       - Made use of 'unless' instead of 'if !'.
-       - Added &DBIRaw().
-       - Addressing required on all commands.
-       - Added &fixFileList() to simplify files with common directories.
-               - RevHippie stumped me with the best method to write this,
-                 heh. Why do I always try to do things in 1 loop instead
-                 of 2 loops?
-
-v0.99pre7 (19991230):
-       - Renamed some setup/DBI calls.
-       - Simplified nickserv/chanserv code. chanserv opping may break
-         though. Experimentation?
-       - Fixed broken stuff scripts/* due to src/* modification.
-       - Added table locking support. BROKEN.
-       - param{'ident'} deprecated.
-       - Removed param{'dbname'}, please rename the main table (with
-         factoids) to factoids.*
-       - Added ircII.servers support.
-       - Fixed infobot, Setup.pl and Files.pl.
-       - Freshmeat.pl fixed. Set the update time _before_ we update.
-       - Added factoid renaming. "rename 'from' 'to'".
-       - Added DBISetRow() for first time inserts, for Freshmeat.
-         Removed (rather used raw) use of fixmysqlbug for DBISetRow()
-       - Added 'seen random'; fixed randKey to work with 'seen'.
-       - Added preliminary code for whatis frontend.
-       - Added SIGHUP code for $SIG{HUP}.
-       - Added more error protection in DBI.pl.
-       - Moved logDate logging support to &status@Misc.pl.
-       - Confirmed logging does not duplicate from child any more.
-       - Added 'partialdupe' (not recommended) and '2long' to
-         &FactStats();
-       - ...
-
-v0.99pre6 (19991223):
-       - Dict now fixed, courtesy of RevHippie and myself.
-       - Applied patch from RevHippie.
-               - Removed auto continuation code.
-               - Fixed learn =~ /HUNGRY/;
-               - Added $talkok and $learnok.
-       - Removed $param{'nick'} in favour of $ident. Added $safeIdent for
-         regex and made use of it.
-       - Moved Help.pl, Ignore.pl, Params.pl and part of User.pl to
-         Files.pl.
-       - Removed Internic.pl and Traceroute.pl.
-       - Fixed $isnick, renamed and fixed &purifyNick(). Added nick
-         compliancy checks when connecting to IRC server.
-       - Rewritten 'spell' code.
-
-v0.99pre5 (19991220): bug fix release.
-       - setupmysql.pl, slightly different for potato.
-       - dbm2mysql.pl
-       - performReply(), removed $trailing. FIX LATER.
-       - Freshmeat.pl, forgot about &main::, again.
-       - logType, broken date value.
-       - Fixed broken 'tell blah about what', readded $answer var.
-       - minLengthBeforePrivate superseeds preferReply.
-       - Forgot to use 'my' on three instances of $sth.
-
-v0.99pre4 (19991219):
-       - Added 'dupe' for factstats.
-       - Added illegal character detection in Statement.pl.
-       - Unified output (and duplication) of factstats (and other) code
-         to use one function, &formListReply(). Reduced code by at least
-         2k :)))
-       - Minor modifications to &DBIGetCol();
-       - Move +s flag to 'set search' in infobot.config.
-       - Altered talkMethod to allow 'private' or 'default'. Made no
-         sense to have it on public-only, heh.
-       - friendlyBots will be kept to be compatible with other stock
-         infobots but soon enough multiple mysql database support will be
-         added. Will be quite nice once done.
-       - Added maxListReplyCount and maxListReplyLen. Read infobot.config
-         for details.
-       - Replaced $refresh with freshmeatRefreshInterval to config.
-       - Changed learn setting from ALWAYS to HUNGRY.
-       - Reorganised Extras.pl, we shouldn't bail out if the command
-         can be disabled as the person who runs the bot should have
-         brains.
-       - Moved some Process.pl stuff to myRoutines.pl.
-       - ---
-       - &searchBy*() allows ^ and $, like in regex (basically sar'd).
-         removed $notexact variable.
-       - Fixed 'no,blah is blah' bug.
-       - Changed 'is also' char to ';;'.
-       - Added &IsInvalid(); to unify Statement (when creating) and
-         factstats/broken (when checking/verifying). Works like a charm
-         :)))
-       - Removed sane stuff; added infobot.ignore. I hope lenzo's
-         ignoreList code works.
-       - Fixed setupmysql.pl
-       - Moved repeatIgnoreInterval to minRepeat*Reply where * is Private
-         or Public.
-       - Now preferReply works. Wasn't hard as it first looked.
-       - Added global '+' flag support.
-       - Fixed logging: added logType param; if logType =~ /DAILY/, new
-         log is created daily. Date is time-of-day, aswell.
-       - added &fixMySQLBug() => adds backslash to special chars.
-
-v0.99pre3 (19991216):
-       - Fix connection bug where if host does not resolve, it appears
-         that it's connection refused. Now non-resolving hosts are
-         detected earlier. Found by some *.it (or .es??) guy.
-       - Added 'sync in #s' when the bot has joined a channel... just
-         like in BitchX.
-       - Added txt2mysql.pl.
-       - Removed instances of '^\s*' to '^' since $message can be
-         manipulated in Process.pl.
-       - Fixed Statement.pl so that it doesn't catch queries... it's a
-         stupid idea any way.
-       - Removed 'confused' in favour of 'dunno'.
-       - Funny hack in performReply(). Stupid but it works.
-       - Added 'host' column in seen table.
-       - Made use of &gettimeofday() for freshmeat and search function.
-
-v0.99pre2 (19991213):
-       - Made use of new database (directory) not to interfere with other
-         crucial dbs.
-       - Re-added &getKeys(), mysql's RLIKE wouldn't like "'" in the
-         statement. If several of similar queries are required, better
-         off using &getKeys().
-       - Added two more conversion scripts.
-
-v0.99pre1 (19991211): personal release. MAJOR CHANGES.
-       - create a script to add the blootbot user to the mysql server and
-         prepare tables for use with the bot.
-       - butchered Question.pl, Reply.pl, Statement.pl and Reply.pl.
-       - main factoid db ported over; barely tested.
-       - seen ported over; appears to work.
-       - karma ported over; not tested at all.
-       - freshmeat ported over; fix brokeness.
-       - search (listvals and listkeys) ported over.
-       - rootwarn ported over.
-
-       - Use quotemeta in DBI.pl on special chars, especially ' :)
-       - Added factstats 'broken' function.
-       - Made use of multiple connections to avoid clashing... does
-         clashing only occur when there's an INSERT/UPDATE or SELECT or
-         both?
-       - Changed $factoid to $faqtoid... good idea? how about $lhs?
-       - Changed getKeys to countKeys to take advantage of mysql.
-       - Added randKey to get random primkey,key from table.
-       - Removed process() when msgType == 'public action'. Why would we
-         want to care about actions anyway?
-       - Fix public action; Added private action to &status().
-       - Added &ERROR();
-       - Made message and who flooding independent in IrcHooks.pl. Now we
-         use %flood... should be expanded to use %ignoreList;
-
-       NOTES...
-       - DBI.pl has more functions than what DBMExtra.pl had in order to
-         implement a table-like hash list.
-       - &DBISet() always verifies if an entry already exists and does an
-         UPDATE instead of an INSERT... flaw in mysql or my code???
-       - &DBISet() can only set one (in UPDATE, two in INSERT), variable
-         at a time. Does this impose a performance hit? like on seen.
-       - ...
-
-       TODO...
-       - infobot.cgi not ported over.
-       - weather not ported over.
-       - add alarm call between while in Dict.pl.
-
-*************************************************
-************* CHANGE OVER TO MySQL **************
-*************************************************
-
-v0.18.2 (199912??): dropped.
-       - Fix for Weather.pl.
-       - Fix for Dict.pl.
-       - ...
-
-v0.18.1 (19991130): last public release before database change over.
-       - Modified &IsNickInChan() so that a foreach is done case
-         insensitively against nick to prevent misses.
-       - Added server "jump" support, requested by larne.
-       - Added seenMaxDays, maximum number of days to keep seen info on
-         someone, otherwise delete it.
-       - Forgot to use $main:: in Freshmeat.pl and Weather.pl; fixed.
-       - Changed userList format to $userList{$user}{$flag}{$what} = 1;
-         Converted all code to use this userList format.
-       - Changed version string to include OSname.
-       - Replaced $locWho with $who or $origWho.
-       - Removed hidden whitespaces and tabs at and of statments.
-
-v0.18.0 (19991128):
-       - Post release typo fixes here and there.
-       - Changed lc() to tr/A-Z/a-z/ where suitable.
-       - Redid join command in Process.pl.
-       - Cleaned up regex (mainly .* => \S+).
-       - Found $ischan to be broken; fixed.
-       - Changed Slashdot3.pl to have "joining" code like in DBMExtra.pl.
-       - Made use of &nick() and &IsChan();
-       - Added &kick() to Misc.pl; kick command to User.pl.
-       - Added &IsNickInChan();
-       - Fixed loading Param file before pidfile and other file related
-         stuff.
-       - User.pl
-               - Revamped; removed unused functions.
-               - Moved Set.pl to here.
-               - Moved 4op code here.
-               - Moved some functions from Process.pl to here.
-               - Rewrote rehash command.
-       - More casing fixes; debugging info _should_ help to find more.
-       - Changed infobot.users.
-
-v0.17.0 (19991126):
-       - Netsplit code prevented stats of signoffs; fixed.
-       - Messed around with logging code to prevent control chars.
-       - Removed exchange and excuse module because of brokeness.
-       - Applied patch from RevHippie. Thanks!
-               - Added delimiter support in addressing of hello msg.
-               - Removed 'score' in karma.
-               - Added 'learn' (ALWAYS or ADDRESSED) support. Normal
-                 operation == ADDRESSED. Bot won't respond voluntarily to
-                 factoids but will respond to learning.
-               - Ability to turn off minVolunteerLength.
-               - More changes to prevent chatter in unaddressed manner.
-       - We remove any ansi or control chars when piping to the log file.
-         RevHippie++.
-       - Added 'thanks' language.
-       - Typo in Freshmeat.pl; Fixed.
-       - Added $rootwarnmode = passive || aggressive to satisfy lilo@OPN.
-         default is passive.
-       - Fixed mix up of fix in 'tell' code. I had the if statements the
-         wrong way around.
-       - Removed more debug code.
-       - FactStats/author fixed; now multiple authors with the same stats
-         are printed together.
-       - Added logfile cycling w/ approx maximum size.
-       - Changed infobot.config yet again. now it's much better than
-         before. Some variables removed.
-       - Added Unset support to Set.pl; Changed so anything can be set
-         or unset.
-       - Made use of &purifyNick() so regex doesn't break. $safeWho
-         now defined earlier.
-
-v0.16.0 (19991122):
-       - Applied bug fixes from infobot 0.44.3, added md5 password
-         support (*BSD?).
-       - Added &IsParam() to check existance of params the proper
-         (strict) way.
-       - Moved rootWarn stuff from Extras.pl to RootWarn.pl.
-       - filenames (rootwarn and uptime) now not statically set.
-       - Cleaned up config file and Setup.pl.
-       - Fixed up &parsectcp() in CTCP.pl.
-       - Changed ($ischan) to (\S+) in Irc.pl under PRIVMSG.
-       - Major reorganisation of Misc.pl -- removed unused functions.
-       - Moved some variables to 'infobot'.
-       - Fixed ANSI typo by some loser; Changed format of &status()'s in
-         Irc.pl, seems to look nice thus far.
-       - Added "author" command under &FactStats() in DBMExtra.pl.
-       - Added case insensitivity to &IsHostMatch() and search strings in
-         DBMExtra.pl. Any more of these?
-       - Removed disabled netsplit code.
-       - Changed 'defined' to 'exists' on all hash lists, 'cept hashes
-         created by opening db's.
-       - Modified repeat code on modified_time. If this time is small,
-         msgType is changed to 'private' for flooding reasons and
-         max_time is reduced by half. latter appears not to work???
-
-v0.15.0 (19991112):
-       - Quite funny that once the repeat code was moved to Question.pl
-         factoid extension leakage was found. maths leakage was also
-         happening but somehow is fixed when the repeat code was moved
-         back.
-       - Clean up of variable names in Reply.pl and Question.pl
-       - Changed 'length' to 'eq ""' or 'ne ""' where possible.
-         This should produce faster code but benchmarks prove this change
-         is neglible. Guess perl is slow :)
-       - Cleaned up and fixed 'tell <who> about <what>' code.
-       - Set.pl fixed; Added DEBUG to allowable set list.
-       - Volunteer code moved to top of Question.pl.
-
-v0.14.0 (19991110):
-       - Message overflow fix in &FactStats().
-       - Added 'factstats new' command to display new factoids in the
-         last 24 hours.
-       - Fixed up ping reply, requested by a few from #debian@OPN.
-       - Re-added debugging of DBMExtra due to leakage of orthaned
-         factoid extensions. Need to investigate and confirm the
-         lowercase fix of factoids.
-       - Two functions which used &mkRandom() now fixed due to poor
-         effort in implementation. Added missing srand(). now the maximum
-         length of 475 should not be exceeded, hopefully. it can be
-         beefed up to 490 if needed.
-
-v0.13.0 (19991108):
-       - Made use of &help() which uses infobot.help. This paves the way
-         for NLS as suggested by njs.
-       - Fixed up code on netjoin/netsplit in an effort to find
-         statistics leakage. Added debugging info to netjoin/netsplit.
-       - Fixed typo (three instances) in factinfo where time() was used
-         instead of the data in the factoid extension. Found by larne.
-       - Allow main thread to do a clean exit while the child does
-         nothing. Possible fix for weird uptime info.
-       - Removed sar of 'your|i|you|me' to prevent automated reverse
-         persona which is better done by the user. Suggested by njs.
-       - Cleaned up behaviour of &FixPlural(). Fixes a bug.
-       - Repeat prevention code now replaced (moved aswell) to use
-         factoid extensions
-       - Fixed 'factstats requested' error.
-
-v0.12.6 (19991103): bugfix on bugfix release ;)
-       - Fixed bug where you can't lock a factoid because the hostmatch
-         ($thisnuh = "") failed. Found by wolfie.
-       - Fixed up 512byte overflow in factstats[requested].
-       - hm... wonder how I broke Weather.pl.
-
-v0.12.5 (19991101): Bugfix release
-       - Fixed "bad" array in Freshmeat.pl. All appologies to scoop.
-         [update: use array[5] if it exists, otherwise do as before.]
-       - Removed some debugging info from DBMExtra.pl.
-       - Fixed inconsistent chanstats behaviour in SignOff.
-         [Update: forgot to delete the user info _after_ we do the stats]
-       - Moved factoid stats count and repeat checking code to
-         Question.pl. Now it works as planned :) :) :)
-
-v0.12.4 (19991028):
-       - Added factstat and listauth commands.
-       - 'topic add' now prepends subtopic not append.
-       - Fixed up minor problem with 'topic restore last'.
-       - Changed default of locking access to people who own their
-         factoid or to registered ops. This should please #debian.
-       - Reduced usage of @{$var} which cannot be really deleted cleanly.
-       - Moved DBMExtra-related stuff from myRoutines.pl to DBMExtra.pl.
-       - Added new functions &mkRandom() and &getRandom().
-       - Changed all code (Search.pl) which used random to the one
-         developed in DBMExtra.pl. => made code slightly smaller.
-       - Cleaned up Search.pl to look nice.
-       - Found yet another casing bug under TOPIC in Irc.pl.
-       - Fixed bug where dbmextra queries where made on non-factoids like
-         maths and probably karma.
-
-v0.12.3 (19991025):
-       - Added while loop around connect which should prevent the bot
-         from falling down (dying).
-       - Forgot 'main::' for &getURL in Freshmeat.pl. Changed
-         opening/closing code yet again. Removed checking on open
-         read-only.
-       - Changed Dict.pl to reply private only by default. '+' will allow
-         public responses without suggestions/synonyms.
-       - Added checking against pidfile. running two bots from the same
-         dir at the same time using the same db == disaster. Ask #debian
-         about it :)
-       - Implemented Weather.pl.
-
-v0.12.1 (19991022):
-       - Made distribution out of infobot -> blootbot.
-       - Irc.pl was prone to be fucking up -- swapped (.*) to (\S+) where
-         necessary. stab lenzo for this :) found more instances of this.
-               [update: appears to trap too many of something, check
-                 'chaninfo #chan' for info.]
-       - Minor fix for Freshmeat.pl when opening/closing db.
-       - Factoid extension code is ready for testing. possible in the
-         future to add "factstats" for like: top 3 requested factoids.
-         [update] added lock checking on sar and on updates ("no, "...)
-
-v0.12.0 (19991020): (v0.11.6 + bugfixes + trial)
-       - Major shake-up of how addressing is handled -- damn it took me a
-         long time to get this to work.
-       - Changed command names in Topic.pl to &topicBlah().
-       - Found and fixed (hopefully) all 7 channel casing bugs.
-       - Moved freshmeat to use berkeley db instead of raw appindex.txt
-         file. finally got it to work, seems 30% faster. Creating the db
-         takes a long time though.
-       - Added "set" command => Set.pl.
-       - Added support of talkMethod which behaves much like lobotomy.
-         In the future, talkMethod =~ /(lobotomy|none)/ may be used.
-       - Purged: METAR2.pl, NOAA.pl, UAFlight.pl.
-       - RootWarn only works if the bot is opped in the channel.
-       - Created performStrictReply() from performReply().
-       - Quote.pl and Internic.pl now work.
-       - Fixed a few typos in myRoutines.pl
-       - Removed bold on dictionary.
-
-v0.11.5 (19991012):
-       - Fixed $chan to lowercase where appropriate.
-       - Fixed volunteer reply code... I guess it worked before but now
-         it is somewhat cleaner and easy to understand.
-       - Added factoid owner database, requested by njs.
-       - If public message is addressed to someone else, we ignore it.
-       - Now support referer factoids ('blah is <REPLY> see erp'). if
-         'blah' is asked, the reply from 'erp' is given.
-       - OPN allows part messages -- fixed in /PART/ for $chan.
-
-v0.11.3 (19991008):
-       - Uptime.pl appears to be fixed after rewrite of getUptimeInfo.
-       - Fixed up Freshmeat.pl for updating the index. Proxy is now
-         optional.
-       - Moved rootWarn to RootWarn.pl. Added hall-of-fame of losers.
-       - Cleaned up bugs/typo here and there which may have caused the
-         bot to behave in a weird manner.
-
-v0.11.2 (19991006):
-       - ChanInfo now displays "statistics" just like our little friend
-         BitchX.
-       - Minor change in determining args on commands [myRoutines].
-       - Added "cmdstats".
-       - Added rootWarn checking on checks. Repeat offenders will be
-         punished. Requested by larne. [update: we aren't so harsh now]
-       - Added lc $chan where appropriate. damn uppercase channames.
-
-v0.11.1 (19991005):
-       - all instances of undef on hash lists changed to delete which
-         _now_ works. found minor bugs/typos related to DUI.
-       - Now skip internic whois intro (13 lines) to fix bad output.
-       - Forgot to subtract $i from $counter in chaninfo when full.
-               [update: whole function changed, see above]
-       - Now backup (and gzip) freshmeat index file.
-
-v0.11 (19991004): looks like a bug fix release :)
-       - Fixed typo in reply of Topic.pl/&NewTopic().
-       - Decreased max topic length allowed; now print it, too, for
-         debugging.
-       - Altered repeat code to only work on public. Flooders should be
-         taken care of by the (allowOutsiders == 0) code. if not, there's
-         'lobotomy' :)
-       - Added excess flood protection around &rawout();
-       - Don't bother about outsiders if we haven't joined any channels.
-       - Changed email address to one throughout modifications.
-         New files have neato headers.
-       - Uptime.pl fixed, didn't need to check against ($pid == $$)
-       - Repeat-prevention code kind-of looks what it was before but this
-         one, at least, works :). any problems, just bitch at me.
-       - Added debugging code for chaninfo to diagnose "problem".
-
-v0.10 (19991001):
-       - Added Uptime module.
-       - Added Freshmeat module.
-       - Dict now returns definition without suggestions (syn's) by
-         default. Also cleaned up.
-       - NickServ/ChanServ major clean up.
-       - Join upon reconnect fix: set $joinchans = 0.
-       - Fixed up Help.pl, added more help entries.
-
-v0.9b (19990925):
-       - Did repeat-prevention code from scratch -- now works.
-         [19991001 update]: multiplier is now 2 instead of 10.
-       - Made reaction to "hello" more strict. the same should be done to
-         "thanks", don't you think?
-       - Converted remaining modules to use forking. should be no more
-         bot lockups...
-       - Changed maxhits to 20 for Search.
-
-v0.9 (19990924): +16K added to patch size.
-       - More, more and more major changes.
-       - Fixed up inappropriate usage of performReply.
-       - Added lobotomy command to (un)silence the bot.
-       - Added allowOutsiders toggle to prevent usage of the bot
-         _outside_ the channels the bot is in.
-       - Added $fullyaddressed, enabled if $addressed == 1 and
-         $param{addressing} == REQUIRE.
-       - Readded auto-continuity code. it is disable if not fully
-         addressed. otherwise works as per normal.
-       - Moved join-on-start-of-motd code to end-of-motd. If nickserv &&
-         chanserv is enabled, IDENTIFY is done first. If okay, then we
-         proceed to join channels.
-       - When bot joins channel, summary of nicks (ops|voice|total) is
-         given instead of NAMES list.
-       - Chanserv support moved to "end of names".
-       - Detection of nickserv (no such nick).
-       - join channel if channel is on our joins list and if we're not on
-         it (hrm, providing their client prevents it).
-       - ...
-
-v0.8 (19990919): +50K patch from last version.
-       - Major changes, particularly cleanups and fixed a few bugs:
-               - Found 2 or so instances of $params{}. Either deleted or
-                 renamed to $param where appropriate.
-               - Shortened foreach statements where possible.
-       - Replaced duplicate code involving &say and &msg with
-         &performReply($text,[0=rand,1=strict]). -- major shortcut and
-         cleanup.
-       - Added tracking of all users on channel(s). Users are
-         deleted if they disappear for whatever reason with
-         &DeleteUserInfo.
-       - Tracking of channels now works; they are deleted if we disappear
-         from any channel for whatever reason (hopefully).
-       - 'forget' command _SHOULD_ be wrapped with $addressed.
-       - Moved 'modes' from User.pl to myRoutines.pl as 'chaninfo'.
-       - Added stock quote support by using mu's script. Thanks.
-       - Added param{*} around stuff in myRoutines.pl for flexibility.
-       - Added auto-join on invite if not on specific "join_channels"
-       - Renamed &Timetostring to &Time2String and made use of it not
-         only for status but for seen.
-       - If $param{*} == false, it is now not defined.
-       - Removed Auto-continuity code -- very evil for any bot commands
-         other than non-intentionally requesting a factoid.
-       - crypt command required "(" before passwd???
-       - Removed stupid commands which just generate URLs for you to cut
-         and paste.
-       - repeatIgnoreInterval code _NOW_ works unlike before.
-       - Added support for Topic.pl not to update topics if commands are
-         prepended by '-'. Topics can be "rehashed" when either a) the
-         next command is used without '-' or b) "rehash" is the next
-         command.
-       - &NewTopic takes two more args to prevent repetition and now does
-         topic checking. Check code for details.
-
-v0.7 (19990914):
-       - Major clean up: Search.pl now only uses the "is" dbm; final
-         pair of parens in commands removed for legibility; Removed
-         debugging for NickServ, ChanServ to go.
-       - Added multiple subtopic delete ability. requested by Mercury.
-       - Moved responses/replies to [files/infobot.lang]. Modified
-         related functions to conform, including mine.
-       - Fixed up Kernel.pl to use different type of sockets. Previous
-         code somehow broke itself.
-       - Added, but disabled, semi-working timer support. Need to ask
-         lenzo some questions on how to implement it the best way.
-       - Added channel (and offender's) notification if someone joins the
-         channel with root. requested by #debian.
-       - Added dict.org support. For now, it uses wordnet and returns a
-         random definition. Could change in the future.
-
-v0.6 (19990903):
-       - Added support for nickserv and chanserv, requested by is.
-       - Updated README to describe new features and modifications. Do we
-         need to elaborate on the modifications to the depth where it
-         would exceed the size of the patch?
-       - Minor clean up.
-       - Removed assumed-continuity of messages -- should be used if
-         addressing is in optional mode but would be bad in any situation
-         if more than one infobot existed in the channel.
-       - Added parsing of g flag to factoid sar.
-
-v0.5 (19990827):
-       - Better way to confirm if bot is on channel now for topic
-         management. Also added check for +o+t or -t. &DoModes() on
-         server stuff, too?
-       - Patch updated to work for infobot-0.44.2 only.
-       - Found a bug in Irc.pl under "NAMES" where $u was used initially
-         but trashed afterwards. => replaced $u w/ $_.
-       - Lost track of a bug found by Mercury. Seems to be fixed now,
-         somehow, heh.
-
-v0.4c (19990822):
-       - Worked on random-cookie -- random responses can now be added
-         (internally) with ease.
-       - Noticed joeyh changing his nick to/from '||' which reminded me
-         of something bad ;) hint: topic management.
-       - One line patch to allow '|' in factoids; delimiter is now '||'.
-
-v0.4b (19990818):
-       - Implemented patch from mu. Now it is possible to use the topic
-         command through private messages to the bot instead of the
-         channel.
-       - Replaced SAR of \| with \|\| so we can still use the single
-         pipes. Double pipes will be either removed or promote an error
-         message. Found by Robot101. Added el-cheapo work-around if the
-         last char of subtopic is |, kill it.
-
-v0.4a (19990816):
-       - Added cheap fix (sleep 1, heh) to excess floods of 'topic
-         history'. Is sleep 1 enough?
-       - Added 'random' for random value{key} from database.
-         Requested by jCommons.
-
-v0.4 (19990815):
-       - Fixed topic history by replacing push with unshift. Now the
-         history list is reversed and cycled properly.
-       - Reversed Changes list. request by mu.
-       - Totally fixed up topic history since it would break if
-         'topic add' was induced quickly. Now we only record topics set
-         by us (for reasons) and onjoin topics (set by anyone).
-       - Removed 'topic last/reset' because how do you know which topic
-         is last? Better control with 'topic restore'.
-
-v0.3c (19990813):
-       - Fixed 'topic mv 2 before 1' bug. Forgot to store 'move' topic
-         before doing the foreach loop.
-       - Touched up Kernel.pl in preparation for auto-notify feature.
-
-v0.3b (19990812):
-       - Added version string to new files so we know which version
-         of patch we're using (or used). There you go, Mercury ;)
-       - Fixed up DecipherTopic to reject null subtopics. This would, if
-         unchanged, (theoretically but not tried, luckily) produce a
-         domino-effect of problems if the topic was to be changed.
-               Update: check if the supposed null topic contains spaces
-                       within the nick component. If so, then it's not
-                       nick, therefore treat like ownerless subtopic.
-       - Worked on README.
-
-v0.3a (19990810):
-       - Changed back to use topic{chan} (now topicnow{chan}) since
-         @topiclist{chan} (now @topichist{chan}) does not deal with dupes
-         or blanks.
-       - Renamed 'topic last' in preference to 'topic reset'. Original
-         command can be used but is vague in meaning.
-       - Fixed several typos made in Irc.pl.
-       - Replaced 'defined' with 'length' in if statements.
-
-v0.3 (19990809):
-       - Applied patch from mu for Irc.pl | Topic.pl.
-       - Replaced %topic hash and $topiclast with @{$topiclist{chan}}.
-         Much cleaner implementation. Thanks to mu for this. Fully
-         implemented by xk.
-       - Reworked on topicbyme (was topiclast), should work now.
-
-v0.2 (19990808):
-       - Changed name of patch to funkystuph.
-       - Added history/last/restore to Topic.pl by request of mu and is.
-       - Reorganised help and order of commands in Topic.pl
-       - Bot must be addressed to use commands.
-               - Fixed bug if multiple infobots were in the channel.
-       - One occurrence where Cipher was called instead of CipherTopic.
-       - Fixed up Slashdot.pl. Problems: a) borked completely b) missed
-         first headline. el-cheapo fix but it works.
-
-v0.1c (19990729):
-       - Fixed long list{keys|values} bug, hopefully.
-       - Now randomize key results from search.
-       - If keys contain ',', underline to differentiate it.
-       - Fixed possible DoS against Kernel.pl.
-       - Bug fixed with Kernel.pl repeating itself.
-               - Typo of @results [one occurrance of @result]
-
-v0.1b (19990723):
-       - Fixed bug with &CipherTopic where, if no owner was found, it
-         would just use NULL. [like "Topic ()"]
-       - Added kernel feature.
-       - Moved error messages to public/private, depending on behaviour.
-         Help-related stuff is private(msg) only for convenience.
-
-v0.1a (19990721):
-       - Misc cleanup, removed repeated code.
-
-v0.1  (19990720):
-       - Initial release.
diff --git a/INSTALL b/INSTALL
index aed3621b75880b7faa382bd7c90381a7ddd1ab4c..f0062746f900164e6c45334578cb2f8452c8e25f 100644 (file)
--- a/INSTALL
+++ b/INSTALL
@@ -3,9 +3,9 @@ Method of installation.
 
 - Copy files/sample/* to files/
 
-- Edit files/blootbot.config, modify to taste.
-- Edit files/blootbot.servers to modify list of IRC servers to connect.
-- Edit files/blootbot.chan to set which channels to join.
+- Edit files/infobot.config, modify to taste.
+- Edit files/infobot.servers to modify list of IRC servers to connect.
+- Edit files/infobot.chan to set which channels to join.
 
 - Install the following Perl modules:
        - Net::IRC perl module
@@ -25,4 +25,4 @@ Method of installation.
 
 - There are "bugs" in the perl modules.  Read INSTALL.patches on how to fix.
 
-- Finally, './blootbot'
+- Finally, './infobot'
index 5de7a165ee81ca2e2a1ca8b0d443533e358ad792..f8d04bce47432999302f551bbd5351a05db8c50b 100644 (file)
@@ -5,7 +5,7 @@ INSTALL.mysql
     - Debian: (apt-get install mysql-server libdbd-mysql-perl)
 
 - Run 'mysqladmin -u root -p create <DB NAME>'
-    Where <DB NAME> is the same as specified in blootbot.config.
+    Where <DB NAME> is the same as specified in infobot.config.
 
 - Run 'setup/setup.pl'
 
@@ -27,13 +27,13 @@ commands:
 
   $ mysql -u root -p
 
-  mysql> CREATE DATABASE blootbot;
+  mysql> CREATE DATABASE infobot;
   mysql> GRANT USAGE ON *.* TO 'user'@'localhost' IDENTIFIED BY 'yourpassword';
-  mysql> GRANT ALL PRIVILEGES ON blootbot.* TO 'user'@'localhost';
+  mysql> GRANT ALL PRIVILEGES ON infobot.* TO 'user'@'localhost';
 
 FULL FACTOID DATABASE:
 ----------------------
 You can get the data from the MySQL database that the apt bot uses on
 #debian at freenode (irc.freenode.net), at:
 
-    http://lain.cheme.cmu.edu/~apt/blootbot/apt.sql.bz2
+    http://lain.cheme.cmu.edu/~apt/infobot/apt.sql.bz2
index ecab8bcc0c769cfee90fb88e15e4ccafeff5610f..03a3491ac2544892e1ecca489a9d00f53d1de950 100644 (file)
@@ -5,25 +5,25 @@ Method of installation.
 - Debian: (apt-get install libpg-perl)
 
 
-As of now, blootbot has full pgsql support. It seems to be working 100%, but it
+As of now, infobot has full pgsql support. It seems to be working 100%, but it
 assumes that you have precreated the database and user for now. As long as you
-already created the database and user and stored this info in the blootbot.config,
-then the tables will automatically be created on startup. Until I get setup.pl
-fixed, run the following commands as root (or postgres if root doesnt have
-permission to create users/db's):
+already created the database and user and stored this info in the
+infobot.config, then the tables will automatically be created on startup. Until
+I get setup.pl fixed, run the following commands as root (or postgres if root
+doesnt have permission to create users/db's):
 
 > createuser --no-adduser --no-createdb --pwprompt --encrypted <user>
 > createdb --owner=<user> <dbname> [<description>]
 
 Dont forget to replace <user> and so forth with actual values you intend to use,
 and dont include the <>'s ;) If you run these commands, you should get a user
-with an encrypted password that cannot create new db's or user's (as it should be!),
-and the user will own the newly created database <dbname>. Congrats!
+with an encrypted password that cannot create new db's or user's (as it should
+be!), and the user will own the newly created database <dbname>. Congrats!
 
-If everything went fine, you should have everything blootbot needs to use pgsql.
+If everything went fine, you should have everything infobot needs to use pgsql.
 Next simply cd to the base directory you installed the bot to and type:
 
-./blootbot
+./infobot
 
 
 Thats it! Everything the bot needs should be automatically created when it loads
index 35c6b7b3283b2fa9a3fbed9953110ef3c270c67a..66c84251c8c10422a35c7c82c416c7ae6db9ca98 100644 (file)
@@ -7,7 +7,7 @@ running a separate RDBMS process. The distribution comes with a standalone
 command-line access program (sqlite) that can be used to administer an SQLite
 database and which serves as an example of how to use the SQLite library.
 
-blootbot will create a file called <DBname>.sqlite and populate the tables for
+infobot will create a file called <DBname>.sqlite and populate the tables for
 you if they do not already exist.
 
 - Install SQLite libraries and DBI Perl modules.
diff --git a/README b/README
index d174102c65d1047e5288737bcaa7ff67ae34a002..eb0f6fab136208a19d6f144f50e0dcfdc92010ff 100644 (file)
--- a/README
+++ b/README
@@ -1,20 +1,15 @@
-This is out of date.
-
-
-
-
-
-
-blootbot v1.0.0 (20000729)
--------------------------
+infobot v1.5.0
+--------------
 
 INTRODUCTION
-       This bot is based upon infobot-0.44.2 by kevin lenzo
-<lenzo@cs.cmu.edu>. The basis of infobot is still there but _many_ wild
-features have been added. Along the way, a couple of typos were spotted
-in the original infobot source and fixed in this version. Without infobot,
-there would be no blootbot so all thanks to kevin for bringing infobot in
-the first place.
+       This bot is based upon blootbot, which was a fork of infobot-0.44.2 by
+Kevin Lenzo <lenzo@cs.cmu.edu>, which is now officially rebranded back to
+infobot!  The basis of infobot is still there but _many_ wild features have
+been added.  Along the way, a couple of typos were spotted in the original
+infobot source and fixed in this version. Without infobot, there would be no
+blootbot, and thus no infobot again, so all thanks to kevin for bringing
+infobot in the first place.
+
 
 FEATURES
        * Additional information stored with factoids. (factinfo)
@@ -29,17 +24,20 @@ FEATURES
        * Slashdot, Kernel and Freshmeat auto-update announcements.
        * Units conversion (provided by external module, Units-Module)
 
-       DESIGN
-               - Modularity. Ability to disable IRC or Factoid support.
-               - Funky pseudo Module autoloader support
-               - Eleet Forker() function
 
-Improvements include:
+DESIGN
+       - Modularity. Ability to disable IRC or Factoid support.
+       - Funky pseudo Module autoloader support
+       - Eleet Forker() function
+
+
+IMPROVEMENTS
        * log file is not opened and closed for each line of data
                => unblocked logging is used.
        * seen data is not flushed for each public message on IRC
                => caching and flushing over an interval is used.
 
+
 HISTORY
        As of 0.99pre1, blootbot supports mysql database in the hope to
 increase performance and to avoid borked over dbm's which occurred when
@@ -56,9 +54,13 @@ back. It should work in all but 3 specific (countdown, factstats unreq)
 cases. preliminary pgsql support has been added but someone with pgperl
 knowledge needs to fix it up or at least unify the module with mysql.
 
+       As of 1.5.0, blootbot was rebranded back to infobot.
+
+
 INSTALLATION
   - Read the included INSTALL file
 
+
 NOTICE
        Be warned that this bot consumes quite a lot of memory upon start
 up and during usage. Right now, 7.4megs is used for old'ish perl, 8.3megs
@@ -77,6 +79,7 @@ welcomed.
 blootbot, not based on the above source base.  Core factoid code and
 mysql support works - but that is it.
 
+
 MODIFICATIONS
        All modifications are that of the blootbot author unless otherwise
 specified, like none.  See 'ChangeLog' for details.  A list of future
@@ -119,7 +122,8 @@ NOTES
 through DCC CHAT. /chat <BOT NICK>.  All commands must be prepended by
 '.' otherwise it is sent to the bot chat net
 
-### UNTESTED:
+
+UNTESTED:
        - user statistics shown by 'seen'. bug in this?
        - User Information Services.
        - new wingate caching/file-read code.
@@ -145,11 +149,12 @@ hope to get that same guy to re-send me the patch...
 
 CONTACT
        Contributions of a patch, or anything, can be sent to
-<dms@users.sourceforge.net>
+<infobot-devel@lists.sourceforge.net>
 
 Some Documentation is on the website. Please see it for details or
-visit: http://sourceforge.net/docman/?group_id=8794
+visit: http://infobot.sourceforge.net/
+
 
 IRC
        If your looking to hang out on IRC, feel free. We can be found
-in the #blootbot channel on irc.freenode.net. See you there!
+in the #infobot channel on irc.freenode.net. See you there!
diff --git a/TODO b/TODO
index c88b2e80f71a731a41623d4c14147eefaaed41b5..f76aa2680e6f2195cb8222c148fc57bfdbe48d48 100644 (file)
--- a/TODO
+++ b/TODO
@@ -9,8 +9,8 @@ TODO:
        - move nicks/server into sql table
        - make channel flags be server/channel flags
        - move channel flags to sql table, include initial state
-       - move praise from blootbot.lang to "praise:<something>" in factoids?
-       - move lart from blootbot.lang to "lart:<something>" in factoids?
+       - move praise from infobot.lang to "praise:<something>" in factoids?
+       - move lart from infobot.lang to "lart:<something>" in factoids?
        - debian BTS frontend "bugs"
        - !country
        - !dinstall
@@ -44,7 +44,7 @@ TODO:
 
 Other TODO items may be listed on sourceforge. Please access it from the
 website or this link:
-http://sourceforge.net/pm/task.php?group_id=8794&group_project_id=3207&func=browse&set=open
+http://sourceforge.net/pm/task.php?group_id=2241
 
 ----------------------------------------------------
 ------------ FUTURE, NON-IMPORTANT
@@ -73,26 +73,3 @@ http://sourceforge.net/pm/task.php?group_id=8794&group_project_id=3207&func=brow
                - do some test cases to confirm code actually works as
                  proposed.
 
--- useless statistics
-- 20010420:
-DEBUG:      373
-WARN:       129
-FIXME:       35
-status:     386
-TODO:       145
-
-20031111: scripts/output_stats.sh
-DEBUG:      384
-WARN:       167
-FIXME:       33
-status:     424
-ERROR:      123
-TODO:        91
-
-20050217: scripts/output_stats.sh
-DEBUG:  388
-WARN:   164
-FIXME:  43
-status: 436
-ERROR:  125
-TODO:   158
diff --git a/blootbot b/blootbot
deleted file mode 100755 (executable)
index 4ef62d5..0000000
--- a/blootbot
+++ /dev/null
@@ -1,99 +0,0 @@
-#!/usr/bin/perl
-
-# infobot  -- copyright kevin lenzo (c) 1997-1999
-# blootbot -- copyright david sobon (c) 1999-infinity
-
-use strict;
-use vars qw($bot_base_dir $bot_src_dir $bot_misc_dir $bot_state_dir
-           $bot_data_dir $bot_config_dir $bot_log_dir $bot_run_dir
-           $bot_pid $memusage %param
-);
-
-BEGIN {
-    if (@ARGV and -f $ARGV[0]) {
-       # source passed config to allow $bot_*_dir to be set.
-       do $ARGV[0];
-    }
-
-    # set any $bot_*_dir var's that aren't already set
-    $bot_base_dir      ||= '.';
-    $bot_config_dir    ||= 'files/';
-    $bot_data_dir      ||= 'files/';
-    $bot_state_dir     ||= 'files/';
-    $bot_run_dir       ||= '.';
-    $bot_src_dir       ||= "$bot_base_dir/src";
-    $bot_log_dir       ||= "$bot_base_dir/log";
-    $bot_misc_dir      ||= "$bot_base_dir/files";
-
-    $bot_pid           = $$;
-
-    require "$bot_src_dir/logger.pl";
-    require "$bot_src_dir/core.pl";
-    require "$bot_src_dir/modules.pl";
-
-    # load the configuration (params) file.
-    &setupConfig();
-
-    &showProc();       # to get the first value.
-    &status("Initial memory usage: $memusage kB");
-    &loadCoreModules();
-    &loadDBModules();
-    &loadFactoidsModules();
-    &loadIRCModules();
-
-    &status("Memory usage after loading modules: $memusage kB");
-}
-
-# prevent duplicate processes of the same bot
-&duperuncheck();
-
-# initialize everything
-&startup();    # first time initialization.
-&setup();
-
-if (!&IsParam("Interface") or $param{'Interface'} =~ /IRC/) {
-    # launch the irc event loop
-    &ircloop();
-} else {
-    &cliloop();
-}
-
-exit 0;  # just so you don't look farther down in this file :)
-
-# --- support routines
-
-# FIXME: add arguments, basically '-h' and '--help', heh.
-
-# added by the xk
-sub duperuncheck {
-    my $pid    = $$;
-    my $file   = $file{PID};
-
-    if ( -f $file) {
-       open(PIDFILE,$file) or die "error: cannot open $file.";
-       my $thispid = <PIDFILE> || "NULL\n";
-       close PIDFILE;
-       chop $thispid;
-
-       if ($thispid =~ /^\D$/) {
-           &staus("warning: pidfile is invalid; wiping out.");
-       } else {
-           if ( -d "/proc/$thispid/") {
-               &ERROR("bot is already running from this directory.");
-               &ERROR("if this is incorrect, erase '*.pid'.");
-               &ERROR("verify with 'ps -axu | grep $thispid'.");
-               exit 1;
-           } else {
-               &status("warning: stale $file found; wiping.");
-           }
-       }
-    }
-
-    open(PIDFILE,">$file") or die "error: cannot write to $file.";
-    print PIDFILE "$pid\n";
-    close PIDFILE;
-
-    return 0;
-}
-
-1;
diff --git a/infobot b/infobot
new file mode 100755 (executable)
index 0000000..4ef62d5
--- /dev/null
+++ b/infobot
@@ -0,0 +1,99 @@
+#!/usr/bin/perl
+
+# infobot  -- copyright kevin lenzo (c) 1997-1999
+# blootbot -- copyright david sobon (c) 1999-infinity
+
+use strict;
+use vars qw($bot_base_dir $bot_src_dir $bot_misc_dir $bot_state_dir
+           $bot_data_dir $bot_config_dir $bot_log_dir $bot_run_dir
+           $bot_pid $memusage %param
+);
+
+BEGIN {
+    if (@ARGV and -f $ARGV[0]) {
+       # source passed config to allow $bot_*_dir to be set.
+       do $ARGV[0];
+    }
+
+    # set any $bot_*_dir var's that aren't already set
+    $bot_base_dir      ||= '.';
+    $bot_config_dir    ||= 'files/';
+    $bot_data_dir      ||= 'files/';
+    $bot_state_dir     ||= 'files/';
+    $bot_run_dir       ||= '.';
+    $bot_src_dir       ||= "$bot_base_dir/src";
+    $bot_log_dir       ||= "$bot_base_dir/log";
+    $bot_misc_dir      ||= "$bot_base_dir/files";
+
+    $bot_pid           = $$;
+
+    require "$bot_src_dir/logger.pl";
+    require "$bot_src_dir/core.pl";
+    require "$bot_src_dir/modules.pl";
+
+    # load the configuration (params) file.
+    &setupConfig();
+
+    &showProc();       # to get the first value.
+    &status("Initial memory usage: $memusage kB");
+    &loadCoreModules();
+    &loadDBModules();
+    &loadFactoidsModules();
+    &loadIRCModules();
+
+    &status("Memory usage after loading modules: $memusage kB");
+}
+
+# prevent duplicate processes of the same bot
+&duperuncheck();
+
+# initialize everything
+&startup();    # first time initialization.
+&setup();
+
+if (!&IsParam("Interface") or $param{'Interface'} =~ /IRC/) {
+    # launch the irc event loop
+    &ircloop();
+} else {
+    &cliloop();
+}
+
+exit 0;  # just so you don't look farther down in this file :)
+
+# --- support routines
+
+# FIXME: add arguments, basically '-h' and '--help', heh.
+
+# added by the xk
+sub duperuncheck {
+    my $pid    = $$;
+    my $file   = $file{PID};
+
+    if ( -f $file) {
+       open(PIDFILE,$file) or die "error: cannot open $file.";
+       my $thispid = <PIDFILE> || "NULL\n";
+       close PIDFILE;
+       chop $thispid;
+
+       if ($thispid =~ /^\D$/) {
+           &staus("warning: pidfile is invalid; wiping out.");
+       } else {
+           if ( -d "/proc/$thispid/") {
+               &ERROR("bot is already running from this directory.");
+               &ERROR("if this is incorrect, erase '*.pid'.");
+               &ERROR("verify with 'ps -axu | grep $thispid'.");
+               exit 1;
+           } else {
+               &status("warning: stale $file found; wiping.");
+           }
+       }
+    }
+
+    open(PIDFILE,">$file") or die "error: cannot write to $file.";
+    print PIDFILE "$pid\n";
+    close PIDFILE;
+
+    return 0;
+}
+
+1;
index a98bba782f7179f57f3196697230d8d254472156..df30b49b2c878d558b16fbaa8b8ee036ff898dd9 100755 (executable)
@@ -1,7 +1,7 @@
 #!/bin/bash
 
 BACKUP_SRCDIR="/var/lib/mysql/"
-BACKUP_TDIR="blootbot/"
+BACKUP_TDIR="infobot/"
 BACKUP_FILE="/home/a/apt/public_html/tables.tar.bz2"
 
 pwd
index 7ed1b0d9e8ddf8e4caa3e4c0c130131adf43e730..f67b5d0a6c56d47532111af11e3eb57fe60f5a9c 100755 (executable)
@@ -1,7 +1,7 @@
 #!/bin/sh
 
 BOTDIR=/home/apt/bot
-BOTNICK=blootbot
+BOTNICK=infobot
 PIDFILE=$BOTDIR/$BOTNICK.pid
 
 if [ -f $PIDFILE ]; then       # exists.
@@ -10,10 +10,10 @@ if [ -f $PIDFILE ]; then    # exists.
        exit 0
     fi
 
-    # blootbot removes the pid file.
+    # infobot removes the pid file.
     echo "stale pid file; removing."
 #    rm -f $PIDFILE
 fi
 
 cd $BOTDIR
-./blootbot
+./infobot
index 922bbb5542cab2b6da4a1d8a1e193a0465f30a51..48825b041ad9325a46f40783c487db501eb49abf 100755 (executable)
@@ -33,7 +33,7 @@ if (!dbmopen(%db, $dbfile, 0666)) {
 &status("::: opening dbm file: $dbfile");
 
 # open all the data...
-&loadConfig("files/blootbot.config");
+&loadConfig("files/infobot.config");
 $dbname = $param{'DBName'};
 my $dbh_mysql = sqlOpenDB($param{'DBName'},
        $param{'DBType'}, $param{'SQLUser'}, $param{'SQLPass'});
index 8f9d072bb6426e22db418ed42cbf640dc26dbe0f..f4f4583a64665203aa46eeb65916dc5ce2f338fb 100644 (file)
@@ -2,7 +2,7 @@
 
 use DBI;
 
-my $dsn = "DBI:mysql:blootbot:localhost";
+my $dsn = "DBI:mysql:infobot:localhost";
 my $dbh = DBI->connect($dsn, "USERNAME", "PASSWORD");
 
 my @factkey;
index d11cd09931afa605b0460eb8c99fe55326176875..267d43c77c9b4da2dd76d7d0ced2058c56a50c9e 100644 (file)
@@ -9,7 +9,7 @@ require "src/logger.pl";
 require "src/modules.pl";
 require "src/Factoids/DBCommon.pl";
 
-&loadConfig($bot_config_dir."/blootbot.config");
+&loadConfig($bot_config_dir."/infobot.config");
 &loadDBModules();
 
 unless (@_) {
index 9cef0188cd11fd1b5844effc49035cbb15a5e963..6068c9e498c1db70ee28b35069cfdf7faf1c2dda 100755 (executable)
@@ -15,7 +15,7 @@
 
 # Modified by Tim Riker <Tim@Rikers.org>
 # to work with infobot logs
-# then modified again for blootbot
+# then modified again for infobot
 
 # Usage: irclog2html <date> < logfile
 
@@ -90,7 +90,7 @@ sub footer {
 <a href="mailto:jdub\@NOSPAMaphid.net">Jeff Waugh</a> - find it at
 <a href="http://freshmeat.net/appindex/2000/03/28/954251322.html">freshmeat.net</a>!
 Modified by <a href="http://www.Rikers.org">Tim Riker</a> to work with
-<a href="http://blootbot.sourceforge.net/">blootbot</a> logs, split per channel, etc.
+<a href="http://infobot.sourceforge.net/">infobot</a> logs, split per channel, etc.
 </body></html>
 };
        return $return;
@@ -317,7 +317,7 @@ sub main {
 
 if (!scalar @ARGV) {
                print "Usage: irclog2html.pl <date> < logfile\n";
-    print "Example: bzcat log/blootbot.log-20021104.bz2 | irclog2html.pl 20021104\n";
+    print "Example: bzcat log/infobot.log-20021104.bz2 | irclog2html.pl 20021104\n";
     exit 0;
 }
 my $date = shift;
index 53f3b7763f29247fbdc3f4f057702cb49e6950b8..2973610f092ccb9d84e64a5cd3df584a7a1f5b1e 100755 (executable)
@@ -18,7 +18,7 @@ if (!defined $dbname) {
 }
 
 # open the db.
-&loadConfig("files/blootbot.config");
+&loadConfig("files/infobot.config");
 &loadDBModules();
 
 &openDB($param{'DBName'}, $param{'SQLUser'}, $param{'SQLPass'});
index 0b877bd7e372b6e92c27dae0ad1581dc6423da30..409b55fbb719354c369f79d8ae98bf14d9b3a1d3 100644 (file)
@@ -1,7 +1,7 @@
 #!/bin/sh
-echo -n "DEBUG:  "; grep DEBUG `find blootbot src -type f`| wc -l
-echo -n "WARN:   "; grep WARN `find blootbot src -type f` | wc -l
-echo -n "FIXME:  "; grep FIXME `find blootbot src -type f` | wc -l
-echo -n "status: "; grep status `find blootbot src -type f` | wc -l
-echo -n "ERROR:  "; grep ERROR `find blootbot src -type f` | wc -l
-echo -n "TODO:   "; grep TODO `find blootbot src -type f` | wc -l
+echo -n "DEBUG:  "; grep DEBUG `find infobot src -type f`| wc -l
+echo -n "WARN:   "; grep WARN `find infobot src -type f` | wc -l
+echo -n "FIXME:  "; grep FIXME `find infobot src -type f` | wc -l
+echo -n "status: "; grep status `find infobot src -type f` | wc -l
+echo -n "ERROR:  "; grep ERROR `find infobot src -type f` | wc -l
+echo -n "TODO:   "; grep TODO `find infobot src -type f` | wc -l
index 47a70b7437c0b24d18a4a3ad0da0a953bab60442..88ace259d9293a483a099d866f95a62ea5d4c4fb 100755 (executable)
@@ -19,7 +19,7 @@ my $txtfile = shift;
 open(IN,$txtfile) or die "error: cannot open txtfile '$txtfile'.\n";
 
 # read the bot config file.
-&loadConfig("files/blootbot.config");
+&loadConfig("files/infobot.config");
 &loadDBModules();
 &openDB($param{'DBName'}, $param{'SQLUser'}, $param{'SQLPass'});
 
index 961d91a4747d8f42ee5341d72626b2712024cc45..06bd2f16e092e302b43e48bd4b89e7247a780442 100644 (file)
@@ -15,7 +15,7 @@ MySQL until I actually change it)
 
 To automate the setup of your database and user, type:
 
-       cd ~/blootbotdir
+       cd ~/infobotdir
        ./setup/setup.pl
 
 (NOTE: The setup will ask for an account capable of administrating
index 00dbf494e0b7e0da181212057057449e88274886..d1256c17c258a0c2007026f7c920a7bf84f6868a 100644 (file)
@@ -3,7 +3,7 @@ CREATE TABLE connections (
  port INT NOT NULL DEFAULT '6667',
  nick VARCHAR(20) NOT NULL,
  nickservpass VARCHAR(8) NOT NULL,
- ircname VARCHAR (20) NOT NULL DEFAULT 'blootbot experimental bot',
+ ircname VARCHAR (20) NOT NULL DEFAULT 'infobot experimental bot',
  timeadded INT UNSIGNED DEFAULT 'UNIX_TIMESTAMP()',
  PRIMARY KEY (server,port,nick)
 );
index d12244c5c150082c5b60e8c8af15ffaa8d33e085..7b9872e62721e14d9d205a0bb61c3e6d02aa8a21 100644 (file)
@@ -3,7 +3,7 @@ CREATE TABLE connections (
     port integer DEFAULT 6667 NOT NULL,
     nick character varying(20) NOT NULL,
     nickservpass character varying(8) NOT NULL,
-    ircname character varying(20) DEFAULT 'blootbot IRC bot'::character varying NOT NULL,
+    ircname character varying(20) DEFAULT 'infobot IRC bot'::character varying NOT NULL,
     timeadded numeric DEFAULT 0
 ) WITHOUT OIDS;
 
index 4977b02df93b064e695db99a29b40e5fb88eeb0a..72ad985fc3361bd974cf4ad103a14a26852fa36e 100755 (executable)
@@ -1,5 +1,5 @@
 #!/usr/bin/perl
-# setup_tables: setup MYSQL/PGSQL side of things for blootbot.
+# setup_tables: setup MYSQL/PGSQL side of things for infobot.
 # written by the xk.
 ###
 
@@ -11,8 +11,8 @@ require "src/CLI/Support.pl";
 
 $bot_src_dir = "src/";
 
-# read param stuff from blootbot.config.
-&loadConfig("files/blootbot.config");
+# read param stuff from infobot.config.
+&loadConfig("files/infobot.config");
 
 &loadDBModules();
 my $dbname = $param{'DBName'};
index 00dbf494e0b7e0da181212057057449e88274886..d1256c17c258a0c2007026f7c920a7bf84f6868a 100644 (file)
@@ -3,7 +3,7 @@ CREATE TABLE connections (
  port INT NOT NULL DEFAULT '6667',
  nick VARCHAR(20) NOT NULL,
  nickservpass VARCHAR(8) NOT NULL,
- ircname VARCHAR (20) NOT NULL DEFAULT 'blootbot experimental bot',
+ ircname VARCHAR (20) NOT NULL DEFAULT 'infobot experimental bot',
  timeadded INT UNSIGNED DEFAULT 'UNIX_TIMESTAMP()',
  PRIMARY KEY (server,port,nick)
 );
index 00dbf494e0b7e0da181212057057449e88274886..d1256c17c258a0c2007026f7c920a7bf84f6868a 100644 (file)
@@ -3,7 +3,7 @@ CREATE TABLE connections (
  port INT NOT NULL DEFAULT '6667',
  nick VARCHAR(20) NOT NULL,
  nickservpass VARCHAR(8) NOT NULL,
- ircname VARCHAR (20) NOT NULL DEFAULT 'blootbot experimental bot',
+ ircname VARCHAR (20) NOT NULL DEFAULT 'infobot experimental bot',
  timeadded INT UNSIGNED DEFAULT 'UNIX_TIMESTAMP()',
  PRIMARY KEY (server,port,nick)
 );
index 7ee3a0b0dc0a2ad3aa009b2cbc8f7a381ef02b95..60f171c688d80f115f5d18bd6eedab16c4657568 100644 (file)
@@ -26,7 +26,7 @@ sub cliloop {
 
     # install libterm-readline-gnu-perl to get history support
     use Term::ReadLine;
-    my $term = new Term::ReadLine 'blootbot';
+    my $term = new Term::ReadLine 'infobot';
     my $prompt = "$who> ";
     #$OUT = $term->OUT || STDOUT;
     while ( defined ($_ = $term->readline($prompt)) ) {
index 00e1ebab8a99aa879832cb1f75762d6e7ed919d3..d086c48b9430c1a3b42de1a891cb6367502407cb 100644 (file)
@@ -481,7 +481,7 @@ sub lart {
        $for    = $2;
     }
 
-    my $line = &getRandomLineFromFile($bot_data_dir. '/blootbot.lart');
+    my $line = &getRandomLineFromFile($bot_data_dir. '/infobot.lart');
     if (defined $line) {
        if ($target =~ /^(me|you|itself|\Q$mynick\E)$/i) {
            $line =~ s/WHO/$who/g;
index 85168e0483c6e964d685fab54b2aef6104e33409..de814b4d2435aa0f83b17ada3148725c201eff42 100644 (file)
@@ -20,7 +20,7 @@ use vars qw($utime_userfile $ucount_userfile $utime_chanfile $who
 #####
 
 sub readUserFile {
-    my $f = "$bot_state_dir/blootbot.users";
+    my $f = "$bot_state_dir/infobot.users";
 
     if (! -f $f) {
        &DEBUG("userfile not found; new fresh run detected.");
@@ -129,14 +129,14 @@ sub writeUserFile {
        return;
     }
 
-    if (!open OUT,">$bot_state_dir/blootbot.users") {
-       &ERROR("Cannot write userfile ($bot_state_dir/blootbot.users): $!");
+    if (!open OUT,">$bot_state_dir/infobot.users") {
+       &ERROR("Cannot write userfile ($bot_state_dir/infobot.users): $!");
        return;
     }
 
     my $time           = scalar(gmtime);
 
-    print OUT "#v1: blootbot -- $ident -- written $time\n\n";
+    print OUT "#v1: infobot -- $ident -- written $time\n\n";
 
     ### USER LIST.
     my $cusers = 0;
@@ -235,7 +235,7 @@ sub writeUserFile {
 #####
 
 sub readChanFile {
-    my $f = "$bot_state_dir/blootbot.chan";
+    my $f = "$bot_state_dir/infobot.chan";
     if ( -f $f and -f "$f~") {
        my $s1 = -s $f;
        my $s2 = -s "$f~";
@@ -304,13 +304,13 @@ sub writeChanFile {
        return;
     }
 
-    if (!open OUT,">$bot_state_dir/blootbot.chan") {
-       &ERROR("Cannot write chanfile ($bot_state_dir/blootbot.chan): $!");
+    if (!open OUT,">$bot_state_dir/infobot.chan") {
+       &ERROR("Cannot write chanfile ($bot_state_dir/infobot.chan): $!");
        return;
     }
 
     my $time           = scalar(gmtime);
-    print OUT "#v1: blootbot -- $ident -- written $time\n\n";
+    print OUT "#v1: infobot -- $ident -- written $time\n\n";
 
     if ($flag_quit) {
 
index 938f6155c7a7c087953a92dcbb524f79ff080b5c..080297fdaa7f88ec87bfbc7473d0b48d9ea35cb1 100644 (file)
@@ -53,7 +53,7 @@ sub loadLang {
 
 # File: Irc Servers list.
 sub loadIRCServers {
-    my ($file) = $bot_config_dir."/blootbot.servers";
+    my ($file) = $bot_config_dir."/infobot.servers";
     @ircServers = ();
     %ircPort = ();
 
index cf873ce130051354bb93a1de350b44444b3e7dbf..47f9851ff3e0d50f0bedba715c2ea117b570ace7 100644 (file)
@@ -365,7 +365,7 @@ sub on_dcc_open_chat {
        &status("DCC CHAT: going to use ".$nick."'s crypt.");
        &dccsay($nick,"Enter your password.");
     } else {
-#      &dccsay($nick,"Welcome to blootbot DCC CHAT interface, $userHandle.");
+#      &dccsay($nick,"Welcome to infobot DCC CHAT interface, $userHandle.");
     }
 }
 
index a59c939c7a8e5e3d591f6ea443b009d0b1d44ca1..7c3044dddc15099775586216e15c67acafdf2af4 100644 (file)
@@ -134,7 +134,7 @@ sub randomQuote {
     foreach ( &ChanConfList('randomQuote') ) {
        next unless (&validChan($_));
 
-       my $line = &getRandomLineFromFile($bot_data_dir. "/blootbot.randtext");
+       my $line = &getRandomLineFromFile($bot_data_dir. "/infobot.randtext");
        if (!defined $line) {
            &ERROR("random Quote: weird error?");
            return;
@@ -743,9 +743,9 @@ sub miscCheck {
     }
 
     # make backup of important files.
-    &mkBackup( $bot_state_dir."/blootbot.chan", 60*60*24*3);
-    &mkBackup( $bot_state_dir."/blootbot.users", 60*60*24*3);
-    &mkBackup( $bot_base_dir."/blootbot-news.txt", 60*60*24*1);
+    &mkBackup( $bot_state_dir."/infobot.chan", 60*60*24*3);
+    &mkBackup( $bot_state_dir."/infobot.users", 60*60*24*3);
+    &mkBackup( $bot_base_dir."/infobot-news.txt", 60*60*24*1);
 
     # flush cache{lobotomy}
     foreach (keys %{ $cache{lobotomy} }) {
@@ -776,7 +776,7 @@ sub miscCheck {
            # don't touch other bots, if they're running.
            next unless ($param{ircUser} =~ /^\Q$n\E$/);
        } else {
-           &DEBUG("shm: $shmid is not ours or old blootbot => ($z)");
+           &DEBUG("shm: $shmid is not ours or old infobot => ($z)");
            next;
        }
 
index 47cbd36666692a08f091a4332ecb52bba4b702d1..e580fa0ece969f578dec4a5059007aebb514727f 100644 (file)
@@ -13,7 +13,7 @@ use vars qw($msgType $who $bot_pid $nuh $shm $force_public_reply
 
 sub help {
     my $topic = shift;
-    my $file  = $bot_data_dir."/blootbot.help";
+    my $file  = $bot_data_dir."/infobot.help";
     my %help  = ();
 
     # crude hack for performStrictReply() to work as expected.
index 5e1200bcc5bea765a156c6aa3d3e3f1695cf9629..4af400be9a8b6da2ec074eb819ae38cccd8b3dfd 100644 (file)
@@ -150,7 +150,7 @@ sub Parse {
 }
 
 sub readNews {
-    my $file = "$::bot_base_dir/blootbot-news.txt";
+    my $file = "$::bot_base_dir/infobot-news.txt";
     if (! -f $file or -z $file) {
        return;
     }
@@ -211,7 +211,7 @@ sub writeNews {
     }
 
     # should define this at the top of file.
-    my $file = "$::bot_base_dir/blootbot-news.txt";
+    my $file = "$::bot_base_dir/infobot-news.txt";
 
     if (fileno NEWS) {
        &::ERROR("News: write: fileno NEWS exists, should never happen.");
index aad95d890e4dafb4aa0dc9a6c2ff526d08a3e4a3..d5ba5530db481850aad5da2c9093bb951d8df6a7 100644 (file)
@@ -1,7 +1,7 @@
 #   Units.pl: convert units of measurement
 #     Author: M-J. Dominus (mjd-perl-units-id-iut+buobvys+@plover.com)
 #    License: GPL, Copyright (C) 1996,1999
-#       NOTE: Integrated into blootbot by xk.
+#       NOTE: Integrated into infobot by xk.
 
 package Units;
 
index da9deed0667cb7e1ea94ab69a3dd0ffd01dc111f..1c3ab1ce470f95c29626c0afb5cb93cbf8cdb0fd 100644 (file)
@@ -12,7 +12,7 @@ use strict;
 my $select = IO::Select->new;
 
 sub Wingates {
-    my $file = "$::blootbot_base_dir/$::param{'ircUser'}.wingate";
+    my $file = "$::infobot_base_dir/$::param{'ircUser'}.wingate";
     my @hosts;
 
     open(IN, $file);
index c0e32854fdb1a7dd699cdb54f1d88b5ea7744471..5e6b06aa834a7605465d173d1bd1e3cea96f39a4 100644 (file)
@@ -71,7 +71,7 @@ sub pager::page {
                        To => "$to <$toaddr>",
                        From => "$from <$fromaddr>",
                        Subject => "Message from $channel!",
-                       'X-Mailer' => 'blootbot',
+                       'X-Mailer' => 'infobot',
                );
 
 #              my $logmsg;
index 13ce1bf95f102354db88030d33730b00620e8cca..652188a8170f82a842d44f9591876e111966d280 100644 (file)
@@ -1,4 +1,4 @@
-# This program is distributed under the same terms as blootbot.
+# This program is distributed under the same terms as infobot.
 
 package wikipedia;
 use strict;
index 1b7a68c02fded05360f467f97e7318adfecfeea6..9efaf417d77b281d0fa338eab57239a142cd2610 100644 (file)
@@ -83,7 +83,7 @@ if ( -d 'CVS' ) {
     use POSIX qw(strftime);
     $bot_release       .= strftime(" cvs (%Y%m%d)", gmtime( (stat('CVS'))[9] ) );
 }
-$bot_version   = "blootbot $bot_release -- $^O";
+$bot_version   = "infobot $bot_release -- $^O";
 $noreply       = 'NOREPLY';
 
 ##########
@@ -113,7 +113,7 @@ sub doExit {
        &status("parent caught SIG$sig (pid $$).") if (defined $sig);
 
        &status("--- Start of quit.");
-       $ident ||= 'blootbot';  # lame hack.
+       $ident ||= 'infobot';   # lame hack.
 
        &status("Memory Usage: $memusage KiB");
 
@@ -158,7 +158,7 @@ sub doWarn {
 }
 
 # Usage: &IsParam($param);
-# blootbot.config specific.
+# infobot.config specific.
 sub IsParam {
     my $param = $_[0];
 
@@ -428,7 +428,7 @@ sub setup {
     &status("--- Started logging.");
 
     # read.
-    &loadLang($bot_data_dir. "/blootbot.lang");
+    &loadLang($bot_data_dir. "/infobot.lang");
     &loadIRCServers();
     &readUserFile();
     &readChanFile();
@@ -456,7 +456,7 @@ sub setup {
 
 sub setupConfig {
     $param{'VERBOSITY'} = 1;
-    &loadConfig($bot_config_dir."/blootbot.config");
+    &loadConfig($bot_config_dir."/infobot.config");
 
     foreach ( qw(ircNick ircUser ircName DBType tempDir) ) {
        next if &IsParam($_);
@@ -502,13 +502,13 @@ sub shutdown {
     &status("--- shutdown called.");
 
     # hack.
-    $ident ||= 'blootbot';
+    $ident ||= 'infobot';
 
-    if (!&isFileUpdated("$bot_state_dir/blootbot.users", $wtime_userfile)) {
+    if (!&isFileUpdated("$bot_state_dir/infobot.users", $wtime_userfile)) {
        &writeUserFile()
     }
 
-    if (!&isFileUpdated("$bot_state_dir/blootbot.chan", $wtime_chanfile)) {
+    if (!&isFileUpdated("$bot_state_dir/infobot.chan", $wtime_chanfile)) {
        &writeChanFile();
     }
 
@@ -539,7 +539,7 @@ sub restart {
 
        &DCCBroadcast("-HUP called.",'m');
        &shutdown($sig);
-       &loadConfig($bot_config_dir."/blootbot.config");
+       &loadConfig($bot_config_dir."/infobot.config");
        &reloadAllModules() if (&IsParam('DEBUG'));
        &setup();