[project @ 2005-01-12 06:01:01 by unknown_lamer]
[clinton/bobotpp.git] / ChangeLog
1 2005-01-12 Clinton Ebadi <clinton@unknownlamer.org>
2
3 * source/BotConfig.C (read_config): Made to use set_option_value
4 instead of manipulating options_db directly
5
6 * source/BotConfig.H (class BotConfig): Add set_option_value that
7 takes a t_value instead of t_value_list (most uss of
8 set_option_value will be to add a single value so this is very useful)
9
10 * source/BotConfig.C (set_option_value): Implemented
11
12 * source/UserList.C: Made to work with new Utils/StringTokenizer names
13
14 * source/UserCommands.C: Made to work with new
15 Utils/StringTokenizer names
16
17 * source/ShitList.C: Uses Utils.H now (Utils::trim_str & friends)
18
19 2005-01-11 Clinton Ebadi <clinton@unknownlamer.org>
20
21 * source/ShitList.C: Made to work with new StringTokenizer names
22
23 * source/ServerQueueItem.C: Made to work with new StringTokenizer names
24
25 * source/ServerQueue.C: Made to work with new Utils names
26
27 * source/ScriptCommands.C: Made work with new Utils names
28
29 * source/Person.C (getNick): Made work with new Utils names
30
31 * source/String.H: Added substr prototypes
32
33 * source/String.C (substr): Added substr as an alias of subString
34 (for compat with std::string before the transition)
35
36 * source/Parser.C: Made to work with new Utils/StringTokenizer names
37
38 * source/DCCParser.C: Made to work with new Utils names
39
40 * source/DCCChatConnection.C: Made to work new Utils names
41
42 * source/Commands.C: Made to work with new Utils names
43
44 * source/Channel.C: Made to work with new Utils names
45
46 * source/BotInterp.C: Made to work with new Utils
47
48 * source/Bot.C: Made to work with new Utils/StringTokenizer names
49
50 * source/String.C (operator=): Unremoved operator=(std::string)
51
52 * source/String.H: Unremoved operator=(std::string)
53
54 * source/BotConfig.C (read_config): Use Utils::trim_str
55
56 * source/String.C (trim): Fixed bug (p->s[i] == '\r', s/i/j/)
57
58 * source/Utils.C (trim_str): Implemented
59
60 * source/Utils.H: Added tim_str (replaces String::trim)
61
62 * source/BotConfig.C: Made everything work with new
63 StringTokenizer and Utils names
64
65 * source/Utils.H: Added to_lower
66 Added to_upper
67
68 * source/StringTokenizer.C (rest): uses std::isspace instead of
69 checking st[pos] against ' ' and '\t'
70
71 * source/StringTokenizer.H: Removed CamelCasing
72 Renamed hasMoreTokens to more_tokens_p
73
74 * source/StringTokenizer.C: Converted to use std::string
75
76 * source/StringTokenizer.H: Converted to use std::string
77
78 * source/String.C: Removed operator=(std::string)
79
80 * source/String.H: Removed operator=(std::string)
81
82 * source/Utils.C: Added copyright
83 Reformatted to match GNU coding standard more closely
84 Converted everything to use std::string
85 (get_nick): Renamed from getNick
86 (get_userhost): Renamed from getUserHost
87 (get_key): Renamed from getKey
88 (IP_p): Renamed from isIP
89 (make_wildcard): Renamed from makeWildcard
90 (channel_p): Renamed from isChannel
91 (wildcard_p): Renamed from isWildcard
92 (valid_channel_name_p): Renamed from isValidChannelName
93 (valid_nickname_p): Renamed from isValidNickName
94 (get_level): Renamed from getLevel
95 (str2time): Renamed from strToTime
96 (str2time): Fixed potential buffer overflow (num[512] => std::string)
97 (level2str): Renamed from levelToStr
98 (prot2str): Renamed from protToStr
99 (bool2str): Renamed from boolToStr
100 (long2str): Implemented
101 (scm2str): Renamed from scm2String
102 (str2scm): Renamed from string2SCM
103
104 * source/BotConfig.C: Reformatted to fit GNU coding style more closely
105
106 * source/Utils.H: Added long2str (long int -> std::string)
107
108 * source/String.H: Added 2003 copyright (the year I last modified
109 it in)
110
111 * source/String.C: Added 2002 copyright (the year I last modified
112 it in)
113
114 * source/Utils.H: Updated Copyright
115 s/String/std::string/g
116 Removed camel casing and is* = *_p
117 xToY = x2y
118
119 * source/BotConfig.C: Updated Copyright
120
121 * source/BotConfig.H: Updated copyright
122
123 2005-01-08 Clinton Ebadi <clinton@unknownlamer.org>
124
125 * source/BotConfig.C (set_option_value): Take care of the case
126 where key is not already in the db
127 (add_watcher): Implemented
128 (read_config): Removed ',' token parsing (not needed)
129
130 * configure.ac: Add AC_LANG([C++]) so we can check for C++ libs
131 AC_CHECK_LIB ccgnu2 (CommonC++2)
132
133 * README: Updated README (reformatted, adding info, etc.)
134
135 2005-01-07 Clinton Ebadi <clinton@unknownlamer.org>
136
137 * source/BotConfig.C (set_option_value): call watcher list
138 (run_fun_): Added to support watcher list calling
139
140 2005-01-06 Clinton Ebadi <clinton@unknownlamer.org>
141
142 * source/BotConfig.C (set_option_value): Fuck you STL
143 (push_back_): Reimplemented so that it doesn't need std::bind1st
144 because the STL is being stupid
145
146 2004-12-26 Clinton Ebadi <clinton@unknownlamer.org>
147
148 * source/BotConfig.C (read_config): Implemented properly
149 (get_option_values): Implemented properly
150 (set_config_file): Fixed
151
152 2004-07-10 Clinton Ebadi <clinton@unknownlamer.org>
153
154 * bobot++.texinfo (Built-In Commands): Added empty stubs to the
155 list of commands
156
157 2004-06-22 Clinton Ebadi <clinton@unknownlamer.org>
158
159 * source/BotConfig.C: New file (implementation of configuration database)
160
161 * source/BotConfig.H: New File (semi-generic configuration database)
162
163 2004-06-17 Clinton Ebadi <clinton@unknownlamer.org>
164
165 * bobot++.texinfo (Starting the Bot): New section
166
167 2004-06-14 Clinton Ebadi <clinton@unknownlamer.org>
168
169 * bobot++.texinfo (Protection): Added Section
170 (User Levels): Rewrote section to be useful
171 (bot.users): Added section
172
173 2004-06-12 Clinton Ebadi <clinton@unknownlamer.org>
174
175 * source/DCCChatConnection.C (connect): Checks to make sure the
176 person initiating a DCC CHAT with the bot is at least a FRIEND of
177 the bot.
178
179 * README: Fixed a typo
180
181 * scripts/bobot-utils.scm (ctcp-quote): Implemented ctcp-quote
182 (bot:ctcp-quote): Renamed ctcp-quote to bot:ctcp-quite (whoops)
183
184 2004-05-28 Clinton Ebadi <clinton@unknownlamer.org>
185
186 * bobot++.texinfo (bot.conf): Finished section
187 (server syntax): New section, documents the bot.conf SERVER syntax
188 (channel syntax): New section, documentes the bot.conf CHANNEL syntax
189
190 2004-05-13 Clinton Ebadi <clinton@unknownlamer.org>
191
192 * source/Main.C (real_main): std::exit instead of exit
193
194 2004-05-12 Clinton Ebadi <clinton@unknownlamer.org>
195
196 * source/DCCConnection.C (DCCConnection): Intialized `nuh' in the
197 constructor with `n' This should fix the segfaulting.
198
199 2004-01-28 Clinton Ebadi <clinton@unknownlamer.org>
200
201 * ChangeLog: Updated copyright notice
202
203 2004-01-09 Clinton Ebadi <clinton@unknownlamer.org>
204
205 * source/Interp.C (interp_init_helper): Register
206 bot:change-command-level
207
208 * source/ScriptCommands.C (ChangeCommandLevel): Added
209 ChangeCommandLevel to change the level a user needs to be to run a
210 command
211
212 * source/ScriptCommands.H: Added ChangeCommandLevel
213
214 2003-10-12 Clinton Ebadi <clinton@unknownlamer.org>
215
216 * source/String.H: Changed #define STRING_H to BSTRING_H
217
218 2003-08-04 Clinton Ebadi <clinton@unknownlamer.org>
219
220 * scripts/bobot-utils.scm (bot:sent-to-me?): New procedure, used
221 to see if a message was sent to the bot (this is better than
222 bot:match-to-me because the hook isn't invalidated when the bot's
223 nickname changes)
224
225 * source/DCCConnection.H: Added `nuh' back and added an
226 accessor (get_nuh)
227 Added setter `set_autoRemove(bool)'
228
229 * source/DCCConnection.H: Removed all friends
230 Added accessors (get_bot, get_lastSpoken, get_autoRemove; get_bot
231 reveals the pointer to the bot [PRIVATE POINTER] which probably
232 isn't so nice, but there isn't much to be done about it with the
233 current design of the bot)
234
235 * source/DCCChatConnection.H: Removed all friends
236
237 * source/DCCConnection.H: DCCConnection is now a pure virtual
238 class with the subclass DCCChatConnection
239
240 2003-07-29 Clinton Ebadi <clinton@unknownlamer.org>
241
242 * source/Socket.C (connect): log errors to the bot log instead of
243 printing to stderr
244
245 2003-07-23 Clinton Ebadi <clinton@unknownlamer.org>
246
247 * source/Parser.C (parseMessage): use the find method of std::map
248 to find the command to call instead of [] and then extract the
249 pointer to the userFunction from that if it exists. This appears
250 to fix the crash when one uses an undefined command followed by
251 any defined command.
252
253 2003-04-09 Clinton Ebadi <clinton@unknownlamer.org>
254
255 * source/Interp.C (interp_init_helper): Bind bot:setfloodrate to
256 ScriptCommands::SetFloodRate
257
258 * source/ScriptCommands.C (SetFloodRate): New Method: SetFloodRate
259
260 * source/Bot.C (init_user_functions): Make SETFLOODRATE available
261 to bot master
262
263 * source/Bot.H: Made MAX_MESSAGES writeable
264
265 * source/UserCommands.H: New method: SetFloodRate
266
267 * source/Commands.H: New method: SetFloodRate
268
269 2003-04-03 Clinton Ebadi <clinton@unknownlamer.org>
270
271 * configure.ac: Merged all AC_OUTPUTs at the end
272
273 2003-04-02 Clinton Ebadi <clinton@unknownlamer.org>
274
275 * scripts/bobot-utils.scm: Make exported symbols from
276 the-bot-module available in the guile-user module so that scripts
277 loaded with Interp::Load function.
278
279 2003-03-30 Clinton Ebadi <clinton@unknownlamer.org>
280
281 * scripts/bobot-utils.scm (bot:load-module): Loads a file from the
282 %bot:loadpath into its own module and returns that (unnamed) module
283 (bot:use-module): Calls bot:load-module and then adds the newly
284 loaded module to the (current-module)'s use-list
285
286 * source/Interp.C (interp_init_helper): New procedure to initialize
287 the-bot-module (this is the old Interp::Startup verbatim)
288 (interp_post_startup_helper): New procedure to export
289 the-bot-module from bot_module
290 (Startup): Now calls interp_init_helper and
291 interp_post_startup_helper to initalize the bot module system
292
293 * source/Interp.H: Added private variable bot_module to Interp
294
295 2002-11-04 Clinton Ebadi <clinton@unknownlamer.org>
296
297 * scripts/bobot-utils.scm: Added bot: to regex functions (yes,
298 this breaks existing scripts, this is the unstable tree after all)
299
300 2002-11-03 Clinton Ebadi <clinton@unknownlamer.org>
301
302 * source/Mask.C (match): Made Mask::match case insensitive
303
304 2002-09-23 Clinton Ebadi <clinton@unknownlamer.org>
305
306 * source/Interp.C (scm_apply_wrapper): turned off locking of
307 Interp::mutex to see if this makes the bot work again...and it
308 does!
309
310 2002-09-07 Clinton Ebadi <clinton@unknownlamer.org>
311
312 * configure.ac: Removed arguments to AM_INIT_AUTOMAKE and updated
313 everything to use aclocal/automake 1.6
314
315 2002-08-27 Clinton Ebadi <clinton@unknownlamer.org>
316
317 * source/DCCPerson.H (class DCCPerson): Added
318 UserCommands::DCCList as a friend (friends are better than the old
319 DCC() function at least).
320
321 * source/DCCManager.H (class DCCManager): Added
322 UserCommands::DCCList as a friend
323
324 * source/Interp.H (class Interp): Made function scm_apply_wrapper
325 a friend so it can lock Interp::mutex
326
327 * source/Interp.C (scm_apply_wrapper): Lock Interp::mutex if
328 MULTITHREAD is defined (it is always defined when scripting is
329 enabled) so that Sockets can be made multithreaded using
330 CommonC++.
331
332 * source/DCCPerson.H: Removed DCC method and made Bot a friend
333 Made DCCManager a friend
334
335 * source/DCCManager.H (class DCCManager): Removed MAP() method
336 and made Bot a friend of DCCManager
337
338 2002-08-18 Clinton Ebadi <clinton@unknownlamer.org>
339
340 * source/Interp.C (Startup): Renamed bot:DCC-chat-send to
341 bot:dcc-chat-send.
342
343 * bobot++.texinfo (Hook Types): Fixed a typo (I wrote
344 user!nick@host instead of the correct nick!user@host).
345
346 * source/Interp.C (Startup): Register bot:DCC-chat-send
347
348 * source/ScriptCommands.C (sendDCCChatMessage): Added method again
349
350 2002-08-08 Clinton Ebadi <clinton@unknownlamer.org>
351
352 * source/String.C (String): The std::string copy constructor now
353 extracts the c_str of the std::string and then takes the strlen of
354 that before copying it. This fixes a bug with DCC where if you did
355 e.g. "!help" the bot would reply with "No TOPIC PRIVMSG FOUND" or
356 something like that, depending on what the last message was
357 because Socket will insert a \0 into its semi-static buffer, so
358 the len of the String will not equal the strlen of its char*.
359
360 2002-08-07 Clinton Ebadi <clinton@unknownlamer.org>
361
362 * source/DCCPerson.H: Removed destructor (I = idiot)
363
364 * source/DCCConnection.H: DCCManager is now a friend of
365 DCCConnection (ugh, the bot has way too many friends).
366
367 * source/DCCPerson.H: Added DCC member that returns a const
368 DCCConnection* (the dcc connection). This isn't saved anywhere
369 because when a DCCPerson is destroyed, its connection is also
370 destroyed.
371
372 * source/Bot.H: dccConnections is now a DCCManager
373
374 * source/DCCPerson.H: Added destructor
375 Added handleInput method
376
377 * source/DCCManager.C: New file
378 (addConnection): Wrote method, add a DCCConection to the manager
379
380 * source/DCCManager.H: New file
381
382 * source/Interp.C (Startup): Register bot:DCC-chat-send
383 (Startup): Removed sendDCCChatMessage stuff
384
385 * source/ScriptCommands.C (sendDCCChatMessage): New method:
386 sendDCCChatMessage (to, message) sends message to to.
387
388 * source/DCCConnection.C (connect): Run DCC_CHAT_BEGIN hook with
389 one arg: from (user!nick@host).
390
391 * source/DCCParser.C (parseLine): Runs DCC_CHAT_MESSAGE hook with
392 two args: from (user!nick@host) and line
393
394 2002-08-06 Clinton Ebadi <clinton@unknownlamer.org>
395
396 * source/Interp.C (Startup): Two new Scheme values:
397 hooks/dcc/chat-begin and hooks/dcc/chat-message for the
398 DCC_CHAT_BEGIN and DCC_CHAT_MESSAGE hooks.
399
400 * source/BotInterp.H: Added two new enum values to Hook:
401 DCC_CHAT_BEGIN and DCC_CHAT_MESSAGE for the DCC chat start and DCC
402 chat message hooks
403
404 2002-08-05 Clinton Ebadi <clinton@unknownlamer.org>
405
406 * source/Parser.C (parseCTCP): Removed call to htonl and fixed
407 DCC! Ack, sockets take their arguments in network byte order so
408 there is no need to convert to host...now DCC _sort of_ works.
409
410 2002-08-04 Clinton Ebadi <clinton@unknownlamer.org>
411
412 * source/UserList.C (save): Increment iterator twice to get around
413 bug (see BUGS #2)
414
415 * source/ServerQueue.C: Now sends SEND_* hooks instead of
416 triggered general hooks.
417
418 * source/Interp.C (Startup): New scheme side defines: hooks/send/*
419 (* = the new SEND_ hooks, but lowercase).
420
421 * source/BotInterp.H: New hook types (SEND_..., ... = ACTION,
422 CTCP, PUBLIC, MESSAGE). These are triggered on send messages.
423
424 2002-08-01 Clinton Ebadi <clinton@unknownlamer.org>
425
426 * source/Bot.C (set_log_file): Oops! Fixed logging. Now the bot
427 logs again.
428
429 * source/Socket.C (readLine): Now uses a static std::string that
430 starts out with 512 chars. This will never need to be resized for
431 usualy IRC messages, but might be for DCC messages
432
433 2002-07-31 Clinton Ebadi <clinton@unknownlamer.org>
434
435 * scripts/bobot-utils.scm (not-from-me): New syntax.
436
437 * source/ScriptCommands.C (AddHook): Now takes another optional
438 arg--name that will name the hook (see the hooks section in the
439 manual for what this does).
440
441 * source/BotInterp.H: Added name field to Hook
442
443 2002-07-29 Clinton Ebadi <clinton@unknownlamer.org>
444
445 * source/ServerQueue.C (sendPrivmsg): Now calls hooks on own
446 PRIVMSGes because the IRC server doesn't echo them back to the
447 bot. This could be useful for something (e.g. log script).
448
449 2002-07-27 Clinton Ebadi <clinton@unknownlamer.org>
450
451 * source/Interp.C (Shutdown): Runs bot:exit-hook hooks
452 (Startup): New var for Scheme: bot:exit-hook. Calls the thunks
453 associated with the hook when Interp::Shutdown is called (bot exit).
454
455 2002-07-23 Clinton Ebadi <clinton@unknownlamer.org>
456
457 * source/BotInterp.H (Hook<): Changed behavior of Hook's <. If a
458 hook is greater than or less than the other hook, only the
459 priority is considered. However, if both hooks have the same
460 priority, then the fallthru-ness is considered, with fallthru
461 hooks being greater than non-fallthru hooks.
462
463 * source/BotInterp.C (hptr_lt): Added this static function to be
464 used to sort the hooks list (now hooks should be sorted using
465 Hook's operator < instead of using pointer comparision, meaning
466 the new hook system will work correctly)
467
468 * scripts/bobot-utils.scm: Make bot:log use for-each instead of
469 map because we don't need the result of the displays (this would
470 just be a list of #<undefined> values and is a waste of memory).
471
472 2002-07-13 Clinton Ebadi <clinton@unknownlamer.org>
473
474 * source/Bot.C (Bot): userFunctions is now a map for efficiency
475 (worst case search is now NlogN instead of N). This improvement is
476 not as drastic as the one gained by making the Parser functions
477 list a map (because we don't scan this map for every message), but
478 it helps to clean up the code
479
480 2002-07-12 Clinton Ebadi <clinton@unknownlamer.org>
481
482 * source/Parser.H: Removed userFunctionsStruct
483
484 * source/Interp.C (Startup): ScriptCommands::sendCTCP registered
485 as bot:send-CTCP for Scheme
486
487 * source/ScriptCommands.C (sendCTCP): Wrote sendCTCP
488
489 2002-07-11 Clinton Ebadi <clinton@unknownlamer.org>
490
491 * source/ServerQueue.C (sendUser): Changed . . in USER command to
492 0 * (which is the Right Way to because <mode> must be a number...)
493
494 * source/Parser.C (init): New method of Parse. This initalizes the
495 functions map. functions replaces the old functions array, and
496 should yield better performance (since the functions array had to
497 be scanned for every incoming message)
498
499 * source/Parser.H: New member, functions (private)
500
501 2002-07-10 Clinton Ebadi <clinton@unknownlamer.org>
502
503 * source/Interp.C (Startup): New symbols: bot:user-*
504 [none|user|trusted|friend|master] are defined in Scheme as the
505 different levels of the users.
506 (Startup): All bot-* variables are now bot:*
507
508 2002-07-09 Clinton Ebadi <clinton@unknownlamer.org>
509
510 * source/Bot.H: Made some variables private because they shouldn't
511 be changed at runtime
512
513 * source/Parser.C (parseCTCP): Reneabled DCC CHAT (I want to test
514 this out to see if it works and make it work)
515
516 * source/Bot.C (Bot::Bot): New var: logs_dir. Set to the log file
517 dir.
518
519 * scripts/bobot-utils.scm: Fixed a typo (I forgot the / after
520 scripts in the user scripts dir) that made bobot++ not able to
521 load scripts from the user scripts dir
522
523 2002-07-08 Clinton Ebadi <clinton@unknownlamer.org>
524
525 * source/BotInterp.C (RunHooks): Changed iterators to
526 reverse_iterators because the hooks list is sorted in ascending
527 order--higher priority and fallthrough hooks appear _after_ the
528 lower priority and non-fallthrough hooks.
529
530 * source/Main.C (print_long_help): Added function
531 (print_short_help): Renamed from printUsage
532 (namespace): Most stuff in here is now defined in an anonymouse
533 namespace so it doesn't have external linkage
534 (real_main): Uses getopt_long instead of getopt. Added several
535 command line arguments (bobotpp --help for a full list).
536
537 * scripts/bobot-utils.scm (bot-load): Function moved from
538 bobot-scheme.scm
539
540 * source/Interp.C (Startup): Autoloads
541 PREFIX/bobotpp/scripts/bobot-utils.scm now
542 (Startup): New Scheme variable: bot-sys-scripts-dir (system
543 scripts dir)
544
545 * source/bobot-scheme.scm.in: Removed
546
547 * source/Makefile.am: Removed bobot-scheme.scm compiliation
548
549 * configure.ac (PREFIX): configure.ac defined prefix now
550
551 * source/Main.C (real_main): Default configuration is now read
552 from /etc/bobotpp/default
553 * source/bobot-scheme.scm.in: Added file. This defines the
554 'bot-load' procedure which will load a file from
555 $HOME/.bobotpp/scripts/ or @datadir@/bobotpp/scripts/ if the
556 script doesn't exist in the user script dir.
557
558 2002-07-01 Clinton Ebadi <clinton@unknownlamer.org>
559
560 * bobot++.texinfo: Started docs (just a skeleton right now)
561
562 * source/ScriptCommands.C (AddHook): Now takes pri and fall opt
563 args to set a hooks priority and whether or not it will
564 fallthrough. These args are optional.
565
566 * source/Interp.C (Startup): addhook now takes 3 req and 2 opt args
567
568 * source/BotInterp.C (AddHook): Now uses priority and fallthrough
569 (RunHooks): exec fallthrough hooks first.
570
571 * source/BotInterp.H: Changed Hooks to have priority
572 Added fhooksMap to BotInterp (fallthrough)
573
574 * source/UserCommands.C (AddShit): Converted to use Commands
575
576 2002-06-21 Clinton Ebadi <clinton@unknownlamer.org>
577
578 * source/Commands.C (AddUser): Fixed a one-off (function call was
579 before a brace instead of after one) that caused a segfault when
580 the user mask was a wildcard
581
582 2002-06-20 Clinton Ebadi <clinton@unknownlamer.org>
583
584 * all files: Updated address of the FSF
585
586 * source/UserCommands.C (AddUser): Uses Commands now instead of
587 manipulating the bot directly
588
589 2002-06-18 Clinton Ebadi <clinton@unknownlamer.org>
590
591 * source/ScriptCommands.C (AddShit): Filled in function.
592
593 * source/Interp.C (Startup): Bind bot-adduser to
594 ScriptCommands::AddUser instead of Action
595 (Startup): Bind bot-addshit to ScriptCommands::AddShit
596
597 * source/ScriptCommands.C (AddUser): Filled in function
598
599 * source/ServerList.C (delServer): Changed (n - 1) to n...n-1
600 would have caused problems if you used more than one server
601
602 * source/Parser.H: Changed const char* to String in userFunctionStruct
603
604 * source/String.H: Added std::string compatibility members
605
606 * configure.ac: You can now disable Crypt and scripting
607
608 * source/*: Added #include "config.h" where needed
609
610 * configure.ac: Added AM_CONFIG_HEADER
611
612 * config.h.in: added file
613
614 * source/Queue.C: Didn't notice iostream.h here! Fixed
615
616
617 Copyright 2002,2003,2004 Clinton Ebadi
618 Copying and distribution of this file, with or without modification, are
619 permitted provided the copyright notice and this notice are preserved.