[project @ 2005-07-04 21:44:00 by unknown_lamer]
[clinton/bobotpp.git] / ChangeLog
1 2005-07-04 Clinton Ebadi <clinton@unknownlamer.org>
2
3 * bobot++.texinfo: Grammar fixes on the title page
4 (Configuration): Added more info on config files.
5 (bot.conf): Added xrefs for server syntax and channel syntax
6 (server syntax): Added more detail and moved a paragraph
7 (channel syntax): Added more details, revised the examples, and
8 moved some text around
9 (User Levels): Clarified
10 (Protection): Cleaned up
11 (Automatic Op): Improved substantially
12
13 * source/DCCManager.C (checkInput): Call hooks/dcc/chat-end if the
14 DCC CHAT has died
15
16 * scripts/bobot-utils.scm (bot:log): Updated to use bot:logport
17 instead of bot-logport
18
19 * source/Interp.C (interp_init_helper): Add hooks/dcc/chat-end
20 constant to Scheme
21
22 * bobot++.texinfo (DCC CHAT Hooks): Document hooks/dcc/chat-end
23
24 * source/BotInterp.H: Add DCC_CHAT_END to enum
25
26 * source/DCCManager.C (checkStale): Run hooks/dcc/chat-end when
27 deleting a stale connection.
28
29 2005-07-03 Clinton Ebadi <clinton@unknownlamer.org>
30
31 * bobot++.texinfo (Hook Types): Documented all hooks
32
33 * source/ServerQueue.C (sendPrivmsg): Changed SEND_MESSAGE hook to
34 match dest and pass dest to send hook
35
36 * bobot++.texinfo (Hook Types): Changed language of
37 hooks/dcc/chat-* hook documention
38 (Received Message Hooks): Added subsub section of Hook Types
39 (Sent Message Hooks): Added subsub section of Hook Types
40 (DCC CHAT Hooks): Added subsub section of Hook Types
41 (Miscellaneous Hooks): Added subsub section of Hook Types
42
43 * source/Parser.C (parseScriptFunction): Changed
44 lazy_apply_wrapper to Interp::LazyApplyWrapper
45 (parseScriptFunction): Changed empty_handler to Interp::EmptyHandler
46 (parsePart): Grammar fix in log (Leaved => Left)
47
48 * source/Interp.H (Interp): Added LazyHandler method
49
50 * source/BotInterp.C (RunHooks): changed lazy_apply_wrapper to
51 Interp::LazyApplyWrapper
52 (RunTimers): Changed empty_handler to Interp::EmptyHandler
53 (RunHooks): Changed empty_handler to Interp::EmptyHandler
54 (RunTimers): Changed lazy_apply_wrapper to Interp::LazyApplyWrapper
55
56 * source/Interp.C (LazyHandler): Renamed from lazy_handler
57 (ScmApplyWrapper): Renamed from scm_apply_wrapper
58 (EmptyHandler): Renamed from empty_handler
59
60 * source/Interp.H (Interp): Removed ErrorHandler method
61 (Interp): Added LazyApplyWrapper method
62 (Interp): Added EmptyHandler method
63 (Interp): Added ScmApplyWrapper method
64
65 * scripts/bobot-utils.scm: Added hooks/leave as an alias for hooks/part
66 Added begin-deprecated around deprecated definitions
67 (_deprecated-fun): Added macro to define an alias for a function
68 and issue a deprecation warning when used
69 Converted all bot- aliases to use _deprecated-fun
70
71 * source/Interp.C (interp_init_helper): Changed Hook::LEAVE to
72 Hook::PART
73 (interp_init_helper): Removed definition of hooks/leave
74
75 * bobot++.texinfo (Hook Types): Removed stub for hooks/leave, only
76 document hooks/part name (hooks/leave still exists, but will not
77 be documented as it is the same as hooks/part)
78
79 * source/Parser.C (parsePart): Use Hook::PART instead of Hook::LEAVE
80
81 * source/BotInterp.H: Removed Hook::LEAVE, added Hook::PART
82
83 * bobot++.texinfo (Scripting): Added note about most arguments
84 being strings
85
86 * source/Commands.C (NextServer): Call hooks/disconnect
87
88 * source/Bot.C (run): Pass extra argument to Hook::DISCONNECT
89
90 * bobot++.texinfo (Creating a Hook): Reformatted the bot:addhook
91 section to make it more readable
92 (Hook Types): Reformatted hooks/action
93 (Hook Types): Changed grammar of hooks/nickname (their => his)
94 (Hook Types): Documented hooks/signoff
95
96 2005-06-29 Clinton Ebadi <clinton@unknownlamer.org>
97
98 * bobot++.texinfo: Updated copyright years, changed "applies to
99 2.1.5" to 2.2
100
101 * source/Socket.C (readLine): return buf.substr (0, pos) instead
102 of using the String char * constructor (this should be faster,
103 especially for long strings since a simple copy is used instead of
104 going over each char until nul is encountered)
105
106 * configure.ac: Release 2.1.8
107 Change version to 2.1.9CVS
108
109 * source/Parser.C: Include Commands.H (fixes --disable-scripting build)
110
111 * source/Bot.C (Bot): Fix to make a --disable-scripting build work
112
113 * bobot++.texinfo (Configuration): Swapped order of config file
114 placement and config files
115 (User Levels): users not found in the user list *can* execute
116 commands as bot:user-none now.
117 (Low Level Message Functions): Changed a few @code{}s to @var{}s
118
119 2005-06-28 Clinton Ebadi <clinton@unknownlamer.org>
120
121 * bobot++.texinfo: @vskip Opt... => @vskip 0pt...
122
123 * source/Main.C (namespace): Added debug-scripts option
124
125 * source/Parser.C (parseCTCP): Hook::ACTION is now passed
126 from->getNick () instead of from->getAddress () (consistency fix)
127
128 * source/Main.C: Merged error handling patch from dsmith
129
130 * source/Parser.C: Merged error handling
131 patch from dsmith
132
133 * source/Interp.H: Merged error handling patch from dsmith
134
135 * source/Interp.C (lazy_handler): Merged error handling patch from
136 dsmith
137
138 * source/BotInterp.H: Merged error handling patch from dsmith
139
140 * source/BotInterp.C: Merged error handling patch from dsmith
141
142 * bobot++.texinfo (Low Level Message Functions): Documented
143 bot:send-ctcp-reply
144
145 * source/Parser.C (parseCTCP): Converted to use Commands::CTCPReply
146
147 * source/Interp.C (interp_init_helper): Bound bot:send-ctcp-reply
148 in scheme
149
150 * bobot++.texinfo (Low Level Message Functions):
151 s/bot:send-CTCP/bot:send-ctcp/
152
153 * source/Interp.C (interp_init_helper): Renamed bot:send-CTCP to
154 bot:send-ctcp
155
156 * source/ScriptCommands.H: Uncommented sendCTCPReply prototype
157
158 * source/ScriptCommands.C (sendCTCP): Convert to use Commands::CTCP
159 (sendCTCPReply): Added
160
161 * source/Parser.C (parseJoin): Convert to use Commands::CTCP
162
163 * source/Commands.C (CTCP): Implemented
164 (CTCPReply): Implemented
165 (Action): Convert to use Commands::CTCP
166
167 * source/Commands.H: Added CTCP (bot, target, command, message)
168 Added CTCPReply (bot, target, command, message)
169
170 2005-06-27 Clinton Ebadi <clinton@unknownlamer.org>
171
172 * examples/bot.conf (maxnicklength): Update example config
173
174 * source/Utils.C (valid_nickname_p): Use b->MAX_NICKLENGTH
175
176 * source/Bot.C (readConfig): Look for MAXNICKLENGTH parameter
177
178 * source/Bot.H: Added MAX_NICKLENGTH member
179
180 * source/Utils.H (valid_nickname_p): Now takes Bot* as first argument
181
182 * source/Commands.C (Msg): Send multiple PRIVMSGs when a message
183 is multiple lines
184
185 * source/UserCommands.C (SetVersion): Convert to use Commands::Notice
186
187 * source/Commands.C (Notice): Send multiple NOTICEs when a message
188 is multiple lines
189
190 2005-06-25 Clinton Ebadi <clinton@unknownlamer.org>
191
192 * source/Main.C (real_main): Enable Guile debugging mode when
193 --debug is used
194
195 * source/Interp.C (interp_post_startup_helper): Return
196 SCM_UNSPECIFIED instead of 0
197
198 2005-06-24 Clinton Ebadi <clinton@unknownlamer.org>
199
200 * All: Updated FSF street address
201
202 * source/Commands.C (Msg): Move body of Say to an if inside of this
203 (Say): Just call Msg
204
205 * source/ScriptCommands.C (sendNotice): Returns error code instead
206 of just #t or #f
207
208 * source/Commands.C (Say): Check to make sure target is a channel
209 (Msg): Extended to send messages to channels
210
211 2005-06-23 Clinton Ebadi <clinton@unknownlamer.org>
212
213 * scripts/bot.scm: Added file ((bobotpp bot) module for other
214 modules to gain access to bobot++ interface)
215
216 * source/Commands.C (Notice): Commented out check/abort if target
217 is a channel (there doesn't seem to be a reason for this to not work)
218
219 * source/Interp.C (interp_init_helper): Register bot:notice with scheme
220
221 * bobot++.texinfo (High Level Message Functions): Document bot:notice
222
223 * source/Message.H: Added operator== to Message (tests for error
224 code equality)
225
226 * source/Commands.C: Removed message type macros
227
228 * source/Message.H: Moved message type macros to Message.H
229
230 * source/ScriptCommands.C (sendNotice): Implemented sendNotice
231
232 * source/ScriptCommands.H: Uncomment sendNotice
233
234 * source/Bot.C (waitForInput): Use %02d when formatting
235 Hooks::TIMER argument instead of %2d, and switch to snprintf to
236 enforce max length
237
238 * bobot++.texinfo (Hooks): Clarified intro text about hooks (order
239 of processing).
240
241 * source/Bot.C (run): Added call to Hooks::DISCONNECT
242 (hooks/disconnect) when the bot is disconnected from the server
243
244 * bobot++.texinfo: Applied documentation patch from Dale P. Smith
245 (Hook Types): Added hooks/disconnect argument
246
247 2005-06-06 Clinton Ebadi <clinton@unknownlamer.org>
248
249 * bobot++.texinfo: Change @vskip 0 to @vskip 0pt to make this work
250 again (thanks dsmith)
251
252 2005-06-01 Clinton Ebadi <clinton@unknownlamer.org>
253
254 * source/Interp.C (interp_init_helper): Added
255 bot:protection/[none|ban|kick|deop] constants to Scheme
256 (interp_init_helper): Added bot:aop/[yes|no] constants
257
258 2005-05-31 Clinton Ebadi <clinton@unknownlamer.org>
259
260 * configure.ac: Release Bobot++ 2.1.7
261 Changed version to 2.18.CVS
262
263 * source/UserList.C (save): Remove workaround for BUG #2
264
265 * source/Parser.C (parse001): make realNick lowercase when doing
266 the comparison to bot->nickName to prevent pushing a second copy
267 of the bot onto the userlist (closes BUG #2)
268
269 * source/Bot.C (Bot): cleaned up constructor
270 (waitForInput): replaced gh_list with scm_list_n
271
272 * source/UserList.C: Cleaned up some formatting
273
274 * source/Main.C: Formatted code more cleanly
275 (real_main): changed a few Strings to std::strings
276
277 * source/String.C (operator): Made index signed again, it's not
278 worth fixing this warning
279
280 * source/Bot.C: Add casts to make this compile with unsigned int
281 as operator[] in String
282
283 * source/String.C (operator): Made index unsigned
284
285 * source/Utils.C: Made a few things unsigned to kill warnings
286
287 * source/Socket.C (readLine): Made pos unsigned
288
289 * source/Bot.C (Bot): Fixed initializer list order to kill warnings
290
291 * source/BotInterp.C (RunTimers): Removed unused variable (Timer *t)
292
293 * source/StringTokenizer.C (count_tokens): Changed return type to
294 unsigned int
295 (more_tokens_p): Made counter unsigned
296
297 * source/StringTokenizer.H (class StringTokenizer): Made pos
298 std::string::size_type instead of int
299
300 * source/Commands.C (TBan): Returns Ok is the ban is done instead
301 of falling off the end (oops)
302
303 * source/BotInterp.H: Add general catch case (false)
304
305 2005-03-11 Clinton Ebadi <clinton@unknownlamer.org>
306
307 * configure.ac: Release 2.1.6
308 Changed version to 2.1.7CVS
309
310 2005-02-28 Clinton Ebadi <clinton@unknownlamer.org>
311
312 * source/Parser.C (parseLine): use map<>::find and an iterator to
313 find the IRC command instead of map<>::operator[] to avoid a
314 potential segfault
315
316 * source/Bot.C (waitForInput): Removed commented out code
317
318 * source/Socket.C (readLine): return String (buf.c_str ()) instead
319 of String (buf) so that only the buffer up to the first null is returned
320 (readLine): Added a comment explaining the usage of buf
321 (readLine): Changed type of length (std::string::size_type instead
322 of std::size_t)
323
324 * source/String.C: Reimplemented String on top of std::string to
325 fix a few bugs and potential memory leaks
326 (toLower): use Utils::to_lower
327 (toUpper): Use Utils::to_upper
328 (trim): Use Utils::trim_str
329
330 * source/String.H: removed srep, replaced it with a std::string (my_string)
331
332 * source/Utils.C (to_upper): Applied patch from Jos Hulzink
333 <josh@stack.nl>
334 (trim_str): Appled patch from Jos Hulzink <josh@stack.nl> (fixes
335 counters and substr call)
336
337 * source/StringTokenizer.C (next_token): Applied patch from Jos
338 Hulzink <josh@stack.nl> (fixes substr call)
339 (rest): Applied patch from Jos Hulzink <josh@stack.nl> (fixes
340 substr call)
341
342 2005-02-27 Clinton Ebadi <clinton@unknownlamer.org>
343
344 * source/Bot.H (COPYRIGHT_STRING): Remove Michael Wilson because
345 he is a lazy bum and never submitted the String replacing patch
346
347 2005-01-23 Clinton Ebadi <clinton@unknownlamer.org>
348
349 * configure.ac: Remove CC++ test
350 Changed version to 2.1.6CVS (2.1.5 released)
351
352 * bobot++.texinfo: Updated copyright
353
354 2005-01-16 Clinton Ebadi <clinton@unknownlamer.org>
355
356 * TODO (General): Added TODO items
357 (2.2): Moved a few items here from 2.4
358
359 * README (NOTE): Mention boost requirement
360
361 2005-01-13 Clinton Ebadi <clinton@unknownlamer.org>
362
363 * ChangeLog Updated copryight
364
365 * source/User.H: Removed forward declaration of Utils
366
367 * source/Bot.H: Removed forward declaration of Utils
368
369 * source/ChannelList.H: Removed forward declaration of Utils
370
371 * source/UserListItem.H: Removed forward declaration of Utils
372
373 * source/Utils.H: Removed class Utils, replaced with a namspace
374 (it only contained static methods)
375
376 * source/Bot.H (COPYRIGHT_STRING): Added 2005 and Michael Wilson
377 (he is replacing String)
378
379 2005-01-12 Clinton Ebadi <clinton@unknownlamer.org>
380
381 * source/BotConfig.C (set_option_value): Put watcher calling
382 inside of if (cf_iter != end()) to fix a segfault (if the cf_iter
383 = end then there are no watchers since this is a new value and
384 references cf_iter->second segfaults)
385
386 * source/Utils.C (trim_str): Fixed bug (last non-space character
387 was being cut off)
388
389 * source/BotConfig.C (read_config): Made to use set_option_value
390 instead of manipulating options_db directly
391
392 * source/BotConfig.H (class BotConfig): Add set_option_value that
393 takes a t_value instead of t_value_list (most uss of
394 set_option_value will be to add a single value so this is very useful)
395
396 * source/BotConfig.C (set_option_value): Implemented
397
398 * source/UserList.C: Made to work with new Utils/StringTokenizer names
399
400 * source/UserCommands.C: Made to work with new
401 Utils/StringTokenizer names
402
403 * source/ShitList.C: Uses Utils.H now (Utils::trim_str & friends)
404
405 2005-01-11 Clinton Ebadi <clinton@unknownlamer.org>
406
407 * source/ShitList.C: Made to work with new StringTokenizer names
408
409 * source/ServerQueueItem.C: Made to work with new StringTokenizer names
410
411 * source/ServerQueue.C: Made to work with new Utils names
412
413 * source/ScriptCommands.C: Made work with new Utils names
414
415 * source/Person.C (getNick): Made work with new Utils names
416
417 * source/String.H: Added substr prototypes
418
419 * source/String.C (substr): Added substr as an alias of subString
420 (for compat with std::string before the transition)
421
422 * source/Parser.C: Made to work with new Utils/StringTokenizer names
423
424 * source/DCCParser.C: Made to work with new Utils names
425
426 * source/DCCChatConnection.C: Made to work new Utils names
427
428 * source/Commands.C: Made to work with new Utils names
429
430 * source/Channel.C: Made to work with new Utils names
431
432 * source/BotInterp.C: Made to work with new Utils
433
434 * source/Bot.C: Made to work with new Utils/StringTokenizer names
435
436 * source/String.C (operator=): Unremoved operator=(std::string)
437
438 * source/String.H: Unremoved operator=(std::string)
439
440 * source/BotConfig.C (read_config): Use Utils::trim_str
441
442 * source/String.C (trim): Fixed bug (p->s[i] == '\r', s/i/j/)
443
444 * source/Utils.C (trim_str): Implemented
445
446 * source/Utils.H: Added tim_str (replaces String::trim)
447
448 * source/BotConfig.C: Made everything work with new
449 StringTokenizer and Utils names
450
451 * source/Utils.H: Added to_lower
452 Added to_upper
453
454 * source/StringTokenizer.C (rest): uses std::isspace instead of
455 checking st[pos] against ' ' and '\t'
456
457 * source/StringTokenizer.H: Removed CamelCasing
458 Renamed hasMoreTokens to more_tokens_p
459
460 * source/StringTokenizer.C: Converted to use std::string
461
462 * source/StringTokenizer.H: Converted to use std::string
463
464 * source/String.C: Removed operator=(std::string)
465
466 * source/String.H: Removed operator=(std::string)
467
468 * source/Utils.C: Added copyright
469 Reformatted to match GNU coding standard more closely
470 Converted everything to use std::string
471 (get_nick): Renamed from getNick
472 (get_userhost): Renamed from getUserHost
473 (get_key): Renamed from getKey
474 (IP_p): Renamed from isIP
475 (make_wildcard): Renamed from makeWildcard
476 (channel_p): Renamed from isChannel
477 (wildcard_p): Renamed from isWildcard
478 (valid_channel_name_p): Renamed from isValidChannelName
479 (valid_nickname_p): Renamed from isValidNickName
480 (get_level): Renamed from getLevel
481 (str2time): Renamed from strToTime
482 (str2time): Fixed potential buffer overflow (num[512] => std::string)
483 (level2str): Renamed from levelToStr
484 (prot2str): Renamed from protToStr
485 (bool2str): Renamed from boolToStr
486 (long2str): Implemented
487 (scm2str): Renamed from scm2String
488 (str2scm): Renamed from string2SCM
489
490 * source/BotConfig.C: Reformatted to fit GNU coding style more closely
491
492 * source/Utils.H: Added long2str (long int -> std::string)
493
494 * source/String.H: Added 2003 copyright (the year I last modified
495 it in)
496
497 * source/String.C: Added 2002 copyright (the year I last modified
498 it in)
499
500 * source/Utils.H: Updated Copyright
501 s/String/std::string/g
502 Removed camel casing and is* = *_p
503 xToY = x2y
504
505 * source/BotConfig.C: Updated Copyright
506
507 * source/BotConfig.H: Updated copyright
508
509 2005-01-08 Clinton Ebadi <clinton@unknownlamer.org>
510
511 * source/BotConfig.C (set_option_value): Take care of the case
512 where key is not already in the db
513 (add_watcher): Implemented
514 (read_config): Removed ',' token parsing (not needed)
515
516 * configure.ac: Add AC_LANG([C++]) so we can check for C++ libs
517 AC_CHECK_LIB ccgnu2 (CommonC++2)
518
519 * README: Updated README (reformatted, adding info, etc.)
520
521 2005-01-07 Clinton Ebadi <clinton@unknownlamer.org>
522
523 * source/BotConfig.C (set_option_value): call watcher list
524 (run_fun_): Added to support watcher list calling
525
526 2005-01-06 Clinton Ebadi <clinton@unknownlamer.org>
527
528 * source/BotConfig.C (set_option_value): Fuck you STL
529 (push_back_): Reimplemented so that it doesn't need std::bind1st
530 because the STL is being stupid
531
532 2004-12-26 Clinton Ebadi <clinton@unknownlamer.org>
533
534 * source/BotConfig.C (read_config): Implemented properly
535 (get_option_values): Implemented properly
536 (set_config_file): Fixed
537
538 2004-07-10 Clinton Ebadi <clinton@unknownlamer.org>
539
540 * bobot++.texinfo (Built-In Commands): Added empty stubs to the
541 list of commands
542
543 2004-06-22 Clinton Ebadi <clinton@unknownlamer.org>
544
545 * source/BotConfig.C: New file (implementation of configuration database)
546
547 * source/BotConfig.H: New File (semi-generic configuration database)
548
549 2004-06-17 Clinton Ebadi <clinton@unknownlamer.org>
550
551 * bobot++.texinfo (Starting the Bot): New section
552
553 2004-06-14 Clinton Ebadi <clinton@unknownlamer.org>
554
555 * bobot++.texinfo (Protection): Added Section
556 (User Levels): Rewrote section to be useful
557 (bot.users): Added section
558
559 2004-06-12 Clinton Ebadi <clinton@unknownlamer.org>
560
561 * source/DCCChatConnection.C (connect): Checks to make sure the
562 person initiating a DCC CHAT with the bot is at least a FRIEND of
563 the bot.
564
565 * README: Fixed a typo
566
567 * scripts/bobot-utils.scm (ctcp-quote): Implemented ctcp-quote
568 (bot:ctcp-quote): Renamed ctcp-quote to bot:ctcp-quite (whoops)
569
570 2004-05-28 Clinton Ebadi <clinton@unknownlamer.org>
571
572 * bobot++.texinfo (bot.conf): Finished section
573 (server syntax): New section, documents the bot.conf SERVER syntax
574 (channel syntax): New section, documentes the bot.conf CHANNEL syntax
575
576 2004-05-13 Clinton Ebadi <clinton@unknownlamer.org>
577
578 * source/Main.C (real_main): std::exit instead of exit
579
580 2004-05-12 Clinton Ebadi <clinton@unknownlamer.org>
581
582 * source/DCCConnection.C (DCCConnection): Intialized `nuh' in the
583 constructor with `n' This should fix the segfaulting.
584
585 2004-01-28 Clinton Ebadi <clinton@unknownlamer.org>
586
587 * ChangeLog: Updated copyright notice
588
589 2004-01-09 Clinton Ebadi <clinton@unknownlamer.org>
590
591 * source/Interp.C (interp_init_helper): Register
592 bot:change-command-level
593
594 * source/ScriptCommands.C (ChangeCommandLevel): Added
595 ChangeCommandLevel to change the level a user needs to be to run a
596 command
597
598 * source/ScriptCommands.H: Added ChangeCommandLevel
599
600 2003-10-12 Clinton Ebadi <clinton@unknownlamer.org>
601
602 * source/String.H: Changed #define STRING_H to BSTRING_H
603
604 2003-08-04 Clinton Ebadi <clinton@unknownlamer.org>
605
606 * scripts/bobot-utils.scm (bot:sent-to-me?): New procedure, used
607 to see if a message was sent to the bot (this is better than
608 bot:match-to-me because the hook isn't invalidated when the bot's
609 nickname changes)
610
611 * source/DCCConnection.H: Added `nuh' back and added an
612 accessor (get_nuh)
613 Added setter `set_autoRemove(bool)'
614
615 * source/DCCConnection.H: Removed all friends
616 Added accessors (get_bot, get_lastSpoken, get_autoRemove; get_bot
617 reveals the pointer to the bot [PRIVATE POINTER] which probably
618 isn't so nice, but there isn't much to be done about it with the
619 current design of the bot)
620
621 * source/DCCChatConnection.H: Removed all friends
622
623 * source/DCCConnection.H: DCCConnection is now a pure virtual
624 class with the subclass DCCChatConnection
625
626 2003-07-29 Clinton Ebadi <clinton@unknownlamer.org>
627
628 * source/Socket.C (connect): log errors to the bot log instead of
629 printing to stderr
630
631 2003-07-23 Clinton Ebadi <clinton@unknownlamer.org>
632
633 * source/Parser.C (parseMessage): use the find method of std::map
634 to find the command to call instead of [] and then extract the
635 pointer to the userFunction from that if it exists. This appears
636 to fix the crash when one uses an undefined command followed by
637 any defined command.
638
639 2003-04-09 Clinton Ebadi <clinton@unknownlamer.org>
640
641 * source/Interp.C (interp_init_helper): Bind bot:setfloodrate to
642 ScriptCommands::SetFloodRate
643
644 * source/ScriptCommands.C (SetFloodRate): New Method: SetFloodRate
645
646 * source/Bot.C (init_user_functions): Make SETFLOODRATE available
647 to bot master
648
649 * source/Bot.H: Made MAX_MESSAGES writeable
650
651 * source/UserCommands.H: New method: SetFloodRate
652
653 * source/Commands.H: New method: SetFloodRate
654
655 2003-04-03 Clinton Ebadi <clinton@unknownlamer.org>
656
657 * configure.ac: Merged all AC_OUTPUTs at the end
658
659 2003-04-02 Clinton Ebadi <clinton@unknownlamer.org>
660
661 * scripts/bobot-utils.scm: Make exported symbols from
662 the-bot-module available in the guile-user module so that scripts
663 loaded with Interp::Load function.
664
665 2003-03-30 Clinton Ebadi <clinton@unknownlamer.org>
666
667 * scripts/bobot-utils.scm (bot:load-module): Loads a file from the
668 %bot:loadpath into its own module and returns that (unnamed) module
669 (bot:use-module): Calls bot:load-module and then adds the newly
670 loaded module to the (current-module)'s use-list
671
672 * source/Interp.C (interp_init_helper): New procedure to initialize
673 the-bot-module (this is the old Interp::Startup verbatim)
674 (interp_post_startup_helper): New procedure to export
675 the-bot-module from bot_module
676 (Startup): Now calls interp_init_helper and
677 interp_post_startup_helper to initalize the bot module system
678
679 * source/Interp.H: Added private variable bot_module to Interp
680
681 2002-11-04 Clinton Ebadi <clinton@unknownlamer.org>
682
683 * scripts/bobot-utils.scm: Added bot: to regex functions (yes,
684 this breaks existing scripts, this is the unstable tree after all)
685
686 2002-11-03 Clinton Ebadi <clinton@unknownlamer.org>
687
688 * source/Mask.C (match): Made Mask::match case insensitive
689
690 2002-09-23 Clinton Ebadi <clinton@unknownlamer.org>
691
692 * source/Interp.C (scm_apply_wrapper): turned off locking of
693 Interp::mutex to see if this makes the bot work again...and it
694 does!
695
696 2002-09-07 Clinton Ebadi <clinton@unknownlamer.org>
697
698 * configure.ac: Removed arguments to AM_INIT_AUTOMAKE and updated
699 everything to use aclocal/automake 1.6
700
701 2002-08-27 Clinton Ebadi <clinton@unknownlamer.org>
702
703 * source/DCCPerson.H (class DCCPerson): Added
704 UserCommands::DCCList as a friend (friends are better than the old
705 DCC() function at least).
706
707 * source/DCCManager.H (class DCCManager): Added
708 UserCommands::DCCList as a friend
709
710 * source/Interp.H (class Interp): Made function scm_apply_wrapper
711 a friend so it can lock Interp::mutex
712
713 * source/Interp.C (scm_apply_wrapper): Lock Interp::mutex if
714 MULTITHREAD is defined (it is always defined when scripting is
715 enabled) so that Sockets can be made multithreaded using
716 CommonC++.
717
718 * source/DCCPerson.H: Removed DCC method and made Bot a friend
719 Made DCCManager a friend
720
721 * source/DCCManager.H (class DCCManager): Removed MAP() method
722 and made Bot a friend of DCCManager
723
724 2002-08-18 Clinton Ebadi <clinton@unknownlamer.org>
725
726 * source/Interp.C (Startup): Renamed bot:DCC-chat-send to
727 bot:dcc-chat-send.
728
729 * bobot++.texinfo (Hook Types): Fixed a typo (I wrote
730 user!nick@host instead of the correct nick!user@host).
731
732 * source/Interp.C (Startup): Register bot:DCC-chat-send
733
734 * source/ScriptCommands.C (sendDCCChatMessage): Added method again
735
736 2002-08-08 Clinton Ebadi <clinton@unknownlamer.org>
737
738 * source/String.C (String): The std::string copy constructor now
739 extracts the c_str of the std::string and then takes the strlen of
740 that before copying it. This fixes a bug with DCC where if you did
741 e.g. "!help" the bot would reply with "No TOPIC PRIVMSG FOUND" or
742 something like that, depending on what the last message was
743 because Socket will insert a \0 into its semi-static buffer, so
744 the len of the String will not equal the strlen of its char*.
745
746 2002-08-07 Clinton Ebadi <clinton@unknownlamer.org>
747
748 * source/DCCPerson.H: Removed destructor (I = idiot)
749
750 * source/DCCConnection.H: DCCManager is now a friend of
751 DCCConnection (ugh, the bot has way too many friends).
752
753 * source/DCCPerson.H: Added DCC member that returns a const
754 DCCConnection* (the dcc connection). This isn't saved anywhere
755 because when a DCCPerson is destroyed, its connection is also
756 destroyed.
757
758 * source/Bot.H: dccConnections is now a DCCManager
759
760 * source/DCCPerson.H: Added destructor
761 Added handleInput method
762
763 * source/DCCManager.C: New file
764 (addConnection): Wrote method, add a DCCConection to the manager
765
766 * source/DCCManager.H: New file
767
768 * source/Interp.C (Startup): Register bot:DCC-chat-send
769 (Startup): Removed sendDCCChatMessage stuff
770
771 * source/ScriptCommands.C (sendDCCChatMessage): New method:
772 sendDCCChatMessage (to, message) sends message to to.
773
774 * source/DCCConnection.C (connect): Run DCC_CHAT_BEGIN hook with
775 one arg: from (user!nick@host).
776
777 * source/DCCParser.C (parseLine): Runs DCC_CHAT_MESSAGE hook with
778 two args: from (user!nick@host) and line
779
780 2002-08-06 Clinton Ebadi <clinton@unknownlamer.org>
781
782 * source/Interp.C (Startup): Two new Scheme values:
783 hooks/dcc/chat-begin and hooks/dcc/chat-message for the
784 DCC_CHAT_BEGIN and DCC_CHAT_MESSAGE hooks.
785
786 * source/BotInterp.H: Added two new enum values to Hook:
787 DCC_CHAT_BEGIN and DCC_CHAT_MESSAGE for the DCC chat start and DCC
788 chat message hooks
789
790 2002-08-05 Clinton Ebadi <clinton@unknownlamer.org>
791
792 * source/Parser.C (parseCTCP): Removed call to htonl and fixed
793 DCC! Ack, sockets take their arguments in network byte order so
794 there is no need to convert to host...now DCC _sort of_ works.
795
796 2002-08-04 Clinton Ebadi <clinton@unknownlamer.org>
797
798 * source/UserList.C (save): Increment iterator twice to get around
799 bug (see BUGS #2)
800
801 * source/ServerQueue.C: Now sends SEND_* hooks instead of
802 triggered general hooks.
803
804 * source/Interp.C (Startup): New scheme side defines: hooks/send/*
805 (* = the new SEND_ hooks, but lowercase).
806
807 * source/BotInterp.H: New hook types (SEND_..., ... = ACTION,
808 CTCP, PUBLIC, MESSAGE). These are triggered on send messages.
809
810 2002-08-01 Clinton Ebadi <clinton@unknownlamer.org>
811
812 * source/Bot.C (set_log_file): Oops! Fixed logging. Now the bot
813 logs again.
814
815 * source/Socket.C (readLine): Now uses a static std::string that
816 starts out with 512 chars. This will never need to be resized for
817 usualy IRC messages, but might be for DCC messages
818
819 2002-07-31 Clinton Ebadi <clinton@unknownlamer.org>
820
821 * scripts/bobot-utils.scm (not-from-me): New syntax.
822
823 * source/ScriptCommands.C (AddHook): Now takes another optional
824 arg--name that will name the hook (see the hooks section in the
825 manual for what this does).
826
827 * source/BotInterp.H: Added name field to Hook
828
829 2002-07-29 Clinton Ebadi <clinton@unknownlamer.org>
830
831 * source/ServerQueue.C (sendPrivmsg): Now calls hooks on own
832 PRIVMSGes because the IRC server doesn't echo them back to the
833 bot. This could be useful for something (e.g. log script).
834
835 2002-07-27 Clinton Ebadi <clinton@unknownlamer.org>
836
837 * source/Interp.C (Shutdown): Runs bot:exit-hook hooks
838 (Startup): New var for Scheme: bot:exit-hook. Calls the thunks
839 associated with the hook when Interp::Shutdown is called (bot exit).
840
841 2002-07-23 Clinton Ebadi <clinton@unknownlamer.org>
842
843 * source/BotInterp.H (Hook<): Changed behavior of Hook's <. If a
844 hook is greater than or less than the other hook, only the
845 priority is considered. However, if both hooks have the same
846 priority, then the fallthru-ness is considered, with fallthru
847 hooks being greater than non-fallthru hooks.
848
849 * source/BotInterp.C (hptr_lt): Added this static function to be
850 used to sort the hooks list (now hooks should be sorted using
851 Hook's operator < instead of using pointer comparision, meaning
852 the new hook system will work correctly)
853
854 * scripts/bobot-utils.scm: Make bot:log use for-each instead of
855 map because we don't need the result of the displays (this would
856 just be a list of #<undefined> values and is a waste of memory).
857
858 2002-07-13 Clinton Ebadi <clinton@unknownlamer.org>
859
860 * source/Bot.C (Bot): userFunctions is now a map for efficiency
861 (worst case search is now NlogN instead of N). This improvement is
862 not as drastic as the one gained by making the Parser functions
863 list a map (because we don't scan this map for every message), but
864 it helps to clean up the code
865
866 2002-07-12 Clinton Ebadi <clinton@unknownlamer.org>
867
868 * source/Parser.H: Removed userFunctionsStruct
869
870 * source/Interp.C (Startup): ScriptCommands::sendCTCP registered
871 as bot:send-CTCP for Scheme
872
873 * source/ScriptCommands.C (sendCTCP): Wrote sendCTCP
874
875 2002-07-11 Clinton Ebadi <clinton@unknownlamer.org>
876
877 * source/ServerQueue.C (sendUser): Changed . . in USER command to
878 0 * (which is the Right Way to because <mode> must be a number...)
879
880 * source/Parser.C (init): New method of Parse. This initalizes the
881 functions map. functions replaces the old functions array, and
882 should yield better performance (since the functions array had to
883 be scanned for every incoming message)
884
885 * source/Parser.H: New member, functions (private)
886
887 2002-07-10 Clinton Ebadi <clinton@unknownlamer.org>
888
889 * source/Interp.C (Startup): New symbols: bot:user-*
890 [none|user|trusted|friend|master] are defined in Scheme as the
891 different levels of the users.
892 (Startup): All bot-* variables are now bot:*
893
894 2002-07-09 Clinton Ebadi <clinton@unknownlamer.org>
895
896 * source/Bot.H: Made some variables private because they shouldn't
897 be changed at runtime
898
899 * source/Parser.C (parseCTCP): Reneabled DCC CHAT (I want to test
900 this out to see if it works and make it work)
901
902 * source/Bot.C (Bot::Bot): New var: logs_dir. Set to the log file
903 dir.
904
905 * scripts/bobot-utils.scm: Fixed a typo (I forgot the / after
906 scripts in the user scripts dir) that made bobot++ not able to
907 load scripts from the user scripts dir
908
909 2002-07-08 Clinton Ebadi <clinton@unknownlamer.org>
910
911 * source/BotInterp.C (RunHooks): Changed iterators to
912 reverse_iterators because the hooks list is sorted in ascending
913 order--higher priority and fallthrough hooks appear _after_ the
914 lower priority and non-fallthrough hooks.
915
916 * source/Main.C (print_long_help): Added function
917 (print_short_help): Renamed from printUsage
918 (namespace): Most stuff in here is now defined in an anonymouse
919 namespace so it doesn't have external linkage
920 (real_main): Uses getopt_long instead of getopt. Added several
921 command line arguments (bobotpp --help for a full list).
922
923 * scripts/bobot-utils.scm (bot-load): Function moved from
924 bobot-scheme.scm
925
926 * source/Interp.C (Startup): Autoloads
927 PREFIX/bobotpp/scripts/bobot-utils.scm now
928 (Startup): New Scheme variable: bot-sys-scripts-dir (system
929 scripts dir)
930
931 * source/bobot-scheme.scm.in: Removed
932
933 * source/Makefile.am: Removed bobot-scheme.scm compiliation
934
935 * configure.ac (PREFIX): configure.ac defined prefix now
936
937 * source/Main.C (real_main): Default configuration is now read
938 from /etc/bobotpp/default
939 * source/bobot-scheme.scm.in: Added file. This defines the
940 'bot-load' procedure which will load a file from
941 $HOME/.bobotpp/scripts/ or @datadir@/bobotpp/scripts/ if the
942 script doesn't exist in the user script dir.
943
944 2002-07-01 Clinton Ebadi <clinton@unknownlamer.org>
945
946 * bobot++.texinfo: Started docs (just a skeleton right now)
947
948 * source/ScriptCommands.C (AddHook): Now takes pri and fall opt
949 args to set a hooks priority and whether or not it will
950 fallthrough. These args are optional.
951
952 * source/Interp.C (Startup): addhook now takes 3 req and 2 opt args
953
954 * source/BotInterp.C (AddHook): Now uses priority and fallthrough
955 (RunHooks): exec fallthrough hooks first.
956
957 * source/BotInterp.H: Changed Hooks to have priority
958 Added fhooksMap to BotInterp (fallthrough)
959
960 * source/UserCommands.C (AddShit): Converted to use Commands
961
962 2002-06-21 Clinton Ebadi <clinton@unknownlamer.org>
963
964 * source/Commands.C (AddUser): Fixed a one-off (function call was
965 before a brace instead of after one) that caused a segfault when
966 the user mask was a wildcard
967
968 2002-06-20 Clinton Ebadi <clinton@unknownlamer.org>
969
970 * all files: Updated address of the FSF
971
972 * source/UserCommands.C (AddUser): Uses Commands now instead of
973 manipulating the bot directly
974
975 2002-06-18 Clinton Ebadi <clinton@unknownlamer.org>
976
977 * source/ScriptCommands.C (AddShit): Filled in function.
978
979 * source/Interp.C (Startup): Bind bot-adduser to
980 ScriptCommands::AddUser instead of Action
981 (Startup): Bind bot-addshit to ScriptCommands::AddShit
982
983 * source/ScriptCommands.C (AddUser): Filled in function
984
985 * source/ServerList.C (delServer): Changed (n - 1) to n...n-1
986 would have caused problems if you used more than one server
987
988 * source/Parser.H: Changed const char* to String in userFunctionStruct
989
990 * source/String.H: Added std::string compatibility members
991
992 * configure.ac: You can now disable Crypt and scripting
993
994 * source/*: Added #include "config.h" where needed
995
996 * configure.ac: Added AM_CONFIG_HEADER
997
998 * config.h.in: added file
999
1000 * source/Queue.C: Didn't notice iostream.h here! Fixed
1001
1002
1003 Copyright 2002,2003,2004,2005 Clinton Ebadi
1004 Copying and distribution of this file, with or without modification, are
1005 permitted provided the copyright notice and this notice are preserved.