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 Clinton Ebadi Copying and distribution of this file, with or without modification, are permitted provided the copyright notice and this notice are preserved.