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