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