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