2008-11-11 Clinton Ebadi * source/Parser.C: GCC 4.x compilation fixes * source/ShitList.C: GCC 4.x compilation fixes * source/String.C: GCC 4.x compilation fixes * source/UserCommands.C: GCC 4.x compilation fixes * source/Channel.C: GCC 4.x compilation fixes 2007-11-08 Clinton Ebadi * configure.ac (LDFLAGS): Append GUILE_LDFLAGS to fix non-standard location builds (CXXFLAGS): Append GUILE_CFLAGS to fix non-standard location builds * guile.m4: Import guile.m4 (included in source tree since it doesn't change often and this will allow building on machines lacking a guile installation) * acinclude.m4: Fix underquoted AC_CPP macros Include guile.m4 rather than copying here 2007-10-05 Clinton Ebadi * source/Main.C (real_main): scm_eval_string debug initialization instead of setting the flags directly as they are no longer public in Guile 1.9.x 2006-06-28 Clinton Ebadi * Release: 2.2.2 * scripts/bobot-utils.scm (bot:load): Fixed loop logic so that directories other than the first entry in the load path are actually searched * scripts/uname: redelim -> rdelim * AUTHORS: Added Stelz to the Help by section * source/Bot.C (readConfig): If a logfile starting in / is found the logdir should be set to all but the last part of the filename, and the logfile set to the last part to avoid breaking script logging * scripts/bobot-utils.scm (bot:match-not-channel): Removed space in regex so it works on freenode again * scripts/bobot-utils.scm (bot:sent-to-me?): Rewritten to call bot:match-to-me when called and not when defined * source/Bot.C (Bot): Added argument to Interp::Startup2 * source/Interp.C (Startup2): Made to take a Bot as argument to avoid a segfault * source/Bot.C (Bot): Create BotInterp before running Interp::Startup2 () * Release: 2.2.1 * source/Bot.C (set_log_dir): Create directory if it doesn't exist (readConfig): Catch case of a line consisting of whitespace and don't print an error message 2006-02-03 Clinton Ebadi * source/Interp.C (Startup): Removed loading of bobot-utils.scm (Startup2): Load bobot-utils.scm here * source/Interp.H: Added Startup2 method * source/Bot.C (Bot): Call Interp::Startup2 * source/Main.C (main): Moved Interp::Startup call to after the Bot is created (main): Moved Interp::Startup back 2005-09-12 Clinton Ebadi * bobot++.texinfo (High Level Message Functions): Removed duplicate bot:say entry (Channel Control): Converted section to new format, and documented more commands 2005-08-07 Clinton Ebadi * bobot++.texinfo (Bot Control Commands): Convert to @deffn and documented commands (Built-In Commands): Clarified when the channel argument must be provided 2005-07-21 Clinton Ebadi * bobot++.texinfo: Removed all multitables and replaced them with lists 2005-07-07 Clinton Ebadi * bobot++.texinfo (Shit Levels): Added section (Scheme User Levels): Removed Section (Adding New Commands): Updated ref to Scheme User Levels to refer to the User Levels section, and changed a @code{} into a @{var} (Sending Messages): Rewrote section (High Level Message Functions): Merged bot:say and bot:msg sections (bot.users): Expanded section (bot.shit): Added section (bot.conf): Document initfile option (bot.shit): More detail (bot.users): More detail (bot.init): Added section (bot.conf): Documented autoexecfile option (bot.autoexec): Added section (Using the Bot): Added some intro text (Concepts): New section, all of the level sections are now subsections of this Merged small doc patch from dsmith (Channel Control): Added Section (User List Commands): Added Section (Spylist): Added Section (Message Commands): Added Section (Miscellaneous Commands): Added Section (Shit List Commands): Added Section (Channel Info): Added Section (Built-In Commands): Completely Reorganized section * source/Interp.C (interp_init_helper): Added bot:shit/none /no-ban, /no-kick, and /no-deop constants to Scheme * scripts/bobot-utils.scm (bot:sent-to-me?): Redefined as a closure (this should create the regexp once instead of each time the function is called) * examples/bot.autoexec: Updated sample bot.autoexec * examples/bot.users: Updated sample bot.users * examples/bot.conf: Updated sample config 2005-07-06 Clinton Ebadi * bobot++.texinfo (Sent Message Hooks): Documented hooks/send/who and hooks/send/whois * source/ServerQueue.C (sendWho): Call hooks/send/who (sendWhois): Call hooks/send/whois * source/Interp.C (interp_init_helper): Added hooks/send/who and hooks/send/whois constants to Scheme * source/BotInterp.H: Added SEND_WHO and SEND_WHOIS hook constants * bobot++.texinfo (Misc Scripting Stuff): Documented bot:who and bot:whois (bot.conf): Document MAXNICKLENGTH * source/Interp.C (interp_init_helper): Add bot:who and bot:whois bindings to Scheme * source/ScriptCommands.C (Who): Implemented Who method Removed IQUEUE macro (no longer needed) (Whois): Implemented Whois method * source/ScriptCommands.H: Added Who and Whois methods * source/Commands.C (Who): Implemented Who (Whois): Implemented Whois * source/Commands.H: Add Who and Whois tethods * source/Interp.C: Updated copyright notice (interp_init_helper): Remove send from CTCP/CTCPReply method names * source/Interp.H: Updated copyright notice * source/ScriptCommands.C (CTCP): Renamed from sendCTCP (CTCPReply): Renamed from sendCTCPReply 2005-07-05 Clinton Ebadi * bobot++.texinfo (Low Level Message Functions): Updated docs to reflect new names for ctcp functions * source/Interp.C (interp_init_helper): Register ScriptCommands::Notice instead of sendNotice (interp_init_helper): Renamed bot:send-ctcp to bot:ctcp (interp_init_helper): Renamed bot:send-ctcp-reply to bot:ctcp-reply * source/ScriptCommands.C (Notice): Renamed from sentNotice * source/ScriptCommands.H: Renamed sendNotice to Notice * bobot++.texinfo (Hook Types): Spelling fix 2005-07-04 Clinton Ebadi * scripts/bobot-utils.scm (_deprecated-fun): Set current-error-port to bot:logport while calling issue-deprecation-warning * bobot++.texinfo: Grammar fixes on the title page (Configuration): Added more info on config files. (bot.conf): Added xrefs for server syntax and channel syntax (server syntax): Added more detail and moved a paragraph (channel syntax): Added more details, revised the examples, and moved some text around (User Levels): Clarified (Protection): Cleaned up (Automatic Op): Improved substantially * source/DCCManager.C (checkInput): Call hooks/dcc/chat-end if the DCC CHAT has died * scripts/bobot-utils.scm (bot:log): Updated to use bot:logport instead of bot-logport * source/Interp.C (interp_init_helper): Add hooks/dcc/chat-end constant to Scheme * bobot++.texinfo (DCC CHAT Hooks): Document hooks/dcc/chat-end * source/BotInterp.H: Add DCC_CHAT_END to enum * source/DCCManager.C (checkStale): Run hooks/dcc/chat-end when deleting a stale connection. 2005-07-03 Clinton Ebadi * bobot++.texinfo (Hook Types): Documented all hooks * source/ServerQueue.C (sendPrivmsg): Changed SEND_MESSAGE hook to match dest and pass dest to send hook * bobot++.texinfo (Hook Types): Changed language of hooks/dcc/chat-* hook documention (Received Message Hooks): Added subsub section of Hook Types (Sent Message Hooks): Added subsub section of Hook Types (DCC CHAT Hooks): Added subsub section of Hook Types (Miscellaneous Hooks): Added subsub section of Hook Types * source/Parser.C (parseScriptFunction): Changed lazy_apply_wrapper to Interp::LazyApplyWrapper (parseScriptFunction): Changed empty_handler to Interp::EmptyHandler (parsePart): Grammar fix in log (Leaved => Left) * source/Interp.H (Interp): Added LazyHandler method * source/BotInterp.C (RunHooks): changed lazy_apply_wrapper to Interp::LazyApplyWrapper (RunTimers): Changed empty_handler to Interp::EmptyHandler (RunHooks): Changed empty_handler to Interp::EmptyHandler (RunTimers): Changed lazy_apply_wrapper to Interp::LazyApplyWrapper * source/Interp.C (LazyHandler): Renamed from lazy_handler (ScmApplyWrapper): Renamed from scm_apply_wrapper (EmptyHandler): Renamed from empty_handler * source/Interp.H (Interp): Removed ErrorHandler method (Interp): Added LazyApplyWrapper method (Interp): Added EmptyHandler method (Interp): Added ScmApplyWrapper method * scripts/bobot-utils.scm: Added hooks/leave as an alias for hooks/part Added begin-deprecated around deprecated definitions (_deprecated-fun): Added macro to define an alias for a function and issue a deprecation warning when used Converted all bot- aliases to use _deprecated-fun * source/Interp.C (interp_init_helper): Changed Hook::LEAVE to Hook::PART (interp_init_helper): Removed definition of hooks/leave * bobot++.texinfo (Hook Types): Removed stub for hooks/leave, only document hooks/part name (hooks/leave still exists, but will not be documented as it is the same as hooks/part) * source/Parser.C (parsePart): Use Hook::PART instead of Hook::LEAVE * source/BotInterp.H: Removed Hook::LEAVE, added Hook::PART * bobot++.texinfo (Scripting): Added note about most arguments being strings * source/Commands.C (NextServer): Call hooks/disconnect * source/Bot.C (run): Pass extra argument to Hook::DISCONNECT * bobot++.texinfo (Creating a Hook): Reformatted the bot:addhook section to make it more readable (Hook Types): Reformatted hooks/action (Hook Types): Changed grammar of hooks/nickname (their => his) (Hook Types): Documented hooks/signoff 2005-06-29 Clinton Ebadi * bobot++.texinfo: Updated copyright years, changed "applies to 2.1.5" to 2.2 * source/Socket.C (readLine): return buf.substr (0, pos) instead of using the String char * constructor (this should be faster, especially for long strings since a simple copy is used instead of going over each char until nul is encountered) * configure.ac: Release 2.1.8 Change version to 2.1.9CVS * source/Parser.C: Include Commands.H (fixes --disable-scripting build) * source/Bot.C (Bot): Fix to make a --disable-scripting build work * bobot++.texinfo (Configuration): Swapped order of config file placement and config files (User Levels): users not found in the user list *can* execute commands as bot:user-none now. (Low Level Message Functions): Changed a few @code{}s to @var{}s 2005-06-28 Clinton Ebadi * bobot++.texinfo: @vskip Opt... => @vskip 0pt... * source/Main.C (namespace): Added debug-scripts option * source/Parser.C (parseCTCP): Hook::ACTION is now passed from->getNick () instead of from->getAddress () (consistency fix) * source/Main.C: Merged error handling patch from dsmith * source/Parser.C: Merged error handling patch from dsmith * source/Interp.H: Merged error handling patch from dsmith * source/Interp.C (lazy_handler): Merged error handling patch from dsmith * source/BotInterp.H: Merged error handling patch from dsmith * source/BotInterp.C: Merged error handling patch from dsmith * bobot++.texinfo (Low Level Message Functions): Documented bot:send-ctcp-reply * source/Parser.C (parseCTCP): Converted to use Commands::CTCPReply * source/Interp.C (interp_init_helper): Bound bot:send-ctcp-reply in scheme * bobot++.texinfo (Low Level Message Functions): s/bot:send-CTCP/bot:send-ctcp/ * source/Interp.C (interp_init_helper): Renamed bot:send-CTCP to bot:send-ctcp * source/ScriptCommands.H: Uncommented sendCTCPReply prototype * source/ScriptCommands.C (sendCTCP): Convert to use Commands::CTCP (sendCTCPReply): Added * source/Parser.C (parseJoin): Convert to use Commands::CTCP * source/Commands.C (CTCP): Implemented (CTCPReply): Implemented (Action): Convert to use Commands::CTCP * source/Commands.H: Added CTCP (bot, target, command, message) Added CTCPReply (bot, target, command, message) 2005-06-27 Clinton Ebadi * examples/bot.conf (maxnicklength): Update example config * source/Utils.C (valid_nickname_p): Use b->MAX_NICKLENGTH * source/Bot.C (readConfig): Look for MAXNICKLENGTH parameter * source/Bot.H: Added MAX_NICKLENGTH member * source/Utils.H (valid_nickname_p): Now takes Bot* as first argument * source/Commands.C (Msg): Send multiple PRIVMSGs when a message is multiple lines * source/UserCommands.C (SetVersion): Convert to use Commands::Notice * source/Commands.C (Notice): Send multiple NOTICEs when a message is multiple lines 2005-06-25 Clinton Ebadi * source/Main.C (real_main): Enable Guile debugging mode when --debug is used * source/Interp.C (interp_post_startup_helper): Return SCM_UNSPECIFIED instead of 0 2005-06-24 Clinton Ebadi * All: Updated FSF street address * source/Commands.C (Msg): Move body of Say to an if inside of this (Say): Just call Msg * 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 * 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 * bobot++.texinfo: Change @vskip 0 to @vskip 0pt to make this work again (thanks dsmith) 2005-06-01 Clinton Ebadi * 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 * 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 * configure.ac: Release 2.1.6 Changed version to 2.1.7CVS 2005-02-28 Clinton Ebadi * 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 (trim_str): Appled patch from Jos Hulzink (fixes counters and substr call) * source/StringTokenizer.C (next_token): Applied patch from Jos Hulzink (fixes substr call) (rest): Applied patch from Jos Hulzink (fixes substr call) 2005-02-27 Clinton Ebadi * 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 * configure.ac: Remove CC++ test Changed version to 2.1.6CVS (2.1.5 released) * bobot++.texinfo: Updated copyright 2005-01-16 Clinton Ebadi * 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 * 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 * 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 * 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 * 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 * source/BotConfig.C (set_option_value): call watcher list (run_fun_): Added to support watcher list calling 2005-01-06 Clinton Ebadi * 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 * source/BotConfig.C (read_config): Implemented properly (get_option_values): Implemented properly (set_config_file): Fixed 2004-07-10 Clinton Ebadi * bobot++.texinfo (Built-In Commands): Added empty stubs to the list of commands 2004-06-22 Clinton Ebadi * source/BotConfig.C: New file (implementation of configuration database) * source/BotConfig.H: New File (semi-generic configuration database) 2004-06-17 Clinton Ebadi * bobot++.texinfo (Starting the Bot): New section 2004-06-14 Clinton Ebadi * bobot++.texinfo (Protection): Added Section (User Levels): Rewrote section to be useful (bot.users): Added section 2004-06-12 Clinton Ebadi * 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 * 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 * source/Main.C (real_main): std::exit instead of exit 2004-05-12 Clinton Ebadi * source/DCCConnection.C (DCCConnection): Intialized `nuh' in the constructor with `n' This should fix the segfaulting. 2004-01-28 Clinton Ebadi * ChangeLog: Updated copyright notice 2004-01-09 Clinton Ebadi * 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 * source/String.H: Changed #define STRING_H to BSTRING_H 2003-08-04 Clinton Ebadi * 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 * source/Socket.C (connect): log errors to the bot log instead of printing to stderr 2003-07-23 Clinton Ebadi * 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 * 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 * configure.ac: Merged all AC_OUTPUTs at the end 2003-04-02 Clinton Ebadi * 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 * 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 * 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 * source/Mask.C (match): Made Mask::match case insensitive 2002-09-23 Clinton Ebadi * 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 * configure.ac: Removed arguments to AM_INIT_AUTOMAKE and updated everything to use aclocal/automake 1.6 2002-08-27 Clinton Ebadi * 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 * 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 * 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 * 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 * 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 * source/Parser.C (parseCTCP): Removed call to htonl and fixed DCC! Ack, sockets take their arguments in network byte order so there is no need to convert to host...now DCC _sort of_ works. 2002-08-04 Clinton Ebadi * source/UserList.C (save): Increment iterator twice to get around bug (see BUGS #2) * source/ServerQueue.C: Now sends SEND_* hooks instead of triggered general hooks. * source/Interp.C (Startup): New scheme side defines: hooks/send/* (* = the new SEND_ hooks, but lowercase). * source/BotInterp.H: New hook types (SEND_..., ... = ACTION, CTCP, PUBLIC, MESSAGE). These are triggered on send messages. 2002-08-01 Clinton Ebadi * source/Bot.C (set_log_file): Oops! Fixed logging. Now the bot logs again. * source/Socket.C (readLine): Now uses a static std::string that starts out with 512 chars. This will never need to be resized for usualy IRC messages, but might be for DCC messages 2002-07-31 Clinton Ebadi * scripts/bobot-utils.scm (not-from-me): New syntax. * source/ScriptCommands.C (AddHook): Now takes another optional arg--name that will name the hook (see the hooks section in the manual for what this does). * source/BotInterp.H: Added name field to Hook 2002-07-29 Clinton Ebadi * source/ServerQueue.C (sendPrivmsg): Now calls hooks on own PRIVMSGes because the IRC server doesn't echo them back to the bot. This could be useful for something (e.g. log script). 2002-07-27 Clinton Ebadi * source/Interp.C (Shutdown): Runs bot:exit-hook hooks (Startup): New var for Scheme: bot:exit-hook. Calls the thunks associated with the hook when Interp::Shutdown is called (bot exit). 2002-07-23 Clinton Ebadi * source/BotInterp.H (Hook<): Changed behavior of Hook's <. If a hook is greater than or less than the other hook, only the priority is considered. However, if both hooks have the same priority, then the fallthru-ness is considered, with fallthru hooks being greater than non-fallthru hooks. * source/BotInterp.C (hptr_lt): Added this static function to be used to sort the hooks list (now hooks should be sorted using Hook's operator < instead of using pointer comparision, meaning the new hook system will work correctly) * scripts/bobot-utils.scm: Make bot:log use for-each instead of map because we don't need the result of the displays (this would just be a list of # values and is a waste of memory). 2002-07-13 Clinton Ebadi * source/Bot.C (Bot): userFunctions is now a map for efficiency (worst case search is now NlogN instead of N). This improvement is not as drastic as the one gained by making the Parser functions list a map (because we don't scan this map for every message), but it helps to clean up the code 2002-07-12 Clinton Ebadi * source/Parser.H: Removed userFunctionsStruct * source/Interp.C (Startup): ScriptCommands::sendCTCP registered as bot:send-CTCP for Scheme * source/ScriptCommands.C (sendCTCP): Wrote sendCTCP 2002-07-11 Clinton Ebadi * source/ServerQueue.C (sendUser): Changed . . in USER command to 0 * (which is the Right Way to because must be a number...) * source/Parser.C (init): New method of Parse. This initalizes the functions map. functions replaces the old functions array, and should yield better performance (since the functions array had to be scanned for every incoming message) * source/Parser.H: New member, functions (private) 2002-07-10 Clinton Ebadi * source/Interp.C (Startup): New symbols: bot:user-* [none|user|trusted|friend|master] are defined in Scheme as the different levels of the users. (Startup): All bot-* variables are now bot:* 2002-07-09 Clinton Ebadi * source/Bot.H: Made some variables private because they shouldn't be changed at runtime * source/Parser.C (parseCTCP): Reneabled DCC CHAT (I want to test this out to see if it works and make it work) * source/Bot.C (Bot::Bot): New var: logs_dir. Set to the log file dir. * scripts/bobot-utils.scm: Fixed a typo (I forgot the / after scripts in the user scripts dir) that made bobot++ not able to load scripts from the user scripts dir 2002-07-08 Clinton Ebadi * source/BotInterp.C (RunHooks): Changed iterators to reverse_iterators because the hooks list is sorted in ascending order--higher priority and fallthrough hooks appear _after_ the lower priority and non-fallthrough hooks. * source/Main.C (print_long_help): Added function (print_short_help): Renamed from printUsage (namespace): Most stuff in here is now defined in an anonymouse namespace so it doesn't have external linkage (real_main): Uses getopt_long instead of getopt. Added several command line arguments (bobotpp --help for a full list). * scripts/bobot-utils.scm (bot-load): Function moved from bobot-scheme.scm * source/Interp.C (Startup): Autoloads PREFIX/bobotpp/scripts/bobot-utils.scm now (Startup): New Scheme variable: bot-sys-scripts-dir (system scripts dir) * source/bobot-scheme.scm.in: Removed * source/Makefile.am: Removed bobot-scheme.scm compiliation * configure.ac (PREFIX): configure.ac defined prefix now * source/Main.C (real_main): Default configuration is now read from /etc/bobotpp/default * source/bobot-scheme.scm.in: Added file. This defines the 'bot-load' procedure which will load a file from $HOME/.bobotpp/scripts/ or @datadir@/bobotpp/scripts/ if the script doesn't exist in the user script dir. 2002-07-01 Clinton Ebadi * bobot++.texinfo: Started docs (just a skeleton right now) * source/ScriptCommands.C (AddHook): Now takes pri and fall opt args to set a hooks priority and whether or not it will fallthrough. These args are optional. * source/Interp.C (Startup): addhook now takes 3 req and 2 opt args * source/BotInterp.C (AddHook): Now uses priority and fallthrough (RunHooks): exec fallthrough hooks first. * source/BotInterp.H: Changed Hooks to have priority Added fhooksMap to BotInterp (fallthrough) * source/UserCommands.C (AddShit): Converted to use Commands 2002-06-21 Clinton Ebadi * source/Commands.C (AddUser): Fixed a one-off (function call was before a brace instead of after one) that caused a segfault when the user mask was a wildcard 2002-06-20 Clinton Ebadi * all files: Updated address of the FSF * source/UserCommands.C (AddUser): Uses Commands now instead of manipulating the bot directly 2002-06-18 Clinton Ebadi * source/ScriptCommands.C (AddShit): Filled in function. * source/Interp.C (Startup): Bind bot-adduser to ScriptCommands::AddUser instead of Action (Startup): Bind bot-addshit to ScriptCommands::AddShit * source/ScriptCommands.C (AddUser): Filled in function * source/ServerList.C (delServer): Changed (n - 1) to n...n-1 would have caused problems if you used more than one server * source/Parser.H: Changed const char* to String in userFunctionStruct * source/String.H: Added std::string compatibility members * configure.ac: You can now disable Crypt and scripting * source/*: Added #include "config.h" where needed * configure.ac: Added AM_CONFIG_HEADER * config.h.in: added file * source/Queue.C: Didn't notice iostream.h here! Fixed Copyright 2002,2003,2004,2005,2006,2007 Clinton Ebadi Copying and distribution of this file, with or without modification, are permitted provided the copyright notice and this notice are preserved.