[project @ 2005-06-24 06:13:45 by unknown_lamer]
[clinton/bobotpp.git] / ChangeLog
index cbd5a0e..e3cfd5c 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,590 @@
+2005-06-24  Clinton Ebadi  <clinton@unknownlamer.org>
+
+       * source/ScriptCommands.C (sendNotice): Returns error code instead
+       of just #t or #f
+
+       * source/Commands.C (Say): Check to make sure target is a channel
+       (Msg): Extended to send messages to channels
+
+2005-06-23  Clinton Ebadi  <clinton@unknownlamer.org>
+
+       * scripts/bot.scm: Added file ((bobotpp bot) module for other
+       modules to gain access to bobot++ interface)
+
+       * source/Commands.C (Notice): Commented out check/abort if target
+       is a channel (there doesn't seem to be a reason for this to not work)
+
+       * source/Interp.C (interp_init_helper): Register bot:notice with scheme
+
+       * bobot++.texinfo (High Level Message Functions): Document bot:notice
+
+       * source/Message.H: Added operator== to Message (tests for error
+       code equality)
+
+       * source/Commands.C: Removed message type macros
+
+       * source/Message.H: Moved message type macros to Message.H
+
+       * source/ScriptCommands.C (sendNotice): Implemented sendNotice
+
+       * source/ScriptCommands.H: Uncomment sendNotice
+
+       * source/Bot.C (waitForInput): Use %02d when formatting
+       Hooks::TIMER argument instead of %2d, and switch to snprintf to
+       enforce max length
+
+       * bobot++.texinfo (Hooks): Clarified intro text about hooks (order
+       of processing).
+
+       * source/Bot.C (run): Added call to Hooks::DISCONNECT
+       (hooks/disconnect) when the bot is disconnected from the server
+
+       * bobot++.texinfo: Applied documentation patch from Dale P. Smith
+       (Hook Types): Added hooks/disconnect argument
+
+2005-06-06  Clinton Ebadi  <clinton@unknownlamer.org>
+
+       * bobot++.texinfo: Change @vskip 0 to @vskip 0pt to make this work
+       again (thanks dsmith)
+
+2005-06-01  Clinton Ebadi  <clinton@unknownlamer.org>
+
+       * source/Interp.C (interp_init_helper): Added
+       bot:protection/[none|ban|kick|deop] constants to Scheme
+       (interp_init_helper): Added bot:aop/[yes|no] constants
+
+2005-05-31  Clinton Ebadi  <clinton@unknownlamer.org>
+
+       * configure.ac: Release Bobot++ 2.1.7
+       Changed version to 2.18.CVS
+
+       * source/UserList.C (save): Remove workaround for BUG #2
+
+       * source/Parser.C (parse001): make realNick lowercase when doing
+       the comparison to bot->nickName to prevent pushing a second copy
+       of the bot onto the userlist (closes BUG #2)
+
+       * source/Bot.C (Bot): cleaned up constructor
+       (waitForInput): replaced gh_list with scm_list_n
+
+       * source/UserList.C: Cleaned up some formatting
+
+       * source/Main.C: Formatted code more cleanly
+       (real_main): changed a few Strings to std::strings
+
+       * source/String.C (operator): Made index signed again, it's not
+       worth fixing this warning
+
+       * source/Bot.C: Add casts to make this compile with unsigned int
+       as operator[] in String
+
+       * source/String.C (operator): Made index unsigned
+
+       * source/Utils.C: Made a few things unsigned to kill warnings
+
+       * source/Socket.C (readLine): Made pos unsigned
+
+       * source/Bot.C (Bot): Fixed initializer list order to kill warnings
+
+       * source/BotInterp.C (RunTimers): Removed unused variable (Timer *t)
+
+       * source/StringTokenizer.C (count_tokens): Changed return type to
+       unsigned int
+       (more_tokens_p): Made counter unsigned
+
+       * source/StringTokenizer.H (class StringTokenizer): Made pos
+       std::string::size_type instead of int
+
+       * source/Commands.C (TBan): Returns Ok is the ban is done instead
+       of falling off the end (oops)
+
+       * source/BotInterp.H: Add general catch case (false)
+
+2005-03-11  Clinton Ebadi  <clinton@unknownlamer.org>
+
+       * configure.ac: Release 2.1.6
+       Changed version to 2.1.7CVS
+
+2005-02-28  Clinton Ebadi  <clinton@unknownlamer.org>
+
+       * source/Parser.C (parseLine): use map<>::find and an iterator to
+       find the IRC command instead of map<>::operator[] to avoid a
+       potential segfault
+
+       * source/Bot.C (waitForInput): Removed commented out code
+
+       * source/Socket.C (readLine): return String (buf.c_str ()) instead
+       of String (buf) so that only the buffer up to the first null is returned
+       (readLine): Added a comment explaining the usage of buf
+       (readLine): Changed type of length (std::string::size_type instead
+       of std::size_t)
+
+       * source/String.C: Reimplemented String on top of std::string to
+       fix a few bugs and potential memory leaks
+       (toLower): use Utils::to_lower
+       (toUpper): Use Utils::to_upper
+       (trim): Use Utils::trim_str
+
+       * source/String.H: removed srep, replaced it with a std::string (my_string)
+
+       * source/Utils.C (to_upper): Applied patch from Jos Hulzink
+       <josh@stack.nl>
+       (trim_str): Appled patch from Jos Hulzink <josh@stack.nl> (fixes
+       counters and substr call)
+
+       * source/StringTokenizer.C (next_token): Applied patch from Jos
+       Hulzink <josh@stack.nl> (fixes substr call)
+       (rest): Applied patch from Jos Hulzink <josh@stack.nl> (fixes
+       substr call)
+
+2005-02-27  Clinton Ebadi  <clinton@unknownlamer.org>
+
+       * source/Bot.H (COPYRIGHT_STRING): Remove Michael Wilson because
+       he is a lazy bum and never submitted the String replacing patch
+
+2005-01-23  Clinton Ebadi  <clinton@unknownlamer.org>
+
+       * configure.ac: Remove CC++ test
+       Changed version to 2.1.6CVS (2.1.5 released)
+
+       * bobot++.texinfo: Updated copyright
+
+2005-01-16  Clinton Ebadi  <clinton@unknownlamer.org>
+
+       * TODO (General): Added TODO items
+       (2.2): Moved a few items here from 2.4
+
+       * README (NOTE): Mention boost requirement
+
+2005-01-13  Clinton Ebadi  <clinton@unknownlamer.org>
+
+       * ChangeLog Updated copryight
+
+       * source/User.H: Removed forward declaration of Utils
+
+       * source/Bot.H: Removed forward declaration of Utils
+
+       * source/ChannelList.H: Removed forward declaration of Utils
+
+       * source/UserListItem.H: Removed forward declaration of Utils
+
+       * source/Utils.H: Removed class Utils, replaced with a namspace
+       (it only contained static methods)
+
+       * source/Bot.H (COPYRIGHT_STRING): Added 2005 and Michael Wilson
+       (he is replacing String)
+
+2005-01-12  Clinton Ebadi  <clinton@unknownlamer.org>
+
+       * source/BotConfig.C (set_option_value): Put watcher calling
+       inside of if (cf_iter != end()) to fix a segfault (if the cf_iter
+       = end then there are no watchers since this is a new value and
+       references cf_iter->second segfaults)
+
+       * source/Utils.C (trim_str): Fixed bug (last non-space character
+       was being cut off)
+
+       * source/BotConfig.C (read_config): Made to use set_option_value
+       instead of manipulating options_db directly
+
+       * source/BotConfig.H (class BotConfig): Add set_option_value that
+       takes a t_value instead of t_value_list (most uss of
+       set_option_value will be to add a single value so this is very useful)
+
+       * source/BotConfig.C (set_option_value): Implemented
+
+       * source/UserList.C: Made to work with new Utils/StringTokenizer names
+
+       * source/UserCommands.C: Made to work with new
+       Utils/StringTokenizer names
+
+       * source/ShitList.C: Uses Utils.H now (Utils::trim_str & friends)
+
+2005-01-11  Clinton Ebadi  <clinton@unknownlamer.org>
+
+       * source/ShitList.C: Made to work with new StringTokenizer names
+
+       * source/ServerQueueItem.C: Made to work with new StringTokenizer names
+
+       * source/ServerQueue.C: Made to work with new Utils names
+
+       * source/ScriptCommands.C: Made work with new Utils names
+
+       * source/Person.C (getNick): Made work with new Utils names
+
+       * source/String.H: Added substr prototypes
+
+       * source/String.C (substr): Added substr as an alias of subString
+       (for compat with std::string before the transition)
+
+       * source/Parser.C: Made to work with new Utils/StringTokenizer names
+
+       * source/DCCParser.C: Made to work with new Utils names
+
+       * source/DCCChatConnection.C: Made to work new Utils names
+
+       * source/Commands.C: Made to work with new Utils names
+
+       * source/Channel.C: Made to work with new Utils names
+
+       * source/BotInterp.C: Made to work with new Utils
+
+       * source/Bot.C: Made to work with new Utils/StringTokenizer names
+
+       * source/String.C (operator=): Unremoved operator=(std::string)
+
+       * source/String.H: Unremoved operator=(std::string)
+
+       * source/BotConfig.C (read_config): Use Utils::trim_str
+
+       * source/String.C (trim): Fixed bug (p->s[i] == '\r', s/i/j/)
+
+       * source/Utils.C (trim_str): Implemented
+
+       * source/Utils.H: Added tim_str (replaces String::trim)
+
+       * source/BotConfig.C: Made everything work with new
+       StringTokenizer and Utils names
+
+       * source/Utils.H: Added to_lower
+       Added to_upper
+
+       * source/StringTokenizer.C (rest): uses std::isspace instead of
+       checking st[pos] against ' ' and '\t'
+
+       * source/StringTokenizer.H: Removed CamelCasing
+       Renamed hasMoreTokens to more_tokens_p
+
+       * source/StringTokenizer.C: Converted to use std::string
+
+       * source/StringTokenizer.H: Converted to use std::string
+
+       * source/String.C: Removed operator=(std::string)
+
+       * source/String.H: Removed operator=(std::string)
+
+       * source/Utils.C: Added copyright
+       Reformatted to match GNU coding standard more closely
+       Converted everything to use std::string
+       (get_nick): Renamed from getNick
+       (get_userhost): Renamed from getUserHost
+       (get_key): Renamed from getKey
+       (IP_p): Renamed from isIP
+       (make_wildcard): Renamed from makeWildcard
+       (channel_p): Renamed from isChannel
+       (wildcard_p): Renamed from isWildcard
+       (valid_channel_name_p): Renamed from isValidChannelName
+       (valid_nickname_p): Renamed from isValidNickName
+       (get_level): Renamed from getLevel
+       (str2time): Renamed from strToTime
+       (str2time): Fixed potential buffer overflow (num[512] => std::string)
+       (level2str): Renamed from levelToStr
+       (prot2str): Renamed from protToStr
+       (bool2str): Renamed from boolToStr
+       (long2str): Implemented
+       (scm2str): Renamed from scm2String
+       (str2scm): Renamed from string2SCM
+
+       * source/BotConfig.C: Reformatted to fit GNU coding style more closely
+
+       * source/Utils.H: Added long2str (long int -> std::string)
+
+       * source/String.H: Added 2003 copyright (the year I last modified
+       it in)
+
+       * source/String.C: Added 2002 copyright (the year I last modified
+       it in)
+
+       * source/Utils.H: Updated Copyright
+       s/String/std::string/g
+       Removed camel casing and is* = *_p
+       xToY = x2y
+
+       * source/BotConfig.C: Updated Copyright
+
+       * source/BotConfig.H: Updated copyright
+
+2005-01-08  Clinton Ebadi  <clinton@unknownlamer.org>
+
+       * source/BotConfig.C (set_option_value): Take care of the case
+       where key is not already in the db
+       (add_watcher): Implemented
+       (read_config): Removed ',' token parsing (not needed)
+
+       * configure.ac: Add AC_LANG([C++]) so we can check for C++ libs
+       AC_CHECK_LIB ccgnu2 (CommonC++2)
+
+       * README: Updated README (reformatted, adding info, etc.)
+
+2005-01-07  Clinton Ebadi  <clinton@unknownlamer.org>
+
+       * source/BotConfig.C (set_option_value): call watcher list
+       (run_fun_): Added to support watcher list calling
+
+2005-01-06  Clinton Ebadi  <clinton@unknownlamer.org>
+
+       * source/BotConfig.C (set_option_value): Fuck you STL
+       (push_back_): Reimplemented so that it doesn't need std::bind1st
+       because the STL is being stupid
+
+2004-12-26  Clinton Ebadi  <clinton@unknownlamer.org>
+
+       * source/BotConfig.C (read_config): Implemented properly
+       (get_option_values): Implemented properly
+       (set_config_file): Fixed
+
+2004-07-10  Clinton Ebadi  <clinton@unknownlamer.org>
+
+       * bobot++.texinfo (Built-In Commands): Added empty stubs to the
+       list of commands
+
+2004-06-22  Clinton Ebadi  <clinton@unknownlamer.org>
+
+       * source/BotConfig.C: New file (implementation of configuration database)
+
+       * source/BotConfig.H: New File (semi-generic configuration database)
+
+2004-06-17  Clinton Ebadi  <clinton@unknownlamer.org>
+
+       * bobot++.texinfo (Starting the Bot): New section
+
+2004-06-14  Clinton Ebadi  <clinton@unknownlamer.org>
+
+       * bobot++.texinfo (Protection): Added Section
+       (User Levels): Rewrote section to be useful
+       (bot.users): Added section
+
+2004-06-12  Clinton Ebadi  <clinton@unknownlamer.org>
+
+       * source/DCCChatConnection.C (connect): Checks to make sure the
+       person initiating a DCC CHAT with the bot is at least a FRIEND of
+       the bot.
+
+       * README: Fixed a typo
+
+       * scripts/bobot-utils.scm (ctcp-quote): Implemented ctcp-quote
+       (bot:ctcp-quote): Renamed ctcp-quote to bot:ctcp-quite (whoops)
+
+2004-05-28  Clinton Ebadi  <clinton@unknownlamer.org>
+
+       * bobot++.texinfo (bot.conf): Finished section
+       (server syntax): New section, documents the bot.conf SERVER syntax
+       (channel syntax): New section, documentes the bot.conf CHANNEL syntax
+
+2004-05-13  Clinton Ebadi  <clinton@unknownlamer.org>
+
+       * source/Main.C (real_main): std::exit instead of exit
+
+2004-05-12  Clinton Ebadi  <clinton@unknownlamer.org>
+
+       * source/DCCConnection.C (DCCConnection): Intialized `nuh' in the
+       constructor with `n' This should fix the segfaulting.
+
+2004-01-28  Clinton Ebadi  <clinton@unknownlamer.org>
+
+       * ChangeLog: Updated copyright notice
+
+2004-01-09  Clinton Ebadi  <clinton@unknownlamer.org>
+
+       * source/Interp.C (interp_init_helper): Register
+       bot:change-command-level
+
+       * source/ScriptCommands.C (ChangeCommandLevel): Added
+       ChangeCommandLevel to change the level a user needs to be to run a
+       command
+
+       * source/ScriptCommands.H: Added ChangeCommandLevel
+
+2003-10-12  Clinton Ebadi  <clinton@unknownlamer.org>
+
+       * source/String.H: Changed #define STRING_H to BSTRING_H
+
+2003-08-04  Clinton Ebadi  <clinton@unknownlamer.org>
+
+       * scripts/bobot-utils.scm (bot:sent-to-me?): New procedure, used
+       to see if a message was sent to the bot (this is better than
+       bot:match-to-me because the hook isn't invalidated when the bot's
+       nickname changes)
+
+       * source/DCCConnection.H: Added `nuh' back and added an
+       accessor (get_nuh)
+       Added setter `set_autoRemove(bool)'
+
+       * source/DCCConnection.H: Removed all friends
+       Added accessors (get_bot, get_lastSpoken, get_autoRemove; get_bot
+       reveals the pointer to the bot [PRIVATE POINTER] which probably
+       isn't so nice, but there isn't much to be done about it with the
+       current design of the bot)
+
+       * source/DCCChatConnection.H: Removed all friends
+
+       * source/DCCConnection.H: DCCConnection is now a pure virtual
+       class with the subclass DCCChatConnection
+
+2003-07-29  Clinton Ebadi  <clinton@unknownlamer.org>
+
+       * source/Socket.C (connect): log errors to the bot log instead of
+       printing to stderr
+
+2003-07-23  Clinton Ebadi  <clinton@unknownlamer.org>
+
+       * source/Parser.C (parseMessage): use the find method of std::map
+       to find the command to call instead of [] and then extract the
+       pointer to the userFunction from that if it exists. This appears
+       to fix the crash when one uses an undefined command followed by
+       any defined command.
+
+2003-04-09  Clinton Ebadi  <clinton@unknownlamer.org>
+
+       * source/Interp.C (interp_init_helper): Bind bot:setfloodrate to
+       ScriptCommands::SetFloodRate
+
+       * source/ScriptCommands.C (SetFloodRate): New Method: SetFloodRate
+
+       * source/Bot.C (init_user_functions): Make SETFLOODRATE available
+       to bot master
+
+       * source/Bot.H: Made MAX_MESSAGES writeable
+
+       * source/UserCommands.H: New method: SetFloodRate
+
+       * source/Commands.H: New method: SetFloodRate
+
+2003-04-03  Clinton Ebadi  <clinton@unknownlamer.org>
+
+       * configure.ac: Merged all AC_OUTPUTs at the end
+
+2003-04-02  Clinton Ebadi  <clinton@unknownlamer.org>
+
+       * scripts/bobot-utils.scm: Make exported symbols from
+       the-bot-module available in the guile-user module so that scripts
+       loaded with Interp::Load function.
+
+2003-03-30  Clinton Ebadi  <clinton@unknownlamer.org>
+
+       * scripts/bobot-utils.scm (bot:load-module): Loads a file from the
+       %bot:loadpath into its own module and returns that (unnamed) module
+       (bot:use-module): Calls bot:load-module and then adds the newly
+       loaded module to the (current-module)'s use-list
+
+       * source/Interp.C (interp_init_helper): New procedure to initialize
+       the-bot-module (this is the old Interp::Startup verbatim)
+       (interp_post_startup_helper): New procedure to export
+       the-bot-module from bot_module
+       (Startup): Now calls interp_init_helper and
+       interp_post_startup_helper to initalize the bot module system
+
+       * source/Interp.H: Added private variable bot_module to Interp
+
+2002-11-04  Clinton Ebadi  <clinton@unknownlamer.org>
+
+       * scripts/bobot-utils.scm: Added bot: to regex functions (yes,
+       this breaks existing scripts, this is the unstable tree after all)
+
+2002-11-03  Clinton Ebadi  <clinton@unknownlamer.org>
+
+       * source/Mask.C (match): Made Mask::match case insensitive
+
+2002-09-23  Clinton Ebadi  <clinton@unknownlamer.org>
+
+       * source/Interp.C (scm_apply_wrapper): turned off locking of
+       Interp::mutex to see if this makes the bot work again...and it
+       does!
+
+2002-09-07  Clinton Ebadi  <clinton@unknownlamer.org>
+
+       * configure.ac: Removed arguments to AM_INIT_AUTOMAKE and updated
+       everything to use aclocal/automake 1.6
+
+2002-08-27  Clinton Ebadi  <clinton@unknownlamer.org>
+
+       * source/DCCPerson.H (class DCCPerson): Added
+       UserCommands::DCCList as a friend (friends are better than the old
+       DCC() function at least).
+
+       * source/DCCManager.H (class DCCManager): Added
+       UserCommands::DCCList as a friend
+
+       * source/Interp.H (class Interp): Made function scm_apply_wrapper
+       a friend so it can lock Interp::mutex
+
+       * source/Interp.C (scm_apply_wrapper): Lock Interp::mutex if
+       MULTITHREAD is defined (it is always defined when scripting is
+       enabled) so that Sockets can be made multithreaded using
+       CommonC++.
+
+       * source/DCCPerson.H: Removed DCC method and made Bot a friend
+       Made DCCManager a friend
+
+       * source/DCCManager.H (class DCCManager): Removed MAP() method
+       and made Bot a friend of DCCManager
+
+2002-08-18  Clinton Ebadi  <clinton@unknownlamer.org>
+
+       * source/Interp.C (Startup): Renamed bot:DCC-chat-send to
+       bot:dcc-chat-send. 
+
+       * bobot++.texinfo (Hook Types): Fixed a typo (I wrote
+       user!nick@host instead of the correct nick!user@host).
+
+       * source/Interp.C (Startup): Register bot:DCC-chat-send
+
+       * source/ScriptCommands.C (sendDCCChatMessage): Added method again
+
+2002-08-08  Clinton Ebadi  <clinton@unknownlamer.org>
+
+       * source/String.C (String): The std::string copy constructor now
+       extracts the c_str of the std::string and then takes the strlen of
+       that before copying it. This fixes a bug with DCC where if you did
+       e.g. "!help" the bot would reply with "No TOPIC PRIVMSG FOUND" or
+       something like that, depending on what the last message was
+       because Socket will insert a \0 into its semi-static buffer, so
+       the len of the String will not equal the strlen of its char*.
+
+2002-08-07  Clinton Ebadi  <clinton@unknownlamer.org>
+
+       * source/DCCPerson.H: Removed destructor (I = idiot)
+
+       * source/DCCConnection.H: DCCManager is now a friend of
+       DCCConnection (ugh, the bot has way too many friends).
+
+       * source/DCCPerson.H: Added DCC member that returns a const
+       DCCConnection* (the dcc connection). This isn't saved anywhere
+       because when a DCCPerson is destroyed, its connection is also
+       destroyed.
+
+       * source/Bot.H: dccConnections is now a DCCManager
+
+       * source/DCCPerson.H: Added destructor
+       Added handleInput method
+
+       * source/DCCManager.C: New file
+       (addConnection): Wrote method, add a DCCConection to the manager
+
+       * source/DCCManager.H: New file
+
+       * source/Interp.C (Startup): Register bot:DCC-chat-send
+       (Startup): Removed sendDCCChatMessage stuff
+
+       * source/ScriptCommands.C (sendDCCChatMessage): New method:
+       sendDCCChatMessage (to, message) sends message to to.
+
+       * source/DCCConnection.C (connect): Run DCC_CHAT_BEGIN hook with
+       one arg: from (user!nick@host).
+
+       * source/DCCParser.C (parseLine): Runs DCC_CHAT_MESSAGE hook with
+       two args: from (user!nick@host) and line
+
+2002-08-06  Clinton Ebadi  <clinton@unknownlamer.org>
+
+       * source/Interp.C (Startup): Two new Scheme values:
+       hooks/dcc/chat-begin and hooks/dcc/chat-message for the
+       DCC_CHAT_BEGIN and DCC_CHAT_MESSAGE hooks.
+
+       * source/BotInterp.H: Added two new enum values to Hook:
+       DCC_CHAT_BEGIN and DCC_CHAT_MESSAGE for the DCC chat start and DCC
+       chat message hooks
+
 2002-08-05  Clinton Ebadi  <clinton@unknownlamer.org>
 
        * source/Parser.C (parseCTCP): Removed call to htonl and fixed
 2002-08-05  Clinton Ebadi  <clinton@unknownlamer.org>
 
        * source/Parser.C (parseCTCP): Removed call to htonl and fixed
        * source/Queue.C: Didn't notice iostream.h here! Fixed
 
 
        * source/Queue.C: Didn't notice iostream.h here! Fixed
 
 
-Copyright 2002 Clinton Ebadi
+Copyright 2002,2003,2004,2005 Clinton Ebadi
 Copying and distribution of this file, with or without modification, are
 permitted provided the copyright notice and this notice are preserved.
 Copying and distribution of this file, with or without modification, are
 permitted provided the copyright notice and this notice are preserved.